|
@@ -148,6 +148,16 @@
|
|
|
<dict-tag :type="DICT_TYPE.MEASURE_TYPE" :value="scope.row.classify" />
|
|
<dict-tag :type="DICT_TYPE.MEASURE_TYPE" :value="scope.row.classify" />
|
|
|
</template>
|
|
</template>
|
|
|
</zm-table-column>
|
|
</zm-table-column>
|
|
|
|
|
+ <zm-table-column label="状态" align="center" prop="status" min-width="100">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <dict-tag :type="DICT_TYPE.MEASURE_STATUS" :value="scope.row.status" />
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </zm-table-column>
|
|
|
|
|
+ <zm-table-column label="报废时间" align="center" prop="offTime" min-width="120">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ {{ formatDateCorrectly(scope.row.offTime) }}
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </zm-table-column>
|
|
|
<zm-table-column label="采购日期" align="center" prop="buyDate">
|
|
<zm-table-column label="采购日期" align="center" prop="buyDate">
|
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
|
{{ formatDateCorrectly(scope.row.buyDate) }}
|
|
{{ formatDateCorrectly(scope.row.buyDate) }}
|
|
@@ -313,6 +323,37 @@
|
|
|
</el-col> -->
|
|
</el-col> -->
|
|
|
</el-row>
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
+ <el-row :gutter="20">
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="状态" prop="status">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="formData.status"
|
|
|
|
|
+ placeholder="请选择状态"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ class="!w-240px">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="dict in getStrDictOptions(DICT_TYPE.MEASURE_STATUS)"
|
|
|
|
|
+ :key="dict.value"
|
|
|
|
|
+ :label="dict.label"
|
|
|
|
|
+ :value="dict.value" />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12" v-if="isScrappedStatus(formData.status)">
|
|
|
|
|
+ <div class="flex items-center relative">
|
|
|
|
|
+ <span class="text-red absolute left-6 top-[-1px]">*</span>
|
|
|
|
|
+ <el-form-item label="报废时间" prop="offTime">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="formData.offTime"
|
|
|
|
|
+ type="date"
|
|
|
|
|
+ value-format="x"
|
|
|
|
|
+ placeholder="请选择报废时间"
|
|
|
|
|
+ style="width: 100%" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="价格" prop="measurePrice">
|
|
<el-form-item label="价格" prop="measurePrice">
|
|
@@ -539,6 +580,8 @@ const formData = ref({
|
|
|
brand: '',
|
|
brand: '',
|
|
|
modelName: '',
|
|
modelName: '',
|
|
|
classify: '',
|
|
classify: '',
|
|
|
|
|
+ status: '',
|
|
|
|
|
+ offTime: null,
|
|
|
buyDate: null,
|
|
buyDate: null,
|
|
|
remark: '',
|
|
remark: '',
|
|
|
deptId: '',
|
|
deptId: '',
|
|
@@ -563,16 +606,31 @@ const formatDateCorrectly = (timestamp) => {
|
|
|
return formatDate(time).substring(0, 10)
|
|
return formatDate(time).substring(0, 10)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const isScrappedStatus = (status) => {
|
|
|
|
|
+ const option = getStrDictOptions(DICT_TYPE.MEASURE_STATUS).find((item) => item.value === status)
|
|
|
|
|
+ return option?.label === '报废'
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const validateOffTime = (_rule, value, callback) => {
|
|
|
|
|
+ if (isScrappedStatus(formData.value.status) && !value) {
|
|
|
|
|
+ callback(new Error('报废状态必须填写报废时间'))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ callback()
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// 表单验证规则
|
|
// 表单验证规则
|
|
|
const formRules = {
|
|
const formRules = {
|
|
|
measureName: [{ required: true, message: '计量器具名称不能为空', trigger: 'blur' }],
|
|
measureName: [{ required: true, message: '计量器具名称不能为空', trigger: 'blur' }],
|
|
|
dutyPerson: [{ required: true, message: '责任人不能为空', trigger: 'blur' }],
|
|
dutyPerson: [{ required: true, message: '责任人不能为空', trigger: 'blur' }],
|
|
|
classify: [{ required: true, message: '分类不能为空', trigger: 'blur' }],
|
|
classify: [{ required: true, message: '分类不能为空', trigger: 'blur' }],
|
|
|
|
|
+ status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
|
|
|
deptId: [{ required: true, message: '部门不能为空', trigger: 'blur' }],
|
|
deptId: [{ required: true, message: '部门不能为空', trigger: 'blur' }],
|
|
|
measureCertNo: [{ required: true, message: '证书编码不能为空', trigger: 'blur' }],
|
|
measureCertNo: [{ required: true, message: '证书编码不能为空', trigger: 'blur' }],
|
|
|
validity: [{ required: true, message: '有效期不能为空', trigger: 'blur' }],
|
|
validity: [{ required: true, message: '有效期不能为空', trigger: 'blur' }],
|
|
|
serialNo: [{ required: true, message: '序列号不能为空', trigger: 'blur' }],
|
|
serialNo: [{ required: true, message: '序列号不能为空', trigger: 'blur' }],
|
|
|
- measureUnit: [{ required: true, message: '精度不能为空', trigger: 'blur' }]
|
|
|
|
|
|
|
+ measureUnit: [{ required: true, message: '精度不能为空', trigger: 'blur' }],
|
|
|
|
|
+ offTime: [{ validator: validateOffTime, trigger: ['change', 'blur'] }]
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/** 查询列表 */
|
|
/** 查询列表 */
|
|
@@ -688,6 +746,7 @@ const handleEdit = (row) => {
|
|
|
formData.value = {
|
|
formData.value = {
|
|
|
...row,
|
|
...row,
|
|
|
// 确保日期字段正确处理
|
|
// 确保日期字段正确处理
|
|
|
|
|
+ offTime: row.offTime ? ensureMillisecondTimestamp(row.offTime) : null,
|
|
|
buyDate: row.buyDate ? ensureMillisecondTimestamp(row.buyDate) : null,
|
|
buyDate: row.buyDate ? ensureMillisecondTimestamp(row.buyDate) : null,
|
|
|
validity: row.validity ? ensureMillisecondTimestamp(row.validity) : null
|
|
validity: row.validity ? ensureMillisecondTimestamp(row.validity) : null
|
|
|
}
|
|
}
|
|
@@ -801,6 +860,8 @@ const resetForm = () => {
|
|
|
brand: '',
|
|
brand: '',
|
|
|
modelName: '',
|
|
modelName: '',
|
|
|
classify: '',
|
|
classify: '',
|
|
|
|
|
+ status: '',
|
|
|
|
|
+ offTime: null,
|
|
|
buyDate: null,
|
|
buyDate: null,
|
|
|
remark: '',
|
|
remark: '',
|
|
|
deptId: '',
|
|
deptId: '',
|
|
@@ -819,6 +880,15 @@ const closeDialog = () => {
|
|
|
resetForm()
|
|
resetForm()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+watch(
|
|
|
|
|
+ () => formData.value.status,
|
|
|
|
|
+ (value) => {
|
|
|
|
|
+ if (!isScrappedStatus(value)) {
|
|
|
|
|
+ formData.value.offTime = null
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
// 提交表单
|
|
// 提交表单
|
|
|
const submitForm = async () => {
|
|
const submitForm = async () => {
|
|
|
if (!formRef.value) return
|
|
if (!formRef.value) return
|
|
@@ -831,6 +901,7 @@ const submitForm = async () => {
|
|
|
const submitData = {
|
|
const submitData = {
|
|
|
...formData.value,
|
|
...formData.value,
|
|
|
// 确保日期字段以正确的格式提交
|
|
// 确保日期字段以正确的格式提交
|
|
|
|
|
+ offTime: formData.value.offTime,
|
|
|
buyDate: formData.value.buyDate,
|
|
buyDate: formData.value.buyDate,
|
|
|
validity: formData.value.validity
|
|
validity: formData.value.validity
|
|
|
}
|
|
}
|