(filterFields: FilterField[] = [], pager = { limit: 10, offset: 0 })
| 94 | * @param filterFields 允许filter的字段 |
| 95 | */ |
| 96 | export const getFilterFieldByURLSearch = (filterFields: FilterField[] = [], pager = { limit: 10, offset: 0 }) => { |
| 97 | // 解析路由参数,设置pager默认值 |
| 98 | const search = Object.assign({}, pager, getURLSearch()); |
| 99 | // 获取fitterFields的name:type |
| 100 | const filterFieldKV: { [name: string]: FilterFieldType } = {}; |
| 101 | [...DEFAULT_FILTER_FIELDS, ...filterFields].forEach((field) => { |
| 102 | filterFieldKV[field.name] = field.type; |
| 103 | }); |
| 104 | // 仅选取必要的筛选字段,并进行类型转换 |
| 105 | const filter: Filter = {}; |
| 106 | Object.keys(search).forEach((key) => { |
| 107 | const value = search[key]; |
| 108 | switch (filterFieldKV[key]) { |
| 109 | case 'string': |
| 110 | filter[key] = value; |
| 111 | break; |
| 112 | case 'boolean': |
| 113 | filter[key] = isTrue(value); |
| 114 | break; |
| 115 | case 'number': |
| 116 | filter[key] = toNumber(value); |
| 117 | break; |
| 118 | case 'array_number': |
| 119 | filter[key] = value.split(',').map(item => toNumber(item)); |
| 120 | break; |
| 121 | case 'array_string': |
| 122 | filter[key] = value.split(','); |
| 123 | break; |
| 124 | case 'time': |
| 125 | filter[key] = value; |
| 126 | break; |
| 127 | default: |
| 128 | break; |
| 129 | } |
| 130 | }); |
| 131 | return filter; |
| 132 | }; |
| 133 | |
| 134 | |
| 135 | /** |
no test coverage detected