From 043701d5a28df6a0ea596ed7e4198676480bcc60 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期三, 05 三月 2025 16:12:55 +0800
Subject: [PATCH] 工具维护更新

---
 src/api/tigerapi/system.ts |  450 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 446 insertions(+), 4 deletions(-)

diff --git a/src/api/tigerapi/system.ts b/src/api/tigerapi/system.ts
index 05da489..334fcb0 100644
--- a/src/api/tigerapi/system.ts
+++ b/src/api/tigerapi/system.ts
@@ -1,4 +1,4 @@
-import { UserConfigFn } from 'vite';
+import { useGlobSetting } from '/@/hooks/setting';
 import { buildUUID } from '../../utils/uuid';
 import { DateFormat } from '../../utils/dataformat';
 import { ApiAction, ApiActionJob, ApiActionPage } from '../model/baseModel';
@@ -25,8 +25,17 @@
   LoginLogPageListGetResultModel,
   iSYS_ROLE_ORG,
   iSYS_ROLE_WH,
+  EntityParams,
+  EntityList,
+  iSYS_ROLE_PROD,
+  pParams,
+  ImportEntityValidate,
+  ImportInput,
 } from './model/systemModel';
 import { defHttp } from '/@/utils/http/axios';
+import { isArray, isNullOrEmpty, isTimeViaRegExp8601 } from '/@/utils/is';
+import { isNumber } from 'xe-utils';
+import { useUserStore } from '/@/store/modules/user';
 
 export enum Api {
   QueryUrl = '/Base/Query',
@@ -34,10 +43,14 @@
   EntitySqlList = '/Base/QuerySQL',
   EntityPageList = '/Base/QueryCustomPage',
   IsAccountExist = '/Base/IsExist',
+  AddAfterDelete = '/Base/AddAfterDelete',
+  ImportExcel = '/Base/ImportExcel',
+  BaseValidateTableImport = '/Base/ValidateTableImport',
   setRoleStatus = '/system/setRoleStatus',
   MenuList = '/SYS/getMenuListAll',
   SaveMenu = '/SYS/SaveMenu',
   SaveRole = '/SYS/SaveRole',
+  getSysParam = '/SYS/getSysParam',
   AddEntity = '/Base/Add',
   AddListEntity = '/Base/AddList',
   UpdateEntity = '/Base/Update',
@@ -46,6 +59,7 @@
   DeleteList = '/Base/DeleteList',
   DeleteWhere = '/Base/DeleteWhere',
   GetOrgTreeList = '/SYS/getOrgTreeList',
+  GetProdTreeList = '/SYS/getProdTreeList',
   GetHouseTreeList = '/WMS/GetHouseModel',
   GetHouseOrgTreeList = '/WMS/GetHouseModelOrg',
   GetCreateBillCode = '/WMS/CreateBillCode',
@@ -56,7 +70,11 @@
   StartJob = '/Tsk/StartJob',
   StopJob = '/Tsk/PauseJob',
   AddJob = '/Tsk/AddJob',
+  AddTskJob = '/Tsk/AddTskJob',
+  ImmediateRun = '/Tsk/ImmediateRun',
+  RemoveTskJob = '/Tsk/RemoveTskJob',
   UpdateJob = '/Tsk/UpdateJob',
+  SaveTskJob = '/Tsk/SaveTskJob',
   urlQueryEnum = '/Base/QueryEnum',
   DeleteWareHouse = '/WMS/DelWareHouseModel',
   AddLocation = '/WMS/AddLoctionModel',
@@ -73,9 +91,12 @@
   // 鎵归噺鏇存柊鍐呭
   GetUpdateTime = '/MaterialInfo/UpdateTime',
   //瀵煎叆
-  ValidateTableImport='/SMT/ValidateTableImport',
-  SaveValidateTableImport='/SMT/SaveValidateTableImport'
+  ValidateTableImport = '/SMT/ValidateTableImport',
+  SaveValidateTableImport = '/SMT/SaveValidateTableImport',
+  GetEntityNameList = '/System/Entitys/Get',
 }
+
+const globSetting = useGlobSetting();
 
 /**
  * 鐢熸垚apiaction,甯﹀垎椤�
@@ -121,7 +142,7 @@
 /*
  * 鐢熸垚Action
  */
-export function genAction<T>(datatype: string, data: T, option?: object) {
+export function genAction<T>(datatype: string, data: T, option?: object, NeedInclude?: boolean) {
   const time = new Date();
   const params: ApiAction<T> = {
     ID: buildUUID(),
@@ -135,7 +156,23 @@
     StatusCode: 0,
     Data: data,
     LocaleMsg: undefined,
+    NeedInclude: isNullOrEmpty(NeedInclude) ? false : NeedInclude,
   };
+  return params;
+}
+
+/**
+ * @desc 鐢熸垚Action
+ */
+export function generateAction<T>(
+  datatype: string,
+  DataAssembly: string,
+  data: T,
+  option?: object,
+  NeedInclude?: boolean,
+) {
+  const params = genAction(datatype, data, option, NeedInclude);
+  params.DataAssembly = DataAssembly;
   return params;
 }
 export function genActionjob<sting>(
@@ -269,6 +306,56 @@
     }
   }
   return result;
