From 3e585b89fdd7a8c7846eb586a7ea51cc5602a490 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Tue, 11 Aug 2026 23:50:51 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E6=80=BB=E5=8D=95?= =?UTF-8?q?=202=E3=80=81fix=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/business/master-order.js | 32 + src/option/business/waybill-manage.js | 1 + .../components/business-crud-page.vue | 14 +- .../components/master-order-detail.vue | 98 ++ .../components/master-order-dispatch.vue | 385 +++++ .../components/master-order-editor.vue | 1244 +++++++++++++++++ src/views/business/loading-manage.vue | 27 +- src/views/business/master-order.vue | 549 ++++++++ src/views/business/transport-plan.vue | 2 +- src/views/business/waybill-manage.vue | 2 +- vite.config.mjs | 20 +- 11 files changed, 2356 insertions(+), 18 deletions(-) create mode 100644 src/api/business/master-order.js create mode 100644 src/views/business/components/master-order-detail.vue create mode 100644 src/views/business/components/master-order-dispatch.vue create mode 100644 src/views/business/components/master-order-editor.vue create mode 100644 src/views/business/master-order.vue diff --git a/src/api/business/master-order.js b/src/api/business/master-order.js new file mode 100644 index 0000000..ca13ae0 --- /dev/null +++ b/src/api/business/master-order.js @@ -0,0 +1,32 @@ +import request from '@/axios'; + +const baseUrl = '/blade-transport/master-order'; + +export const getList = (current, size, params) => + request({ url: `${baseUrl}/list`, method: 'get', params: { current, size, ...params } }); +export const getDetail = id => request({ url: `${baseUrl}/detail`, method: 'get', params: { id } }); +export const submit = data => request({ url: `${baseUrl}/submit`, method: 'post', data }); +export const saveDraft = data => request({ url: `${baseUrl}/draft`, method: 'post', data }); +export const copy = id => request({ url: `${baseUrl}/copy`, method: 'post', params: { id } }); +export const remove = id => request({ url: `${baseUrl}/remove`, method: 'post', params: { id } }); +export const closeDispatch = id => + request({ url: `${baseUrl}/close-dispatch`, method: 'post', params: { id } }); +export const dispatch = data => request({ url: `${baseUrl}/dispatch`, method: 'post', data }); +export const exportList = params => + request({ url: `${baseUrl}/export`, method: 'get', params, responseType: 'blob' }); +export const getAvailableProjects = () => + request({ + url: '/blade-transport/project-apply/list', + method: 'get', + params: { + current: 1, + size: 9999, + approvalStatuses: 'approved,change_approved', + }, + }); +export const getProjectContracts = projectId => + request({ + url: '/blade-transport/contract-manage/list', + method: 'get', + params: { current: 1, size: 9999, projectId }, + }); diff --git a/src/option/business/waybill-manage.js b/src/option/business/waybill-manage.js index 5c07a81..b0e617a 100644 --- a/src/option/business/waybill-manage.js +++ b/src/option/business/waybill-manage.js @@ -124,6 +124,7 @@ export const config = { enableContractSelect: true, enableShippingPlanSelect: true, enableShippingInfoForm: true, + fixedTransportAddressType: true, enableTaskInfoForm: true, enableWaybillFooterFreightSummary: true, enableDraftSave: true, diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue index 472ca0b..81ab780 100644 --- a/src/views/business/components/business-crud-page.vue +++ b/src/views/business/components/business-crud-page.vue @@ -3755,7 +3755,7 @@ - + @@ -4254,6 +4254,10 @@ export default { type: Number, default: null, }, + detailId: { + type: [String, Number], + default: null, + }, }, data() { return { @@ -4920,6 +4924,14 @@ export default { }, }, watch: { + detailId: { + immediate: true, + handler(id) { + if (id !== undefined && id !== null && id !== '') { + this.$nextTick(() => this.openDetail({ id })); + } + }, + }, 'form.transportType'(value, oldValue) { if (!this.shippingInfoFormEnabled || this.suppressTransportTypeClear) return; if (String(value ?? '') === String(oldValue ?? '')) return; diff --git a/src/views/business/components/master-order-detail.vue b/src/views/business/components/master-order-detail.vue new file mode 100644 index 0000000..8b4b366 --- /dev/null +++ b/src/views/business/components/master-order-detail.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/src/views/business/components/master-order-dispatch.vue b/src/views/business/components/master-order-dispatch.vue new file mode 100644 index 0000000..04a9c0f --- /dev/null +++ b/src/views/business/components/master-order-dispatch.vue @@ -0,0 +1,385 @@ + + + + + diff --git a/src/views/business/components/master-order-editor.vue b/src/views/business/components/master-order-editor.vue new file mode 100644 index 0000000..0ded4c8 --- /dev/null +++ b/src/views/business/components/master-order-editor.vue @@ -0,0 +1,1244 @@ + + + diff --git a/src/views/business/loading-manage.vue b/src/views/business/loading-manage.vue index 11a8e9a..79f67cb 100644 --- a/src/views/business/loading-manage.vue +++ b/src/views/business/loading-manage.vue @@ -356,7 +356,7 @@
配载单详情
{{ dialogForm.loadingNo || '-' }}
{{ statusText(dialogForm) }}
-
{{ dialogForm.transportType || '-' }}
+
{{ transportTypeLabel(dialogForm.transportType) }}
任务信息{{ taskSummary }}
@@ -369,7 +369,7 @@ -
{{ item.name || item.nodeName || item.label }}
+
{{ item.name || item.nodeName || item.label }}
item.nodeConfigJson) || {}; this.processNodes = parseJsonArray(config.nodeConfigJson); } catch (error) { this.processNodes = []; } }, + async handleProcessProjectChange() { + await this.loadProcessNodes(); + }, previewAttachment(file) { if (!file.url) { ElMessage.info('暂无可预览的附件地址'); @@ -1400,6 +1406,9 @@ export default { handleTrackAction(action) { ElMessage.info(action === 'playback' ? '暂无可回放的物流轨迹' : '暂无车辆实时定位数据'); }, + handleProcessAction(action) { + ElMessage.info(action === 'supplement' ? '补录执行功能暂未接入' : '批量补录功能暂未接入'); + }, openRouteChangeDialog() { this.routeChangeTab = 'change'; this.routeChangeRemark = ''; @@ -1868,6 +1877,10 @@ export default { handleMileageInput(value) { this.dialogForm.mileage = String(value || '').replace(/[^\d.]/g, ''); }, + transportTypeLabel(value) { + if (!value) return '-'; + return this.transportTypeOptions.find(item => String(item.value) === String(value))?.label || value; + }, async loadTransportTypeOptions() { if (this.transportTypeOptions.length) return; const res = await request({ @@ -2214,6 +2227,8 @@ export default { .loading-detail__step-tags { display: flex; justify-content: center; gap: 4px; margin-top: 6px; } .loading-detail__bottom-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; } .loading-detail__track-actions { display: flex; gap: 8px; } + .loading-detail__process-actions { display: flex; align-items: center; gap: 8px; } + .loading-detail__process-actions .el-select { width: 180px; } .loading-detail__map { width: 100%; min-height: 260px; border: 1px solid #eff1f7; } } .loading-route-change-dialog { .loading-route-change-dialog__original { color: #a8abb2; line-height: 20px; margin-bottom: 4px; }.loading-route-change-dialog__location { cursor: pointer; color: #909399; }.loading-route-change-dialog__hint { color: #909399; }.loading-route-change-dialog__route-list { display: flex; flex-direction: column; gap: 8px; }.loading-route-change-dialog__route-item { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto 24px; align-items: center; gap: 12px; padding: 10px 12px; background: #f5f6f7; cursor: move; }.loading-route-change-dialog__route-type { width: 30px; height: 30px; border-radius: 50%; background: #dcdfe6; text-align: center; line-height: 30px; }.loading-route-change-dialog__tags { display: flex; gap: 4px; }.loading-route-change-dialog__record-content { white-space: normal; overflow-wrap: anywhere; line-height: 22px; } } diff --git a/src/views/business/master-order.vue b/src/views/business/master-order.vue new file mode 100644 index 0000000..67ea5e5 --- /dev/null +++ b/src/views/business/master-order.vue @@ -0,0 +1,549 @@ + + + + + diff --git a/src/views/business/transport-plan.vue b/src/views/business/transport-plan.vue index 090ddea..c53eb2e 100644 --- a/src/views/business/transport-plan.vue +++ b/src/views/business/transport-plan.vue @@ -1,5 +1,5 @@