Ben Lin
2024-10-16 1b419ccf217dbcace15987f1c0fe26b9e15d1d4b
src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts
@@ -4,7 +4,7 @@
 * @version:
 * @Date: 2024-06-19 20:34:27
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-09-25 15:08:58
 * @LastEditTime: 2024-10-16 00:10:37
 */
import { Ref, h, ref, render, unref } from 'vue';
@@ -13,6 +13,7 @@
  GetRoutePTree,
  RouteToCust,
  RouteToProd,
  SetDefaultRoute,
} from '/@/api/tigerapi/mes/router';
import { GetEnum, SaveEntity, convertToTree, getEntity } from '/@/api/tigerapi/system';
import { useLocale } from '/@/locales/useLocale';
@@ -28,10 +29,15 @@
import { ContextMenuItem } from '/@/components/TigerTree';
import { useForm } from '/@/components/Form';
import { mesApi } from '/@/api/tigerapi/mes/mesApi';
import { BAS_LABEL_VAR_WO, MesRotTree } from '/@/api/tigerapi/model/mesModel';
import { buildUUID } from '/@/utils/uuid';
import { AddOrEditLabelVarByWorkOrder } from '/@/api/tigerapi/mes/wo';
import { useProdRouteStore } from '/@/store/modules/prodRoute';
const { t } = useI18n();
const { createErrorModal } = useMessage();
const { getLocale } = useLocale();
const useProdRoute = useProdRouteStore();
function _default() {
  /* 定义变量 */
  const isNormal = (type: number) => type === 0;
@@ -76,8 +82,8 @@
     * @description: 高级表单和详情页面返回主页面的url
     * @return {*}
     */
    GetHomeUrl: () => {
      return `/V_BAS_PROD_R/LC/${encodeURI(JSON.stringify({ ID: 'V_BAS_PROD_R', colSlots: [], crudColSlots: [] }))}`;
    GetHomeUrl: (params) => {
      return `/V_BAS_PROD_R/LC/${encodeURI(JSON.stringify({ ID: 'V_BAS_PROD_R', colSlots: [], crudColSlots: [], sName: params['sName'] }))}`;
    },
    /**
     * @description: 获取树形数据
@@ -86,19 +92,17 @@
     */
    fetchTreeData: async (type: string, itemCode: string) => {
      let data = { title: '', treeData: [] as any[], fieldNames: {} };
      let prodTreeData = await GetRoutePTree({
      let prodTreeData = (await GetRoutePTree({
        prodCode: itemCode,
        orgCode: useUserStore().getUserInfo.orgCode,
      });
      // let uniqueArr = prodTreeData.reduce((acc, current) => {
      //   if (!acc.some((x) => x.pid == current.pid && x.id == current.id && x.seq == current.seq && x.type == current.type)) {
      //     acc.push(current);
      //   }
      //   return acc;
      // }, [] as V_MES_ROUTE_PTREE[]);
      data.treeData = convertToTree(prodTreeData, 'pid', 'tid', 'root');
      })) as unknown as MesRotTree[];
      let _treeData = convertToTree(prodTreeData, 'pid', 'tid', 'root');
      data.title = '工艺路线';
      data.fieldNames = { key: 'tid', title: 'name' };
      /* 保存工艺树形数据到状态管理 */
      useProdRoute.setCurProdRotTree(_treeData as unknown as MesRotTree[]);
      useProdRoute.setItemCode(itemCode);
      data.treeData = useProdRoute.getCurProdRotTree;
      return data;
    },
    /**
@@ -302,6 +306,7 @@
    /**
     * @description: 弹出选择框打开方法
     * @param {Fn} openItemModal
     * @param {array} args
     * @return {*}
     */
    OpenSelectItem: (openItemModal: Fn, ...args) => {
@@ -360,6 +365,7 @@
     * @description: 弹出选择框选择成功返回
     * @param {*} d
     * @param {*} u
     * @param {array} args
     * @return {*}
     */
    GetSelectSuccess: async (d, u, ...args) => {
@@ -474,7 +480,7 @@
      };
    },
    /**
     * @description: 获取模态框应用列表
     * @description: 获取在增删改表单中的模态框应用列表
     * @return {*}
     */
    GetUseCrudModals: () => {
@@ -548,6 +554,10 @@
        }),
      };
    },
    /**
     * @description: 获取行为或者节点的配置表单结构,使用useForm()
     * @return {*}
     */
    GetUseForm: () => {
      return {
        Action: useForm({
@@ -585,6 +595,7 @@
    /**
     * @description: 获取标题信息
     * @param {string} type
     * @param {*} item
     * @return {*}
     */
    GetTitle: (type: string, item) => {
@@ -600,6 +611,8 @@
     * @return {*}
     */
    SelectNode: (selectedNodes: Ref<any[]>) => {
      /* 保存当前选择的节点数据到状态管理 */
      useProdRoute.setCurSelectedNodes(selectedNodes.value);
      let result = {
        showConfig: false,
        showNav: false,
@@ -618,16 +631,13 @@
      if (selectedNodes.value[0].type == 'Action' || selectedNodes.value[0].type == 'Node') {
        result.showNav = false;
        result.showConfig = true;
        if (selectedNodes.value[0].type == 'Action') {
          result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false };
        } else {
          result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false };
        }
        result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false };
      }
      return result;
    },
    /**
     * @description: 获取导航项
     * @param {string} type
     * @return {*}
     */
    GetNavItems: (type: string) => {
@@ -642,6 +652,7 @@
              url: '/addRoute',
              action: 'addRoute',
              isStep: false,
              isCustEl: false,
            },
            {
              title: '添加客户工艺路线',
@@ -650,18 +661,29 @@
              url: '/addCustomer',
              action: 'addCustomer',
              isStep: true,
              isCustEl: false,
            },
          ];
          break;
        case 'Route':
          item = [
            {
              title: '编辑工艺路线',
              icon: 'clarity:note-edit-line',
              title: '编辑工艺路线', //标题
              icon: 'clarity:note-edit-line', //图标
              color: '#1fdaca', //字体颜色
              url: '/editRoute', //导航地址
              action: 'editRoute', //导航执行的方法,如果按这个action来执行,上面的url就无效
              isStep: false, //是否是步骤
              isCustEl: false, //是否是自定义html内容
            },
            {
              title: '设置默认工艺路线',
              icon: '',
              color: '#1fdaca',
              url: '/editRoute',
              action: 'editRoute',
              url: '',
              action: '',
              isStep: false,
              isCustEl: true,
            },
          ];
          break;
@@ -671,12 +693,15 @@
    /**
     * @description: 导航页面切换按钮时调用方法
     * @param {any} action
     * @param {array} args
     * @return {*}
     */
    navChangeItem: (action: any, ...args) => {
      const openRvModal = args[1];
      const openModal = args[0];
      switch (action) {
        case 'addRoute':
          args[0](true, {
          openModal(true, {
            title: '工艺路线列表',
            schemas: [
              {
@@ -712,12 +737,12 @@
          });
          break;
        case 'addCustomer':
          args[0](true, {
          openModal(true, {
            title: '请完成以下步骤',
          });
          break;
        case 'editRoute':
          args[1](true, {
          openRvModal(true, {
            rotId: args[2][0].id,
            slotName: '',
            prodCode: args[3],
@@ -791,12 +816,13 @@
              param.data.value['BAS_PKG_DTL'].map((x) => {
                if (x.PKG_CODE == param.values['PKG_CODE']) {
                  x.LABEL_CODE = param.values['LABEL_CODE'];
                  x.LABEL_ID =  param.values['LABEL_CODE'];
                  x.LABEL_ID = param.values['LABEL_CODE'];
                }
              });
              param.data.value['Action'][0]['OPTION_1'] = JSON.stringify(
                param.data.value['BAS_PKG_DTL'],
              );
              resolve('OK');
              break;
            case 'ItemCode':
              param.data.value['ItemCode'].map((x) => {
@@ -808,13 +834,20 @@
              param.data.value['Action'][0]['OPTION_1'] = JSON.stringify(
                param.data.value['ItemCode'],
              );
              resolve('OK');
              break;
            case 'BAS_LABEL_VAR_WO':
              param.values['WORK_ORDER'] = param.others['WORK_ORDER'];
              param.values['ID'] = buildUUID();
              await AddOrEditLabelVarByWorkOrder(param.values as unknown as BAS_LABEL_VAR_WO);
              var action = await AddOrEditLabelVarByWorkOrder(
                param.values as unknown as BAS_LABEL_VAR_WO,
              );
              resolve(action);
            case 'isDefault':
              /* 设置默认工艺路线 */
              var action = await useProdRoute.setDefaulRoute(param);
              resolve(action);
          }
          resolve('OK');
        } catch (e) {
          reject(e);
        }
@@ -1753,7 +1786,6 @@
    ] as FormSchema[],
  };
  /**
   * @description: 模板维护
   * @param {*} args
@@ -1762,7 +1794,8 @@
   */
  function handleTemplate(args, params: Recordable) {
    const openCrudModal = args[0];
    const OrderNo = args[2];
    // const OrderNo = args[2];
    const ProdCode = args[2];
    openCrudModal(true, {
      isUpdate: true, //是否更新操作
      entityName: 'ProdRouteBinding', //是哪个页面
@@ -1771,20 +1804,14 @@
      width: '1024px', //弹出框宽度
      ItemColumns: TemplateBasColumn, //弹出框中表格字段结构
      schemas: [], //查询条件字段结构
      others: { WORK_ORDER: OrderNo }, //需要带到弹出窗口中的数据
      others: { WORK_ORDER: '', PROD_CODE: ProdCode }, //需要带到弹出窗口中的数据
      searchInfo: {
        TABLE_NAME: 'BAS_LABEL_VAR_WO', //实体名称
        LabelId: params['record'].LABEL_ID, //模板ID
        WorkOrder: OrderNo, //工单号
        WorkOrder: '', //工单号
        ProdCode: ProdCode,
        CustCode: '',
        apiUrl: mesApi.GetLabelVarByWorkOrder, //自定义获取数据分页的api,不用默认的基础方法
        // sqlcmd: ` (WORK_ORDER = '${OrderNo}' OR WORK_ORDER = '' OR WORK_ORDER IS NULL)`,
        // option:
        // {
        //   //根据据点查询,必需带这个参数
        //   UserId: useUserStore().getUserInfo.userId,
        //   ByOrg: true,
        //   CurOrg: useUserStore().getUserInfo.orgCode,
        // },
      },
      values: params['record'], //表单记录
    });