fix: 优化设备批量导出查询条件

This commit is contained in:
XieYongHong 2023-10-16 15:32:50 +08:00
parent ad04405afb
commit c4ddde59ab
2 changed files with 66 additions and 14 deletions

View File

@ -24,12 +24,42 @@ export const encodeParams = (params: Record<string, any>) => {
return _params.toString() return _params.toString()
} }
const handleTermsArr = (queryTerms: any, data: any[], parentKey?: string) => {
data.forEach((item, index) => {
const key = `${parentKey}[${index}]`
if (isArray(item)){
handleTermsArr(queryTerms, item, `${key}`)
} else if (isObject(item)) {
handleTermsObject(queryTerms, item, `${key}`)
} else {
queryTerms[key] = item
}
})
}
const handleTermsObject = (queryTerms: any, data: any, parentKey?: string) => {
Object.keys(data).forEach(k => {
const key = `${parentKey}.${k}`
console.log(key, data[k], isObject(data[k]), isArray(data[k]))
if (isArray(data[k])) {
handleTermsArr(queryTerms, data[k], `${key}`)
} else if (isObject(data[k])) {
handleTermsObject(queryTerms, data[k], `${key}`)
} else {
queryTerms[key] = data[k]
}
})
}
const handleTermsToString = (queryTerms: any, terms: Array<TermsType>, parentKey?: string) => { const handleTermsToString = (queryTerms: any, terms: Array<TermsType>, parentKey?: string) => {
console.log(terms)
terms.forEach((a, aIndex) => { terms.forEach((a, aIndex) => {
Object.keys(a).forEach((b) => { Object.keys(a).forEach((b) => {
const key = `${parentKey}[${aIndex}].${b}` const key = `${parentKey}[${aIndex}].${b}`
if (b === 'terms') { if (isArray(a[b])) {
handleTermsToString(queryTerms, a[b], `${key}`) handleTermsArr(queryTerms, a[b], `${key}`)
} else if (isObject(a[b])) {
handleTermsObject(queryTerms, a[b], `${key}`)
} else { } else {
queryTerms[key] = a[b] queryTerms[key] = a[b]
} }

View File

@ -503,6 +503,17 @@ const columns = [
hideInTable: true, hideInTable: true,
search: { search: {
type: 'treeSelect', type: 'treeSelect',
// handleValue(v) {
// return {
// assetType: 'device',
// targets: [
// {
// type: 'org',
// id: v,
// },
// ],
// }
// },
options: () => options: () =>
new Promise((resolve) => { new Promise((resolve) => {
queryOrgThree({}).then((resp: any) => { queryOrgThree({}).then((resp: any) => {
@ -918,15 +929,26 @@ const handleSearch = (_params: any) => {
// params.value = _params; // params.value = _params;
const newParams = (_params?.terms as any[])?.map((item1) => { const newParams = (_params?.terms as any[])?.map((item1) => {
item1.terms = item1.terms.map((item2: any) => { item1.terms = item1.terms.map((item2: any) => {
if (item2.column === 'id$dim-assets') {
if (item2.termType === 'not') {
const oldValue = JSON.parse(item2.value)
oldValue.not = true
item2.value = JSON.stringify(oldValue)
}
delete item2.termType
}
if ( if (
item2.column && item2.column &&
['classifiedId', 'accessId', 'accessProvider'].includes( ['classifiedId', 'accessId', 'accessProvider'].includes(
item2.column, item2.column,
) )
) { ) {
const oldTermType = item2.termType
delete item2.termType
return { return {
...item2, ...item2,
column: 'productId$product-info', column: `productId$product-info$${oldTermType}`,
}; };
} }
return item2; return item2;