Ben Lin
2024-11-25 6e6fec028ffc9a27b3c8d30eb484cd361a119d76
src/views/tigerprojects/system/lowcode/entityts/BAS_LABEL_VAR.ts
@@ -4,24 +4,34 @@
 * @version:
 * @Date: 2024-06-19 20:34:27
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-07-27 13:22:30
 * @LastEditTime: 2024-10-22 11:40:44
 */
import { Tag, Tooltip } from 'ant-design-vue';
import { ActionItem, BasicColumn, FormSchema, useTable } from '/@/components/Table';
import { useI18n } from '/@/hooks/web/useI18n';
import { h, Ref, unref } from 'vue';
import { h, ref, Ref, unref } from 'vue';
import { AddAfterDelete, getEntity, GetEnum } from '/@/api/tigerapi/system';
import { useLocale } from '/@/locales/useLocale';
import { useDrawer } from '/@/components/Drawer';
import { formatTime } from '/@/utils/dateUtil';
import { Search } from '../data';
import { custDel, EditOperation, Search } from '../data';
import { buildUUID } from '/@/utils/uuid';
import { CustModalParams, FunctionType } from '/@/api/tigerapi/model/systemModel';
import { useModal } from '/@/components/Modal';
import { SaveLabelTemplate } from '/@/api/tigerapi/mes/label';
import {
  BAS_LABEL_TEMP,
  BAS_LABEL_VAR,
  BAS_LABEL_VAR_WO,
  BasLabelTempInput,
} from '/@/api/tigerapi/model/mesModel';
import { useUserStore } from '/@/store/modules/user';
import { cloneDeep } from 'lodash-es';
const { getLocale } = useLocale();
const { t } = useI18n();
let newRow = {};
function _default() {
  const ActionColumn: BasicColumn = {
    width: 80,
@@ -40,39 +50,54 @@
     * @description: 获取新增按钮的行为,必需要有的方法
     * @return {*}
     */
    CreateAction: (fnName: string) => {
      return {
        action: 'drawer', //drawer(打开左侧抽屉框) | go(跳转到新的页面)
      };
    CreateAction: (type: string) => {
      let action = {} as any;
      switch (type) {
        case 'BAS_LABEL_VAR':
        case 'BAS_LABEL_VAR_WO':
          action = {
            action: 'edit', //drawer(打开左侧抽屉框) | go(跳转到新的页面) | edit(如果是表格可编辑页面就是自定义方法)
          };
          break;
      }
      return action;
    },
    /**
     * @description: 产品绑定工艺路线操作字段自定义按钮,必需要有的方法
     * @description: 操作字段自定义按钮,必需要有的方法
     * @return {*}
     */
    ActionItem: (params: Recordable<any>, data, ...args): ActionItem[] => {
      data.map((x) => {
        if (x.name == 'Delete') {
          x.popConfirm.confirm = custDel.bind(null, args, params);
          x.tooltip = '删除';
        }
      });
      return data;
    },
    /**
     * @description: 高级表单和详情页面返回主页面的url
     * @return {*}
     */
    GetHomeUrl: () => {
      return `/BAS_LABEL_TEMP/LC/${encodeURI(JSON.stringify({ ID: 'BAS_LABEL_TEMP', colSlots: [], crudColSlots: [] }))}`;
    GetHomeUrl: (params: {}) => {
      return `/BAS_LABEL_TEMP/LC/${encodeURI(JSON.stringify({ ID: 'BAS_LABEL_TEMP', colSlots: params['colSlots'], crudColSlots: [] }))}`;
    },
    /**
     * @description: 获取主信息
     * @return {*}
     */
    GetBaseForm: () => {
    GetBaseForm: (type, ...args) => {
      return [
        {
          field: 'LABEL_CODE',
          label: '标签模板编码',
          component: 'Input',
          required: true,
          isexist: 'Y',
          colProps: {
            span: 8,
          },
          dynamicDisabled: true,
        },
        {
          label: '标签模板名称',
@@ -99,20 +124,93 @@
            valueField: 'Value',
          },
        },
        // {
        //   field: 'TEMP_PATH',
        //   label: '标签模板相对路径',
        //   component: 'Upload',
        //   isexist: 'N',
        //   show: true,
        //   required: true,
        //   colProps: {
        //     span: 8,
        //   },
        //   componentProps: ({ formModel }) => {
        //     return {
        //       resultField: 'data3.url',
        //       multiple: false,
        //       uploadParams: { entityName: type },
        //       api: (file, progress) => {
        //         console.log(formModel);
        //         return new Promise((resolve) => {
        //           uploadApi(file, progress).then((uploadApiResponse) => {
        //             const webSocketStore = useWebSocketStore();
        //             if (webSocketStore.GetSocketState == 1) {
        //               webSocketStore.sendMessage(
        //                 `wsSubStrings ${formModel['ID']}_#_${uploadApiResponse.data.url}`,
        //               );
        //             }
        //             resolve({
        //               code: 200,
        //               data3: {
        //                 url: uploadApiResponse.data.url,
        //               },
        //             });
        //           });
        //         });
        //       },
        //     };
        //   },
        // },
        {
          field: 'TEMP_PATH',
          label: '标签模板相对路径',
          component: 'Upload',
          field: 'PROD_CODE',
          label: '产品编码',
          component: 'Input',
          isexist: 'N',
          show: true,
          required: true,
          // required: true,
          colProps: {
            span: 7,
          },
        },
        {
          field: 'BAS_LABEL_VAR1PSelect_0', //按低代码配置的规则,实体名+序号+PSelect_0,序号用来区分多个的时候,PSelect_0这是个固定后缀
          label: '1',
          defaultValue: 'BAS_LABEL_VAR',
          component: 'Input',
          colProps: { span: 1 },
          colSlot: 'BAS_LABEL_VAR1add', //按低代码配置的规则,实体名+序号+add,序号用来区分多个的时候,add这是个固定后缀
        },
        {
          field: 'CUST_CODE',
          label: '客户编码',
          component: 'Input',
          isexist: 'N',
          show: true,
          // required: true,
          colProps: {
            span: 7,
          },
        },
        {
          field: 'BAS_LABEL_VAR2PSelect_0', //按低代码配置的规则,实体名+序号+PSelect_0,序号用来区分多个的时候,PSelect_0这是个固定后缀
          label: '1',
          defaultValue: 'BAS_CUSTOMER',
          component: 'Input',
          colProps: { span: 1 },
          colSlot: 'BAS_LABEL_VAR2add', //按低代码配置的规则,实体名+序号+add,序号用来区分多个的时候,add这是个固定后缀
        },
        {
          label: '备注',
          field: 'REMARK',
          component: 'Input',
          colProps: {
            span: 8,
          },
        },
        {
          label: '备注',
          field: 'REMARK',
          label: '标签模板相对路径',
          field: 'TEMP_PATH',
          required: true,
          component: 'Input',
          colProps: {
            span: 16,
@@ -129,8 +227,26 @@
        },
      ];
    },
    GetBaseColumns: () => {
      return [];
    /**
     * @description: 弹出选择框成功返回赋值方法
     * @param {*} d
     * @param {*} u
     * @return {*}
     */
    GetSelectSuccess: (d, u) => {
      return {
        PROD_CODE: d.values['val'],
      };
    },
    /**
     * @description: 获取模态框应用列表
     * @return {*}
     */
    GetUseModals: () => {
      return {
        BAS_LABEL_VAR1add: useModal(),
        BAS_LABEL_VAR2add: useModal(),
      };
    },
    GetSearchForm: () => {
      return [
@@ -223,6 +339,29 @@
        },
      ];
    },
    /**
     * @description: 获取新增行的数据
     * @param {string} type
     * @return {*}
     */
    GetNewRow: (type: string) => {
      let values = {};
      switch (type) {
        case 'BAS_LABEL_VAR':
          values = {
            VAR_NAME: '',
            VAR_TYPE: '',
            VAR_VALUE: '',
            BARCODE_RULE: '',
            REMARK: '',
          };
          break;
        case 'BAS_LABEL_VAR_WO':
          values = newRow;
          break;
      }
      return values;
    },
    KeyFieldValues: (val: string, id: string) => {
      return { LABEL_ID: id };
    },
@@ -240,7 +379,7 @@
        pageContent: '这里可以添加和修改模板和模板变量及工单模板变量。',
        tableTitle: {
          BAS_LABEL_VAR: '模板变量管理',
          MES_SHIFT_PRD: '时段管理',
          BAS_LABEL_VAR_WO: '工单模板变量管理',
        },
      };
    },
@@ -251,7 +390,7 @@
    GetBaseCards: (type: string) => {
      return [
        {
          name: 'BaseForm',
          name: 'BaseForm', //第一个卡片名称必需是BaseForm
          slots: [],
          preIcons: {},
          title: '模板信息',
@@ -268,27 +407,109 @@
        {
          BAS_LABEL_VAR: useDrawer(),
        },
        // { MES_SHIFT_PRD: useDrawer() },
        // { BAS_LABEL_VAR_WO: useDrawer() },
      ];
    } /**
    },
    /**
     * @description: 获取表格use列表
     * @param {string} type
     * @param {array} args
     * @return {*}
     */,
     */
    GetUseTables: (data: Ref<{}>, ...args) => {
      // _data = data;
      return {
        BAS_LABEL_VAR: useTable({
          title: '列表信息',
          dataSource: data.value['BAS_LABEL_VAR'],
          columns: baseColumns['BAS_LABEL_VAR'],
          maxHeight: 560,
          columns: GetBaseColumns('BAS_LABEL_VAR', args[0], data),
          maxHeight: 520,
          formConfig: {
            labelWidth: 140,
            schemas: searchForms['BAS_LABEL_VAR'],
            submitFunc: () => Search('BAS_LABEL_VAR', data, args[0]), //自定义查询提交按钮的方法,触发查询提交事件
          },
          useSearchForm: false,
          showTableSetting: false,
          bordered: true,
          canResize: true,
          showIndexColumn: false,
          // rowSelection: {
          //   type: 'radio', //'checkbox'
          // },
          actionColumn: {
            width: 130,
            title: '操作',
            dataIndex: 'action',
            slots: { customRender: 'action' },
            fixed: 'right',
          }, //自定义操作列
        }),
        BAS_LABEL_VAR_WO: useTable({
          title: '列表信息',
          dataSource: data.value['BAS_LABEL_VAR_WO'],
          columns: GetBaseColumns('BAS_LABEL_VAR_WO', args[0], data),
          scroll: { y: 500 },
          formConfig: {
            labelWidth: 140,
            schemas: searchForms['BAS_LABEL_VAR_WO'],
            submitFunc: () => Search('BAS_LABEL_VAR_WO', data, args[0]), //自定义查询提交按钮的方法,触发查询提交事件
          },
          useSearchForm: false,
          showTableSetting: false,
          bordered: true,
          canResize: false,
          showIndexColumn: false,
          actionColumn: {
            width: 130,
            title: '操作',
            dataIndex: 'action',
            slots: { customRender: 'action' },
            fixed: 'right',
          }, //自定义操作列
        }),
      };
    },
    /**
     * @description: 自定义初始化方法
     * @param {Ref} data
     * @param {Ref} keyFieldValues
     * @param {string} type
     * @param {any} useTables
     * @return {*}
     */
    CustInitData: (data: Ref<any[]>, keyFieldValues: Ref<{}>, type: string, useTables: any) => {
      if (type == 'BAS_LABEL_VAR_WO') {
        if (data.value['BAS_LABEL_VAR_WO'].length > 0) {
          /* 初始化数据,行转列 */
          let varwos: any[] = [];
          const map = new Map<string, any>();
          data.value['BAS_LABEL_VAR_WO'].map((curr) => {
            if (!map.has(curr.WORK_ORDER)) {
              const newObj = {};
              newObj['WORK_ORDER'] = curr.WORK_ORDER;
              map.set(curr.WORK_ORDER, newObj);
            }
            const acc = map.get(curr.WORK_ORDER);
            Object.keys(curr).forEach((key) => {
              if (key != 'VAR_NAME' && key != 'VAR_VALUE') {
                acc[key] = curr[key];
              } else if (key == 'VAR_NAME') {
                acc[`DEFAULT_VALUE_${curr.VAR_NAME}`] = curr.DEFAULT_VALUE;
                acc[`VAR_N_${curr.VAR_NAME}`] = curr.VAR_VALUE;
              }
            });
            // varwos.push(acc);
          });
          map.forEach((x) => {
            varwos.push(x);
          });
          data.value['BAS_LABEL_VAR_WO'] = varwos;
        }
        useTables[type][1].setProps({
          dataSource: data.value['BAS_LABEL_VAR_WO'],
          columns: GetBaseColumns('BAS_LABEL_VAR_WO', null, data),
          scroll: { y: 500 },
          useSearchForm: false,
          showTableSetting: false,
          bordered: true,
@@ -300,42 +521,44 @@
            dataIndex: 'action',
            slots: { customRender: 'action' },
            fixed: 'right',
          }, //自定义操作列
        }),
        //  MES_SHIFT_PRD: useTable({
        //    title: '列表信息',
        //    dataSource: data.value['MES_SHIFT_PRD'],
        //    columns: baseColumns['MES_SHIFT_PRD'],
        //    maxHeight: 550,
        //    formConfig: {
        //      labelWidth: 140,
        //      schemas: searchForms['MES_SHIFT_PRD'],
        //      submitFunc: () => Search('MES_SHIFT_PRD', data, args[0]), //自定义查询提交按钮的方法,触发查询提交事件
        //    },
        //    useSearchForm: false,
        //    showTableSetting: false,
        //    bordered: true,
        //    canResize: false,
        //    showIndexColumn: false,
        //    actionColumn: {
        //      width: 130,
        //      title: '操作',
        //      dataIndex: 'action',
        //      slots: { customRender: 'action' },
        //      fixed: 'right',
        //    }, //自定义操作列
        //  }),
      };
          },
        });
        useTables[type][1].reload();
      }
    },
    /**
     * @description: 提交所有
     * @return {*}
     */
    SubmitAll: (data: Ref<any[]>, keyFieldValues: Ref<{}>, ...args) => {
      const drawers = [
        { name: 'BAS_LABEL_VAR', code: 'LABEL_ID', type: 'one', keyName: 'BAS_LABEL_VAR', order: 'VAR_NAME' },
        // { name: 'MES_SHIFT_PRD', code: 'SFT_CODE', type: 'all', keyName: 'MES_SHIFT', order: '' },
      ];
      const cancel = args[0];
      const drawers = args[1];
      const label = args[2]['BaseForm'];
      // const input: BasLabelTempInput ={
      //   Label: undefined,
      //   LabelVar: undefined,
      //   LabelVarWo: undefined
      // };
      const input: BasLabelTempInput = {
        Label: {
          ID: buildUUID(),
          CREATE_USER: useUserStore().getUserInfo.userId as string,
          UPDATE_USER: useUserStore().getUserInfo.userId as string,
          GHOST_ROW: false,
          AUTH_ORG: useUserStore().getUserInfo.orgCode,
          AUTH_PROD: useUserStore().getUserInfo.prodCode,
          AUTH_WH: '',
          LABEL_CODE: label.LABEL_CODE,
          LABEL_NAME: label.LABEL_NAME,
          TEMP_TYPE: label.TEMP_TYPE,
          TEMP_PATH: label.TEMP_PATH,
          CUST_CODE: label.CUST_CODE,
          PROD_CODE: label.PROD_CODE,
          REMARK: '',
        } as unknown as BAS_LABEL_TEMP,
        LabelVars: [] as unknown as BAS_LABEL_VAR[],
        LabelVarWos: [] as unknown as BAS_LABEL_VAR_WO[],
      };
      drawers.forEach((d) => {
        let where = `${d['code']} = '${keyFieldValues.value[d['code']]}'`;
        /* type: all-表示需要code的所有的值 */
@@ -344,32 +567,196 @@
        }
        data.value[d['name']].map((item) => {
          item.ID = buildUUID();
          // if (d['name'] == 'MES_SHIFT') {
          //   item.SFT_BEGIN = tsToHHmm(item.SFT_BEGIN);
          //   item.SFT_END = tsToHHmm(item.SFT_END);
          // }
          // if (d['name'] == 'MES_SHIFT_PRD') {
          //   item.PRD_BEGIN = tsToHHmm(item.PRD_BEGIN);
          //   item.PRD_END = tsToHHmm(item.PRD_END);
          // }
        });
        AddAfterDelete(d['name'], data.value[d['name']], where).then((action) => {
          if (action.IsSuccessed) {
            args[0]();
          }
        });
        if (d.name == 'BAS_LABEL_VAR') {
          input.LabelVars = data.value[d['name']];
        }
        if (d.name == 'BAS_LABEL_VAR_WO') {
          let varwos: any[] = [];
          data.value[d['name']].map((curr) => {
            const vKeys: any[] = [];
            Object.keys(curr).forEach((key) => {
              if (key.startsWith('VAR_N_')) {
                vKeys.push(key);
              }
              // if (key.startsWith('VAR_N_')) {
              //   acc['VAR_NAME'] = key.replace('VAR_N_', '');
              //   acc['VAR_VALUE'] = curr[key];
              // } else if (key.startsWith('DEFAULT_VALUE_')) {
              //   acc['DEFAULT_VALUE'] = curr[key]; acc[key] = curr[key];
              // }
            });
            vKeys.forEach((k) => {
              let acc = {};
              Object.keys(curr).forEach((key) => {
                if (key == k) {
                  acc['VAR_NAME'] = key.replace('VAR_N_', '');
                  acc['VAR_VALUE'] = curr[key];
                } else if (key == `DEFAULT_VALUE_${k.replace('VAR_N_', '')}`) {
                  acc['DEFAULT_VALUE'] = curr[key];
                } else if (
                  !key.startsWith('VAR_N_') &&
                  !key.startsWith('DEFAULT_VALUE_') &&
                  key != 'DEFAULT_VALUE'
                ) {
                  acc[key] = curr[key];
                }
              });
              acc['ID'] = buildUUID();
              varwos.push(acc);
            });
          });
          input.LabelVarWos = varwos;
        }
      });
      SaveLabelTemplate(input).then((action) => {
        if (action.IsSuccessed) {
          cancel();
        }
      });
    },
    /**
     * @description: 自定义方法
     * @param {string} type
     * @param {array} args
     * @return {*}
     */
    CustFunc: (param: CustModalParams) => {
      switch (param.cType) {
        case 'BAS_LABEL_VAR':
        case 'BAS_LABEL_VAR_WO':
          return getFns[param.FnName](param) as Promise<any>;
        // break;
        default:
          return new Promise((resolve, reject) => {
            try {
              (e) => {};
              resolve(true);
            } catch {
              reject(false);
            } finally {
              // args[0][0]({ confirmLoading: false });
            }
          });
        // break;
      }
    },
    /**
     * @description: 编辑单元格完成后自定义方法
     * @param {Recordable} param1
     * @param {*} type
     * @param {any} useTables
     * @return {*}
     */
    CustEditEnd: ({ record, index, key, value }: Recordable, type, ...args) => {
      console.log(key, value);
      const useTables = args[0];
      const data = args[1];
      let varWodata: any[] = [];
      if (
        (record['VAR_TYPE'] == 1 && record['VAR_VALUE'] != 'PV-WorkOrder-Plan') ||
        record['VAR_TYPE'] != 1
      ) {
        data.value['BAS_LABEL_VAR_WO'].forEach((x) => {
          let acc: any = {};
          Object.keys(x).map((key) => {
            if (key != `VAR_N_${record['VAR_NAME']}`) {
              acc[key] = x[key];
            }
          });
          varWodata.push(acc);
        });
        data.value['BAS_LABEL_VAR_WO'] = varWodata;
      } else {
        varWodata = data.value['BAS_LABEL_VAR_WO'];
      }
      switch (type) {
        case 'BAS_LABEL_VAR':
          useTables['BAS_LABEL_VAR_WO'][1].setProps({
            dataSource: varWodata,
            columns: GetBaseColumns('BAS_LABEL_VAR_WO', null, data),
            scroll: { y: 500 },
            useSearchForm: false,
            showTableSetting: false,
            bordered: true,
            canResize: true,
            showIndexColumn: false,
            actionColumn: {
              width: 130,
              title: '操作',
              dataIndex: 'action',
              slots: { customRender: 'action' },
              fixed: 'right',
            },
          });
          useTables['BAS_LABEL_VAR_WO'][1].reload();
          break;
        default:
          break;
      }
    },
  };
  /* 以下是内部方法,不export */
  /**
   * @description: 表格基本字段
   * @description: 自定义方法
   * @return {*}
   */
  const baseColumns = {
    BAS_LABEL_VAR: [
  const getFns: Record<string, FunctionType> = {
    /**
     * @description: 新增行方法
     * @param {*} e
     * @param {array} args
     * @return {*}
     */
    AddRow: (param: CustModalParams) => {
      return new Promise((resolve, reject) => {
        try {
          console.log('AddRow');
          EditOperation(
            param.data,
            { ...param.values, ...param.others },
            { isUpdate: false },
            param.cType,
            {},
          );
        } catch {
          reject(false);
        }
      });
    },
    /**
     * @desc 保存方法
     */
    SaveRow: (param: CustModalParams) => {
      return new Promise((resolve, reject) => {
        try {
          param.data.value[param.cType] = param.data.value[param.cType].map((d) => {
            if (d.ID == param.values['ID']) {
              d.VAR_NAME = param.values['VAR_NAME'];
              d.VAR_TYPE = param.values['VAR_TYPE'];
              d.VAR_VALUE = param.values['VAR_VALUE'];
              d.BARCODE_RULE = param.values['BARCODE_RULE'];
              d.REMARK = param.values['REMARK'];
            }
            return d;
          });
        } catch {
          reject(false);
        }
      });
    },
  };
  let columns: BasicColumn[] = [];
  /**
   * @description: 获取表格字段Json
   * @param {string} type
   * @return {*}
   */
  function GetBaseColumns(type: string, emit, data: Ref<{}>) {
    columns = [
      {
        dataIndex: 'LABEL_ID',
        title: '标签模板ID',
@@ -382,16 +769,73 @@
        title: '变量名称',
        ifShow: true,
        sorter: true,
        editRow: true,
        resizable: true,
        customRender: () => {},
      },
      {
        dataIndex: 'VAR_TYPE',
        title: '变量类型',
        editRow: true,
        editRule: true,
        ifShow: true,
        sorter: true,
        resizable: true,
        customRender: ({ record }) => {
        editComponent: 'ApiSelect',
        editComponentProps: (column) => {
          return {
            api: GetEnum,
            params: { name: 'BAS_LABEL_VAR+VAR_TYPEs' },
            resultField: 'Data',
            labelField: unref(getLocale) == 'zh_CN' ? 'Desc' : 'Name',
            valueField: 'Value',
            onChange: (e, v) => {
              if (e == 1 || e == 4) {
                const where =
                  e == 1
                    ? { TABLE_NAME: 'BAS_LABEL_PV', VAR_TYPE: 0 }
                    : { TABLE_NAME: 'BAS_LABEL_PV', VAR_TYPE: 1 };
                emit('opencust', {
                  data: column.record,
                  name: 'BAS_LABEL_VAR',
                  modalSchema: {
                    title: '过程变量列表',
                    schemas: [
                      {
                        field: 'VAR_CODE',
                        component: 'Input',
                        label: '过程变量编码',
                        colProps: {
                          span: 12,
                        },
                      },
                    ],
                    ItemColumns: [
                      {
                        title: t('过程变量编码'),
                        dataIndex: 'VAR_CODE',
                        resizable: true,
                        sorter: true,
                        width: 200,
                      },
                      {
                        title: t('过程变量名称'),
                        dataIndex: 'VAR_NAME',
                        resizable: true,
                        sorter: true,
                        width: 180,
                      },
                    ],
                    tableName: 'BAS_LABEL_PV',
                    rowKey: 'VAR_CODE',
                    searchInfo: where,
                  },
                });
              }
            },
          };
        },
        editRender: ({ record }) => {
          let color = '';
          let text = '';
          switch (record.VAR_TYPE) {
@@ -411,109 +855,187 @@
              text = '自定义变量';
              color = '#bfbfbf';
              break;
            case 4:
              text = '条码生成';
              color = '#b442df';
              break;
          }
          return h(Tooltip, { title: text }, () => h(Tag, { color: color }, () => text));
        },
      },
    ];
    switch (type) {
      case 'BAS_LABEL_VAR':
        columns = [
          ...columns,
          ...[
            {
              dataIndex: 'VAR_VALUE',
              title: '变量值',
              editRow: true,
              // editable: true,
              editRule: true,
              ifShow: (column) => true,
              sorter: true,
              resizable: true,
            },
            {
              dataIndex: 'BARCODE_RULE',
              title: '条码生成规则',
              ifShow: true,
              editRow: true,
              editRule: true,
              sorter: true,
              resizable: true,
              editComponent: 'ApiSelect',
              editComponentProps: (column) => {
                return {
                  api: getEntity,
                  params: { entityName: 'BAS_CODE_RULE', sqlcmd: ' 1=1 ' },
                  resultField: 'Data.Items',
                  labelField: 'RULE_NAME',
                  valueField: 'RULE_CODE',
                };
              },
            },
            {
              dataIndex: 'REMARK',
              title: '备注',
              ifShow: true,
              editRow: true,
              sorter: true,
              resizable: true,
            },
          ],
        ] as BasicColumn[];
        break;
      case 'BAS_LABEL_VAR_WO':
        const _columns = [
          {
            dataIndex: 'LABEL_ID',
            title: '标签模板ID',
            ifShow: false,
            sorter: true,
            resizable: true,
          },
          {
            title: '工单号',
            dataIndex: 'WORK_ORDER',
            width: 280,
            edit: true,
            editRule: true,
            // editable: true,
            ifShow: true,
          },
        ] as BasicColumn[];
        newRow = {
          ID: buildUUID(),
          LABEL_ID:
            data.value['BAS_LABEL_VAR'].length > 0 ? data.value['BAS_LABEL_VAR'][0].LABEL_ID : '',
          WORK_ORDER: '',
        };
        data.value['BAS_LABEL_VAR'].map((x) => {
          if (x.VAR_TYPE == 1 && x.VAR_VALUE == 'PV-WorkOrder-Plan') {
            newRow[`${x.VAR_NAME}_DEFAULT_VALUE`] = '';
            newRow[x.VAR_NAME] = '';
            _columns.push(
              {
                title: `(变量)${x.VAR_NAME}默认值`,
                dataIndex: `DEFAULT_VALUE_${x.VAR_NAME}`,
                width: 280,
                // edit: true,
                // editRule: true,
                resizable: true,
                ifShow: true,
              },
              {
                title: `(变量)${x.VAR_NAME}`,
                dataIndex: `VAR_N_${x.VAR_NAME}`,
                width: 280,
                edit: true,
                editRule: true,
                resizable: true,
                ifShow: true,
              },
            );
          }
        });
        _columns.push({
          title: `备注`,
          dataIndex: 'REMARK',
          width: 280,
          edit: true,
          editRule: true,
          resizable: true,
          ifShow: true,
        });
        columns = _columns;
        break;
    }
    return columns;
  }
  /**
   * @description: 表格基本字段
   * @return {*}
   */
  const baseColumns = {
    BAS_LABEL_VAR: [],
    BAS_LABEL_VAR_WO: [
      {
        dataIndex: 'LABEL_ID',
        title: '标签模板ID',
        ifShow: false,
        sorter: true,
        resizable: true,
      },
      {
        title: '工单号',
        dataIndex: 'WORK_ORDER',
        edit: true,
        editRule: true,
        // editable: true,
        ifShow: true,
      },
      {
        dataIndex: 'VAR_NAME',
        title: '变量名称',
        edit: true,
        editRule: true,
        // editable: true,
        ifShow: true,
        sorter: true,
        resizable: true,
        customRender: () => {},
      },
      {
        dataIndex: 'VAR_VALUE',
        title: '变量值',
        edit: true,
        editRule: true,
        // editable: true,
        ifShow: true,
        sorter: true,
        resizable: true,
      },
      {
        dataIndex: 'REMARK',
        title: '备注',
        ifShow: true,
        sorter: true,
        resizable: true,
      },
    ],
    MES_SHIFT_PRD: [
      {
        title: '时段编码',
        dataIndex: 'PRD_CODE',
        // ifShow: false,
        width: 180,
      },
      {
        title: '时段名称',
        dataIndex: 'PRD_NAME',
      },
      {
        title: '班次编码',
        dataIndex: 'SFT_CODE',
      },
      {
        title: '时段开始时间',
        dataIndex: 'PRD_BEGIN',
        customRender: ({ record }) => {
          return formatTime(new Date(record.PRD_BEGIN));
        },
      },
      {
        title: '时段结束时间',
        dataIndex: 'PRD_END',
        customRender: ({ record }) => {
          return formatTime(new Date(record.PRD_END));
        },
      },
      {
        title: '是否跨天',
        dataIndex: 'IS_ACROSS',
        customRender: ({ record }) => {
          const type = record.IS_ACROSS;
          var text = '';
          var color = 'green';
          switch (type) {
            case 'Y':
              text = '是';
              break;
            case 'N':
              color = 'blue';
              text = '否';
              break;
          }
          return h(Tag, { color: color }, () => text);
        },
      },
      {
        title: '是否休息时段',
        dataIndex: 'IS_REST',
        customRender: ({ record }) => {
          const type = record.IS_REST;
          var text = '';
          var color = 'green';
          switch (type) {
            case 'Y':
              text = '是';
              break;
            case 'N':
              color = 'blue';
              text = '否';
              break;
          }
          return h(Tag, { color: color }, () => text);
        },
      },
      {
        title: '时段排序',
        dataIndex: 'SEQ',
        title: '标签模板预览地址',
        dataIndex: 'LABEL_VIEW_PATH',
        ifShow: false,
      },
      {
        title: '备注',
        dataIndex: 'REMARK',
      },
      {
        title: '更新时间',
        dataIndex: 'UPDATE_TIME',
      },
      {
        title: '更新人',
        dataIndex: 'UPDATE_USER',
      },
    ],
      // {
      //   title: '更新时间',
      //   dataIndex: 'UPDATE_TIME',
      // },
      // {
      //   title: '更新人',
      //   dataIndex: 'UPDATE_USER',
      // },
    ] as BasicColumn[],
  };
  /**