| | |
| | | * @version: |
| | | * @Date: 2024-06-19 20:34:27 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-10-22 22:46:28 |
| | | * @LastEditTime: 2024-10-23 23:55:56 |
| | | */ |
| | | |
| | | import { Ref, h, ref, render, unref } from 'vue'; |
| | | import { Ref, unref } from 'vue'; |
| | | import { |
| | | DeleteWoRoute, |
| | | GetWoPTree, |
| | | SP_MES_PROD2WO, |
| | | ProdRouteToWo, |
| | | SP_MES_WO2CUST, |
| | | } from '/@/api/tigerapi/mes/router'; |
| | | import { GetEnum, SaveEntity, convertToTree, getEntity } from '/@/api/tigerapi/system'; |
| | |
| | | import { useProdRouteStore } from '/@/store/modules/prodRoute'; |
| | | import { useWebSocketStore } from '/@/store/modules/websocket'; |
| | | import { useGlobSetting } from '/@/hooks/setting'; |
| | | import { cloneDeep } from 'vue-json-pretty/types/utils'; |
| | | |
| | | const { t } = useI18n(); |
| | | const { createErrorModal } = useMessage(); |
| | |
| | | treeInfo: _treeData as unknown as MesRotTree[], |
| | | }); |
| | | } |
| | | useProdRoute.setWo(wo); |
| | | useProdRoute.setname(wo); |
| | | if (useProdRoute.curProdRotTree.some((q) => q.name == wo)) { |
| | | data.treeData = useProdRoute.curProdRotTree.filter((q) => q.name == wo)[0].treeInfo; |
| | | } |
| | |
| | | * @return {*} |
| | | */ |
| | | GetUseTables: (data: Ref<{}>, ...args) => { |
| | | let sortData = isNullOrUnDef(data.value['BAS_PKG_DTL']) |
| | | ? data.value['BAS_PKG_DTL'] |
| | | : data.value['BAS_PKG_DTL'].sort((a, b) => { |
| | | return a.PKG_LEVEL - b.PKG_LEVEL; |
| | | }); |
| | | return { |
| | | BAS_PKG_DTL: useTable({ |
| | | title: '列表信息', |
| | | // api: getListByPage, |
| | | // searchInfo: { TABLE_NAME: 'V_BAS_PKG_DTL' }, |
| | | dataSource: data.value['BAS_PKG_DTL'], |
| | | dataSource: sortData, |
| | | columns: GetBaseColumns('BAS_PKG_DTL', args[0], data), |
| | | // maxHeight: 520, |
| | | useSearchForm: false, |
| | |
| | | ? ents.Data.Items |
| | | : JSON.parse(res.Data.Items[0].OPTION_1); |
| | | /* 如果OPTION_1字段为空就把包装信息转JSON存到OPTION_1字段 */ |
| | | res.Data.Items[0].OPTION_1 = isNullOrEmpty(res.Data.Items[0].OPTION_1) |
| | | ? JSON.stringify(ents.Data.Items) |
| | | : res.Data.Items[0].OPTION_1; |
| | | } /* 如果是组装上料 */ |
| | | res.Data.Items[0].OPTION_1 = JSON.stringify(result['BAS_PKG_DTL']); |
| | | } |
| | | /* 如果是组装上料 */ |
| | | if (res.Data.Items[0].ACT_TYPE == 2) { |
| | | result['name'] = 'ItemCode'; |
| | | result['ItemCode'] = JSON.parse(res.Data.Items[0].OPTION_1); |
| | |
| | | } |
| | | if (params['selectedNodes'][0].type == 'Node') { |
| | | resetFieldsNode(); |
| | | const wonode = await getEntity({ |
| | | sqlcmd: `WORK_ORDER ='${params['objParams'].value['CODE']}' AND ID = '${res.Data.Items[0].NODE_ID}'`, |
| | | entityName: 'MES_WO_NODE', |
| | | order: '', |
| | | }); |
| | | setFieldsValueNode({ |
| | | ID: res.Data.Items[0].ID, |
| | | OPER_CODE: res.Data.Items[0].OPER_CODE, |
| | | ROT_ID: res.Data.Items[0].ROT_ID, |
| | | NODE_ID: res.Data.Items[0].NODE_ID, |
| | | NODE_NAME: res.Data.Items[0].NODE_NAME, |
| | | IS_ACTIVE: isNullOrEmpty(res.Data.Items[0].IS_ACTIVE) |
| | | ? 'N' |
| | | : res.Data.Items[0].IS_ACTIVE, |
| | | IS_CALC_FPY: isNullOrEmpty(res.Data.Items[0].IS_CALC_FPY) |
| | | ? 'N' |
| | | : res.Data.Items[0].IS_CALC_FPY, |
| | | CAN_SKIP: isNullOrEmpty(res.Data.Items[0].CAN_SKIP) |
| | | ? 'N' |
| | | : res.Data.Items[0].CAN_SKIP, |
| | | IS_INPUT: |
| | | wonode.Data.Items[0].IS_FIRST_NODE == 'Y' |
| | | ? 'Y' |
| | | : isNullOrEmpty(res.Data.Items[0].IS_INPUT) |
| | | ? 'N' |
| | | : res.Data.Items[0].IS_INPUT, |
| | | IS_OUTPUT: isNullOrEmpty(res.Data.Items[0].IS_OUTPUT) |
| | | ? 'N' |
| | | : res.Data.Items[0].IS_OUTPUT, |
| | | ALLOW_DFT_IN: isNullOrEmpty(res.Data.Items[0].ALLOW_DFT_IN) |
| | | ? 'N' |
| | | : res.Data.Items[0].ALLOW_DFT_IN, |
| | | REMARK: res.Data.Items[0].REMARK, |
| | | WORK_ORDER: params['objParams'].value['CODE'], |
| | | CUST_CODE: params['selectedNodes'][0].cust, |
| | | PROD_CODE: params['selectedNodes'][0].prod, |
| | | }); |
| | | // const wonode = await getEntity({ |
| | | // sqlcmd: `WORK_ORDER ='${params['objParams'].value['CODE']}' AND ID = '${res.Data.Items[0].NODE_ID}'`, |
| | | // entityName: 'MES_WO_NODE', |
| | | // order: '', |
| | | // }); |
| | | |
| | | if(isNullOrEmpty(res.Data.Items[0].IS_ACTIVE)){ |
| | | res.Data.Items[0].IS_ACTIVE = 'N' |
| | | } |
| | | if(isNullOrEmpty(res.Data.Items[0].IS_CALC_FPY)){ |
| | | res.Data.Items[0].IS_CALC_FPY = 'N' |
| | | } |
| | | if(isNullOrEmpty(res.Data.Items[0].CAN_SKIP)){ |
| | | res.Data.Items[0].CAN_SKIP = 'N' |
| | | } |
| | | if(isNullOrEmpty(res.Data.Items[0].IS_INPUT)){ |
| | | res.Data.Items[0].IS_INPUT = 'N' |
| | | } |
| | | if(isNullOrEmpty(res.Data.Items[0].IS_OUTPUT)){ |
| | | res.Data.Items[0].IS_OUTPUT = 'N' |
| | | } |
| | | if(isNullOrEmpty(res.Data.Items[0].ALLOW_DFT_IN)){ |
| | | res.Data.Items[0].ALLOW_DFT_IN = 'N' |
| | | } |
| | | if(isNullOrEmpty(res.Data.Items[0].IF_DFT_OFFLINE)){ |
| | | res.Data.Items[0].IF_DFT_OFFLINE = 'N' |
| | | } |
| | | if(!isNullOrEmpty(params['objParams'].value['CODE'])){ |
| | | res.Data.Items[0].WORK_ORDER = params['objParams'].value['CODE'] |
| | | } |
| | | if(!isNullOrEmpty(params['selectedNodes'][0].prod)){ |
| | | res.Data.Items[0].PROD_CODE = params['selectedNodes'][0].prod |
| | | } |
| | | if(!isNullOrEmpty(params['selectedNodes'][0].cust)){ |
| | | res.Data.Items[0].CUST_CODE = params['selectedNodes'][0].cust |
| | | } |
| | | setFieldsValueNode(res.Data.Items[0]); |
| | | /* 默认保存 */ |
| | | SaveEntity(res.Data.Items[0], true, 'MES_WO_OPER'); |
| | | |
| | | result['name'] = 'Node'; |
| | | result['isShow'] = { |
| | | BAS_PKG_DTL: false, |
| | |
| | | OpenSelectItem: (openItemModal: Fn, ...args) => { |
| | | let config = {}; |
| | | const openCrudModal = args[1]; |
| | | const record = args[2]; |
| | | const record = args[2]; //带过来的记录 |
| | | const OrderNo = args[3]; |
| | | switch (args[0]) { |
| | | const WoRecord = args[4]; |
| | | /* args[0]是界面上的slot名字,根据slot名字来写不同的逻辑实现 */ |
| | | switch (args[0]) { |
| | | case 'scanadd': |
| | | config = ruleModalCfg; |
| | | break; |
| | |
| | | config = pkgModalCfg; |
| | | break; |
| | | } |
| | | /* 如果slot是'labeladd',打开增删改模态窗口,可编辑行 */ |
| | | if (args[0] == 'labeladd') { |
| | | openCrudModal(true, { |
| | | isUpdate: true, //是否更新操作 |
| | |
| | | width: '1024px', //弹出框宽度 |
| | | ItemColumns: TemplateBasColumn, //弹出框中表格字段结构 |
| | | schemas: [], //查询条件字段结构 |
| | | others: { WORK_ORDER: OrderNo }, //需要带到弹出窗口中的数据 |
| | | others: { WORK_ORDER: OrderNo}, //需要带到弹出窗口中的数据 |
| | | alertConfig: { |
| | | showAlert: true, |
| | | message: '销售订单备注', |
| | | description: WoRecord.SALES_REMARK, |
| | | }, /* 在弹出窗口最上位置显示提醒信息,显示销售订单备注 */ |
| | | searchInfo: { |
| | | TABLE_NAME: 'BAS_LABEL_VAR_WO', //实体名称 |
| | | LabelId: record.LABEL_CODE, //模板ID |
| | |
| | | return; |
| | | } |
| | | /* 更新工单状态并生成工单的工艺路线 */ |
| | | UpdateWoStatus({ |
| | | UserId: useUserStore().getUserInfo.userId as string, |
| | | WorkOrder: args[1]['CODE'], |
| | | Status: -1, |
| | | RouteStatus: 1, |
| | | WoBatch: '', |
| | | ActLine: '', |
| | | ProdRouteToWo({ |
| | | rotId: d.values.id, |
| | | wo: args[1]['CODE'], |
| | | rotCode: '', |
| | | options: { |
| | | //根据据点查询,必需带这个参数 |
| | | UserId: useUserStore().getUserInfo.userId, |
| | | ByOrg: true, |
| | | CurOrg: useUserStore().getUserInfo.orgCode, |
| | | }, |
| | | }).then((action) => { |
| | | if (action.IsSuccessed) { |
| | | SP_MES_PROD2WO({ rotId: d.values.id, wo: args[1]['CODE'] }).then((action) => { |
| | | if (action.IsSuccessed) { |
| | | args[2](); |
| | | } else { |
| | | UpdateWoStatus({ |
| | | UserId: useUserStore().getUserInfo.userId as string, |
| | | WorkOrder: args[1]['CODE'], |
| | | Status: -1, |
| | | RouteStatus: 0, |
| | | WoBatch: '', |
| | | ActLine: '', |
| | | }); |
| | | createErrorModal({ |
| | | title: t('sys.api.errorTip'), |
| | | content: t(action.LocaleMsg), |
| | | }); |
| | | } |
| | | }); |
| | | args[2](); |
| | | } else { |
| | | createErrorModal({ |
| | | title: t('sys.api.errorTip'), |
| | |
| | | const webSocketStore = useWebSocketStore(); |
| | | if (webSocketStore.GetSocketState == 1) { |
| | | webSocketStore.sendMessage( |
| | | `wsGetNew ${param.values['LABEL_ID']}_#_${ param.values['WORK_ORDER']}`, |
| | | `wsGetNew ${param.values['LABEL_ID']}_#_${param.values['WORK_ORDER']}`, |
| | | ); |
| | | } |
| | | } |
| | | case 'delete': |
| | | const webSocketStore = useWebSocketStore(); |
| | | if (webSocketStore.GetSocketState == 1) { |
| | | webSocketStore.sendMessage( |
| | | `wsGetNew ${param.values['LABEL_ID']}_#_${param.values['WORK_ORDER']}`, |
| | | ); |
| | | } |
| | | break; |
| | | } |
| | | resolve('OK'); |
| | | } catch (e) { |
| | |
| | | field: 'LABEL_CODE', |
| | | component: 'Input', |
| | | label: '模板编码', |
| | | colProps: { |
| | | span: 12, |
| | | }, |
| | | }, |
| | | { |
| | | field: 'LABEL_NAME', |
| | | component: 'Input', |
| | | label: '模板名称', |
| | | colProps: { |
| | | span: 12, |
| | | }, |
| | |
| | | }, |
| | | }, |
| | | { |
| | | field: 'IF_DFT_OFFLINE', |
| | | label: '判断不良后是否下线', |
| | | required: true, |
| | | defaultValue: 'N', |
| | | component: 'Select', |
| | | colProps: { span: 12 }, |
| | | componentProps: { |
| | | options: [ |
| | | { |
| | | label: '是', |
| | | value: 'Y', |
| | | key: 'Y', |
| | | }, |
| | | { |
| | | label: '否', |
| | | value: 'N', |
| | | key: 'N', |
| | | }, |
| | | ], |
| | | }, |
| | | ifShow: ({ values }) => values.OPER_CODE == 'TestNode', |
| | | }, |
| | | { |
| | | field: 'REMARK', |
| | | label: '备注', |
| | | component: 'Input', |
| | |
| | | function handleTemplate(args, params: Recordable) { |
| | | const openCrudModal = args[0]; |
| | | const OrderNo = args[2]; |
| | | const WoRecord = params['mainRecord']; |
| | | openCrudModal(true, { |
| | | isUpdate: true, //是否更新操作 |
| | | entityName: 'WoRouteBinding', //是哪个页面 |
| | |
| | | ItemColumns: TemplateBasColumn, //弹出框中表格字段结构 |
| | | schemas: [], //查询条件字段结构 |
| | | others: { WORK_ORDER: OrderNo }, //需要带到弹出窗口中的数据 |
| | | alertConfig: { |
| | | showAlert: true, |
| | | message: '销售订单备注', |
| | | description: WoRecord.SALES_REMARK, |
| | | }, /* 在弹出窗口最上位置显示提醒信息,显示销售订单备注 */ |
| | | searchInfo: { |
| | | TABLE_NAME: 'BAS_LABEL_VAR_WO', //实体名称 |
| | | LabelId: params['record'].LABEL_ID, //模板ID |