From dfd8b7c7172b622d816aded772c44129cdf91b0e Mon Sep 17 00:00:00 2001 From: xzg <4727863@qq.com> Date: Tue, 5 Nov 2024 17:29:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=87=BA=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=A1=AB=E5=85=85=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=B7=B2?= =?UTF-8?q?=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tableexportcomponent.vue | 16 - src/option/aftersales/vueTvemp.js | 537 +++++++++++++----- .../aftersales/aftersalesWorkOrderAdd.vue | 20 +- .../aftersales/aftersalesWorkOrderInfo.vue | 9 +- .../aftersales/aftersalesWorkOrderTemp.vue | 171 +++++- .../aftersales/aftersalesWorkOrdermodify.vue | 2 +- 6 files changed, 581 insertions(+), 174 deletions(-) diff --git a/src/components/Tableexportcomponent/Tableexportcomponent.vue b/src/components/Tableexportcomponent/Tableexportcomponent.vue index 9eaf7fc2..8183f742 100644 --- a/src/components/Tableexportcomponent/Tableexportcomponent.vue +++ b/src/components/Tableexportcomponent/Tableexportcomponent.vue @@ -128,22 +128,6 @@ const exportToExcel = () => { // 填充空白单元格的函数 const fillEmptyCells = (data) => { - if (data.length === 0 || data[0].length === 0) return data; - - const rowCount = data.length; - const colCount = data[0].length; - - for (let col = 0; col < colCount; col++) { - let lastNonEmptyValue = ''; - for (let row = 0; row < rowCount; row++) { - if (data[row][col] !== '') { - lastNonEmptyValue = data[row][col]; - } else { - data[row][col] = lastNonEmptyValue; - } - } - } - return data; }; diff --git a/src/option/aftersales/vueTvemp.js b/src/option/aftersales/vueTvemp.js index c6df2e4b..1936aed7 100644 --- a/src/option/aftersales/vueTvemp.js +++ b/src/option/aftersales/vueTvemp.js @@ -1,4 +1,4 @@ -import { isShallow } from "vue"; +import { isShallow } from 'vue'; /** *全部列表 @@ -41,6 +41,17 @@ export const columnList = [ sortable: true, head: false, }, + { + prop: 'a', + label: '工单创建仓', + type: 1, + values: '', + width: '140', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, { prop: 'workOrderNumber', label: '异常工单号', @@ -52,6 +63,28 @@ export const columnList = [ sortable: true, head: false, }, + { + prop: 'waybillNumber', + label: '运单号', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'orderCode', + label: '订单自编号', + type: 2, + values: '', + width: '180', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, { prop: 'packageCode', label: '包条码', @@ -64,8 +97,8 @@ export const columnList = [ head: false, }, { - prop: 'waybillNumber', - label: '运单号', + prop: 'brandName', + label: '品牌', type: 2, values: '', width: '150', @@ -75,11 +108,11 @@ export const columnList = [ head: false, }, { - prop: 'orderCode', - label: '订单自编号', + prop: 'waybillMall', + label: '运单商场', type: 2, values: '', - width: '180', + width: '150', checkarr: [], fixed: false, sortable: true, @@ -107,10 +140,11 @@ export const columnList = [ sortable: true, head: false, }, + { - prop: 'waybillMall', - label: '运单商场', - type: 2, + prop: 'workOrderStatusNameS', //workOrderStatus + label: '工单状态', + type: 3, values: '', width: '150', checkarr: [], @@ -119,9 +153,9 @@ export const columnList = [ head: false, }, { - prop: 'workOrderStatusNameS', //workOrderStatus - label: '工单状态', - type: 3, + prop: 'processedBy', + label: '工单处理方', + type: 1, values: '', width: '150', checkarr: [], @@ -130,9 +164,9 @@ export const columnList = [ head: false, }, { - prop: 'brandName', - label: '品牌', - type: 2, + prop: 'a', + label: '责任方', + type: 1, values: '', width: '150', checkarr: [], @@ -141,9 +175,9 @@ export const columnList = [ head: false, }, { - prop: 'customerServiceName', - label: '归属客服名称', - type: 2, + prop: 'createTime', + label: '工单创建时间', + type: 1, values: '', width: '150', checkarr: [], @@ -152,8 +186,108 @@ export const columnList = [ head: false, }, { - prop: 'totalAmount', - label: '赔款金额', + prop: 'a', + label: '工单最晚处理时间', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '工单最新处理时间', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '处理结果', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '处理结果—理赔金额', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '营业部处理客服', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '总部处理客服', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + + { + prop: 'overTime', + label: '完结时间', //审核时间 + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '是否申诉', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '申诉状态', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'processNumber', + label: '钉钉号', type: 1, values: '', width: '150', @@ -173,6 +307,40 @@ export const columnList = [ sortable: true, head: false, }, + { + prop: 'entryTime', + label: '入账月份', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'customerServiceName', + label: '归属客服名称', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'totalAmount', + label: '赔款金额', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { prop: 'operator', label: '操作人', @@ -266,8 +434,8 @@ export const columnList = [ }, { - prop: 'overTime', - label: '完结时间', + prop: 'auditTime', + label: '审核时间', //审核时间 type: 1, values: '', width: '150', @@ -298,17 +466,7 @@ export const columnList = [ // sortable: true, // head: false, // }, - { - prop: 'processNumber', - label: '钉钉流程号', - type: 1, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, + { prop: 'reviewedBy', label: '审核人', @@ -320,28 +478,7 @@ export const columnList = [ sortable: true, head: false, }, - { - prop: 'auditTime', - label: '审核时间', - type: 1, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, - { - prop: 'createTime', - label: '录入时间', - type: 1, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, + { prop: 'ceator', label: '创建人', @@ -354,17 +491,17 @@ export const columnList = [ head: false, }, - { - prop: 'remarks', - label: '备注', - type: 1, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, + // { + // prop: 'remarks', + // label: '备注', + // type: 1, + // values: '', + // width: '150', + // checkarr: [], + // fixed: false, + // sortable: true, + // head: false, + // }, { prop: 'createUserName', @@ -1641,7 +1778,7 @@ export const columnList4 = [ fixed: false, sortable: true, head: false, - isshowSummary: true,//开启统计 + isshowSummary: true, //开启统计 }, // { @@ -1656,7 +1793,6 @@ export const columnList4 = [ // head: false, // }, - { prop: 'createUserName', label: '操作', @@ -1709,6 +1845,18 @@ export const columnList2 = [ sortable: true, head: false, }, + { + prop: 'a', //discoveryNode + label: '工单创建仓', + type: 1, + values: '', + width: '140', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { prop: 'workOrderNumber', label: '异常工单号', @@ -1720,17 +1868,7 @@ export const columnList2 = [ sortable: true, head: false, }, - // { - // prop: 'packageCode', - // label: '包条码', - // type: 2, - // values: '', - // width: '150', - // checkarr: [], - // fixed: false, - // sortable: true, - // head: false, - // }, + { prop: 'waybillNumber', label: '运单号', @@ -1753,9 +1891,9 @@ export const columnList2 = [ sortable: true, head: false, }, - { - prop: 'first', - label: '一级品', + { + prop: 'packageCode', + label: '包条码', type: 2, values: '', width: '150', @@ -1765,8 +1903,8 @@ export const columnList2 = [ head: false, }, { - prop: 'secondary', - label: '二级品', + prop: 'brandName', + label: '品牌', type: 2, values: '', width: '150', @@ -1786,6 +1924,29 @@ export const columnList2 = [ sortable: true, head: false, }, + { + prop: 'first', + label: '一级品', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'secondary', + label: '二级品', + type: 2, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { prop: 'workOrderStatusNameS', //workOrderStatus label: '工单状态', @@ -1798,9 +1959,142 @@ export const columnList2 = [ head: false, }, { - prop: 'brandName', - label: '品牌', - type: 2, + prop: 'processedBy', + label: '工单处理方', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '责任方', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'createTime', + label: '工单创建时间', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'createTime', + label: '工单提交时间', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'resultTypes', + label: '处理结果', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + + { + prop: 'totalAmountNum', + label: '处理结果—理赔金额', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '营业部处理客服', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '总部处理客服', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '内部责任方', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '责任人', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '责任占比', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'a', + label: '最新回复内容', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'investigationProcess', + label: '调查经过', + type: 1, values: '', width: '150', checkarr: [], @@ -1841,17 +2135,17 @@ export const columnList2 = [ // sortable: true, // head: false, // }, - { - prop: 'operator', - label: '操作人', - type: 2, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, + // { + // prop: 'operator', + // label: '操作人', + // type: 2, + // values: '', + // width: '150', + // checkarr: [], + // fixed: false, + // sortable: true, + // head: false, + // }, { prop: 'deliverGoodsTime', label: '送货时间', @@ -1944,17 +2238,7 @@ export const columnList2 = [ // sortable: true, // head: false, // }, - { - prop: 'investigationProcess', - label: '调查经过', - type: 1, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, + // { // prop: 'personResponsible', // label: '责任人(库内作业环节)', @@ -1999,29 +2283,18 @@ export const columnList2 = [ // sortable: true, // head: false, // }, - { - prop: 'createTime', - label: '录入时间', - type: 1, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, - { - prop: 'remarks', - label: '备注', - type: 1, - values: '', - width: '150', - checkarr: [], - fixed: false, - sortable: true, - head: false, - }, + // { + // prop: 'remarks', + // label: '备注', + // type: 1, + // values: '', + // width: '150', + // checkarr: [], + // fixed: false, + // sortable: true, + // head: false, + // }, { prop: 'createUserName', @@ -2521,7 +2794,7 @@ export const columnList9 = [ { prop: 'workOrderStatusNameS', //workOrderStatus label: '工单状态', - type: 3, + type: 1, values: '', width: '150', checkarr: [], diff --git a/src/views/aftersales/aftersalesWorkOrderAdd.vue b/src/views/aftersales/aftersalesWorkOrderAdd.vue index c3ae148f..4a220912 100644 --- a/src/views/aftersales/aftersalesWorkOrderAdd.vue +++ b/src/views/aftersales/aftersalesWorkOrderAdd.vue @@ -670,17 +670,17 @@ :headers="headers" :on-success="ImgSuccess" :before-upload="beforeAvatarUpload" + :on-preview="Imgpreview" drag multiple list-type="picture-card" > - - - - - + + + + @@ -1182,10 +1182,12 @@ const beforeAvatarUpload = async rawFile => { return res; }; // // 查看图片 -// const Imgpreview = value => { -// form.value.dialogVisible = true; -// form.value.url = 'https://www.keaitupian.cn/cjpic/frombd/1/253/4039753288/2920140411.jpg'; -// }; +const Imgpreview = value => { + console.log(value, '查看图片'); + + form.value.dialogVisible = true; + form.value.url = value.response.data.link; +}; // 图片上传成功回调函数 const ImgSuccess = (response, uploadFile) => { if (response.success === true) { diff --git a/src/views/aftersales/aftersalesWorkOrderInfo.vue b/src/views/aftersales/aftersalesWorkOrderInfo.vue index 597f0f61..9a4da684 100644 --- a/src/views/aftersales/aftersalesWorkOrderInfo.vue +++ b/src/views/aftersales/aftersalesWorkOrderInfo.vue @@ -41,6 +41,13 @@ clearable /> + + + @@ -2857,7 +2864,7 @@ const ResultDetermination = () => { display: flex; flex-direction: row; align-items: center; - width: auto; + width: 24%; } } diff --git a/src/views/aftersales/aftersalesWorkOrderTemp.vue b/src/views/aftersales/aftersalesWorkOrderTemp.vue index 2a50a783..bf421165 100644 --- a/src/views/aftersales/aftersalesWorkOrderTemp.vue +++ b/src/views/aftersales/aftersalesWorkOrderTemp.vue @@ -53,7 +53,11 @@ 默认指派 - 结果批量打回 + + + + + + + + + + + + + + + @@ -350,6 +401,18 @@ const workOrderStatus = ref(30); //工单状态 const PageLoading = ref(false); //页面loading const warehouseData = ref([]); //仓库信息 const UserInfo = ref({}); //登陆人信息 +const batchReturnForm = ref(null); +const BatchReturn = ref({ + //批量打回弹窗 + dialogReturn: false, + // 批量打回loading, + repulseloading: false, + BatchFrom: {}, + rules: { + txt: [{ required: true, message: '请输入打回原因', trigger: 'blur' }], + businessDepartment: [{ required: true, message: '请选择至少一个营业部', trigger: 'change' }], + }, +}); const appeal = ref({ dialogappeal: false, //工单申诉弹窗 AppealeditorState: false, //申诉是否为编辑状态(默认否) @@ -561,7 +624,7 @@ const ButtonPermissions = computed(() => { assignment: false, //工单指派 applyArbitration: false, //客服介入 DingTalkNumber: false, //钉钉号填 - batchFinish: UserPermissions.value != Useridentity.Warehouse_customer_service, //批量完结 + batchFinish: false, //批量完结 Batchdetermination: false, //批量确定 ManagerConfirmed: false, //处理完毕下面的客服经理批量确定 ArbitrationDetermination: false, //批量完结确定 @@ -856,7 +919,8 @@ const timesc = (index, row) => { }; /** 表格表头下拉框选择 */ -const selectsc = (index, row) => { +const selectsc = async(index, row) => { + console.log(index, row); let _Obj = MatchCurrentMenu(); //匹配出当前菜单 _Obj.request = true; //更新请求状态 _Obj.query = details.query; @@ -1007,7 +1071,7 @@ const Roleverification = () => { }; if (UserPermissions.value) { updateTabState('8', UserPermissions.value == Useridentity.Warehouse_customer_service); - updateTabState('9', UserPermissions.value == Useridentity.Headquarters_Manager); + updateTabState('9', UserPermissions.value !== Useridentity.Warehouse_customer_service); } else { // 匹配不到角色时,默认为关闭状态(总部经理的审核菜单) updateTabState('9', false); @@ -1032,7 +1096,17 @@ const GetWarehouse = () => { }); }); }; - +// 处理角色下拉选择状态码 +const ProcessingStatusCode = row => { + // 全部筛选 + console.log(row); + if (UserPermissions.value == Useridentity.Headquarters_Manager) { + // 如果是总部客服经理待审核状态改成500 + row.checkarr.find(item => item.value == '40').value = '500'; + } else { + row.checkarr.find(item => item.value == '40').value = '40'; + } +}; /** *页面初始化函数,包含字典,等必要请求 */ @@ -1141,8 +1215,8 @@ const Processingworkorderstatus = value => { UserPermissions.value === Useridentity.Warehouse_customer_service ? 1000 : null; break; case 1: // 处理中 - workOrderStatus.value = - UserPermissions.value === Useridentity.Warehouse_customer_service ? 20 : 40; + workOrderStatus.value = 20; + // UserPermissions.value === Useridentity.Warehouse_customer_service ? 20 : 40; break; case 2: // 处理完毕 workOrderStatus.value = 30; @@ -1158,7 +1232,7 @@ const Processingworkorderstatus = value => { break; case 9: // 待审核 workOrderStatus.value = - UserPermissions.value === Useridentity.Headquarters_Manager ? 500 : null; + UserPermissions.value === Useridentity.Headquarters_Manager ? 500 : 40; break; default: workOrderStatus.value = null; @@ -1892,6 +1966,72 @@ const ResultConfirmed = async row => { } finally { } }; +/** + * @description: 批量处理结果(打回) + * @return {void} 无返回值 + */ +const BatchReturnResults = () => { + if (!details.selectionList.length) { + ElMessage({ + message: '请勾选要处理的数据', + type: 'warning', + }); + return; + } + BatchReturn.value.dialogReturn = true; //展开弹窗 +}; +const ConfirmReturn = async () => { + const validateAndProcessReturn = async () => { + try { + const selectedObjs = warehouseData.value.filter(obj => + BatchReturn.value.BatchFrom.businessDepartment.includes(obj.value) + ); + + const businessId = selectedObjs.map(item => item.value).join(','); + const businessName = selectedObjs.map(item => item.label).join(','); + const processorList = selectedObjs.map(item => ({ id: item.value, name: item.label })); + const workOrderIds = details.selectionList.map(item => item.id); + + const data = { + businessId, + businessName, + processorList, + reasonReturn: BatchReturn.value.BatchFrom.txt, + workOrderIds, + typesOf: '1', + }; + + console.log(data, '处理好的值'); + + const _res = await $_batchReturn(data); + const { code, msg } = _res.data; + + if (code === 200) { + ElMessage.success(msg); + BatchReturn.value.dialogReturn = false; //关闭弹窗 + const _Obj = MatchCurrentMenu(); + _Obj.request = true; + PublicDataRequest(TabPermissions.value); + } + } catch (e) { + console.error(e); + } + }; + + batchReturnForm.value.validate(async valid => { + if (valid) { + ElMessageBox.confirm('是否确认批量打回营业部?', '提示', { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + }) + .then(async () => { + await validateAndProcessReturn(); + }) + .catch(() => {}); + } + }); +}; diff --git a/src/views/aftersales/aftersalesWorkOrdermodify.vue b/src/views/aftersales/aftersalesWorkOrdermodify.vue index 7b1584e1..c2cf16c6 100644 --- a/src/views/aftersales/aftersalesWorkOrdermodify.vue +++ b/src/views/aftersales/aftersalesWorkOrdermodify.vue @@ -533,7 +533,7 @@