From 7ed2a032d0724e68aec8af940f2ce0023a9f0eb7 Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期三, 15 四月 2026 09:27:51 +0800
Subject: [PATCH] 修改调度单年月日
---
ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue | 416 ++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 313 insertions(+), 103 deletions(-)
diff --git a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
index 7b708bb..82fb31f 100644
--- a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
+++ b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
@@ -5,7 +5,14 @@
@row-update="rowUpdate" @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel"
@search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
@current-change="currentChange" @size-change="sizeChange" @on-load="onLoad">
-
+ <template #licensePlate-form="{ row, disabled }">
+ <el-input v-model="form.licensePlate" placeholder="璇烽�夋嫨杞︾墝鍙�" readonly :disabled="disabled"
+ @click="handleVehicleSelect">
+ <template #append>
+ <el-button icon="el-icon-search" @click="handleVehicleSelect" />
+ </template>
+ </el-input>
+ </template>
<!-- template 涓� -->
<template #requiredVehicleTypes-form="{ row, disabled }">
<template v-if="disabled">
@@ -319,7 +326,7 @@
</div>
<div v-if="optionType == 'loading'">
- <el-descriptions v-if="optionNum == 'radio'" style="margin-bottom: 20px" :column="2" border>
+ <el-descriptions v-if="optionNum == 'radio'" style="margin-bottom: 20px" :column="2" border>
<el-descriptions-item label="璋冨害鍗曞彿">{{ form.dispatchNo }}</el-descriptions-item>
<el-descriptions-item label="瀹㈡埛">{{ form.customerName }}</el-descriptions-item>
<el-descriptions-item label="椤圭洰鍚嶇О">{{ form.projectName }}</el-descriptions-item>
@@ -649,7 +656,17 @@
<flowLog ref="flowLogIshow" :isShow="false" :flowParams="flowParams"></flowLog>
</basicContainer>
+ <el-dialog title="閫夋嫨杞﹁締" v-model="vehicleDialogVisible" width="70%" append-to-body :close-on-click-modal="false">
+ <avue-crud ref="vehicleCrudRef" :option="vehicleOption" :data="vehicleData" :page="vehiclePage"
+ @on-load="loadVehicleList" @search-change="vehicleSearchChange" @search-reset="vehicleSearchReset"
+ @current-change="vehicleCurrentChange" @size-change="vehicleSizeChange" @row-click="handleVehicleRowClick">
+ </avue-crud>
+ <template #footer>
+ <el-button @click="vehicleDialogVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="confirmVehicleSelection">纭� 瀹�</el-button>
+ </template>
+ </el-dialog>
</template>
@@ -679,7 +696,7 @@
importTemplateTmsDispatchOrder, ypdddjSumbit,
tmsTmsDispatchOrderImportLog,
saveTmsFinanceDetail2,
- getLastLicensePlate,
+ getLastLicensePlate,
} from "@/api/tms/tmsDispatchOrder";
import useCurrentInstance from "@/utils/useCurrentInstance";
import { computed, onMounted, onBeforeUnmount, reactive, ref, toRefs, watch, getCurrentInstance, nextTick } from "vue";
@@ -719,15 +736,27 @@
import {
tmsFinanceDetail
} from "@/api/tms/tmsDispatchOrder";
-const { appContext } = getCurrentInstance();
+const { appContext } = getCurrentInstance() as any;
const { proxy } = useCurrentInstance(
);
+// 瀹氫箟绫诲瀷
+interface VehicleRow {
+ id?: string;
+ licensePlate?: string;
+ serviceProviderName?: string;
+ vehicleType?: string;
+ internalCode?: string;
+ licenseHk?: string;
+ licenseMo?: string;
+ [key: string]: any;
+}
const { fee_type, sys_currency, vehicle_type, order_type } = proxy.useDict('fee_type', 'sys_currency', 'vehicle_type', 'order_type')
const crudRef = ref();
const boxFormRef = ref();
const goodsCrudRef = ref();
const actualFormRef = ref();
+const isAutoSettingVehicle = ref(false);
/**
* 瀛楀吀鍏叡杞崲鍑芥暟
*/
@@ -1178,9 +1207,9 @@
// },
orderTime: {
label: '涓嬪崟鏃堕棿',
- type: 'datetime', // 鏀逛负 datetime 绫诲瀷
- format: 'YYYY-MM-DD HH:mm:ss',
- valueFormat: 'YYYY-MM-DD HH:mm:ss',
+ type: 'date', // 鏀逛负 datetime 绫诲瀷
+ format: 'YYYY-MM-DD',
+ valueFormat: 'YYYY-MM-DD',
display: true,
rules: [
{
@@ -1356,37 +1385,54 @@
message: "涓婚┚椹跺憳涓嶈兘涓虹┖", trigger: "change"
}
],
- change: (val: any) => {
- // 闃叉閲嶅鎵ц
+ // 鍦� mainDriverId 鐨� change 浜嬩欢涓�
+ change: async (val: any) => {
if (data.isChanging) return;
data.isChanging = true;
+ isAutoSettingVehicle.value = true;
const table = crudRef.value?.getPropRef?.('mainDriverId')?.$refs?.temp;
if (!table) {
data.isChanging = false;
+ isAutoSettingVehicle.value = false;
return;
}
let active = table.active;
if (Array.isArray(active)) active = active[0];
+ console.log('鑷姩濉厖鎴愬姛:', active);
+ if (active && active.driverName) {
+ try {
- if (active) {
- Object.assign(form.value, {
- mainDriverId: active.id,
- mainDriverName: active.driverName,
- });
+ await nextTick(); // 绛夊緟娓呯┖鐢熸晥
+ const res = await getLastLicensePlate(active.driverName);
- // 鑾峰彇杞︾墝鍙峰苟璧嬪��
- getLastLicensePlate(active.driverName).then(res => {
- if (res.code == 200) {
- form.value.licensePlate = res.data.licensePlate;
- form.value.vehicleId = res.data.vehicleId
+ if (res.code === 200 && res.data) {
+ const vehicleData = res.data;
+ nextTick(() => {
+ Object.assign(form.value, {
+ licensePlate: vehicleData.licensePlate,
+ vehicleId: vehicleData.vehicleId,
+ actualVehicleType: vehicleData.actualVehicleType,
+ mainDriverName: active.driverName
+
+
+ });
+ })
+ await nextTick();
+ console.log('鑷姩濉厖鎴愬姛:', form.value);
}
- }).finally(() => {
+ } catch (e) {
+ console.error("鑷姩鑾峰彇杞︾墝澶辫触", e);
+ } finally {
data.isChanging = false;
- });
+ setTimeout(() => {
+ // isAutoSettingVehicle.value = false;
+ }, 500); // 绋嶅井寤堕暱涓�鐐规椂闂达紝闃叉 vehicleId 鐨� change 浜嬩欢璇Е
+ }
} else {
data.isChanging = false;
+ // isAutoSettingVehicle.value = false;
}
},
// change: (val: any) => {
@@ -1414,7 +1460,7 @@
searchMenuSpan: 5,
column: {
vehicleProviderName: {
- label: '杞﹁締鏈嶅姟鍟�1', minWidth: 130,
+ label: '杞﹁締鏈嶅姟鍟�', minWidth: 130,
search: true,
},
driverName: {
@@ -1505,6 +1551,8 @@
if (Array.isArray(value)) {
id = value[0]
}
+ console.log(98521);
+
getTmsDriver(id).then(res => {
return callback(res.data || {})
})
@@ -1524,92 +1572,117 @@
}
},
- vehicleId: {
+ licensePlate: {
label: '杞︾墝鍙�', dataType: 'string',
display: true,
+ readonly: true,
rules: [
{
- required: true,
+ required: false,
message: "杞︾墝鍙蜂笉鑳戒负绌�", trigger: "change"
}
],
- change: (val: any) => {
- const table = crudRef.value?.getPropRef?.('vehicleId')?.$refs?.temp;
- if (!table) return;
- let active = table.active;
- if (Array.isArray(active)) active = active[0];
- if (active) {
- Object.assign(form.value, {
- vehicleId: active.id,
- licensePlate: active.licensePlate,
- actualVehicleType: active.vehicleType,
- });
- }
- },
- type: 'table', suffixIcon: 'search',
- children: {
- border: true,
- searchLabelWidth: 100,
- searchMenuSpan: 5,
- column: {
- serviceProviderName: {
- label: '杞﹁締鏈嶅姟鍟�', minWidth: 130,
- search: true,
- },
- vehicleType: {
- label: '杞﹁締绫诲瀷', minWidth: 120,
- type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/vehicle_type',
-
- search: true,
- },
- internalCode: {
- label: '杞﹁締鍐呴儴缂栫爜', minWidth: 120,
- search: true,
- },
- licensePlate: {
- label: '杞︾墝鍙�', minWidth: 120,
- search: true,
- },
- licenseHk: {
- label: '棣欐腐鐗岀収', minWidth: 120,
- search: true,
- },
- licenseMo: {
- label: '婢抽棬鐗岀収', minWidth: 120,
- search: true,
- },
- },
-
- },
- props: {
- label: 'licensePlate',
- value: 'id'
- },
- onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
- if (value) {
- let id = value;
- if (Array.isArray(value)) {
- id = value[0]
- }
- getTmsVehicle(id).then(res => {
- return callback(res.data || {})
- })
- } else {
- listTmsVehicle({
- pageSize: page.pageSize,
- pageNum: page.currentPage, ...data,
- carrierType: form.value.operationMode, serviceProviderId: form.value.vehicleProviderId
- }).then(res => {
- return callback({
- total: res.total,
- data: res.rows || [],
- })
- })
- }
-
+ click: ({ value, column }) => {
+ // 鐐瑰嚮杈撳叆妗嗘椂瑙﹀彂閫夋嫨寮圭獥
+ handleVehicleSelect();
}
-
},
+ // vehicleId: {
+ // label: '杞︾墝鍙�', dataType: 'string',
+ // display: true,
+ // rules: [
+ // {
+ // required: true,
+ // message: "杞︾墝鍙蜂笉鑳戒负绌�", trigger: "change"
+ // }
+ // ],
+ // change: (val: any) => {
+ // if (isAutoSettingVehicle.value) {
+ // return;
+ // }
+
+ // const table = crudRef.value?.getPropRef?.('vehicleId')?.$refs?.temp;
+ // if (!table) return;
+ // let active = table.active;
+ // if (Array.isArray(active)) active = active[0];
+ // console.log(9852);
+
+ // if (active) {
+ // Object.assign(form.value, {
+ // vehicleId: active.id,
+ // licensePlate: active.licensePlate,
+ // actualVehicleType: active.vehicleType,
+ // });
+ // }
+ // },
+ // type: 'table', suffixIcon: 'search',
+ // children: {
+ // border: true,
+ // searchLabelWidth: 100,
+ // searchMenuSpan: 5,
+ // column: {
+ // serviceProviderName: {
+ // label: '杞﹁締鏈嶅姟鍟�', minWidth: 130,
+ // search: true,
+ // },
+ // vehicleType: {
+ // label: '杞﹁締绫诲瀷', minWidth: 120,
+ // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/vehicle_type',
+
+ // search: true,
+ // },
+ // internalCode: {
+ // label: '杞﹁締鍐呴儴缂栫爜', minWidth: 120,
+ // search: true,
+ // },
+ // licensePlate: {
+ // label: '杞︾墝鍙�', minWidth: 120,
+ // search: true,
+ // },
+ // licenseHk: {
+ // label: '棣欐腐鐗岀収', minWidth: 120,
+ // search: true,
+ // },
+ // licenseMo: {
+ // label: '婢抽棬鐗岀収', minWidth: 120,
+ // search: true,
+ // },
+ // },
+
+ // },
+ // props: {
+ // label: 'licensePlate',
+ // value: 'id'
+ // },
+ // onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
+ // if (value) {
+ // let id = value;
+ // if (Array.isArray(value)) {
+ // id = value[0]
+ // }
+ // console.log(555, 'xq1');
+
+ // getTmsVehicle(id).then(res => {
+ // return callback(res.data || {})
+ // })
+ // } else {
+ // console.log(444, 'xq1');
+
+ // listTmsVehicle({
+ // pageSize: page.pageSize,
+ // pageNum: page.currentPage, ...data,
+ // carrierType: form.value.operationMode, serviceProviderId: form.value.vehicleProviderId
+ // }).then(res => {
+ // return callback({
+ // total: res.total,
+ // data: res.rows || [],
+ // })
+ // })
+ // }
+
+ // }
+
+ // },
actualVehicleType: {
label: '娲惧嚭杞﹀瀷',
display: true, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
@@ -2614,10 +2687,14 @@
if (Array.isArray(value)) {
id = value[0]
}
+ console.log(998, 'xq1');
+
getTmsVehicle(id).then(res => {
return callback(res.data || {})
})
} else {
+ console.log(669, 'xq2');
+
listTmsVehicle({ pageSize: page.pageSize, pageNum: page.currentPage, ...data }).then(res => {
return callback({
total: res.total,
@@ -3562,7 +3639,7 @@
customsServiceProviderName: form.value.customsServiceProviderName
};
});
- }else if (optionNum.value == 'radio') {
+ } else if (optionNum.value == 'radio') {
result = [{
id: form.value.id,
customsServiceProviderId: form.value.customsServiceProviderId,
@@ -3582,7 +3659,7 @@
})
} else if (optionType.value === 'loading') {
- let result = <any>[];
+ let result = <any>[];
if (optionNum.value == 'checkbox') {
result = clearanceList.value.map(item => {
return {
@@ -3591,7 +3668,7 @@
loadingServiceProviderName: form.value.loadingServiceProviderName
};
});
- }else if (optionNum.value == 'radio') {
+ } else if (optionNum.value == 'radio') {
result = [{
id: form.value.id,
loadingServiceProviderId: form.value.loadingServiceProviderId,
@@ -4246,7 +4323,7 @@
const handleCustomsAdd = (row) => {
title.value = '琛ュ厖濮旀墭瑁呭嵏淇℃伅';
- clearanceList.value = [];
+ clearanceList.value = [];
// 2. 娓呴櫎琛ㄦ牸瑙嗚涓婄殑閫変腑鐘舵��
if (crudRef.value) {
crudRef.value.clearSelection();
@@ -5065,6 +5142,139 @@
}
}
};
+/* 杞︾墝鍙� */
+// --- 鐘舵�佺鐞� ---
+const vehicleDialogVisible = ref(false);
+const vehicleData = ref<VehicleRow[]>([]);
+const vehicleQuery = ref<any>({});
+const selectedVehicleRow = ref<VehicleRow>({});
+
+const vehiclePage = ref({
+ currentPage: 1,
+ pageSize: 10,
+ total: 0
+});
+
+// --- 寮圭獥閰嶇疆 ---
+const vehicleOption = ref({
+ header: true,
+ menu: false,
+ addBtn: false,
+ refreshBtn: true,
+ columnBtn: false,
+ index: false,
+ selection: false,
+ searchShow: true,
+ searchMenuSpan: 6,
+ searchLabelWidth: 100,
+ highlightCurrentRow: true,
+ column: [
+ { label: '杞﹁締鏈嶅姟鍟�', prop: 'serviceProviderName', search: true },
+ {
+ label: '杞﹁締绫诲瀷',
+ prop: 'vehicleType',
+ type: 'select',
+ dataType: 'string',
+ dicUrl: '/system/dict/data/type/vehicle_type',
+ search: true
+ },
+ { label: '杞﹁締鍐呴儴缂栫爜', prop: 'internalCode', search: true },
+ { label: '杞︾墝鍙�', prop: 'licensePlate', search: true },
+ { label: '棣欐腐鐗岀収', prop: 'licenseHk' },
+ { label: '婢抽棬鐗岀収', prop: 'licenseMo' }
+ ]
+});
+
+// --- 鏂规硶 ---
+
+/**
+ * 鍔犺浇鏁版嵁锛氶粯璁ゅ己鍒朵紶 carrierType: '0'
+ */
+const loadVehicleList = async (page?: any, params?: any) => {
+ const query = {
+ pageNum: vehiclePage.value.currentPage,
+ pageSize: vehiclePage.value.pageSize,
+ carrierType: '0', // 榛樿寮哄埗浼�0
+ ...vehicleQuery.value,
+ ...params
+ };
+
+ try {
+ const res = await listTmsVehicle(query);
+ if (res.code === 200) {
+ // const { records, total } = res.rows;
+ vehicleData.value = res.rows;
+ vehiclePage.value.total = res.total;
+ }
+ } catch (error) {
+ console.error("鍔犺浇杞﹁締鍒楄〃澶辫触", error);
+ }
+};
+
+/**
+ * 鎼滅储锛氬甫鍏ユ悳绱㈠弬鏁板苟寮哄埗 carrierType 涓� 0
+ */
+const vehicleSearchChange = (params: any, done: Function) => {
+ vehicleQuery.value = params;
+ vehiclePage.value.currentPage = 1;
+ loadVehicleList();
+ done();
+};
+
+/**
+ * 閲嶇疆锛氭竻绌烘悳绱㈡潯浠讹紝浣嗕緷鐒朵繚鐣� carrierType 涓� 0
+ */
+const vehicleSearchReset = () => {
+ vehicleQuery.value = {}; // 娓呯┖鎼滅储
+ vehiclePage.value.currentPage = 1;
+ loadVehicleList(); // loadVehicleList 鍐呴儴宸茬粡鍐欐 carrierType: '0'
+};
+
+const vehicleCurrentChange = (val: number) => {
+ vehiclePage.value.currentPage = val;
+ loadVehicleList();
+};
+
+const vehicleSizeChange = (val: number) => {
+ vehiclePage.value.pageSize = val;
+ loadVehicleList();
+};
+
+const handleVehicleRowClick = (row: VehicleRow) => {
+ selectedVehicleRow.value = row;
+};
+
+// 鎵撳紑寮圭獥鏂规硶
+const handleVehicleSelect = () => {
+ selectedVehicleRow.value = {};
+ vehicleDialogVisible.value = true;
+};
+
+/**
+ * 纭閫夋嫨锛氬洖鏄惧埌涓昏〃鍗�
+ */
+const confirmVehicleSelection = () => {
+ if (!selectedVehicleRow.value.licensePlate) {
+ appContext.$message.warning("璇风偣鍑婚�夋嫨涓�琛岃褰�");
+ return;
+ }
+ // 1. 璧嬪�� (纭繚涓昏〃鍗� data.form 瀛樺湪)
+
+
+ data.form.vehicleId = selectedVehicleRow.value.id;
+ data.form.licensePlate = selectedVehicleRow.value.licensePlate;
+ data.form.actualVehicleType= selectedVehicleRow.value.vehicleType;
+
+ // 濡傛灉闇�瑕佸叾浠栧瓧娈典篃鍙互涓�骞跺甫鍥烇紝姣斿鏈嶅姟鍟嗙瓑
+ // data.form.serviceProviderName = selectedVehicleRow.value.serviceProviderName;
+
+ vehicleDialogVisible.value = false;
+
+ // 2. 寮哄埗瑙嗗浘鏇存柊
+ nextTick(() => {
+ appContext.$forceUpdate();
+ });
+};
</script>
<style lang="scss" scoped>
--
Gitblit v1.8.0