| | |
| | | * @version: |
| | | * @Date: 2024-06-19 20:34:27 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-10-18 10:54:24 |
| | | * @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 { buildUUID } from '/@/utils/uuid'; |
| | | import { mesApi } from '/@/api/tigerapi/mes/mesApi'; |
| | | import { useProdRouteStore } from '/@/store/modules/prodRoute'; |
| | | import { useWebSocketStore } from '/@/store/modules/websocket'; |
| | | import { useGlobSetting } from '/@/hooks/setting'; |
| | | |
| | | const { t } = useI18n(); |
| | | const { createErrorModal } = useMessage(); |
| | | const useProdRoute = useProdRouteStore(); |
| | | const { getLocale } = useLocale(); |
| | | const globSetting = useGlobSetting(); |
| | | function _default() { |
| | | /* 定义变量 */ |
| | | const isNormal = (type: number) => type === 0; |
| | |
| | | } |
| | | data.title = '工单工艺路线'; |
| | | data.fieldNames = { key: 'tid', title: 'name' }; |
| | | /* 保存工艺树形数据到状态管理 */ |
| | | useProdRoute.setCurProdRotTree(_treeData as unknown as MesRotTree[]); |
| | | data.treeData = useProdRoute.getCurProdRotTree; |
| | | if (!useProdRoute.changeToCPPage || !useProdRoute.curProdRotTree.some((q) => q.name == wo)) { |
| | | /* 保存工艺树形数据到状态管理 */ |
| | | useProdRoute.setCurProdRotTree({ |
| | | name: wo, |
| | | 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 data; |
| | | }, |
| | | /** |
| | |
| | | ? 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); |
| | |
| | | entityName: 'MES_WO_NODE', |
| | | order: '', |
| | | }); |
| | | setFieldsValueNode({ |
| | | const values = { |
| | | ID: res.Data.Items[0].ID, |
| | | OPER_CODE: res.Data.Items[0].OPER_CODE, |
| | | ROT_ID: res.Data.Items[0].ROT_ID, |
| | |
| | | ALLOW_DFT_IN: isNullOrEmpty(res.Data.Items[0].ALLOW_DFT_IN) |
| | | ? 'N' |
| | | : res.Data.Items[0].ALLOW_DFT_IN, |
| | | IF_DFT_OFFLINE: isNullOrEmpty(res.Data.Items[0].IF_DFT_OFFLINE) |
| | | ? 'N' |
| | | : res.Data.Items[0].IF_DFT_OFFLINE, |
| | | REMARK: res.Data.Items[0].REMARK, |
| | | WORK_ORDER: params['objParams'].value['CODE'], |
| | | CUST_CODE: params['selectedNodes'][0].cust, |
| | | PROD_CODE: params['selectedNodes'][0].prod, |
| | | }); |
| | | }; |
| | | setFieldsValueNode(values); |
| | | /* 默认保存 */ |
| | | SaveEntity(values, true, 'MES_WO_OPER'); |
| | | |
| | | result['name'] = 'Node'; |
| | | result['isShow'] = { |
| | | BAS_PKG_DTL: false, |
| | |
| | | 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'), |
| | |
| | | * @param {Ref} selectedNodes |
| | | * @return {*} |
| | | */ |
| | | SelectNode: (selectedNodes: Ref<any[]>) => { |
| | | SelectNode: (selectedNodes: Ref<any[]>, code: string) => { |
| | | let result = { |
| | | showConfig: false, |
| | | showNav: false, |
| | |
| | | result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false }; |
| | | } |
| | | } |
| | | useProdRoute.setCurSelectedNodes({ name: code, SelectedNodes: selectedNodes.value }); |
| | | return result; |
| | | }, |
| | | /** |
| | |
| | | param.values['WORK_ORDER'] = param.others['WORK_ORDER']; |
| | | param.values['ID'] = buildUUID(); |
| | | |
| | | await AddOrEditLabelVarByWorkOrder(param.values as unknown as BAS_LABEL_VAR_WO); |
| | | const apiaction = await AddOrEditLabelVarByWorkOrder( |
| | | param.values as unknown as BAS_LABEL_VAR_WO, |
| | | ); |
| | | if (apiaction.IsSuccessed) { |
| | | const webSocketStore = useWebSocketStore(); |
| | | if (webSocketStore.GetSocketState == 1) { |
| | | webSocketStore.sendMessage( |
| | | `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: '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', |