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 | 1059 ++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 803 insertions(+), 256 deletions(-)
diff --git a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
index 022d5cf..82fb31f 100644
--- a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
+++ b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
@@ -5,6 +5,51 @@
@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">
+ <span>{{ dictFormat(vehicle_type, row?.requiredVehicleTypes || form?.requiredVehicleTypes) }}</span>
+ </template>
+ <template v-else>
+ <el-select v-model="form.requiredVehicleTypes" placeholder="璇烽�夋嫨杞﹀瀷" style="width: 100%">
+ <el-option v-for="item in vehicle_type" :key="item.value" :label="item.label" :value="item.value" />
+ </el-select>
+ </template>
+ </template>
+
+ <template #orderType-form="{ row, disabled }">
+ <template v-if="disabled">
+ <span>{{ dictFormat(order_type, row?.orderType || form?.orderType) }}</span>
+ </template>
+ <template v-else>
+ <el-select v-model="form.orderType" placeholder="璇烽�夋嫨璁㈠崟绫诲瀷" @change="(val) => handleOrderTypeChange(val)"
+ style="width: 100%" clearable>
+ <el-option v-for="item in order_type" :key="item.value" :label="item.label" :value="parseInt(item.value)" />
+ </el-select>
+ </template>
+ </template>
+
+ <template #actualVehicleType-form="{ row, disabled }">
+ <template v-if="disabled">
+ <span>{{ dictFormat(vehicle_type, row?.actualVehicleType || form?.actualVehicleType) }}</span>
+ </template>
+ <template v-else>
+ <el-select v-model="form.actualVehicleType" placeholder="璇烽�夋嫨瀹為檯杞﹀瀷" style="width: 100%">
+ <el-option v-for="item in vehicle_type" :key="item.value" :label="item.label" :value="item.value" />
+ </el-select>
+ </template>
+ </template>
+
+
+
<template #menu-left>
<!-- <el-button-->
<!-- type="success"-->
@@ -41,11 +86,10 @@
<el-button type="primary" icon="Male" :disabled="pageF.single" @click="handleConnectHang"
v-hasPermi="['tms:tmsDispatchOrder:connectHang']">鎺ユ寕
</el-button>
-
- <el-button type="warning" icon="Avatar" :disabled="!(isCustoms == 0)" @click="handleCustoms"
+ <el-button type="warning" icon="Avatar" :disabled="selectionList.length === 0" @click="handleCustoms"
v-hasPermi="['tms:tmsDispatchOrder:customs']">濮旀墭鎶ュ叧淇℃伅
</el-button>
- <el-button type="primary" icon="UserFilled" :disabled="!(isLoad == 0)" @click="handleLoading"
+ <el-button type="primary" icon="UserFilled" :disabled="selectionList.length === 0" @click="handleLoading"
v-hasPermi="['tms:tmsDispatchOrder:loading']">濮旀墭鍗歌揣淇℃伅
</el-button>
<el-button type="primary" icon="UserFilled" :disabled="pageF.single" @click="handleZZ"
@@ -155,7 +199,7 @@
</el-tooltip>
<el-tooltip content="鏌ョ湅琛岀▼" placement="top">
<el-link size="small" type="primary" v-if="![0, 1].includes(row.status)" @click="handleLogItinerary(row)"
- v-hasPermi="['tms:tmsTrip:list']" class="link-btn" underline="never" icon="el-icon-view">
+ v-hasPermi="['tms:tmsTrip:list']" class="link-btn" underline="never" icon="Finished">
</el-link>
</el-tooltip>
@@ -165,13 +209,13 @@
</el-link>
</el-tooltip>
-
+ <!--
<el-tooltip content="瀹屾垚琛岀▼" placement="top">
<el-link size="small" type="primary" v-if="[2].includes(row.status)" @click="handleOk(row)" class="link-btn"
v-hasPermi="['tms:tmsDispatchOrder:okOrder']" underline="never" icon="el-icon-circle-check">
</el-link>
- </el-tooltip>
+ </el-tooltip> -->
<el-tooltip content="鏃ュ織" placement="top">
<el-link size="small" type="primary" @click="handleFlow(row)" class="link-btn"
@@ -214,7 +258,7 @@
min="0"></el-input-number>
</template>
</avue-crud>
- <h2 v-if="optionType == 'addFinance'">瀹炴姤瀹為攢璐圭敤1</h2>
+ <h2 v-if="optionType == 'addFinance'">瀹炴姤瀹為攢璐圭敤</h2>
<avue-form v-if="optionType == 'addItinerary' || optionType == 'addFinance'" v-model="boxForm" ref="boxFormRef"
:option="boxFormOption">
@@ -262,26 +306,40 @@
</div>
<div v-if="optionType == 'customs'">
- <el-descriptions 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>
<el-descriptions-item label="杩愯緭璺嚎">{{ form.transportLine }}</el-descriptions-item>
</el-descriptions>
+ <el-table v-if="optionNum == 'checkbox'" :data="clearanceList" border size="small"
+ style="width: 100%; margin-bottom: 20px">
+ <el-table-column prop="dispatchNo" label="璋冨害鍗曞彿" width="150" />
+ <el-table-column prop="customerName" label="瀹㈡埛" min-width="120" show-overflow-tooltip />
+ <el-table-column prop="projectName" label="椤圭洰鍚嶇О" min-width="120" show-overflow-tooltip />
+ <el-table-column prop="transportLine" label="杩愯緭璺嚎" min-width="150" show-overflow-tooltip />
+ </el-table>
+
<avue-form v-model="form" ref="boxFormRef" :option="boxFormOption">
</avue-form>
</div>
<div v-if="optionType == 'loading'">
- <el-descriptions 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>
<el-descriptions-item label="杩愯緭璺嚎">{{ form.transportLine }}</el-descriptions-item>
</el-descriptions>
+ <el-table v-if="optionNum == 'checkbox'" :data="clearanceList" border size="small"
+ style="width: 100%; margin-bottom: 20px">
+ <el-table-column prop="dispatchNo" label="璋冨害鍗曞彿" width="150" />
+ <el-table-column prop="customerName" label="瀹㈡埛" min-width="120" show-overflow-tooltip />
+ <el-table-column prop="projectName" label="椤圭洰鍚嶇О" min-width="120" show-overflow-tooltip />
+ <el-table-column prop="transportLine" label="杩愯緭璺嚎" min-width="150" show-overflow-tooltip />
+ </el-table>
<avue-form v-model="form" ref="boxFormRef" :option="boxFormOption">
-
</avue-form>
</div>
<template #footer>
@@ -357,7 +415,6 @@
<el-input-number v-model="row.actualFeeAmount" :precision="2" :min="0" controls-position="right"
placeholder="杈撳叆閲戦" style="width: 100%" />
</template>
-
<template #currency="{ row }">
<el-radio-group v-model="row.currency">
<el-radio v-for="item in sys_currency" :key="item.value" :label="item.value">
@@ -366,15 +423,32 @@
</el-radio-group>
</template>
<template #voucherUrl="{ row }">
- <avue-upload v-model="row.voucherUrl" :action="'/common/upload2'" type="upload" accept="image/*"
- @upload-after="(res, done, loading, column) => handleUploadAfter(res, done, loading, column, row)"></avue-upload>
+ <!-- <avue-upload v-model="row.voucherUrl" :action="'/common/upload2'" type="upload" accept="image/*"
+ @upload-after="(res, done, loading, column) => handleUploadAfter(res, done, loading, column, row)"></avue-upload> -->
+
+ <!-- 鍑瘉鍥剧墖 -->
+ <el-upload class="upload-demo" ref="uploadRef" :limit="1" drag :action="urlApi + '/common/upload2'" multiple
+ :show-file-list="true" :on-success="(res) => handleUploadAfter(res, row)"
+ :on-exceed="(files) => handleExceed(files, row)">
+ <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+ <div class="el-upload__text">
+ 鐐瑰嚮鎴栧皢鍥剧墖鎷栨嫿鍒版鍖哄煙涓婁紶
+ </div>
+
+ </el-upload>
</template>
<template #remark="{ row }">
<el-input v-model="row.remark" placeholder="濉啓澶囨敞" clearable />
</template>
</avue-crud>
- <avue-crud :option="boxTableOption" :data="boxTableData">
-
+ <avue-crud :option="boxTableOption" :data="boxTableData" @selection-change="boxSelectionChange">
+ <template #menu-left>
+ <el-button type="danger" plain icon="Delete"
+ :disabled="!(boxSelectionList.length === 1 && boxSelectionList[0]?.status === 0)"
+ @click="handleBatchBoxDel">
+ 浣滃簾
+ </el-button>
+ </template>
</avue-crud>
</div>
<template #footer>
@@ -503,7 +577,7 @@
<div class="dialog-footer">
<el-button @click="print = 0" v-if="print == 1">閲嶆柊濉啓</el-button>
<el-button type="primary" :loading="pageF.isUploading" @click="submitForm6">
- {{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�2' }}
+ {{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
</el-button>
<el-button @click="open6 = false">鍙� 娑�</el-button>
@@ -582,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>
@@ -611,10 +695,11 @@
printDispatchOrder,
importTemplateTmsDispatchOrder, ypdddjSumbit,
tmsTmsDispatchOrderImportLog,
- saveTmsFinanceDetail2
+ saveTmsFinanceDetail2,
+ getLastLicensePlate,
} from "@/api/tms/tmsDispatchOrder";
import useCurrentInstance from "@/utils/useCurrentInstance";
-import { computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance, nextTick } from "vue";
+import { computed, onMounted, onBeforeUnmount, reactive, ref, toRefs, watch, getCurrentInstance, nextTick } from "vue";
import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
import { usePagePlus } from "@/hooks/usePagePlus";
import { hasPermission } from "@/utils/permissionUtils";
@@ -648,17 +733,38 @@
import { $Print } from '@smallwei/avue'
import { getToken } from "@/utils/auth";
import { useAvueTableShowHide } from "@/hooks/useAvueTableShowHide";
-
-const { appContext } = getCurrentInstance();
+import {
+ tmsFinanceDetail
+} from "@/api/tms/tmsDispatchOrder";
+const { appContext } = getCurrentInstance() as any;
const { proxy } = useCurrentInstance(
);
-const { fee_type, sys_currency } = proxy.useDict('fee_type', 'sys_currency')
+// 瀹氫箟绫诲瀷
+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);
+/**
+ * 瀛楀吀鍏叡杞崲鍑芥暟
+ */
+const dictFormat = (dict: any, value: any) => {
+ const dictData = Array.isArray(dict) ? dict : (dict?.value || []);
+ if (value === undefined || value === null || value === '') return '';
+ return proxy.selectDictLabel(dictData, value);
+};
const permissionList = (key: any, row: any, index: any) => {
if (key == 'addBtn') {
@@ -694,6 +800,7 @@
};
const data = reactive({
form: <TmsDispatchOrderI>{},
+ boxSelectionList: <any>[],
queryParams: <TmsDispatchOrderI & PageQueryInterface>{},
page: <PagesInterface>{
pageSize: 30,
@@ -725,7 +832,7 @@
queryParams, form, page, selectionList, open3,
boxTableData, optionType,
boxFormOption, boxForm, boxTableOption, title, open, open2,
- goodsTableData, goodsForm, actualForm, selectionList2, isCustoms, isLoad, open5, open6, open7, zxhdjSingle
+ goodsTableData, goodsForm, actualForm, selectionList2, isCustoms, isLoad, open5, open6, open7, zxhdjSingle, boxSelectionList
} = toRefs(data);
const option = ref({
menuType: 'icon',
@@ -743,7 +850,7 @@
labelWidth: 130,
searchSpan: 6,
searchLabelWidth: 150,
- menuWidth: 300,
+ menuWidth: 350,
height: 530,
group: [
{
@@ -779,7 +886,7 @@
customerCode: active.customerCode,
contractId: active.contractId,
contractName: active.contractName,
- requiredVehicleTypes: active.vehicleType,
+ requiredVehicleTypes: active.vehicleType + '',
quotePlanId: active.quotePlanId,
});
form.value.shipperId = undefined;
@@ -864,15 +971,16 @@
display: true, disabled: true
},
requiredVehicleTypes: {
- label: '涓嬪崟杞﹀瀷', disabled: true,
- display: true, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
- rules: [
- {
- required: true,
- message: "涓嬪崟杞﹀瀷涓嶈兘涓虹┖", trigger: "blur"
- }
- ],
+ label: '涓嬪崟杞﹀瀷',
+ minWidth: 130,
+ display: true, // 鉁� 鏀逛负 true 鍦ㄨ〃鏍兼樉绀�
+ type: 'select',
+ search: true,
+ dicUrl: '/system/dict/data/type/vehicle_type',
+ dataType: 'string',
+
},
+
orderType: {
label: '璁㈠崟绫诲瀷',
display: true,
@@ -885,9 +993,13 @@
}
],
change: ({ value }: any) => {
+
option.value.group.forEach((item: any) => {
+
if (item.prop == 'pcxx') {
item.column.shipperId.rules.forEach((cItem: any) => {
+
+
cItem.required = !(value == 1);
});
item.column.receiverId.rules.forEach((cItem: any) => {
@@ -1095,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: [
{
@@ -1152,7 +1264,6 @@
}
],
change: ({ value }: any) => {
- console.log(value)
option.value.group.forEach((item: any) => {
if (item.prop == 'pcxx') {
item.column.commissionModel.display = value != 1;
@@ -1274,18 +1385,75 @@
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) return;
+ if (!table) {
+ data.isChanging = false;
+ isAutoSettingVehicle.value = false;
+ return;
+ }
+
let active = table.active;
if (Array.isArray(active)) active = active[0];
- if (active) {
- Object.assign(form.value, {
- mainDriverId: active.id,
- mainDriverName: active.driverName,
- });
+ console.log('鑷姩濉厖鎴愬姛:', active);
+ if (active && active.driverName) {
+ try {
+
+ await nextTick(); // 绛夊緟娓呯┖鐢熸晥
+ const res = await getLastLicensePlate(active.driverName);
+
+ 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);
+ }
+ } 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) => {
+ // const table = crudRef.value?.getPropRef?.('mainDriverId')?.$refs?.temp;
+ // if (!table) return;
+ // let active = table.active;
+ // if (Array.isArray(active)) active = active[0];
+ // console.log(active,'888');
+
+ // if (active) {
+ // Object.assign(form.value, {
+ // mainDriverId: active.id,
+ // mainDriverName: active.driverName,
+ // });
+ // console.log(active.driverName,'44');
+ // getLastLicensePlate(active.driverName).then(res => {
+ // console.log(res);
+
+ // })
+ // }
+ // },
type: 'table', suffixIcon: 'search',
children: {
border: true,
@@ -1383,6 +1551,8 @@
if (Array.isArray(value)) {
id = value[0]
}
+ console.log(98521);
+
getTmsDriver(id).then(res => {
return callback(res.data || {})
})
@@ -1402,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',
@@ -1796,12 +1991,12 @@
dataType: 'string',
},
- createTimeRange: {
- label: '鍒涘缓鏃堕棿', display: false, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
- valueFormat: 'YYYY-MM-DD',
- overHidden: true
- },
+ // createTimeRange: {
+ // label: '鍒涘缓鏃堕棿', display: false, searchRange: true, type: 'date',
+ // format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
+ // valueFormat: 'YYYY-MM-DD',
+ // overHidden: true
+ // },
createTimeRangeArray: {
label: '鍒涘缓鏃堕棿',
minWidth: 150,
@@ -1809,6 +2004,7 @@
searchRange: true,
addDisplay: false, // 鏂板鏃朵笉鏄剧ず
editDisplay: false, // 淇敼鏃朵笉鏄剧ず
+ viewDisplay: false,
type: 'daterange',
startPlaceholder: '寮�濮嬫棩鏈�',
endPlaceholder: '缁撴潫鏃ユ湡',
@@ -1827,7 +2023,8 @@
search: true,
searchRange: true,
addDisplay: false, // 鏂板鏃朵笉鏄剧ず
- editDisplay: false, // 淇敼鏃朵笉鏄剧ず
+ editDisplay: false, //
+ viewDisplay: false,
type: 'daterange',
startPlaceholder: '寮�濮嬫棩鏈�',
endPlaceholder: '缁撴潫鏃ユ湡',
@@ -1929,7 +2126,6 @@
display: false,
search: true,
type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',
-
},
@@ -1984,20 +2180,8 @@
search: true,
},
- confirmTime: {
- label: '纭鏃堕棿', minWidth: 200,
- display: false,
- hide: false,
- search: false,
- searchSpan: 6,
- },
- orderTime: {
- label: '涓嬪崟鏃堕棿', minWidth: 180,
- display: false,
- hide: false,
- search: false,
- searchSpan: 6,
- },
+
+
createBy: {
label: '鍒涘缓浜�', minWidth: 150,
addDisplay: false,
@@ -2010,7 +2194,7 @@
label: '鍒涘缓鏃堕棿', minWidth: 180,
addDisplay: false,
editDisplay: false,
- viewDisplay: false,
+ viewDisplay: true,
hide: false,
search: false,
overHidden: true,
@@ -2029,14 +2213,23 @@
label: '鏇存柊鏃堕棿', minWidth: 180,
addDisplay: false,
editDisplay: false,
- viewDisplay: false,
+ viewDisplay: true,
hide: false,
search: false,
overHidden: true,
searchSpan: 6,
},
-
+ confirmTime: {
+ label: '纭鏃堕棿', minWidth: 180,
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: true,
+ hide: true,
+ search: false,
+ overHidden: true,
+ searchSpan: 6,
+ },
confirmTimeRange: {
label: '纭鏃堕棿', display: false, searchRange: true, type: 'date',
format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
@@ -2049,17 +2242,29 @@
searchRange: true,
addDisplay: false, // 鏂板鏃朵笉鏄剧ず
editDisplay: false, // 淇敼鏃朵笉鏄剧ず
+ viewDisplay: false,
type: 'daterange',
startPlaceholder: '寮�濮嬫棩鏈�',
endPlaceholder: '缁撴潫鏃ユ湡',
valueFormat: 'YYYY-MM-DD',
hide: true
},
- okTimeRange: {
- label: '瀹屾垚鏃堕棿', display: false, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
- valueFormat: 'YYYY-MM-DD',
+ okTime: {
+ label: '瀹屾垚鏃堕棿', minWidth: 180,
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: true,
+ hide: true,
+ search: false,
+ searchSpan: 6,
},
+ // okTimeRange: {
+ // label: '瀹屾垚鏃堕棿2', display: false, searchRange: true, type: 'date',
+ // viewDisplay: true,
+ // format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
+ // valueFormat: 'YYYY-MM-DD',
+ // },
+
okTimeRangeArray: {
label: '瀹屾垚鏃堕棿',
minWidth: 150,
@@ -2067,17 +2272,37 @@
searchRange: true,
addDisplay: false, // 鏂板鏃朵笉鏄剧ず
editDisplay: false, // 淇敼鏃朵笉鏄剧ず
+ viewDisplay: false,
type: 'daterange',
startPlaceholder: '寮�濮嬫棩鏈�',
endPlaceholder: '缁撴潫鏃ユ湡',
valueFormat: 'YYYY-MM-DD',
hide: true
},
- orderTimeRange: {
- label: '涓嬪崟鏃堕棿', display: false, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
- valueFormat: 'YYYY-MM-DD',
+ orderTime: {
+ label: '涓嬪崟鏃堕棿', minWidth: 180,
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: true,
+ hide: true,
+ search: false,
+ searchSpan: 6,
},
+ loadingDate: {
+ bind: 'orderTime',
+ label: '瑁呰揣鏃ユ湡', minWidth: 180,
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: true,
+ hide: true,
+ search: false,
+ searchSpan: 6,
+ },
+ // orderTimeRange: {
+ // label: '涓嬪崟鏃堕棿', display: false, searchRange: true, type: 'date',
+ // format: 'YYYY-MM-DD', hide: true, searchSpan: 6,
+ // valueFormat: 'YYYY-MM-DD',
+ // },
orderTimeRangeArray: {
label: '涓嬪崟鏃堕棿',
minWidth: 150,
@@ -2085,6 +2310,7 @@
searchRange: true,
addDisplay: false, // 鏂板鏃朵笉鏄剧ず
editDisplay: false, // 淇敼鏃朵笉鏄剧ず
+ viewDisplay: false,
type: 'daterange',
startPlaceholder: '寮�濮嬫棩鏈�',
endPlaceholder: '缁撴潫鏃ユ湡',
@@ -2182,7 +2408,7 @@
},
}
})
-
+const urlApi = ref(import.meta.env.VITE_APP_BASE_API)
const itineraryTableOption = ref({
menu: false,
addBtn: false,
@@ -2261,19 +2487,19 @@
],
},
currency: {
- label: '甯佺',
+ label: '甯佸埗',
display: true,
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
rules: [
{
required: true,
- message: "甯佺涓嶈兘涓虹┖", trigger: "change"
+ message: "甯佸埗涓嶈兘涓虹┖", trigger: "change"
}
],
},
voucherUrl: {
- label: '璐圭敤鍑瘉',
+ label: '璐圭敤鍑瘉1',
display: true,
accept: 'string', dataType: 'string',
type: 'upload',
@@ -2295,7 +2521,8 @@
const financeTableOption = ref({
menu: false,
addBtn: false,
- header: false, selection: false,
+ selection: true,
+ header: true,
title: '鍘嗗彶鍨粯璐圭敤',
column: {
dataSource: {
@@ -2324,7 +2551,7 @@
display: true,
},
currency: {
- label: '甯佺',
+ label: '甯佸埗',
display: true,
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
},
@@ -2339,7 +2566,11 @@
remark: {
label: '澶囨敞',
},
-
+ status: {
+ label: '鐘舵��',
+ display: true,
+ type: 'select', dicUrl: '/system/dict/data/type/sys_cancel_word', dataType: 'string',
+ },
}
})
@@ -2456,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,
@@ -3055,9 +3290,9 @@
}
});
const zzItemsTableData = ref();
-
-
-
+/* 鎶ュ叧鍒楄〃 */
+const clearanceList = ref([]);
+const optionNum = ref(''); // 鐢ㄤ簬鍖哄垎鏄姤鍏宠繕鏄鍗�
const {
tableData,
@@ -3093,6 +3328,7 @@
},
handleSelectionChangeFunc: (selection: any) => {
selectionList.value = selection;
+ clearanceList.value = selection;
if (selection.length > 0) {
isCustoms.value = selection[0].isCustoms;
isLoad.value = selection[0].isLoad;
@@ -3112,75 +3348,54 @@
},
getBeginListFunc: (params = {}) => {
- // 1. 鏃ユ湡杞崲
- let newParams = <any>{ ...params };
- console.log(newParams, '2');
- if (newParams) {
- // 1. 瀹氫箟鏃ユ湡瀛楁鏄犲皠 (鏁扮粍鍚� : 鎺ュ彛闇�瑕佺殑鍓嶇紑)
- // 杩欐牱鍐欑殑濂藉鏄細濡傛灉浣犳湁澶氫釜鏃ユ湡锛岀洿鎺ュ湪杩欓噷娣诲姞涓�琛屽嵆鍙�
- const dateMap = {
- confirmTimeRangeArray: 'confirmTimeRange',
- createTimeRangeArray: 'createTime',
- updateTimeRangeArray: 'updateTimeRange',
- okTimeRangeArray: 'okTime',
- orderTimeRangeArray: 'orderTime'
- };
+ // 1. 浣跨敤娴呮嫹璐濓紝涓嶅奖鍝嶅師濮嬫煡璇㈠璞�
+ // 鍏抽敭鐐癸細浠庡師濮� queryParams.value 鍙栧�硷紝纭繚鍒嗛〉鏃朵緷鐒惰兘鎷垮埌鏁扮粍
+ let newParams = { ...queryParams.value, ...params };
- // 2. 閬嶅巻澶勭悊鏃ユ湡
- Object.keys(dateMap).forEach(arrayKey => {
- const prefix = dateMap[arrayKey];
- const range = newParams[arrayKey];
+ // 2. 瀹氫箟鏃ユ湡瀛楁鏄犲皠 (鏁扮粍鍚� : 鎺ュ彛闇�瑕佺殑鍓嶇紑)
+ const dateMap = {
+ confirmTimeRangeArray: 'confirmTimeRange',
+ createTimeRangeArray: 'createTime',
+ updateTimeRangeArray: 'updateTimeRange',
+ okTimeRangeArray: 'okTime',
+ orderTimeRangeArray: 'orderTime'
+ };
- if (Array.isArray(range) && range.length > 0) {
- // 璧嬪�� Begin 鍜� End
- newParams[`${prefix}Begin`] = range[0];
- newParams[`${prefix}End`] = range[1];
- }
-
- // 銆愭牳蹇冩敼鍔ㄣ�戯細鏃犺鏄惁鏈夊�硷紝澶勭悊瀹屽悗閮芥妸鍘熷鐨� Array 瀛楁鍒犳帀
- // 杩欐牱璇锋眰閲屽氨涓嶄細鍑虹幇 confirmTimeRangeArray: [...]
- delete newParams[arrayKey];
- });
+ // 3. 閬嶅巻澶勭悊鏃ユ湡
+ Object.keys(dateMap).forEach(arrayKey => {
+ const prefix = dateMap[arrayKey];
+ const range = newParams[arrayKey];
- // 3. 閫氱敤娓呮礂锛氬垹闄ゆ墍鏈夌┖瀛楃涓层�乶ull 鎴� undefined 鐨勫叾浠栧瓧娈�
- Object.keys(newParams).forEach(key => {
- const val = newParams[key];
- if (val === '' || val === null || val === undefined) {
- delete newParams[key];
- }
- });
+ if (Array.isArray(range) && range.length === 2) {
+ // 璧嬪�兼帴鍙i渶瑕佺殑 Begin 鍜� End
+ newParams[`${prefix}Begin`] = range[0];
+ newParams[`${prefix}End`] = range[1];
+ }
-} else {
- newParams = {};
-}
+ // 鍙湪缁欐帴鍙g殑鍙傛暟涓垹闄ゆ暟缁勶紝涓嶅奖鍝嶉〉闈㈡樉绀虹殑 queryParams
+ delete newParams[arrayKey];
+ });
-console.log('鏈�缁堝彂閫佺粰鎺ュ彛鐨勫弬鏁帮細', newParams);
-return newParams;
- // newParams = proxy.addDateRangeNew(queryParams.value, queryParams.value?.createTimeRangeArray, 'createTime');
- // newParams = proxy.addDateRangeNew(queryParams.value, queryParams.value?.updateTimeRangeArray, 'updateTime');
- // newParams = proxy.addDateRangeNew(queryParams.value, queryParams.value?.confirmTimeRangeArray, 'confirmTime');
- // newParams = proxy.addDateRangeNew(queryParams.value, queryParams.value?.okTimeRangeArray, 'okTime');
- // newParams = proxy.addDateRangeNew(queryParams.value, queryParams.value?.orderTimeRangeArray, 'orderTime');
-
- // delete newParams.createTimeRangeArray;
- // delete newParams.updateTimeRangeArray;
- // delete newParams.confirmTimeRangeArray;
- // delete newParams.okTimeRangeArray;
- // delete newParams.orderTimeRangeArray;
+ // 4. 娓呮礂鍙傛暟锛氳繃婊ょ┖鍊�
+ const finalParams = {};
+ Object.keys(newParams).forEach(key => {
+ const val = newParams[key];
+ if (val !== '' && val !== null && val !== undefined) {
+ finalParams[key] = val;
+ }
+ });
-
-
- // delete newParams.updateTimeArray;
- // delete newParams.businessTimeArray;
- // delete newParams.payableConfirmTimeArray;
-
- queryParams.value = newParams;
- return newParams;
+ // 銆愭牳蹇冧慨鏀广�戯細鐩存帴杩斿洖锛屼笉瑕佽祴鍊肩粰 queryParams.value
+ return finalParams;
},
handleBeforeOpenFunc: (type: string) => {
+
if (type == 'add') {
form.value = {};
+ } else if (type == 'edit') {
+ // form.value = row;
+
}
}
@@ -3240,7 +3455,6 @@
const handleUploadItinerary = (row: any) => {
optionType.value = 'addItinerary';
boxFormOption.value = itineraryOption.value;
- console.log(itineraryOption.value);
boxTableOption.value = itineraryTableOption.value;
listTmsTrip({ dispatchOrderId: row.id, pageNum: 1, pageSize: 999 }).then(res => {
@@ -3256,7 +3470,6 @@
vehicleNumber: row.licensePlate,
vehicleId: row.vehicleId,
}
- console.log(boxForm.value);
})
}
@@ -3417,11 +3630,24 @@
pageF.isUploading = false;
})
} else if (optionType.value === 'customs') {
- customsOrder({
- id: form.value.id,
- customsServiceProviderId: form.value.customsServiceProviderId,
- customsServiceProviderName: form.value.customsServiceProviderName,
- }).then(res => {
+ let result = <any>[];
+ if (optionNum.value == 'checkbox') {
+ result = clearanceList.value.map(item => {
+ return {
+ id: item.id,
+ customsServiceProviderId: form.value.customsServiceProviderId,
+ customsServiceProviderName: form.value.customsServiceProviderName
+ };
+ });
+ } else if (optionNum.value == 'radio') {
+ result = [{
+ id: form.value.id,
+ customsServiceProviderId: form.value.customsServiceProviderId,
+ customsServiceProviderName: form.value.customsServiceProviderName
+ }]
+ }
+
+ customsOrder(result).then(res => {
ElMessage({
message: "鎻愪氦鎴愬姛锛�",
type: 'success'
@@ -3432,11 +3658,25 @@
pageF.isUploading = false;
})
} else if (optionType.value === 'loading') {
- loadingOrder({
- id: form.value.id,
- loadingServiceProviderId: form.value.loadingServiceProviderId,
- loadingServiceProviderName: form.value.loadingServiceProviderName,
- }).then(res => {
+
+ let result = <any>[];
+ if (optionNum.value == 'checkbox') {
+ result = clearanceList.value.map(item => {
+ return {
+ id: item.id,
+ loadingServiceProviderId: form.value.loadingServiceProviderId,
+ loadingServiceProviderName: form.value.loadingServiceProviderName
+ };
+ });
+ } else if (optionNum.value == 'radio') {
+ result = [{
+ id: form.value.id,
+ loadingServiceProviderId: form.value.loadingServiceProviderId,
+ loadingServiceProviderName: form.value.loadingServiceProviderName
+ }]
+ }
+
+ loadingOrder(result).then(res => {
ElMessage({
message: "鎻愪氦鎴愬姛锛�",
type: 'success'
@@ -3900,7 +4140,6 @@
form2.value.districtId = districtCode;
form2.value.streetId = townshipCode;
form2.value.dispatchTransportArea = params.regeocode.formatted_address || params.regeocode.formattedAddress;
- console.log(form2.value, "form2")
}
});
}
@@ -4074,17 +4313,32 @@
const handleCustoms = () => {
title.value = '琛ュ厖濮旀墭鎶ュ叧淇℃伅';
open.value = true;
- form.value = selectionList.value[0];
+ form.value = clearanceList.value[0];
optionType.value = 'customs';
+ optionNum.value = 'checkbox'
boxFormOption.value = customsOption.value;
}
-const handleCustomsAdd = (selectionList) => {
+const handleCustomsAdd = (row) => {
title.value = '琛ュ厖濮旀墭瑁呭嵏淇℃伅';
+
+ clearanceList.value = [];
+ // 2. 娓呴櫎琛ㄦ牸瑙嗚涓婄殑閫変腑鐘舵��
+ if (crudRef.value) {
+ crudRef.value.clearSelection();
+ }
+
+ // 3. 閲嶇疆琛ㄥ崟
+ form.value = {};
+
+ // 4. 灏嗗綋鍓嶇偣鍑荤殑琛屾暟鎹祴鍊肩粰 form锛岀敤浜庡脊绐楃紪杈�
+ Object.assign(form.value, row);
+
open.value = true;
- form.value = selectionList;
optionType.value = 'loading';
+ optionNum.value = 'radio';
+
boxFormOption.value = loadingOption.value;
}
const handleLoading = () => {
@@ -4092,14 +4346,33 @@
open.value = true;
form.value = selectionList.value[0];
optionType.value = 'loading';
+ optionNum.value = 'checkbox'
boxFormOption.value = loadingOption.value;
}
-const handleLoadingAdd = (selectionList) => {
- title.value = '琛ュ厖濮旀墭瑁呭嵏淇℃伅';
+const handleLoadingAdd = (row: any) => {
+ // 1. 娓呯┖鎵归噺閫変腑鐨勬暟鎹垪琛紝瀵艰嚧椤堕儴鎸夐挳 disabled (length === 0)
+ clearanceList.value = [];
+ // 2. 娓呴櫎琛ㄦ牸瑙嗚涓婄殑閫変腑鐘舵��
+ if (crudRef.value) {
+ crudRef.value.clearSelection();
+ }
+
+ // 3. 閲嶇疆琛ㄥ崟
+ form.value = {};
+
+ // 4. 灏嗗綋鍓嶇偣鍑荤殑琛屾暟鎹祴鍊肩粰 form锛岀敤浜庡脊绐楃紪杈�
+ Object.assign(form.value, row);
+
+ // 5. 璁剧疆寮圭獥閰嶇疆
+ title.value = '琛ュ厖濮旀墭鎶ュ叧淇℃伅';
+ optionType.value = 'customs';
+ optionNum.value = 'radio';
+ boxFormOption.value = customsOption.value;
+
+ // 6. 鎵撳紑寮圭獥
open.value = true;
- form.value = selectionList;
- optionType.value = 'loading';
- boxFormOption.value = loadingOption.value;
+
+ // 銆愯皟璇曘�戞鏃舵墦鍗帮紝闀垮害搴斾负 0
}
const quotationItems = ref();
const getQuotationItems = async () => {
@@ -4109,7 +4382,6 @@
getQuotationItems();
const getTabData = (val: string) => {
- console.log(val)
let filter = quotationItems.value.filter((item: any) => {
return item.remark == val;
});
@@ -4127,9 +4399,7 @@
dispatchOrderId: form.value.id, financeType: 2,
pageNum: 1, pageSize: 999
}).then(async res => {
-
boxTableData.value = res.rows || [];
-
boxForm.value = {
dispatchOrderId: form.value.id,
dataSource: 0,
@@ -4173,8 +4443,12 @@
// 3. 澶勭悊鍑瘉 URL (濡傛灉鏈夊崟寮犳垨澶氬紶涓婁紶鐨勯�昏緫)
// 鍋囪鍚庣闇�瑕佺殑鏄�楀彿鍒嗛殧鐨勫瓧绗︿覆
- const submitData = validDetails.map(item => {
+ const submitData = validDetails.map((item: any) => {
let url = item.voucherUrl;
+ item.dispatchOrderId = form.value.id;
+ item.financeType = 2;
+ item.status = 0;
+ item.dataSource = 1;
if (Array.isArray(url)) {
url = url.join(',');
}
@@ -4187,8 +4461,9 @@
message: "鎿嶄綔鎴愬姛锛�",
type: 'success'
})
- open4.value = false;
+ // open4.value = false;
onLoad(page.value)
+ initExpenditureData();
boxFormRef.value?.resetFields();
getTab4Data();
})
@@ -4244,7 +4519,6 @@
}
const submitForm5 = () => {
boxFormRef.value.validate((valid: boolean, done: any) => {
- console.log(valid)
if (valid) {
boxForm.value.id = form.value.id;
closeOrder(boxForm.value).then(res => {
@@ -4741,7 +5015,6 @@
accept: 'string', dataType: 'object',
type: 'upload',
// action: '/common/upload2',
-
prop: 'voucherUrl', // 杩欓噷鏀规垚 prop 灞炴��
slot: true, // 寮�鍚彃妲�
width: 200
@@ -4755,6 +5028,7 @@
});
// 3. 鍥炴樉鍒濆鍖�
const initExpenditureData = () => {
+ tmsFinanceDetails.value = []
if (fee_type.value && fee_type.value.length > 0 && tmsFinanceDetails.value.length === 0) {
tmsFinanceDetails.value = fee_type.value.map(item => ({
feeType: item.value,
@@ -4772,19 +5046,25 @@
initExpenditureData();
}
});
-const handleUploadAfter = (res, done, loading, column, row) => {
+const handleUploadAfter = (res: any, row: any) => {
// res 鏄帴鍙h繑鍥炵殑瀹屾暣鏁版嵁
- if (res && res.url) {
+ if (res.code === 200) {
// 鎵嬪姩缁欒繖涓�琛岀殑鏁版嵁璧嬪��
- row.voucherUrl = res.url;
- console.log('涓婁紶鎴愬姛锛屽綋鍓嶈鏁版嵁锛�', row);
+ row.voucherUrl = res.data.url;
} else if (res.data && res.data.url) {
// 濡傛灉杩斿洖鐨勬暟鎹寘瑁瑰湪 data 閲�
row.voucherUrl = res.data.url;
}
- done(); // 蹇呴』璋冪敤 done 缁撴潫涓婁紶鐘舵��
};
-
+/** 褰撴枃浠惰秴鍑洪檺鍒舵椂锛堝疄鐜拌嚜鍔ㄦ浛鎹㈤�昏緫锛� */
+const handleExceed = (files: any, row: any) => {
+ // 1. 娓呴櫎褰撳墠鏄剧ず鐨勬枃浠跺垪琛�
+ uploadRef.value.clearFiles();
+ // 2. 鎵嬪姩鎶婃柊閫夋嫨鐨勬枃浠舵坊鍔犺繘鍘婚噸鏂颁笂浼�
+ const file = files[0];
+ uploadRef.value.handleStart(file);
+ uploadRef.value.submit();
+};
const flowLogIshow = ref()
const flowParams = ref([])
@@ -4799,6 +5079,203 @@
})
}
+
+const boxSelectionChange = (selection: any[]) => {
+ boxSelectionList.value = selection;
+}
+const handleBatchBoxDel = () => {
+ if (boxSelectionList.value.length === 0) {
+ ElMessage.warning('璇烽�夋嫨瑕佷綔搴熺殑璐圭敤鏄庣粏');
+ return;
+ }
+
+ ElMessageBox.confirm(`纭瑕佷綔搴熼�変腑鐨� ${boxSelectionList.value.length} 鏉¤垂鐢ㄦ槑缁嗗悧锛焋, '璀﹀憡', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ let data = {
+ id: boxSelectionList.value[0].id,
+ status: 1
+ }
+ tmsFinanceDetail(data).then(res => {
+ ElMessage.success('浣滃簾鎴愬姛');
+ getTab4Data(); // 鍒锋柊鏁版嵁
+ }).catch(err => {
+ ElMessage.error('浣滃簾澶辫触');
+ });
+ }).catch(() => {
+ // 鍙栨秷鎿嶄綔
+ });
+}
+
+const handleOrderTypeChange = (value: any) => {
+ // 闃叉 value 涓� null 鎴� undefined 鏃跺嚭閿� (褰撴竻绌洪�夋嫨鏃�)
+ if (value === null || value === undefined) {
+ return;
+ }
+
+ option.value.group.forEach((item: any) => {
+ if (item.prop == 'pcxx') {
+ // 澶勭悊瑁呰揣鐐瑰繀濉鍒�
+ if (item.column.shipperId && item.column.shipperId.rules) {
+ item.column.shipperId.rules.forEach((cItem: any) => {
+ cItem.required = !(value == 1);
+ });
+ }
+
+ // 澶勭悊鍗歌揣鐐瑰繀濉鍒�
+ if (item.column.receiverId && item.column.receiverId.rules) {
+ item.column.receiverId.rules.forEach((cItem: any) => {
+ cItem.required = !(value == 1);
+ });
+ }
+ }
+ });
+
+ // 銆愭柊澧為�昏緫銆戝鏋滃垏鎹㈠埌浜嗛潪蹇呭~鐘舵�� (value == 1)锛屽垯娓呴櫎杩欎袱涓瓧娈电殑鏍¢獙鎻愮ず
+ if (value == 1) {
+ // 纭繚 crudRef 瀛樺湪涓旀毚闇蹭簡 clearValidate 鏂规硶
+ if (crudRef.value && typeof crudRef.value.clearValidate === 'function') {
+ // 娓呴櫎鎸囧畾瀛楁鐨勬牎楠岀姸鎬�
+ crudRef.value.clearValidate(['shipperId', 'receiverId']);
+ }
+ }
+};
+/* 杞︾墝鍙� */
+// --- 鐘舵�佺鐞� ---
+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>
::v-deep .cydprint .el-dialog__body {
@@ -4874,4 +5351,74 @@
.link-btn {
font-size: 18px;
}
+
+/* */
+/* 鐜版湁鐨勬牱寮忎繚鎸佷笉鍙�... */
+.specific-drag-area {
+ width: 100%;
+
+ :deep(.full-width-drag) {
+
+ // 1. 鏍稿績锛氶殣钘� Avue 榛樿鍦� dragger 涓嬫柟鐢熸垚鐨勯偅涓�滅偣鍑讳笂浼犫�濇寜閽�
+ // 鍦� 3.x 鐗堟湰涓紝瀹冩槸 el-upload 鍚庣殑涓�涓厔寮熻妭鐐规垨鑰呮槸鍐呴儴鑺傜偣
+ .el-button--primary {
+ display: none !important;
+ }
+
+ .el-upload {
+ width: 100%;
+ display: block; // 纭繚鍧楃骇鏄剧ず
+
+ .el-upload-dragger {
+ width: 100%;
+ height: 120px;
+ background-color: #fcfdfe;
+ border: 2px dashed #dcdfe6;
+ border-radius: 8px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 0 !important;
+
+ // 瑕嗙洊 Element Plus 榛樿鐨勫唴閮ㄦ枃瀛楁帓鐗堬紝闃叉鍐茬獊
+ .el-upload__text {
+ display: none !important;
+ }
+
+ &:hover {
+ border-color: #409eff;
+ background-color: #f5f7fa;
+ }
+ }
+ }
+ }
+
+ // 3. 鑷畾涔夊唴瀹圭殑鏍峰紡锛堢‘淇濆畠涓嶈 display:none 褰卞搷锛�
+ .drag-zone-inner {
+ pointer-events: none;
+ text-align: center;
+
+ .upload-icon {
+ font-size: 32px !important;
+ color: #909399;
+ margin-bottom: 8px;
+ }
+
+ .drag-text {
+ .main-title {
+ font-size: 14px;
+ color: #606266;
+ font-weight: bold;
+ line-height: 1.5;
+ }
+
+ .sub-title {
+ font-size: 12px;
+ color: #a8abb2;
+ margin-top: 4px;
+ }
+ }
+ }
+}
</style>
--
Gitblit v1.8.0