zhangwencui
2 天以前 eef75ceaa14dd7a27394e0823ff8d708794fa22e
src/views/equipmentManagement/measurementEquipment/components/formDia.vue
@@ -4,6 +4,7 @@
        v-model="dialogFormVisible"
        title="计量器具"
        width="50%"
            draggable
        @close="closeDia"
    >
         <el-form
@@ -15,7 +16,7 @@
         >
            <el-row :gutter="30">
               <el-col :span="12">
                  <el-form-item label="计量器具编号:" prop="code">
                  <el-form-item label="出厂编号:" prop="code">
                     <el-input
                        v-model="form.code"
                        placeholder="请输入"
@@ -27,7 +28,7 @@
                  <el-form-item label="计量器具名称:" prop="name">
                     <el-input
                        v-model="form.name"
                        placeholder="请输入"
                        placeholder="请输入计量器具名称"
                        clearable
                     />
                  </el-form-item>
@@ -35,28 +36,73 @@
            </el-row>
            <el-row :gutter="30">
               <el-col :span="12">
                  <el-form-item label="规格型号:" prop="model">
                  <el-form-item label="安装位置:" prop="instationLocation">
                     <el-input
                        v-model="form.model"
                        v-model="form.instationLocation"
                        placeholder="请输入"
                        clearable
                     />
                  </el-form-item>
               </el-col>
               <el-col :span="12">
                  <el-form-item label="预计下次检定日期:" prop="nextDate">
                     <el-date-picker
                        style="width: 100%"
                        v-model="form.nextDate"
                        value-format="YYYY-MM-DD"
                        format="YYYY-MM-DD"
                        type="date"
                        placeholder="请选择"
                        clearable
                     />
                  <el-form-item label="检定单位:" prop="unit">
              <el-input
                  v-model="form.unit"
                  placeholder="请输入检定单位"
                  clearable
              />
                  </el-form-item>
               </el-col>
            </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="证书编号:" prop="model">
              <el-input
                  v-model="form.model"
                  placeholder="请输入"
                  clearable
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="最新鉴定日期:" prop="mostDate">
              <el-date-picker
                  style="width: 100%"
                  v-model="form.mostDate"
                  value-format="YYYY-MM-DD"
                  format="YYYY-MM-DD"
                  type="date"
                  placeholder="请选择"
                  clearable
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="有效日期(天):" prop="valid">
              <el-input
                  v-model="form.valid"
                  type="number"
                  placeholder="请输入有效期天数"
                  clearable
                  :min="1"
                  @input="handleValidInput"
              >
              <template #append>日</template>
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="检定周期:" prop="cycle">
              <el-input
                  v-model="form.cycle"
                  placeholder="请输入检定周期"
                  clearable
              />
            </el-form-item>
          </el-col>
        </el-row>
            <el-row :gutter="30">
               <el-col :span="12">
                  <el-form-item label="录入人:" prop="userId">
@@ -64,7 +110,9 @@
                        v-model="form.userId"
                        placeholder="请选择"
                        clearable
                        disabled
                filterable
                default-first-option
                :reserve-keyword="false"
                     >
                        <el-option
                           v-for="item in userList"
@@ -81,9 +129,9 @@
                        style="width: 100%"
                        v-model="form.recordDate"
                        value-format="YYYY-MM-DD"
                disabled
                        format="YYYY-MM-DD"
                        type="date"
                        disabled
                        placeholder="请选择"
                        clearable
                     />
