gaoluyang
7 天以前 465c270f98a50d31b8146a5a91a2539211f67a2e
src/views/equipmentManagement/ledger/Form.vue
@@ -1,5 +1,5 @@
<template>
  <el-form :model="form" label-width="100px">
  <el-form :model="form" label-width="100px" :rules="formRules" ref="formRef">
    <el-row :gutter="20">
      <el-col :span="12">
        <el-form-item label="设备名称" prop="deviceName">
@@ -8,7 +8,7 @@
      </el-col>
      <el-col :span="12">
        <el-form-item label="规格型号" prop="deviceModel">
          <el-input v-model="form.deviceModel" placeholder="请输入规格型号" />
          <el-input v-model="form.deviceModel" :disabled="(form.deviceModel != null && operationType === 'edit')" placeholder="请输入规格型号" />
        </el-form-item>
      </el-col>
      <el-col :span="12">
@@ -23,23 +23,20 @@
      </el-col>
      <el-col :span="12">
        <el-form-item label="数量" prop="number">
          <el-input
          <el-input-number :step="0.01" :min="0" style="width: 100%"
            v-model="form.number"
            placeholder="请输入数量"
            type="number"
            @change="mathNum"
          />
        </el-form-item>
      </el-col>
      <el-col :span="12">
        <el-form-item label="含税单价" prop="taxIncludingPriceUnit">
          <el-input
          <el-input-number :step="0.01" :min="0" style="width: 100%"
            v-model="form.taxIncludingPriceUnit"
            placeholder="请输入含税单价"
            type="number"
            maxlength="10"
            @change="mathNum"
            @input="handleNumberInput"
          />
        </el-form-item>
      </el-col>
@@ -47,7 +44,7 @@
        <el-form-item label="含税总价" prop="taxIncludingPriceTotal">
          <el-input
            v-model="form.taxIncludingPriceTotal"
            placeholder="请输入含税总价"
            placeholder="自动生成"
            type="number"
            disabled
          />
@@ -78,7 +75,7 @@
        <el-form-item label="不含税总价" prop="unTaxIncludingPriceTotal">
          <el-input
            v-model="form.unTaxIncludingPriceTotal"
            placeholder="请输入不含税总价"
            placeholder="自动生成"
            type="number"
            disabled
          />
@@ -116,10 +113,22 @@
  calculateTaxExclusiveTotalPrice,
} from "@/utils/summarizeTable";
import { ElMessage } from "element-plus";
import {ref} from "vue";
defineOptions({
  name: "设备台账表单",
});
const formRef = ref(null);
const operationType = ref('');
const formRules = {
   deviceName: [{ required: true, trigger: "blur", message: "请输入" }],
   deviceModel: [{ required: true, trigger: "blur", message: "请输入" }],
   supplierName: [{ required: true, trigger: "blur", message: "请输入" }],
   unit: [{ required: true, trigger: "blur", message: "请输入" }],
   number: [{ required: true, trigger: "blur", message: "请输入" }],
   taxIncludingPriceUnit: [{ required: true, trigger: "blur", message: "请输入" }],
   taxRate: [{ required: true, trigger: "change", message: "请输入" }],
}
const { form, resetForm } = useFormData({
  deviceName: undefined, // 设备名称
@@ -136,6 +145,9 @@
});
const loadForm = async (id) => {
   if (id) {
      operationType.value = 'edit'
   }
  const { code, data } = await getLedgerById(id);
  if (code == 200) {
    form.deviceName = data.deviceName;
@@ -172,22 +184,23 @@
  }
};
const handleNumberInput = (value) => {
  // 移除所有非数字字符
  let num = value.replace(/[^\d]/g, "");
// 清除表单校验状态
const clearValidate = () => {
  formRef.value?.clearValidate();
};
  // 限制长度为10
  if (num.length > 10) {
    num = num.slice(0, 10);
  }
  // 更新值
  form.taxIncludingPriceUnit = num;
// 重置表单数据和校验状态
const resetFormAndValidate = () => {
  resetForm();
  clearValidate();
};
defineExpose({
  form,
  loadForm,
  resetForm,
  clearValidate,
  resetFormAndValidate,
   formRef,
});
</script>