浏览代码

feat: 实现下载选中条数

zhouyuhao 1 年之前
父节点
当前提交
ccaa9bfd9c

+ 1 - 1
src/utils/table.ts

@@ -53,7 +53,7 @@ export const autoWidth = (tableData: VxeGridProps, grid: VxeGridInstance) => {
   })
   columnsWidth.forEach((item) => {
     const curColumn: any = columns.find((column: any) => column.field === item.field)
-    curColumn.minWidth = item.width
+    curColumn.width = item.width
   })
   // 表格重新刷新列配置
   grid.reloadColumn(columns)

+ 23 - 0
src/views/Booking/src/components/BookingTable/src/BookingTable.vue

@@ -82,6 +82,8 @@ const getTableColumns = async () => {
   nextTick(() => {
     tableRef.value && autoWidth(bookingTable.value, tableRef.value)
     tableLoadingColumn.value = false
+    selectedNumber.value = 0
+    selectedTableData.value = []
   })
 }
 
@@ -122,6 +124,8 @@ const getTableData = async (isPageChange?: boolean) => {
       }
     })
     .finally(() => {
+      selectedNumber.value = 0
+      selectedTableData.value = []
       nextTick(() => {
         tableRef.value && autoWidth(bookingTable.value, tableRef.value)
         tableLoadingTableData.value = false
@@ -146,6 +150,8 @@ const searchTableData = (data: any) => {
       }
     })
     .finally(() => {
+      selectedNumber.value = 0
+      selectedTableData.value = []
       nextTick(() => {
         tableRef.value && autoWidth(bookingTable.value, tableRef.value)
         tableLoadingTableData.value = false
@@ -265,6 +271,11 @@ const handleDownload = () => {
 const exportLoading = ref(false)
 // 获取导出表格数据
 const getExportTableData = (status: number) => {
+  // 如果有选中表格行数据,那么只到处选中的数据
+  if (selectedNumber.value > 0) {
+    exportTable(status)
+    return
+  }
   exportLoading.value = true
   const buildColumnString = (columns: any[]): string => {
     return columns
@@ -313,8 +324,17 @@ const exportTable = (status: number) => {
       // 排除复选框列
       return column.field && index !== -1
     }
+
     exportConfig.columns = bookingTable.value.columns
   }
+  if (selectedNumber.value > 0) {
+    exportConfig.dataFilterMethod = ({ row }: any) => {
+      const index = selectedTableData.value.findIndex(
+        (item: any) => item._X_ROW_KEY === row._X_ROW_KEY
+      )
+      return index !== -1
+    }
+  }
   allTableRef.value?.exportData(exportConfig)
 }
 
@@ -368,12 +388,15 @@ const handleLinkClick = (row: any, column: any) => {
 }
 
 const selectedNumber = ref(0)
+const selectedTableData = ref([])
 // 复选框选中事件
 const handleCheckboxChange = ({ records }: any) => {
   selectedNumber.value = records.length
+  selectedTableData.value = records
 }
 const handleCheckAllChange = ({ records }: any) => {
   selectedNumber.value = records.length
+  selectedTableData.value = records
 }
 defineExpose({
   searchTableData,

+ 3 - 3
src/views/Tracking/src/components/PublicTracking/src/components/MilestonesTable.vue

@@ -68,9 +68,9 @@ watch(
     if (milestones && milestones.Milestones_column) {
       tableData.value.columns = handleColumns(milestones.Milestones_column)
       tableData.value.data = milestones.Milestones_data
-      nextTick(() => {
-        tableRef.value && autoWidth(tableData.value, tableRef.value)
-      })
+      // nextTick(() => {
+      //   tableRef.value && autoWidth(tableData.value, tableRef.value)
+      // })
     }
   },
   {

+ 3 - 4
src/views/Tracking/src/components/TrackingDetail/src/components/AttachmentView.vue

@@ -1,5 +1,4 @@
 <script setup lang="ts">
-import dayjs from 'dayjs'
 import { type VxeGridInstance, type VxeGridProps } from 'vxe-table'
 import { autoWidth } from '@/utils/table'
 import { useRowClickStyle } from '@/hooks/rowClickStyle'
@@ -59,9 +58,9 @@ watch(
         }
       ]
       tableData.value.data = attachment.document_data
-      nextTick(() => {
-        tableRef.value && autoWidth(tableData.value, tableRef.value)
-      })
+      // nextTick(() => {
+      //   tableRef.value && autoWidth(tableData.value, tableRef.value)
+      // })
     }
   },
   {

+ 3 - 3
src/views/Tracking/src/components/TrackingDetail/src/components/MilestonesTable.vue

@@ -70,9 +70,9 @@ watch(
     if (milestones && milestones.Milestones_column) {
       tableData.value.columns = handleColumns(milestones.Milestones_column)
       tableData.value.data = milestones.Milestones_data
-      nextTick(() => {
-        tableRef.value && autoWidth(tableData.value, tableRef.value)
-      })
+      // nextTick(() => {
+      //   tableRef.value && autoWidth(tableData.value, tableRef.value)
+      // })
     }
   },
   {

+ 21 - 0
src/views/Tracking/src/components/TrackingTable/src/TrackingTable.vue

@@ -87,6 +87,7 @@ const getTableColumns = async () => {
   nextTick(() => {
     tableLoadingColumn.value = false
     selectedNumber.value = 0
+    selectedTableData.value = []
   })
 }
 
@@ -129,6 +130,7 @@ const getSharedTableData = () => {
     pageInfo.value.pageSize = Number(trackingData.ps)
     assignTableData(trackingData)
     selectedNumber.value = 0
+    selectedTableData.value = []
     nextTick(() => {
       tableRef.value && autoWidth(trackingTable.value, tableRef.value)
     })
@@ -155,6 +157,7 @@ const getTableData = async (isPageChange?: boolean) => {
       tableRef.value && autoWidth(trackingTable.value, tableRef.value)
       tableLoadingTableData.value = false
       selectedNumber.value = 0
+      selectedTableData.value = []
     })
   } else {
     await $api
@@ -176,6 +179,7 @@ const getTableData = async (isPageChange?: boolean) => {
           tableLoadingTableData.value = false
         })
         selectedNumber.value = 0
+        selectedTableData.value = []
       })
   }
 }
@@ -201,6 +205,7 @@ const searchTableData = (data: any) => {
       tableRef.value && autoWidth(trackingTable.value, tableRef.value)
       tableLoadingTableData.value = false
       selectedNumber.value = 0
+      selectedTableData.value = []
     })
 }
 
@@ -320,6 +325,11 @@ const handleDownload = () => {
 const exportLoading = ref(false)
 // 获取导出表格数据
 const getExportTableData = (status: number) => {
+  // 如果有选中表格行数据,那么只到处选中的数据
+  if (selectedNumber.value > 0) {
+    exportTable(status)
+    return
+  }
   exportLoading.value = true
   const buildColumnString = (columns: any[]): string => {
     return columns
@@ -372,6 +382,14 @@ const exportTable = (status: number) => {
     }
     exportConfig.columns = trackingTable.value.columns
   }
+  if (selectedNumber.value > 0) {
+    exportConfig.dataFilterMethod = ({ row }: any) => {
+      const index = selectedTableData.value.findIndex(
+        (item: any) => item._X_ROW_KEY === row._X_ROW_KEY
+      )
+      return index !== -1
+    }
+  }
   allTableRef.value?.exportData(exportConfig)
 }
 
@@ -426,12 +444,15 @@ const handleLinkClick = (row: any, column: any) => {
 }
 
 const selectedNumber = ref(0)
+const selectedTableData = ref([])
 // 复选框选中事件
 const handleCheckboxChange = ({ records }: any) => {
   selectedNumber.value = records.length
+  selectedTableData.value = records
 }
 const handleCheckAllChange = ({ records }: any) => {
   selectedNumber.value = records.length
+  selectedTableData.value = records
 }
 
 // VGM