|
|
@@ -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)
|
|
|
|