Ben Lin
2024-07-04 bb8fba76d8c69f6957c606c2f3bb501af952b533
src/views/tigerprojects/system/lowcode/entityts/MES_SHIFT.ts
@@ -4,21 +4,23 @@
 * @version:
 * @Date: 2024-06-19 20:34:27
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-07-01 12:33:25
 * @LastEditTime: 2024-07-04 23:06:52
 */
import { Ref, h, unref } from 'vue';
import { DeleteEntity, GetEnum, getEntity } from '/@/api/tigerapi/system';
import { ActionItem, BasicColumn } from '/@/components/Table';
import { Ref, h, ref, unref } from 'vue';
import { AddAfterDelete, DeleteEntity, GetEnum, getEntity } from '/@/api/tigerapi/system';
import { ActionItem, BasicColumn, FormSchema, useTable } from '/@/components/Table';
import { isNullOrEmpty, isNullOrUnDef } from '/@/utils/is';
import { buildUUID } from '/@/utils/uuid';
import { useUserStore } from '/@/store/modules/user';
import { formatToDateTime } from '/@/utils/dateUtil';
import { Tag } from 'ant-design-vue';
import { useLocale } from '/@/locales/useLocale';
import { useDrawer } from '/@/components/Drawer';
import { EditOperation, Search } from '../data';
import { convertTimeToDate, dateUtil, formatTime, intToTime, tsToHHmm } from '/@/utils/dateUtil';
import { buildUUID } from '/@/utils/uuid';
const { getLocale } = useLocale();
function _default() {
  let _data = ref<any>({});
  const ActionColumn: BasicColumn = {
    width: 80,
    title: '操作',
@@ -59,186 +61,15 @@
      const param = { ID: 'MES_SHIFT_SYS', colSlots: [], crudColSlots: [] };
      return `/MES_SHIFT_SYS/LC/${encodeURI(JSON.stringify(param))}`;
    },
    GetBaseColumns: () => {
      return [
        {
          title: '班次编码',
          dataIndex: 'SFT_CODE',
          // ifShow: false,
          width: 180,
        },
        {
          title: '班次名称',
          dataIndex: 'SFT_NAME',
        },
        {
          title: '班制编码',
          dataIndex: 'SFTS_CODE',
        },
        {
          title: '班次开始时间',
          dataIndex: 'SFT_BEGIN',
        },
        {
          title: '班次结束时间',
          dataIndex: 'SFT_END',
        },
        {
          title: '是否跨天',
          dataIndex: 'IS_ACROSS_DAY',
          customRender: ({ record }) => {
            const type = record.IS_ACROSS_DAY;
            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: 'REMARK',
        },
        {
          title: '更新时间',
          dataIndex: 'UPDATE_TIME',
        },
        {
          title: '更新人',
          dataIndex: 'UPDATE_USER',
        },
      ];
    GetBaseColumns: (type: string) => {
      return baseColumns[type];
    },
    GetSearchForm: () => {
      return [
        {
          field: 'SFT_CODE',
          label: '班次编码',
          component: 'Input',
          colProps: {
            span: 8,
          },
        },
        {
          label: '班次名称',
          field: 'SFT_NAME',
          component: 'Input',
          colProps: {
            span: 8,
          },
        },
      ];
    GetSearchForm: (type: string) => {
      return searchForms[type];
    },
    GetCrudForm: () => {
      return [
        {
          field: 'SFT_CODE',
          label: '班次编码',
          component: 'Input',
          required: true,
          colProps: {
            span: 24,
          },
        },
        {
          label: '班次名称',
          field: 'SFT_NAME',
          component: 'Input',
          required: true,
          colProps: {
            span: 24,
          },
        },
        {
          label: '班制编码',
          field: 'SFTS_CODE',
          component: 'ApiSelect',
          colProps: {
            span: 24,
          },
          componentProps: {
            api: getEntity,
            params: { entityName: 'MES_SHIFT_SYS', sqlcmd: ' 1=1 ' },
            resultField: 'Data.Items',
            labelField: 'SFTS_NAME',
            valueField: 'SFTS_CODE',
          },
          dynamicDisabled: ({ values }) => {
            return true;
          },
        },
        {
          label: '班次开始时间',
          field: 'SFT_BEGIN',
          component: 'Input',
          colProps: {
            span: 24,
          },
        },
        {
          label: '班次结束时间',
          field: 'SFT_END',
          component: 'Input',
          colProps: {
            span: 24,
          },
        },
        {
          label: '是否跨天',
          field: 'IS_ACROSS_DAY',
          component: 'Select',
          required: true,
          colProps: {
            span: 24,
          },
          componentProps: {
            options: [
              {
                label: '是',
                value: 'Y',
                key: 'Y',
              },
              {
                label: '否',
                value: 'N',
                key: 'N',
              },
            ],
          },
        },
        // {
        //   field: 'LOGIN_TIME',
        //   label: '登录时间',
        //   defaultValue: '',
        //   component: 'RangePicker',
        //   ifShow: true,
        //   colProps: { span: 8 },
        // },
        {
          label: '备注',
          field: 'REMARK',
          component: 'Input',
          colProps: {
            span: 24,
          },
        },
        {
          label: 'ID',
          field: 'ID',
          component: 'Input',
          colProps: {
            span: 24,
          },
          show: false,
        },
      ];
    GetCrudForm: (type: string, ...args) => {
      _data = args[0];
      return crudForms[type];
    },
    /**
     * @description: 获取主信息
@@ -328,47 +159,142 @@
        // { name: 'rotinfo', slots: ['add'], preIcons: { add: 'search|svg' }, title: '工艺信息' },
      ];
    },
    OthersValues: (val: string, id: string) => {
    /**
     * @description: 获取右侧边框use方法
     * @return {*}
     */
    GetUseDrawers: () => {
      return [
        {
          MES_SHIFT: useDrawer(),
        },
        { MES_SHIFT_PRD: useDrawer() },
      ];
    },
    /**
     * @description: 获取表格use列表
     * @param {string} type
     * @param {array} args
     * @return {*}
     */
    GetUseTables: (data: Ref<{}>, ...args) => {
      // _data = data;
      return {
        MES_SHIFT: useTable({
          title: '列表信息',
          dataSource: data.value['MES_SHIFT'],
          columns: baseColumns['MES_SHIFT'],
          maxHeight: 230,
          formConfig: {
            labelWidth: 140,
            schemas: searchForms['MES_SHIFT'],
            submitFunc: () => Search('MES_SHIFT', data, args[0]), //自定义查询提交按钮的方法,触发查询提交事件
          },
          useSearchForm: true,
          showTableSetting: false,
          bordered: true,
          canResize: true,
          showIndexColumn: false,
          actionColumn: {
            width: 130,
            title: '操作',
            dataIndex: 'action',
            slots: { customRender: 'action' },
            fixed: 'right',
          }, //自定义操作列
        }),
        MES_SHIFT_PRD: useTable({
          title: '列表信息',
          dataSource: data.value['MES_SHIFT_PRD'],
          columns: baseColumns['MES_SHIFT_PRD'],
          maxHeight: 260,
          formConfig: {
            labelWidth: 140,
            schemas: searchForms['MES_SHIFT_PRD'],
            submitFunc: () => Search('MES_SHIFT_PRD', data, args[0]), //自定义查询提交按钮的方法,触发查询提交事件
          },
          useSearchForm: true,
          showTableSetting: false,
          bordered: true,
          canResize: true,
          showIndexColumn: false,
          actionColumn: {
            width: 130,
            title: '操作',
            dataIndex: 'action',
            slots: { customRender: 'action' },
            fixed: 'right',
          }, //自定义操作列
        }),
      };
    },
    /**
     * @description: 表格查询回调,父组件中通过子组件触发的事件获取传入的值,做具体的查询逻辑实现
     * @param {*} d
     * @return {*}
     */
    FormSearch: (d) => {
      let data = {} as any;
      switch (d.type) {
        case 'MES_SHIFT':
          data = d.data.value[d.type].filter(
            (item) =>
              item.SFT_CODE.includes(d.values.SFT_CODE) || item.SFT_NAME == d.values.SFT_NAME,
          );
          if (isNullOrEmpty(d.values.SFT_CODE) && isNullOrEmpty(d.values.SFT_NAME)) {
            data = d.data.value[d.type];
          }
          break;
        case 'MES_SHIFT_PRD':
          break;
      }
      return data;
    },
    KeyFieldValues: (val: string, id: string) => {
      return { SFTS_CODE: val };
    } /**
    },
    /**
     * @description: 自定义明细表中编辑返回方法
     * @param {string} type
     * @param {*} d
     * @param {*} u
     * @return {*}
     */,
    EditOperation: (data: Ref<any[]>, d, u) => {
      if (u.isUpdate) {
        //更新
        var _data = data.value.map((item) => {
          if (item['ID'] == d.ID)
     */
    EditOperation: (data: Ref<any[]>, d, u, name) => {
      //更新
      var _data = data.value[name].map((item) => {
        if (item['ID'] == d.ID) {
          if (name == 'MES_SHIFT') {
            // item.SFT_BEGIN = dateUtil(item.SFT_BEGIN);
            // item.SFT_END = dateUtil(item.SFT_END);
            return {
              ...item,
              SFT_CODE: d.SFT_CODE,
              SFT_NAME: d.SFT_NAME,
              SFT_BEGIN: d.SFT_BEGIN,
              SFT_END: d.SFT_END,
              SFT_BEGIN: dateUtil(d.SFT_BEGIN),
              SFT_END: dateUtil(d.SFT_END),
              IS_ACROSS_DAY: d.IS_ACROSS_DAY,
              REMARK: d.REMARK,
            };
          return item;
        });
        data.value = _data;
      } else {
        //新增
        d.ID = buildUUID();
        d.CREATE_USER = useUserStore().getUserInfo.userId as string;
        d.UPDATE_TIME = formatToDateTime(new Date());
        d.UPDATE_USER = useUserStore().getUserInfo.userId as string;
        var _data2: any[] = [];
        if (!isNullOrEmpty(data.value)) {
          _data2 = data.value.map((item) => {
            return item;
          });
          }
          if (name == 'MES_SHIFT_PRD') {
            return {
              ...item,
              PRD_CODE: d.PRD_CODE,
              PRD_NAME: d.PRD_NAME,
              SFT_CODE: d.SFT_CODE,
              IS_ACROSS: d.IS_ACROSS,
              IS_REST: d.IS_REST,
              SEQ: d.SEQ,
              PRD_BEGIN: dateUtil(d.PRD_BEGIN),
              PRD_END: dateUtil(d.PRD_END),
              REMARK: d.REMARK,
            };
          }
        }
        _data2.push(d);
        data.value = _data2;
      }
        return item;
      });
      EditOperation(data, d, u, name, _data);
    },
    /**
     * @description: 获取标题信息
@@ -379,10 +305,66 @@
      return {
        pageTitle: '班制管理',
        pageContent: '这里可以添加和修改班制和班次及时段。',
        baseTableTitle: '班次管理',
        tableTitle: {
          MES_SHIFT: '班次管理',
          MES_SHIFT_PRD: '时段管理',
        },
      };
    },
    /**
     * @description: 提交所有
     * @return {*}
     */
    SubmitAll: (data: Ref<any[]>, keyFieldValues: Ref<{}>, ...args) => {
      const drawers = [
        { name: 'MES_SHIFT', code: 'SFTS_CODE', type: 'one', keyName: 'MES_SHIFT', order: '' },
        { name: 'MES_SHIFT_PRD', code: 'SFT_CODE', type: 'all', keyName: 'MES_SHIFT', order: '' },
      ];
      drawers.forEach((d) => {
        let where = `${d['code']} = '${keyFieldValues.value[d['code']]}'`;
        /* type: all-表示需要code的所有的值 */
        if (d['type'] == 'all' && data.value[d['keyName']].length > 0) {
          where = `${d['code']} in (${data.value[d['keyName']].map((value) => `'${value[d['code']]}'`).join(',')})`;
        }
        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]();
          }
        });
      });
    },
    /**
     * @description: 初始化数据
     * @param {Ref} data
     * @param {Ref} keyFieldValues
     * @return {*}
     */
    CustInitData: (data: Ref<any[]>, keyFieldValues: Ref<{}>, type: string) => {
      data.value[type].map((item) => {
        if (type == 'MES_SHIFT') {
          item.SFT_BEGIN = convertTimeToDate(intToTime(item.SFT_BEGIN));
          item.SFT_END = convertTimeToDate(intToTime(item.SFT_END));
        }
        if (type == 'MES_SHIFT_PRD') {
          item.PRD_BEGIN = convertTimeToDate(intToTime(item.PRD_BEGIN));
          item.PRD_END = convertTimeToDate(intToTime(item.PRD_END));
        }
      });
    },
  };
  /* 以下是内部方法,不export */
  /**
   * @description: 自定义删除方法
@@ -391,25 +373,513 @@
   * @return {*}
   */
  function Del(args: Fn[], params: {}) {
    const name = params['name'];
    const useTables = args[1];
    if (!isNullOrEmpty(params['data'])) {
      var _data = params['data'].value.filter((item) => item['ID'] != params['record']['ID']);
      params['data'].value = _data;
      args[6]({
      var _data = params['data'].value[name].filter((item) => item['ID'] != params['record']['ID']);
      if (name == 'MES_SHIFT') {
        var _data2 = params['data'].value['MES_SHIFT_PRD'].filter(
          (item) => item['SFT_CODE'] != params['record']['SFT_CODE'],
        );
        params['data'].value['MES_SHIFT_PRD'] = _data2;
        useTables['MES_SHIFT_PRD'][1].setProps({
          dataSource: [],
        });
        useTables['MES_SHIFT_PRD'][1].setProps({
          dataSource: params['data'].value['MES_SHIFT_PRD'],
        });
        useTables['MES_SHIFT_PRD'][1].reload();
      }
      params['data'].value[name] = _data;
      useTables[name][1].setProps({
        dataSource: [],
      });
      args[6]({
        dataSource: params['data'],
      useTables[name][1].setProps({
        dataSource: params['data'].value[name],
      });
      args[1]();
      useTables[name][1].reload();
    } else {
      DeleteEntity(params['record'], params['entityName']).then((action) => {
        if (action.IsSuccessed) {
          args[1]();
          useTables[name][1].reload();
        }
      });
    }
  }
  /**
   * @description: 表格基本字段
   * @return {*}
   */
  const baseColumns = {
    MES_SHIFT: [
      {
        title: '班次编码',
        dataIndex: 'SFT_CODE',
        // ifShow: false,
        width: 180,
      },
      {
        title: '班次名称',
        dataIndex: 'SFT_NAME',
      },
      {
        title: '班制编码',
        dataIndex: 'SFTS_CODE',
      },
      {
        title: '班次开始时间',
        dataIndex: 'SFT_BEGIN',
        customRender: ({ record }) => {
          return formatTime(new Date(record.SFT_BEGIN));
        },
      },
      {
        title: '班次结束时间',
        dataIndex: 'SFT_END',
        customRender: ({ record }) => {
          return formatTime(new Date(record.SFT_END));
        },
      },
      {
        title: '是否跨天',
        dataIndex: 'IS_ACROSS_DAY',
        customRender: ({ record }) => {
          const type = record.IS_ACROSS_DAY;
          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: 'REMARK',
      },
      {
        title: '更新时间',
        dataIndex: 'UPDATE_TIME',
      },
      {
        title: '更新人',
        dataIndex: 'UPDATE_USER',
      },
    ],
    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: 'REMARK',
      },
      {
        title: '更新时间',
        dataIndex: 'UPDATE_TIME',
      },
      {
        title: '更新人',
        dataIndex: 'UPDATE_USER',
      },
    ],
  };
  /**
   * @description: 查询字段
   * @return {*}
   */
  const searchForms = {
    MES_SHIFT: [
      {
        field: 'SFT_CODE',
        label: '班次编码',
        component: 'Input',
        colProps: {
          span: 8,
        },
      },
      {
        label: '班次名称',
        field: 'SFT_NAME',
        component: 'Input',
        colProps: {
          span: 8,
        },
      },
    ] as FormSchema[],
    MES_SHIFT_PRD: [
      {
        field: 'PRD_CODE',
        label: '时段编码',
        component: 'Input',
        colProps: {
          span: 8,
        },
      },
      {
        label: '时段名称',
        field: 'PRD_NAME',
        component: 'Input',
        colProps: {
          span: 8,
        },
      },
    ] as FormSchema[],
  };
  const crudForms = {
    MES_SHIFT: [
      {
        field: 'SFT_CODE',
        label: '班次编码',
        component: 'Input',
        required: true,
        colProps: {
          span: 24,
        },
      },
      {
        label: '班次名称',
        field: 'SFT_NAME',
        component: 'Input',
        required: true,
        colProps: {
          span: 24,
        },
      },
      {
        label: '班制编码',
        field: 'SFTS_CODE',
        component: 'ApiSelect',
        required: true,
        colProps: {
          span: 24,
        },
        componentProps: {
          api: getEntity,
          params: { entityName: 'MES_SHIFT_SYS', sqlcmd: ' 1=1 ' },
          resultField: 'Data.Items',
          labelField: 'SFTS_NAME',
          valueField: 'SFTS_CODE',
        },
        dynamicDisabled: ({ values }) => {
          return true;
        },
      },
      // {
      //   label: '班次时间范围',
      //   field: '[SFT_BEGIN, SFT_END]',
      //   component: 'TimeRangePicker',
      //   colProps: {
      //     span: 24,
      //   },
      //   componentProps: ({ formModel }) => {
      //     return {
      //       format: 'HH:mm',
      //       placeholder: ['开始时间', '结束时间'],
      //       onChange: (e) => {
      //         const timeRange: any = e;
      //         console.log(e);
      //         // if (timeRange) {
      //         //   formModel.SFT_BEGIN = Number(`${tsToHHmm(timeRange[0].$d)}`);
      //         //   formModel.SFT_END = Number(`${tsToHHmm(timeRange[1].$d)}`);
      //         // }
      //       },
      //     };
      //   },
      // },
      {
        label: '班次开始时间',
        field: 'SFT_BEGIN',
        component: 'TimePicker',
        colProps: {
          span: 12,
        },
        componentProps: ({ formModel }) => {
          return {
            format: 'HH:mm',
          };
        },
        // show: false,
      },
      {
        label: '结束时间',
        field: 'SFT_END',
        component: 'TimePicker',
        colProps: {
          span: 12,
        },
        componentProps: ({ formModel }) => {
          return {
            format: 'HH:mm',
          };
        },
        // show: false,
      },
      {
        label: '是否跨天',
        field: 'IS_ACROSS_DAY',
        component: 'Select',
        required: true,
        colProps: {
          span: 24,
        },
        componentProps: {
          options: [
            {
              label: '是',
              value: 'Y',
              key: 'Y',
            },
            {
              label: '否',
              value: 'N',
              key: 'N',
            },
          ],
        },
      },
      // {
      //   field: 'LOGIN_TIME',
      //   label: '登录时间',
      //   defaultValue: '',
      //   component: 'RangePicker',
      //   ifShow: true,
      //   colProps: { span: 8 },
      // },
      {
        label: '备注',
        field: 'REMARK',
        component: 'Input',
        colProps: {
          span: 24,
        },
      },
      {
        label: 'ID',
        field: 'ID',
        component: 'Input',
        colProps: {
          span: 24,
        },
        show: false,
      },
    ] as FormSchema[],
    MES_SHIFT_PRD: [
      {
        field: 'PRD_CODE',
        label: '时段编码',
        component: 'Input',
        required: true,
        colProps: {
          span: 24,
        },
      },
      {
        label: '时段名称',
        field: 'PRD_NAME',
        component: 'Input',
        required: true,
        colProps: {
          span: 24,
        },
      },
      {
        label: '班次编码',
        field: 'SFT_CODE',
        component: 'Select',
        required: true,
        colProps: {
          span: 24,
        },
        componentProps: () => {
          const options = _data['MES_SHIFT'].map((entity) => ({
            value: entity.SFT_CODE,
            label: entity.SFT_NAME,
          }));
          return {
            options: options,
          };
        },
        // dynamicDisabled: ({ values }) => {
        //   return true;
        // },
      },
      {
        label: '时段开始时间',
        field: 'PRD_BEGIN',
        component: 'TimePicker',
        colProps: {
          span: 12,
        },
        componentProps: ({ formModel }) => {
          return {
            format: 'HH:mm',
          };
        },
      },
      {
        label: '结束时间',
        field: 'PRD_END',
        component: 'TimePicker',
        colProps: {
          span: 12,
        },
        componentProps: ({ formModel }) => {
          return {
            format: 'HH:mm',
          };
        },
      },
      {
        label: '时段排序',
        field: 'SEQ',
        component: 'InputNumber',
        colProps: {
          span: 24,
        },
      },
      {
        label: '是否跨天',
        field: 'IS_ACROSS',
        component: 'Select',
        required: true,
        colProps: {
          span: 24,
        },
        componentProps: {
          options: [
            {
              label: '是',
              value: 'Y',
              key: 'Y',
            },
            {
              label: '否',
              value: 'N',
              key: 'N',
            },
          ],
        },
      },
      {
        label: '是否休息时段',
        field: 'IS_REST',
        component: 'Select',
        required: true,
        colProps: {
          span: 24,
        },
        componentProps: {
          options: [
            {
              label: '是',
              value: 'Y',
              key: 'Y',
            },
            {
              label: '否',
              value: 'N',
              key: 'N',
            },
          ],
        },
      },
      {
        label: '备注',
        field: 'REMARK',
        component: 'Input',
        colProps: {
          span: 24,
        },
      },
      {
        label: 'ID',
        field: 'ID',
        component: 'Input',
        colProps: {
          span: 24,
        },
        show: false,
      },
    ] as FormSchema[],
  };
  return [methods, ActionColumn];
}