From 14f7d39b1885442de42bdd81806774151baddd4f Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期二, 22 七月 2025 15:37:03 +0800 Subject: [PATCH] 'ts报红部分解决' --- src/views/item/component/editDialog.vue | 284 +++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 199 insertions(+), 85 deletions(-) diff --git a/src/views/item/component/editDialog.vue b/src/views/item/component/editDialog.vue index b54d199..ada8be4 100644 --- a/src/views/item/component/editDialog.vue +++ b/src/views/item/component/editDialog.vue @@ -1,41 +1,49 @@ 锘�<script lang="ts" name="procurementComplaint" setup> -import { ref, reactive, onMounted } from 'vue'; -import { ElMessage } from 'element-plus'; -import type { FormRules } from 'element-plus'; -import { formatDate } from '/@/utils/formatTime'; -import { useProcurementComplaintApi } from '/@/api/fb_p_complaints/procurementComplaint'; -import { log } from 'console'; +import { ref, reactive, onMounted } from "vue"; +import { ElMessage } from "element-plus"; +import type { FormRules } from "element-plus"; +import { formatDate } from "/@/utils/formatTime"; +import { useProcurementComplaintApi } from "/@/api/fb_p_complaints/procurementComplaint"; +import { log } from "console"; //鐖剁骇浼犻�掓潵鐨勫嚱鏁帮紝鐢ㄤ簬鍥炶皟 -const emit = defineEmits(['reloadTable']); +const emit = defineEmits(["reloadTable"]); const procurementComplaintApi = useProcurementComplaintApi(); const ruleFormRef = ref(); const state = reactive({ - title: '', - loading: false, - showDialog: false, - ruleForm: { - complaints: [{ itemDescription: '' }], - } as any, - stores: {}, - dropdownData: {} as any, + title: "", + loading: false, + showDialog: false, + ruleForm: { + complaints: [{ itemDescription: "" }] + } as any, + stores: {}, + dropdownData: {} as any }); const handlingStatus = [ - { value: 0, label: '鍏跺畠' }, - { value: 1, label: '鎴愮珛' }, - { value: 2, label: '椹冲洖' }, - { value: 3, label: '閮ㄥ垎鎴愮珛' }, + { value: 0, label: "鍏跺畠" }, + { value: 1, label: "鎴愮珛" }, + { value: 2, label: "椹冲洖" }, + { value: 3, label: "閮ㄥ垎鎴愮珛" } ]; // 鑷娣诲姞鍏朵粬瑙勫垯 const rules = ref<FormRules>({ - projectCode: [{ required: true, message: '璇烽�夋嫨椤圭洰缂栧彿锛�', trigger: 'blur' }], - projectName: [{ required: true, message: '璇烽�夋嫨椤圭洰鍚嶇О锛�', trigger: 'blur' }], - decisionDate: [{ required: true, message: '璇烽�夋嫨鍐冲畾鏃ユ湡锛�', trigger: 'change' }], - purchaser: [{ required: true, message: '璇烽�夋嫨閲囪喘浜猴紒', trigger: 'blur' }], - procurementAgency: [{ required: true, message: '璇烽�夋嫨閲囪喘浠g悊鏈烘瀯锛�', trigger: 'blur' }], + projectCode: [ + { required: true, message: "璇烽�夋嫨椤圭洰缂栧彿锛�", trigger: "blur" } + ], + projectName: [ + { required: true, message: "璇烽�夋嫨椤圭洰鍚嶇О锛�", trigger: "blur" } + ], + decisionDate: [ + { required: true, message: "璇烽�夋嫨鍐冲畾鏃ユ湡锛�", trigger: "change" } + ], + purchaser: [{ required: true, message: "璇烽�夋嫨閲囪喘浜猴紒", trigger: "blur" }], + procurementAgency: [ + { required: true, message: "璇烽�夋嫨閲囪喘浠g悊鏈烘瀯锛�", trigger: "blur" } + ] }); // 椤甸潰鍔犺浇鏃� @@ -43,41 +51,45 @@ // 鎵撳紑寮圭獥 const openDialog = async (row: any, title: string) => { - state.title = title; - row = row ?? { complaints: [{ itemDescription: '' }] }; - state.ruleForm = row.id ? await procurementComplaintApi.detail(row.id).then((res) => res.data.result) : JSON.parse(JSON.stringify(row)); - state.showDialog = true; - console.log(state.ruleForm.complaints, state.ruleForm.complaints.length); + state.title = title; + row = row ?? { complaints: [{ itemDescription: "" }] }; + state.ruleForm = row.id + ? await procurementComplaintApi.detail(row.id).then(res => res.data.result) + : JSON.parse(JSON.stringify(row)); + state.showDialog = true; + console.log(state.ruleForm.complaints, state.ruleForm.complaints.length); }; // 鍏抽棴寮圭獥 const closeDialog = () => { - emit('reloadTable'); - state.showDialog = false; + emit("reloadTable"); + state.showDialog = false; }; // 鎻愪氦 const submit = async () => { - ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => { - if (isValid) { - let values = state.ruleForm; - await procurementComplaintApi[state.ruleForm.id ? 'update' : 'add'](values); - closeDialog(); - } else { - ElMessage({ - message: `琛ㄥ崟鏈�${Object.keys(fields).length}澶勯獙璇佸け璐ワ紝璇蜂慨鏀瑰悗鍐嶆彁浜, - type: 'error', - }); - } - }); + ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => { + if (isValid) { + let values = state.ruleForm; + await procurementComplaintApi[state.ruleForm.id ? "update" : "add"]( + values + ); + closeDialog(); + } else { + ElMessage({ + message: `琛ㄥ崟鏈�${Object.keys(fields).length}澶勯獙璇佸け璐ワ紝璇蜂慨鏀瑰悗鍐嶆彁浜, + type: "error" + }); + } + }); }; -const changeComplaints = (index:any,txt: String) => { - if (txt == 'add') { - state.ruleForm.complaints.splice(index+1, 0, { itemDescription: '' }) - } else { - state.ruleForm.complaints.splice(index, 1) - } +const changeComplaints = (index: any, txt: String) => { + if (txt == "add") { + state.ruleForm.complaints.splice(index + 1, 0, { itemDescription: "" }); + } else { + state.ruleForm.complaints.splice(index, 1); + } }; //灏嗗睘鎬ф垨鑰呭嚱鏁版毚闇茬粰鐖剁粍浠� @@ -85,101 +97,203 @@ </script> <template> <div class="procurementComplaint-container"> - <el-dialog v-model="state.showDialog" :width="900" draggable :close-on-click-modal="false"> + <el-dialog + v-model="state.showDialog" + :width="900" + draggable + :close-on-click-modal="false" + > <template #header> <div style="color: #fff"> <span>{{ state.title }}</span> </div> </template> - <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules"> + <el-form + ref="ruleFormRef" + :model="state.ruleForm" + label-width="auto" + :rules="rules" + > <el-row :gutter="35"> <el-form-item v-show="false"> <el-input v-model="state.ruleForm.id" /> </el-form-item> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="鍐冲畾鏃ユ湡" prop="decisionDate"> - <el-date-picker v-model="state.ruleForm.decisionDate" type="date" placeholder="璇烽�夋嫨鍐冲畾鏃ユ湡" /> + <el-date-picker + v-model="state.ruleForm.decisionDate" + type="date" + placeholder="璇烽�夋嫨鍐冲畾鏃ユ湡" + /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="椤圭洰鍚嶇О" prop="projectName"> - <el-input v-model="state.ruleForm.projectName" placeholder="璇疯緭鍏ラ」鐩悕绉�" maxlength="200" show-word-limit - clearable /> + <el-input + v-model="state.ruleForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + maxlength="200" + show-word-limit + clearable + /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="椤圭洰缂栧彿" prop="projectCode"> - <el-input v-model="state.ruleForm.projectCode" placeholder="璇疯緭鍏ラ」鐩紪鍙�" maxlength="50" show-word-limit - clearable /> + <el-input + v-model="state.ruleForm.projectCode" + placeholder="璇疯緭鍏ラ」鐩紪鍙�" + maxlength="50" + show-word-limit + clearable + /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="閲囪喘浜�" prop="purchaser"> - <el-input v-model="state.ruleForm.purchaser" placeholder="璇疯緭鍏ラ噰璐汉" maxlength="100" show-word-limit - clearable /> + <el-input + v-model="state.ruleForm.purchaser" + placeholder="璇疯緭鍏ラ噰璐汉" + maxlength="100" + show-word-limit + clearable + /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="閲囪喘浠g悊鏈烘瀯" prop="procurementAgency"> - <el-input v-model="state.ruleForm.procurementAgency" placeholder="璇疯緭鍏ラ噰璐唬鐞嗘満鏋�" maxlength="100" - show-word-limit clearable /> + <el-input + v-model="state.ruleForm.procurementAgency" + placeholder="璇疯緭鍏ラ噰璐唬鐞嗘満鏋�" + maxlength="100" + show-word-limit + clearable + /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="閲囪喘鐩戠潱閮ㄩ棬" prop="procurementSupervisionDepartment"> - <el-input v-model="state.ruleForm.procurementSupervisionDepartment" placeholder="璇疯緭鍏ラ噰璐洃鐫i儴闂�" - maxlength="100" show-word-limit clearable /> + <el-form-item + label="閲囪喘鐩戠潱閮ㄩ棬" + prop="procurementSupervisionDepartment" + > + <el-input + v-model="state.ruleForm.procurementSupervisionDepartment" + placeholder="璇疯緭鍏ラ噰璐洃鐫i儴闂�" + maxlength="100" + show-word-limit + clearable + /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="鎶曡瘔浜�" prop="complainant"> - <el-input v-model="state.ruleForm.complainant" placeholder="璇疯緭鍏ユ姇璇変汉" maxlength="100" show-word-limit - clearable /> + <el-input + v-model="state.ruleForm.complainant" + placeholder="璇疯緭鍏ユ姇璇変汉" + maxlength="100" + show-word-limit + clearable + /> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="绾夸笂鍦板潃" prop="url"> - <el-input v-model="state.ruleForm.url" placeholder="璇疯緭鍏ョ嚎涓婂湴鍧�" maxlength="255" show-word-limit clearable /> + <el-input + v-model="state.ruleForm.url" + placeholder="璇疯緭鍏ョ嚎涓婂湴鍧�" + maxlength="255" + show-word-limit + clearable + /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> - <template v-for="(item,index) in state.ruleForm.complaints" :key="index"> + <template + v-for="(item, index) in state.ruleForm.complaints" + :key="index" + > <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item :label="`鎶曡瘔浜嬮」${index==0?'':index}`" prop="complaints"> - <el-input v-model="item.itemDescription" type="textarea" :placeholder="`璇疯緭鍏ユ姇璇変簨椤�${index==0?'':index}`" - maxlength="1000" show-word-limit clearable /> + <el-form-item + :label="`鎶曡瘔浜嬮」${index == 0 ? '' : index}`" + prop="complaints" + > + <el-input + v-model="item.itemDescription" + type="textarea" + :placeholder="`璇疯緭鍏ユ姇璇変簨椤�${index == 0 ? '' : index}`" + maxlength="1000" + show-word-limit + clearable + /> </el-form-item> </el-col> <el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12" class=""> - <el-form-item :label="`澶勭悊鎻忚堪${index==0?'':index}`" prop="complaints"> - <el-input v-model="item.handlingResult" type="textarea" :placeholder="`璇疯緭鍏ュ鐞嗘弿杩�${index==0?'':index}`" - maxlength="1000" show-word-limit clearable /> + <el-form-item + :label="`澶勭悊鎻忚堪${index == 0 ? '' : index}`" + prop="complaints" + > + <el-input + v-model="item.handlingResult" + type="textarea" + :placeholder="`璇疯緭鍏ュ鐞嗘弿杩�${index == 0 ? '' : index}`" + maxlength="1000" + show-word-limit + clearable + /> </el-form-item> </el-col> <el-col :xs="6" :sm="6" :md="6" :lg="6" :xl="6" class="mb20"> - <el-form-item :label="`鎶曡瘔鐘舵��${index==0?'':index}`" prop="complaints"> + <el-form-item + :label="`鎶曡瘔鐘舵��${index == 0 ? '' : index}`" + prop="complaints" + > <el-select v-model="item.handlingStatus"> - <el-option v-for="item in handlingStatus" :key="item.value" :label="item.label" :value="item.value" /> + <el-option + v-for="item in handlingStatus" + :key="item.value" + :label="item.label" + :value="item.value" + /> </el-select> </el-form-item> </el-col> <el-col :xs="1" :sm="1" :md="1" :lg="1" :xl="1" class="mb20"> - <el-button type="primary" @click="changeComplaints(index,'add')">+</el-button> + <el-button type="primary" @click="changeComplaints(index, 'add')" + >+</el-button + > </el-col> - <el-col :xs="1" :sm="1" :md="1" :lg="1" :xl="1" class="mb20" - v-if="state.ruleForm.complaints&&state.ruleForm.complaints.length>1"> - <el-button type="primary" @click="changeComplaints(index)">-</el-button> + <el-col + v-if=" + state.ruleForm.complaints && + state.ruleForm.complaints.length > 1 + " + :xs="1" + :sm="1" + :md="1" + :lg="1" + :xl="1" + class="mb20" + > + <el-button type="primary" @click="changeComplaints(index)" + >-</el-button + > </el-col> - <el-divider v-if="state.ruleForm.complaints&&state.ruleForm.complaints.length>1" /> + <el-divider + v-if=" + state.ruleForm.complaints && + state.ruleForm.complaints.length > 1 + " + /> </template> - </el-row> </el-form> <template #footer> <span class="dialog-footer"> - <el-button @click="() => state.showDialog = false">鍙� 娑�</el-button> - <el-button @click="submit" type="primary" v-reclick="1000">纭� 瀹�</el-button> + <el-button @click="() => (state.showDialog = false)">鍙� 娑�</el-button> + <el-button v-reclick="1000" type="primary" @click="submit" + >纭� 瀹�</el-button + > </span> </template> </el-dialog> @@ -188,6 +302,6 @@ <style lang="scss" scoped> :deep(.el-select), :deep(.el-input-number) { - width: 100%; + width: 100%; } -</style> \ No newline at end of file +</style> -- Gitblit v1.9.1