|
|
@ -112,19 +112,31 @@ |
|
|
|
@click="WorkOrderAssignment" |
|
|
|
@click="WorkOrderAssignment" |
|
|
|
>工单指派</el-button |
|
|
|
>工单指派</el-button |
|
|
|
> |
|
|
|
> |
|
|
|
<el-button type="primary" icon="User" v-if="ButtonPermissions.applyArbitration" |
|
|
|
<el-button |
|
|
|
|
|
|
|
type="primary" |
|
|
|
|
|
|
|
icon="User" |
|
|
|
|
|
|
|
v-if="ButtonPermissions.applyArbitration" |
|
|
|
|
|
|
|
@click="CustomerServiceIntervention" |
|
|
|
>客服介入</el-button |
|
|
|
>客服介入</el-button |
|
|
|
> |
|
|
|
> |
|
|
|
<el-button type="primary" icon="EditPen" v-if="ButtonPermissions.DingTalkNumber" |
|
|
|
<el-button |
|
|
|
|
|
|
|
type="primary" |
|
|
|
|
|
|
|
icon="EditPen" |
|
|
|
|
|
|
|
v-if="ButtonPermissions.DingTalkNumber" |
|
|
|
|
|
|
|
@click="DingTalk" |
|
|
|
>钉钉号填写</el-button |
|
|
|
>钉钉号填写</el-button |
|
|
|
> |
|
|
|
> |
|
|
|
<el-button type="primary" icon="Stamp" v-if="ButtonPermissions.batchFinish" |
|
|
|
<!-- <el-button type="primary" icon="Stamp" v-if="ButtonPermissions.batchFinish" |
|
|
|
>批量完结</el-button |
|
|
|
>批量完结</el-button |
|
|
|
> |
|
|
|
> --> |
|
|
|
<el-button type="primary" icon="Stamp" v-if="ButtonPermissions.ArbitrationDetermination" |
|
|
|
<el-button type="primary" icon="Stamp" v-if="ButtonPermissions.ArbitrationDetermination" |
|
|
|
>批量完结审核</el-button |
|
|
|
>批量完结审核</el-button |
|
|
|
> |
|
|
|
> |
|
|
|
<el-button type="primary" icon="Coin" v-if="ButtonPermissions.Financial_accounting" |
|
|
|
<el-button |
|
|
|
|
|
|
|
type="primary" |
|
|
|
|
|
|
|
icon="Coin" |
|
|
|
|
|
|
|
v-if="ButtonPermissions.Financial_accounting" |
|
|
|
|
|
|
|
@click="Financialfillingbtn" |
|
|
|
>财务入账</el-button |
|
|
|
>财务入账</el-button |
|
|
|
> |
|
|
|
> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -363,6 +375,44 @@ |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 客服介入 --> |
|
|
|
|
|
|
|
<el-dialog |
|
|
|
|
|
|
|
v-model="CustomerServiceForm.loadingCustomer" |
|
|
|
|
|
|
|
:close-on-click-modal="false" |
|
|
|
|
|
|
|
title="客服介入" |
|
|
|
|
|
|
|
width="35%" |
|
|
|
|
|
|
|
class="el_Customer" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<el-form |
|
|
|
|
|
|
|
:model="CustomerServiceForm" |
|
|
|
|
|
|
|
v-loading="CustomerServiceForm.dialog" |
|
|
|
|
|
|
|
element-loading-text="正在处理中..." |
|
|
|
|
|
|
|
label-position="top" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<el-form-item label="介入原因"> |
|
|
|
|
|
|
|
<el-input |
|
|
|
|
|
|
|
v-model="CustomerServiceForm.reasonRemarks" |
|
|
|
|
|
|
|
:autosize="{ minRows: 6, maxRows: 6 }" |
|
|
|
|
|
|
|
type="textarea" |
|
|
|
|
|
|
|
placeholder="请输入介入原因" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
</el-form> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<template #footer> |
|
|
|
|
|
|
|
<span class="dialog-footer"> |
|
|
|
|
|
|
|
<el-button @click="CustomerServiceForm.loadingCustomer = false">关闭</el-button> |
|
|
|
|
|
|
|
<el-button |
|
|
|
|
|
|
|
type="primary" |
|
|
|
|
|
|
|
@click="InterventionSubmission" |
|
|
|
|
|
|
|
:disabled="CustomerServiceForm.dialog" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
提交 |
|
|
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
</span> |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 搜索弹窗 --> |
|
|
|
<!-- 搜索弹窗 --> |
|
|
|
<div class="Searchboxpop-upwindow"> |
|
|
|
<div class="Searchboxpop-upwindow"> |
|
|
|
<el-dialog |
|
|
|
<el-dialog |
|
|
@ -429,7 +479,7 @@ |
|
|
|
content="从服务器导出数据,数据量大时可能会导致卡顿" |
|
|
|
content="从服务器导出数据,数据量大时可能会导致卡顿" |
|
|
|
placement="top-start" |
|
|
|
placement="top-start" |
|
|
|
> |
|
|
|
> |
|
|
|
<el-button type="primary" @click="NetworkExport"> 网络导出 </el-button> |
|
|
|
<el-button class="el_title_a" type="primary" @click="NetworkExport"> 全部导出 </el-button> |
|
|
|
</el-tooltip> |
|
|
|
</el-tooltip> |
|
|
|
<el-tooltip |
|
|
|
<el-tooltip |
|
|
|
class="box-item" |
|
|
|
class="box-item" |
|
|
@ -437,9 +487,79 @@ |
|
|
|
content="从本地导出,导出当前页面支持自【定义导出字段】和【自定义表名】" |
|
|
|
content="从本地导出,导出当前页面支持自【定义导出字段】和【自定义表名】" |
|
|
|
placement="top-end" |
|
|
|
placement="top-end" |
|
|
|
> |
|
|
|
> |
|
|
|
<el-button type="primary" @click="LocalExport"> 本地导出 </el-button> |
|
|
|
<el-button class="el_title_b" type="primary" @click="LocalExport"> 本地导出 </el-button> |
|
|
|
</el-tooltip> |
|
|
|
</el-tooltip> |
|
|
|
</el-dialog> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 钉钉号填写 --> |
|
|
|
|
|
|
|
<el-dialog v-model="DingTalkfilling.dialogDingTalk" title="钉钉号填写" width="30%"> |
|
|
|
|
|
|
|
<div |
|
|
|
|
|
|
|
class="el_DingTalk" |
|
|
|
|
|
|
|
v-loading="DingTalkfilling.loading" |
|
|
|
|
|
|
|
element-loading-text="Loading..." |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<el-form :model="DingTalkfilling" label-width="120px"> |
|
|
|
|
|
|
|
<el-form-item label="钉钉流程号"> |
|
|
|
|
|
|
|
<el-input v-model="DingTalkfilling.processNumber" placeholder="请填写钉钉号" /> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="审核人"> |
|
|
|
|
|
|
|
<el-input v-model="DingTalkfilling.reviewedBy" placeholder="请填写审核人" /> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="审核时间"> |
|
|
|
|
|
|
|
<el-date-picker |
|
|
|
|
|
|
|
v-model="DingTalkfilling.auditTime" |
|
|
|
|
|
|
|
type="datetime" |
|
|
|
|
|
|
|
format="YYYY-MM-DD" |
|
|
|
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss" |
|
|
|
|
|
|
|
placeholder="请选择审核时间" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
</el-form> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<template #footer> |
|
|
|
|
|
|
|
<span class="dialog-footer"> |
|
|
|
|
|
|
|
<el-button @click="DingTalkfilling.dialogDingTalk = false">关闭</el-button> |
|
|
|
|
|
|
|
<el-button type="primary" @click="DingTalkSubmit" :disabled="DingTalkfilling.loading"> |
|
|
|
|
|
|
|
确认 |
|
|
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
</span> |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
<!-- 财务入账弹窗 --> |
|
|
|
|
|
|
|
<el-dialog v-model="FinancialFrom.loadingFinancial" title="财务入账" width="30%"> |
|
|
|
|
|
|
|
<div |
|
|
|
|
|
|
|
class="el_DingTalk" |
|
|
|
|
|
|
|
v-loading="FinancialFrom.loading" |
|
|
|
|
|
|
|
element-loading-text="正在处理中..." |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<el-form :model="FinancialFrom" label-width="120px"> |
|
|
|
|
|
|
|
<el-form-item label="操作人"> |
|
|
|
|
|
|
|
<el-input v-model="FinancialFrom.operator" placeholder="请填写操作人" /> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="财务入账时间"> |
|
|
|
|
|
|
|
<el-date-picker |
|
|
|
|
|
|
|
v-model="FinancialFrom.entryTime" |
|
|
|
|
|
|
|
type="datetime" |
|
|
|
|
|
|
|
format="YYYY-MM-DD" |
|
|
|
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss" |
|
|
|
|
|
|
|
placeholder="请选择财务入账时间" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
</el-form> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<template #footer> |
|
|
|
|
|
|
|
<span class="dialog-footer"> |
|
|
|
|
|
|
|
<el-button @click="FinancialFrom.loadingFinancial = false">取消</el-button> |
|
|
|
|
|
|
|
<el-button |
|
|
|
|
|
|
|
type="primary" |
|
|
|
|
|
|
|
@click="FinancialfillingSubmit" |
|
|
|
|
|
|
|
:disabled="FinancialFrom.loading" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
确认 |
|
|
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
</span> |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-dialog> |
|
|
|
</basic-container> |
|
|
|
</basic-container> |
|
|
|
<!-- 列表配置显示 --> |
|
|
|
<!-- 列表配置显示 --> |
|
|
|
<template v-for="columnList in columnListNames" :key="columnList"> |
|
|
|
<template v-for="columnList in columnListNames" :key="columnList"> |
|
|
@ -537,6 +657,7 @@ import { |
|
|
|
MallassignmentColumnList, |
|
|
|
MallassignmentColumnList, |
|
|
|
customerserviceColumnList, |
|
|
|
customerserviceColumnList, |
|
|
|
} from '@/option/aftersales/vueTvemp.js'; |
|
|
|
} from '@/option/aftersales/vueTvemp.js'; |
|
|
|
|
|
|
|
import { objectKeys } from '@antfu/utils'; |
|
|
|
const Tableexportcomponent = defineAsyncComponent(() => |
|
|
|
const Tableexportcomponent = defineAsyncComponent(() => |
|
|
|
import('@/components/Tableexportcomponent/Tableexportcomponent.vue') |
|
|
|
import('@/components/Tableexportcomponent/Tableexportcomponent.vue') |
|
|
|
); |
|
|
|
); |
|
|
@ -582,6 +703,21 @@ const ExportObjects = ref({ |
|
|
|
tcTableexport: false, //本地导出 |
|
|
|
tcTableexport: false, //本地导出 |
|
|
|
ExportSelection: false, //导出选择弹窗 |
|
|
|
ExportSelection: false, //导出选择弹窗 |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
// 客服介入 |
|
|
|
|
|
|
|
const CustomerServiceForm = ref({ |
|
|
|
|
|
|
|
loadingCustomer: false, |
|
|
|
|
|
|
|
dialog: false, |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
// 钉钉号 |
|
|
|
|
|
|
|
const DingTalkfilling = ref({ |
|
|
|
|
|
|
|
dialogDingTalk: false, |
|
|
|
|
|
|
|
loading: false, |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
// 财务入账 |
|
|
|
|
|
|
|
const FinancialFrom = ref({ |
|
|
|
|
|
|
|
loadingFinancial: false, |
|
|
|
|
|
|
|
loading: false, |
|
|
|
|
|
|
|
}); |
|
|
|
// 多行搜索 |
|
|
|
// 多行搜索 |
|
|
|
const Searchboxpop = ref({ |
|
|
|
const Searchboxpop = ref({ |
|
|
|
SearchboxpopUpwindowtitle: '', //标题 |
|
|
|
SearchboxpopUpwindowtitle: '', //标题 |
|
|
@ -787,7 +923,9 @@ const ButtonPermissions = computed(() => { |
|
|
|
return { |
|
|
|
return { |
|
|
|
add: false, //新增按钮 |
|
|
|
add: false, //新增按钮 |
|
|
|
batchReject: false, //批量打回 |
|
|
|
batchReject: false, //批量打回 |
|
|
|
assignment: UserPermissions.value != Useridentity.Warehouse_customer_service, //工单指派 |
|
|
|
assignment: |
|
|
|
|
|
|
|
UserPermissions.value == Useridentity.Headquarters_Manager || |
|
|
|
|
|
|
|
UserPermissions.value == Useridentity.Headquarters_customer_service, //工单指派 |
|
|
|
applyArbitration: UserPermissions.value == Useridentity.Warehouse_customer_service, //客服介入 |
|
|
|
applyArbitration: UserPermissions.value == Useridentity.Warehouse_customer_service, //客服介入 |
|
|
|
DingTalkNumber: false, //钉钉号填写 |
|
|
|
DingTalkNumber: false, //钉钉号填写 |
|
|
|
batchFinish: false, //批量完结 |
|
|
|
batchFinish: false, //批量完结 |
|
|
@ -804,7 +942,9 @@ const ButtonPermissions = computed(() => { |
|
|
|
return { |
|
|
|
return { |
|
|
|
add: false, //新增按钮 |
|
|
|
add: false, //新增按钮 |
|
|
|
batchReject: UserPermissions.value == Useridentity.Headquarters_customer_service, //批量打回 |
|
|
|
batchReject: UserPermissions.value == Useridentity.Headquarters_customer_service, //批量打回 |
|
|
|
assignment: UserPermissions.value != Useridentity.Warehouse_customer_service, //工单指派 |
|
|
|
assignment: |
|
|
|
|
|
|
|
UserPermissions.value == Useridentity.Headquarters_Manager || |
|
|
|
|
|
|
|
UserPermissions.value == Useridentity.Headquarters_customer_service, //工单指派 |
|
|
|
applyArbitration: false, //客服介入 |
|
|
|
applyArbitration: false, //客服介入 |
|
|
|
DingTalkNumber: false, //钉钉号填 |
|
|
|
DingTalkNumber: false, //钉钉号填 |
|
|
|
batchFinish: false, //批量完结 |
|
|
|
batchFinish: false, //批量完结 |
|
|
@ -861,7 +1001,9 @@ const ButtonPermissions = computed(() => { |
|
|
|
DingTalkNumber: false, //钉钉号填写 |
|
|
|
DingTalkNumber: false, //钉钉号填写 |
|
|
|
Batchdetermination: false, //批量确定 |
|
|
|
Batchdetermination: false, //批量确定 |
|
|
|
ManagerConfirmed: false, //处理完毕下面的客服经理批量确定 |
|
|
|
ManagerConfirmed: false, //处理完毕下面的客服经理批量确定 |
|
|
|
ArbitrationDetermination: UserPermissions.value != Useridentity.Warehouse_customer_service, //批量总裁完结确定 |
|
|
|
ArbitrationDetermination: |
|
|
|
|
|
|
|
UserPermissions.value == Useridentity.Headquarters_Manager || |
|
|
|
|
|
|
|
UserPermissions.value == Useridentity.Headquarters_customer_service, //批量总裁完结确定 |
|
|
|
Financial_accounting: false, //财务入账 |
|
|
|
Financial_accounting: false, //财务入账 |
|
|
|
Result_review: false, //结果审核(总部审核处理结果) |
|
|
|
Result_review: false, //结果审核(总部审核处理结果) |
|
|
|
defaultassignments: false, //默认指派 |
|
|
|
defaultassignments: false, //默认指派 |
|
|
@ -875,11 +1017,15 @@ const ButtonPermissions = computed(() => { |
|
|
|
assignment: false, //工单指派 |
|
|
|
assignment: false, //工单指派 |
|
|
|
applyArbitration: false, //客服介入 |
|
|
|
applyArbitration: false, //客服介入 |
|
|
|
batchFinish: false, //批量完结 |
|
|
|
batchFinish: false, //批量完结 |
|
|
|
DingTalkNumber: UserPermissions.value != Useridentity.Warehouse_customer_service, //钉钉号填写, //钉钉号填写 |
|
|
|
DingTalkNumber: |
|
|
|
|
|
|
|
UserPermissions.value == Useridentity.Headquarters_customer_service || |
|
|
|
|
|
|
|
UserPermissions.value == Useridentity.Headquarters_Manager, //钉钉号填写, //钉钉号填写 |
|
|
|
Batchdetermination: false, //批量确定 |
|
|
|
Batchdetermination: false, //批量确定 |
|
|
|
ManagerConfirmed: false, //处理完毕下面的客服经理批量确定 |
|
|
|
ManagerConfirmed: false, //处理完毕下面的客服经理批量确定 |
|
|
|
ArbitrationDetermination: false, //批量完结确定 |
|
|
|
ArbitrationDetermination: false, //批量完结确定 |
|
|
|
Financial_accounting: UserPermissions.value != Useridentity.Warehouse_customer_service, //财务入账 |
|
|
|
Financial_accounting: |
|
|
|
|
|
|
|
UserPermissions.value == Useridentity.Headquarters_Manager || |
|
|
|
|
|
|
|
UserPermissions.value == Useridentity.Headquarters_customer_service, //财务入账 |
|
|
|
defaultassignments: false, //默认指派 |
|
|
|
defaultassignments: false, //默认指派 |
|
|
|
Result_review: false, //结果审核(总部审核处理结果) |
|
|
|
Result_review: false, //结果审核(总部审核处理结果) |
|
|
|
export_Report: true, //导出报表 |
|
|
|
export_Report: true, //导出报表 |
|
|
@ -1132,6 +1278,8 @@ const selectionChange = list => { |
|
|
|
}; |
|
|
|
}; |
|
|
|
// 网页顶部搜索按钮 |
|
|
|
// 网页顶部搜索按钮 |
|
|
|
const searchChange = async () => { |
|
|
|
const searchChange = async () => { |
|
|
|
|
|
|
|
let _Obj = MatchCurrentMenu(); //匹配出当前菜单 |
|
|
|
|
|
|
|
_Obj.currentPage = 1; |
|
|
|
await ProcessSearch(); |
|
|
|
await ProcessSearch(); |
|
|
|
updateMenuAndData(); //获取最新数据 |
|
|
|
updateMenuAndData(); //获取最新数据 |
|
|
|
}; |
|
|
|
}; |
|
|
@ -1143,6 +1291,7 @@ const searchChangeS = () => { |
|
|
|
// 重置表格搜索 |
|
|
|
// 重置表格搜索 |
|
|
|
const ResetTableSearch = async () => { |
|
|
|
const ResetTableSearch = async () => { |
|
|
|
let _Obj = MatchCurrentMenu(); |
|
|
|
let _Obj = MatchCurrentMenu(); |
|
|
|
|
|
|
|
_Obj.currentPage = 1; |
|
|
|
console.log(TabPermissions.value, '123123123'); |
|
|
|
console.log(TabPermissions.value, '123123123'); |
|
|
|
_Obj.request = true; |
|
|
|
_Obj.request = true; |
|
|
|
console.log(_Obj, 'Obj'); |
|
|
|
console.log(_Obj, 'Obj'); |
|
|
@ -1153,6 +1302,8 @@ const ResetTableSearch = async () => { |
|
|
|
//清空 |
|
|
|
//清空 |
|
|
|
const searchReset = () => { |
|
|
|
const searchReset = () => { |
|
|
|
TopQuery.value = {}; |
|
|
|
TopQuery.value = {}; |
|
|
|
|
|
|
|
let _Obj = MatchCurrentMenu(); |
|
|
|
|
|
|
|
_Obj.currentPage = 1; |
|
|
|
TabList.value.forEach(item => { |
|
|
|
TabList.value.forEach(item => { |
|
|
|
item.query = {}; |
|
|
|
item.query = {}; |
|
|
|
}); |
|
|
|
}); |
|
|
@ -1624,6 +1775,27 @@ const updateMenuAndData = () => { |
|
|
|
} |
|
|
|
} |
|
|
|
PublicDataRequest(TabPermissions.value); // 请求数据 |
|
|
|
PublicDataRequest(TabPermissions.value); // 请求数据 |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @description: 处理空白数据 |
|
|
|
|
|
|
|
* @param {object} data - 包含记录的数据对象 |
|
|
|
|
|
|
|
* @returns {array} - 处理后的记录数组 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
const replaceNullWithSlash = data => { |
|
|
|
|
|
|
|
const newRecords = []; |
|
|
|
|
|
|
|
const records = data.records; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (let i = 0; i < records.length; i++) { |
|
|
|
|
|
|
|
const newRecord = { ...records[i] }; |
|
|
|
|
|
|
|
for (const key in newRecord) { |
|
|
|
|
|
|
|
if (newRecord[key] === null || newRecord[key] === '') { |
|
|
|
|
|
|
|
newRecord[key] = '/'; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
newRecords.push(newRecord); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return newRecords; |
|
|
|
|
|
|
|
}; |
|
|
|
/** |
|
|
|
/** |
|
|
|
* @description 通用函数用于处理数据请求(包含待回复、理赔金额未出、申诉、超时未处理) |
|
|
|
* @description 通用函数用于处理数据请求(包含待回复、理赔金额未出、申诉、超时未处理) |
|
|
|
* @param {Function} fetchFunction - 用于执行具体数据请求的函数 |
|
|
|
* @param {Function} fetchFunction - 用于执行具体数据请求的函数 |
|
|
@ -1645,8 +1817,8 @@ const fetchData = async (fetchFunction, reset) => { |
|
|
|
if (code !== 200) { |
|
|
|
if (code !== 200) { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
DataAndStateProcessing(data); // 对数据和状态处理 |
|
|
|
DataAndStateProcessing(data); // 对数据和状态处理 |
|
|
|
|
|
|
|
details.data = replaceNullWithSlash(data); |
|
|
|
} catch (error) { |
|
|
|
} catch (error) { |
|
|
|
console.log(error); |
|
|
|
console.log(error); |
|
|
|
} |
|
|
|
} |
|
|
@ -1694,6 +1866,8 @@ const Publicaccessdata = async Reset => { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
DataAndStateProcessing(data); //对数据和状态处理 |
|
|
|
DataAndStateProcessing(data); //对数据和状态处理 |
|
|
|
|
|
|
|
details.data = replaceNullWithSlash(data); |
|
|
|
|
|
|
|
|
|
|
|
console.log(_res, '公共数据菜单=:' + TabPermissions.value); |
|
|
|
console.log(_res, '公共数据菜单=:' + TabPermissions.value); |
|
|
|
console.log(TabList.value, '公共菜单'); |
|
|
|
console.log(TabList.value, '公共菜单'); |
|
|
|
} catch (error) { |
|
|
|
} catch (error) { |
|
|
@ -1903,6 +2077,99 @@ const CancelWorkOrderAppeal = row => { |
|
|
|
}) |
|
|
|
}) |
|
|
|
.catch(() => {}); |
|
|
|
.catch(() => {}); |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @description: [钉钉号填写] - 选择数据后,点击钉钉号填写按钮,出现弹窗 |
|
|
|
|
|
|
|
* @return {void} |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
const DingTalk = () => { |
|
|
|
|
|
|
|
if (!details.selectionList.length) { |
|
|
|
|
|
|
|
ElMessage({ |
|
|
|
|
|
|
|
message: '请勾选数据', |
|
|
|
|
|
|
|
type: 'warning', |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 开启钉钉号填写弹窗 |
|
|
|
|
|
|
|
DingTalkfilling.value.dialogDingTalk = true; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @description: [钉钉号填写确认] |
|
|
|
|
|
|
|
* @return {void} |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
const DingTalkSubmit = async () => { |
|
|
|
|
|
|
|
const { processNumber, reviewedBy, auditTime } = DingTalkfilling.value; |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
// 启动加载 |
|
|
|
|
|
|
|
DingTalkfilling.value.loading = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 构建数据对象 |
|
|
|
|
|
|
|
const data = { |
|
|
|
|
|
|
|
processNumber, // 钉钉号 |
|
|
|
|
|
|
|
reviewedBy, // 审核人 |
|
|
|
|
|
|
|
auditTime, // 审核时间 |
|
|
|
|
|
|
|
assignList: details.selectionList.map(item => item.id), // ID列表 |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
let res = await $_updateWorkList(data); |
|
|
|
|
|
|
|
if (res.data.code == 200) { |
|
|
|
|
|
|
|
ElMessage({ |
|
|
|
|
|
|
|
message: res.data.msg, |
|
|
|
|
|
|
|
type: 'success', |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
// 关闭弹窗和加载 |
|
|
|
|
|
|
|
DingTalkfilling.value.dialogDingTalk = false; |
|
|
|
|
|
|
|
// 更新菜单数据 |
|
|
|
|
|
|
|
updateMenuAndData(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
|
|
console.log(error); |
|
|
|
|
|
|
|
} finally { |
|
|
|
|
|
|
|
DingTalkfilling.value.loading = false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @description: [财务入账] |
|
|
|
|
|
|
|
* @return {void} |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
const Financialfillingbtn = () => { |
|
|
|
|
|
|
|
if (!details.selectionList.length) { |
|
|
|
|
|
|
|
ElMessage({ |
|
|
|
|
|
|
|
message: '请勾选数据', |
|
|
|
|
|
|
|
type: 'warning', |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 开启钉钉号填写弹窗 |
|
|
|
|
|
|
|
FinancialFrom.value.loadingFinancial = true; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @description: [财务入账确定] |
|
|
|
|
|
|
|
* @return {void} |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
const FinancialfillingSubmit = async () => { |
|
|
|
|
|
|
|
const { operator, entryTime } = FinancialFrom.value; |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
FinancialFrom.value.dialog = true; //加载 |
|
|
|
|
|
|
|
const data = { |
|
|
|
|
|
|
|
operator, |
|
|
|
|
|
|
|
entryTime, |
|
|
|
|
|
|
|
ids: details.selectionList.map(item => item.id).join(','), |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
let res = await $_updateFinanceTime(data); |
|
|
|
|
|
|
|
if (res.data.code == 200) { |
|
|
|
|
|
|
|
ElMessage({ |
|
|
|
|
|
|
|
message: res.data.msg, |
|
|
|
|
|
|
|
type: 'success', |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
FinancialFrom.value.loadingFinancial = false; |
|
|
|
|
|
|
|
// 更新菜单数据 |
|
|
|
|
|
|
|
updateMenuAndData(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
|
|
} finally { |
|
|
|
|
|
|
|
FinancialFrom.value.loading = false; //关闭加载 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
/** |
|
|
|
/** |
|
|
|
* @description: [全部]常工单号,跳转到详情信息页面 |
|
|
|
* @description: [全部]常工单号,跳转到详情信息页面 |
|
|
|
* @param {Object} row - 当前行数据 |
|
|
|
* @param {Object} row - 当前行数据 |
|
|
@ -2302,6 +2569,60 @@ const WorkOrderAssignment = () => { |
|
|
|
assignFrom.value = { ...assignFrom.value, businessDepartment: '', dialogassign: true }; |
|
|
|
assignFrom.value = { ...assignFrom.value, businessDepartment: '', dialogassign: true }; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @description 客服介入 |
|
|
|
|
|
|
|
* @return {void} 无返回值 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
const CustomerServiceIntervention = () => { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!details.selectionList.length) { |
|
|
|
|
|
|
|
// 提示用户选择数据 |
|
|
|
|
|
|
|
ElMessage({ |
|
|
|
|
|
|
|
message: '请勾选要客服介入的数据', |
|
|
|
|
|
|
|
type: 'warning', |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
ElMessage({ |
|
|
|
|
|
|
|
message: '功能维护中...', |
|
|
|
|
|
|
|
type: 'warning', |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
CustomerServiceForm.value.loadingCustomer = true; |
|
|
|
|
|
|
|
CustomerServiceForm.value.reasonRemarks = ''; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @description 客服介入提交 |
|
|
|
|
|
|
|
* @return {void} 无返回值 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
const InterventionSubmission = async () => { |
|
|
|
|
|
|
|
CustomerServiceForm.value.loading = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
let data = { |
|
|
|
|
|
|
|
assignList: [], |
|
|
|
|
|
|
|
reasonRemarks: CustomerServiceForm.value.reasonRemarks, //客服介入原因 |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
data['assignList'] = details.selectionList.map(item => { |
|
|
|
|
|
|
|
return item.id; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
let res = await $_arbitrate(data); |
|
|
|
|
|
|
|
const { code, msg } = res.data; |
|
|
|
|
|
|
|
if (code == 200) { |
|
|
|
|
|
|
|
CustomerServiceForm.value.loadingCustomer = false; |
|
|
|
|
|
|
|
updateMenuAndData(); //获取最新数据 |
|
|
|
|
|
|
|
ElMessage({ |
|
|
|
|
|
|
|
message: msg, |
|
|
|
|
|
|
|
type: 'success', |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
|
|
console.log(error); |
|
|
|
|
|
|
|
} finally { |
|
|
|
|
|
|
|
CustomerServiceForm.value.loading = false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 处理中,待处理可申请 |
|
|
|
|
|
|
|
}; |
|
|
|
/** |
|
|
|
/** |
|
|
|
* 工单指派确定按钮 |
|
|
|
* 工单指派确定按钮 |
|
|
|
* 1.根据选择的客服ID,名称,和选择的工单ID,将其组装成一个data对象 |
|
|
|
* 1.根据选择的客服ID,名称,和选择的工单ID,将其组装成一个data对象 |
|
|
@ -2697,7 +3018,6 @@ const ProcessedExported = async dataID => { |
|
|
|
} |
|
|
|
} |
|
|
|
:deep(.plAllret) { |
|
|
|
:deep(.plAllret) { |
|
|
|
height: 30%; |
|
|
|
height: 30%; |
|
|
|
|
|
|
|
|
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
flex-direction: column; |
|
|
|
.el-select { |
|
|
|
.el-select { |
|
|
@ -2710,6 +3030,11 @@ const ProcessedExported = async dataID => { |
|
|
|
justify-content: flex-end; |
|
|
|
justify-content: flex-end; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
:deep(.el_Customer) { |
|
|
|
|
|
|
|
.el-form-item { |
|
|
|
|
|
|
|
flex-direction: column; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
:deep(.el-fr-d) { |
|
|
|
:deep(.el-fr-d) { |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
.el-form-item { |
|
|
|
.el-form-item { |
|
|
@ -2810,16 +3135,71 @@ const ProcessedExported = async dataID => { |
|
|
|
align-items: center; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
|
justify-content: center; |
|
|
|
flex-direction: column; |
|
|
|
flex-direction: column; |
|
|
|
|
|
|
|
.el_title_a, |
|
|
|
|
|
|
|
.el_title_b { |
|
|
|
|
|
|
|
position: relative; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.el_title_a::after { |
|
|
|
|
|
|
|
content: '导出全部数据【如果存在“ 勾选 ”数据则默认导出“ 勾选 ”数据】'; |
|
|
|
|
|
|
|
position: absolute; |
|
|
|
|
|
|
|
color: #ff0000; |
|
|
|
|
|
|
|
border: 1px solid #ff0000; |
|
|
|
|
|
|
|
border-top: none; |
|
|
|
|
|
|
|
padding: 4px; |
|
|
|
|
|
|
|
border-radius: 22px; |
|
|
|
|
|
|
|
top: -40px; |
|
|
|
|
|
|
|
left: -50%; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.el_title_a::before { |
|
|
|
|
|
|
|
content: '▼'; |
|
|
|
|
|
|
|
position: absolute; |
|
|
|
|
|
|
|
color: #ff0000; |
|
|
|
|
|
|
|
top: -18px; |
|
|
|
|
|
|
|
left: 80px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.el_title_b::after { |
|
|
|
|
|
|
|
content: '目前只支持导出 " 当前页面 " 不会卡顿,速度很快'; |
|
|
|
|
|
|
|
position: absolute; |
|
|
|
|
|
|
|
color: #ff0000; |
|
|
|
|
|
|
|
border: 1px solid #ff0000; |
|
|
|
|
|
|
|
border-bottom: none; |
|
|
|
|
|
|
|
padding: 4px; |
|
|
|
|
|
|
|
border-radius: 10px; |
|
|
|
|
|
|
|
bottom: -40px; |
|
|
|
|
|
|
|
right: -50%; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.el_title_b::before { |
|
|
|
|
|
|
|
content: '▲'; |
|
|
|
|
|
|
|
position: absolute; |
|
|
|
|
|
|
|
color: #ff0000; |
|
|
|
|
|
|
|
bottom: -18px; |
|
|
|
|
|
|
|
left: 80px; |
|
|
|
|
|
|
|
} |
|
|
|
.el-dialog__body { |
|
|
|
.el-dialog__body { |
|
|
|
width: 100%; |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
height: 44%; |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
align-items: center; |
|
|
|
justify-content: space-evenly; |
|
|
|
justify-content: space-evenly; |
|
|
|
border-radius: 12px; |
|
|
|
border-radius: 12px; |
|
|
|
.el-button { |
|
|
|
.el-button { |
|
|
|
width: 30%; |
|
|
|
width: 30%; |
|
|
|
height: 44%; |
|
|
|
height: 100%; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 钉钉号 |
|
|
|
|
|
|
|
:deep(.el_DingTalk) { |
|
|
|
|
|
|
|
.el-form-item { |
|
|
|
|
|
|
|
flex-direction: column; |
|
|
|
|
|
|
|
.el-form-item__label { |
|
|
|
|
|
|
|
justify-content: flex-start; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.el-form-item__content { |
|
|
|
|
|
|
|
.el-input { |
|
|
|
|
|
|
|
width: 100%; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|