| | |
| | | v-model="dialogFormVisible" |
| | | title="计量器具" |
| | | width="50%" |
| | | draggable |
| | | @close="closeDia" |
| | | > |
| | | <el-form |
| | |
| | | > |
| | | <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="请输入" |
| | |
| | | <el-form-item label="计量器具名称:" prop="name"> |
| | | <el-input |
| | | v-model="form.name" |
| | | placeholder="请输入" |
| | | placeholder="请输入计量器具名称" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | |
| | | </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"> |
| | |
| | | v-model="form.userId" |
| | | placeholder="请选择" |
| | | clearable |
| | | disabled |
| | | filterable |
| | | default-first-option |
| | | :reserve-keyword="false" |
| | | > |
| | | <el-option |
| | | v-for="item in userList" |
| | |
| | | style="width: 100%" |
| | | v-model="form.recordDate" |
| | | value-format="YYYY-MM-DD" |
| | | disabled |
| | | format="YYYY-MM-DD" |
| | | type="date" |
| | | disabled |
| | | placeholder="请选择" |
| | | clearable |
| | | /> |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | } |
| | | } |
| | | |
| | | // 处理有效日期输入,只允许正整数 |
| | | 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() |
| | |
| | | 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, |
| | | }); |