| | |
| | | * @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'; |
| | |
| | | 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(); |
| | | |
| | |
| | | * @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; |
| | | }, |
| | | /** |
| | |
| | | label: '标签模板编码', |
| | | component: 'Input', |
| | | required: true, |
| | | isexist: 'Y', |
| | | colProps: { |
| | | span: 8, |
| | | }, |
| | |
| | | }, |
| | | }, |
| | | { |
| | | 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, |
| | | }, |
| | | }, |
| | | { |
| | |
| | | }, |
| | | ]; |
| | | }, |
| | | 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 [ |
| | |
| | | }, |
| | | ]; |
| | | }, |
| | | /** |
| | | * @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 }; |
| | | }, |
| | |
| | | pageContent: '这里可以添加和修改模板和模板变量及工单模板变量。', |
| | | tableTitle: { |
| | | BAS_LABEL_VAR: '模板变量管理', |
| | | MES_SHIFT_PRD: '时段管理', |
| | | BAS_LABEL_VAR_WO: '工单模板变量管理', |
| | | }, |
| | | }; |
| | | }, |
| | |
| | | { |
| | | BAS_LABEL_VAR: useDrawer(), |
| | | }, |
| | | // { MES_SHIFT_PRD: useDrawer() }, |
| | | { BAS_LABEL_VAR_WO: useDrawer() }, |
| | | ]; |
| | | } /** |
| | | * @description: 获取表格use列表 |
| | |
| | | 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'], |
| | |
| | | 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: '操作', |
| | |
| | | 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', |
| | | // }, //自定义操作列 |
| | | // }), |
| | | }; |
| | | }, |
| | | /** |
| | |
| | | * @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的所有的值 */ |
| | |
| | | } |
| | | 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', |
| | |
| | | { |
| | | 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) { |
| | |
| | | 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, |
| | | }, |
| | |
| | | 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[], |
| | | }; |
| | | |
| | | /** |