Ben Lin
2024-07-30 cc88111d61a350a4d24cf339b526d4357f934ddf
src/views/tigerprojects/system/lowcode/entityts/BAS_LABEL_VAR.ts
@@ -4,7 +4,7 @@
 * @version:
 * @Date: 2024-06-19 20:34:27
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-07-27 13:22:30
 * @LastEditTime: 2024-07-29 23:10:18
 */
import { Tag, Tooltip } from 'ant-design-vue';
@@ -15,8 +15,13 @@
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';
const { getLocale } = useLocale();
@@ -40,16 +45,29 @@
     * @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;
    },
    /**
@@ -70,6 +88,7 @@
          label: '标签模板编码',
          component: 'Input',
          required: true,
          isexist: 'Y',
          colProps: {
            span: 8,
          },
@@ -111,11 +130,49 @@
          },
        },
        {
          field: 'PROD_CODE',
          label: '产品编码',
          component: 'Input',
          isexist: 'N',
          show: 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: 16,
            span: 24,
          },
        },
        {
@@ -129,8 +186,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 +298,27 @@
        },
      ];
    },
    /**
     * @description: 获取新增行的数据
     * @param {string} type
     * @return {*}
     */
    GetNewRow: (type: string) => {
      let values = {};
      switch (type) {
        case 'BAS_LABEL_VAR_WO':
          values = {
            ID: buildUUID(),
            LABEL_ID: '',
            VAR_NAME: '',
            VAR_TYPE: '',
            VAR_VALUE: '',
            REMARK: '',
          };
          break;
      }
      return values;
    },
    KeyFieldValues: (val: string, id: string) => {
      return { LABEL_ID: id };
    },
@@ -240,7 +336,7 @@
        pageContent: '这里可以添加和修改模板和模板变量及工单模板变量。',
        tableTitle: {
          BAS_LABEL_VAR: '模板变量管理',
          MES_SHIFT_PRD: '时段管理',
          BAS_LABEL_VAR_WO: '工单模板变量管理',
        },
      };
    },
@@ -268,7 +364,7 @@
        {
          BAS_LABEL_VAR: useDrawer(),
        },
        // { MES_SHIFT_PRD: useDrawer() },
        { BAS_LABEL_VAR_WO: useDrawer() },
      ];
    } /**
     * @description: 获取表格use列表
@@ -282,8 +378,8 @@
        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]),
          maxHeight: 520,
          formConfig: {
            labelWidth: 140,
            schemas: searchForms['BAS_LABEL_VAR'],
@@ -294,6 +390,32 @@
          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: baseColumns['BAS_LABEL_VAR_WO'],
          maxHeight: 550,
          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: '操作',
@@ -302,29 +424,6 @@
            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',
        //    }, //自定义操作列
        //  }),
      };
    },
    /**
@@ -332,10 +431,34 @@
     * @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[0],
          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 +467,87 @@
        }
        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'){
          input.LabelVarWos =  data.value[d['name']];
          }
        });
      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;
      }
    },
  };
  /* 以下是内部方法,不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);
        }
      });
    },
  };
  let columns: BasicColumn[] = [];
  /**
   * @description: 获取表格字段Json
   * @param {string} type
   * @return {*}
   */
  function GetBaseColumns(type: string, emit) {
    columns = [
      {
        dataIndex: 'LABEL_ID',
        title: '标签模板ID',
@@ -388,10 +566,62 @@
      {
        dataIndex: 'VAR_TYPE',
        title: '变量类型',
        edit: 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) {
                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: { TABLE_NAME: 'BAS_LABEL_PV' },
                  },
                });
              }
            },
          };
        },
        editRender: ({ record }) => {
          let color = '';
          let text = '';
          switch (record.VAR_TYPE) {
@@ -415,10 +645,19 @@
          return h(Tooltip, { title: text }, () => h(Tag, { color: color }, () => text));
        },
      },
    ];
    switch (type) {
      case 'BAS_LABEL_VAR':
        columns = [
          ...columns,
          ...[
      {
        dataIndex: 'VAR_VALUE',
        title: '变量值',
        ifShow: true,
              edit: true,
              // editable: true,
              editRule: true,
              ifShow: (column) => true,
        sorter: true,
        resizable: true,
      },
@@ -430,90 +669,73 @@
        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 = '否';
        ] as BasicColumn[];
              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 columns;
          }
          return h(Tag, { color: color }, () => text);
        },
  /**
   * @description: 表格基本字段
   * @return {*}
   */
  const baseColumns = {
    BAS_LABEL_VAR: [],
    BAS_LABEL_VAR_WO: [
      {
        dataIndex: 'LABEL_ID',
        title: '标签模板ID',
        ifShow: false,
        sorter: true,
        resizable: true,
      },
      {
        title: '时段排序',
        dataIndex: 'SEQ',
        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,
      },
      {
        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[],
  };
  /**