From 18a785bcfef2fc0f0ff8ccd48b7d1427547b51e4 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 30 七月 2025 14:33:30 +0800
Subject: [PATCH] 1.售后处理-开发联调

---
 src/views/customerService/feedbackRegistration/components/formDia.vue |    3 
 src/views/customerService/afterSalesHandling/components/formDia.vue   |   86 ++++++++++++++++++++++------
 src/views/customerService/feedbackRegistration/index.vue              |    8 ++
 src/api/customerService/index.js                                      |    8 ++
 src/views/customerService/afterSalesHandling/index.vue                |   62 +++++++++++++++-----
 5 files changed, 129 insertions(+), 38 deletions(-)

diff --git a/src/api/customerService/index.js b/src/api/customerService/index.js
index 1f9a69d..e83cdfb 100644
--- a/src/api/customerService/index.js
+++ b/src/api/customerService/index.js
@@ -32,4 +32,12 @@
     method: 'post',
     data: query,
   })
+}
+// 鍙嶉鐧昏-鎻愪氦澶勭悊
+export function afterSalesServiceDispose(query) {
+  return request({
+    url: '/afterSalesService/dispose',
+    method: 'post',
+    data: query,
+  })
 }
\ No newline at end of file
diff --git a/src/views/customerService/afterSalesHandling/components/formDia.vue b/src/views/customerService/afterSalesHandling/components/formDia.vue
index 08eacfa..cfdb01c 100644
--- a/src/views/customerService/afterSalesHandling/components/formDia.vue
+++ b/src/views/customerService/afterSalesHandling/components/formDia.vue
@@ -2,7 +2,7 @@
   <div>
     <el-dialog
         v-model="dialogFormVisible"
-        title="璁惧鑳借��"
+        title="鍞悗澶勭悊"
         width="70%"
         @close="closeDia"
     >
@@ -24,6 +24,7 @@
 								type="date"
 								placeholder="璇烽�夋嫨"
 								clearable
+								disabled
 							/>
 						</el-form-item>
 					</el-col>
@@ -33,6 +34,7 @@
 								v-model="form.checkUserId"
 								placeholder="璇烽�夋嫨"
 								clearable
+								disabled
 							>
 								<el-option
 									v-for="item in userList"
@@ -51,6 +53,7 @@
 								v-model="form.customerName"
 								placeholder="璇疯緭鍏�"
 								clearable
+								disabled
 							/>
 						</el-form-item>
 					</el-col>
@@ -60,11 +63,59 @@
 								v-model="form.proDesc"
 								placeholder="璇疯緭鍏�"
 								clearable
+								disabled
+								type="textarea"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row :gutter="30">
+					<el-col :span="24">
+						<el-form-item label="澶勭悊缁撴灉锛�" prop="disRes">
+							<el-input
+								v-model="form.disRes"
+								placeholder="璇疯緭鍏�"
+								clearable
+								:disabled="operationType === 'view'"
+								type="textarea"
 							/>
 						</el-form-item>
 					</el-col>
 				</el-row>
 			</el-form>
+			<el-row :gutter="30">
+				<el-col :span="12">
+					<el-form-item label="澶勭悊浜猴細" prop="disposeUserId">
+						<el-select
+							v-model="form.disposeUserId"
+							placeholder="璇烽�夋嫨"
+							clearable
+							disabled
+						>
+							<el-option
+								v-for="item in userList"
+								:key="item.userId"
+								:label="item.nickName"
+								:value="item.userId"
+							></el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="澶勭悊鏃堕棿锛�" prop="disDate">
+						<el-date-picker
+							style="width: 100%"
+							v-model="form.disDate"
+							value-format="YYYY-MM-DD"
+							format="YYYY-MM-DD"
+							type="date"
+							placeholder="璇烽�夋嫨"
+							clearable
+							disabled
+						/>
+					</el-form-item>
+				</el-col>
+			</el-row>
 			<template #footer>
 				<div class="dialog-footer">
 					<el-button type="primary" @click="submitForm">纭</el-button>
@@ -79,7 +130,7 @@
 import {ref} from "vue";
 import useUserStore from "@/store/modules/user.js";
 import {userListNoPageByTenantId} from "@/api/system/user.js";
