From fa5e8e2df6c3208a3b90549b88037f5ad14bbb0b Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期二, 23 十二月 2025 15:30:23 +0800
Subject: [PATCH] 新增日志
---
ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue | 428 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 315 insertions(+), 113 deletions(-)
diff --git a/ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue b/ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue
index a39b9bc..2cc278c 100644
--- a/ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue
+++ b/ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue
@@ -1,51 +1,51 @@
<template>
<basicContainer>
- <avue-crud
- :option="option"
- :table-loading="pageF.loading"
- :data="tableData"
- :page="page"
- :permission="permissionList"
- :before-open="beforeOpen"
- v-model="form"
- ref="crudRef"
- @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"
- >
+ <avue-crud :option="option" :table-loading="pageF.loading" :data="tableData" :page="page"
+ :permission="permissionList" :before-open="beforeOpen" v-model="form" ref="crudRef" @row-update="rowUpdate"
+ @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel" @search-change="searchChange"
+ @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange" v-model:search="queryParams"
+ @size-change="sizeChange" @on-load="onLoad">
<template #menu-left>
- <el-button
- type="success"
- icon="Edit"
- :disabled="pageF.single"
- v-hasPermi="['cwgl:dispatchOrder:edit']"
- @click="handleUpdate">淇敼
+
+ <el-button type="warning" plain icon="Download" @click="handleExport"
+ v-hasPermi="['cwgl:dispatchOrder:export']">瀵煎嚭
</el-button>
- <el-button
- type="danger"
- icon="Delete"
- :disabled="pageF.multiple"
- @click="handleDelete"
- v-hasPermi="['cwgl:dispatchOrder:remove']"
- >鍒犻櫎
- </el-button>
- <el-button
- type="warning"
- plain
- icon="Download"
- @click="handleExport"
- v-hasPermi="['cwgl:dispatchOrder:export']"
- >瀵煎嚭
+ <el-button type="success" plain icon="Download" @click="handleExport2"
+ v-hasPermi="['cwgl:dispatchOrder:export']">鐢熸垚鍙拌处鎶ヨ〃
</el-button>
</template>
+ <template #menu="{ size, row, index }">
+ <el-link class="link-btn" type="primary" :underline="false" plain :size="size" icon="View"
+ @click="handleFy(row)" v-hasPermi="['cwgl:dispatchOrder:query']"> 鏌ョ湅璐圭敤
+ </el-link>
+ <el-link class="link-btn" type="primary" :underline="false" plain icon="View" @click="handleFj(row)"
+ v-hasPermi="['cwgl:dispatchOrder:query']"> 鏌ョ湅闄勪欢
+ </el-link>
+ </template>
</avue-crud>
+ <el-dialog title="鏌ョ湅璐圭敤" v-model="open1" class="avue-dialog avue-dialog--top" width="60%">
+ <avue-crud :option="itemTableOption1" :data="itemTableData1" :table-loading="itemTableLoading1">
+
+ </avue-crud>
+ </el-dialog>
+ <el-dialog title="鏌ョ湅闄勪欢" v-model="open2" class="avue-dialog avue-dialog--top" width="60%">
+
+ <avue-crud :option="itemTableOption2" :data="itemTableData2" :page="pageAttachment"
+ :table-loading="itemTableLoading2" @current-change="handleAttachmentCurrentChange"
+ @size-change="handleAttachmentSizeChange">
+ <template #imageUrl="{ row }">
+ <el-image :src="row.imageUrl" style="width: 100px; height: 100px" fit="cover"
+ :preview-src-list="[row.imageUrl]" :preview-teleported="true" hide-on-click-modal
+ class="attachment-image" />
+ </template>
+ </avue-crud>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button type="primary" v-if="itemTableData2.length>0" @click="downPZ">涓嬭浇闄勪欢</el-button>
+ </div>
+ </template>
+
+ </el-dialog>
</basicContainer>
</template>
@@ -57,16 +57,17 @@
exportDispatchOrder,
getDispatchOrder,
listDispatchOrder,
- updateDispatchOrder
+ updateDispatchOrder, cwglDispatchOrderItem, cwglDispatchOrderattAchment, exportDispatchOrder2, downloadFJ
} from "@/api/cwgl/dispatchOrder";
import useCurrentInstance from "@/utils/useCurrentInstance";
-import {computed, reactive, ref, toRefs} from "vue";
-import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
-import {usePagePlus} from "@/hooks/usePagePlus";
-import {hasPermission} from "@/utils/permissionUtils";
-import {useTableColumnWidth} from "@/hooks/useAvueTableWidths";
+import { computed, reactive, ref, toRefs } from "vue";
+import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { hasPermission } from "@/utils/permissionUtils";
+import {blobValidate} from "@/utils/ruoyi";
+import {saveAs} from "file-saver";
-const {proxy} = useCurrentInstance();
+const { proxy } = useCurrentInstance();
const crudRef = ref();
const permissionList = computed(() => {
@@ -86,15 +87,36 @@
total: 0,
currentPage: 1,
},
+ pageAttachment: <PagesInterface>{
+ pageSize: 10,
+ total: 0,
+ currentPage: 1,
+ },
selectionList: [],
+ itemTableData1: [],
+ itemTableData2: [],
+ open1: false,
+ open2: false,
+ itemTableLoading1: false,
+ itemTableLoading2: false,
})
-const {queryParams, form, page, selectionList} = toRefs(data);
+const { queryParams, form, page, selectionList, itemTableData1, itemTableData2, open1, open2, itemTableLoading1, itemTableLoading2,
+ pageAttachment
+} = toRefs(data);
const option = ref({
pageKey: 'DispatchOrder',
rowKey: 'id',
+ addBtn: false,
+ editBtn: false,
+ delBtn: false,
+ viewBtn: false,
+ selection: false,
+ searchSpan: 5,
+ searchLabelWidth: 100,
column: {
dispatchNo: {
- label: '璋冨害鍗曞彿',search:true,
+ fixed: 'left',
+ label: '璋冨害鍗曞彿', search: true, minWidth: 180,
rules: [
{
required: true,
@@ -103,81 +125,101 @@
],
},
transportMode: {
- label: '杩愯緭鏂瑰紡',
+ label: '杩愯緭鏂瑰紡', width: 120,
},
productName: {
- label: '鏈嶅姟浜у搧鍚嶇О',
+ label: '鏈嶅姟浜у搧鍚嶇О', width: 120, showOverflowTooltip: true
+ },
+ customerName: {
+ label: '瀹㈡埛鍚嶇О', search: true, minWidth: 220, showOverflowTooltip: true
},
carrierName: {
- label: '鎵胯繍鍟�',search:true,
+ label: '鎵胯繍鍟�', search: true, minWidth: 220, showOverflowTooltip: true
},
departureLocationName: {
- label: '鍑哄彂鍦板悕绉�',
+ label: '鍑哄彂鍦板悕绉�', minWidth: 220, showOverflowTooltip: true
},
arrivalLocationName: {
- label: '鐩殑鍦板悕绉�',
+ label: '鐩殑鍦板悕绉�', minWidth: 220, showOverflowTooltip: true
},
licensePlateNumber: {
- label: '杞︾墝',search:true,
+ label: '杞︾墝', search: true, width: 120,
},
vehiclePlateId: {
- label: '杞︽澘鍙�',
+ label: '杞︽澘鍙�', width: 120,
},
- mainDriverName: {
- label: '涓婚┚椹跺憳',
- },
- assistantDriverName: {
- label: '鍓┚椹跺憳',
- },
- pointNum: {
- label: '鎻愰�佽揣鐐规暟',
- },
- quantity: {
- label: '浠舵暟',
- },
- actualDepartureTime: {
- label: '瀹為檯鍑哄彂鏃堕棿',
- },
- requiredArrivalTime: {
- label: '瑕佹眰鍒拌揪鏃堕棿',
- },
- actualArrivalTime: {
- label: '瀹為檯鍒拌揪鏃堕棿',
- },
- beReturn: {
- label: '鏄惁鍥炵▼(N,Y)',
- },
- dispatchQuantity: {
- label: '瀹炲彂浠舵暟',
- },
- dispatchWeight: {
- label: '瀹炲彂閲嶉噺',
- },
- dispatchVolume: {
- label: '瀹炲彂浣撶Н(绔嬫柟锛�',
- },
- status: {
- label: '鐘舵��',
- },
- remark: {
- label: '澶囨敞',
- type: 'textarea', minRows: 3, maxRows: 5,
- },
- createBy: {
- label: '鍒涘缓浜�',
- },
- createTime: {
- label: '鍒涘缓鏃堕棿',
- },
- updateBy: {
- label: '淇敼浜�',
- },
- updateTime: {
- label: '淇敼鏃堕棿',
- },
- isDeleted: {
- label: '鏄惁鍒犻櫎(0-鍚�,1-鏄�)',
- },
+ // mainDriverName: {
+ // label: '涓婚┚椹跺憳', width: 120,
+ // },
+ // assistantDriverName: {
+ // label: '鍓┚椹跺憳', width: 120,
+ // },
+ // pointNum: {
+ // label: '鎻愰�佽揣鐐规暟', width: 120,
+ // },
+ // quantity: {
+ // label: '浠舵暟', width: 120,
+ // },
+ // actualDepartureTime: {
+ // label: '瀹為檯鍑哄彂鏃堕棿', width: 180,
+ // },
+ // actualDepartureTimeRange: {
+ // label: '瀹為檯鍑哄彂鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
+ // format: 'YYYY-MM-DD', hide: true, searchSpan: 5, searchLabelWidth: 120,
+ // valueFormat: 'YYYY-MM-DD',
+ // },
+ // requiredArrivalTime: {
+ // label: '瑕佹眰鍒拌揪鏃堕棿', width: 180,
+ // },
+ // requiredArrivalTimeRange: {
+ // label: '瑕佹眰鍒拌揪鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
+ // format: 'YYYY-MM-DD', hide: true, searchSpan: 5, searchLabelWidth: 120,
+ // valueFormat: 'YYYY-MM-DD',
+ // },
+ // actualArrivalTime: {
+ // label: '瀹為檯鍒拌揪鏃堕棿', width: 180,
+ // },
+ // actualArrivalTimeRange: {
+ // label: '瑕佹眰鍒拌揪鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
+ // format: 'YYYY-MM-DD', hide: true, searchSpan: 5, searchLabelWidth: 120,
+ // valueFormat: 'YYYY-MM-DD',
+ // },
+ // beReturn: {
+ // label: '鏄惁鍥炵▼', dataType: 'string', width: 100,
+ // type: 'select', dicUrl: '/system/dict/data/type/dispatch_order_status',
+ // },
+ // dispatchQuantity: {
+ // label: '瀹炲彂浠舵暟', width: 100,
+ // },
+ // dispatchWeight: {
+ // label: '瀹炲彂閲嶉噺', width: 100,
+ // },
+ // dispatchVolume: {
+ // label: '瀹炲彂浣撶Н(绔嬫柟锛�', width: 160,
+ // },
+ // status: {
+ // label: '鐘舵��', search: true, dataType: 'string', width: 100,
+ // type: 'select', dicUrl: '/system/dict/data/type/dispatch_order_status',
+ // },
+ // remark: {
+ // label: '澶囨敞', width: 120,
+ // type: 'textarea', minRows: 3, maxRows: 5,
+ // },
+ // createBy: {
+ // label: '鍒涘缓浜�',
+ // },
+ // createTime: {
+ // label: '鍒涘缓鏃堕棿',
+ // },
+ // updateBy: {
+ // label: '淇敼浜�',
+ // },
+ // updateTime: {
+ // label: '淇敼鏃堕棿',
+ // },
+ // isDeleted: {
+ // label: '鏄惁鍒犻櫎(0-鍚�,1-鏄�)',
+ // },
}
})
@@ -213,11 +255,171 @@
handleUpdateFunc: () => {
crudRef.value.rowEdit(selectionList.value[0]);
},
+ getBeginListFunc() {
+ queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.actualDepartureTimeRange, 'actualDepartureTime') || {};
+ queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.requiredArrivalTimeRange, 'requiredArrivalTime') || {};
+ queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.actualArrivalTimeRange, 'actualArrivalTime') || {};
+ },
handleSelectionChangeFunc: (selection: any) => {
selectionList.value = selection;
}
})
-useTableColumnWidth(option.value, crudRef); // 浣跨敤 Hook 绠$悊鍒楀
+const itemTableOption1 = ref({
+ addBtn: false,
+ selection: false,
+ menu: false,
+ header: false,
+ column: {
+ feeItem: {
+ label: '璐圭敤绫诲瀷', minWidth: 180, fixed: 'left'
+ },
+ receivableFee: {
+ label: '搴旀敹璐圭敤', minWidth: 180,
+ },
+ receivableFeeCurrency: {
+ label: '搴旀敹甯佸埗绫诲瀷', minWidth: 180,
+ },
+ actualFee: {
+ label: '搴斾粯璐圭敤', minWidth: 180,
+ },
+ actualFeeCurrency: {
+ label: '搴斾粯璐圭敤甯佸埗绫诲瀷', minWidth: 180,
+ },
+ isSettlement: {
+ label: '鏄惁鍙粯娆�', dataType: 'string', minWidth: 180,
+ type: 'select',
+ dicUrl: '/system/dict/data/type/sys_whether_type',
+ },
+
+ }
+})
+const itemTableOption2 = ref({
+ addBtn: false,
+ selection: false,
+ menu: false,
+ header: false,
+ column: {
+ feeItem: {
+ label: '璐圭敤绫诲瀷', minWidth: 180, fixed: 'left'
+ },
+ account: {
+ label: '閲戦', minWidth: 180,
+ },
+ currency: {
+ label: '甯佸��', minWidth: 180,
+ },
+ imageUrl: {
+ label: '鍥剧墖',
+ prop: 'img',
+ dataType: 'string',
+ type: 'img'
+ },
+
+ }
+})
+
+
+
+const handleFy = (row: DispatchOrderI) => {
+
+ cwglDispatchOrderItem({ no: row.dispatchNo }).then((res: any) => {
+ if (res.code == 200) {
+ itemTableData1.value = res.data || [];
+ open1.value = true;
+ }
+ })
+}
+const pangeIshow = ref(false);
+const handleFj = (row: DispatchOrderI) => {
+ pageAttachment.value ={
+ pageSize: 10,
+ pageNum: 1,
+ no:row.dispatchNo
+ }
+ pangeIshow.value = true;
+ cwglDispatchOrderattAchment(pageAttachment.value).then((res: any) => {
+ if (res.code == 200) {
+ itemTableData2.value = res.rows || [];
+ pageAttachment.value.total = res.total || 0;
+ open2.value = true;
+ }
+ })
+}
+
+// 澶勭悊闄勪欢鍒嗛〉椤电爜鍙樺寲
+const handleAttachmentCurrentChange = (currentPage: number) => {
+ pageAttachment.value.pageNum = currentPage;
+ loadAttachmentData();
+}
+
+// 澶勭悊闄勪欢鍒嗛〉澶у皬鍙樺寲
+const handleAttachmentSizeChange = (pageSize: number) => {
+ pageAttachment.value.pageSize = pageSize;
+ // pageAttachment.value.currentPage = 1; // 閲嶇疆鍒扮涓�椤�
+ loadAttachmentData();
+}
+
+// 鍔犺浇闄勪欢鏁版嵁鐨勫嚱鏁�
+const loadAttachmentData = () => {
+ itemTableLoading2.value = true;
+ cwglDispatchOrderattAchment({
+ no: pageAttachment.value.no,
+ pageNum: pageAttachment.value.pageNum,
+ pageSize: pageAttachment.value.pageSize
+ }).then((res: any) => {
+ if (res.code == 200) {
+ itemTableData2.value = res.rows || [];
+ pageAttachment.value.total = res.total || 0;
+ }
+ itemTableLoading2.value = false;
+ }).catch(() => {
+ itemTableLoading2.value = false;
+ });
+}
+
+// 闄勪欢琛ㄦ牸鍔犺浇浜嬩欢
+const attachmentChange = () => {
+ // loadAttachmentData();
+}
+const handleExport2 =()=>{
+ queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.actualDepartureTimeRange, 'actualDepartureTime') || {};
+ queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.requiredArrivalTimeRange, 'requiredArrivalTime') || {};
+ queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.actualArrivalTimeRange, 'actualArrivalTime') || {};
+ exportDispatchOrder2(queryParams.value);
+}
+
+const downPZ =()=>{
+ downloadFJ({no:pageAttachment.value.no}).then(res=>{
+ console.log(res)
+ const blob = new Blob([res])
+ console.log(blob)
+ saveAs(blob, decodeURI(pageAttachment.value.no+"闄勪欢.pdf"))
+
+ })
+
+}
</script>
+<style lang="scss" scoped>
+.avue-dialog .el-dialog__body {
+ padding: 20px 20px;
+ flex: 1;
+ overflow: scroll;
+}
+
+.attachment-image {
+ .el-image__preview {
+ z-index: 9999 !important;
+ }
+}
+
+:deep(.avue-crud__table) {
+ overflow-y: auto;
+}
+
+:deep(.el-scrollbar__bar.is-horizontal) {
+ pointer-events: auto;
+}
+
+</style>
\ No newline at end of file
--
Gitblit v1.8.0