qb 4 months ago
parent
commit
f7a9e5f39f
  1. 16
      src/components/Tableexportcomponent/Tableexportcomponent.vue
  2. 537
      src/option/aftersales/vueTvemp.js
  3. 20
      src/views/aftersales/aftersalesWorkOrderAdd.vue
  4. 9
      src/views/aftersales/aftersalesWorkOrderInfo.vue
  5. 171
      src/views/aftersales/aftersalesWorkOrderTemp.vue
  6. 2
      src/views/aftersales/aftersalesWorkOrdermodify.vue

16
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;
};

537
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: [],

20
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"
>
<el-icon><Plus /></el-icon>
<!-- 图片预览 -->
<el-dialog v-model="form.dialogVisible">
<img w-full :src="form.url" />
</el-dialog>
</el-upload>
<!-- 图片预览 -->
<el-dialog v-model="form.dialogVisible">
<img w-full :src="form.url" />
</el-dialog>
</el-tab-pane>
</el-form-item>
</el-tabs>
@ -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) {

9
src/views/aftersales/aftersalesWorkOrderInfo.vue

@ -41,6 +41,13 @@
clearable
/>
</el-form-item>
<el-form-item label="创建时间" class="el_inputTop el_Workordernumber">
<el-input
v-model="Indexform.createTime"
disabled
clearable
/>
</el-form-item>
</div>
<el-tabs type="border-card" class="PackageInformation">
<el-tab-pane label="包件信息">
@ -2857,7 +2864,7 @@ const ResultDetermination = () => {
display: flex;
flex-direction: row;
align-items: center;
width: auto;
width: 24%;
}
}

171
src/views/aftersales/aftersalesWorkOrderTemp.vue

@ -53,7 +53,11 @@
<el-button type="primary" icon="Avatar" v-if="ButtonPermissions.defaultassignments"
>默认指派</el-button
>
<el-button type="primary" icon="CloseBold" v-if="ButtonPermissions.batchReject"
<el-button
type="primary"
icon="CloseBold"
v-if="ButtonPermissions.batchReject"
@click="BatchReturnResults"
>结果批量打回</el-button
>
<el-button type="primary" icon="FolderChecked" v-if="ButtonPermissions.ManagerConfirmed"
@ -238,6 +242,53 @@
</div>
</el-form>
</el-dialog>
<!-- 处理结果批量打回弹窗 -->
<el-dialog v-model="BatchReturn.dialogReturn" title="批量打回" width="40%" class="plAllret">
<el-form
v-loading="BatchReturn.repulseloading"
element-loading-text="正在打回中..."
label-position="top"
label-width="100px"
:model="BatchReturn.BatchFrom"
:rules="BatchReturn.rules"
ref="batchReturnForm"
>
<el-form-item label="打回原因" prop="txt">
<el-input
v-model="BatchReturn.BatchFrom.txt"
type="textarea"
:rows="4"
placeholder="请输入打回原因"
/>
</el-form-item>
<el-form-item label="流转营业部" prop="businessDepartment">
<el-select
v-model="BatchReturn.BatchFrom.businessDepartment"
multiple
filterable
default-first-option
:reserve-keyword="false"
placeholder="请选择要打回的营业部"
>
<el-option
v-for="item in warehouseData"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="BatchReturn.BatchReturn.dialogReturn = false">取消</el-button>
<el-button type="primary" @click="ConfirmReturn()" :disabled="BatchReturn.repulseloading">
提交
</el-button>
</span>
</template>
</el-dialog>
</basic-container>
<!-- 列表配置显示 -->
@ -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(() => {});
}
});
};
</script>
<style scoped lang="scss">
@ -1944,16 +2084,17 @@ const ResultConfirmed = async row => {
.el-form-item__label {
position: relative;
}
// .el-form-item__label::after {
// position: absolute;
// top: 0;
// left: -8px;
// content: '*';
// width: 10px;
// }
.el-form-item__content {
width: 100% !important;
}
}
}
.plAllret {
:deep(.el-select) {
width: 100%;
}
.el-select {
width: 100%;
}
}
</style>

2
src/views/aftersales/aftersalesWorkOrdermodify.vue

@ -533,7 +533,7 @@
</el-form-item>
<el-button
v-if="!index"
v-if="!index && $route.query.typesOf !=0"
type="primary"
class="el_addPackage"
@click="AddResponsible"

Loading…
Cancel
Save