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