diff --git a/web-admin/src/api/crm/quote/types.ts b/web-admin/src/api/crm/quote/types.ts index f04cd8313..c7f53ade0 100644 --- a/web-admin/src/api/crm/quote/types.ts +++ b/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 { diff --git a/web-admin/src/views/crm/quote/QuoteListPage.vue b/web-admin/src/views/crm/quote/QuoteListPage.vue index 7703ac6d3..28fe31ec6 100644 --- a/web-admin/src/views/crm/quote/QuoteListPage.vue +++ b/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)