Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -583,6 +583,7 @@
|
||||
clearable
|
||||
filterable
|
||||
placeholder="请选择"
|
||||
:disabled="dialogMode === 'add'"
|
||||
@visible-change="visible => visible && loadTransportTypeOptions()"
|
||||
>
|
||||
<el-option
|
||||
@@ -825,27 +826,15 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="司机" :required="['自运', '网货平台'].includes(dialogForm.carrierType)">
|
||||
<el-select
|
||||
<el-autocomplete
|
||||
v-model="dialogForm.driverName"
|
||||
clearable
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
remote
|
||||
reserve-keyword
|
||||
:remote-method="loadDriverOptions"
|
||||
:debounce="300"
|
||||
:fetch-suggestions="fetchDriverSuggestions"
|
||||
:loading="driverLoading"
|
||||
placeholder="请输入"
|
||||
@change="handleDriverChange"
|
||||
@visible-change="visible => visible && loadDriverOptions(dialogForm.driverName)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in driverOptions"
|
||||
:key="item.id || item.driverName || item.name"
|
||||
:label="item.driverName || item.name"
|
||||
:value="item.driverName || item.name"
|
||||
/>
|
||||
</el-select>
|
||||
@select="item => handleDriverSuggestionSelect('dialog', item)"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号" :required="['自运', '网货平台'].includes(dialogForm.carrierType)">
|
||||
<el-input v-model="dialogForm.driverPhone" clearable placeholder="请输入" />
|
||||
@@ -853,13 +842,13 @@
|
||||
<el-form-item label="车牌号" required>
|
||||
<el-input v-model="dialogForm.vehicleNo" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="挂车车牌号">
|
||||
<el-form-item v-if="dialogForm.carrierType !== '承运商'" label="挂车车牌号">
|
||||
<el-input v-model="dialogForm.trailerVehicleNo" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="押运人">
|
||||
<el-form-item v-if="dialogForm.carrierType !== '承运商'" label="押运人">
|
||||
<el-input v-model="dialogForm.escortName" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="押运人手机号">
|
||||
<el-form-item v-if="dialogForm.carrierType !== '承运商'" label="押运人手机号">
|
||||
<el-input v-model="dialogForm.escortPhone" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="里程(km)">
|
||||
@@ -1047,7 +1036,7 @@ const createDialogForm = () => ({
|
||||
batchNo: '',
|
||||
currentProcessNode: '接单',
|
||||
mileage: '',
|
||||
estimatedStartDate: dayjs().format('YYYY-MM-DD'),
|
||||
estimatedStartDate: '',
|
||||
estimatedEndDate: '',
|
||||
taskRemark: '',
|
||||
goodsJson: '',
|
||||
@@ -1207,6 +1196,13 @@ export default {
|
||||
mounted() {
|
||||
this.loadTransportTypeOptions();
|
||||
this.loadTable();
|
||||
const detailId = this.$route.query.detailId;
|
||||
if (detailId) this.openLoadingDialog('view', { id: detailId });
|
||||
},
|
||||
watch: {
|
||||
'$route.query.detailId'(detailId) {
|
||||
if (detailId) this.openLoadingDialog('view', { id: detailId });
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
buildQueryParams(form) {
|
||||
@@ -1280,11 +1276,11 @@ export default {
|
||||
findWaybillId(row, waybillNo) {
|
||||
const rows = this.splitText(row.loadingSubNos);
|
||||
const index = rows.findIndex(item => item === waybillNo);
|
||||
const linkedRows = this.parseJsonArray(row.waybillList || row.waybillRows || row.waybills);
|
||||
const linkedRows = parseJsonArray(row.waybillList || row.waybillRows || row.waybills);
|
||||
if (linkedRows[index]?.id || linkedRows[index]?.waybillId) {
|
||||
return linkedRows[index].id || linkedRows[index].waybillId;
|
||||
}
|
||||
const ids = this.parseJsonArray(row.waybillIdsJson);
|
||||
const ids = parseJsonArray(row.waybillIdsJson);
|
||||
return ids[index] || '';
|
||||
},
|
||||
async openWaybillDetail(row = {}) {
|
||||
@@ -1415,6 +1411,7 @@ export default {
|
||||
this.dialogVisible = true;
|
||||
this.dialogLoading = true;
|
||||
this.resetDialogData();
|
||||
if (mode === 'add') this.candidateQuery.transportType = 'road';
|
||||
try {
|
||||
if (row?.id) {
|
||||
const res = await loadingApi.getDetail(row.id);
|
||||
@@ -1435,6 +1432,7 @@ export default {
|
||||
} else {
|
||||
this.dialogForm = createDialogForm();
|
||||
this.candidateQuery = createCandidateSearchForm();
|
||||
this.candidateQuery.transportType = 'road';
|
||||
await this.loadCandidateWaybills();
|
||||
}
|
||||
} finally {
|
||||
@@ -1465,6 +1463,7 @@ export default {
|
||||
},
|
||||
clearLoadingDialog() {
|
||||
this.resetDialogData();
|
||||
if (this.dialogMode === 'add') this.candidateQuery.transportType = 'road';
|
||||
this.loadCandidateWaybills();
|
||||
},
|
||||
restoreRouteAndCargo() {
|
||||
@@ -1719,6 +1718,7 @@ export default {
|
||||
...this.buildQueryParams(this.candidateQuery),
|
||||
businessStatus: 'pending',
|
||||
onlyUnassignedLoading: 1,
|
||||
...(this.dialogMode === 'add' ? { transportType: 'road' } : {}),
|
||||
}
|
||||
);
|
||||
const page = unwrapPage(res);
|
||||
@@ -1738,6 +1738,7 @@ export default {
|
||||
},
|
||||
handleCandidateReset() {
|
||||
this.candidateQuery = createCandidateSearchForm();
|
||||
if (this.dialogMode === 'add') this.candidateQuery.transportType = 'road';
|
||||
this.candidatePage.currentPage = 1;
|
||||
this.loadCandidateWaybills();
|
||||
},
|
||||
@@ -1805,18 +1806,6 @@ export default {
|
||||
if (!this.dialogForm.transportType) {
|
||||
this.dialogForm.transportType = rows.find(row => row.transportType)?.transportType || '';
|
||||
}
|
||||
if (!this.dialogForm.carrierName) {
|
||||
this.dialogForm.carrierName = rows.find(row => row.carrierName)?.carrierName || '';
|
||||
}
|
||||
if (!this.dialogForm.driverName) {
|
||||
this.dialogForm.driverName = rows.find(row => row.driverName)?.driverName || '';
|
||||
}
|
||||
if (!this.dialogForm.driverPhone) {
|
||||
this.dialogForm.driverPhone = rows.find(row => row.driverPhone)?.driverPhone || '';
|
||||
}
|
||||
if (!this.dialogForm.vehicleNo) {
|
||||
this.dialogForm.vehicleNo = rows.find(row => row.vehicleNo)?.vehicleNo || '';
|
||||
}
|
||||
if (rebuildRoute) {
|
||||
this.routeNodes = this.buildRouteNodes(rows);
|
||||
}
|
||||
@@ -2079,7 +2068,11 @@ export default {
|
||||
});
|
||||
},
|
||||
handleCarrierTypeChange() {
|
||||
if (['自运', '网货平台'].includes(this.dialogForm.carrierType)) {
|
||||
if (this.dialogForm.carrierType === '承运商') {
|
||||
this.dialogForm.trailerVehicleNo = '';
|
||||
this.dialogForm.escortName = '';
|
||||
this.dialogForm.escortPhone = '';
|
||||
} else if (['自运', '网货平台'].includes(this.dialogForm.carrierType)) {
|
||||
this.dialogForm.carrierName = '';
|
||||
}
|
||||
},
|
||||
@@ -2089,6 +2082,26 @@ export default {
|
||||
this.dialogForm.driverPhone = driver.mobile || driver.driverPhone || driver.phone || '';
|
||||
}
|
||||
},
|
||||
fetchDriverSuggestions(queryString, callback) {
|
||||
this.loadDriverOptions(String(queryString || '').trim())
|
||||
.then(() =>
|
||||
callback(
|
||||
this.driverOptions.map(item => ({
|
||||
...item,
|
||||
value: item.driverName || item.name || '',
|
||||
}))
|
||||
)
|
||||
)
|
||||
.catch(() => callback([]));
|
||||
},
|
||||
handleDriverSuggestionSelect(target, item = {}) {
|
||||
const value = item.driverName || item.name || '';
|
||||
if (target === 'dialog') {
|
||||
this.dialogForm.driverName = value;
|
||||
const phone = item.mobile || item.driverPhone || item.phone || '';
|
||||
if (phone) this.dialogForm.driverPhone = phone;
|
||||
}
|
||||
},
|
||||
handleMileageInput(value) {
|
||||
this.dialogForm.mileage = String(value || '').replace(/[^\d.]/g, '');
|
||||
},
|
||||
@@ -2147,7 +2160,11 @@ export default {
|
||||
this.carrierLoading = true;
|
||||
try {
|
||||
this.carrierOptions = unwrapRecords(
|
||||
await getCustomerList(1, 20, { customerName: keyword })
|
||||
await getCustomerList(1, 20, {
|
||||
customerName: keyword,
|
||||
customerType: '承运商',
|
||||
status: 1,
|
||||
})
|
||||
);
|
||||
} finally {
|
||||
this.carrierLoading = false;
|
||||
|
||||
Reference in New Issue
Block a user