Browse Source

Merge branch 'pre-production'

master
pref_mail@163.com 5 months ago
parent
commit
451348dcc6
  1. 6
      src/option/aftersales/vueTvemp.js
  2. 30
      src/option/distribution/abnormalList.js
  3. 10
      src/option/finance/WaybillAudit.js
  4. 10
      src/option/waybill/WaybillOrderList.js
  5. 18
      src/router/views/index.js
  6. 42
      src/views/aftersales/aftersalesWorkOrder.vue
  7. 3
      src/views/aftersales/aftersalesWorkOrderAdd.vue
  8. 2
      src/views/aftersales/aftersalesWorkOrderInfo.vue
  9. 721
      src/views/aftersales/aftersalesWorkOrderTemp.vue
  10. 7
      src/views/distribution/artery/AddVehicleStowage.vue
  11. 77
      src/views/distribution/artery/abnormalList.vue
  12. 6
      src/views/finance/CustomerSettlement.vue
  13. 2
      src/views/finance/WaybillAudit.vue
  14. 4
      src/views/waybill/TemporaryStorageList.vue
  15. 52
      src/views/waybill/WaybillOrderList.vue

6
src/option/aftersales/vueTvemp.js

@ -19,7 +19,7 @@ export const columnList = [
label: '异常类型',
type: 3,
values: '',
width: '110',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -30,7 +30,7 @@ export const columnList = [
label: '发现节点',
type: 3,
values: '',
width: '110',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -41,7 +41,7 @@ export const columnList = [
label: '异常工单号',
type: 13,
values: '',
width: '120',
width: '130',
checkarr: [],
fixed: false,
sortable: true,

30
src/option/distribution/abnormalList.js

@ -29,6 +29,19 @@ export const columnList = [
sortable: true,
head: false,
},
{
prop: 'abnormalStatusName',
label: '异常状态',
type: 14,
values: '',
width: '130',
checkarr: [
{ value: 0, label: '待处理' },
{ value: 1, label: '完结' },
],
fixed: false,
sortable: true,
},
{
prop: 'abnormalTypeName',
label: '异常类型',
@ -114,11 +127,11 @@ export const columnList = [
checkarr: [
{
label: '是',
value: '1',
value: 1,
},
{
label: '否',
value: '0',
value: 0,
},
],
fixed: false,
@ -146,19 +159,6 @@ export const columnList = [
fixed: false,
sortable: true,
},
{
prop: 'abnormalStatusName',
label: '异常状态',
type: 14,
values: '',
width: '130',
checkarr: [
{ value: 0, label: '待处理' },
{ value: 1, label: '完结' },
],
fixed: false,
sortable: true,
},
{
prop: 'upTime',
label: '上报时间',

10
src/option/finance/WaybillAudit.js

@ -58,6 +58,16 @@ export const columnList = [
sortable: true,
head: false,
},
{
prop: 'consigneeCode',
label: '收货单位编码',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'consignee',
label: '收货单位',

10
src/option/waybill/WaybillOrderList.js

@ -138,6 +138,16 @@ export const columnList = [
fixed: false,
sortable: true,
},
{
prop: 'consigneeCode',
label: '收货单位编码',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'consignee',
label: '收货单位',

18
src/router/views/index.js

@ -1436,7 +1436,23 @@ export default [
},
],
},
{
path: '/aftersales/aftersalesWorkOrderTemp',
component: Layout,
redirect: '/aftersales/aftersalesWorkOrderTemp',
children: [
{
meta: {
i18n: 'dict',
keepAlive: true,
},
path: '/aftersales/aftersalesWorkOrderTemp',
name: '工单模板',
component: () => import('@/views/aftersales/aftersalesWorkOrderTemp.vue'),
},
],
},
{
path: '/aftersales/aftersalesWorkOrderInfo',
component: Layout,

42
src/views/aftersales/aftersalesWorkOrder.vue

@ -396,7 +396,7 @@
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:page-sizes="[30, 50, 80, 120]"
:page-sizes="page.pageSizesList"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="page.total"
@ -1257,16 +1257,16 @@ const AppealeditorState = ref(false); //申诉是否为编辑状态(默认否)
const AppealStatusT = ref(false); //
const loadingCustomer = ref(false); //
const TabList = ref([
{ name: 0, label: '全部', state: true, request: true, DataList: [], total: '' },
{ name: 8, label: '待回复', state: false, request: true, DataList: [], total: '' },
{ name: 3, label: '待处理(新建)', state: true, request: true, DataList: [], total: '' },
{ name: 1, label: '处理中', state: true, request: true, DataList: [], total: '' },
{ name: 4, label: '理赔金额未出', state: true, request: true, DataList: [], total: '' },
{ name: 2, label: '处理完毕', state: true, request: true, DataList: [], total: '' },
{ name: 5, label: '客服介入', state: true, request: true, DataList: [], total: '' },
{ name: 9, label: '待审核', state: true, request: true, DataList: [], total: '' },
{ name: 6, label: '完结', state: true, request: true, DataList: [], total: '' },
{ name: 7, label: '超时未处理', state: true, request: true, DataList: [], total: '' },
{ name: 0, label: '全部', state: true, request: true, DataList: [], total: 0,currentPage: 1,pageSize: 50,},
{ name: 8, label: '待回复', state: false, request: true, DataList: [], total: 0,currentPage: 1,pageSize: 50, },
{ name: 3, label: '待处理(新建)', state: true, request: true, DataList: [], total: 0,currentPage: 1,pageSize: 50, },
{ name: 1, label: '处理中', state: true, request: true, DataList: [], total: 0,currentPage: 1,pageSize: 50, },
{ name: 4, label: '理赔金额未出', state: true, request: true, DataList: [], total: 0,currentPage: 1,pageSize: 50, },
{ name: 2, label: '处理完毕', state: true, request: true, DataList: [], total: 0,currentPage: 1,pageSize: 50, },
{ name: 5, label: '客服介入', state: true, request: true, DataList: [], total: 0 ,currentPage: 1,pageSize: 50,},
{ name: 9, label: '待审核', state: true, request: true, DataList: [], total: 0,currentPage: 1,pageSize: 50, },
{ name: 6, label: '完结', state: true, request: true, DataList: [], total: 0 ,currentPage: 1,pageSize: 50,},
{ name: 7, label: '超时未处理', state: true, request: true, DataList: [], total: 0,currentPage: 1,pageSize: 50, },
]); //
const DeliveryDriver = ref([]);
@ -1766,6 +1766,9 @@ const Statusprocessing = val => {
};
//
const IndexTable = (val, Refresh) => {
console.log(page.value,'page.value');
console.log('初始化接口');
console.log(
!TabList.value.find(res => res.name == TabPermissions.value).request,
Refresh,
@ -1849,6 +1852,7 @@ const IndexTable = (val, Refresh) => {
TabList.value.find(res => res.name == TabPermissions.value).DataList =
res.data.data.records;
TabList.value.find(res => res.name == TabPermissions.value).total = res.data.data.total;
TabList.value.find(res => res.name == TabPermissions.value).currentPage = res.data.data.current;
TabList.value.find(res => res.name == TabPermissions.value).request = false;
console.log(TabList.value, '当前存储的值');
details.data = TabList.value.find(res => res.name == TabPermissions.value).DataList;
@ -1856,7 +1860,8 @@ const IndexTable = (val, Refresh) => {
console.log(TabList.value, 'TabList.value===>');
} else {
TabList.value.find(res => res.name == TabPermissions.value).DataList = [];
TabList.value.find(res => res.name == TabPermissions.value).total = 0;
TabList.value.find(res => res.name == TabPermissions.value).total = res.data.data.total;
TabList.value.find(res => res.name == TabPermissions.value).currentPage = res.data.data.current;
TabList.value.find(res => res.name == TabPermissions.value).request = true;
// details.data = res.data.data.records;
details.data = res.data.data.records;
@ -2830,7 +2835,12 @@ const selectionChange = list => {
/** 页码改变执行的回调 */
const currentChange = async val => {
// let _row= TabList.value.find(res=>res.name==val)
// page.value.pageSize= _row.pageSize
// page.value.currentPage= _row.currentPage
TabList.value.find(res => res.name == TabPermissions.value).request = true;
let _row= TabList.value.find(res=>res.name==TabPermissions.value)
_row.currentPage = val
page.value.currentPage = val;
await DataRendering(TabPermissions.value, details.query, true);
TabList.value.find(res => res.name == TabPermissions.value).request = false;
@ -3304,6 +3314,14 @@ const DataRendering = (val, input, Refresh) => {
//
const tabChenge = async (val, input, Refresh = false) => {
console.log(TabList.value, 'TabList.value');
console.log(val, 'val');
let _row= TabList.value.find(res=>res.name==val)
page.value.pageSize= _row.pageSize
page.value.currentPage= _row.currentPage
page.value.total= _row.total
console.log(_row,'当前点击的菜单');
TabPermissions.value = val; //
if (val != 6) {

3
src/views/aftersales/aftersalesWorkOrderAdd.vue

@ -1177,9 +1177,6 @@ const beforeAvatarUpload = async rawFile => {
if (rawFile.type !== 'image/png' && rawFile.type !== 'image/jpeg') {
ElMessage.error('只能上传格式为PNG/JPG的图片!');
return false;
} else if (rawFile.size / 1024 / 1024 > 3) {
ElMessage.error('图片大小不能大于3MB!');
return false;
}
const res = await compressImageBlob(rawFile);
return res;

2
src/views/aftersales/aftersalesWorkOrderInfo.vue

@ -1368,7 +1368,7 @@ const isRepulse = () => {
//
const Resultreturned = () => {
if (UserPermissions.value == '总部客服') {
if (UserPermissions.value == '总部客服' || UserPermissions.value == '总部客服经理') {
if (workOrderStatus == '30') {
return true;
}

721
src/views/aftersales/aftersalesWorkOrderTemp.vue

@ -0,0 +1,721 @@
<template>
<basic-container v-loading="PageLoading" element-loading-text="数据正在加载中..." >
<!-- 首页表格 -->
<div class="avue-crud">
<!-- 搜索模块 -->
<div v-h5uShow="search">
<!-- 查询模块 -->
<el-form :inline="true" :model="query" class="el-fr-d">
<!-- 查询按钮 -->
<el-form-item class="el-btn">
<el-button type="primary" icon="el-icon-search" @click="searchChange"> </el-button>
<el-button icon="el-icon-delete" @click="searchReset()"> </el-button>
</el-form-item>
<el-form-item label="配送日期">
<el-date-picker
v-model="TopQuery.time"
type="datetimerange"
unlink-panels
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
:shortcuts="shortcuts"
:default-time="defaultTime2"
/>
</el-form-item>
</el-form>
</div>
<el-tabs type="border-card" v-model="tabValue" @tab-change="tabChenge" class="el_tabs">
<div></div>
<template v-for="item in TabList">
<el-tab-pane v-if="item.state" :name="item.name" :label="item.label" :key="item.name">
</el-tab-pane>
</template>
</el-tabs>
<!-- 控件模块 -->
<el-row>
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<el-button type="primary" icon="Edit">创建工单</el-button>
<el-button type="primary" icon="Download">Excel导出</el-button>
<el-button type="primary" icon="Download">Excel超时导出</el-button>
<el-button type="primary" icon="Avatar">默认指派</el-button>
<el-button type="primary" icon="CloseBold">批量打回</el-button>
<el-button type="primary" icon="Select">批量确定</el-button>
<el-button type="primary" icon="FolderChecked">批量审核</el-button>
<el-button type="primary" icon="Pointer">工单指派</el-button>
<el-button type="primary" icon="User">客服介入</el-button>
<el-button type="primary" icon="EditPen">钉钉号填写</el-button>
<el-button type="primary" icon="Stamp">批量完结</el-button>
<el-button type="primary" icon="Stamp">批量完结审核</el-button>
<el-button type="primary" icon="Coin">财务入账</el-button>
</div>
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
<el-button icon="el-icon-refresh" @click="searchChangeS" circle></el-button>
<el-button icon="Operation" @click="showdrawer(true)" circle></el-button>
<el-button icon="Search" @click="searchHide" circle></el-button>
</div>
</div>
</el-row>
<!-- 首页表格 -->
<el-row>
<!-- 列表模块 -->
<tablecmt
class="tableNode"
:columnList="details.columnList"
:tableData="data"
:loading="loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '操作'">
<el-text>查看</el-text>
</template>
</template>
</tablecmt>
</el-row>
<!-- 分页模块 -->
<el-row class="el-fy">
<div class="avue-crud__pagination flex-c-sb" style="width: 100%">
<div></div>
<el-pagination
align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:page-sizes="[30, 50, 80, 120]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="page.total"
>
</el-pagination>
</div>
</el-row>
</div>
</basic-container>
<!-- 列表配置显示 -->
<edittablehead
@setcolum="setnewcolum"
@closce="showdrawer"
:drawerShow="drawerShow"
:columnList="details.columnList"
v-model="details.columnList"
></edittablehead>
</template>
<script setup>
import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue';
import { useStore } from 'vuex';
import {
processRowPropertyName,
setNodeHeight,
downloadXls,
handleClearTableQuery,
} from '@/utils/util';
import { ElMessageBox, ElMessage } from 'element-plus';
import { getDictionaryBiz } from '@/api/system/dict';
import dayjs from 'dayjs';
import {
$_getList,
$_submit,
$_getDetail,
$_remove,
$_getProcessor,
$_AddReply,
$_getExchangeList,
$_getInfo,
$_batchReturn,
$_assignCustomerService,
$_getCustomerServicePersonnel,
$_arbitrate,
$_addCompletionEnd,
$_appealSubmit,
$_listSettlement,
$_listAppeal,
$_listOwn,
$_moneyUpdate,
$_updateWorkList,
$_updateManagerConfirmed,
$_updateWorkOrderStatus,
$_AppealDetails,
$_Cancelappeal,
$_getDetails,
$_settlementUpdate,
$_updateArbitrateStatu,
$_exportAftersalesWorkOrder,
$_aftersalesCustomerMall,
$_aftersalesCustomerMallremove,
$_aftersalesCustomerMallsave,
$_aftersalesCustomerMallsetDefault,
$_updateFinanceTime,
$_basicdataTripartiteMall,
$_aftersalesCustomerMallgetByClientId,
$_exportaftersalesOvertimeFine,
} from '@/api/aftersales/aftersalesWorkOrder';
import {
columnList,
recordList,
Claimsfield,
AppealList,
timeoutList,
CustomerColumnList,
MallassignmentColumnList,
customerserviceColumnList,
} from '@/option/aftersales/vueTvemp.js';
const $router = useRouter(); //
const $useStore = useStore(); //
const $route = useRoute(); //
const tabValue = ref(0); //
const UserPermissions = ref(''); //
const PageLoading = ref(true); //loading
const Useridentity = {
Warehouse_customer_service: '仓库客服',
Headquarters_customer_service: '总部客服',
Headquarters_Manager: '总部客服经理',
};
const TopQuery = ref({
time: [],
});
//
const dictionaries = {
pc_work_order: ref([]), ////
pc_discovery_node: ref([]), //
work_order_status: ref([]), //
after_sales_visits: ref([]), //
};
//
const createTabItem = (name, label, state = true) => ({
name,
label,
state,
request: true,
DataList: [],
total: 0,
currentPage: 1,
pageSize: 50,
});
const TabList = ref([
createTabItem(0, '全部'),
createTabItem(8, '待回复'),
createTabItem(3, '待处理(新建)'),
createTabItem(1, '处理中'),
createTabItem(4, '理赔金额未出'),
createTabItem(2, '处理完毕'),
createTabItem(5, '客服介入'),
createTabItem(9, '待审核'),
createTabItem(6, '完结'),
createTabItem(7, '超时未处理'),
createTabItem(10, '申诉列表'),
]);
//
const ButtonPermissions = computed(() => {
// TabPermissions
switch (TabPermissions.value) {
case 0: //
return {
add: true, //
batchReject: false, //
assignment: false, //
applyArbitration: false, //
DingTalkNumber: false, //
batchFinish: false, //
appeal: false, //
ManagerConfirmed: false, //
ArbitrationDetermination: false, //
Financial_accounting: false, //
defaultassignments: UserPermissions.value != '仓库客服', //
export_Report: true, //
Timed_outexport: false, //
};
case 1: //
return {
add: false, //
batchReject: false, //
assignment: UserPermissions.value != '仓库客服', //
applyArbitration: UserPermissions.value == '仓库客服', //
DingTalkNumber: false, //
batchFinish: false, //
Batchdetermination: UserPermissions.value != '仓库客服', //
appeal: false, //
ManagerConfirmed: false, //
ArbitrationDetermination: false, //
Financial_accounting: false, //
defaultassignments: false, //
export_Report: true, //
Timed_outexport: false, //
};
case 2: //
return {
add: false, //
batchReject: UserPermissions.value == '总部客服', //
assignment: false, //
applyArbitration: false, //
DingTalkNumber: false, //
batchFinish: false, //
appeal: UserPermissions.value == '仓库客服' && AppealStatusT.value, //
Batchdetermination: UserPermissions.value == '仓库客服', //
ManagerConfirmed: false, //
ArbitrationDetermination: false, //
Financial_accounting: false, //
defaultassignments: false, //
export_Report: true, //
Timed_outexport: false, //
};
case 3: //
return {
add: false, //
batchReject: false, //
assignment: false, //
applyArbitration: false, //
batchFinish: false, //
appeal: false, //
Batchdetermination: false, //
DingTalkNumber: false, //
ManagerConfirmed: false, //
ArbitrationDetermination: false, //
Financial_accounting: false, //
defaultassignments: false, //
export_Report: true, //
Timed_outexport: false, //
};
case 4: //
return {
add: false, //
batchReject: false, //
assignment: false, //
applyArbitration: false, //
batchFinish: false, //
appeal: false, //
DingTalkNumber: false, //
Batchdetermination: false, //
ManagerConfirmed: false, //
ArbitrationDetermination: false, //
Financial_accounting: false, //
defaultassignments: false, //
export_Report: true, //
Timed_outexport: false, //
};
case 5: //
return {
add: false, //
batchReject: false, //
assignment: false, //
applyArbitration: false, //
batchFinish: false, //
appeal: false, //
DingTalkNumber: false, //
Batchdetermination: false, //
ManagerConfirmed: false, //
ArbitrationDetermination: UserPermissions.value != '仓库客服', //
Financial_accounting: false, //
defaultassignments: false, //
export_Report: true, //
Timed_outexport: false, //
};
case 6: //
return {
add: false, //
batchReject: false, //
assignment: false, //
applyArbitration: false, //
batchFinish: false, //
DingTalkNumber: UserPermissions.value == '总部客服经理' && !AppealStatusT.value, //, //
appeal: UserPermissions.value == '仓库客服', //
Batchdetermination: false, //
ManagerConfirmed: false, //
ArbitrationDetermination: false, //
Financial_accounting: UserPermissions.value != '仓库客服' && !AppealStatusT.value, //
defaultassignments: false, //
export_Report: true, //
Timed_outexport: false, //
};
case 7: //
return {
add: false, //
batchReject: false, //
assignment: false, //
applyArbitration: false, //
batchFinish: false, //
appeal: false, //
Batchdetermination: false, //
ManagerConfirmed: false, //
ArbitrationDetermination: false, //
Financial_accounting: false, //
defaultassignments: false, //
export_Report: false, //
Timed_outexport: true, //
};
case 8: //
return {
add: false, //
batchReject: false, //
assignment: false, //
applyArbitration: true, //
batchFinish: false, //
appeal: false, //
Batchdetermination: false, //
ManagerConfirmed: false, //
ArbitrationDetermination: false, //
Financial_accounting: false, //
defaultassignments: false, //
export_Report: false, //
Timed_outexport: false, //
};
case 9: //
return {
add: false, //
batchReject: false, //
assignment: false, //
applyArbitration: false, //
batchFinish: UserPermissions.value != '仓库客服', //
appeal: false, //
Batchdetermination: false, //
ManagerConfirmed: UserPermissions.value == '总部客服经理', //
ArbitrationDetermination: false, //
Financial_accounting: false, //
defaultassignments: false, //
export_Report: true, //
Timed_outexport: false, //
};
case 10: //
return {
add: false, //
batchReject: false, //
assignment: false, //
applyArbitration: false, //
batchFinish: UserPermissions.value != '仓库客服', //
appeal: false, //
Batchdetermination: false, //
ManagerConfirmed: UserPermissions.value == '总部客服经理', //
ArbitrationDetermination: false, //
Financial_accounting: false, //
defaultassignments: false, //
export_Report: true, //
Timed_outexport: false, //
};
//
default:
return {
add: false,
batchReject: false,
assignment: false,
applyArbitration: false,
batchFinish: false,
appeal: false,
Batchdetermination: false, //
ManagerConfirmed: false, //
ArbitrationDetermination: false, //
Financial_accounting: false, //
defaultassignments: false, //
export_Report: false, //
Timed_outexport: false, //
};
}
});
const details = reactive({
/** 是否开启搜索 */
search: false,
/** 表格搜索条件 */
query: {},
defaultTime2: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)], // '12:00:00', '08:00:00'
/** 时间快捷选择设置 */
shortcuts: [
{
text: '最近一周',
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
return [start, end];
},
},
{
text: '最近一个月',
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
return [start, end];
},
},
{
text: '最近三个月',
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
return [start, end];
},
},
],
/** 时间选择器数据 */
stockupDate: [],
/** 列表 */
columnList,
/** 列表数据 */
data: [{}],
/** 页面loading */
loadingObj: {
/** 列表加载loading */
list: false,
packageListLoading: false,
},
/** 列表复选框选中的数据 */
selectionList: [],
/** 是否显示设置表格 */
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageSize: 50,
total: 0,
},
/** 弹出层显示 */
popUpShow: {
/** 包件明细 */
packageOrderListlVisited: false,
/** 二维码 */
QRCodeVisible: false,
/** 修改客户信息 */
editClientInfoVisible: false,
},
/** 列表Dom节点 */
listNode: '',
form: {},
/** 全屏 */
fullscreenObj: {
/** 包明细 */
packageOrderListlVisited: false,
},
});
const {
search,
query,
shortcuts,
stockupDate,
data,
loadingObj,
selectionList,
drawerShow,
page,
trickleLoadingPage,
zeroAdditionalRecordingInfo,
popUpShow,
recorddata,
defaultTime2,
} = toRefs(details);
/** 展开列表控件 */
const showdrawer = _flag => {
details.drawerShow = _flag;
};
/** 表格表头输入框搜索 */
const inputsc = (index, row) => {
processRowPropertyName(index, row, details.query);
onLoad();
};
/** 表格表头时间选择 */
const timesc = (index, row) => {
console.log(index, row);
if (!!index) {
index = dayjs(index).format('YYYY-MM-DD');
}
details.query[row.prop] = index;
if (!index) {
delete details.query[row.prop];
}
onLoad();
};
/** 表格表头下拉框选择 */
const selectsc = (index, row) => {
processRowPropertyName(index, row, details.query);
onLoad();
};
/** 表格表头复选框选择 */
const selectionChange = list => {
console.log(list);
details.selectionList = list;
};
//
const searchChange = () => {
onLoad();
};
//
const sizeChange = val => {
details.page.pageSize = val;
onLoad();
};
/** 页码改变执行的回调 */
const currentChange = val => {
details.page.currentPage = val;
onLoad();
};
//
const searchChangeS = () => {
details.search = false; //
onLoad();
};
//
const searchReset = () => {
details.query = {};
details.page.currentPage = 1;
handleClearTableQuery(details.columnList);
onLoad();
};
//
const searchHide = () => {
console.log(details);
details.search = !details.search;
autoscaling();
};
//
async function updateDictionary(targetArray, dictionaryType) {
await getDictionaryBiz(dictionaryType).then(res => {
console.log(res, '字典');
res.data.data.forEach(item => {
targetArray.push({
value: item.dictKey,
label: item.dictValue,
});
});
});
}
//
const autoscaling = () => {
const _node = document.querySelector('.tableNode');
setNodeHeight(_node, '', true);
};
/**
* 描述: 初始化字典包含角色信息异常类型发现环节工单状态
*/
const Dictionaryrequest = async () => {
// Map Promise
const dictionaryPromises = Object.entries(dictionaries).map(([key, refValue]) => {
return updateDictionary(refValue.value, key);
});
//
await Promise.all(dictionaryPromises);
};
/**
* 描述: 获取用户角色信息并更新界面元素状态
* 该函数用于检查用户的角色并根据角色执行相应的验证和UI更新逻辑
*/
const Roleverification = () => {
const userInfo = localStorage.getItem('TWMS-userInfo');
if (!userInfo) {
console.error('用户信息未找到');
return;
}
let roleNames = [];
try {
roleNames = JSON.parse(userInfo).content.role_name.split(',');
} catch (error) {
console.error('解析用户角色信息出错:', error);
return;
}
//
const matchingItem = dictionaries.after_sales_visits.value.find(item =>
roleNames.includes(item.label)
);
//
if (matchingItem) {
UserPermissions.value = matchingItem.label;
}
// TabList
const updateTabState = (tabName, condition) => {
const tab = TabList.value.find(res => res.name == tabName);
if (tab) {
tab.state = condition;
}
};
if (UserPermissions.value) {
updateTabState('8', UserPermissions.value == Useridentity.Warehouse_customer_service);
updateTabState('9', UserPermissions.value == Useridentity.Headquarters_Manager);
} else {
// ()
updateTabState('9', false);
}
console.log(matchingItem, '匹配出来的角色');
};
//
const onLoad = () => {};
/**
*页面初始化函数包含字典等必要请求
*/
const PageOnlaod = async () => {
await Dictionaryrequest();
Roleverification();
console.log(Useridentity, 'Useridentity');
console.log(dictionaries);
};
PageOnlaod();
</script>
<style scoped lang="scss">
:deep(.el-card) {
height: 100%;
}
:deep(.el-card__body) {
height: 100%;
display: flex;
flex-direction: column;
padding: 0 !important;
}
.el-fy {
flex: 1;
display: flex;
align-items: flex-end;
}
.avue-crud {
height: 100%;
display: flex;
flex-direction: column;
}
:deep(.el_tabs) {
.el-tabs__item {
font-family: '黑体';
border-right: 1px dashed #00000014;
}
.is-active {
font-family: '黑体';
font-weight: bold;
}
.el-tabs__content {
display: none;
}
}
.avue-crud__header {
min-height: initial;
margin: 4px 0;
padding: 0 4px;
}
.avue-crud__left {
.el-button {
border-radius: 2px;
}
}
</style>

7
src/views/distribution/artery/AddVehicleStowage.vue

@ -799,7 +799,7 @@ export default {
</script>
<script setup lang="ts">
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import { ref, reactive, toRefs, computed, onMounted, nextTick, onActivated } from 'vue';
import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
/** 获取字典 */
@ -2573,6 +2573,10 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
// if ($route.path !== '/distribution/artery/AddVehicleStowage') return;
// onLoad();
// });
onActivated(() => {
handleFindVehicle();
});
</script>
<style scoped lang="scss">
@ -2705,6 +2709,7 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
//
:deep(.el-steps) {
flex-wrap: wrap;
width: 100%;
}
:deep(.el-step.is-horizontal) {

77
src/views/distribution/artery/abnormalList.vue

@ -63,7 +63,18 @@
<!-- 控件模块 -->
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left"></div>
<div class="avue-crud__left">
<el-tooltip
class="box-item"
effect="dark"
content="批量处理不支持零担,且需要异常类型为相同的异常"
placement="top-start"
>
<el-button type="primary" icon="Edit" @click="handleBatchAbnormarl">
批量处理
</el-button>
</el-tooltip>
</div>
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
<el-button icon="el-icon-refresh" @click="searchChange" circle></el-button>
@ -144,7 +155,7 @@
<el-dialog
title="异常处理"
:visible.sync="details.popUpShow.abnormalVisited"
width="780px"
width="500px"
:align-center="true"
v-model="details.popUpShow.abnormalVisited"
>
@ -331,14 +342,13 @@ const details = reactive<any>({
},
/** 处理的异常信息 */
abnormalInfo: {},
/** 是否为异常处理 */
isBatch: false,
});
const { search, query, shortcuts, data, loadingObj, selectionList, drawerShow, page, popUpShow } =
toRefs(details);
/** vuex */
const permission = computed(() => mapGetters(['permission', 'tagWel', 'tagList']));
onMounted(() => {
const timer = setTimeout(() => {
details.listNode = document.querySelector('.maboxhi');
@ -468,6 +478,8 @@ const handleAnException = async ({ row }) => {
details.abnormalInfo = { ...row };
details.abnormalInfo.handleNum = 0;
details.isBatch = false;
//
if (Number(row.abnormalType) === 5) {
try {
@ -503,20 +515,29 @@ const handleAbnormal = (dealType, title) => {
details.popUpShow.abnormalVisited = false;
try {
details.loadingObj.pageLoading = true;
const submitData = { abnormalRecordId: details.abnormalInfo.id, dealType };
if (dealType === 6) {
let _handleNum = 0;
for (let i = 0; i < details.abnormalInfo.zeroGoodsArr.length; i++) {
const val = details.abnormalInfo.zeroGoodsArr[i];
val.handleNum = val.handleNum || 0;
val.enterNum = val.handleNum || 0;
_handleNum += val.handleNum || 0;
const submitData = { abnormalRecordIds: [], dealType } as any;
//
if (details.isBatch) {
for (let i = 0; i < details.selectionList.length; i++) {
submitData.abnormalRecordIds.push(details.selectionList[i].id);
}
} else {
submitData.abnormalRecordIds[0] = details.abnormalInfo.id;
if (dealType === 6) {
let _handleNum = 0;
for (let i = 0; i < details.abnormalInfo.zeroGoodsArr.length; i++) {
const val = details.abnormalInfo.zeroGoodsArr[i];
val.handleNum = val.handleNum || 0;
val.enterNum = val.handleNum || 0;
_handleNum += val.handleNum || 0;
}
if (!_handleNum) return ElMessage.warning('请输入入库数量');
submitData.zeroPackageDTOS = details.abnormalInfo.zeroGoodsArr;
submitData.num = _handleNum;
}
if (!_handleNum) return ElMessage.warning('请输入入库数量');
submitData.zeroPackageDTOS = details.abnormalInfo.zeroGoodsArr;
submitData.num = _handleNum;
}
const res = await postDealAbnormal(submitData);
@ -534,6 +555,26 @@ const handleAbnormal = (dealType, title) => {
})
.catch(() => {});
};
/** 批量处理异常 */
const handleBatchAbnormarl = () => {
if (details.selectionList.length === 0) return ElMessage.warning('请选择需要处理的异常数据');
const _abnormalType = details.selectionList[0].abnormalType;
for (let i = 0; i < details.selectionList.length; i++) {
const val = details.selectionList[i];
if (Number(val.abnormalStatus) === 1) return ElMessage.warning('存在已处理的异常数据,请移除');
if (_abnormalType !== val.abnormalType) return ElMessage.warning('批量处理仅支持同一异常类型');
if (Number(val.isZero) === 1) return ElMessage.warning('零担数据不支持批量操作,请移除');
}
details.abnormalInfo = { ...details.selectionList[0] };
details.isBatch = true;
details.popUpShow.abnormalVisited = true;
};
</script>
<style scoped lang="scss">

6
src/views/finance/CustomerSettlement.vue

@ -55,7 +55,7 @@
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:current-page="page.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -154,7 +154,7 @@ const details = reactive<any>({
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
@ -220,7 +220,7 @@ const searchChange = () => {
/** 清空表单 */
const searchReset = () => {
details.query = {};
details.page.currentPage = 1;
details.page.pageNum = 1;
handleClearTableQuery(details.columnList);
initOnLoad();
};

2
src/views/finance/WaybillAudit.vue

@ -395,7 +395,7 @@ const initData = async () => {
//
getDictionaryBiz('distribution_type').then(res => handleData('服务类型', res)),
//
getDictionaryBiz('mainline_waybill_shippingmethod').then(res => handleData('服务类型', res)),
getDictionaryBiz('mainline_waybill_shippingmethod').then(res => handleData('送货方式', res)),
//
getDictionaryBiz('open_order_pay_type').then(res => handleData('支付方式', res)),
//

4
src/views/waybill/TemporaryStorageList.vue

@ -697,8 +697,8 @@ const details = reactive<any>({
value: '',
checkArr: [],
rule: [
{ required: true, message: '请输入服务号', trigger: 'change' },
{ required: true, message: '请输入服务号', trigger: 'blur' },
// { required: true, message: '', trigger: 'change' },
// { required: true, message: '', trigger: 'blur' },
],
},
{

52
src/views/waybill/WaybillOrderList.vue

@ -19,6 +19,26 @@
placeholder="支持多运单查询,逗号拼接"
></el-input>
</el-form-item>
<el-form-item label="目的仓:">
<el-select
v-model="details.query.destinationWarehouseIds"
class="w100"
clearable
placeholder="请选择目的仓"
filterable
multiple
:reserve-keyword="false"
>
<el-option
v-for="value in details.warehouseOption"
:key="value.dictKey"
:label="value.dictValue"
:value="value.dictKey"
/>
</el-select>
</el-form-item>
<el-form-item label="制单时间:" class="el-times">
<el-date-picker
v-model="details.query.documentMakingTime"
@ -298,6 +318,7 @@ import { useRouter } from 'vue-router';
import print from '@/utils/print';
import { ElMessage, ElMessageBox } from 'element-plus';
import { getToken } from '@/utils/auth';
import { getListName } from '@/api/basicdata/basicdataVehicle';
import type { UploadProps, UploadUserFile } from 'element-plus';
import { utils } from 'sortablejs';
@ -392,6 +413,7 @@ const details = reactive<any>({
return { 'Blade-Auth': 'Bearer ' + getToken() };
}),
html: '',
warehouseOption: [],
});
const { search, query, shortcuts, data, loadingObj, selectionList, drawerShow, page, popUpShow } =
@ -473,6 +495,13 @@ const onLoad = async (page?: any, params = {}) => {
submitData.waybillNoList = submitData.waybillNoList.replaceAll(',', ',').split(',');
} else delete submitData.waybillNoList;
for (const key in submitData) {
const value = submitData[key];
if (getObjType(value) === 'string' && !value) delete submitData[key];
else if (getObjType(value) === 'array' && value.length === 0) delete submitData[key];
}
delete submitData.createTime;
delete submitData.documentMakingTime;
@ -944,6 +973,13 @@ const handleExport = () => {
submitData.waybillNoList = submitData.waybillNoList.replaceAll(',', ',').split(',');
} else delete submitData.waybillNoList;
for (const key in submitData) {
const value = submitData[key];
if (getObjType(value) === 'string' && !value) delete submitData[key];
else if (getObjType(value) === 'array' && value.length === 0) delete submitData[key];
}
delete submitData.createTime;
delete submitData.documentMakingTime;
@ -963,6 +999,18 @@ const handleExport = () => {
}
});
};
/** 初始化请求仓库数据 */
getListName({ name: '' }).then(res => {
const { code, data } = res.data;
if (code !== 200 || getObjType(data) !== 'array') return;
details.warehouseOption = data.map(val => {
return {
dictKey: val.id,
dictValue: val.name,
};
});
});
</script>
<style scoped lang="scss">
@ -1016,6 +1064,10 @@ const handleExport = () => {
// }
// }
}
:deep(.header_search) {
align-items: start;
}
</style>
<style>

Loading…
Cancel
Save