From 2069d53e9be24adec3c8d6717fd7317555bd9a52 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期二, 02 七月 2024 23:02:51 +0800 Subject: [PATCH] 高级表单优化 --- src/api/tigerapi/system.ts | 193 +++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 166 insertions(+), 27 deletions(-) diff --git a/src/api/tigerapi/system.ts b/src/api/tigerapi/system.ts index 3ead966..0d53fb4 100644 --- a/src/api/tigerapi/system.ts +++ b/src/api/tigerapi/system.ts @@ -1,4 +1,3 @@ -import { UserConfigFn } from 'vite'; import { useGlobSetting } from '/@/hooks/setting'; import { buildUUID } from '../../utils/uuid'; import { DateFormat } from '../../utils/dataformat'; @@ -28,9 +27,10 @@ iSYS_ROLE_WH, EntityParams, EntityList, + iSYS_ROLE_PROD, } from './model/systemModel'; import { defHttp } from '/@/utils/http/axios'; -import { isNullOrEmpty, isTimeType } from '/@/utils/is'; +import { isArray, isNullOrEmpty, isTimeViaRegExp8601 } from '/@/utils/is'; export enum Api { QueryUrl = '/Base/Query', @@ -38,6 +38,7 @@ EntitySqlList = '/Base/QuerySQL', EntityPageList = '/Base/QueryCustomPage', IsAccountExist = '/Base/IsExist', + AddAfterDelete = '/Base/AddAfterDelete', setRoleStatus = '/system/setRoleStatus', MenuList = '/SYS/getMenuListAll', SaveMenu = '/SYS/SaveMenu', @@ -50,6 +51,7 @@ DeleteList = '/Base/DeleteList', DeleteWhere = '/Base/DeleteWhere', GetOrgTreeList = '/SYS/getOrgTreeList', + GetProdTreeList = '/SYS/getProdTreeList', GetHouseTreeList = '/WMS/GetHouseModel', GetHouseOrgTreeList = '/WMS/GetHouseModelOrg', GetCreateBillCode = '/WMS/CreateBillCode', @@ -278,6 +280,32 @@ return result; } +/** + * @description: 鏍戝舰琛ㄧ粨鏋勮浆鏍戝舰Json + * @param {T} data + * @param {string} parentField 鐖跺瓧娈靛悕 + * @param {string} idField 鍞竴key瀛楁鍚� + * @param {string} pid_val 鐖秈d鍊� + * @return {*} + */ +export function convertToTree<T>(data: T[], parentField: string, idField: string, pid?: string) { + const result: T[] = []; + let temp: T[] = []; + const _pid = isNullOrEmpty(pid) ? '' : pid; + for (let i = 0; i < data.length; i++) { + const currPid = data[i][parentField] == null ? '' : data[i][parentField]; + if (currPid === _pid) { + const obj = data[i] as T; + temp = convertToTree(data, parentField, idField, data[i][idField]); + if (temp.length > 0) { + obj['children'] = temp; + } + result.push(obj); + } + } + return result; +} + /* * 淇濆瓨鍙傛暟 */ @@ -421,6 +449,24 @@ } async function getRoleOrg(params: ApiAction<string>) { const data = await defHttp.post<ApiAction<iSYS_ROLE_ORG[]>>( + { + url: Api.EntityList, + params, + }, + { + errorMessageMode: 'modal', + isTransformResponse: false, + }, + ); + return data.Data; +} + +export function getProdList(params: string) { + const rmParams = genAction('SYS_ROLE_PROD', " ROLE_CODE = '" + params + "'"); + return getRoleProd(rmParams); +} +async function getRoleProd(params: ApiAction<string>) { + const data = await defHttp.post<ApiAction<iSYS_ROLE_PROD[]>>( { url: Api.EntityList, params, @@ -652,30 +698,14 @@ ); }; -/* 閫氱敤鏌ヨ鍒嗛〉 */ +/** + * @description: 閫氱敤鏌ヨ鍒嗛〉 + * @param {T} params + * @return {*} + */ export async function getListByPage<T>(params: T) { - const Keys = Object.getOwnPropertyNames(params); - let sqlcmd = '1=1 '; + const sqlcmd = ReturnSqlcmd(params); let order = ''; - for (const k in Keys) { - console.log(`${k}:${Keys[k]}`); - if ( - !isNullOrEmpty(params[Keys[k]]) && - Keys[k] != 'page' && - Keys[k] != 'pageSize' && - Keys[k] != 'TABLE_NAME' && - Keys[k] != 'order' && - Keys[k] != 'field' && - Keys[k] != '0' - ) { - if (!isNullOrEmpty(params[Keys[k]].length) && isTimeType(params[Keys[k]][0])) { - sqlcmd += ` And ${Keys[k]} > '${params[Keys[k]][0]}'`; - sqlcmd += ` And ${Keys[k]} < '${params[Keys[k]][1]}'`; - } else { - sqlcmd += `And ${Keys[k]} like '%${params[Keys[k]]}%'`; - } - } - } if (!isNullOrEmpty(params['order'])) { order = params['order'] == 'descend' ? params['field'] + ' desc' : params['field']; } @@ -694,7 +724,7 @@ } async function getListByPageAsync(params: any) { const data = await defHttp.post( - { url: Api.QueryUrl, params }, + { url: Api.QueryUrl, params, timeout: 50000 }, { isTransformResponse: false, }, @@ -706,7 +736,38 @@ return model; } -export async function SaveEntity<T>(params: T, isUpdate: boolean, entityName: string) { +/** + * @description: 鏍规嵁鏌ヨ鏉′欢鍙傛暟鎷兼帴鏌ヨ鏉′欢 + * @param {T} params + * @return {*} + */ +export function ReturnSqlcmd<T>(params: T) { + const Keys = Object.getOwnPropertyNames(params); + let sqlcmd = '1=1 '; + for (const k in Keys) { + console.log(`${k}:${Keys[k]}`); + if ( + !isNullOrEmpty(params[Keys[k]]) && + Keys[k] != 'page' && + Keys[k] != 'pageSize' && + Keys[k] != 'TABLE_NAME' && + Keys[k] != 'order' && + Keys[k] != 'field' && + Keys[k] != '0' && + !Keys[k].toString().endsWith('PSelect_0') + ) { + if (!isNullOrEmpty(params[Keys[k]].length) && isTimeViaRegExp8601(params[Keys[k]][0])) { + sqlcmd += ` And ${Keys[k]} > '${params[Keys[k]][0]}'`; + sqlcmd += ` And ${Keys[k]} < '${params[Keys[k]][1]}'`; + } else { + sqlcmd += `And ${Keys[k]} like '%${params[Keys[k]]}%'`; + } + } + } + return sqlcmd; +} + +export async function SaveEntity<T>(params: T, isUpdate: boolean, entityName: string, ...args) { let data; if (isUpdate) { data = await defHttp.post( @@ -717,6 +778,12 @@ }, ); } else { + var check = await isExist(genAction(entityName, args[0])); + if (check.Data) { + check.IsSuccessed = false; + check.Message = '璁板綍宸茬粡瀛樺湪锛屼笉鑳芥柊澧烇紒'; + return check; + } params.ID = buildUUID(); //鐢熸垚GUID data = await defHttp.post( { url: Api.AddEntity, params: genAction(entityName, params) }, @@ -726,6 +793,17 @@ }, ); } + return data; +} + +export async function AddListEntity<T>(params: T, entityName: string) { + let data = await defHttp.post( + { url: Api.AddListEntity, params: genAction(entityName, params) }, + { + errorMessageMode: 'none', + isTransformResponse: false, + }, + ); return data; } @@ -740,7 +818,53 @@ ); } -//鑾峰彇鏈嶅姟鍣↗son鏂囦欢杩斿洖Json鏁版嵁 +/** + * @description: 鍏堝垹闄ゅ悗娣诲姞Api + * @param {T} params + * @param {string} entityName + * @param {*} items + * @return {*} + */ +export async function AddAfterDelete(entityName: string, items: [], where: string) { + let data = await defHttp.post( + { + url: Api.AddAfterDelete, + params: genAction(entityName, { + QueryAble_T: '', + where: where, + Items: items, + }), + }, + { + errorMessageMode: 'none', + isTransformResponse: false, + }, + ); + return data; +} + +/** + * @description: 鏍规嵁鏉′欢鍒犻櫎 + * @param {string} sqlcmd + * @param {string} entityName + * @return {*} + */ +export const DeleteWhere = async (sqlcmd: string, entityName: string) => { + const usParams = genAction(entityName, sqlcmd); + return await defHttp.post( + { url: Api.DeleteWhere, params: usParams }, + { + errorMessageMode: 'none', + isTransformResponse: false, + }, + ); +}; + +/** + * @description: 鑾峰彇鏈嶅姟鍣↗son鏂囦欢杩斿洖Json鏁版嵁 + * @param {string} url + * @return {*} + */ export async function fetchJson(url: string) { try { const response = await fetch(url); @@ -809,3 +933,18 @@ }, ); }; + +/** + * @description: 鍒ゆ柇淇濆瓨鐨勫�煎鏋滄槸[]鏁扮粍鐨勶紝灏辩洿鎺ュ彇[0]绗竴涓�硷紝涓�鑸拡瀵逛笂浼犳ā鏉跨殑鍦板潃 + * @param {any} values + * @return {*} + */ +export function formatValues(values: any) { + const Keys = Object.getOwnPropertyNames(values); + for (const k in Keys) { + if (isArray(values[Keys[k]])) { + values[Keys[k]] = values[Keys[k]][0]; + } + } + return values; +} -- Gitblit v1.9.3