| | |
| | | * @version: |
| | | * @Date: 2024-06-19 20:34:27 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-07-02 03:40:15 |
| | | * @LastEditTime: 2024-09-11 20:44:25 |
| | | */ |
| | | |
| | | import { Ref, h, ref, unref } from 'vue'; |
| | | import { DeleteEntity, GetEnum, getEntity } from '/@/api/tigerapi/system'; |
| | | import { ActionItem, BasicColumn, useTable } from '/@/components/Table'; |
| | | 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 { 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([ |
| | | { |
| | | SFT_CODE: '1', |
| | | SFT_NAME: '1', |
| | | SFTS_CODE: '1', |
| | | SFT_BEGIN: 1, |
| | | SFT_END: 1, |
| | | IS_ACROSS_DAY: 'N', |
| | | REMARK: '1', |
| | | AUTH_ORG: '1', |
| | | AUTH_PROD: '1', |
| | | AUTH_WH: '1', |
| | | GHOST_ROW: false, |
| | | CREATE_TIME: '2024-07-01 12:34:29', |
| | | CREATE_USER: '1', |
| | | UPDATE_TIME: '2024-07-01 12:34:29', |
| | | UPDATE_USER: '1', |
| | | ID: '6632a14fec8c470c9216f5c7354baa22', |
| | | }, |
| | | ] as Recordable<any>[]); |
| | | let _data = ref<any>({}); |
| | | const ActionColumn: BasicColumn = { |
| | | width: 80, |
| | | title: '操作', |
| | |
| | | * @description: 获取新增按钮的行为 |
| | | * @return {*} |
| | | */ |
| | | CreateAction: (fnName: string) => { |
| | | CreateAction: (type: string) => { |
| | | return { |
| | | action: 'drawer', //drawer(打开左侧抽屉框) | go(跳转到新的页面) |
| | | }; |
| | |
| | | title: '列表信息', |
| | | dataSource: data.value['MES_SHIFT'], |
| | | columns: baseColumns['MES_SHIFT'], |
| | | maxHeight: 160, |
| | | formConfig: { |
| | | labelWidth: 140, |
| | | schemas: searchForms['MES_SHIFT'], |
| | | submitFunc: () => Search('MES_SHIFT', data, args[0]), //自定义查询提交按钮的方法,触发查询提交事件 |
| | | }, |
| | | useSearchForm: true, |
| | | showTableSetting: true, |
| | | showTableSetting: false, |
| | | bordered: true, |
| | | canResize: true, |
| | | showIndexColumn: false, |
| | |
| | | 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: true, |
| | | showTableSetting: true, |
| | | useSearchForm: false, |
| | | showTableSetting: false, |
| | | bordered: true, |
| | | canResize: true, |
| | | canResize: false, |
| | | showIndexColumn: false, |
| | | actionColumn: { |
| | | width: 130, |
| | |
| | | }), |
| | | }; |
| | | }, |
| | | OthersValues: (val: string, id: string) => { |
| | | /** |
| | | * @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, item) => { |
| | | 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[item])) { |
| | | _data2 = data.value[item].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[item] = _data2; |
| | | } |
| | | return item; |
| | | }); |
| | | EditOperation(data, d, u, name, _data); |
| | | }, |
| | | /** |
| | | * @description: 获取标题信息 |
| | |
| | | }, |
| | | }; |
| | | }, |
| | | /** |
| | | * @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 {}; |
| | | }, |
| | | }; |
| | | |
| | | /* 以下是内部方法,不export */ |
| | |
| | | * @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(); |
| | | } |
| | | }); |
| | | } |
| | |
| | | { |
| | | 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: '是否跨天', |
| | |
| | | { |
| | | 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: '是否跨天', |
| | |
| | | span: 8, |
| | | }, |
| | | }, |
| | | ], |
| | | ] as FormSchema[], |
| | | MES_SHIFT_PRD: [ |
| | | { |
| | | field: 'PRD_CODE', |
| | |
| | | span: 8, |
| | | }, |
| | | }, |
| | | ], |
| | | ] as FormSchema[], |
| | | }; |
| | | |
| | | const crudForms = { |
| | |
| | | label: '班制编码', |
| | | field: 'SFTS_CODE', |
| | | component: 'ApiSelect', |
| | | required: true, |
| | | colProps: { |
| | | span: 24, |
| | | }, |
| | |
| | | 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: '是否跨天', |
| | |
| | | }, |
| | | show: false, |
| | | }, |
| | | ], |
| | | ] as FormSchema[], |
| | | MES_SHIFT_PRD: [ |
| | | { |
| | | field: 'PRD_CODE', |
| | |
| | | label: '班次编码', |
| | | field: 'SFT_CODE', |
| | | component: 'Select', |
| | | required: true, |
| | | colProps: { |
| | | span: 24, |
| | | }, |
| | | componentProps: () => { |
| | | const options = _data.map((entity) => ({ |
| | | const options = _data['MES_SHIFT'].map((entity) => ({ |
| | | value: entity.SFT_CODE, |
| | | label: entity.SFT_NAME, |
| | | })); |
| | |
| | | { |
| | | 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, |
| | | }, |
| | |
| | | }, |
| | | show: false, |
| | | }, |
| | | ], |
| | | ] as FormSchema[], |
| | | }; |
| | | |
| | | return [methods, ActionColumn]; |