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