Ben Lin
2024-06-23 8cfe56d782e4f8cddf0fa8f0cff84a5b4034aa3d
src/views/tigerprojects/system/lowcode/data.ts
@@ -32,28 +32,17 @@
 */
import {
  dftGrpOpenSelectItem,
  dftGrpGetSelectSuccess,
  dftGrpactionColumn,
  baseSchema,
  DftGrpEdit,
  searchSchema,
  defectBaseColumn,
  crudSchema,
  DftGrpDel,
  dftEditeOperation,
} from './normal/basDefectGrp';
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';
@@ -62,28 +51,14 @@
import { woCustFn, woformSchema } from '/@/views/components/bizMesWo';
import { useModal } from '/@/components/Modal';
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,如增加按钮及方法
 * 攻略:
@@ -101,141 +76,8 @@
 * @param {array} args
 * @return {*}
 */
export function GetActionsData(params: {}, ...args: Fn[]) {
  let data = [
    {
      icon: 'clarity:note-edit-line',
      onClick: editRecord.bind(null, args[0], params),
    },
    {
      icon: 'ant-design:delete-outlined',
      color: 'error',
      popConfirm: {
        title: '是否确认删除?',
        placement: 'left',
        confirm: deleteRecord.bind(null, args[1], params),
      },
    },
  ] as ActionItem[];
  switch (params['entityName']) {
    /* 不良代码组 */
    case 'BAS_DEFECT_GRP':
      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 = [...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);
  }
}
/**
 * @description: 获取新增按钮的行为
 * @param {string} type
 * @return {*}
 */
export function getCreateAction(type: string) {
  let data = { action: 'drawer', url: '', params: {} }; //drawer(打开左侧抽屉框) | go(跳转到新的页面)
  switch (type) {
    case 'BAS_DEFECT_GRP':
      data.action = 'go';
      data.url = 'BAS_DEFECT/High';
      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;
  }
export function GetActionsData(params: {}, ...args) {
  let data = [] as ActionItem[];
  return data;
}
@@ -252,147 +94,6 @@
      break;
  }
  return data;
}
/**
 * @description: 公用编辑方法
 * @param {Fn} fn
 * @param {*} params
 * @return {*}
 */
function editRecord(fn: Fn, params: {}) {
  fn(true, params);
}
/**
 * @description: 公用删除方法
 * @param {Fn} fn
 * @param {*} params
 * @return {*}
 */
function deleteRecord(fn: Fn, params: {}) {
  console.log(params['record']);
  //删除
  DeleteEntity(params['record'], params['entityName']).then((action) => {
    if (action.IsSuccessed) {
      fn();
    }
  });
}
/**
 * @description: 获取操作列样式方法
 * @param {string} entityName
 * @return {*}
 */
export function GetActionColumn(entityName: string) {
  let data: BasicColumn = {};
  switch (entityName) {
    case 'BAS_DEFECT_GRP':
      data = dftGrpactionColumn;
      break;
    case 'BAS_LABEL_TEMP':
      data = {
        width: 120,
        title: '操作',
        dataIndex: 'action',
        slots: { customRender: 'action' },
        fixed: 'right',
      };
      break;
    default:
      data = {
        width: 80,
        title: '操作',
        dataIndex: 'action',
        slots: { customRender: 'action' },
        fixed: undefined,
      };
      break;
  }
  return data;
}
/**
 * @description: 打开弹出选择框选择成功后返回方法
 * @param {*} d
 * @param {*} u
 * @param {string} entityName
 * @return {*}
 */
export function GetSelectSuccess(d, u, entityName: string) {
  let data = {};
  switch (entityName) {
    case 'BAS_DEFECT_GRP':
      data = dftGrpGetSelectSuccess(d, u);
      break;
    case 'BAS_REASON_GRP':
      data = rsGrpGetSelectSuccess(d, u);
      break;
    case 'BAS_LABEL_PV':
      data = labelGetSelectSuccess(d, u);
      break;
    default:
      data = {
        ITEM_CODE: d.values['val'],
      };
      break;
  }
  return data;
}
/**
 * @description: 打开弹出选择框
 * @param {Fn} openItemModal
 * @param {string} entityName
 * @return {*}
 */
export function OpenSelectItem(openItemModal: Fn, entityName: string) {
  switch (entityName) {
    case 'BAS_DEFECT_GRP':
      dftGrpOpenSelectItem(openItemModal);
      break;
    case 'BAS_REASON_GRP':
      rsGrpOpenSelectItem(openItemModal);
      break;
    case 'BAS_LABEL_PV':
      labelOpenSelectItem(openItemModal);
      break;
    default:
      openItemModal(true, {
        title: '物料列表',
        schemas: [
          {
            field: 'ITEM_CODE',
            component: 'Input',
            label: '物料编码',
            colProps: {
              span: 12,
            },
          },
        ],
        ItemColumns: [
          {
            title: t('物料编码'),
            dataIndex: 'ITEM_CODE',
            resizable: true,
            sorter: true,
            width: 200,
          },
          {
            title: t('物料名称'),
            dataIndex: 'ITEM_NAME',
            resizable: true,
            sorter: true,
            width: 180,
          },
        ],
        tableName: 'BAS_ITEM',
        rowKey: 'ITEM_CODE',
        searchInfo: { TABLE_NAME: 'BAS_ITEM' },
      });
      break;
  }
}
/**
@@ -606,36 +307,6 @@
}
/**
 * @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;
    case 'ProdRouteBinding':
      url = `/MaterialInfo`;
      break;
    default:
      break;
  }
  return url;
}
/**
 * @description: 获取标题信息
 * @param {string} type
 * @return {*}
@@ -692,42 +363,4 @@
      break;
  }
  return Values;
}
/**
 * @description: 获取树形数据
 * @param {string} type
 * @return {*}
 */
export async function fetchTreeData(type: string, itemCode: string) {
  let data = { title: '', treeData: [] as any[], fieldNames: {} };
  switch (type) {
    case 'ProdRouteBinding':
      let prodTreeData = await GetRoutePTree(itemCode);
      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 'ProdRouteBinding':
      icon = prodRouteCreateIcon(params);
      break;
  }
  return icon;
}