Ben Lin
2025-03-08 858b9bccead46cdefc99325b7c956d50a2964309
src/views/tigerprojects/system/lowcode/entityts/MES_SHIFT.ts
@@ -4,17 +4,25 @@
 * @version:
 * @Date: 2024-06-19 20:34:27
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-07-04 10:22:39
 * @LastEditTime: 2024-09-11 20:44:25
 */
import { Ref, h, ref, unref } from 'vue';
import { DeleteEntity, GetEnum, getEntity } from '/@/api/tigerapi/system';
import {
  AddAfterDelete,
  DeleteEntity,
  GetEnum,
  SaveEntity,
  getEntity,
} from '/@/api/tigerapi/system';
import { ActionItem, BasicColumn, FormSchema, useTable } from '/@/components/Table';
import { isNullOrEmpty, isNullOrUnDef } from '/@/utils/is';
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() {
@@ -36,7 +44,7 @@
     * @description: 获取新增按钮的行为
     * @return {*}
     */
    CreateAction: (fnName: string) => {
    CreateAction: (type: string) => {
      return {
        action: 'drawer', //drawer(打开左侧抽屉框) | go(跳转到新的页面)
      };
@@ -182,7 +190,7 @@
          title: '列表信息',
          dataSource: data.value['MES_SHIFT'],
          columns: baseColumns['MES_SHIFT'],
          maxHeight: 230,
          maxHeight: 160,
          formConfig: {
            labelWidth: 140,
            schemas: searchForms['MES_SHIFT'],
@@ -205,16 +213,16 @@
          title: '列表信息',
          dataSource: data.value['MES_SHIFT_PRD'],
          columns: baseColumns['MES_SHIFT_PRD'],
          maxHeight: 260,
          maxHeight: 550,
          formConfig: {
            labelWidth: 140,
            schemas: searchForms['MES_SHIFT_PRD'],
            submitFunc: () => Search('MES_SHIFT_PRD', data, args[0]), //自定义查询提交按钮的方法,触发查询提交事件
          },
          useSearchForm: true,
          useSearchForm: false,
          showTableSetting: false,
          bordered: true,
          canResize: true,
          canResize: false,
          showIndexColumn: false,
          actionColumn: {
            width: 130,
@@ -257,22 +265,42 @@
     * @param {*} d
     * @param {*} u
     * @return {*}
     */ EditOperation: (data: Ref<any[]>, d, u, item) => {
     */
    EditOperation: (data: Ref<any[]>, d, u, name) => {
      //更新
      var _data = data.value[item].map((item) => {
        if (item['ID'] == d.ID)
          return {
            ...item,
            SFT_CODE: d.SFT_CODE,
            SFT_NAME: d.SFT_NAME,
            SFT_BEGIN: d.SFT_BEGIN,
            SFT_END: d.SFT_END,
            IS_ACROSS_DAY: d.IS_ACROSS_DAY,
            REMARK: d.REMARK,
          };
      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: dateUtil(d.SFT_BEGIN),
              SFT_END: dateUtil(d.SFT_END),
              IS_ACROSS_DAY: d.IS_ACROSS_DAY,
              REMARK: d.REMARK,
            };
          }
          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,
            };
          }
        }
        return item;
      });
      EditOperation(data, d, u, item, _data);
      EditOperation(data, d, u, name, _data);
    },
    /**
     * @description: 获取标题信息
@@ -288,6 +316,81 @@
          MES_SHIFT_PRD: '时段管理',
        },
      };
    },
    /**
     * @description: 提交所有
     * @return {*}
     */
    SubmitAll: (data: Ref<any[]>, keyFieldValues: Ref<{}>, ...args) => {
      const validates = args[1].validates;
      const Keys = args[1].Keys;
      const isAllUpdate = args[1].isAllUpdate;
      const baseCards = args[1].baseCards;
      const IsExist = args[1].IsExist;
      /* 循环保存高级表单中主表单信息,如果有多个的话,所以要循环 */
      let i;
      let p = [] as Promise<any>[];
      for (i = 0; i < Keys.length; i++) {
        p.push(
          SaveEntity(
            validates[Keys[i]],
            unref(isAllUpdate),
            baseCards.value[i]['entityName'],
            `${IsExist}='${validates[Keys[i]][IsExist]}'`,
            true,
          ),
        );
      }
      Promise.all(p).then(() => {
        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));
        }
      });
    },
    GetUseForm: () => {
      return {};
    },
  };
@@ -305,7 +408,9 @@
    if (!isNullOrEmpty(params['data'])) {
      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']);
        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: [],
@@ -355,10 +460,16 @@
      {
        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: '是否跨天',
@@ -410,10 +521,16 @@
      {
        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: '是否跨天',
@@ -539,6 +656,7 @@
        label: '班制编码',
        field: 'SFTS_CODE',
        component: 'ApiSelect',
        required: true,
        colProps: {
          span: 24,
        },
@@ -553,21 +671,55 @@
          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: 'Input',
        component: 'TimePicker',
        colProps: {
          span: 24,
          span: 12,
        },
        componentProps: ({ formModel }) => {
          return {
            format: 'HH:mm',
          };
        },
        // show: false,
      },
      {
        label: '班次结束时间',
        label: '结束时间',
        field: 'SFT_END',
        component: 'Input',
        component: 'TimePicker',
        colProps: {
          span: 24,
          span: 12,
        },
        componentProps: ({ formModel }) => {
          return {
            format: 'HH:mm',
          };
        },
        // show: false,
      },
      {
        label: '是否跨天',
@@ -617,7 +769,7 @@
        },
        show: false,
      },
    ],
    ] as FormSchema[],
    MES_SHIFT_PRD: [
      {
        field: 'PRD_CODE',
@@ -641,6 +793,7 @@
        label: '班次编码',
        field: 'SFT_CODE',
        component: 'Select',
        required: true,
        colProps: {
          span: 24,
        },
@@ -660,15 +813,33 @@
      {
        label: '时段开始时间',
        field: 'PRD_BEGIN',
        component: 'Input',
        component: 'TimePicker',
        colProps: {
          span: 24,
          span: 12,
        },
        componentProps: ({ formModel }) => {
          return {
            format: 'HH:mm',
          };
        },
      },
      {
        label: '时段结束时间',
        label: '结束时间',
        field: 'PRD_END',
        component: 'Input',
        component: 'TimePicker',
        colProps: {
          span: 12,
        },
        componentProps: ({ formModel }) => {
          return {
            format: 'HH:mm',
          };
        },
      },
      {
        label: '时段排序',
        field: 'SEQ',
        component: 'InputNumber',
        colProps: {
          span: 24,
        },
@@ -736,7 +907,7 @@
        },
        show: false,
      },
    ],
    ] as FormSchema[],
  };
  return [methods, ActionColumn];