Browse Source

Merge branch 'dev' into pre-production

fix_bug_pro20231227
pref_mail@163.com 1 year ago
parent
commit
25fe25a971
  1. 80
      src/api/aftersales/aftersalesWorkOrder.js
  2. 9
      src/api/basicdata/basicdataGoodsShelfView.ts
  3. 67
      src/api/distribution/AddVehicleStowage.js
  4. 16
      src/api/distribution/VehicleArrivalManagement.js
  5. 12
      src/api/distribution/truckLoadingDetails.js
  6. 18
      src/api/waybill/orderPackageListDetails.js
  7. 279
      src/option/aftersales/vueTvemp.js
  8. 319
      src/option/distribution/TripartiteTransfer.js
  9. 2
      src/option/distribution/VehicleStowage.js
  10. 1
      src/option/distribution/addVehicleStowage.js
  11. 29
      src/router/views/index.js
  12. 5
      src/utils/util.js
  13. 370
      src/views/aftersales/aftersalesWorkOrder.vue
  14. 1002
      src/views/aftersales/aftersalesWorkOrderAdd.vue
  15. 1287
      src/views/aftersales/aftersalesWorkOrderInfo.vue
  16. 32
      src/views/aftersales/aftersalesWorkOrderSS.vue
  17. 1565
      src/views/aftersales/aftersalesWorkOrderend.vue
  18. 2
      src/views/aftersales/customerService.vue
  19. 34
      src/views/basicdata/warehouse/goodsShelf/basicdataGoodsShelfView.vue
  20. 680
      src/views/distribution/artery/AddVehicleStowage.vue
  21. 47
      src/views/distribution/artery/TripartiteTransfer.vue
  22. 12
      src/views/distribution/artery/TripartiteTransferDetails.vue
  23. 50
      src/views/distribution/artery/VehicleArrivalManagement.vue
  24. 49
      src/views/distribution/artery/VehicleStowage.vue
  25. 85
      src/views/distribution/artery/truckLoadingDetails.vue
  26. 13
      src/views/warehouse/warehousingentry/warehouseWarehousingEntry.vue
  27. 154
      src/views/waybill/orderPackageListDetails.vue

80
src/api/aftersales/aftersalesWorkOrder.js

@ -203,3 +203,83 @@ export const $_addCompletionEnd = (data) => {
data
})
}
// 获取责任人
export const $_getBusinessDepartmentUser = (params) => {
return request({
url: '/api/logpm-aftersales/aftersalesWorkOrder/getBusinessDepartmentUser',
method: 'get',
params
})
}
// 回复调查接口
export const $_savaSurveyRecord = (data) => {
return request({
url: '/api/logpm-aftersales/aftersalesWorkOrder/savaSurveyRecord ',
method: 'post',
data
})
}
// 提交异常工单处理结果
export const $_addProcessingResults = (data) => {
return request({
url: '/api/logpm-aftersales/aftersalesWorkOrder/addProcessingResults',
method: 'post',
data
})
}
// 获取回复记录
export const $_getSurveyRecord = (params) => {
return request({
url: '/api/logpm-aftersales/aftersalesWorkOrder/getSurveyRecord',
method: 'get',
params
})
}
// 工单申诉
export const $_appealSubmit = (data) => {
return request({
url: '/api/logpm-aftersales/aftersalesAppeal/submit',
method: 'post',
data
})
}
// 查询理赔数据
export const $_listSettlement = (params) => {
return request({
url: '/api/logpm-aftersales/aftersalesWorkOrder/listSettlement',
method: 'get',
params
})
}
// 查询包件信息
export const $_getAbnormalPackage = (params) => {
return request({
url: '/api/logpm-aftersales/aftersalesAbnormalPackage/getAbnormalPackage',
method: 'get',
params
})
}
//查询申述数据
export const $_listAppeal = (params) => {
return request({
url: '/api/logpm-aftersales/aftersalesAppeal/listAppeal',
method: 'get',
params
})
}

9
src/api/basicdata/basicdataGoodsShelfView.ts

@ -78,3 +78,12 @@ export function posturl(name,data): Promise<AxiosResponse<VisualizationResponseD
data
})
}
export const $_locationsnub = (params) => {
return request({
url: '/api/logpm-warehouse/warehouseGoodsAllocation/locationsnub',
method: 'get',
params
})
}

67
src/api/distribution/AddVehicleStowage.js

@ -76,3 +76,70 @@ export const postFindCarrierByName = data => {
data,
});
};
/**
* 查询编辑配载计划详情
*/
export const postSelectEditDetailByLoadId = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/selectEditDetailByLoadId',
method: 'post',
data,
});
};
/**
* 查询已添加在调度池的订单
*/
export const postFindUseOrderList = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/findUseOrderList',
method: 'post',
data,
});
};
/**
* 移除在调度池的订单
*/
export const postRemoveCarsOrderByCarsOrderId = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/removeCarsOrderByCarsOrderId',
method: 'post',
data,
});
};
/**
* 修改计划数量
*/
export const postUpdatePlanNumByCarsOrderId = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/updatePlanNumByCarsOrderId',
method: 'post',
data,
});
};
/**
* 新增调度池订单
*/
export const postAddOrderToFinalNodeId = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/addOrderToFinalNodeId',
method: 'post',
data,
});
};
/**
* 新增调度池订单
*/
export const postUpdateCarsLoadBasicData = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/updateCarsLoadBasicData',
method: 'post',
data,
});
};
//

16
src/api/distribution/VehicleArrivalManagement.js

@ -15,7 +15,7 @@ export const postloadArriveCarsPageList = (page, params) => {
};
/**
* 到车管理分页列表
* 到车
*/
export const postloadArriveCarByLoadId = (page, params) => {
return request({
@ -27,3 +27,17 @@ export const postloadArriveCarByLoadId = (page, params) => {
},
});
};
/**
* 取消到车
*/
export const postloadCancelArriveCarByLoadId = (page, params) => {
return request({
url: '/api/logpm-trunkline/carsLoad/cancelArriveCarByLoadId',
method: 'post',
data: {
...page,
...params,
},
});
};

12
src/api/distribution/truckLoadingDetails.js

@ -0,0 +1,12 @@
import request from '@/axios';
/**
* 初始化获取配载信息
*/
export const postLoadingDetail = (data = {}) => {
return request({
url: '/api/logpm-trunkline/carsLoad/loadingDetail',
method: 'post',
data,
});
};

18
src/api/waybill/orderPackageListDetails.js

@ -1,7 +1,7 @@
import request from '@/axios';
/**
* 获取暂存单列表数据
* 查看包明细
* @param {number} current
* @param {number} size
* @param {*} params
@ -18,3 +18,19 @@ export const getopenOrderFindAdvanceDetailList = (page, params) => {
});
};
/**
* 直接入库
* @param {number} current
* @param {number} size
* @param {*} params
* @returns
*/
export const getopenOrderIncomingPackage = data => {
return request({
url: '/api/logpm-trunkline/api/incoming/incomingPackage',
method: 'post',
data,
});
};
//

279
src/option/aftersales/vueTvemp.js

