Ben Lin
2024-06-20 de7e6c408b6209158b08991d729c4bcc72055eec
src/views/tigerprojects/system/lowcode/data.ts
@@ -18,22 +18,20 @@
 *                                //.-~~~-~_--~- |-------~~~~~~~~
 *                                       //.-~~~--\
 *                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 *
 *                               神兽保佑            永无BUG
 */
/*
 * @Description: 通用低代码呈现页面主数据
 * @Author: Ben Lin
 * @version:
 * @version:
 * @Date: 2024-06-02 17:52:35
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-06-14 09:08:11
 */
import {
  DftGrpRelease,
  dftGrpOpenSelectItem,
  dftGrpGetSelectSuccess,
  dftGrpactionColumn,
@@ -41,23 +39,64 @@
  DftGrpEdit,
  searchSchema,
  defectBaseColumn,
  crudSchema,
  DftGrpDel,
  dftEditeOperation,
} from './normal/basDefectGrp';
import { onChangeFns, rsGrpGetSelectSuccess, rsGrpOpenSelectItem } from './normal/basReasonGrp';
import { DeleteEntity } from '/@/api/tigerapi/system';
import {
  onChangeFns,
  rsnGrpEdit,
  rsGrpGetSelectSuccess,
  rsGrpOpenSelectItem,
  rsnBaseSchema,
  rsnCrudSchema,
  rsnSearchSchema,
  rsnBaseColumn,
  rsnGrpDel,
  rsnEditeOperation,
} from './normal/basReasonGrp';
import { DeleteEntity, convertToTree, getEntity } from '/@/api/tigerapi/system';
import { ActionItem, BasicColumn, FormSchema } from '/@/components/Table';
import { useI18n } from '/@/hooks/web/useI18n';
import { isNullOrEmpty } from '/@/utils/is';
import { woCustFn, woformSchema } from '/@/views/components/bizMesWo';
import { useModal } from '/@/components/Modal';
import { goDetail, labelActionItem, labelGetSelectSuccess, labelOpenSelectItem } from './detail/basLabelVar';
import {
  goDetail,
  labelActionItem,
  labelGetSelectSuccess,
  labelOpenSelectItem,
} from './detail/basLabelVar';
import { buildUUID } from '/@/utils/uuid';
import { Tag } from 'ant-design-vue';
import { Ref, h } from 'vue';
import {
  pkgBaseColumn,
  pkgBaseSchema,
  pkgCrudSchema,
  pkgEditeOperation,
  pkgGrpEdit,
  pkgSearchSchema,
} from './basPkgrule';
import { GetRoutePTree } from '/@/api/tigerapi/mes/router';
import { V_MES_ROUTE_PTREE } from '/@/api/tigerapi/model/router';
import { prodRouteCreateIcon } from './composition/prodRoute';
const { t } = useI18n();
/**
 * @description: 低代码页面获取操作字段结构Json,如增加按钮及方法
 * 攻略:
 *  1. 另新建驼峰实体名.ts的文件,如:basDefectGrp.ts。以便区别不同页面的方法
 *  2. 替换主页面编辑按钮方法变为跳转到高级页面,方法中传入 { CODE: 主表记录的关键字段值,一般是XXX_CODE的值, ID: 当前记录的ID, Name: 'BAS_DEFECT'(跳转过去需要新增编辑的实体名), Title: `编辑不良代码组:${params['record']['DFTG_CODE']}`(定义tab页签的标题), pCode: 'DFTG_CODE'(主表的关键字段代码) }
 *     替换主页面新增按钮方法同上
 *  3. 在菜单管理新建一个高级页面。
 *  4. 配置高级页面,定义表单列 getFormSchema
 *  5. 初始化表格 GetBasicColumnAndInit
 *  6. 设置返回 getHomeUrl
 *  7. 设置标题 getTitle
 *  8. 设置新增时就默认的值 getOthersValues
 *  9. 替换删除方法 GetActionsData
 * @param {*} params
 * @param {array} args
 * @return {*}
@@ -81,18 +120,75 @@
  switch (params['entityName']) {
    /* 不良代码组 */
    case 'BAS_DEFECT_GRP':
      data[0].onClick = DftGrpEdit.bind(null, args, params);
      data[0].onClick = DftGrpEdit.bind(null, args, params); //替换主页面编辑按钮方法变为跳转到高级页面
      break;
    /* 不良代原因组 */
    case 'BAS_REASON_GRP':
      data[0].onClick = rsnGrpEdit.bind(null, args, params); //替换主页面编辑按钮方法变为跳转到高级页面
      break;
    case 'BAS_DEFECT':
      data[1].popConfirm.confirm = DftGrpDel.bind(null, args, params);
      break;
    case 'BAS_REASON':
      data[1].popConfirm.confirm = rsnGrpDel.bind(null, args, params);
      break;
    /* 包装规则 */
    case 'BAS_PKG_RULE':
      data[0].onClick = pkgGrpEdit.bind(null, args, params); //替换主页面编辑按钮方法变为跳转到高级页面
      break;
    case 'BAS_PKG_DTL':
      data[1].popConfirm.confirm = custDel.bind(null, args, params);
      break;
    /* 标签模板 */
    case 'BAS_LABEL_TEMP':
      const _data = labelActionItem;
      _data[0].onClick = goDetail.bind(null, args[5], params['record'])
      _data[0].onClick = goDetail.bind(null, args[5], params['record']);
      data = [...data, ..._data];
      break;
  }
  return data;
}
/**
 * @description: 自定义删除方法
 * @param {Fn} args
 * @param {*} params
 * @return {*}
 */
