1、修复基础配置
2、修复业务模块 3、拆分页面代码
This commit is contained in:
@@ -823,12 +823,15 @@
|
||||
</div>
|
||||
<div class="loading-manage-dialog__grid loading-manage-dialog__task-grid">
|
||||
<el-form-item
|
||||
v-if="dialogForm.carrierType === '承运商'"
|
||||
:required="dialogForm.carrierType === '承运商'"
|
||||
label="承运商"
|
||||
required
|
||||
>
|
||||
<el-select
|
||||
v-model="dialogForm.carrierContractId"
|
||||
:model-value="
|
||||
dialogForm.carrierType === '承运商'
|
||||
? dialogForm.carrierContractId
|
||||
: dialogForm.carrierName
|
||||
"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="dialogReadonly || !selectedWaybillRows.length"
|
||||
@@ -839,9 +842,13 @@
|
||||
>
|
||||
<el-option
|
||||
v-for="item in taskCarrierOptions"
|
||||
:key="item.id"
|
||||
:label="item.carrierName"
|
||||
:value="item.id"
|
||||
:key="item.id || item.carrierName"
|
||||
:label="item.carrierName || item.partyB"
|
||||
:value="
|
||||
dialogForm.carrierType === '承运商'
|
||||
? item.id
|
||||
: item.carrierName || item.partyB
|
||||
"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -866,7 +873,15 @@
|
||||
<el-input v-model="dialogForm.trailerVehicleNo" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="dialogForm.carrierType !== '承运商'" label="押运人">
|
||||
<el-input v-model="dialogForm.escortName" clearable placeholder="请输入" />
|
||||
<el-autocomplete
|
||||
v-model="dialogForm.escortName"
|
||||
clearable
|
||||
:debounce="300"
|
||||
:fetch-suggestions="fetchEscortSuggestions"
|
||||
:loading="escortLoading"
|
||||
placeholder="请输入"
|
||||
@select="item => handleEscortSuggestionSelect('dialog', item)"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="dialogForm.carrierType !== '承运商'" label="押运人手机号">
|
||||
<el-input v-model="dialogForm.escortPhone" clearable placeholder="请输入" />
|
||||
@@ -982,6 +997,7 @@ import {
|
||||
getList as getWaybillList,
|
||||
getDetail as getWaybillDetail,
|
||||
} from '@/api/business/waybill-manage';
|
||||
import { getList as getContractList } from '@/api/business/contract-manage';
|
||||
import { getParentOptions as getCargoTypeOptions } from '@/api/base/cargo-type';
|
||||
import { getList as getCustomerList } from '@/api/vehicle/customer-archive';
|
||||
import { getList as getDriverList } from '@/api/transportCapacity/driver';
|
||||
@@ -1188,6 +1204,7 @@ export default {
|
||||
customerLoading: false,
|
||||
cargoTypeLoading: false,
|
||||
driverLoading: false,
|
||||
escortLoading: false,
|
||||
carrierLoading: false,
|
||||
taskCarrierLoading: false,
|
||||
planLoading: false,
|
||||
@@ -1606,10 +1623,6 @@ export default {
|
||||
this.dialogForm.waybillIdsJson,
|
||||
this.dialogForm.loadingSubNos
|
||||
);
|
||||
if (this.dialogForm.carrierType !== '承运商') {
|
||||
this.dialogForm.carrierContractId = '';
|
||||
this.dialogForm.carrierName = '';
|
||||
}
|
||||
this.syncProcessProjectOptions();
|
||||
this.restoreRouteAndCargo();
|
||||
this.restoreRouteChangeRecords();
|
||||
@@ -2131,7 +2144,7 @@ export default {
|
||||
normalizePayload() {
|
||||
this.syncRouteAddressFields();
|
||||
this.rebuildSummaryFromWaybills(false);
|
||||
if (this.dialogForm.carrierType !== '承运商') {
|
||||
if (this.dialogForm.carrierType === '网货平台') {
|
||||
this.dialogForm.carrierContractId = '';
|
||||
this.dialogForm.carrierName = '';
|
||||
}
|
||||
@@ -2317,17 +2330,20 @@ export default {
|
||||
this.dialogForm.escortName = '';
|
||||
this.dialogForm.escortPhone = '';
|
||||
}
|
||||
if (this.dialogForm.carrierType !== '承运商') {
|
||||
if (this.dialogForm.carrierType === '网货平台') {
|
||||
this.dialogForm.carrierContractId = '';
|
||||
this.dialogForm.carrierName = '';
|
||||
this.taskCarrierOptions = [];
|
||||
return;
|
||||
}
|
||||
this.loadTaskCarrierOptions();
|
||||
},
|
||||
handleTaskCarrierChange(contractId) {
|
||||
const contract = this.taskCarrierOptions.find(item => String(item.id) === String(contractId));
|
||||
this.dialogForm.carrierContractId = contract?.id || '';
|
||||
const contract = this.taskCarrierOptions.find(item =>
|
||||
[item.id, item.carrierName, item.partyB].some(
|
||||
value => String(value || '') === String(contractId || '')
|
||||
)
|
||||
);
|
||||
this.dialogForm.carrierContractId =
|
||||
this.dialogForm.carrierType === '承运商' && contract?.id ? contract.id : '';
|
||||
this.dialogForm.carrierName = contract?.carrierName || '';
|
||||
},
|
||||
handleDriverChange(value) {
|
||||
@@ -2361,6 +2377,29 @@ export default {
|
||||
if (drivingVehicle) this.dialogForm.vehicleNo = drivingVehicle;
|
||||
}
|
||||
},
|
||||
fetchEscortSuggestions(queryString, callback) {
|
||||
const keyword = String(queryString || '').trim();
|
||||
this.escortLoading = true;
|
||||
getDriverList(1, 20, { ...(keyword ? { driverName: keyword } : {}), posts: '押运员' })
|
||||
.then(res => {
|
||||
callback(
|
||||
unwrapRecords(res).map(item => ({
|
||||
...item,
|
||||
value: item.driverName || item.name || '',
|
||||
}))
|
||||
);
|
||||
})
|
||||
.catch(() => callback([]))
|
||||
.finally(() => {
|
||||
this.escortLoading = false;
|
||||
});
|
||||
},
|
||||
handleEscortSuggestionSelect(target, item = {}) {
|
||||
if (target !== 'dialog') return;
|
||||
this.dialogForm.escortName = item.driverName || item.name || '';
|
||||
const phone = item.mobile || item.driverPhone || item.phone || '';
|
||||
if (phone) this.dialogForm.escortPhone = phone;
|
||||
},
|
||||
handleMileageInput(value) {
|
||||
this.dialogForm.mileage = String(value || '').replace(/[^\d.]/g, '');
|
||||
},
|
||||
@@ -2410,7 +2449,9 @@ export default {
|
||||
async loadDriverOptions(keyword = '') {
|
||||
this.driverLoading = true;
|
||||
try {
|
||||
this.driverOptions = unwrapRecords(await getDriverList(1, 20, { driverName: keyword }));
|
||||
this.driverOptions = unwrapRecords(
|
||||
await getDriverList(1, 20, { driverName: keyword, posts: '司机' })
|
||||
);
|
||||
} finally {
|
||||
this.driverLoading = false;
|
||||
}
|
||||
@@ -2431,7 +2472,7 @@ export default {
|
||||
},
|
||||
async loadTaskCarrierOptions() {
|
||||
const requestId = ++this.taskCarrierRequestId;
|
||||
if (this.dialogForm.carrierType !== '承运商' || !this.selectedWaybillRows.length) {
|
||||
if (!this.selectedWaybillRows.length) {
|
||||
this.taskCarrierOptions = [];
|
||||
this.taskCarrierLoading = false;
|
||||
this.dialogForm.carrierContractId = '';
|
||||
@@ -2446,27 +2487,65 @@ export default {
|
||||
const response = await loadingApi.getCarrierContracts(projectIds);
|
||||
if (requestId !== this.taskCarrierRequestId) return [];
|
||||
const contracts = response.data?.data || response.data || [];
|
||||
this.taskCarrierOptions = contracts;
|
||||
const current =
|
||||
contracts.find(
|
||||
item => String(item.id) === String(this.dialogForm.carrierContractId)
|
||||
) ||
|
||||
contracts.find(
|
||||
item => item.carrierName === this.dialogForm.carrierName
|
||||
);
|
||||
if (current) {
|
||||
this.dialogForm.carrierContractId = current.id;
|
||||
this.dialogForm.carrierName = current.carrierName;
|
||||
} else {
|
||||
this.dialogForm.carrierContractId = '';
|
||||
this.dialogForm.carrierName = '';
|
||||
if (this.dialogForm.carrierType === '承运商') {
|
||||
this.taskCarrierOptions = contracts;
|
||||
const current =
|
||||
contracts.find(item => String(item.id) === String(this.dialogForm.carrierContractId)) ||
|
||||
contracts.find(item => item.carrierName === this.dialogForm.carrierName);
|
||||
if (current) {
|
||||
this.dialogForm.carrierContractId = current.id;
|
||||
this.dialogForm.carrierName = current.carrierName;
|
||||
} else {
|
||||
this.dialogForm.carrierContractId = '';
|
||||
this.dialogForm.carrierName = '';
|
||||
}
|
||||
return contracts;
|
||||
}
|
||||
return contracts;
|
||||
if (this.dialogForm.carrierType === '自运' && contracts.length) {
|
||||
this.taskCarrierOptions = contracts;
|
||||
const current = contracts.find(item => item.carrierName === this.dialogForm.carrierName);
|
||||
this.dialogForm.carrierContractId = '';
|
||||
this.dialogForm.carrierName = current?.carrierName || contracts[0].carrierName || '';
|
||||
return contracts;
|
||||
}
|
||||
if (this.dialogForm.carrierType !== '自运') {
|
||||
this.taskCarrierOptions = [];
|
||||
this.dialogForm.carrierContractId = '';
|
||||
return [];
|
||||
}
|
||||
const customerContracts = await Promise.all(
|
||||
projectIds.map(projectId =>
|
||||
getContractList(1, 9999, { projectId, contractCategory: '客户合同' })
|
||||
.then(res => extractRecords(res))
|
||||
.catch(() => [])
|
||||
)
|
||||
);
|
||||
const partyBNames = [];
|
||||
const customerContractMap = new Map(
|
||||
projectIds.map((projectId, index) => [String(projectId), customerContracts[index] || []])
|
||||
);
|
||||
this.selectedWaybillRows.forEach(row => {
|
||||
const direct = row.partyB || row.contractPartyB || row.customerContractPartyB;
|
||||
const contractsForProject = customerContractMap.get(String(row.projectId)) || [];
|
||||
const matched = contractsForProject.find(
|
||||
item => String(item.id) === String(row.contractId)
|
||||
);
|
||||
const name = String(direct || matched?.partyB || '').trim();
|
||||
if (name && !partyBNames.includes(name)) partyBNames.push(name);
|
||||
});
|
||||
this.taskCarrierOptions = partyBNames.map(name => ({
|
||||
id: `customer-contract-${name}`,
|
||||
carrierName: name,
|
||||
partyB: name,
|
||||
}));
|
||||
this.dialogForm.carrierContractId = '';
|
||||
this.dialogForm.carrierName = partyBNames[0] || '';
|
||||
return this.taskCarrierOptions;
|
||||
} catch (error) {
|
||||
if (requestId !== this.taskCarrierRequestId) return [];
|
||||
this.taskCarrierOptions = [];
|
||||
this.dialogForm.carrierContractId = '';
|
||||
this.dialogForm.carrierName = '';
|
||||
if (this.dialogForm.carrierType !== '自运') this.dialogForm.carrierName = '';
|
||||
return [];
|
||||
} finally {
|
||||
if (requestId === this.taskCarrierRequestId) this.taskCarrierLoading = false;
|
||||
|
||||
Reference in New Issue
Block a user