-import {afterSalesServiceAdd, afterSalesServiceUpdate} from "@/api/customerService/index.js";
+import {afterSalesServiceAdd, afterSalesServiceDispose, afterSalesServiceUpdate} from "@/api/customerService/index.js";
 const { proxy } = getCurrentInstance()
 const emit = defineEmits(['close'])
 const dialogFormVisible = ref(false);
@@ -92,12 +143,18 @@
 		checkUserId: "",
 		customerName: "",
 		proDesc: "",
+		disposeUserId: "",
+		disDate: "",
+		disRes: "",
 	},
 	rules: {
 		feedbackDate: [{required: true, message: "璇烽�夋嫨", trigger: "change"}],
 		checkUserId: [{required: true, message: "璇烽�夋嫨", trigger: "change"}],
 		customerName: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
 		proDesc: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
+		disRes: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
+		disposeUserId: [{required: true, message: "璇烽�夋嫨", trigger: "change"}],
+		disDate: [{required: true, message: "璇烽�夋嫨", trigger: "change"}],
 	}
 })
 const { form, rules } = toRefs(data);
@@ -107,16 +164,12 @@
 const openDialog = (type, row) => {
   operationType.value = type;
   dialogFormVisible.value = true;
-	form.value = {}
-	proxy.resetForm("formRef");
-	form.value.checkUserId = userStore.id;
-	form.value.feedbackDate = getCurrentDate();
 	userListNoPageByTenantId().then((res) => {
 		userList.value = res.data;
 	});
-	if (type === "edit") {
-		form.value = {...row}
-	}
+	form.value = {...row}
+	form.value.disposeUserId = userStore.id;
+	form.value.disDate = getCurrentDate();
 }
 // const setName = (code) => {
 // 	const index = userList.value.findIndex(item => item.deviceModel === code);
@@ -128,17 +181,10 @@
 const submitForm = () => {
 	proxy.$refs["formRef"].validate(valid => {
 		if (valid) {
-			if (operationType.value === "add") {
-				afterSalesServiceAdd(form.value).then(response => {
-					proxy.$modal.msgSuccess("鏂板鎴愬姛")
-					closeDia()
-				})
-			} else {
-				afterSalesServiceUpdate(form.value).then(response => {
-					proxy.$modal.msgSuccess("淇敼鎴愬姛")
-					closeDia()
-				})
-			}
+			afterSalesServiceDispose(form.value).then(response => {
+				proxy.$modal.msgSuccess("鏂板鎴愬姛")
+				closeDia()
+			})
 		}
 	})
 }
diff --git a/src/views/customerService/afterSalesHandling/index.vue b/src/views/customerService/afterSalesHandling/index.vue
index 50f250e..4994365 100644
--- a/src/views/customerService/afterSalesHandling/index.vue
+++ b/src/views/customerService/afterSalesHandling/index.vue
@@ -2,22 +2,29 @@
 	<div class="app-container">
 		<div class="search_form">
 			<div>
-				<span class="search_title">璁惧鍚嶇О锛�</span>
-				<el-input
-					v-model="searchForm.name"
-					style="width: 240px"
-					placeholder="璇疯緭鍏�"
-					@change="handleQuery"
+				<span class="search_title">鍙嶉鏃ユ湡锛�</span>
+				<el-date-picker
+					v-model="searchForm.feedbackDate"
+					value-format="YYYY-MM-DD"
+					format="YYYY-MM-DD"
+					type="date"
+					placeholder="璇烽�夋嫨"
 					clearable
-					:prefix-icon="Search"
+					@change="handleQuery"
+				/>
+				<span class="search_title ml10">澶勭悊鏃ユ湡锛�</span>
+				<el-date-picker
+					v-model="searchForm.disDate"
+					value-format="YYYY-MM-DD"
+					format="YYYY-MM-DD"
+					type="date"
+					placeholder="璇烽�夋嫨"
+					clearable
+					@change="handleQuery"
 				/>
 				<el-button type="primary" @click="handleQuery" style="margin-left: 10px"
 				>鎼滅储</el-button
 				>
-			</div>
-			<div>
-				<el-button type="primary" @click="openForm('add')">鏂板</el-button>
-				<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
 			</div>
 		</div>
 		<div class="table_list">