export function custDel(args: Fn[], params: {}) {
  if (!isNullOrEmpty(params['data'])) {
    var _data = params['data'].value.filter((item) => item['ID'] != params['record']['ID']);
    params['data'].value = _data;
    args[6]({
      dataSource: [],
    });
    args[6]({
      dataSource: params['data'],
    });
    args[1]();
  } else {
    DeleteEntity(params['record'], params['entityName']).then((action) => {
      if (action.IsSuccessed) {
        args[1]();
      }
    });
  }
}
/**
 * @description: 明细表中编辑方法
 * @return {*}
 */
export function EditOperation(type: string, data: Ref<any[]>, d, u) {
  switch (type) {
    case 'BAS_PKG_DTL':
      return pkgEditeOperation(data, d, u);
      break;
    case 'BAS_REASON':
      return rsnEditeOperation(data, d, u);
    case 'BAS_DEFECT':
      return dftEditeOperation(data, d, u);
  }
}
/**
@@ -106,7 +202,38 @@
    case 'BAS_DEFECT_GRP':
      data.action = 'go';
      data.url = 'BAS_DEFECT/High';
      data.params = { CODE: '0', ID: buildUUID(), Name: 'BAS_DEFECT', Title: '新增不良代码组', pageTitle: '不良代码组管理', pageContent: '这里可以添加和修改不良代码组和不良代码。' };
      data.params = {
        CODE: '0',
        ID: buildUUID(),
        Name: 'BAS_DEFECT',
        Title: '新增不良代码组',
        pCode: 'DFTG_CODE',
        IsID: false,
      };
      break;
    case 'BAS_REASON_GRP':
      data.action = 'go';
      data.url = 'BAS_REASON/High';
      data.params = {
        CODE: '0',
        ID: buildUUID(),
        Name: 'BAS_REASON',
        Title: '新增不良原因组',
        pCode: 'RSNG_CODE',
        IsID: false,
      };
      break;
    case 'BAS_PKG_RULE':
      data.action = 'go';
      data.url = 'BAS_PKG_DTL/High';
      data.params = {
        CODE: '0',
        ID: buildUUID(),
        Name: 'BAS_PKG_DTL',
        Title: '新增包装规则',
        pCode: 'PKG_RULE_ID',
        IsID: true,
      };
      break;
  }
  return data;
@@ -262,6 +389,7 @@
        ],
        tableName: 'BAS_ITEM',
        rowKey: 'ITEM_CODE',
        searchInfo: { TABLE_NAME: 'BAS_ITEM' },
      });
      break;
  }
@@ -282,10 +410,10 @@
        break;
      default:
        break;
        (e) => { };
        (e) => {};
    }
  } else {
    (e) => { };
    (e) => {};
  }
}
@@ -336,6 +464,7 @@
        ],
        tableName: 'BAS_ITEM',
        rowKey: 'ITEM_CODE',
        searchInfo: { TABLE_NAME: 'BAS_ITEM' },
      });
      break;
  }
@@ -352,11 +481,32 @@
    case 'BIZ_MES_WO':
      _formSchema = woformSchema;
      break;
    case 'BaseForm':
    case 'BAS_DEFECT_BaseForm':
      _formSchema = baseSchema;
      break;
    case 'BAS_DEFECT':
    case 'BAS_DEFECT_Search':
      _formSchema = searchSchema;
      break;
    case 'BAS_DEFECT_Crud':
      _formSchema = crudSchema;
      break;
    case 'BAS_REASON_BaseForm':
      _formSchema = rsnBaseSchema;
      break;
    case 'BAS_REASON_Search':
      _formSchema = rsnSearchSchema;
      break;
    case 'BAS_REASON_Crud':
      _formSchema = rsnCrudSchema;
      break;
    case 'BAS_PKG_DTL_BaseForm':
      _formSchema = pkgBaseSchema;
      break;
    case 'BAS_PKG_DTL_Search':
      _formSchema = pkgSearchSchema;
      break;
    case 'BAS_PKG_DTL_Crud':
      _formSchema = pkgCrudSchema;
      break;
    default:
      break;
@@ -375,7 +525,7 @@
    case 'BAS_DEFECT':
      data = defectBaseColumn;
      args[0].value[entityName] = getFormSchema(entityName);
      args[0].value['BaseForm'] = getFormSchema('BaseForm');
      args[0].value['BaseForm'] = getFormSchema('BAS_DEFECT_BaseForm');
      args[1].value = {
        BaseForm: args[4]({
          labelWidth: 120,
@@ -387,7 +537,13 @@
        }),
      };
      args[2].value = [
        { name: 'BaseForm', slots: [], preIcons: {}, title: '不良代码组信息' },
        {
          name: 'BaseForm',
          slots: [],
          preIcons: {},
          title: '不良代码组信息',
          entityName: 'BAS_DEFECT_GRP',
        },
        // {
        //   name: 'prodinfo',
        //   slots: ['addRot', 'setRot'],
@@ -397,8 +553,178 @@
        // { name: 'rotinfo', slots: ['add'], preIcons: { add: 'search|svg' }, title: '工艺信息' },
      ];
      break;
    case 'BAS_REASON':
      data = rsnBaseColumn;
      args[0].value['BaseForm'] = getFormSchema('BAS_REASON_BaseForm');
      args[1].value = {
        BaseForm: args[4]({
          labelWidth: 120,
          schemas: args[0].value['BaseForm'],
          actionColOptions: {
            span: 24,
          },
          showActionButtonGroup: false,
        }),
      };
      args[2].value = [
        {
          name: 'BaseForm',
          slots: [],
          preIcons: {},
          title: '不良原因组信息',
          entityName: 'BAS_REASON_GRP',
        },
      ];
      break;
    case 'BAS_PKG_DTL':
      data = pkgBaseColumn;
      args[0].value['BaseForm'] = getFormSchema('BAS_PKG_DTL_BaseForm');
      args[1].value = {
        BaseForm: args[4]({
          labelWidth: 120,
          schemas: args[0].value['BaseForm'],
          actionColOptions: {
            span: 24,
          },
          showActionButtonGroup: false,
        }),
      };
      args[2].value = [
        {
          name: 'BaseForm',
          slots: [],
          preIcons: {},
          title: '包装信息',
          entityName: 'BAS_PKG_RULE',
        },
      ];
      break;
    default:
      break;
  }
  return data;
}
/**
 * @description: 获取goback的url
 * @param {string} type
 * @return {*}
 */
