fix
This commit is contained in:
@@ -666,7 +666,7 @@
|
||||
class="business-crud-page__task-span-1"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.carrierName"
|
||||
v-model="taskCarrierValue"
|
||||
:placeholder="`请选择${taskCarrierLabel}`"
|
||||
filterable
|
||||
clearable
|
||||
@@ -674,7 +674,6 @@
|
||||
:loading="taskCarrierLoading"
|
||||
:disabled="dialogReadonly || (isWaybillDetailLayout && !form.projectId)"
|
||||
@visible-change="visible => visible && loadTaskCarrierOptions()"
|
||||
@change="handleTaskCarrierChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in taskCarrierOptions"
|
||||
@@ -686,8 +685,8 @@
|
||||
item.name ||
|
||||
item.customerCode
|
||||
"
|
||||
:label="item.customerName || item.carrierName || item.fullName || item.name"
|
||||
:value="item.customerName || item.carrierName || item.fullName || item.name"
|
||||
:label="item.label || item.customerName || item.carrierName || item.fullName || item.name"
|
||||
:value="item.value || item.customerName || item.carrierName || item.fullName || item.name"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -1206,7 +1205,7 @@
|
||||
<template v-if="hasTransportType">
|
||||
<el-form-item v-if="taskCarrierRequired" :label="taskCarrierLabel" required>
|
||||
<el-select
|
||||
v-model="form.carrierName"
|
||||
v-model="taskCarrierValue"
|
||||
:placeholder="`请选择${taskCarrierLabel}`"
|
||||
filterable
|
||||
clearable
|
||||
@@ -1217,7 +1216,6 @@
|
||||
!taskCarrierRequired
|
||||
"
|
||||
@visible-change="visible => visible && loadTaskCarrierOptions()"
|
||||
@change="handleTaskCarrierChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in taskCarrierOptions"
|
||||
@@ -1229,8 +1227,8 @@
|
||||
item.name ||
|
||||
item.customerCode
|
||||
"
|
||||
:label="item.customerName || item.carrierName || item.fullName || item.name"
|
||||
:value="item.customerName || item.carrierName || item.fullName || item.name"
|
||||
:label="item.label || item.customerName || item.carrierName || item.fullName || item.name"
|
||||
:value="item.value || item.customerName || item.carrierName || item.fullName || item.name"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -5992,6 +5990,17 @@ export default {
|
||||
taskCarrierLabel() {
|
||||
return this.form.carrierType === '网货平台' ? '承运方' : '承运商';
|
||||
},
|
||||
taskCarrierValue: {
|
||||
get() {
|
||||
if (this.isWaybillDetailLayout && this.form.carrierType === '承运商') {
|
||||
return this.form.carrierContractId || '';
|
||||
}
|
||||
return this.form.carrierName || '';
|
||||
},
|
||||
set(value) {
|
||||
this.handleTaskCarrierChange(value);
|
||||
},
|
||||
},
|
||||
showRoadEscortFields() {
|
||||
return this.isRoadTransport && !this.isCarrierMode;
|
||||
},
|
||||
@@ -8179,6 +8188,7 @@ export default {
|
||||
this.taskCarrierLoading = false;
|
||||
this.form.carrierName = '';
|
||||
this.form.carrierId = '';
|
||||
this.form.carrierContractId = '';
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -8189,6 +8199,7 @@ export default {
|
||||
if (this.isWaybillDetailLayout) {
|
||||
this.form.carrierName = '';
|
||||
this.form.carrierId = '';
|
||||
this.form.carrierContractId = '';
|
||||
this.loadTaskCarrierOptions(project);
|
||||
}
|
||||
if (this.contractSelectEnabled || this.config.enableTransportPlanForm) {
|
||||
@@ -8414,6 +8425,11 @@ export default {
|
||||
carrierInfo.customerName ||
|
||||
carrierInfo.name ||
|
||||
'';
|
||||
this.form.carrierContractId =
|
||||
this.form.carrierContractId ||
|
||||
taskInfo.carrierContractId ||
|
||||
carrierInfo.carrierContractId ||
|
||||
'';
|
||||
this.form.driverName =
|
||||
this.form.driverName || taskInfo.driverName || carrierInfo.driverName || '';
|
||||
this.form.driverPhone =
|
||||
@@ -8560,7 +8576,14 @@ export default {
|
||||
this.form.carrierName = '';
|
||||
this.form.carrierId = '';
|
||||
}
|
||||
if (nextValue !== '承运商') {
|
||||
this.form.carrierContractId = '';
|
||||
}
|
||||
this.form.carrierType = nextValue;
|
||||
if (this.isWaybillDetailLayout) {
|
||||
this.taskCarrierRequestId += 1;
|
||||
this.taskCarrierOptions = [];
|
||||
}
|
||||
},
|
||||
isTaskCarrierRequired(carrierType) {
|
||||
return ['承运商', '网货平台'].includes(String(carrierType || '').trim());
|
||||
@@ -8570,6 +8593,27 @@ export default {
|
||||
if (this.isWaybillDetailLayout) {
|
||||
const projectId = project.id || project.projectId || this.form.projectId;
|
||||
const requestId = ++this.taskCarrierRequestId;
|
||||
if (this.form.carrierType === '承运商') {
|
||||
if (!projectId) {
|
||||
this.taskCarrierOptions = [];
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
this.taskCarrierLoading = true;
|
||||
return getContractList(1, 9999, {
|
||||
projectId,
|
||||
projectName: project.projectName || this.form.projectName,
|
||||
contractCategory: '承运商合同',
|
||||
})
|
||||
.then(res => {
|
||||
if (requestId !== this.taskCarrierRequestId) return this.taskCarrierOptions;
|
||||
this.taskCarrierOptions = this.getWaybillCarrierContractOptions(extractRecords(res));
|
||||
return this.taskCarrierOptions;
|
||||
})
|
||||
.catch(() => this.taskCarrierOptions)
|
||||
.finally(() => {
|
||||
if (requestId === this.taskCarrierRequestId) this.taskCarrierLoading = false;
|
||||
});
|
||||
}
|
||||
const currentProject = this.projectOptions.find(
|
||||
item => String(item.id) === String(projectId)
|
||||
);
|
||||
@@ -8607,10 +8651,16 @@ export default {
|
||||
},
|
||||
handleTaskCarrierChange(value) {
|
||||
const carrier = this.taskCarrierOptions.find(item =>
|
||||
[item.customerName, item.carrierName, item.fullName, item.name].some(
|
||||
name => String(name || '') === value
|
||||
[item.value, item.customerName, item.carrierName, item.fullName, item.name].some(name =>
|
||||
String(name || '') === String(value || '')
|
||||
)
|
||||
);
|
||||
if (this.isWaybillDetailLayout && this.form.carrierType === '承运商') {
|
||||
this.form.carrierContractId = carrier?.carrierContractId || '';
|
||||
this.form.carrierId = carrier?.carrierId || '';
|
||||
this.form.carrierName = carrier?.carrierName || value || '';
|
||||
return;
|
||||
}
|
||||
this.form.carrierId = carrier?.id || '';
|
||||
this.form.carrierName = value || '';
|
||||
},
|
||||
@@ -8959,6 +9009,9 @@ export default {
|
||||
if (this.isTaskCarrierRequired(row.carrierType)) {
|
||||
requiredFields.push(['carrierName', row.carrierType === '网货平台' ? '承运方' : '承运商']);
|
||||
}
|
||||
if (this.isWaybillDetailLayout && row.carrierType === '承运商') {
|
||||
requiredFields.push(['carrierContractId', '承运商合同']);
|
||||
}
|
||||
if (this.isRoadTransport && row.carrierType === '自运') {
|
||||
requiredFields.push(['driverName', '司机']);
|
||||
requiredFields.push(['driverPhone', '手机号']);
|
||||
@@ -9035,6 +9088,7 @@ export default {
|
||||
carrierType: row.carrierType,
|
||||
carrierId: row.carrierId,
|
||||
carrierName: row.carrierName,
|
||||
carrierContractId: row.carrierContractId,
|
||||
driverId: row.driverId,
|
||||
driverName: row.driverName,
|
||||
driverPhone: row.driverPhone,
|
||||
@@ -9062,6 +9116,7 @@ export default {
|
||||
carrierType: row.carrierType,
|
||||
carrierId: row.carrierId,
|
||||
carrierName: row.carrierName,
|
||||
carrierContractId: row.carrierContractId,
|
||||
driverId: row.driverId,
|
||||
driverName: row.driverName,
|
||||
driverPhone: row.driverPhone,
|
||||
@@ -12298,6 +12353,31 @@ export default {
|
||||
names.forEach(append);
|
||||
return options;
|
||||
},
|
||||
getWaybillCarrierContractOptions(contracts = []) {
|
||||
const carrierNameCounts = contracts.reduce((counts, contract) => {
|
||||
const carrierName = String(contract.partyB || '').trim();
|
||||
if (carrierName) counts[carrierName] = (counts[carrierName] || 0) + 1;
|
||||
return counts;
|
||||
}, {});
|
||||
return contracts
|
||||
.map(contract => {
|
||||
const carrierName = String(contract.partyB || '').trim();
|
||||
if (!carrierName || !contract.id) return null;
|
||||
const contractIdentifier = contract.contractName || contract.contractNo || contract.id;
|
||||
return {
|
||||
id: contract.id,
|
||||
value: contract.id,
|
||||
label:
|
||||
carrierNameCounts[carrierName] > 1
|
||||
? `${carrierName}(${contractIdentifier})`
|
||||
: carrierName,
|
||||
carrierName,
|
||||
fullName: carrierName,
|
||||
carrierContractId: contract.id,
|
||||
};
|
||||
})
|
||||
.filter(Boolean);
|
||||
},
|
||||
loadDispatchCarrierOptions(plan = this.dispatchRow) {
|
||||
if (this.dispatchCarrierLoading) return Promise.resolve(this.dispatchCarrierOptions);
|
||||
const projectId = plan?.projectId;
|
||||
|
||||
Reference in New Issue
Block a user