@@ -39,7 +46,7 @@
 <script setup>
 import {Search} from "@element-plus/icons-vue";
 import {onMounted, ref} from "vue";
-import FormDia from "@/views/customerService/feedbackRegistration/components/formDia.vue";
+import FormDia from "@/views/customerService/afterSalesHandling/components/formDia.vue";
 import {ElMessageBox} from "element-plus";
 import {afterSalesServiceDelete, afterSalesServiceListPage} from "@/api/customerService/index.js";
 import useUserStore from "@/store/modules/user.js";
@@ -48,7 +55,8 @@
 
 const data = reactive({
 	searchForm: {
-		name: "",
+		feedbackDate: "",
+		disDate: "",
 	},
 });
 const { searchForm } = toRefs(data);
@@ -102,21 +110,43 @@
 		width: 200,
 	},
 	{
+		label: "澶勭悊浜�",
+		prop: "disposeNickName",
+	},
+	{
+		label: "澶勭悊缁撴灉",
+		prop: "disRes",
+		width: 200,
+	},
+	{
+		label: "澶勭悊鏃ユ湡",
+		prop: "disDate",
+		width: 150,
+	},
+	{
 		dataType: "action",
 		label: "鎿嶄綔",
 		align: "center",
 		fixed: 'right',
+		width: 120,
 		operation: [
 			{
-				name: "缂栬緫",
+				name: "澶勭悊",
 				type: "text",
 				clickFun: (row) => {
-					openForm("edit", row);
+					openForm("approve", row);
 				},
 				disabled: (row) => {
-					return row.checkUserId !== userStore.id || row.status !== 1
+					return row.status !== 1
 				}
 			},
+			{
+				name: "鏌ョ湅",
+				type: "text",
+				clickFun: (row) => {
+					openForm("view", row);
+				},
+			},
 		],
 	},
 ]);
diff --git a/src/views/customerService/feedbackRegistration/components/formDia.vue b/src/views/customerService/feedbackRegistration/components/formDia.vue
index 08eacfa..a37002b 100644
--- a/src/views/customerService/feedbackRegistration/components/formDia.vue
+++ b/src/views/customerService/feedbackRegistration/components/formDia.vue
@@ -2,7 +2,7 @@
   <div>
     <el-dialog
         v-model="dialogFormVisible"
-        title="璁惧鑳借��"
+        title="鍞悗鐧昏"
         width="70%"
         @close="closeDia"
     >
@@ -60,6 +60,7 @@
 								v-model="form.proDesc"
 								placeholder="璇疯緭鍏�"
 								clearable
+								type="textarea"
 							/>
 						</el-form-item>
 					</el-col>
diff --git a/src/views/customerService/feedbackRegistration/index.vue b/src/views/customerService/feedbackRegistration/index.vue
index 95e064e..09ecf9e 100644
--- a/src/views/customerService/feedbackRegistration/index.vue
+++ b/src/views/customerService/feedbackRegistration/index.vue
@@ -4,13 +4,13 @@
 			<div>
 				<span class="search_title">鍙嶉鏃ユ湡锛�</span>
 				<el-date-picker
-					style="width: 100%"
 					v-model="searchForm.feedbackDate"
 					value-format="YYYY-MM-DD"
 					format="YYYY-MM-DD"
 					type="date"
 					placeholder="璇烽�夋嫨"
 					clearable
+					@change="handleQuery"
 				/>
 				<el-button type="primary" @click="handleQuery" style="margin-left: 10px"
 				>鎼滅储</el-button
@@ -166,6 +166,12 @@
 const handleDelete = () => {
 	let ids = [];
 	if (selectedRows.value.length > 0) {
+		// 妫�鏌ユ槸鍚︽湁浠栦汉缁存姢鐨勬暟鎹�
+		const unauthorizedData = selectedRows.value.filter(item => item.checkUserId !== userStore.id);
+		if (unauthorizedData.length > 0) {
+			proxy.$modal.msgWarning("涓嶅彲鍒犻櫎浠栦汉缁存姢鐨勬暟鎹�");
+			return;
+		}
 		ids = selectedRows.value.map((item) => item.id);
 	} else {
 		proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");

--
Gitblit v1.9.3