From 2a83e96652851ca20794278b9be3607bbe4186fa Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期五, 05 十二月 2025 11:09:51 +0800
Subject: [PATCH] 提交
---
ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue | 300 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 288 insertions(+), 12 deletions(-)
diff --git a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
index 24c338f..772b189 100644
--- a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
+++ b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
@@ -69,6 +69,22 @@
>鎺ユ寕
</el-button>
+ <el-button
+ type="warning"
+ icon="Avatar"
+ :disabled="!( isCustoms == 0)"
+ @click="handleCustoms"
+ v-hasPermi="['tms:tmsDispatchOrder:customs']"
+ >濮旀墭鎶ュ叧淇℃伅
+ </el-button>
+ <el-button
+ type="primary"
+ icon="UserFilled"
+ :disabled="!( isLoad == 0)"
+ @click="handleLoading"
+ v-hasPermi="['tms:tmsDispatchOrder:loading']"
+ >濮旀墭鍗歌揣淇℃伅
+ </el-button>
</template>
<template #menu-before="{row}">
<el-link size="small" type="primary" @click="handleAddGoods(row)" class="link-btn"
@@ -201,6 +217,36 @@
</avue-form>
</div>
+
+ <div v-if="optionType == 'customs'">
+ <el-descriptions 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>
+ <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-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>
+ <avue-form v-model="form" ref="boxFormRef" :option="boxFormOption">
+
+ </avue-form>
+ </div>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="pageF.isUploading" @click="submitForm2">
@@ -261,7 +307,7 @@
getTmsDispatchOrder,
listTmsDispatchOrder,
updateTmsDispatchOrder,
- confirmOrder, copyOrder, okOrder, initGenerate, generateTmsDispatchOrder, dropHook, connectHang
+ confirmOrder, copyOrder, okOrder, initGenerate, generateTmsDispatchOrder, dropHook, connectHang,customsOrder,loadingOrder,
} from "@/api/tms/tmsDispatchOrder";
import useCurrentInstance from "@/utils/useCurrentInstance";
import {computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance} from "vue";
@@ -333,12 +379,14 @@
goodsForm: <any>{},
open3: false,
actualForm: <any>{},
+ isCustoms:<any> -1,
+ isLoad: -1,
})
const {
queryParams, form, page, selectionList, open3,
boxTableData, optionType,
boxFormOption, boxForm, boxTableOption, title, open, open2,
- goodsTableData, goodsForm, actualForm, selectionList2
+ goodsTableData, goodsForm, actualForm, selectionList2,isCustoms,isLoad
} = toRefs(data);
const option = ref({
pageKey: 'TmsDispatchOrder',
@@ -362,7 +410,7 @@
message: "璇烽�夋嫨杩愯緭璺嚎", trigger: "change"
}
],
- type: 'table', suffixIcon: 'search',
+ type: 'table', suffixIcon: 'search',dataType: 'string',
change: (val: any) => {
const table = crudRef.value?.getPropRef?.('quoteDetailId')?.$refs?.temp;
if (!table) return;
@@ -657,6 +705,17 @@
}
],
},
+ isLoad: {
+ label: '濮旀墭瑁呭嵏',
+ display: true,
+ type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
+ rules: [
+ {
+ required: true,
+ message: "濮旀墭瑁呭嵏涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ },
isUrgent: {
label: '鏄惁绱ф��',
display: true,
@@ -724,12 +783,24 @@
console.log(value)
option.value.group.forEach((item: any) => {
if (item.prop == 'pcxx') {
- item.column.vehicleProviderId.rules.forEach((cItem: any) => {
- cItem.required = value == 1;
- });
+ item.column.commissionModel.display = value != 1;
+ item.column.vehicleProviderId.display = value == 1;
+ // item.column.vehicleProviderId.rules.forEach((cItem: any) => {
+ // cItem.required = value == 1;
+ // });
}
})
},
+ },
+ commissionModel:{
+ label: '鎻愭垚妯″紡',
+ display: true, type: 'radio', dicUrl: '/system/dict/data/type/commission_model', dataType: 'string',
+ rules: [
+ {
+ required: true,
+ message: "鎻愭垚妯″紡涓嶈兘涓虹┖", trigger: "change"
+ }
+ ],
},
vehicleProviderId: {
label: '杞﹁締鏈嶅姟鍟�',
@@ -752,7 +823,7 @@
});
}
},
- type: 'table', suffixIcon: 'search',
+ type: 'table', suffixIcon: 'search',dataType: 'string',
children: {
border: true,
searchLabelWidth: 100,
@@ -1103,7 +1174,7 @@
});
}
},
- type: 'table', suffixIcon: 'search',
+ type: 'table', suffixIcon: 'search',dataType: 'string',
children: {
border: true,
searchLabelWidth: 100,
@@ -1168,7 +1239,7 @@
});
}
},
- type: 'table', suffixIcon: 'search',
+ type: 'table', suffixIcon: 'search',dataType: 'string',
children: {
border: true,
searchLabelWidth: 100,
@@ -1858,6 +1929,165 @@
}
})
+
+const customsOption = ref({
+ menuBtn: false,
+ labelWidth: 120,
+ column: {
+ customsServiceProviderId: {
+ label: '鎶ュ叧鏈嶅姟鍟�', span:24,
+ display: true,
+ rules: [
+ {
+ required: true,
+ message: "鎶ュ叧鏈嶅姟鍟嗕笉鑳戒负绌�", trigger: "change"
+ }
+ ],
+ type: 'table', suffixIcon: 'search', dataType: 'string',
+ change: (val: any) => {
+ const table = boxFormRef.value?.getPropRef?.('customsServiceProviderId')?.$refs?.temp;
+ if (!table) return;
+ let active = table.active;
+ if (Array.isArray(active)) active = active[0];
+ if (active) {
+ Object.assign(form.value, {
+ customsServiceProviderId: active.id,
+ customsServiceProviderName: active.serviceShortName,
+ });
+ }
+ },
+ children: {
+ border: true,
+ searchLabelWidth: 100,
+ searchMenuSpan: 5,
+ column:{
+ serviceCode: {
+ label: '鏈嶅姟鍟嗙紪鐮�',
+ search: true,
+ },
+ serviceShortName: {
+ label: '鏈嶅姟鍟嗙畝绉�',minWidth:150,
+ search: true,
+ },
+ serviceName: {
+ label: '鏈嶅姟鍟嗗叏绉�',search: true,
+ },
+ serviceType: {
+ label: '鏈嶅姟绫诲瀷',minWidth:150,
+ type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
+ multiple:true,
+ search: true,
+ },
+ }
+ },
+ props: {
+ label: 'serviceShortName',
+ 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]
+ }
+ getTmsCustomsServiceProvider(id).then(res => {
+ return callback(res.data || {})
+ })
+ } else {
+ listTmsCustomsServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ return callback({
+ total: res.total,
+ data: res.rows || [],
+ })
+ })
+ }
+
+ }
+ },
+ }
+})
+
+
+const loadingOption = ref({
+ menuBtn: false,
+ labelWidth: 120,
+ column: {
+ loadingServiceProviderId: {
+ label: '瑁呭嵏鏈嶅姟鍟�',span:24,
+ display: true,
+ rules: [
+ {
+ required: true,
+ message: "瑁呭嵏鏈嶅姟鍟嗕笉鑳戒负绌�", trigger: "change"
+ }
+ ],
+ type: 'table', suffixIcon: 'search', dataType: 'string',
+ change: (val: any) => {
+ const table = boxFormRef.value?.getPropRef?.('loadingServiceProviderId')?.$refs?.temp;
+ if (!table) return;
+ let active = table.active;
+ if (Array.isArray(active)) active = active[0];
+ if (active) {
+ Object.assign(form.value, {
+ loadingServiceProviderId: active.id,
+ loadingServiceProviderName: active.serviceShortName,
+ });
+ }
+ },
+ children: {
+ border: true,
+ searchLabelWidth: 100,
+ searchMenuSpan: 5,
+ column:{
+ serviceCode: {
+ label: '鏈嶅姟鍟嗙紪鐮�',
+ search: true,
+ },
+ serviceShortName: {
+ label: '鏈嶅姟鍟嗙畝绉�',minWidth:150,
+ search: true,
+ },
+ serviceName: {
+ label: '鏈嶅姟鍟嗗叏绉�',search: true,
+ },
+ serviceType: {
+ label: '鏈嶅姟绫诲瀷',minWidth:150,
+ type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
+ multiple:true,
+ search: true,
+ },
+ }
+ },
+ props: {
+ label: 'serviceShortName',
+ 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]
+ }
+ getTmsLoadingServiceProvider(id).then(res => {
+ return callback(res.data || {})
+ })
+ } else {
+ listTmsLoadingServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ return callback({
+ total: res.total,
+ data: res.rows || [],
+ })
+ })
+ }
+
+ }
+ },
+ }
+})
+
+
+
+
const goodsTableOption = ref({
pageKey: 'TmsGoodsDetail',
rowKey: 'id',
@@ -2183,13 +2413,24 @@
},
handleSelectionChangeFunc: (selection: any) => {
selectionList.value = selection;
+ if (selection.length > 0){
+ isCustoms.value = selection[0].isCustoms;
+ isLoad.value = selection[0].isLoad ;
+ }else{
+ isCustoms.value = -1;
+ isLoad.value = -1;
+ }
+ isCustoms.value = isCustoms.value == 0 && !pageF.single ? 0 : -1;
+ isLoad.value = isLoad.value == 0 && !pageF.single ? 0 : -1;
+ console.log(pageF.single)
},
getBeginListFunc: () => {
queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.createTimeRange, 'createTime') || {};
queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.updateTimeRange, 'updateTime') || {};
queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.confirmTimeRange, 'confirmTime') || {};
queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.okTimeRange, 'okTime') || {};
- }
+ },
+
})
const handleConfirm = (row: any) => {
ElMessageBox.confirm("鏄惁瀵硅皟搴﹀崟鍙�" + row.dispatchNo + "纭畾 锛�", '绯荤粺鎻愮ず', {
@@ -2415,7 +2656,29 @@
}).finally(() => {
pageF.isUploading = false;
})
- } else {
+ }else if (optionType.value === 'customs') {
+ customsOrder(form.value.id).then(res => {
+ ElMessage({
+ message: "鎻愪氦鎴愬姛锛�",
+ type: 'success'
+ })
+ cancelBox2();
+ onLoad(page.value);
+ }).finally(() => {
+ pageF.isUploading = false;
+ })
+ }else if (optionType.value === 'loading') {
+ loadingOrder(form.value.id).then(res => {
+ ElMessage({
+ message: "鎻愪氦鎴愬姛锛�",
+ type: 'success'
+ })
+ cancelBox2();
+ onLoad(page.value);
+ }).finally(() => {
+ pageF.isUploading = false;
+ })
+ }else {
connectHang({
dispatchId: form.value.id,
vehicleId: form.value.vehicleId,
@@ -3034,5 +3297,18 @@
})
}
-
+const handleCustoms = () => {
+ title.value = '琛ュ厖濮旀墭鎶ュ叧淇℃伅';
+ open.value = true;
+ form.value = selectionList.value[0];
+ optionType.value = 'customs';
+ boxFormOption.value = customsOption.value;
+}
+const handleLoading = () => {
+ title.value = '琛ュ厖濮旀墭瑁呭嵏淇℃伅';
+ open.value = true;
+ form.value = selectionList.value[0];
+ optionType.value = 'loading';
+ boxFormOption.value = loadingOption.value;
+}
</script>
\ No newline at end of file
--
Gitblit v1.8.0