style:维修单-修改维修/编辑弹框字段禁用显示逻辑

main
黄伟杰 2 weeks ago
parent fe061f5746
commit fc68c28464

@ -102,7 +102,11 @@ v-model="formData.confirmBy" filterable clearable placeholder="请选择验收
<!-- 子表的表单 --> <!-- 子表的表单 -->
<el-tabs v-model="subTabsName"> <el-tabs v-model="subTabsName">
<el-tab-pane label="设备维修项目行" name="dvRepairLine"> <el-tab-pane label="设备维修项目行" name="dvRepairLine">
<DvRepairLineForm ref="dvRepairLineFormRef" :repair-id="formData.id" :is-repair-mode="formType === 'repair'" /> <DvRepairLineForm
ref="dvRepairLineFormRef"
:repair-id="formData.id"
:line-mode="lineMode"
/>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<template #footer> <template #footer>
@ -155,6 +159,17 @@ const formData = ref({
remark: undefined, remark: undefined,
}) })
const lineMode = computed(() => {
if (formType.value === 'repair') return 'repair' as const
if (formType.value === 'update') {
const v = formData.value.status === '' || formData.value.status === null || formData.value.status === undefined
? undefined
: String(formData.value.status)
if (v === '1') return 'readonlyWithResult' as const
}
return 'edit' as const
})
const showComponentSelect = computed(() => formData.value.machineryTypeId === 2) const showComponentSelect = computed(() => formData.value.machineryTypeId === 2)
const deviceLoading = ref(false) const deviceLoading = ref(false)
@ -285,6 +300,54 @@ const formRules = reactive({
machineryCode: [{ required: true, message: '设备编码不能为空', trigger: 'blur' }], machineryCode: [{ required: true, message: '设备编码不能为空', trigger: 'blur' }],
machineryName: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }], machineryName: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }],
machineryTypeId: [{ required: true, message: '设备类型不能为空', trigger: 'blur' }], machineryTypeId: [{ required: true, message: '设备类型不能为空', trigger: 'blur' }],
requireDate: [
{
validator: (_: any, value: any, callback: any) => {
if (formType.value === 'repair' && !value) {
callback(new Error('报修日期不能为空'))
return
}
callback()
},
trigger: 'change',
},
],
finishDate: [
{
validator: (_: any, value: any, callback: any) => {
if (formType.value === 'repair' && !value) {
callback(new Error('完成日期不能为空'))
return
}
callback()
},
trigger: 'change',
},
],
confirmDate: [
{
validator: (_: any, value: any, callback: any) => {
if (formType.value === 'repair' && !value) {
callback(new Error('验收日期不能为空'))
return
}
callback()
},
trigger: 'change',
},
],
repairResult: [
{
validator: (_: any, value: any, callback: any) => {
if (formType.value === 'repair' && !value) {
callback(new Error('维修结果不能为空'))
return
}
callback()
},
trigger: 'blur',
},
],
}) })
const formRef = ref() // Ref const formRef = ref() // Ref

@ -19,14 +19,22 @@
<el-table-column label="维修编码" min-width="150"> <el-table-column label="维修编码" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.subjectCode`" :rules="formRules.subjectCode" class="mb-0px!"> <el-form-item :prop="`${$index}.subjectCode`" :rules="formRules.subjectCode" class="mb-0px!">
<el-input v-model="row.subjectCode" placeholder="请输入维修编码" /> <el-input
v-model="row.subjectCode"
placeholder="请输入维修编码"
:disabled="props.lineMode !== 'edit'"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="维修名称" min-width="150"> <el-table-column label="维修名称" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.subjectName`" :rules="formRules.subjectName" class="mb-0px!"> <el-form-item :prop="`${$index}.subjectName`" :rules="formRules.subjectName" class="mb-0px!">
<el-input v-model="row.subjectName" placeholder="请输入维修名称" /> <el-input
v-model="row.subjectName"
placeholder="请输入维修名称"
:disabled="props.lineMode !== 'edit'"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
@ -40,23 +48,42 @@
<el-table-column label="维修内容" min-width="300"> <el-table-column label="维修内容" min-width="300">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.subjectContent`" :rules="formRules.subjectContent" class="mb-0px!"> <el-form-item :prop="`${$index}.subjectContent`" :rules="formRules.subjectContent" class="mb-0px!">
<el-input type="textarea" v-model="row.subjectContent" placeholder="请输入维修内容" /> <el-input
type="textarea"
v-model="row.subjectContent"
placeholder="请输入维修内容"
:disabled="props.lineMode !== 'edit'"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="props.isRepairMode" label="备注" min-width="180"> <el-table-column
v-if="props.lineMode === 'repair' || props.lineMode === 'readonlyWithResult'"
label="备注"
min-width="180"
>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!"> <el-form-item :prop="`${$index}.remark`" :rules="formRules.remark" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" /> <el-input
v-model="row.remark"
placeholder="请输入备注"
:disabled="props.lineMode !== 'repair'"
/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="props.isRepairMode" label="结果" min-width="160"> <el-table-column
<template #default="{ row }"> v-if="props.lineMode === 'repair' || props.lineMode === 'readonlyWithResult'"
<el-radio-group v-model="row.result"> label="结果"
<el-radio label="1">通过</el-radio> min-width="160"
<el-radio label="2">不通过</el-radio> >
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.result`" :rules="formRules.result" class="mb-0px!">
<el-radio-group v-model="row.result" :disabled="props.lineMode !== 'repair'">
<el-radio :value="1">通过</el-radio>
<el-radio :value="2">不通过</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="标准" min-width="150"> <!-- <el-table-column label="标准" min-width="150">
@ -110,7 +137,7 @@ import { DvRepairApi } from '@/api/mes/dvrepair'
const props = defineProps<{ const props = defineProps<{
repairId: undefined repairId: undefined
isRepairMode?: boolean lineMode?: 'edit' | 'repair' | 'readonlyWithResult'
}>() }>()
const formLoading = ref(false) // const formLoading = ref(false) //
const formData = ref([]) const formData = ref([])
@ -119,6 +146,30 @@ const formRules = reactive({
subjectId: [{ required: true, message: '项目ID不能为空', trigger: 'blur' }], subjectId: [{ required: true, message: '项目ID不能为空', trigger: 'blur' }],
subjectCode: [{ required: true, message: '项目编码不能为空', trigger: 'blur' }], subjectCode: [{ required: true, message: '项目编码不能为空', trigger: 'blur' }],
subjectContent: [{ required: true, message: '项目内容不能为空', trigger: 'blur' }], subjectContent: [{ required: true, message: '项目内容不能为空', trigger: 'blur' }],
remark: [
{
validator: (_: any, value: any, callback: any) => {
if (props.lineMode === 'repair' && !value) {
callback(new Error('备注不能为空'))
return
}
callback()
},
trigger: 'blur',
},
],
result: [
{
validator: (_: any, value: any, callback: any) => {
if (props.lineMode === 'repair' && (value === undefined || value === null || value === '')) {
callback(new Error('结果不能为空'))
return
}
callback()
},
trigger: 'change',
},
],
}) })
const formRef = ref() // Ref const formRef = ref() // Ref

Loading…
Cancel
Save