| | |
| | | type="date" |
| | | placeholder="请选择" |
| | | clearable |
| | | @change="calculateValidUntil" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="有效期至:" prop="validUntil"> |
| | | <el-input |
| | | v-model="form.validUntil" |
| | | placeholder="自动计算" |
| | | disabled |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="溯源/核查类型:" prop="traceabilityType"> |
| | | <el-input |
| | | v-model="form.traceabilityType" |
| | | placeholder="请输入" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="实施机构:" prop="implementingAgency"> |
| | | <el-input |
| | | v-model="form.implementingAgency" |
| | | placeholder="请输入" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="证书编号:" prop="certificateNumber"> |
| | | <el-input |
| | | v-model="form.certificateNumber" |
| | | placeholder="请输入" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="核心结果:" prop="coreResult"> |
| | | <el-input |
| | | v-model="form.coreResult" |
| | | placeholder="请输入" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="结果确认:" prop="resultConfirmation"> |
| | | <el-input |
| | | v-model="form.resultConfirmation" |
| | | placeholder="请输入" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="确认人:" prop="confirmerId"> |
| | | <el-select |
| | | v-model="form.confirmerId" |
| | | placeholder="请选择" |
| | | filterable |
| | | default-first-option |
| | | :reserve-keyword="false" |
| | | clearable |
| | | > |
| | | <el-option |
| | | v-for="item in userList" |
| | | :key="item.userId" |
| | | :label="item.nickName" |
| | | :value="item.userId" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="录入人:" prop="userId"> |
| | | <el-select |
| | | v-model="form.userId" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="录入日期:" prop="entryDate"> |
| | | <el-date-picker |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import dayjs from "dayjs"; |
| | | import {ref, reactive, toRefs, getCurrentInstance} from "vue"; |
| | | import useUserStore from "@/store/modules/user.js"; |
| | | import {userListNoPageByTenantId} from "@/api/system/user.js"; |
| | |
| | | recordDate: "", |
| | | userId: "", |
| | | entryDate: "", |
| | | tempFileIds: [] |
| | | tempFileIds: [], |
| | | traceabilityType: "", |
| | | implementingAgency: "", |
| | | certificateNumber: "", |
| | | coreResult: "", |
| | | resultConfirmation: "", |
| | | validUntil: "", |
| | | confirmerId: "" |
| | | }, |
| | | rules: { |
| | | code: [{required: true, message: "请输入", trigger: "blur"}], |
| | |
| | | if (type === "edit") { |
| | | form.value.valid = row.valid; |
| | | form.value.recordDate = row.recordDate; |
| | | form.value.traceabilityType = row.traceabilityType; |
| | | form.value.implementingAgency = row.implementingAgency; |
| | | form.value.certificateNumber = row.certificateNumber; |
| | | form.value.coreResult = row.coreResult; |
| | | form.value.resultConfirmation = row.resultConfirmation; |
| | | form.value.validUntil = row.validUntil; |
| | | form.value.confirmerId = row.confirmerId; |
| | | fileList.value = row.commonFiles; |
| | | } |
| | | if(type === "add"){ |
| | |
| | | if(type === "verifying"){ |
| | | form.value.valid = row.valid; |
| | | form.value.recordDate = row.mostDate; |
| | | // Initialize empty for new verifying record |
| | | form.value.traceabilityType = ""; |
| | | form.value.implementingAgency = ""; |
| | | form.value.certificateNumber = ""; |
| | | form.value.coreResult = ""; |
| | | form.value.resultConfirmation = ""; |
| | | form.value.confirmerId = ""; |
| | | calculateValidUntil(); |
| | | } |
| | | |
| | | form.value.id = row.id; |
| | |
| | | const handleValidInput = (value) => { |
| | | if (value === '' || value === null || value === undefined) { |
| | | form.value.valid = ''; |
| | | calculateValidUntil(); |
| | | return; |
| | | } |
| | | // 转换为字符串并移除所有非数字字符(包括负号、小数点等) |
| | | const numStr = String(value).replace(/[^0-9]/g, ''); |
| | | if (numStr === '') { |
| | | form.value.valid = ''; |
| | | calculateValidUntil(); |
| | | return; |
| | | } |
| | | const numValue = parseInt(numStr, 10); |
| | |
| | | } else { |
| | | form.value.valid = ''; |
| | | } |
| | | calculateValidUntil(); |
| | | } |
| | | |
| | | // 自动计算有效期至 |
| | | const calculateValidUntil = () => { |
| | | if (form.value.recordDate && form.value.valid) { |
| | | form.value.validUntil = dayjs(form.value.recordDate).add(form.value.valid, 'day').format('YYYY-MM-DD'); |
| | | } else { |
| | | form.value.validUntil = ''; |
| | | } |
| | | } |
| | | |
| | | const submitForm = () => { |