Sfoglia il codice sorgente

feat(crm): wire date column sort on contract manage and approval lists.

Co-authored-by: Cursor <cursoragent@cursor.com>
wuzilong 1 mese fa
parent
commit
626f91d4a8

+ 2 - 0
web-admin/src/api/crm/contract/types.ts

@@ -30,6 +30,8 @@ export interface ContractQuery {
   signDateEnd?: string
   beginTime?: string
   endTime?: string
+  sortField?: string
+  sortOrder?: 'asc' | 'desc'
   /** 列表是否附带合同产品明细(选择合同弹窗等场景) */
   includeProducts?: boolean
 }

+ 27 - 1
web-admin/src/views/crm/contract/ContractListPage.vue

@@ -605,6 +605,7 @@ import CrmColFilterHeader from '@/components/business/crm-col-filter-header/inde
 import { usePersistedListColumns } from '@/composables/usePersistedListColumns'
 import { useListTableViewportHeight } from '@/composables/useListTableViewportHeight'
 import { useServerColumnFilters } from '@/composables/useServerColumnFilters'
+import { useColumnSort } from '@/composables/useColumnSort'
 import type { DatetimeColumnFilterState } from '@/composables/useClientColumnFilters'
 import { buildStatsRowColumns } from '@/utils/list-column-stats'
 import { buildContractColumnFilterDefs } from './columnFilterDefs'
@@ -656,6 +657,29 @@ provide('crmColumnFilters', {
   defMap
 })
 
+const {
+  sortField,
+  sortOrder,
+  setSort,
+  clearSort,
+  isSortActive,
+  toQueryParams: toSortQueryParams,
+  watchVisibleColumns: watchSortVisibleColumns
+} = useColumnSort({
+  onChange: () => {
+    queryParams.value.pageNum = 1
+    getList()
+  }
+})
+
+provide('crmColumnSort', {
+  setSort,
+  clearSort,
+  isSortActive,
+  sortField,
+  sortOrder
+})
+
 function formatContractDateYmd(date: Date) {
   const year = date.getFullYear()
   const month = String(date.getMonth() + 1).padStart(2, '0')
@@ -796,6 +820,7 @@ const visibleFilterProps = computed(() => {
   return props
 })
 watchVisibleColumns(visibleFilterProps)
+watchSortVisibleColumns(visibleFilterProps)
 
 function handleResetColumns() {
   resetToDefault()
@@ -858,7 +883,8 @@ function buildListQueryParams(): ContractQuery {
   const params: ContractQuery = {
     ...queryParams.value,
     ...colParams,
-    ...viewScopeParams
+    ...viewScopeParams,
+    ...toSortQueryParams()
   }
   const hasStatusIn = Boolean(colParams.statusIn)
   const hasStatusFilter = Boolean(colParams.status)