diff --git a/web-admin/src/api/crm/contract/types.ts b/web-admin/src/api/crm/contract/types.ts index e88f8f818..0fa1dc210 100644 --- a/web-admin/src/api/crm/contract/types.ts +++ b/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 } diff --git a/web-admin/src/views/crm/contract/ContractListPage.vue b/web-admin/src/views/crm/contract/ContractListPage.vue index 86a2ce55f..ee3c53e3f 100644 --- a/web-admin/src/views/crm/contract/ContractListPage.vue +++ b/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)