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