Commit d1eb0289 by qinjianhui

fix: 按 Tab 可配置裁剪列表查询条件

parent 3e07ee50
export interface FactoryOrderSearchQueryVisibilityContext {
status: string
isCardLayout: boolean
}
import { nextTick, ref } from 'vue'
import type { SearchForm } from '@/types/api/order/factoryOrderNew'
import type { FactoryOrderSearchQueryVisibilityContext } from '@/types/factoryOrderNew/searchQueryVisibility'
import { filterFactoryOrderListSearchPayload } from '../utils/listSearchQueryFilter'
import { normalizeProductMarkListForQuery } from '../utils/productMarkQuery'
export function useOrderSearchForm(refreshCurrentView: () => void) {
export function useOrderSearchForm(
refreshCurrentView: () => void,
getVisibilityContext?: () => FactoryOrderSearchQueryVisibilityContext,
) {
const searchForm = ref<SearchForm>({})
const dateRange = ref<string[]>([])
const searchVisible = ref(false)
......@@ -66,13 +71,16 @@ export function useOrderSearchForm(refreshCurrentView: () => void) {
Array.isArray(tagsIdArr) && tagsIdArr.length > 0
? tagsIdArr.join(',')
: undefined
return {
const raw: Record<string, unknown> = {
...rest,
...markQuery,
...(tagsId !== undefined ? { tagsId } : {}),
startTime: dateRange.value?.[0] || null,
endTime: dateRange.value?.[1] || null,
}
return getVisibilityContext
? filterFactoryOrderListSearchPayload(raw, getVisibilityContext())
: raw
}
const reset = () => {
......
......@@ -1016,6 +1016,7 @@ import PodDistributionOrder from '@/views/order/podCN/PodDistributionOrder.vue'
import PrintWarehouseSkuTag from '@/views/order/components/printWarehouseSkuTag.vue'
import UpdateAddress from '@/views/order/podCN/components/updateAddress.vue'
import { ResultInfoDataItem } from '@/types/api/order/common'
import type { FactoryOrderSearchQueryVisibilityContext } from '@/types/factoryOrderNew/searchQueryVisibility'
import { useOrderDictionaries } from './hooks/useOrderDictionaries'
import { useOrderSearchForm } from './hooks/useOrderSearchForm'
import { useOrderStatusTree } from './hooks/useOrderStatusTree'
......@@ -1046,6 +1047,11 @@ const {
} = useOrderDictionaries()
const refreshCurrentViewProxy = ref<() => void>(() => {})
let getFactoryOrderSearchVisibilityContext: () => FactoryOrderSearchQueryVisibilityContext =
() => ({
status: 'PENDING_RECEIVE',
isCardLayout: false,
})
const {
searchForm,
dateRange,
......@@ -1055,7 +1061,10 @@ const {
changeReplaceShipment,
getQueryPayload,
reset,
} = useOrderSearchForm(() => refreshCurrentViewProxy.value())
} = useOrderSearchForm(
() => refreshCurrentViewProxy.value(),
() => getFactoryOrderSearchVisibilityContext(),
)
const statusCurrentPageRef = ref(1)
const statusPageSizeRef = ref(50)
......@@ -1084,6 +1093,10 @@ const {
onClearTableState: () => {},
onRefreshCurrentView: () => {},
})
getFactoryOrderSearchVisibilityContext = () => ({
status: status.value,
isCardLayout: isCardLayout.value,
})
const {
subLoading,
......@@ -1158,12 +1171,8 @@ const submitExportForm = async () => {
try {
await exportFactoryOrderInfo({
...params,
...(resourceType === 2
? {
...searchForm.value,
}
: {}),
})
...(resourceType === 2 ? getQueryPayload() : {}),
} as ExportParams)
ElMessage.success('请求成功,请稍后到右上角[我的下载]中查看')
exportVisible.value = false
} catch (e) {
......@@ -1260,9 +1269,6 @@ const handleRefreshReceiverAddress = async (row: FactoryOrderNewListData) => {
}
const handleStatusNodeClick = (node: { status: string }) => {
if (node.status !== 'ALL') {
searchForm.value.logisticsWayId = undefined
}
status.value = node.status
if (node.status !== 'PENDING_RECEIVE') {
pendingAcceptSubTab.value = 'PENDING_RECEIVE'
......
import type { FactoryOrderSearchQueryVisibilityContext } from '@/types/factoryOrderNew/searchQueryVisibility'
export const FACTORY_ORDER_LIST_SEARCH_FIELD_RULES: Record<
string,
(ctx: FactoryOrderSearchQueryVisibilityContext) => boolean
> = {
batchArrangeNumber: (c) => c.isCardLayout,
operationNo: (c) => c.isCardLayout,
receiverCountry: (c) => !c.isCardLayout,
logisticsWayId: (c) => c.status === 'ALL',
}
export function filterFactoryOrderListSearchPayload(
payload: Record<string, unknown>,
ctx: FactoryOrderSearchQueryVisibilityContext,
): Record<string, unknown> {
const out = { ...payload }
for (const [key, rule] of Object.entries(
FACTORY_ORDER_LIST_SEARCH_FIELD_RULES,
)) {
if (!Object.prototype.hasOwnProperty.call(out, key)) continue
if (!rule(ctx)) {
delete out[key]
}
}
return out
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment