// @ts-nocheck import { RequestParameter } from './help/requestParameter.js' // eslint-disable-next-line complexity const requestPayload = (parameter: Object, sort = {}, noSort = false) => { // 参数的实例 const instance = new RequestParameter() if (parameter.pageable === false) { instance.Pageable(null, null, parameter.pageable) } else { delete parameter.limit delete parameter.offset instance.Pageable(parameter.pageNum, parameter.pageSize) } // 把对象转成 map 然后取 key value const obj = Object.entries(parameter) for (const [key, value] of obj) { if (key && value !== '' && key !== 'pageNum' && key !== 'pageSize' && key !== 'pageable' && value !== undefined) { // 判断 类型 if (Object.prototype.toString.call(value) === '[object Object]') { let { model = '', oper = '', andOr = 'AND', realField = key, label, realModel // 跳板 } = value if (!oper) continue const len = Object.prototype.toString.call(model) === '[object Array]' ? model.length > 0 : true if ((len && model) || realModel !== undefined || oper.endsWith('NULL')) { // EQUAL时model可为空'' NULL时model无意义 realModel !== undefined && (model = realModel) instance.AndFields({ andOr, name: realField, oper, value: model, label }) } } else { instance.AndFields({ name: key, value }) } } } // 是否有 排序 for (const [key, value] of Object.entries(sort)) { instance.Sort(key, value) } if (instance.parameter.ordSort.length === 0 && !noSort) { instance.parameter.ordSort.push({ name: 'lastModifiedTime', order: 'DESC' }) } return instance.parameter } interface ModelOper { model: string | number | boolean oper: string realField?: string realModel?: undefined | string } interface IParameter { [key: string]: ModelOper | string | number | boolean } export { requestPayload, IParameter }