+}
+
+/**
+ * @description: 鏍戝舰琛ㄧ粨鏋勮浆鏍戝舰Json
+ * @param {T} data
+ * @param {string} parentField 鐖跺瓧娈靛悕
+ * @param {string} idField 鍞竴key瀛楁鍚�
+ * @param {string} pid 鐖秈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;
+}
+
+/**
+ * @description: 鑾峰彇鐖堕」
+ * @param {any} nodes
+ * @param {string} childId
+ * @return {*}
+ */
+export function findParent(tree: any[], nodeId: string): any | undefined {
+  for (const node of tree) {
+    if (node.children) {
+      for (const child of node.children) {
+        if (child.tid === nodeId) {
+          return node;
+        }
+        // 閫掑綊鏌ユ壘瀛愭爲
+        const potentialParent = findParent(node.children, nodeId);
+        if (potentialParent) {
+          return potentialParent;
+        }
+      }
+    }
+  }
+  return undefined; // 娌℃湁鎵惧埌瀵瑰簲鐨勭埗浜茶妭鐐�
 }
 
 /*
@@ -414,6 +501,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,
@@ -628,3 +733,340 @@
   };
   return model;
 }
+
+/*
+ *閫氱敤鏂规硶========================================================
+ */
+
+export const GetEnum = async (enumName: { name: string }) => {
+  const usParams = genAction(enumName.name, '');
+  return await defHttp.post(
+    { url: Api.urlQueryEnum, params: usParams },
+    {
+      errorMessageMode: 'none',
+      isTransformResponse: false,
+      //apiUrl: globSetting.taskApiUrl
+    },
+  );
+};
+
+/**
+ * @description: 閫氱敤鏌ヨ鍒嗛〉
+ * @param {T} params
+ * @return {*}
+ */
+export async function getListByPage<T>(params: T) {
+  const sqlcmd = ReturnSqlcmd(params);
+  let order = '';
+  if (!isNullOrEmpty(params['order'])) {
+    order = params['order'] == 'descend' ? params['field'] + ' desc' : params['field'];
+  }
+  const rParams = genAction(
+    params['TABLE_NAME'],
+    !isNullOrEmpty(params['apiUrl'])
+      ? params
+      : {
+          QueryAble_T: '',
+          where: sqlcmd,
+          order: order,
+          page: {
+            pageAble_T: 'string',
+            draw: 1,
+            pageIndex: params['page'],
+            pageSize: params['pageSize'],
+          },
+        },
+    params['option'],
+    params['NeedInclude'],
+  );
+  return getListByPageAsync(rParams, params['apiUrl']); //濡傛灉涓嶆兂鐢ㄩ粯璁ょ殑鍩虹鏂规硶鑾峰彇鍒嗛〉鏁版嵁锛屽彲浠ユ崲鍏朵粬鐨刟pi
+}
+async function getListByPageAsync(params: any, apiUrl: string | null | undefined) {
+  const data = await defHttp.post(
+    { url: !isNullOrEmpty(apiUrl) ? apiUrl : Api.QueryUrl, params, timeout: 50000 },
+    {
+      isTransformResponse: false,
+    },
+  );
+  const model = {
+    items: data.Data.page.data,
+    total: data.Data.page.totals,
+  };
+  return model;
+}
+
+/**
+ * @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] != 'option' &&
+      Keys[k] != '0' &&
+      Keys[k] != 'apiUrl' &&
+      Keys[k] != 'NeedInclude' &&
+      Keys[k] != 'nolike' &&
+      !Keys[k].toString().endsWith('PSelect_0')
+    ) {
+      if (!isNullOrEmpty(params[Keys[k]].length) && isArray(params[Keys[k]])) {
+        if (isTimeViaRegExp8601(params[Keys[k]][0])) {
+          sqlcmd += ` And ${Keys[k]} > '${params[Keys[k]][0]}'`;
+          sqlcmd += ` And ${Keys[k]} < '${params[Keys[k]][1]}'`;
+        } else {
+          sqlcmd += `And '${params[Keys[k]].join(',')}' like '%'+${Keys[k]}+'%'`;
+        }
+      } else if (isNumber(params[Keys[k]])) {
+        sqlcmd += `And ${Keys[k]} = ${params[Keys[k]]}`;
+      } else if(Keys[k].toString().startsWith('IFEMPTY_')){
+        sqlcmd +=params[Keys[k]]=='Y'? `And (${Keys[k].split('IFEMPTY_')[1]} != '' OR ${Keys[k].split('IFEMPTY_')[1]} is not NULL)`: `And (${Keys[k].split('IFEMPTY_')[1]} = '' OR ${Keys[k].split('IFEMPTY_')[1]} is NULL)`;
+      } else {
+        sqlcmd +=
+          params['nolike'] == 'Y'
+            ? `And ${Keys[k]} = '${params[Keys[k]]}'`
+            : `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(
+      { url: Api.UpdateEntity, params: genAction(entityName, params) },
+      {
+        errorMessageMode: 'none',
+        isTransformResponse: false,
+      },
+    );
+  } else {
+    const check = await isExist(genAction(entityName, args[0]));
+    if (check.Data) {
+      check.IsSuccessed = false;
+      check.Message = '璁板綍宸茬粡瀛樺湪锛屼笉鑳芥柊澧烇紒';
+      return check;
+    }
+    params['ID'] = args[1] == true ? params['ID'] : buildUUID(); //鐢熸垚GUID
+    params['AUTH_ORG'] = useUserStore().getUserInfo.orgCode as string;
+    data = await defHttp.post(
+      { url: Api.AddEntity, params: genAction(entityName, params) },
+      {
+        errorMessageMode: 'none',
+        isTransformResponse: false,
+      },
+    );
+  }
+  return data;
+}
+
+export async function AddListEntity<T>(params: T, entityName: string) {
+  const data = await defHttp.post(
+    { url: Api.AddListEntity, params: genAction(entityName, params) },
+    {
+      errorMessageMode: 'none',
+      isTransformResponse: false,
+    },
+  );
+  return data;
+}
+
+export async function DeleteEntity<T>(params: T, entityName: string) {
+  const usParams = genAction(entityName, [params]);
+  return await defHttp.post(
+    { url: Api.DeleteList, params: usParams },
+    {
+      errorMessageMode: 'none',
+      isTransformResponse: false,
+    },
+  );
+}
+
+/**
+ * @description: 鍏堝垹闄ゅ悗娣诲姞Api
+ * @param {T} params
+ * @param {string} entityName
+ * @param {*} items
+ * @return {*}
+ */
+export async function AddAfterDelete(entityName: string, items: [], where: string) {
+  const 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);
+    return await response.json();
+  } catch (error) {
+    console.error('Error fetching columns:', error);
+  }
+}
+
+// 娉涘瀷鍑芥暟锛岃幏鍙栫被鐨勫悕绉�
+export function getClassName<T>(ctor: new () => T): string {
+  return ctor.name;
+}
+
+export const getEntityList = (params?: EntityParams) =>
+  defHttp.get<EntityList>(
+    { url: Api.GetEntityNameList, params },
+    {
+      isTransformResponse: false,
+      apiUrl: globSetting.sysApiUrl,
+    },
+  );
+
+export async function getEntityNameList(params?: EntityParams) {
+  const data = await defHttp.get<EntityList>(
+    { url: Api.GetEntityNameList, params },
+    {
+      isTransformResponse: false,
+      apiUrl: globSetting.sysApiUrl,
+    },
+  );
+  const model = {
+    items: data.Data,
+    total: data.Total,
+  };
+  return model;
+}
+
+export async function getEntityPropertieList(params?: EntityParams) {
+  const data = await defHttp.get<EntityList>(
+    { url: Api.GetEntityNameList, params },
+    {
+      isTransformResponse: false,
+      apiUrl: globSetting.sysApiUrl,
+    },
+  );
+  const model = {
+    items: data.Data.filter((x) => x.Name == params?.StartWith)[0].Properties,
+    total: data.Total,
+  };
+  return model;
+}
+
+/* 閫氱敤鑾峰彇瀹炰綋璁板綍 */
+export const getEntity = async (params: { sqlcmd: string; entityName: string; order: string }) => {
+  const usParams = genAction(params.entityName, {
+    QueryAble_T: '',
+    where: params.sqlcmd,
+    order: params.order,
+  });
+  return await defHttp.post(
+    { url: Api.QueryUrl, params: usParams },
+    {
+      errorMessageMode: 'none',
+      isTransformResponse: false,
+    },
+  );
+};
+
+/**
+ * @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;
+}
+
+/**
+ * @description: 鑾峰彇鍙傛暟
+ * @param {pParams} params
+ * @return {*}
+ */
+export const getSysParam = (params?: pParams) =>
+  defHttp.get<ApiAction<treeParamsListItem[]>>(
+    { url: Api.getSysParam, params },
+    {
+      isTransformResponse: false,
+    },
+  );
+
+  /**
+   * @desc 瀵煎叆Excel
+   */
+export async function ImportExcel(entityName: string, items: ImportInput) {
+  const data = await defHttp.post(
+    {
+      url: Api.ImportExcel,
+      params: genAction(entityName, items),
+    },
+    {
+      errorMessageMode: 'none',
+      isTransformResponse: false,
+    },
+  );
+  return data;
+}
+
+/**
+ * @desc 瀵煎叆Excel
+ */
+export async function ValidateTableImport(entityName: string, items: ImportEntityValidate) {
+const data = await defHttp.post(
+  {
+    url: Api.BaseValidateTableImport,
+    params: genAction(entityName, items),
+  },
+  {
+    errorMessageMode: 'none',
+    isTransformResponse: false,
+  },
+);
+return data;
+}

--
Gitblit v1.9.3