@ -15,7 +15,7 @@ export const columnList = [
fixed: true,
},
{
prop: 'workOrderTypeName',//workOrderType
prop: 'workOrderTypeNameS',//workOrderType
label: '异常类型',
type: 3,
values: '',
@ -26,7 +26,7 @@ export const columnList = [
head: false,
},
{
prop: 'discoveryNodeName',//discoveryNode
prop: 'discoveryNodeNameS',//discoveryNode
label: '发现节点',
type: 3,
values: '',
@ -382,4 +382,277 @@ export const recordList = [
sortable: false,
head: false,
},
]
]
// 理赔
export const Claimsfield = [
{
prop: '',
label: '复选框',
type: 0,
width: 55,
fixed: true,
},
{
prop: '',
label: '序号',
type: 12,
values: '',
width: 55,
fixed: true,
},
{
prop: 'workOrderNumber',
label: '工单号',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'businessName',
label: '营业部',
type: 3,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
// {
// prop: 'businessId',
// label: '营业部ID',
// type: 3,
// values: '',
// width: '100',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
{
prop: 'brandName',
label: '品牌',
type: 2,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'mallName',
label: '商场名称',
type: 2,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'waybillNumber',
label: '运单号',
type: 2,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
// {
// prop: 'workOrderType',
// label: '异常类型',
// type: 3,
// values: '',
// width: '100',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
{
prop: 'workOrderTypeName',
label: '异常类型名称',
type: 3,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
// {
// prop: 'resultType',
// label: '处理结果',
// type: 3,
// values: '',
// width: '100',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
{
prop: 'resultTypeName',
label: '处理结果名称',
type: 3,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
// {
// prop: 'laprId',
// label: '处理结果ID',
// type: 3,
// values: '',
// width: '100',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
// {
// prop: 'discoveryNode',
// label: '发现环节',
// type: 3,
// values: '',
// width: '100',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
{
prop: 'discoveryNodeName',
label: '发现环节名称',
type: 3,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'resultDescription',
label: '处理结果说明',
type: 2,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'vehicleRoute',
label: '车辆路线',
type: 2,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'indemnitor',
label: '赔款方',
type: 3,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'reason',
label: '判责原因',
type: 2,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'money',
label: '金额',
type: 2,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
// {
// prop: 'lawoId',
// label: '异常工单ID',
// type: 3,
// values: '',
// width: '100',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
{
prop: 'processNumber',
label: '钉钉流程号',
type: 2,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
// {
// prop: 'workOrderStatus',
// label: '工单状态',
// type: 3,
// values: '',
// width: '100',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
{
prop: 'workOrderStatusName',
label: '工单状态名称',
type: 3,
values: '',
width: '100',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'createUserName',
label: '操作',
type: 6,
values: '',
width: '220',
checkarr: [],
fixed: 'right',
sortable: false,
},
]

319
src/option/distribution/TripartiteTransfer.js

@ -246,9 +246,9 @@ export const detailsColumnList = [
fixed: true,
},
{
prop: 'orderCode',
prop: 'waybillNo',
label: '运单号',
type: 6,
type: 1,
values: '',
width: '150',
checkarr: [],
@ -257,9 +257,9 @@ export const detailsColumnList = [
head: false,
},
{
prop: 'orderCode',
label: '合同号',
type: 6,
prop: 'loadCode',
label: '配载批次',
type: 1,
values: '',
width: '150',
checkarr: [],
@ -268,37 +268,48 @@ export const detailsColumnList = [
head: false,
},
{
prop: 'orderPackageCode',
label: '包条码',
type: 6,
values: '',
width: '200',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'driverName',
label: '计划目的地',
prop: 'orderCode',
label: '合同号',
type: 1,
values: '',
width: '130',
width: '150',
checkarr: [],
fixed: false,
fixed: true,
sortable: true,
head: false,
},
{
prop: 'driverPhone',
label: '目的地',
prop: 'scanCode',
label: '包条码/产品名称',
type: 1,
values: '',
width: '130',
width: '200',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'warehouseName',
// {
// prop: 'driverName',
// label: '计划目的地',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'driverPhone',
// label: '目的地',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
{
prop: 'scanStatusName',
label: '装卸状态',
type: 1,
values: '',
@ -307,19 +318,19 @@ export const detailsColumnList = [
fixed: false,
sortable: true,
},
// {
// prop: 'lineNameTitle',
// label: '订单来源',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
{
prop: 'lineNameTitle',
label: '订单来源',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'nodeNub',
label: '装车仓库',
prop: 'trayName',
label: '托盘名称',
type: 1,
values: '',
width: '130',
@ -328,8 +339,8 @@ export const detailsColumnList = [
sortable: true,
},
{
prop: 'startTime',
label: '扫码时间',
prop: 'trayCode',
label: '托盘码',
type: 1,
values: '',
width: '130',
@ -337,9 +348,59 @@ export const detailsColumnList = [
fixed: false,
sortable: true,
},
// {
// prop: 'nodeNub',
// label: '装车仓库',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'startTime',
// label: '扫码时间',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'endTime',
// label: '装卸仓库',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'planVolume',
// label: '卸车时间',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'billladingStatus',
// label: '装车类型',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
{
prop: 'endTime',
label: '装卸仓库',
prop: 'typeName',
label: '类型',
type: 1,
values: '',
width: '130',
@ -348,8 +409,8 @@ export const detailsColumnList = [
sortable: true,
},
{
prop: 'planVolume',
label: '卸车时间',
prop: 'isDataName',
label: '有无数据',
type: 1,
values: '',
width: '130',
@ -358,8 +419,8 @@ export const detailsColumnList = [
sortable: true,
},
{
prop: 'billladingStatus',
label: '装车类型',
prop: 'isAbnormalName',
label: '是否异常',
type: 1,
values: '',
width: '130',
@ -377,96 +438,86 @@ export const detailsColumnList = [
fixed: false,
sortable: true,
},
{
prop: 'totalFee',
label: '是否齐套',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'remark',
label: '托盘码',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'carrierName',
label: '一级品类',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'waybillCount',
label: '二级品类',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'totalNum',
label: '三级品类',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'totalWeight',
label: '物料名称',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'totalVolume',
label: '装车扫描人',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '卸车人',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'totalWeight',
label: '同步状态',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
// {
// prop: 'totalFee',
// label: '是否齐套',
// type: 1,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'carrierName',
// label: '一级品类',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'waybillCount',
// label: '二级品类',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'totalNum',
// label: '三级品类',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'totalWeight',
// label: '物料名称',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'totalVolume',
// label: '装车扫描人',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'createUserName',
// label: '卸车人',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'totalWeight',
// label: '同步状态',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
];
/** 运单池列表 */

2
src/option/distribution/VehicleStowage.js

@ -32,7 +32,7 @@ export const columnList = [
values: '',
width: '250',
checkarr: [],
fixed: false,
fixed: true,
sortable: true,
},
{

1
src/option/distribution/addVehicleStowage.js

@ -158,6 +158,7 @@ export const columnList = [
values: '',
width: 55,
fixed: true,
isshowSummary: true,
},
{
prop: 'createTime',

29
src/router/views/index.js

@ -1216,6 +1216,21 @@ export default [
},
],
},
{
path: '/aftersales/aftersalesWorkOrderInfo',
component: Layout,
redirect: '/aftersales/aftersalesWorkOrderInfo',
children: [
{
path: '/aftersales/aftersalesWorkOrderInfo',
name: '工单详情查看',
component: () => import('@/views/aftersales/aftersalesWorkOrderInfo.vue'),
},
],
},
{
path: '/aftersales/aftersalesWorkOrderend',
component: Layout,
@ -1252,6 +1267,20 @@ export default [
},
],
},
{
path: '/aftersales/aftersalesWorkOrderSS',
component: Layout,
redirect: '/aftersales/aftersalesWorkOrderSS',
children: [
{
path: '/aftersales/aftersalesWorkOrderSS',
name: '工单A',
component: () => import('@/views/aftersales/aftersalesWorkOrderSS.vue'),
},
],
},
// {
// path: '/distribution/turndelivery/devtmp',
// component: Layout,

5
src/utils/util.js

@ -504,10 +504,10 @@ const updateDetailQuery = (index, propName, obj) => {
}
};
export const processRowProperty = (index, row, details) => {
const nameRegex = /(\w+)Name$/; // 捕获以'Name'结尾的属性名
const nameRegex = /(\w+)NameS$/; // 捕获以'NameS'结尾的属性名
const match = row.prop.match(nameRegex);
// 如果属性以'Name'结尾,则更新相应的查询参数
// 如果属性以'NameS'结尾,则更新相应的查询参数
if (match) {
const basePropName = match[1]; // 获取不包含'Name'的属性名
updateDetailQuery(index, basePropName, details.query);
@ -589,6 +589,7 @@ export function computeNumber(a, type, b) {
* @param {any} value 传入值, 判断该值是否为数字
*/
export const isNumer = value => {
// if (typeof value !== 'number' || typeof value !== 'string') return false;
const _value = Number(value);
if (_value !== _value) return false;
return true;

370
src/views/aftersales/aftersalesWorkOrder.vue

@ -89,6 +89,7 @@
<el-button type="primary" @click="assign">工单指派</el-button>
<el-button type="primary" @click="arbitrate">申请仲裁</el-button>
<el-button type="primary" @click="Batchcompletion">批量完结</el-button>
<el-button type="primary" @click="appeal" v-if="details.query.workOrderStatus == 30">申诉</el-button>
<!-- <el-button type="primary" @click="ProcessingParty"> 处理方信息</el-button> -->
</div>
<!-- 头部右侧按钮模块 -->
@ -99,12 +100,20 @@
</div>
</div>
</el-row>
<!-- 申诉列表展示 -->
<el-tabs
type="border-card"
v-if="details.query.workOrderStatus == 30"
@tab-change="AppealTab"
>
<el-tab-pane label="处理完毕"></el-tab-pane>
<el-tab-pane label="申诉列表"></el-tab-pane>
</el-tabs>
<!-- 首页表格 -->
<el-row>
<!-- 列表模块 -->
<tablecmt
:columnList="columnList"
:columnList="publicColumnList"
:tableData="data"
:loading="loadingObj.list"
@inputTxt="inputsc"
@ -117,11 +126,14 @@
<template v-if="slotProps.scope.column.label === '操作'">
<div class="ElBtnClass">
<el-button @click="addingRecord(slotProps.scope)">新增记录</el-button>
<el-button @click="view(slotProps.scope)">查看</el-button>
<el-button v-if="!ClaimStatus" @click="view(slotProps.scope)">查看</el-button>
<!-- <el-button @click="ViewEvent(slotProps.scope)">编辑</el-button> -->
<el-button @click="reply(slotProps.scope)">回复</el-button>
<!-- <el-button @click="ViewDelete(slotProps.scope)">删除</el-button> -->
<el-button @click="CompletionButton(slotProps.scope)">完结</el-button>
<el-button v-if="ClaimStatus" @click="appeal(slotProps.scope)"
>申诉</el-button
>
</div>
</template>
</template>
@ -941,6 +953,36 @@
</div>
</div>
</el-dialog>
<!-- 申诉弹窗 -->
<el-dialog v-model="dialogappeal" title="工单申诉" width="30%">
<div class="el_appeal" v-loading="loadingappeal" element-loading-text="Loading...">
<el-select
v-model="Appealselection"
clearable
filterable
multiple
placeholder="请选择责任方"
>
<el-option
v-for="item in warehouseData"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-input
v-model="Reasonforappeal"
:rows="4"
type="textarea"
placeholder="请输入申诉原因"
/>
<span class="el_sdialog-footer">
<el-button @click="dialogappeal = false">取消</el-button>
<el-button type="primary" @click="Appealbutton"> 确定 </el-button>
</span>
</div>
</el-dialog>
</basic-container>
</div>
</el-tabs>
@ -972,18 +1014,22 @@ import {
$_getCustomerServicePersonnel,
$_arbitrate,
$_addCompletionEnd,
$_appealSubmit,
$_listSettlement,
$_listAppeal,
} from '@/api/aftersales/aftersalesWorkOrder';
import { getToken } from '@/utils/auth';
import { getDictionaryBiz } from '@/api/system/dict'; //
import functions from '@/utils/functions.js';
import { getDetailWarehouse, getDeptWarehouse } from '@/api/basicdata/basicdataWarehouse'; //
import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue';
import { columnList, recordList } from '@/option/aftersales/vueTvemp.js';
import { columnList, recordList, Claimsfield } from '@/option/aftersales/vueTvemp.js';
import { processRowProperty, isNumer, computeNumber } from '@/utils/util';
import { useRouter } from 'vue-router';
import dayjs from 'dayjs';
const $router = useRouter();
const tabValue = ref(0); //
const publicColumnList = ref([]); //
const scrollContainer = ref(null); //
const workOrderStatus = ref(null); //
const BatchFrom = ref({}); //
@ -991,13 +1037,16 @@ const currentPage = ref(1); // 默认页码
const pageSize = ref(30); //
const total = ref(0); //
const KFinput = ref(''); //
const Appealselection = ref([]); //
const KFfeel = ref(''); //
const pageList = ref([5, 10, 50, 100, 200]); //
const background = ref(true); //
const disabled = ref(false); // 使
const loading = ref(false); //
const dialogReturn = ref(false); //
const dialogappeal = ref(false); //
const Indexdialog = ref(false); //
const Reasonforappeal = ref(''); //
const Indexform = ref({}); //
const dialogcustomerService = ref(false); //
const IndexException = ref([]); //
@ -1006,8 +1055,10 @@ const warehouseData = ref([]); //处理方
const customerService = ref([]);
const IndexForm = ref(null); //
const FromDisabled = ref(false); //
const loadingappeal = ref(false); //
const SelectType = ref(null); //
const ListRow = ref(); //
const appealList = ref(); //
const StateType = ref(true); //
const dialogassign = ref(false); //
const AssignLoad = ref(false); //
@ -1035,6 +1086,8 @@ const TotalamountCompensation = ref(0); //赔款金额合计
const TotalamountReceived = ref(0); //
const Reasonarbitration = ref(null); //
const BatchcompletionHeight = ref(0); //
const userInfo = ref(); //
const ClaimStatus = ref(false); //
const TabList = ref([
{ name: 0, label: '全部' },
{ name: 1, label: '处理中' },
@ -1218,6 +1271,7 @@ const TransportLossNode = ref([
//
const IndexTable = val => {
ClaimStatus.value = false;
// ProcessingPartyState.value = false; //
details.loadingObj.list = true; //
let data = {
@ -1243,33 +1297,33 @@ const IndexTable = val => {
}
//
if (item.workOrderType == 1) {
item.workOrderTypeName = columnList[2].checkarr[0].label; //
item.workOrderTypeNameS = columnList[2].checkarr[0].label; //
} else if (item.workOrderType == 2) {
item.workOrderTypeName = columnList[2].checkarr[1].label; //
item.workOrderTypeNameS = columnList[2].checkarr[1].label; //
} else if (item.workOrderType == 3) {
item.workOrderTypeName = columnList[2].checkarr[2].label; //
item.workOrderTypeNameS = columnList[2].checkarr[2].label; //
} else if (item.workOrderType == 4) {
item.workOrderTypeName = columnList[2].checkarr[3].label; //
item.workOrderTypeNameS = columnList[2].checkarr[3].label; //
} else if (item.workOrderType == 5) {
item.workOrderTypeName = columnList[2].checkarr[4].label; //
item.workOrderTypeNameS = columnList[2].checkarr[4].label; //
}
//
if (item.discoveryNode == 1) {
item.discoveryNodeName = columnList[3].checkarr[0].label; //
item.discoveryNodeNameS = columnList[3].checkarr[0].label; //
} else if (item.discoveryNode == 2) {
item.discoveryNodeName = columnList[3].checkarr[1].label; //
item.discoveryNodeNameS = columnList[3].checkarr[1].label; //
} else if (item.discoveryNode == 3) {
item.discoveryNodeName = columnList[3].checkarr[2].label; //线
item.discoveryNodeNameS = columnList[3].checkarr[2].label; //线
} else if (item.discoveryNode == 4) {
item.discoveryNodeName = columnList[3].checkarr[3].label; //
item.discoveryNodeNameS = columnList[3].checkarr[3].label; //
} else if (item.discoveryNode == 5) {
item.discoveryNodeName = columnList[3].checkarr[4].label; //
item.discoveryNodeNameS = columnList[3].checkarr[4].label; //
} else if (item.discoveryNode == 6) {
item.discoveryNodeName = columnList[3].checkarr[5].label; //
item.discoveryNodeNameS = columnList[3].checkarr[5].label; //
} else if (item.discoveryNode == 7) {
item.discoveryNodeName = columnList[3].checkarr[6].label; //
item.discoveryNodeNameS = columnList[3].checkarr[6].label; //
} else if (item.discoveryNode == 8) {
item.discoveryNodeName = columnList[3].checkarr[7].label; //
item.discoveryNodeNameS = columnList[3].checkarr[7].label; //
}
});
details.data = res.data.data.records;
@ -1280,8 +1334,15 @@ const IndexTable = val => {
});
};
//
const Tableheaderswitching = (val = columnList) => {
publicColumnList.value = val; //
};
//
const OnLoad = () => {
//
Tableheaderswitching();
userInfo.value = JSON.parse(localStorage.getItem('TWMS-userInfo')); //
Mydata.value = JSON.parse(localStorage.getItem('my_data')); //
currentUser.value = Mydata.value.id;
//
@ -1298,6 +1359,7 @@ const OnLoad = () => {
updateDictionary(columnList[2].checkarr, 'pc_work_order'); //
updateDictionary(columnList[3].checkarr, 'pc_discovery_node'); //
IndexTable(details.query);
getDeptWarehouse({}).then(res => {
res.data.data.forEach(item => {
@ -1410,14 +1472,13 @@ const searchHide = () => {
const view = val => {
console.log(val.row.id);
$router.push({
path: '/aftersales/aftersalesWorkOrderAdd',
path: '/aftersales/aftersalesWorkOrderInfo',
query: {
id: val.row.id,
name: val.row.id + '-信息查看',
RouterState: 'view',
},
});
return
return;
console.log(val, '当前行数据');
FromDisabled.value = true; //
updateDictionary(IndexException.value, 'pc_work_order'); //
@ -1510,11 +1571,103 @@ const addingRecord = val => {
path: '/aftersales/aftersalesWorkOrderend',
query: {
id: val.row.id,
name: val.row.id + '-添加异常记录',
name: val.row.workOrderNumber + '-添加异常记录',
RouterState: 'record',
businessId: val.row.businessId,
},
});
};
//
const appeal = val => {
console.log(details.selectionList, 'details.selectionList');
if (!details.selectionList.length) {
ElMessage({
message: '请选择要申诉的数据',
type: 'warning',
});
return;
}
if (details.selectionList.length>1) {
ElMessage({
message: '只能单条申诉',
type: 'warning',
});
return;
}
dialogappeal.value = true; //
};
//
const Appealbutton = () => {
loadingappeal.value = true; //
console.log(Appealselection.value, '当前选择的责任人');
console.log(warehouseData.value, '要循环处理的参数');
let data = {
peopleEntityList: [], //
};
data.workOrderId=details.selectionList[0].id
data.reason=Reasonforappeal.value
data.appealPeopleName= warehouseData.value
.filter(item => Appealselection.value.includes(item.value))
.map(item => item.label)
.join(','), //
details.selectionList.forEach(item => {
console.log(item.id);
console.log(item, '已经选择的列表');
data['peopleEntityList'].push({
workOrderId: item.id, //ID
warehouseId: item.warehouseId == '/' ? '' : item.warehouseId,
reason: Reasonforappeal.value, //
claimant: userInfo.value.content.user_name, //
claimantUserId: userInfo.value.content.user_id, //ID
actualPersonName: warehouseData.value
.filter(item => Appealselection.value.includes(item.value))
.map(item => item.label)
.join(','), //
});
});
console.log(data, '处理好的值');
$_appealSubmit(data).then(res => {
dialogappeal.value = false; //
loadingappeal.value = false; //
console.log(res, '申诉成功返回值');
ProcessingPartyState.value = false; //
data.workOrderStatus = 30;
details.query.workOrderStatus = 30;
ArbitrationStatus.value = false; //
tabValue.value = 2;
empty(); //
IndexTable({ workOrderStatus: 30 });
if (res.data.code == 200) {
ElMessage({
message: res.data.msg,
type: 'success',
});
}
});
};
//
const AppealTab = val => {
if (val == 0) {
console.log('处理完毕');
ProcessingPartyState.value = false; //
data.workOrderStatus = 30;
details.query.workOrderStatus = 30;
ArbitrationStatus.value = false; //
empty(); //
IndexTable({ workOrderStatus: 30 });
} else {
console.log('当前是申诉列表');
let data={}
$_listAppeal(data).then(res=>{
console.log(res,'申诉列表返回值')
})
}
};
//
const abnormalChange = val => {
console.log(val);
@ -1587,8 +1740,14 @@ const handlePictureCardPreview = uploadFile => {
/** 表格表头输入框搜索 */
const inputsc = (index, row) => {
details.query[row.prop] = index;
processRowProperty(index, row, details);
details.query[row.prop] = index;
if (ClaimStatus.value) {
//
settlementclaim(details.query);
return;
}
if (!ProcessingPartyState.value) {
IndexTable(details.query); //
console.log('首页');
@ -1599,6 +1758,13 @@ const inputsc = (index, row) => {
};
//
const searchChange = () => {
if (ClaimStatus.value) {
//
settlementclaim();
details.search = false; //
return;
}
details.search = false; //
if (!ProcessingPartyState.value) {
IndexTable(details.query); //
@ -1647,6 +1813,13 @@ const btnsc = val => {
/** 表格表头下拉框选择 */
const selectsc = (index, row) => {
processRowProperty(index, row, details);
if (ClaimStatus.value) {
//
settlementclaim(details.query);
return;
}
if (!ProcessingPartyState.value) {
IndexTable(details.query); //
} else {
@ -1658,13 +1831,20 @@ function onLoad() {}
/** 表格表头复选框选择 */
const selectionChange = list => {
console.log(list);
console.log(list, '当前选择的数据');
details.selectionList = list;
};
/** 页码改变执行的回调 */
const currentChange = val => {
page.value.currentPage = val;
if (ClaimStatus.value) {
//
settlementclaim(details.query);
return;
}
if (!ProcessingPartyState.value) {
//
IndexTable(details.query);
@ -1675,6 +1855,13 @@ const currentChange = val => {
//
const sizeChange = val => {
page.value.pageSize = val;
if (ClaimStatus.value) {
//
settlementclaim(details.query);
return;
}
if (!ProcessingPartyState.value) {
//
IndexTable(details.query);
@ -1724,6 +1911,57 @@ const changeProcessingResults = val => {
}
});
};
//
const settlementclaim = val => {
console.log(Claimsfield, '理赔数据');
ClaimStatus.value = true; //
details.columnList = Claimsfield;
Claimsfield[3].checkarr = []; //
Claimsfield[7].checkarr = []; //
Claimsfield[9].checkarr = []; //
getDeptWarehouse({}).then(res => {
res.data.data.forEach(item => {
Claimsfield[3].checkarr.push({
value: item.name,
label: item.name,
});
});
});
getDictionaryBiz('pc_work_order').then(res => {
res.data.data.forEach(item => {
Claimsfield[7].checkarr.push({
value: item.dictValue,
label: item.dictValue,
});
});
});
getDictionaryBiz('pc_discovery_node').then(res => {
res.data.data.forEach(item => {
Claimsfield[9].checkarr.push({
value: item.dictValue,
label: item.dictValue,
});
});
});
// details.columnList warehouseData.value
details.loadingObj.list = true; //
console.log(details, 'details');
let data = {
current: details.page.currentPage,
size: details.page.pageSize,
...val,
};
console.log(data, '要传递的参数');
$_listSettlement(data).then(res => {
details.loadingObj.list = false; //
console.log(res, '查询理赔数据');
details.data = res.data.data.records; //
page.value.total = res.data.data.total;
});
};
//
const tabChenge = val => {
console.log(val, '触发了标签栏');
@ -1732,6 +1970,7 @@ const tabChenge = val => {
ProcessingPartyState.value = false; //
details.query.workOrderStatus = null;
ArbitrationStatus.value = false; //
Tableheaderswitching(columnList);
IndexTable();
empty();
console.log('全部');
@ -1741,6 +1980,7 @@ const tabChenge = val => {
data.workOrderStatus = 20;
details.query.workOrderStatus = 20;
ArbitrationStatus.value = true; //
Tableheaderswitching(columnList);
empty();
IndexTable(data);
} else if (val == 2) {
@ -1749,30 +1989,32 @@ const tabChenge = val => {
data.workOrderStatus = 30;
details.query.workOrderStatus = 30;
ArbitrationStatus.value = false; //
Tableheaderswitching(columnList);
empty();
IndexTable(data);
} else if (val == 3) {
console.log('待处理');
ProcessingPartyState.value = true; //
details.query.workOrderStatus = '';
ArbitrationStatus.value = true; //
Tableheaderswitching(columnList);
empty();
ProcessingPartyFun(data);
} else if (val == 4) {
ProcessingPartyState.value = false; //
//
data.workOrderStatus = 40;
details.query.workOrderStatus = 40;
details.query.workOrderStatus = null;
ArbitrationStatus.value = false; //
Tableheaderswitching(Claimsfield); //
empty();
IndexTable(data);
settlementclaim();
} else if (val == 5) {
//
ProcessingPartyState.value = false; //
data.workOrderStatus = 70;
details.query.workOrderStatus = 70;
ArbitrationStatus.value = false; //
Tableheaderswitching(columnList);
empty();
IndexTable(data);
} else if (val == 6) {
@ -1781,6 +2023,7 @@ const tabChenge = val => {
data.workOrderStatus = 80;
details.query.workOrderStatus = 80;
ArbitrationStatus.value = false; //
Tableheaderswitching(columnList);
empty();
IndexTable(data);
} else if (val == 7) {
@ -1789,6 +2032,7 @@ const tabChenge = val => {
data.workOrderStatus = 60;
details.query.workOrderStatus = 60;
ArbitrationStatus.value = false; //
Tableheaderswitching(columnList);
empty();
IndexTable(data);
}
@ -1817,6 +2061,7 @@ const showdrawer = _flag => {
//
const ProcessingPartyFun = val => {
ClaimStatus.value = false; //
details.query.workOrderStatus = null;
details.loadingObj.list = true; //
let data = {
@ -1843,33 +2088,33 @@ const ProcessingPartyFun = val => {
}
//
if (item.workOrderType == 1) {
item.workOrderTypeName = columnList[2].checkarr[0].label; //
item.workOrderTypeNameS = columnList[2].checkarr[0].label; //
} else if (item.workOrderType == 2) {
item.workOrderTypeName = columnList[2].checkarr[1].label; //
item.workOrderTypeNameS = columnList[2].checkarr[1].label; //
} else if (item.workOrderType == 3) {
item.workOrderTypeName = columnList[2].checkarr[2].label; //
item.workOrderTypeNameS = columnList[2].checkarr[2].label; //
} else if (item.workOrderType == 4) {
item.workOrderTypeName = columnList[2].checkarr[3].label; //
item.workOrderTypeNameS = columnList[2].checkarr[3].label; //
} else if (item.workOrderType == 5) {
item.workOrderTypeName = columnList[2].checkarr[4].label; //
item.workOrderTypeNameS = columnList[2].checkarr[4].label; //
}
//
if (item.discoveryNode == 1) {
item.discoveryNodeName = columnList[3].checkarr[0].label; //
item.discoveryNodeNameS = columnList[3].checkarr[0].label; //
} else if (item.discoveryNode == 2) {
item.discoveryNodeName = columnList[3].checkarr[1].label; //
item.discoveryNodeNameS = columnList[3].checkarr[1].label; //
} else if (item.discoveryNode == 3) {
item.discoveryNodeName = columnList[3].checkarr[2].label; //线
item.discoveryNodeNameS = columnList[3].checkarr[2].label; //线
} else if (item.discoveryNode == 4) {
item.discoveryNodeName = columnList[3].checkarr[3].label; //
item.discoveryNodeNameS = columnList[3].checkarr[3].label; //
} else if (item.discoveryNode == 5) {
item.discoveryNodeName = columnList[3].checkarr[4].label; //
item.discoveryNodeNameS = columnList[3].checkarr[4].label; //
} else if (item.discoveryNode == 6) {
item.discoveryNodeName = columnList[3].checkarr[5].label; //
item.discoveryNodeNameS = columnList[3].checkarr[5].label; //
} else if (item.discoveryNode == 7) {
item.discoveryNodeName = columnList[3].checkarr[6].label; //
item.discoveryNodeNameS = columnList[3].checkarr[6].label; //
} else if (item.discoveryNode == 8) {
item.discoveryNodeName = columnList[3].checkarr[7].label; //
item.discoveryNodeNameS = columnList[3].checkarr[7].label; //
}
});
details.data = res.data.data.records;
@ -1900,12 +2145,12 @@ const FKList = () => {
//
const reply = val => {
$router.push({
path:'/aftersales/customerService',
query:{
row:JSON.stringify(val.row),
}
path: '/aftersales/customerService',
query: {
row: JSON.stringify(val.row),
},
});
return
return;
console.log(val, 'ID++++++++');
console.log(val.row);
dialogcustomerService.value = true; //
@ -2538,6 +2783,8 @@ const CompletedSubmission = () => {
display: flex;
align-items: flex-end;
margin-bottom: 10px;
position: fixed;
bottom: 0;
}
.el-times {
:deep(.el-input__wrapper) {
@ -2741,7 +2988,7 @@ const CompletedSubmission = () => {
display: flex;
align-items: center;
}
:deep(.el-tab-pane){
:deep(.el-tab-pane) {
padding: 10px;
}
}
@ -2772,24 +3019,35 @@ const CompletedSubmission = () => {
display: flex;
justify-content: flex-end;
}
:deep(.el_tabs){
:deep(.el_tabs) {
width: 100%;
display: flex;
flex-direction: column;
.el-tabs__content{
padding: 0;
}
display: flex;
flex-direction: column;
.el-tabs__content {
padding: 0;
}
}
:deep(.avue-crud__pagination){
:deep(.avue-crud__pagination) {
padding-top: 2px !important;
}
.arbitrate{
.arbitrate {
margin-top: 36px;
.el_btn{
.el_btn {
margin-top: 10px;
}
:deep(.el-tabs__content){
:deep(.el-tabs__content) {
padding: 0 !important;
}
}
.el_appeal {
:deep(.el-select) {
width: 100% !important;
margin-bottom: 10px;
}
}
.el_sdialog-footer {
display: flex;
justify-content: flex-end;
margin-top: 10px;
}
</style>

1002
src/views/aftersales/aftersalesWorkOrderAdd.vue

File diff suppressed because it is too large Load Diff

1287
src/views/aftersales/aftersalesWorkOrderInfo.vue

File diff suppressed because it is too large Load Diff

32
src/views/aftersales/aftersalesWorkOrderSS.vue

@ -478,23 +478,23 @@ export default {
this.form.processorEntityList = processorEntityList;
console.log(this.form,'处理好的数据');
// add(this.form).then(() => {
// // this.box = false;
// this.onLoad(this.page);
// this.$message({
// type: "success",
// message: "!"
// });
// });
add(this.form).then(() => {
// this.box = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
});
} else {
// update(this.form).then(() => {
// this.box = false;
// this.onLoad(this.page);
// this.$message({
// type: "success",
// message: "!"
// });
// })
update(this.form).then(() => {
this.box = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
})
}
},
handleAdd(){

1565
src/views/aftersales/aftersalesWorkOrderend.vue

File diff suppressed because it is too large Load Diff

2
src/views/aftersales/customerService.vue

@ -192,7 +192,7 @@ const messagesendFn = () => {
content: KFinput.value,
createTime: formattedTime,
});
//
//
setTimeout(() => {
const container = scrollContainer.value;
if (container) {

34
src/views/basicdata/warehouse/goodsShelf/basicdataGoodsShelfView.vue

@ -211,7 +211,7 @@
<el-button type="primary" @click="showupt(2)">按自编号</el-button>
<el-button type="primary" @click="showupt(3)">按包件</el-button>
<el-button type="primary" @click="showupt(4)">按托盘</el-button>
<el-button type="primary" @click="showupt(5)">按库存品</el-button>
<!-- <el-button type="primary" @click="showupt(5)">按库存品</el-button> -->
<el-button type="primary" @click="showupt(6)">按零担</el-button>
<el-button type="danger" @click="upgood">禁用</el-button>
</span>
@ -581,6 +581,7 @@ import {
posturl,
Alloclocationsnub,
disable,
$_locationsnub,
} from '@/api/basicdata/basicdataGoodsShelfView';
import { reactive, ref, toRefs, onMounted, getCurrentInstance } from 'vue';
import { getToken } from '@/utils/auth';
@ -640,16 +641,17 @@ let details = reactive({
inputtxts1: '',
boxdetails: {},
});
onMounted(() => {
details.contenbxsty['--length'] = details.contenarr[0]?.length || 0;
initconfig();
initnumber();
});
async function initnumber() {
let res = await Alloclocationsnub();
console.log(res.data.data);
details.countnumber = res.data.data;
}
// async function initnumber() {
// let res = await Alloclocationsnub();
// console.log(res.data.data);
// details.countnumber = res.data.data;
// }
// watchEffect(()=>{
// if(details.isshowupt){
// details.inputtxts=''
@ -663,6 +665,14 @@ async function initnumber() {
async function initconfig() {
let res = await getstoreCargo();
details.arrlist = res.data.data;
console.log(details.arrlist, '仓库列表');
if (details.arrlist.length > 0) {
$_locationsnub({ warehouseId: details.arrlist[0].id }).then(res => {
details.countnumber =res.data.data
console.log('初始化仓库参数成功', res);
});
}
if (details.arrlist[details.checkselect]?.warehouseGoodsAreaVOList.length > 0) {
details.checkregionselect = 0;
details.checksele = 0;
@ -837,10 +847,17 @@ async function upgood() {
}
}
const checkcso = () => {
const checkcso = val => {
console.log(details.arrlist[val].id, '选择的ID-=====');
console.log(val, '货位接受参数');
$_locationsnub({ warehouseId: details.arrlist[val].id }).then(res => {
details.countnumber =res.data.data
console.log('切换请求成功', res);
});
if (details.arrlist[details.checkselect]?.warehouseGoodsAreaVOList.length > 0) {
details.checkregionselect = 0;
details.checksele = 0;
checkshelves();
} else {
details.checkregionselect = '';
@ -1557,6 +1574,7 @@ const showupt = value => {
}
searchbuts();
};
const alldown = async () => {
console.log(scope.row);
let data = {
@ -2546,7 +2564,7 @@ const {
// font-size: 14px;
}
.type2 {
border: 1px solid #3AD8BC;
border: 1px solid #3ad8bc;
background: #ffffff;
border-radius: 4px 4px 4px 4px;
}

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

@ -23,7 +23,7 @@
</div>
<!-- 控件 -->
<div>
<div v-if="Number(details.pageType) === 1">
<!-- 删除节点 -->
<el-button icon="Delete" v-if="index !== 0" @click="handleDelNode(index)" />
<!-- 新增节点 -->
@ -47,7 +47,7 @@
@change="val => destinationWarehouseNameChange(val, index)"
:remote-method="remoteMethod"
:loading="details.loadingObj.loading"
:disabled="index === 0"
:disabled="Number(details.pageType) !== 1 || index === 0"
>
<el-option
v-for="val in details.options"
@ -135,7 +135,11 @@
<!-- 装车方式 -->
<div class="form_row_item">
<el-form-item inline label="装车方式" prop="loadingType">
<el-radio-group v-model="form.loadingType" class="ml-4">
<el-radio-group
v-model="form.loadingType"
:disabled="Number(details.pageType) !== 1"
class="ml-4"
>
<el-radio label="1" size="large">手动装车(后台)</el-radio>
<el-radio label="2" size="large">扫描装车</el-radio>
</el-radio-group>
@ -225,7 +229,10 @@
:precision="2"
:min="0"
:step="1"
:disabled="slotProps.scope.row.blackList.includes(slotProps.scope.column.property)"
:disabled="
Number(details.pageType) === 2 ||
slotProps.scope.row.blackList.includes(slotProps.scope.column.property)
"
@input="handleComputedNum"
v-model="slotProps.scope.row[slotProps.scope.column.property]"
/>
@ -324,6 +331,10 @@
</tablecmt>
<div class="avue-crud__pagination flex-c-sb" style="width: 100%">
<div class="total_row" style="margin-top: 0">
选中: {{ details.selectionList.length }}
</div>
<!-- 分页模块 -->
<el-pagination
style="zoom: 0.9"
@ -413,6 +424,8 @@
<el-button icon="el-icon-search" @click="searchHide" circle></el-button>
</div>
</div>
<!-- 列表 -->
<tablecmt
class="columnList"
ref="newColumnListNode"
@ -423,10 +436,8 @@
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '计划数'">
<!-- <el-text size="small" text @click="handleEditplanNum(slotProps.scope)">{{
slotProps.scope.row.planNum
}}</el-text> -->
<el-input-number
v-if="Number(details.pageType) === 1"
v-model="slotProps.scope.row.planNum"
controls-position="right"
:precision="0"
@ -434,9 +445,22 @@
:max="slotProps.scope.row.stockNum"
:step="1"
/>
<el-text
size="small"
v-else
text
@click="handleEditplanNum(slotProps.scope, item)"
>{{ slotProps.scope.row.planNum }}</el-text
>
</template>
</template>
</tablecmt>
<div class="total_row">
<span> 选中: {{ item.selectionList.length }} </span>
<span> {{ item.lineCarsOrderList.length }} </span>
</div>
</div>
</template>
</div>
@ -445,6 +469,8 @@
<!-- 页面底部占位 -->
<div class="footer"></div>
<div class="button-container">
<el-button class="submitButton" @click="back"> 关闭 </el-button>
<el-button
class="submitButton"
icon="Promotion"
@ -454,14 +480,58 @@
>
提交
</el-button>
<el-button class="submitButton" icon="Close" type="primary" @click="back"> 关闭 </el-button>
</div>
</div>
</basic-container>
<!-- 包内产品 -->
<el-dialog
title="修改计划数量"
v-model="details.popUpShow.editPlanNumberVisited"
width="40%"
append-to-body
class="packageDetailColumnListVisited"
>
<div class="edit_title">订单号: {{ details.editInfo.orderCode }}</div>
<div class="flex-c-sb edit_row">
<div class="flex1">
<span>当前在库数</span>
{{ details.editInfo.stockNum }}
</div>
<div class="flex1">
<span>已装车数量</span>
{{ details.editInfo.realNum }}
</div>
</div>
<el-form>
<el-form-item label="计划数量:" label-width="100px">
<el-input-number
controls-position="right"
:min="0"
:precision="0"
:max="details.editInfo.stockNum"
class="editInput"
v-model="details.editInfo.enterPlanNum"
style="flex: 1; text-align: left !important"
/>
</el-form-item>
</el-form>
<div class="flex-c-c">
<el-button>取消</el-button>
<el-button
type="primary"
:loading="btnLoadingObj.editPlanNumBtn"
icon="Promotion"
@click="handleSubmitEdit"
>
提交
</el-button>
</div>
</el-dialog>
</template>
<script setup lang="ts">
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import { ref, reactive, toRefs, computed, onMounted, nextTick, onActivated, watch } from 'vue';
import functions from '@/utils/functions';
import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
@ -480,6 +550,12 @@ import {
postFindCarListByName,
postFindDriverListByName,
postSaveNew,
postSelectEditDetailByLoadId,
postFindUseOrderList,
postRemoveCarsOrderByCarsOrderId,
postUpdatePlanNumByCarsOrderId,
postAddOrderToFinalNodeId,
postUpdateCarsLoadBasicData,
} from '@/api/distribution/AddVehicleStowage';
import { useRouter, useRoute } from 'vue-router';
import { ElMessage, ElMessageBox } from 'element-plus';
@ -576,29 +652,16 @@ const details = reactive<any>({
},
/** 弹出层显示 */
popUpShow: {
/** 装车详情 */
truckLoadingDetailVisited: false,
/** 零担补录 */
zeroAdditionalRecordingVisited: false,
/** 对比报表 */
comparativeStatementPopUp: false,
/** 修改计划数量 */
editPlanNumberVisited: false,
},
/** 列表Dom节点 */
listNode: '',
form: { loadingType: '2' },
/** 零担补录信息 */
zeroAdditionalRecordingInfo: {
oldPage: {
pageSize: 30,
pageNum: 1,
total: 0,
},
},
/** 全屏 */
fullscreenObj: {
/** 装车明细 */
truckLoadingDetailPopUp: false,
comparativeStatementPopUp: false,
},
/** 匹配 */
rules: {
@ -644,24 +707,25 @@ const details = reactive<any>({
],
},
/** 页面信息 */
pageInfo: {},
pageInfo: {
startWarehouseInfo: {},
},
/** 目的仓 */
options: [],
/** 车牌号 */
carListByName: [],
/** 司机 */
driverListByName: [],
/** 当前页面类型 -- 1: 新增; 2: 编辑; 3: 零担补录 */
/** 当前页面类型 -- 1: 新增; 2: 编辑; 3: 节点费用 */
pageType: 1,
/** 编辑&节点费用下的loadId */
loadId: '',
/** 编辑模式下当前仓的位置索引 */
warehouseIndex: computed(() => {
if (Number(details.pageType) === 1) return 0;
else if (Number(details.pageType) === 2) return 0;
}),
warehouseIndex: 0,
/** 步骤条激活位置 */
active: computed(() => {
if (Number(details.pageType) === 1) return details.nodeInfoData.length;
else if (Number(details.pageType) === 2) return 0;
else if (Number(details.pageType) === 2) return details.warehouseIndex;
}),
/** 被选中的orderCode组成的list */
orderCodeList: [],
@ -672,6 +736,8 @@ const details = reactive<any>({
const btnLoadingObj = reactive({
/** 提交按钮 */
submitBtn: false,
/** 修改计划数量 */
editPlanNumBtn: false,
});
const {
search,
@ -758,28 +824,122 @@ const handleEditForbidden = (_arr: []) => {
return [_firstChild, ..._otherList];
};
/** 请求运单数据 */
const initOriginWarehouseOrder = async (params = {}) => {
try {
details.loadingObj.oldListLoading = true;
const submitData = {
...details.page,
loadId: details.pageInfo.startWarehouseInfo.warehouseId,
orderCodes: details.orderCodeList,
...details.query,
...params,
};
if (submitData.orderCodes.length === 0) delete submitData.orderCodes;
const res = await postFindAllOrderList(submitData);
console.log('res :>> ', res);
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.page.total = data.total;
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.oldListLoading = false;
}
};
/** 请求添加在调度池中的数据 */
const initDispatchOrder = async item => {
try {
//
item.loading = true;
const submitData = {
loadId: details.loadId,
finalNodeId: item.nodeId,
};
const res = await postFindUseOrderList(submitData);
const { code, data } = res.data;
if (code !== 200) return;
item.lineCarsOrderList = data;
} catch (error) {
} finally {
//
item.loading = false;
}
};
/** 请求页面数据 */
const onLoad = async () => {
const res = await postloadFindLoadInitData();
const { code, data } = res.data;
if (code !== 200) return;
details.pageInfo = data;
console.log('data.startWarehouseInfo.nodeName :>> ', data.startWarehouseInfo.nodeName);
details.nodeInfoData = [
{
nodeName: data.startWarehouseInfo.warehouseName,
nodeId: data.startWarehouseInfo.warehouseId,
linkMan: data.startWarehouseInfo.linkMan,
linkPhone: data.startWarehouseInfo.linkMobile,
linkAddress: data.startWarehouseInfo.linkAddress,
},
];
details.nodeInfoData = handleEditForbidden(details.nodeInfoData);
console.log('details.nodeInfoData :>> ', details.nodeInfoData);
details.form.startWarehouseName = data.startWarehouseInfo.warehouseName;
details.form.startWarehouseId = data.startWarehouseInfo.warehouseId;
//
details.loadId = $route.query.loadId;
details.pageType = $route.query.type;
//
if (Number(details.pageType) === 1) {
details.form = {};
const res = await postloadFindLoadInitData();
const { code, data } = res.data;
if (code !== 200) return;
details.pageInfo = data;
console.log('data.startWarehouseInfo.nodeName :>> ', data.startWarehouseInfo.nodeName);
details.nodeInfoData = [
{
nodeName: data.startWarehouseInfo.warehouseName,
nodeId: data.startWarehouseInfo.warehouseId,
linkMan: data.startWarehouseInfo.linkMan,
linkPhone: data.startWarehouseInfo.linkMobile,
linkAddress: data.startWarehouseInfo.linkAddress,
},
];
details.nodeInfoData = handleEditForbidden(details.nodeInfoData);
console.log('details.nodeInfoData :>> ', details.nodeInfoData);
details.form.startWarehouseName = data.startWarehouseInfo.warehouseName;
details.form.startWarehouseId = data.startWarehouseInfo.warehouseId;
}
//
else if (Number(details.pageType) === 2) {
console.log('222 :>> ', 222);
const res = await postSelectEditDetailByLoadId({ loadId: details.loadId });
console.log('res :>> ', res);
const { code, data } = res.data;
details.nodeInfoData = handleEditForbidden(
data.allCarsLineList.map((val, index) => {
if (val.nodeName === data.warehouseName) {
//
details.warehouseIndex = index;
}
//
val.query = {};
//
val.selectionList = [];
//
val.lineCarsOrderList = [];
val.filterData = [];
val.loading = false;
val.selectionChange = (list, index) => {
details.nodeInfoData[index].selectionList = list;
console.log('list :>> ', list);
};
initDispatchOrder(val);
return val;
})
);
details.form = data.carsLoadEntity;
details.pageInfo.loadType = data.loadType;
details.pageInfo.chargeType = data.chargeType;
details.pageInfo.startWarehouseInfo.warehouseId = data.carsLoadEntity.startWarehouseId;
details.pageInfo.startWarehouseInfo.warehouseName = data.carsLoadEntity.startWarehouseName;
//
initOriginWarehouseOrder();
//
setTabelHeight();
}
};
//
onLoad();
/** 查询仓库 */
@ -802,31 +962,6 @@ const destinationWarehouseNameChange = (val, index) => {
details.nodeInfoData[index].linkAddress = _value.linkAddress;
};
/** 请求运单数据 */
const initOriginWarehouseOrder = async (params = {}) => {
try {
details.loadingObj.oldListLoading = true;
const submitData = {
...details.page,
loadId: details.pageInfo.startWarehouseInfo.warehouseId,
orderCodes: details.orderCodeList,
...details.query,
...params,
};
if (submitData.orderCodes.length === 0) delete submitData.orderCodes;
const res = await postFindAllOrderList(submitData);
console.log('res :>> ', res);
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.page.total = data.total;
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.oldListLoading = false;
}
};
/** 搜索 */
const searchChange = () => {
initOriginWarehouseOrder();
@ -925,32 +1060,6 @@ const beforeClose = done => {
details.view = false;
};
/**
* 是否开启床车明细全屏
* @params(_type) 开启或关闭
*/
const handleFullScrean = (_type: 'open' | 'close', _name: string) => {
let _node = '';
if (_name) _node = document.querySelectorAll(`.${_name} .maboxhi`);
console.log('_node :>> ', _node);
switch (_name) {
case 'comparativeStatementPopUp':
details.fullscreenObj.comparativeStatementPopUp =
!details.fullscreenObj.comparativeStatementPopUp;
break;
default:
details.fullscreenObj[_name] = !details.fullscreenObj[_name];
if (_type === 'close') {
if (_node) setNodeHeight(_node, '500px');
} else {
if (_node) setNodeHeight(_node);
}
break;
}
};
/** 司机改变时 1: 主驾 2: 副驾 */
const handleNameChange = (type: number) => {
const findValue = type === 1 ? form.value.driverName : form.value.name;
@ -997,6 +1106,7 @@ const handleComputedNum = () => {
const _key = nodeInfokeys[index];
//
if (!isNumer(item[_key])) item[_key] = 0;
else item[_key] = Number(item[_key]);
_totalNum = computeNumber(_totalNum, '+', item[_key]).result;
}
}
@ -1048,7 +1158,7 @@ const handleDelNode = (index: number) => {
};
/** 加入调度池 */
const handleAddWaybill = (index: number) => {
const handleAddWaybill = async (index: number) => {
const _node = details.nodeInfoData[index];
if (!_node.nodeName || !_node.nodeId) {
return ElMessage({
@ -1058,51 +1168,96 @@ const handleAddWaybill = (index: number) => {
}
console.log('_node :>> ', _node);
//
if (Number(details.pageType) === 1) {
for (let item of details.selectionList) {
item.planNum = item.stockNum;
item.loadingNum = 0;
_node.lineCarsOrderList.push(item);
}
for (let item of details.selectionList) {
item.planNum = item.stockNum;
item.loadingNum = 0;
_node.lineCarsOrderList.push(item);
details.orderCodeList = [
...new Set([
...details.orderCodeList,
...details.selectionList.map(val => val.orderCode + ',' + val.waybillNo),
]),
];
console.log('details.orderCodeList :>> ', details.orderCodeList);
const orderCodes = details.selectionList.map(val => val.orderCode);
clearSelectionList();
details.page.pageNum = 1;
initOriginWarehouseOrder();
}
details.orderCodeList = [
...new Set([
...details.orderCodeList,
...details.selectionList.map(val => val.orderCode + ',' + val.waybillNo),
]),
];
console.log('details.orderCodeList :>> ', details.orderCodeList);
const orderCodes = details.selectionList.map(val => val.orderCode);
clearSelectionList();
details.page.pageNum = 1;
initOriginWarehouseOrder();
//
else if (Number(details.pageType) === 2) {
console.log('_node :>> ', _node);
const submitData = {
loadId: details.loadId,
carsOrderList: details.selectionList.map(val => {
return {
nodeId: details.pageInfo.startWarehouseInfo.warehouseId,
nodeName: details.pageInfo.startWarehouseInfo.warehouseName,
orderCode: val.orderCode,
waybillNo: val.waybillNo,
totalNum: val.stockNum,
planNum: val.stockNum,
type: 1,
finalNodeId: _node.nodeId,
};
}),
};
const res = await postAddOrderToFinalNodeId(submitData);
const { code, data } = res.data;
if (code !== 200) return;
ElMessage.success('移除成功');
initDispatchOrder(_node);
initOriginWarehouseOrder();
}
// postAddOrderToFinalNodeId
};
/** 移除调度池 */
const handleRemoveWaybill = (index: number) => {
const handleRemoveWaybill = async (index: number) => {
const _node = details.nodeInfoData[index];
console.log('details.nodeInfoData[index] :>> ', details.nodeInfoData[index]);
if (!_node.nodeName || !_node.nodeId) {
return ElMessage({
type: 'warning',
message: '未选择目的仓或目的仓信息异常',
//
if (Number(details.pageType) === 1) {
if (!_node.nodeName || !_node.nodeId) {
return ElMessage({
type: 'warning',
message: '未选择目的仓或目的仓信息异常',
});
}
console.log('_node :>> ', _node);
//
_node.lineCarsOrderList = _node.lineCarsOrderList.filter((val, index) => {
const _flag = !_node.selectionList.includes(val);
if (!_flag) {
const _code = val.orderCode + ',' + val.waybillNo;
const _index = details.orderCodeList.indexOf(_code);
// +
details.orderCodeList.splice(_index, 1);
}
return _flag;
});
clearSelectionList();
initOriginWarehouseOrder();
}
//
else if (Number(details.pageType) === 2) {
console.log('_node :>> ', _node);
const submitData = {
carsOrderId: _node.selectionList.map(val => val.carsOrderId).join(','),
};
const res = await postRemoveCarsOrderByCarsOrderId(submitData);
const { code, data } = res.data;
if (code !== 200) return;
ElMessage.success('移除成功');
initDispatchOrder(_node);
initOriginWarehouseOrder();
}
console.log('_node :>> ', _node);
//
_node.lineCarsOrderList = _node.lineCarsOrderList.filter((val, index) => {
const _flag = !_node.selectionList.includes(val);
if (!_flag) {
const _code = val.orderCode + ',' + val.waybillNo;
const _index = details.orderCodeList.indexOf(_code);
// +
details.orderCodeList.splice(_index, 1);
}
return _flag;
});
clearSelectionList();
initOriginWarehouseOrder();
};
/** 查询司机信息 */
@ -1128,7 +1283,39 @@ const remoteMethodCar = async val => {
};
/** 修改计划数 */
const handleEditplanNum = row => {};
const handleEditplanNum = ({ row }, item) => {
console.log('row :>> ', row);
details.editInfo = row;
details.editInfo.enterPlanNum = Number(row.planNum);
details.editInfo.item = item;
console.log('details.editInfo :>> ', details.editInfo);
details.popUpShow.editPlanNumberVisited = true;
};
/** 提交修改计划数量 */
const handleSubmitEdit = async () => {
try {
btnLoadingObj.editPlanNumBtn = true;
const submitData = {
carsOrderId: details.editInfo.carsOrderId,
planNum: details.editInfo.enterPlanNum,
};
const res = await postUpdatePlanNumByCarsOrderId(submitData);
const { code } = res.data;
if (code !== 200) return;
ElMessage.success('修改成功');
initDispatchOrder(details.editInfo.item);
details.popUpShow.editPlanNumberVisited = false;
} catch (error) {
console.log('error :>> ', error);
} finally {
// loading
btnLoadingObj.editPlanNumBtn = false;
}
};
/** 关闭页面 */
const back = () => {
@ -1136,6 +1323,107 @@ const back = () => {
$router.back('-1');
};
/** 新增提交 */
const addSubmit = async () => {
try {
btnLoadingObj.submitBtn = true;
const _warehouseIds = [];
const _warehouseNames = [];
const _flag = details.nodeInfoData.every((value, index) => {
_warehouseNames.push(value.nodeName);
if (index === 0) return true;
_warehouseIds.push(value.nodeId);
return value.nodeName && value.nodeId;
});
if (!_flag) {
return ElMessage({
type: 'warning',
message: '节点信息有误',
});
}
const submitData = {
...form.value,
carsLoadLineList: JSON.parse(JSON.stringify(details.nodeInfoData)),
};
//
submitData.endWarehouseIds = _warehouseIds.join(',');
submitData.endWarehouseNames = _warehouseNames.slice(1).join(',');
submitData.carsLineName = _warehouseNames.join('->');
let _lineCarsOrderList = [];
submitData.carsLoadLineList.forEach((val, i) => {
val.nodeType = '1';
val.sort = i + 1;
delete val.blackList;
if (i === 0) return;
//
delete val.query;
delete val.selectionList;
delete val.loading;
delete val.data;
delete val.filterData;
_lineCarsOrderList = [
..._lineCarsOrderList,
...val.lineCarsOrderList.map(value => {
value.nodeId = submitData.startWarehouseId;
value.nodeName = submitData.startWarehouseName;
value.finalNodeId = val.nodeId;
value.totalNum = 20;
return value;
}),
];
delete val.lineCarsOrderList;
});
submitData.carsLoadLineList[0].lineCarsOrderList = _lineCarsOrderList;
console.log('submitData :>> ', submitData);
const res = await postSaveNew(submitData);
const { code, msg } = res.data;
if (code !== 200) return;
ElMessage({
message: msg,
type: 'success',
});
back();
console.log('res :>> ', res);
} catch (error) {
} finally {
btnLoadingObj.submitBtn = false;
}
};
/** 修改提交 */
const editSubmit = async () => {
try {
btnLoadingObj.submitBtn = false;
const submitData = { loadId: details.loadId, ...details.form };
console.log('details.form :>> ', details.form);
console.log('submitData :>> ', submitData);
const res = await postUpdateCarsLoadBasicData(submitData);
const { code, msg } = res.data;
if (code !== 200) return;
ElMessage({
message: msg,
type: 'success',
});
back();
// console.log('res :>> ', res);
} catch (error) {
console.log('error :>> ', error);
} finally {
btnLoadingObj.submitBtn = false;
}
};
/** 提交 */
const handleSubmit = (formEl: FormInstance | undefined) => {
if (btnLoadingObj.submitBtn) return;
@ -1143,82 +1431,19 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
console.log('111 :>> ', 111);
formEl.validate(async (valid, fields) => {
if (valid) {
try {
btnLoadingObj.submitBtn = true;
const _warehouseIds = [];
const _warehouseNames = [];
const _flag = details.nodeInfoData.every((value, index) => {
_warehouseNames.push(value.nodeName);
if (index === 0) return true;
_warehouseIds.push(value.nodeId);
return value.nodeName && value.nodeId;
});
if (!_flag) {
return ElMessage({
type: 'warning',
message: '节点信息有误',
});
}
const submitData = {
...form.value,
carsLoadLineList: JSON.parse(JSON.stringify(details.nodeInfoData)),
};
//
submitData.endWarehouseIds = _warehouseIds.join(',');
submitData.endWarehouseNames = _warehouseNames.slice(1).join(',');
submitData.carsLineName = _warehouseNames.join('->');
let _lineCarsOrderList = [];
submitData.carsLoadLineList.forEach((val, i) => {
val.nodeType = '1';
val.sort = i + 1;
delete val.blackList;
if (i === 0) return;
//
delete val.query;
delete val.selectionList;
delete val.loading;
delete val.data;
delete val.filterData;
_lineCarsOrderList = [
..._lineCarsOrderList,
...val.lineCarsOrderList.map(value => {
value.nodeId = submitData.startWarehouseId;
value.nodeName = submitData.startWarehouseName;
value.finalNodeId = val.nodeId;
value.totalNum = 20;
return value;
}),
];
delete val.lineCarsOrderList;
});
submitData.carsLoadLineList[0].lineCarsOrderList = _lineCarsOrderList;
console.log('submitData :>> ', submitData);
const res = await postSaveNew(submitData);
const { code, msg } = res.data;
if (code !== 200) return;
ElMessage({
message: msg,
type: 'success',
});
back();
console.log('res :>> ', res);
} catch (error) {
} finally {
btnLoadingObj.submitBtn = false;
}
//
if (Number(details.pageType) === 1) addSubmit();
//
else if (Number(details.pageType) === 2) editSubmit();
} else {
console.log('error submit!', fields);
}
});
};
watch($route, () => {
onLoad();
});
</script>
<style scoped lang="scss">
@ -1317,6 +1542,19 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
--el-color-success: #1a3061;
}
:deep(.el-step__title.is-process) {
font-weight: bold;
--el-text-color-primary: #60df54;
}
:deep(.el-step__head.is-process) {
--el-text-color-primary: #60df54;
}
:deep(.el-step__title.is-process .count_icon) {
background: #60df54;
}
.count_icon {
--width: 25px;
margin-right: 20px;
@ -1383,4 +1621,30 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
) {
--el-color-danger: #f00;
}
//
:deep(.editInput .el-input__inner) {
text-align: left !important;
}
//
.edit_title {
font-size: 18px;
font-weight: bold;
}
.edit_row {
margin: 20px 0;
.flex1 {
flex: 1;
}
}
//
.total_row {
margin-top: 5px;
zoom: 0.9;
color: var(--el-color-primary);
}
</style>

47
src/views/distribution/artery/TripartiteTransfer.vue

@ -138,11 +138,6 @@
</template>
</tablecmt>
<!-- 统计 -->
<el-row>
<div>选择数: , 运单数: , 件数: , 重量: , 体积: , 提货费: ,</div>
<div>总计: 总数: , 运单数: , 件数: , 重量: , 体积: , 提货费: ,</div>
</el-row>
<!-- 分页模块 -->
<el-row class="el-fy">
@ -1000,27 +995,31 @@ const handleShowConfirm = () => {
/** 提交到达 */
const submitConfirmArrive = async () => {
console.log('details.selectionList :>> ', details.selectionList);
console.log(
'details.selectionList.map(val => val.id) :>> ',
details.selectionList.map(val => val.id)
);
const submitData = {
loadId: details.selectionList.map(val => val.id).join(','),
...details.form,
};
const res = await postArriveCars(submitData);
const { code } = res.data;
if (code !== 200) {
return;
if (!details.form.arriveDateStr) {
return ElMessage({
message: '请选择到达日期',
type: 'warning',
});
}
ElMessage({
type: 'success',
message: '到达成功',
});
try {
const submitData = {
loadId: details.selectionList.map(val => val.id).join(','),
...details.form,
};
onLoad();
const res = await postArriveCars(submitData);
const { code } = res.data;
if (code !== 200) {
return;
}
ElMessage({
type: 'success',
message: '到达成功',
});
} catch (error) {
} finally {
onLoad();
}
};
/** 发车 */

12
src/views/distribution/artery/TripartiteTransferDetails.vue

@ -20,10 +20,9 @@
remote
reserve-keyword
placeholder="中转承运商"
@change="val => carrierNameChange(val, index)"
@change="val => carrierNameChange()"
:remote-method="remoteMethod"
:loading="details.loadingObj.loading"
:disabled="index === 0"
>
<el-option
v-for="val in details.carrierNameOptions"
@ -315,7 +314,7 @@ import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { downloadXls, computeNumber, setNodeHeight, getWinHight, debounce } from '@/utils/util';
import { downloadXls, computeNumber, setNodeHeight, debounce } from '@/utils/util';
import { columnList, newColumnList } from '@/option/distribution/addVehicleStowage';
import {
postloadFindLoadInitData,
@ -327,7 +326,7 @@ import {
} from '@/api/distribution/AddVehicleStowage';
import { postSaveNewTripartiteTransfer } from '@/api/distribution/addTripartiteTransfer.js';
import type { FormInstance, FormRules } from 'element-plus';
import { useRouter } from 'vue-router';
import { useRouter, useRoute } from 'vue-router';
import { useStore } from 'vuex';
// vuex
@ -335,6 +334,7 @@ const $store = useStore();
//
const $router = useRouter();
const $route = useRoute();
//
const ruleFormRef = ref();
@ -484,6 +484,8 @@ const details = reactive<any>({
driverListByName: [],
/** 被选中在调度池的订单列表 */
orderCodeList: [],
});
const {
@ -654,7 +656,7 @@ const clearSelectionList = () => {
};
/** 展开列表控件 */
const showdrawer = (_flag?: boolean, _type?: string) => {
const showdrawer = (_flag?: boolean, _type?: number) => {
switch (_type) {
default:
console.log('123 :>> ', 123);

50
src/views/distribution/artery/VehicleArrivalManagement.vue

@ -91,6 +91,9 @@
>装载清单</el-button
>
<el-button type="primary" icon="el-icon-printer" @click="handleArrive">到达</el-button>
<el-button type="primary" icon="el-icon-printer" @click="handleCloseArrive"
>取消到达</el-button
>
<el-button type="primary" icon="el-icon-delete" @click="searchReset()">
中途到达卸车
</el-button>
@ -179,7 +182,7 @@
</template>
<template v-if="slotProps.scope.column.label === '操作'">
<el-text @click="handleShowTruckLoadingDetails">装车明细</el-text>
<el-text @click="handleShowTruckLoadingDetails(slotProps.scope)">装车明细</el-text>
<el-text>编辑</el-text>
</template>
</template>
@ -317,6 +320,7 @@ import { columnList, detailsColumnList } from '@/option/distribution/VehicleArri
import {
postloadArriveCarsPageList,
postloadArriveCarByLoadId,
postloadCancelArriveCarByLoadId,
} from '@/api/distribution/VehicleArrivalManagement';
import { useRouter } from 'vue-router';
import { ElMessage, ElMessageBox } from 'element-plus';
@ -562,13 +566,21 @@ const beforeClose = done => {
/** 显示装车详情 */
const handleShowTruckLoadingDetails = ({ row }) => {
details.popUpShow.truckLoadingDetailVisited = true;
nextTick(() => {
// ,
const _node = document.querySelector('.truckLoadingDetailPopUp .maboxhi');
_node.style.height = '550px';
$router.push({
path: '/distribution/artery/truckLoadingDetails',
query: {
loadId: row.id,
name: row.carsNo + '--' + '装车明细',
},
});
// details.popUpShow.truckLoadingDetailVisited = true;
// nextTick(() => {
// // ,
// const _node = document.querySelector('.truckLoadingDetailPopUp .maboxhi');
// _node.style.height = '550px';
// });
};
/** 显示对比报表 */
@ -599,6 +611,30 @@ const handleArrive = async () => {
onLoad();
};
/** 到车 */
const handleCloseArrive = async () => {
console.log(
'details.selectionList.map(val => val.id) :>> ',
details.selectionList.map(val => val.id)
);
const submitData = {
loadId: details.selectionList.map(val => val.id).join(','),
...details.form,
};
const res = await postloadCancelArriveCarByLoadId(submitData);
const { code } = res.data;
if (code !== 200) {
return;
}
ElMessage({
type: 'success',
message: '取消成功',
});
onLoad();
};
</script>
<style scoped lang="scss">

49
src/views/distribution/artery/VehicleStowage.vue

@ -113,7 +113,9 @@
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '批次号'">
<el-text @click="handleGoWaybill(slotProps.scope)">123</el-text>
<el-text @click="handleGoWaybill(slotProps.scope)">{{
slotProps.scope.row.carsNo
}}</el-text>
</template>
<template v-if="slotProps.scope.column.label === '路线'">
@ -160,12 +162,14 @@
<!-- <el-text @click="handleShowzeroAdditionalRecording(slotProps.scope)">
零担补录
</el-text> -->
<el-text @click="handleShowTruckLoadingDetails(slotProps.scope)">装车明细</el-text>
<el-text>编辑</el-text>
<el-text>数据同步</el-text>
<el-text>批量装车</el-text>
<el-text>手动装车</el-text>
<el-text>节点费用</el-text>
<el-button type="text" @click="handleShowTruckLoadingDetails(slotProps.scope)"
>装车明细</el-button
>
<el-button type="text" :disabled="false" @click="handleEditStowage(slotProps.scope)">编辑</el-button>
<!-- <el-button type="text">数据同步</el-button> -->
<el-button type="text">批量装车</el-button>
<el-button type="text">手动装车</el-button>
<el-button type="text">节点费用</el-button>
</template>
</template>
</tablecmt>
@ -791,14 +795,23 @@ const handleComparativeStatement = () => {
/** 显示装车详情 */
const handleShowTruckLoadingDetails = ({ row }) => {
details.popUpShow.truckLoadingDetailVisited = true;
nextTick(() => {
// ,
const _node = document.querySelector('.truckLoadingDetailPopUp .maboxhi');
_node.style.height = '550px';
console.log('_node :>> ', _node);
console.log('row :>> ', row);
$router.push({
path: '/distribution/artery/truckLoadingDetails',
query: {
loadId: row.id,
name: row.carsNo + '--' + '装车明细',
},
});
// details.popUpShow.truckLoadingDetailVisited = true;
// nextTick(() => {
// // ,
// const _node = document.querySelector('.truckLoadingDetailPopUp .maboxhi');
// _node.style.height = '550px';
// console.log('_node :>> ', _node);
// });
};
/** 显示零担补录 */
@ -841,6 +854,14 @@ const handleAdd = () => {
});
};
/** 编辑配载信息 */
const handleEditStowage = ({ row }) => {
$router.push({
path: '/distribution/artery/AddVehicleStowage',
query: { name: '编辑配载', type: 2, loadId: row.id },
});
};
/** 前往配载详情 */
const handleGoWaybill = ({ row }) => {
console.log('row :>> ', row);

85
src/views/distribution/artery/truckLoadingDetails.vue

@ -87,7 +87,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"
@ -104,23 +104,21 @@
@setcolum="setnewcolum"
@closce="showdrawer"
:drawerShow="drawerShow"
:columnList="details.editColumnList"
:columnList="details.detailsColumnList"
></edittablehead>
</template>
<script setup lang="ts">
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue';
import functions from '@/utils/functions';
import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
import { postLoadingDetail } from '@/api/distribution/truckLoadingDetails';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { downloadXls } from '@/utils/util';
import { detailsColumnList } from '@/option/distribution/TripartiteTransfer';
import { useRouter } from 'vue-router';
//
const $router = useRouter();
import { useRouter, useRoute } from 'vue-router';
const details = reactive<any>({
/** 是否开启搜索 */
@ -162,7 +160,7 @@ const details = reactive<any>({
/** 装车明细表头信息 */
detailsColumnList,
/** 列表数据 */
data: [{}],
data: [],
/** 页面loading */
loadingObj: {
/** 列表加载loading */
@ -174,7 +172,7 @@ const details = reactive<any>({
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
@ -188,6 +186,9 @@ const details = reactive<any>({
/** 列表Dom节点 */
listNode: '',
form: {},
pageInfo: {
loadId: '',
},
});
const {
@ -203,6 +204,10 @@ const {
trickleLoadingPage,
} = toRefs(details);
//
const $router = useRouter();
const $route = useRoute();
/** vuex */
const permission = computed(() => mapGetters(['permission', 'tagWel', 'tagList']));
console.log('permission :>> ', permission);
@ -223,11 +228,11 @@ onMounted(() => {
let flexListnewarr = functions.getStorage(window.location.pathname + 'flexList');
let sortlistnewarr = functions.getStorage(window.location.pathname + 'sortlist');
if (checkListnewarr) {
details.columnList.map(item => {
details.detailsColumnList.map(item => {
item.head = false;
});
checkListnewarr.map(ite => {
details.columnList.map(item => {
details.detailsColumnList.map(item => {
if (ite == item.label) {
item.head = true;
}
@ -235,7 +240,7 @@ onMounted(() => {
});
} else {
let arr = [];
details.columnList.map(item => {
details.detailsColumnList.map(item => {
if (item.head) {
arr.push(item.label);
}
@ -243,11 +248,11 @@ onMounted(() => {
functions.setStorage(window.location.pathname + 'checkList', arr);
}
if (flexListnewarr) {
details.columnList.map(item => {
details.detailsColumnList.map(item => {
item.fixed = false;
});
flexListnewarr.map(ite => {
details.columnList.map(item => {
details.detailsColumnList.map(item => {
if (ite == item.label) {
if (item.type == 6) {
item.fixed = 'right';
@ -259,7 +264,7 @@ onMounted(() => {
});
} else {
let arr = [];
details.columnList.map(item => {
details.detailsColumnList.map(item => {
if (item.fixed) {
arr.push(item.label);
}
@ -267,11 +272,11 @@ onMounted(() => {
functions.setStorage(window.location.pathname + 'flexList', arr);
}
if (sortlistnewarr) {
details.columnList.map(item => {
details.detailsColumnList.map(item => {
item.sortable = false;
});
sortlistnewarr.map(ite => {
details.columnList.map(item => {
details.detailsColumnList.map(item => {
if (ite == item.label) {
item.sortable = true;
}
@ -279,7 +284,7 @@ onMounted(() => {
});
} else {
let arr = [];
details.columnList.map(item => {
details.detailsColumnList.map(item => {
if (item.sortable) {
arr.push(item.label);
}
@ -289,7 +294,28 @@ onMounted(() => {
});
/** 请求页面数据 */
const onLoad = (page: any) => {};
const onLoad = async (params = {}) => {
try {
// loading
details.loadingObj.list = true;
details.query.loadId = details.pageInfo.loadId;
//
const res = await postLoadingDetail({ ...details.page, ...details.query, ...params });
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.page.total = data.total;
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.list = false;
}
};
details.pageInfo.loadId = $route.query.loadId;
onLoad();
/** 搜索 */
const searchChange = () => {
@ -300,7 +326,7 @@ const searchChange = () => {
const searchReset = () => {
details.query = {};
details.stockupDate = [];
details.page.currentPage = 1;
details.page.pageNum = 1;
onLoad(details.page);
};
@ -504,18 +530,13 @@ const handleShowTransfer = async (_type: string) => {
});
};
/** 添加运单 */
const handleAddWaybill = () => {
// if (this.addInfo.oldSelectionList.length === 0) return this.$message.warning('');
// this.addInfo.newData = [...this.addInfo.newData, ...this.addInfo.oldSelectionList];
// this.addInfo.haveIds = this.addInfo.map(val => val.id);
};
/** 移除运单 */
const handleRemoveWaybill = () => {
// if (this.addInfo.newSelectionList.length === 0) return this.$message.warning('');
// this.addInfo.newData = [...this.addInfo.newData, ...this.addInfo.oldSelectionList];
// this.addInfo.haveIds = this.addInfo.map(val => val.id);
};
watch($route, (newVal, oldVal) => {
console.log('newVal :>> ', newVal);
console.log('oldVal :>> ', oldVal);
if (newVal.path !== '/distribution/artery/truckLoadingDetails') return;
details.pageInfo.loadId = $route.query.loadId;
onLoad();
});
</script>
<style scoped lang="scss">

13
src/views/warehouse/warehousingentry/warehouseWarehousingEntry.vue

@ -341,6 +341,17 @@ export default {
checkarr: [],
fixed: false,
sortable: true,
}
,
{
label: '存放位置备注',
prop: 'positions',
type: 3,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
label: '状态',
@ -687,7 +698,7 @@ export default {
handleTemplate() {
console.log('下载模板!!!');
exportBlob(
`/api/logpm-warehouse/warehouseWarehousingEntry/export-warehouseWarehousingEntry?${
`/api/logpm-warehouse/warehouseWarehousingEntry/export-warehouseWarehousingTemplate?${
this.website.tokenHeader
}=${getToken()}`
).then(res => {

154
src/views/waybill/orderPackageListDetails.vue

@ -6,11 +6,11 @@
<!-- 查询模块 -->
<el-form :inline="true" :model="query" class="el-fr-d" label-width="100px">
<el-form-item label="是否入库">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
<el-input v-model="query.trainNumber" placeholder="是否入库" clearable></el-input>
</el-form-item>
<el-form-item label="是否干仓配">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
<el-input v-model="query.trainNumber" placeholder="是否干仓配" clearable></el-input>
</el-form-item>
<el-form-item label="运单号">
@ -18,10 +18,17 @@
</el-form-item>
<el-form-item label="订单自编号">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
<el-input
v-model="query.trainNumber"
placeholder="请输入订单自编号"
clearable
></el-input>
</el-form-item>
<el-form-item label="订单来源">
<el-input v-model="query.trainNumber" placeholder="请输入订单来源" clearable></el-input>
</el-form-item>
<el-form-item label="一级品类">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
@ -101,6 +108,9 @@
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<el-button type="primary" icon="Printer" @click="editClientInfo">批量打印</el-button>
<el-button type="primary" icon="Position" @click="handleBatchPutInStorage"
>批量入库</el-button
>
</div>
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
@ -132,7 +142,11 @@
<el-button type="text" @click="handleShowFlowNode(slotProps.scope)">
流转节点
</el-button>
<el-button type="text" @click="handlePutInStorage(slotProps.scope)">
<el-button
type="text"
v-if="Number(slotProps.scope.row.packageStatus) === 0"
@click="handlePutInStorage(slotProps.scope)"
>
直接入库
</el-button>
<el-button type="text" @click="printOrder(slotProps.scope)"> 查看二维码 </el-button>
@ -151,7 +165,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"
@ -216,7 +230,7 @@
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="details.packageListPage.currentPage"
:current-page="details.packageListPage.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="details.packageListPage.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -278,7 +292,7 @@
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="details.packageListPage.currentPage"
:current-page="details.packageListPage.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="details.packageListPage.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -321,7 +335,10 @@ import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { getopenOrderFindAdvanceDetailList } from '@/api/waybill/orderPackageListDetails';
import {
getopenOrderFindAdvanceDetailList,
getopenOrderIncomingPackage,
} from '@/api/waybill/orderPackageListDetails';
import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import { downloadXls, setNodeHeight, getHtmls } from '@/utils/util';
import {
@ -381,11 +398,11 @@ const details = reactive<any>({
/** 包明细表头 */
packageListColumnList,
/** 包明细数据 */
packageListData: [{}],
packageListData: [],
/** 包内产品表头 */
packageDetailColumnList,
/** 包内产品数据 */
packageDetailData: [{}],
packageDetailData: [],
/** 流转节点表头 */
flowNodeColumnList,
/** 流转节点数据 */
@ -402,13 +419,13 @@ const details = reactive<any>({
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
/** 包明细分页参数 */
packageListPage: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
@ -462,12 +479,12 @@ onMounted(() => {
});
/** 请求页面数据 */
const onLoad = async (page: any, params = {}) => {
const onLoad = async (params = {}) => {
try {
details.loadingObj.packageListLoading = true;
//
const res = await getopenOrderFindAdvanceDetailList(page, {
const res = await getopenOrderFindAdvanceDetailList(details.page, {
...details.query,
...params,
advanceId: id,
@ -482,19 +499,24 @@ const onLoad = async (page: any, params = {}) => {
}
};
onLoad(details.page);
const initPage = () => {
details.page.pageNum = 1;
onLoad();
};
initPage();
/** 搜索 */
const searchChange = () => {
onLoad(details.page);
initPage();
};
/** 清空表单 */
const searchReset = () => {
details.query = {};
details.stockupDate = [];
details.page.currentPage = 1;
onLoad(details.page);
details.page.pageNum = 1;
initPage();
};
/** 展开列表控件 */
@ -526,7 +548,7 @@ const searchHide = () => {
/** 表格表头输入框搜索 */
const inputsc = (index, row) => {
details.query[row.prop] = index;
onLoad(details.page);
initPage();
};
/** 表格表头时间选择 */
@ -539,7 +561,7 @@ const timesc = (index, row) => {
if (!index) {
delete details.query[row.prop];
}
onLoad(details.page);
initPage();
};
/** 表格表头输入框搜索 */
@ -553,7 +575,7 @@ const selectsc = (index, row) => {
details.query['certificateType'] = index;
if (!index) delete details.query['certificateType'];
}
onLoad(details.page);
initPage();
};
/** 表格表头复选框选择 */
@ -564,7 +586,7 @@ const selectionChange = (list: any) => {
/** 每页数量改变执行的回调 */
const sizeChange = (pageSize: number) => {
details.page.pageSize = pageSize;
onLoad(details.page);
initPage();
};
/** 页码改变执行的回调 */
@ -626,36 +648,6 @@ const editClientInfo = () => {
details.popUpShow.editClientInfoVisible = true;
};
/** 批量删除 */
const handleDelete = () => {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
};
/** 批量发车 */
const handleDepart = () => {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
};
/** 批量冻结 */
const handleFreeze = () => {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
};
/**
* 是否开启全屏
* @params(_type) 开启或关闭
@ -702,7 +694,7 @@ const printOrder = ({ row }) => {
});
};
/** 单列查看包条码 */
/** 批量查看包条码 */
const batchPrintOrder = ({ row }) => {
let qr = {
ids: row.id,
@ -723,13 +715,65 @@ const printTemplate = () => {
};
/** 入库 */
const handlePutInStorage = row => {
const handlePutInStorage = ({ row }) => {
console.log('row :>> ', row);
ElMessageBox.confirm('确认直接入库吗?', '警告', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
const submitData = {
orderPackageCode: row.orderPackageCode,
/** 直接入库 */
incomingType: '3',
};
const res = await getopenOrderIncomingPackage(submitData);
const { code } = res.data;
if (code !== 200) return;
initPage();
ElMessage({
type: 'success',
message: '入库成功',
});
})
.catch(() => {});
};
/** 批量入库 */
const handleBatchPutInStorage = () => {
if (details.selectionList.length === 0) return ElMessage.error('最少选择一条数据');
let orderPackageCodes = [];
const _flag = details.selectionList.every(val => {
if (Number(val.packageStatus) === 1) {
return false;
}
orderPackageCodes.push(val.orderPackageCode);
return true;
});
if (!_flag) return ElMessage.error('请选择未入库的数据');
ElMessageBox.confirm('确认直接入库吗?', '警告', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
.then(async () => {
const submitData = {
orderPackageCode: orderPackageCodes.join(','),
/** 直接入库 */
incomingType: '3',
};
const res = await getopenOrderIncomingPackage(submitData);
const { code } = res.data;
if (code !== 200) return;
initPage();
ElMessage({
type: 'success',
message: '入库成功',

Loading…
Cancel
Save