diff --git a/package.json b/package.json index be77a5b6..5760b524 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "axios": "^0.21.1", "crypto-js": "^4.1.1", "dayjs": "^1.10.6", + "echarts": "^5.5.1", "element-plus": "^2.3.1", "file-saver": "^2.0.5", "html2canvas": "^1.4.1", @@ -50,4 +51,4 @@ "vite-plugin-vue-setup-extend": "^0.4.0", "xlsx": "^0.18.5" } -} \ No newline at end of file +} diff --git a/src/api/aftersales/aftersalesWorkOrder.js b/src/api/aftersales/aftersalesWorkOrder.js index 2812bc3e..789ad03f 100644 --- a/src/api/aftersales/aftersalesWorkOrder.js +++ b/src/api/aftersales/aftersalesWorkOrder.js @@ -500,6 +500,15 @@ export const $_exportWorkOrder2 = (params) => { responseType: 'blob', }) } +// 完结导出 +export const $_exportWorkOrder4 = (params) => { + return request({ + url: '/api/logpm-aftersales/aftersalesWorkOrder/exportWorkOrder4', + method: 'get', + params, + responseType: 'blob', + }) +} // 处理完毕 export const $_exportWorkOrder3 = (params) => { return request({ diff --git a/src/api/reportforms/index.js b/src/api/reportforms/index.js index e223224b..61196de5 100644 --- a/src/api/reportforms/index.js +++ b/src/api/reportforms/index.js @@ -190,3 +190,39 @@ export const $_exportStockOrder = params => { responseType: 'blob', }); }; + +// 配送统计报表 +export const $_getDeliveryStatisticsReport = params => { + return request({ + url: '/api/logpm-report/qualityDispatch/number', + method: 'get', + params, + }); +}; +// 配送统计报表导出 +export const $_expDeliveryStatisticsReport = params => { + return request({ + url: '/api/logpm-report/qualityDispatch/exporNumber', + method: 'get', + params, + responseType: 'blob', + }); +}; +// 配送统计报表详情 +export const $_getDeliveryDetailsReport = params => { + return request({ + url: '/api/logpm-report/qualityDispatch/task', + method: 'get', + params, + }); +}; +// 配送统计报表详情导出 +export const $_expDeliveryDetailsReport = params => { + return request({ + url: '/api/logpm-report/qualityDispatch/exporTask', + method: 'get', + params, + responseType: 'blob', + }); +}; + diff --git a/src/api/wel/index.js b/src/api/wel/index.js index 7c26ff01..25d115ac 100644 --- a/src/api/wel/index.js +++ b/src/api/wel/index.js @@ -18,9 +18,9 @@ export const postAllocationData = data => { * @param {Object} data * @returns */ -export const postOpenOrderDataByWarehouseId = data => { +export const postAllocationDataByWarehouseId = data => { return request({ - url: '/api/logpm-report/warehouseIndex/openOrderDataByWarehouseId', + url: '/api/logpm-report/warehouseIndex/allocationDataByWarehouseId', method: 'post', data, }); @@ -39,6 +39,19 @@ export const postHandOrderData = data => { }); }; +/** + * 当前在库数据 -- 对比数据 + * @param {Object} data + * @returns + */ +export const postHandOrderDataByWarehouseId = data => { + return request({ + url: '/api/logpm-report/warehouseIndex/handOrderDataByWarehouseId', + method: 'post', + data, + }); +}; + /** * 开单数据 * @param {Object} data @@ -52,6 +65,19 @@ export const postOpenOrderData = data => { }); }; +/** + * 开单数据 -- 对比数据 + * @param {Object} data + * @returns + */ +export const postOpenOrderDataByWarehouseId = data => { + return request({ + url: '/api/logpm-report/warehouseIndex/openOrderDataByWarehouseId', + method: 'post', + data, + }); +}; + /** * 开单收入数据 * @param {Object} data @@ -78,6 +104,19 @@ export const postTrunklineCarsData = data => { }); }; +/** + * 干线车次数据 -- 对比数据 + * @param {Object} data + * @returns + */ +export const postTrunklineCarsDataByWarehouseId = data => { + return request({ + url: '/api/logpm-report/warehouseIndex/trunklineCarsDataByWarehouseId', + method: 'post', + data, + }); +}; + /** * 干线发运数据 * @param {Object} data diff --git a/src/option/aftersales/vueTvemp.js b/src/option/aftersales/vueTvemp.js index 520ba6d2..5c95196c 100644 --- a/src/option/aftersales/vueTvemp.js +++ b/src/option/aftersales/vueTvemp.js @@ -473,7 +473,7 @@ export const columnList = [ { prop: 'ceator', label: '创建人', - type: 1, + type: 2, values: '', width: '150', checkarr: [], diff --git a/src/option/distribution/distributionStockArticleSelf.js b/src/option/distribution/distributionStockArticleSelf.js index 6abeab29..67f20e13 100644 --- a/src/option/distribution/distributionStockArticleSelf.js +++ b/src/option/distribution/distributionStockArticleSelf.js @@ -201,6 +201,25 @@ export const columnList = [ fixed: false, sortable: true, }, + { + prop: 'isTimeOutName', + label: '超时状态', + type: 3, + values: '', + width: '100', + checkarr: [ + { + value: '0', + label: '未超时', + }, + { + value: '1', + label: '超时', + }, + ], + fixed: false, + sortable: true, + }, { prop: 'warehouse', label: '所在仓库', diff --git a/src/option/reportforms/DeliveryDetailsReport.js b/src/option/reportforms/DeliveryDetailsReport.js new file mode 100644 index 00000000..122301dd --- /dev/null +++ b/src/option/reportforms/DeliveryDetailsReport.js @@ -0,0 +1,365 @@ +export const columnList = [ + { + prop: '', + label: '复选框', + type: 0, + width: 55, + fixed: true, + }, + { + prop: '', + label: '序号', + type: 12, + values: '', + width: 55, + fixed: true, + }, + { + prop: 'warehouseName', + label: '仓库', + type: 1, + values: '', + width: '180', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'deliveryType', + label: '配送类型', + type: 3, + values: '', + width: '150', + checkarr: [ + { + label: '商配', + value: '商配' + }, + { + label: '市配', + value: '市配' + } + ], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'reviewStatus', + label: '文员复核状态', + type: 3, + values: '', + width: '150', + checkarr: [ + { + label: '已复核', + value: '已复核' + }, + { + label: '未复核', + value: '未复核' + } + ], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'planReservationCode', + label: '预约单编号', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + + { + prop: 'planTrainNumber', + label: '车次号', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'mallName', + label: '商场/承运商', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + + { + prop: 'reservationConsignee', + label: '收货人', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'driverName', + label: '司机/提货人', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'vehicleName', + label: '车辆', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'deliveryTime', + label: '配送日期', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'deliveryCreateUserName', + label: '任务创建人', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'planNum', + label: '计划件数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true,//开启统计 + }, + { + prop: 'loadNum', + label: '装车件数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true,//开启统计 + }, + { + prop: 'signNum', + label: '签收件数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true,//开启统计 + }, + { + prop: 'planStockNum', + label: '库存品计划数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true,//开启统计 + }, + { + prop: 'loadStockNum', + label: '库存品装车数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true,//开启统计 + }, + { + prop: 'signStockNum', + label: '库存品签收数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true,//开启统计 + }, +// { +// prop: 'signStatus', +// label: '签收状态', +// type: 1, +// values: '', +// width: '150', +// checkarr: [], +// fixed: false, +// sortable: true, +// head: false, +// }, + { + prop: 'signTime', + label: '签收时间', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'signUserName', + label: '签收人', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + + { + prop: 'reviewUserName', + label: '审核人', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'reviewTime', + label: '审核时间', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'exceptionLoadNum', + label: '异常装车数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true,//开启统计 + }, + { + prop: 'exceptionSignNum', + label: '异常签收数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true,//开启统计 + }, + { + prop: 'deliveryMode', + label: '送货方式', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'startCarTime', + label: '发车时间', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'arriveCarTime', + label: '到达时间', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'unLoadNum', + label: '卸车件数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true,//开启统计 + }, + // { + // prop: 'createUserName', + // label: '操作', + // type: 6, + // values: '', + // width: '200', + // checkarr: [], + // fixed: 'right', + // sortable: false, + // }, +]; diff --git a/src/option/reportforms/DeliveryStatisticsReport.js b/src/option/reportforms/DeliveryStatisticsReport.js new file mode 100644 index 00000000..105e6c43 --- /dev/null +++ b/src/option/reportforms/DeliveryStatisticsReport.js @@ -0,0 +1,215 @@ +export const columnList = [ + { + prop: '', + label: '复选框', + type: 0, + width: 55, + fixed: true, + }, + { + prop: '', + label: '序号', + type: 12, + values: '', + width: 55, + fixed: true, + }, + { + prop: 'warehouseName', + label: '仓库', + type: 3, + values: '', + width: '180', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'deliveryType', + label: '配送类型', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: true, + }, + { + prop: 'planNum', + label: '预约总数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true, //开启统计 + }, + + { + prop: 'loadNum', + label: '装车总数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true, //开启统计 + }, + { + prop: 'signNum', + label: '签收总数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true, //开启统计 + }, + + { + prop: 'signRate', + label: '签收率', + type: 6, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'planStockNum', + label: '预约库存品数量', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true, //开启统计 + }, + { + prop: 'stockingQuantity', + label: '库存品备货件数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true, //开启统计 + }, + { + prop: 'loadStockNum', + label: '库存品装车数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true, //开启统计 + }, + { + prop: 'signStockNum', + label: '库存品签收数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true, //开启统计 + }, + { + prop: 'signStockRate', + label: '库存品签收率', + type: 6, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'exceptionNum', + label: '异常数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true, //开启统计 + }, + { + prop: 'planAccuracy', + label: '计划准确率', + type: 6, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'customerCount', + label: '客户数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true, //开启统计 + }, + { + prop: 'reviewCustomerCount', + label: '已审核客户数', + type: 1, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + isshowSummary: true, //开启统计 + }, + { + prop: 'reviewRate', + label: '审核率', + type: 6, + values: '', + width: '150', + checkarr: [], + fixed: false, + sortable: true, + head: false, + }, + { + prop: 'createUserName', + label: '操作', + type: 6, + values: '', + width: '200', + checkarr: [], + fixed: 'right', + sortable: false, + }, +]; diff --git a/src/option/waybill/TemporaryStorageList.js b/src/option/waybill/TemporaryStorageList.js index d67e314a..35d0d365 100644 --- a/src/option/waybill/TemporaryStorageList.js +++ b/src/option/waybill/TemporaryStorageList.js @@ -105,6 +105,25 @@ export const columnList = [ fixed: false, sortable: true, }, + { + prop: 'isTimeOutName', + label: '超时状态', + type: 14, + values: '', + width: '130', + checkarr: [ + { + label: '超时', + value: 1, + }, + { + label: '未超时', + value: 0, + }, + ], + fixed: false, + sortable: true, + }, { prop: 'totalNum', label: '数量', diff --git a/src/router/views/index.js b/src/router/views/index.js index ec092d40..70e2a669 100644 --- a/src/router/views/index.js +++ b/src/router/views/index.js @@ -1812,7 +1812,7 @@ export default [ }, path: '/distribution/checkInventoryTask/createTaskTemp', name: '盘点旧版', - component: () => import('@/views/distribution/checkInventoryTask/createTasktemp.vue'), + component: () => import('@/views/distribution/checkInventoryTask/createTaskTemp.vue'), }, ], }, @@ -1865,4 +1865,20 @@ export default [ }, ], }, + { + path: '/reportforms/DeliveryDetailsReport', + component: Layout, + redirect: '/reportforms/DeliveryDetailsReport', + children: [ + { + meta: { + i18n: 'dict', + keepAlive: true, + }, + path: '/reportforms/DeliveryDetailsReport', + name: '配送明细详情报表', + component: () => import('@/views/reportforms/DeliveryDetailsReport.vue'), + }, + ], + }, ]; diff --git a/src/views/aftersales/aftersalesWorkOrder.vue b/src/views/aftersales/aftersalesWorkOrder.vue index cd0e7143..d6f9470e 100644 --- a/src/views/aftersales/aftersalesWorkOrder.vue +++ b/src/views/aftersales/aftersalesWorkOrder.vue @@ -636,6 +636,7 @@ import { $_exportWorkOrder1, $_exportWorkOrder2, $_exportWorkOrder3, + $_exportWorkOrder4, } from '@/api/aftersales/aftersalesWorkOrder'; import { columnList, @@ -2830,6 +2831,10 @@ const exportReport = () => { // 理赔金额未出 ExportClaimAmount(dataID); break; + case 6: + // 完结 + CompleteExport(dataID); + break; default: ExportAll(dataID); break; @@ -2934,6 +2939,26 @@ const ExportClaimAmount = async dataID => { } finally { } }; +// 完结导出 +const CompleteExport = async dataID => { + try { + let res = await $_exportWorkOrder4(dataID); + const currentDate = new Date(); + const formattedDate = `${currentDate.getFullYear()}${(currentDate.getMonth() + 1) + .toString() + .padStart(2, '0')}${currentDate.getDate().toString().padStart(2, '0')}${currentDate + .getHours() + .toString() + .padStart(2, '0')}${currentDate.getMinutes().toString().padStart(2, '0')}${currentDate + .getSeconds() + .toString() + .padStart(2, '0')}`; + downloadXls(res.data, `导出工单数据${formattedDate}.xlsx`); + } catch (e) { + console.log(e); + } finally { + } +}; // 处理完毕导出 const ProcessedExported = async dataID => { try { diff --git a/src/views/aftersales/aftersalesWorkOrderAdd.vue b/src/views/aftersales/aftersalesWorkOrderAdd.vue index 85672ded..e25f8529 100644 --- a/src/views/aftersales/aftersalesWorkOrderAdd.vue +++ b/src/views/aftersales/aftersalesWorkOrderAdd.vue @@ -1010,11 +1010,15 @@ const DiscoveringNodesChange = async value => { typeServiceName: form.value.basis.typeServiceName, //合作模式 TabactiveName: form.value.basis.TabactiveName, //订单类型 }; + form.value.deliver = []; if (value == '3') { form.value.basis.processorEntityList = []; } else { delete form.value.basis.processorEntityList; } + if (value == '5' || value == '7') { + form.value.deliver = []; + } console.log(form.value.basis, 'form.value.basis'); // 公司占比重置 form.value.Proportion = 0; @@ -1385,7 +1389,7 @@ const ChangePackageInfo = async item => { console.log(form.value.Trainoptions, 'form.value.Trainoptions'); } // 配送环节车次号处理 - if (['5'].includes(form.value.basis.discoveryNode)) { + if (['5', '7'].includes(form.value.basis.discoveryNode)) { let addedTrainNumbers = []; // 临时变量存储已经添加过的车次号 res.data.data.forEach(item => { if (item.deliver && item.deliver.length) { diff --git a/src/views/basicdata/warehouse/warehouse/basicdataWarehouse.vue b/src/views/basicdata/warehouse/warehouse/basicdataWarehouse.vue index 89d4110d..8e800c2d 100644 --- a/src/views/basicdata/warehouse/warehouse/basicdataWarehouse.vue +++ b/src/views/basicdata/warehouse/warehouse/basicdataWarehouse.vue @@ -260,7 +260,7 @@ - + { delete details.query[row.prop]; } }; - +const handleClick = () => { + onLoad(); +}; /** 表格表头输入框搜索 */ const btnsc = val => { console.log(val); @@ -307,7 +310,7 @@ const selectionChange = list => { }; // 网页顶部搜索按钮 const searchChange = () => { - details.search = false; //关闭搜索 + onLoad(); }; // 每页多少条 const sizeChange = val => { @@ -321,7 +324,7 @@ const currentChange = val => { }; // 刷新按钮 const searchChangeS = () => { - details.search = false; //关闭搜索 + onLoad(); }; // 顶部搜索 const searchHide = () => { diff --git a/src/views/cost/Deliverycostmanagement/OrderTotalCostDetail.vue b/src/views/cost/Deliverycostmanagement/OrderTotalCostDetail.vue index 235c0db6..ce71748d 100644 --- a/src/views/cost/Deliverycostmanagement/OrderTotalCostDetail.vue +++ b/src/views/cost/Deliverycostmanagement/OrderTotalCostDetail.vue @@ -103,13 +103,16 @@ - \ No newline at end of file +// 页面初始化方法 + + + diff --git a/src/views/cost/storagecost/Warehouserentalmanagement.vue b/src/views/cost/storagecost/Warehouserentalmanagement.vue index d9ab5137..65049c7c 100644 --- a/src/views/cost/storagecost/Warehouserentalmanagement.vue +++ b/src/views/cost/storagecost/Warehouserentalmanagement.vue @@ -424,6 +424,12 @@ const currentChange = val => { const searchChangeS = () => { details.search = false; //关闭搜索 }; +const searchReset=() => { + details.query = {}; + queryTop.value={} + details.data=[] + onLoad(); +} // 顶部搜索 const searchHide = () => { console.log(details); diff --git a/src/views/desk/DataBoard.vue b/src/views/desk/DataBoard.vue new file mode 100644 index 00000000..81700c18 --- /dev/null +++ b/src/views/desk/DataBoard.vue @@ -0,0 +1,2104 @@ + + + + + diff --git a/src/views/distribution/artery/TripartiteTransfer.vue b/src/views/distribution/artery/TripartiteTransfer.vue index 7d783353..91189c97 100644 --- a/src/views/distribution/artery/TripartiteTransfer.vue +++ b/src/views/distribution/artery/TripartiteTransfer.vue @@ -164,6 +164,11 @@ > 修 改 + + +
@@ -490,6 +495,7 @@ import { } from '@/api/distribution/TripartiteTransfer.js'; import { postFindLoadingListData, + postCancelCarsLoadByLoadId, postRemoveCarsLoadScan, postUpdateLoadScanFinalNodeIdById, } from '@/api/distribution/VehicleStowage'; @@ -1258,6 +1264,66 @@ const handleSubmitCloseAnAccount = async () => { } }; +/** 取消配载 */ +const handleCancelCarsLoad = () => { + if (!ChecksWhetherTheWarehouseIsSelected()) + return ElMessage.warning('多仓权限无法操作,请选择仓库'); + + if (details.selectionList.length === 0) { + return ElMessage({ + message: '请选择需要取消的数据', + type: 'warning', + }); + } else if (details.selectionList.length !== 1) { + return ElMessage({ + message: '仅支持单条数据操作', + type: 'warning', + }); + } + ElMessageBox.confirm('确认取消配载吗?', '提示', { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + }).then(async () => { + const ids = []; + const _flag = details.selectionList.every(val => { + ids.push(val.id); + console.log('val :>> ', val); + return Number(val.loadStatus) === 0; + }); + + if (!_flag) + return ElMessage({ + message: '车辆已发车, 无法取消配载计划', + type: 'warning', + }); + + try { + details.loadingObj.pageLoading = true; + + const submitData = { + loadId: ids.join(','), + startCarType: '1', + }; + + const res = await postCancelCarsLoadByLoadId(submitData); + const { code } = res.data; + if (code !== 200) { + return; + } + ElMessage({ + type: 'success', + message: '取消配载成功', + }); + initOnload(); + } catch (error) { + console.log('error :>> ', error); + } finally { + details.loadingObj.pageLoading = false; + } + }); +}; + /** * 是否开启床车明细全屏 * @params(_type) 开启或关闭 diff --git a/src/views/distribution/artery/VehicleStowageDetails.vue b/src/views/distribution/artery/VehicleStowageDetails.vue index d29eaf94..1ba4280b 100644 --- a/src/views/distribution/artery/VehicleStowageDetails.vue +++ b/src/views/distribution/artery/VehicleStowageDetails.vue @@ -1061,7 +1061,7 @@ const handleCostApportionments = async () => { for (let i = 0; i < details.oldData.length; i++) { const value = details.oldData[i]; - if (!value.checkUserName) { + if (Number(value.checkStatus) === 0) { _flag = true; break; } diff --git a/src/views/distribution/deliverylist/distributionDeliveryList.vue b/src/views/distribution/deliverylist/distributionDeliveryList.vue index 6c68e6cc..758da0a4 100644 --- a/src/views/distribution/deliverylist/distributionDeliveryList.vue +++ b/src/views/distribution/deliverylist/distributionDeliveryList.vue @@ -1058,13 +1058,17 @@ export default { // 获取当前日期 const currentDate = dayjs(); // 计算一个月前的日期 - const startDate = currentDate.subtract(1, 'month'); + // 获取当前月份的第一天 + const startDate = currentDate.startOf('month'); + // 获取当前月份的最后一天 + const endDate = currentDate.endOf('month'); // 格式化日期为 'YYYY-MM-DD' const formatDate = date => date.format('YYYY-MM-DD'); this.Deliverydate = []; this.Deliverydate[0] = formatDate(startDate); // 一个月前的日期 - this.Deliverydate[1] = formatDate(currentDate); // 当前日期 + this.Deliverydate[1] = formatDate(endDate); // 当前日期 }, + async onLoad(page, params = {}) { this.loading = true; if (this.currentdate) { diff --git a/src/views/distribution/deliverylist/distributionDeliveryListdis.vue b/src/views/distribution/deliverylist/distributionDeliveryListdis.vue index 1dceea59..ceb727c3 100644 --- a/src/views/distribution/deliverylist/distributionDeliveryListdis.vue +++ b/src/views/distribution/deliverylist/distributionDeliveryListdis.vue @@ -338,7 +338,7 @@ export default { data() { return { height: 0, - currentdate:true, + currentdate: true, // 弹框标题 title: '', // 是否展示弹框 @@ -989,22 +989,24 @@ export default { Getcurrentdate() { // 获取当前日期 const currentDate = dayjs(); - // 计算一个月前的日期 - const startDate = currentDate.subtract(1, 'month'); + // 获取当前月份的第一天 + const startDate = currentDate.startOf('month'); + // 获取当前月份的最后一天 + const endDate = currentDate.endOf('month'); // 格式化日期为 'YYYY-MM-DD' const formatDate = date => date.format('YYYY-MM-DD'); this.query.taskTimeArr = []; this.query.taskTimeArr[0] = formatDate(startDate); // 一个月前的日期 - this.query.taskTimeArr[1] = formatDate(currentDate); // 当前日期 + this.query.taskTimeArr[1] = formatDate(endDate); // 当前日期 }, - async onLoad(page, params = {}) { + async onLoad(page, params = {}) { this.loading = true; this.query.type = '1'; - if(this.currentdate){ - await this.Getcurrentdate() + if (this.currentdate) { + await this.Getcurrentdate(); } - + const submitData = { ...params, ...this.query }; if (getObjType(this.query.taskTimeArr) === 'array') { diff --git a/src/views/distribution/deliverylist/distributionDeliveryListmar.vue b/src/views/distribution/deliverylist/distributionDeliveryListmar.vue index 54e75fc9..c4453b08 100644 --- a/src/views/distribution/deliverylist/distributionDeliveryListmar.vue +++ b/src/views/distribution/deliverylist/distributionDeliveryListmar.vue @@ -249,7 +249,7 @@ export default { data() { return { height: 0, - currentdate:true, + currentdate: true, dydialogVisible: false, // 弹框标题 title: '', @@ -778,21 +778,23 @@ export default { Getcurrentdate() { // 获取当前日期 const currentDate = dayjs(); - // 计算一个月前的日期 - const startDate = currentDate.subtract(1, 'month'); + // 获取当前月份的第一天 + const startDate = currentDate.startOf('month'); + // 获取当前月份的最后一天 + const endDate = currentDate.endOf('month'); // 格式化日期为 'YYYY-MM-DD' const formatDate = date => date.format('YYYY-MM-DD'); this.query.taskTimeArr = []; this.query.taskTimeArr[0] = formatDate(startDate); // 一个月前的日期 - this.query.taskTimeArr[1] = formatDate(currentDate); // 当前日期 + this.query.taskTimeArr[1] = formatDate(endDate); // 当前日期 }, - async onLoad(page, params = {}) { + async onLoad(page, params = {}) { this.loading = true; this.query.type = '2'; - if(this.currentdate){ - await this.Getcurrentdate() + if (this.currentdate) { + await this.Getcurrentdate(); } - + const submitData = { ...params, ...this.query }; if (getObjType(this.query.taskTimeArr) === 'array') { @@ -829,7 +831,7 @@ export default { this.page.total = data.total || 0; this.data = data.records || []; this.loading = false; - this.currentdate=false; + this.currentdate = false; this.selectionClear(); }); getstatistics(page.currentPage, page.pageSize, Object.assign(params, this.query)).then( diff --git a/src/views/distribution/inventory/CreateOrder.vue b/src/views/distribution/inventory/CreateOrder.vue index f8be7224..6fdcf795 100644 --- a/src/views/distribution/inventory/CreateOrder.vue +++ b/src/views/distribution/inventory/CreateOrder.vue @@ -228,7 +228,12 @@ @@ -253,7 +258,12 @@ @@ -327,6 +337,7 @@ @row-click=" (column, prop, order) => { handleChooseConsigner(column, prop, order); + handleFindPrice(); } " v-loading="details.loadingObj.consignerLoading" @@ -356,6 +367,7 @@ @row-click=" (column, prop, order) => { handleChooseConsigner(column, prop, order); + handleFindPrice(); } " v-loading="details.loadingObj.consignerLoading" diff --git a/src/views/distribution/inventory/delivery/distributionStockArticle.vue b/src/views/distribution/inventory/delivery/distributionStockArticle.vue index bfb56f17..8454fd90 100644 --- a/src/views/distribution/inventory/delivery/distributionStockArticle.vue +++ b/src/views/distribution/inventory/delivery/distributionStockArticle.vue @@ -733,7 +733,13 @@ import { deepClone, setNodeHeight, hanleTextLineFeed } from '@/utils/util.js'; import { ElMessage, ElMessageBox } from 'element-plus'; import MultiConditionSearch from '@/components/MultiConditionSearch/MultiConditionSearch.vue'; const _newCol = deepClone(columnList); +for (let i = 0; i < _newCol.length; i++) { + const val = _newCol[i]; + if (val.label !== '超时状态') continue; + _newCol.splice(i, 1); + break; +} export default { components: { MultiConditionSearch, diff --git a/src/views/distribution/inventory/delivery/distributionStockArticleDiscuss.vue b/src/views/distribution/inventory/delivery/distributionStockArticleDiscuss.vue index a778474e..232d73f7 100644 --- a/src/views/distribution/inventory/delivery/distributionStockArticleDiscuss.vue +++ b/src/views/distribution/inventory/delivery/distributionStockArticleDiscuss.vue @@ -471,6 +471,13 @@ import { columnList } from '@/option/distribution/distributionStockArticleSelf'; import { deepClone, hanleTextLineFeed } from '@/utils/util.js'; import { ElMessage, ElMessageBox } from 'element-plus'; const _newCol = deepClone(columnList); +for (let i = 0; i < _newCol.length; i++) { + const val = _newCol[i]; + + if (val.label !== '超时状态') continue; + _newCol.splice(i, 1); + break; +} export default { data() { return { diff --git a/src/views/distribution/inventory/delivery/distributionStockArticleMarket.vue b/src/views/distribution/inventory/delivery/distributionStockArticleMarket.vue index 5d533fcf..4f40241d 100644 --- a/src/views/distribution/inventory/delivery/distributionStockArticleMarket.vue +++ b/src/views/distribution/inventory/delivery/distributionStockArticleMarket.vue @@ -464,6 +464,13 @@ import { handleSelectQuery, } from '@/utils/util.js'; const _newCol = deepClone(columnList); +for (let i = 0; i < _newCol.length; i++) { + const val = _newCol[i]; + + if (val.label !== '超时状态') continue; + _newCol.splice(i, 1); + break; +} export default { data() { diff --git a/src/views/distribution/inventory/delivery/distributionStockArticleSelf.vue b/src/views/distribution/inventory/delivery/distributionStockArticleSelf.vue index 6525784e..a51a065a 100644 --- a/src/views/distribution/inventory/delivery/distributionStockArticleSelf.vue +++ b/src/views/distribution/inventory/delivery/distributionStockArticleSelf.vue @@ -121,6 +121,7 @@ :columnList="columnList" :tableData="data" :loading="loading" + :tableRowClassName="handleSetRowClassName" @inputTxt="inputsc" @timeCheck="timesc" @btnCheck="btnsc" @@ -783,6 +784,25 @@ export default { downloadXls(res.data, '自提订单数据.xlsx'); }); }, + handleSetRowClassName(row, rowIndex) { + console.log('row.warehouseEntryTime :>> ', row.warehouseEntryTime); + if (!row.warehouseEntryTime) return 'timeOut'; + + // 设置预警 -- 以创建时间为基准, 24小时后为超期, 临近2小时为临期 + + // 当前时间 - 创建时间 + const time = Date.now() - new Date(row.warehouseEntryTime).getTime(); + console.log('time :>> ', time); + // 预警时间 + const WarningTime = 1000 * 60 * 60 * 24 * 2 - 1000 * 60 * 60 * 2; + console.log('WarningTime :>> ', WarningTime); + // 超时 + const timeOut = 1000 * 60 * 60 * 24 * 2; + console.log('timeOut :>> ', timeOut); + + if (time > timeOut) return 'timeOut'; + else if (time > WarningTime && time < timeOut) return 'WarningTime'; + }, /*getMethodName(row,num){ console.log("名称选择事件",row); switch (num) { @@ -1619,6 +1639,7 @@ export default { item.availableQuantity = nuMap[item.availableQuantity] || item.availableQuantity; item.notReceived = parseInt(item.totalNumber) - parseInt(item.incomingNum); item.isZeroName = Number(item.isZero) === 0 ? '否' : '是'; + item.isTimeOutName = Number(item.isTimeOut) === 0 ? '未超时' : '超时'; item.completeSetName = Number(item.completeSet) === 2 ? '已齐套' : '未齐套'; } @@ -1825,4 +1846,25 @@ export default { .el_textBtn { font-weight: bold; } + +// 表格行样式 +:deep(.el-table) { + tr { + &.WarningTime { + color: #e6a23c !important; + + .el-text { + color: #e6a23c !important; + } + } + + &.timeOut { + color: #f56c6c !important; + + .el-text { + color: #f56c6c !important; + } + } + } +} diff --git a/src/views/distribution/inventory/distrilbutionBillLadingList.vue b/src/views/distribution/inventory/distrilbutionBillLadingList.vue index f2c13a68..dcdf3fbe 100644 --- a/src/views/distribution/inventory/distrilbutionBillLadingList.vue +++ b/src/views/distribution/inventory/distrilbutionBillLadingList.vue @@ -271,6 +271,7 @@ export default { data() { return { Deliverytime: [], //提货时间 + currentdate: true, columnList: [ { prop: '', @@ -1129,9 +1130,25 @@ export default { let formattedDate = formatter.format(date); return formattedDate.replace(/\//g, '-'); }, + Getcurrentdate() { + // 获取当前日期 + const currentDate = dayjs(); + // 获取当前月份的第一天 + const startDate = currentDate.startOf('month'); + // 获取当前月份的最后一天 + const endDate = currentDate.endOf('month'); + // 格式化日期为 'YYYY-MM-DD' + const formatDate = date => date.format('YYYY-MM-DD'); + this.Deliverytime = []; + this.Deliverytime[0] = formatDate(startDate); // 一个月前的日期 + this.Deliverytime[1] = formatDate(endDate); // 当前日期 + }, async onLoad(page, params = {}) { try { this.loading = true; + if (this.currentdate) { + await this.Getcurrentdate(); + } if (this.stockupDate?.length) { let startDate = this.stockupDate[0]; let entDate = this.stockupDate[1]; @@ -1205,6 +1222,7 @@ export default { console.log('error :>> ', error); } finally { this.loading = false; + this.currentdate = false; } }, }, diff --git a/src/views/reportforms/DeliveryDetailsReport.vue b/src/views/reportforms/DeliveryDetailsReport.vue new file mode 100644 index 00000000..dbe7644c --- /dev/null +++ b/src/views/reportforms/DeliveryDetailsReport.vue @@ -0,0 +1,361 @@ + + + + + diff --git a/src/views/reportforms/DeliveryStatisticsReport.vue b/src/views/reportforms/DeliveryStatisticsReport.vue new file mode 100644 index 00000000..60c38f6d --- /dev/null +++ b/src/views/reportforms/DeliveryStatisticsReport.vue @@ -0,0 +1,565 @@ + + + + + diff --git a/src/views/waybill/CreateZeroOrder.vue b/src/views/waybill/CreateZeroOrder.vue index a1e87bd9..b00ebbdb 100644 --- a/src/views/waybill/CreateZeroOrder.vue +++ b/src/views/waybill/CreateZeroOrder.vue @@ -196,7 +196,12 @@ @@ -221,7 +226,12 @@ @@ -295,6 +305,7 @@ @row-click=" (column, prop, order) => { handleChooseConsigner(column, prop, order); + handleFindPrice(); } " v-loading="details.loadingObj.consignerLoading" @@ -324,6 +335,7 @@ @row-click=" (column, prop, order) => { handleChooseConsigner(column, prop, order); + handleFindPrice(); } " v-loading="details.loadingObj.consignerLoading" diff --git a/src/views/waybill/TemporaryStorageList.vue b/src/views/waybill/TemporaryStorageList.vue index 359d386d..058858cb 100644 --- a/src/views/waybill/TemporaryStorageList.vue +++ b/src/views/waybill/TemporaryStorageList.vue @@ -143,6 +143,7 @@ ? loadingObj.haveDataList : loadingObj.notHaveDataList " + :tableRowClassName="handleSetRowClassName" @inputTxt="inputsc" @timeCheck="timesc" @btnCheck="btnsc" @@ -150,7 +151,13 @@ @selection="selectionChange" >