style:设备管理-维修单-添加维修项目

main
黄伟杰 2 weeks ago
parent 4a0f6c2130
commit f9d23dc30a

@ -21,7 +21,7 @@
<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 <el-input
v-model="row.subjectCode" v-model="row.subjectCode"
:placeholder="t('EquipmentManagement.DvRepair.placeholderLineSubjectCode')" :placeholder="props.lineMode !== 'edit' ? '' : t('EquipmentManagement.DvRepair.placeholderLineSubjectCode')"
:disabled="props.lineMode !== 'edit'" :disabled="props.lineMode !== 'edit'"
/> />
</el-form-item> </el-form-item>
@ -32,7 +32,7 @@
<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 <el-input
v-model="row.subjectName" v-model="row.subjectName"
:placeholder="t('EquipmentManagement.DvRepair.placeholderLineSubjectName')" :placeholder="props.lineMode !== 'edit' ? '' : t('EquipmentManagement.DvRepair.placeholderLineSubjectName')"
:disabled="props.lineMode !== 'edit'" :disabled="props.lineMode !== 'edit'"
/> />
</el-form-item> </el-form-item>
@ -51,7 +51,7 @@
<el-input <el-input
type="textarea" type="textarea"
v-model="row.subjectContent" v-model="row.subjectContent"
:placeholder="t('EquipmentManagement.DvRepair.placeholderLineSubjectContent')" :placeholder="props.lineMode !== 'edit' ? '' : t('EquipmentManagement.DvRepair.placeholderLineSubjectContent')"
:disabled="props.lineMode !== 'edit'" :disabled="props.lineMode !== 'edit'"
/> />
</el-form-item> </el-form-item>
@ -121,16 +121,16 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> --> </el-table-column> -->
<!-- <el-table-column align="center" fixed="right" label="操作" width="60"> <el-table-column v-if="props.lineMode === 'edit'" align="center" fixed="right" label="操作" width="80">
<template #default="{ $index }"> <template #default="{ $index }">
<el-button @click="handleDelete($index)" link></el-button> <el-button link type="danger" @click="handleDelete($index)"></el-button>
</template> </template>
</el-table-column> --> </el-table-column>
</el-table> </el-table>
</el-form> </el-form>
<!-- <el-row justify="center" class="mt-3"> <el-row v-if="props.lineMode === 'edit'" justify="center" class="mt-3">
<el-button @click="handleAdd" round>+ 添加维修项目</el-button> <el-button @click="handleAdd" round type="primary" plain>+ 添加维修项目</el-button>
</el-row> --> </el-row>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { DvRepairApi } from '@/api/mes/dvrepair' import { DvRepairApi } from '@/api/mes/dvrepair'
@ -145,7 +145,31 @@ const formData = ref([])
const formRules = reactive({ const formRules = reactive({
repairId: [{ required: true, message: t('EquipmentManagement.DvRepair.validatorLineRepairIdRequired'), trigger: 'blur' }], repairId: [{ required: true, message: t('EquipmentManagement.DvRepair.validatorLineRepairIdRequired'), trigger: 'blur' }],
subjectId: [{ required: true, message: t('EquipmentManagement.DvRepair.validatorLineSubjectIdRequired'), trigger: 'blur' }], subjectId: [{ required: true, message: t('EquipmentManagement.DvRepair.validatorLineSubjectIdRequired'), trigger: 'blur' }],
subjectCode: [{ required: true, message: t('EquipmentManagement.DvRepair.validatorLineSubjectCodeRequired'), trigger: 'blur' }], subjectCode: [
{ required: true, message: t('EquipmentManagement.DvRepair.validatorLineSubjectCodeRequired'), trigger: 'blur' },
{
validator: (rule: any, value: any, callback: any) => {
const normalized = String(value ?? '').trim()
if (!normalized) {
callback()
return
}
const fullField = String(rule?.fullField ?? rule?.field ?? '')
const indexText = fullField.split('.')[0]
const currentIndex = Number(indexText)
const hasDuplicate = formData.value.some((row: any, idx: number) => {
if (idx === currentIndex) return false
return String(row?.subjectCode ?? '').trim() === normalized
})
if (hasDuplicate) {
callback(new Error('维修编码不能重复'))
return
}
callback()
},
trigger: 'blur',
},
],
subjectContent: [], subjectContent: [],
remark: [ remark: [
{ {
@ -182,7 +206,7 @@ watch(
formData.value = [] formData.value = []
// 2. val // 2. val
if (!val) { if (!val) {
return; return
} }
try { try {
formLoading.value = true formLoading.value = true
@ -190,6 +214,7 @@ watch(
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
nextTick(() => formRef.value?.clearValidate())
}, },
{ immediate: true } { immediate: true }
) )
@ -213,11 +238,13 @@ const handleAdd = () => {
} }
row.repairId = props.repairId row.repairId = props.repairId
formData.value.push(row) formData.value.push(row)
nextTick(() => formRef.value?.clearValidate())
} }
/** 删除按钮操作 */ /** 删除按钮操作 */
const handleDelete = (index) => { const handleDelete = (index) => {
formData.value.splice(index, 1) formData.value.splice(index, 1)
nextTick(() => formRef.value?.clearValidate())
} }
/** 表单校验 */ /** 表单校验 */
@ -232,6 +259,7 @@ const getData = () => {
const setData = (rows: any[]) => { const setData = (rows: any[]) => {
formData.value = Array.isArray(rows) ? rows : [] formData.value = Array.isArray(rows) ? rows : []
nextTick(() => formRef.value?.clearValidate())
} }
defineExpose({ validate, getData, setData }) defineExpose({ validate, getData, setData })

Loading…
Cancel
Save