Ben Lin
2024-06-27 b4496ad2462843c575a3902c94a87694426f29a3
src/views/tigerprojects/system/lowcode/data.ts
@@ -1,79 +1,38 @@
/*
 * @Description: 通用低代码呈现页面主数据
 * @Author: Ben Lin
 * @version:
 * @version:
 * @Date: 2024-06-02 17:52:35
 * @LastEditors: your name
 * @LastEditTime: 2024-06-13 22:44:43
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-06-26 22:23:12
 */
import { ref } from 'vue';
import {
  DftGrpRelease,
  dftGrpActionItem,
  dftGrpOpenSelectItem,
  dftGrpGetSelectSuccess,
  dftGrpactionColumn,
} from './normal/basDefectGrp';
import { onChangeFns, rsGrpGetSelectSuccess, rsGrpOpenSelectItem } from './normal/basReasonGrp';
import { DeleteEntity } 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 { useGo } from '/@/hooks/web/usePage';
import { goDetail, labelActionItem, labelGetSelectSuccess, labelOpenSelectItem } from './detail/basLabelVar';
const { t } = useI18n();
/**
 * @description: 低代码页面获取操作字段结构Json,如增加按钮及方法
 * 攻略:
 *  1. 另新建驼峰实体名.ts的文件,如:BAS_REASON.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 {*}
 */
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':
      const _d = dftGrpActionItem;
      _d[0].onClick = DftGrpRelease.bind(null, args, params);
      data = [...data, ..._d];
      params.cType.value = 'BIZ_MES_WO';
      params.formSchemas.value[params.cType.value] = getFormSchema(params.cType.value);
      params.useFormData.value = {
        forminfo: args[3]({
          labelWidth: 120,
          schemas: params.formSchemas.value[params.cType.value],
          actionColOptions: {
            span: 24,
          },
          showActionButtonGroup: false,
        }),
      };
      break;
      /* 标签模板 */
    case 'BAS_LABEL_TEMP':
      const _data = labelActionItem;
      _data[0].onClick = goDetail.bind(null, args[5], params['record'])
      data = [...data, ..._data];
      break;
  }
export function GetActionsData(params: {}, ...args) {
  let data = [] as ActionItem[];
  return data;
}
@@ -93,137 +52,6 @@
}
/**
 * @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();
    }
  });
}
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;
}
/* 弹出选择框选择成功 */
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',
      });
      break;
  }
}
/**
 * @description: Select 自定义onChange方法
 * @param {any} e
 * @param {string} fnName
@@ -234,14 +62,14 @@
  if (!isNullOrEmpty(fnName)) {
    switch (entityName) {
      case 'BAS_REASON':
        onChangeFns[fnName](e);
        // onChangeFns[fnName](e);
        break;
      default:
        break;
        (e) => { };
        (e) => {};
    }
  } else {
    (e) => { };
    (e) => {};
  }
}
@@ -292,6 +120,7 @@
        ],
        tableName: 'BAS_ITEM',
        rowKey: 'ITEM_CODE',
        searchInfo: { TABLE_NAME: 'BAS_ITEM' },
      });
      break;
  }
@@ -308,18 +137,8 @@
    case 'BIZ_MES_WO':
      _formSchema = woformSchema;
      break;
    // case 'woinfo':
    //   _formSchema = woCfgformSchema;
    //   break;
    // case 'prodinfo':
    //   _formSchema = prodCfgformSchema;
    //   break;
    // case 'xxinfo':
    //   _formSchema = xxCfgformSchema;
    // break;
    default:
      break;
      (e) => { };
  }
  return _formSchema;
}