export function getHomeUrl(type: string) {
  let url = '';
  switch (type) {
    case 'BAS_DEFECT':
      const param = { ID: 'BAS_DEFECT_GRP', colSlots: [], crudColSlots: [] };
      url = `/BAS_DEFECT_GRP/LC/${encodeURI(JSON.stringify(param))}`;
      break;
    case 'BAS_REASON':
      url = `/BAS_REASON_GRP/LC/${encodeURI(JSON.stringify({ ID: 'BAS_REASON_GRP', colSlots: [], crudColSlots: [] }))}`;
      break;
    case 'BAS_PKG_DTL':
      url = `/BAS_PKG_RULE/LC/${encodeURI(JSON.stringify({ ID: 'BAS_PKG_RULE', colSlots: [], crudColSlots: [] }))}`;
      break;
    case 'BAS_LABEL_VAR':
      url = `/BAS_LABEL_TEMP/LC/${encodeURI(JSON.stringify({ ID: 'BAS_LABEL_TEMP', colSlots: [], crudColSlots: [] }))}`;
      break;
    default:
      break;
  }
  return url;
}
/**
 * @description: 获取标题信息
 * @param {string} type
 * @return {*}
 */
export function getTitle(type: string) {
  let title = {};
  switch (type) {
    case 'BAS_DEFECT':
      title = {
        pageTitle: '不良代码组管理',
        pageContent: '这里可以添加和修改不良代码组和不良代码。',
        baseTableTitle: '不良代码管理',
      };
      break;
    case 'BAS_REASON':
      title = {
        pageTitle: '不良原因组管理',
        pageContent: '这里可以添加和修改不良原因组和不良代码。',
        baseTableTitle: '不良原因管理',
      };
      break;
    case 'BAS_PKG_DTL':
      title = {
        pageTitle: '包装规则管理',
        pageContent: '这里可以添加和修改包装规则和包装信息。',
        baseTableTitle: '包装信息管理',
      };
      break;
    default:
      break;
  }
  return title;
}
/**
 * @description: 获取需要新增时就默认的值,一般是主表信息
 * @param {string} type
 * @param {string} val
 * @return {*}
 */
