Просмотр исходного кода

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

Co-authored-by: Cursor <cursoragent@cursor.com>
wuzilong 1 месяц назад
Родитель
Сommit
381ece40df

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

@@ -22,6 +22,8 @@ export interface QuoteQuery {
   quoteDateEnd?: string
   beginTime?: string
   endTime?: string
+  sortField?: string
+  sortOrder?: 'asc' | 'desc'
 }
 
 export interface QuoteProductForm {

+ 30 - 1
web-admin/src/views/crm/quote/QuoteListPage.vue

@@ -934,6 +934,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 { buildQuoteColumnFilterDefs } from './columnFilterDefs'
 import {
@@ -1048,6 +1049,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 formatQuoteDateYmd(date: Date) {
   const year = date.getFullYear()
   const month = String(date.getMonth() + 1).padStart(2, '0')
@@ -1166,6 +1190,7 @@ const visibleFilterProps = computed(() => {
   return props
 })
 watchVisibleColumns(visibleFilterProps)
+watchSortVisibleColumns(visibleFilterProps)
 
 function handleResetColumns() {
   resetToDefault()
@@ -1271,7 +1296,11 @@ const restoreTabFilter = (view: QuoteViewName) => {
 /** 组装列表/导出请求参数(视图隐式条件不污染 UI 绑定的 queryParams) */
 const buildListQueryParams = (): QuoteQuery => {
   const colParams = toQueryParams()
-  const params: QuoteQuery = { ...queryParams.value, ...colParams }
+  const params: QuoteQuery = {
+    ...queryParams.value,
+    ...colParams,
+    ...toSortQueryParams()
+  }
   const hasStatusIn = Boolean(colParams.statusIn)
   const hasStatusFilter = Boolean(colParams.status)