@@ -124,7 +172,8 @@
import {userListNoPageByTenantId} from "@/api/system/user.js";
import {afterSalesServiceAdd, afterSalesServiceUpdate} from "@/api/customerService/index.js";
import {getToken} from "@/utils/auth.js";
import {measuringInstrumentAdd, measuringInstrumentUpdate} from "@/api/equipmentManagement/measurementEquipment.js";
import {addMeasuringInstrumentLedger, updateMeasuringInstrumentLedger} from "@/api/equipmentManagement/measurementEquipment.js";
import { getCurrentDate } from "@/utils/index.js";
const { proxy } = getCurrentInstance()
const emit = defineEmits(['close'])
const dialogFormVisible = ref(false);
@@ -134,22 +183,56 @@
const data = reactive({
   form: {
      code: "",
      name: "",
    name: "",
    instationLocation: "",
    mostDate:"",
      model: "",
    cycle:"",
      validDate: "",
      nextDate: "",
      userId: "",
      recordDate: "",
    unit:"",
    tempFileIds: []
   },
   rules: {
      code: [{required: true, message: "请输入", trigger: "blur"}],
      name: [{required: true, message: "请输入", trigger: "blur"}],
    name: [{ required: true, message: "请输入", trigger: "blur" }],
      model: [{required: true, message: "请输入", trigger: "blur"}],
      validDate: [{required: true, message: "请输入", trigger: "blur"}],
      nextDate: [{required: true, message: "请选择", trigger: "change"}],
      userId: [{required: true, message: "请选择", trigger: "change"}],
      recordDate: [{required: true, message: "请选择", trigger: "change"}],
    instationLocation: [{required: true, message: "请输入", trigger: "blur"}],
    mostDate: [{required: true, message: "请选择", trigger: "change"}],
    cycle: [{required: true, message: "请选择", trigger: "blur"}],
    valid: [
      {required: true, message: "请输入", trigger: "blur"},
      {
        validator: (rule, value, callback) => {
          if (value === '' || value === null || value === undefined) {
            callback();
            return;
          }
          const numValue = Number(value);
          if (isNaN(numValue)) {
            callback(new Error('请输入有效的数字'));
            return;
          }
          if (numValue <= 0) {
            callback(new Error('只能输入正数'));
            return;
          }
          if (!Number.isInteger(numValue)) {
            callback(new Error('请输入整数'));
            return;
          }
          callback();
        },
        trigger: 'blur'
      }
    ],
    unit: [{required: true, message: "请输入", trigger: "blur"}],
   }
})
const { form, rules } = toRefs(data);
@@ -210,17 +293,38 @@
   }
}
// 处理有效日期输入,只允许正整数
const handleValidInput = (value) => {
   if (value === '' || value === null || value === undefined) {
      form.value.valid = '';
      return;
   }
   // 转换为字符串并移除所有非数字字符(包括负号、小数点等)
   const numStr = String(value).replace(/[^0-9]/g, '');
   if (numStr === '') {
      form.value.valid = '';
      return;
   }
   const numValue = parseInt(numStr, 10);
   // 确保是正整数(大于0)
   if (numValue > 0 && !isNaN(numValue)) {
      form.value.valid = numValue;
   } else {
      form.value.valid = '';
   }
}
const submitForm = () => {
   proxy.$refs["formRef"].validate(valid => {
      if (valid) {
         if (operationType.value === "add") {
            measuringInstrumentAdd(form.value).then(response => {
        addMeasuringInstrumentLedger(form.value).then(response => {
               proxy.$modal.msgSuccess("新增成功")
          form.value.tempFileIds = []
               closeDia()
            })
         } else {
            measuringInstrumentUpdate(form.value).then(response => {
        updateMeasuringInstrumentLedger(form.value).then(response => {
               proxy.$modal.msgSuccess("修改成功")
          form.value.tempFileIds = []
               closeDia()
@@ -235,14 +339,6 @@
  dialogFormVisible.value = false;
  emit('close')
};
// 获取当前日期并格式化为 YYYY-MM-DD
function getCurrentDate() {
   const today = new Date();
   const year = today.getFullYear();
   const month = String(today.getMonth() + 1).padStart(2, "0"); // 月份从0开始
   const day = String(today.getDate()).padStart(2, "0");
   return `${year}-${month}-${day}`;
}
defineExpose({
  openDialog,
});