export function getOthersValues(type: string, val: string, id: string) {
  let Values = {};
  switch (type) {
    case 'BAS_DEFECT':
      Values = { DFTG_CODE: val };
      break;
    case 'BAS_REASON':
      Values = { RSNG_CODE: val };
      break;
    case 'BAS_PKG_DTL':
      Values = { PKG_RULE_ID: id };
      break;
    default:
      break;
  }
  return Values;
}
/**
 * @description: 获取树形数据
 * @param {string} type
 * @return {*}
 */
export async function fetchTreeData(type: string) {
  let data = { title: '', treeData: [] as any[], fieldNames: {} };
  switch (type) {
    case 'Customer':
      let prodTreeData = await GetRoutePTree('K5019AA013517');
      data.treeData = convertToTree(prodTreeData, 'pid', 'id', 'root');
      data.title = '工艺路线';
      data.fieldNames = { key: 'id', title: 'name' }
      break;
    case 'BAS_PKG_DTL':
      break;
    default:
      break;
  }
  return data;
}
/**
 * @description: 根据type获取图标
 * @param {Recordable} params
 * @param {string} type
 * @return {*}
 */
export function createIconByType(params: Recordable<any>, type: string) {
  let icon = '';
  switch (type) {
    case 'Customer':
      icon = prodRouteCreateIcon(params);
      break;
  }
  return icon;
}