| | |
| | | <script lang="ts" setup> |
| | | import { FlowChart } from '/@/components/FlowChart'; |
| | | import { PageWrapper } from '/@/components/Page'; |
| | | import { SaveRouteData, getRouteData } from '/@/api/tigerapi/mes/router'; |
| | | import { |
| | | SaveRouteData, |
| | | SaveWoRouteData, |
| | | getRouteData, |
| | | getWoRouteData, |
| | | } from '/@/api/tigerapi/mes/router'; |
| | | import { useModal } from '/@/components/Modal'; |
| | | import RouteModal from './RouteModal.vue'; |
| | | import { onMounted, ref, unref, Ref, provide, reactive, nextTick, watch } from 'vue'; |
| | |
| | | currentAct: {} as MES_ROUTE_NODE_ACT, |
| | | routeData: {} as RouteData, |
| | | activeKey: 1, |
| | | isWorkOrder: false, |
| | | }); |
| | | const currRoute = ref({} as MES_ROUTE); |
| | | const routeData = ref({ |
| | |
| | | const entityName = ref<any>('MES_POSITION'); |
| | | const props = defineProps({ |
| | | rotId: { type: String, default: '' }, |
| | | rotType: { type: String, default: 'Route' }, |
| | | }); |
| | | const IsOperation = ref(false); |
| | | const title = ref(''); |
| | | const posttitle = ref(''); |
| | | let _num = 1; |
| | | let _numEdge = 1; |
| | | watch( |
| | | () => props.rotId, |
| | | (v) => { |
| | | if (v !== currRotId.value) { |
| | | if (!isNullOrEmpty(v) && v !== currRotId.value) { |
| | | currRotId.value = v; |
| | | if (!isNullOrUnDef(unref(currlf))) { |
| | | unref(currlf).render({}); |
| | |
| | | async function init(lf) { |
| | | currlf.value = unref(lf); |
| | | //通过工艺路线ID获取图形数据,并渲染 |
| | | var _data = await getRouteData(currRotId.value); |
| | | routeConfig.isWorkOrder = props.rotType == 'Wo'; |
| | | var _data = |
| | | props.rotType == 'Route' |
| | | ? await getRouteData(currRotId.value) |
| | | : await getWoRouteData(currRotId.value); |
| | | console.log('组件已挂载', _data); |
| | | //工艺路线全信息,包括Node、Edge和Act |
| | | routeConfig.routeData = _data.Data; |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @description: 获取工艺路线图数据 |
| | | * @param {*} lf |
| | | * @return {*} |
| | | */ |
| | | const GetRotData = (lf) => { |
| | | var currRotData: RouteData = { |
| | | route: { |
| | |
| | | AUTH_ORG: useUserStore().getUserInfo.orgCode, |
| | | AUTH_PROD: '', |
| | | AUTH_WH: '', |
| | | WORK_ORDER: currRoute.value.WORK_ORDER, |
| | | PROD_CODE: currRoute.value.PROD_CODE, |
| | | CUST_CODE: currRoute.value.CUST_CODE, |
| | | }, |
| | | nodes: [], |
| | | edges: [], |
| | |
| | | }; |
| | | var _nodes = unref(lf).getGraphData().nodes as node[]; |
| | | var _edges = unref(lf).getGraphData().edges as edge[]; |
| | | var _num = 1; |
| | | const diffnodes = routeConfig.routeData.nodes.filter((itemA) => |
| | | _nodes.some((itemB) => itemB.id === itemA.ID), |
| | | ); |
| | |
| | | // DO_IF_FAIL: a.DO_IF_FAIL, |
| | | node: {} as node, |
| | | IS_ACTIVE: a.IS_ACTIVE, |
| | | WORK_ORDER: a.WORK_ORDER, |
| | | PROD_CODE: a.PROD_CODE, |
| | | CUST_CODE: a.CUST_CODE, |
| | | }; |
| | | var pnode = [n]; |
| | | while (pnode[0].properties.operType == 'Action') { |
| | |
| | | GPH_TEXT: n.text.value, |
| | | IS_ACTIVE: nd.IS_ACTIVE, |
| | | IS_CALC_FPY: nd.IS_CALC_FPY, |
| | | ALLOW_DFT_IN: nd.ALLOW_DFT_IN, |
| | | CAN_SKIP: nd.CAN_SKIP, |
| | | REMARK: nd.REMARK, |
| | | AUTH_ORG: useUserStore().getUserInfo.orgCode, |
| | |
| | | OPTION_4: '', |
| | | OPTION_5: '', |
| | | node: {} as node, |
| | | WORK_ORDER: nd.WORK_ORDER, |
| | | PROD_CODE: nd.PROD_CODE, |
| | | CUST_CODE: nd.CUST_CODE, |
| | | }; |
| | | nd.GPH_TYPE = n.type; |
| | | nd.GPH_PROP = JSON.stringify(n.properties); |
| | |
| | | OPTION_4: '', |
| | | OPTION_5: '', |
| | | edge: {} as edge, |
| | | WORK_ORDER: routeConfig.routeData.route.WORK_ORDER, |
| | | PROD_CODE: routeConfig.routeData.route.PROD_CODE, |
| | | CUST_CODE: routeConfig.routeData.route.CUST_CODE, |
| | | }; |
| | | routeConfig.routeData.edges.push(edge); |
| | | currRotData.edges.push(edge); |
| | | _numEdge++; |
| | | }); |
| | | return currRotData; |
| | | }; |
| | |
| | | */ |
| | | async function handleSave(lf) { |
| | | console.log('handleSave', unref(lf).getGraphData().nodes[0]); |
| | | if (isNullOrEmpty(currRoute.value.ROT_CODE)) { |
| | | if ( |
| | | isNullOrEmpty(currRoute.value.ROT_CODE) || |
| | | (props.rotType == 'Wo' && isNullOrEmpty(currRoute.value.WORK_ORDER)) |
| | | ) { |
| | | createErrorModal({ |
| | | title: t('未选择'), |
| | | content: t('未选择工艺路线或者新增工艺路线'), |
| | |
| | | getContainer: () => document.body, |
| | | }); |
| | | } else { |
| | | var action = await SaveRouteData(GetRotData(lf)); |
| | | var action = |
| | | props.rotType == 'Wo' |
| | | ? await SaveWoRouteData(GetRotData(lf)) |
| | | : await SaveRouteData(GetRotData(lf)); |
| | | if (action.IsSuccessed) { |
| | | await refreshPage(); |
| | | } |
| | |
| | | UPDATE_TIME: currRoute.value.UPDATE_TIME, |
| | | UPDATE_USER: useUserStore().getUserInfo.userId as string, |
| | | GHOST_ROW: false, |
| | | NODE_NAME: `${selectnode.value.text.value}_0`, |
| | | NODE_NAME: `${selectnode.value.text.value}_${_num}`, |
| | | ROT_ID: currRoute.value.ID, |
| | | SEGMENT: '', |
| | | OPER_CODE: selectnode.value.type, |
| | |
| | | AUTH_PROD: '', |
| | | AUTH_WH: '', |
| | | IS_FIRST_NODE: '', |
| | | ALLOW_DFT_IN: '', |
| | | IS_INPUT: '', |
| | | IS_OUTPUT: '', |
| | | OPTION_1: '', |
| | |
| | | OPTION_4: '', |
| | | OPTION_5: '', |
| | | node: {} as node, |
| | | WORK_ORDER: currRoute.value.WORK_ORDER, |
| | | PROD_CODE: currRoute.value.PROD_CODE, |
| | | CUST_CODE: currRoute.value.CUST_CODE, |
| | | }; |
| | | routeConfig.routeData.nodes.push(_node); |
| | | _num++; |
| | | } |
| | | //是行为 |
| | | if ( |
| | |
| | | AUTH_ORG: useUserStore().getUserInfo.orgCode, |
| | | AUTH_PROD: '', |
| | | AUTH_WH: '', |
| | | ACT_NAME: `${selectnode.value.text.value}_0`, |
| | | ACT_NAME: `${selectnode.value.text.value}_${_numEdge}`, |
| | | ACT_CODE: '', |
| | | ROT_ID: currRoute.value.ID, |
| | | NODE_ID: '', |
| | |
| | | OPTION_5: '', |
| | | REMARK: '', |
| | | node: {} as node, |
| | | WORK_ORDER: currRoute.value.WORK_ORDER, |
| | | PROD_CODE: currRoute.value.PROD_CODE, |
| | | CUST_CODE: currRoute.value.CUST_CODE, |
| | | }; |
| | | routeConfig.routeData.acts.push(_act); |
| | | _numEdge++; |
| | | } |
| | | routeConfig.currentAct = { |
| | | ID: selectnode.value.id, |
| | |
| | | OPTION_5: '', |
| | | REMARK: '', |
| | | node: {} as node, |
| | | WORK_ORDER: currRoute.value.WORK_ORDER, |
| | | PROD_CODE: currRoute.value.PROD_CODE, |
| | | CUST_CODE: currRoute.value.CUST_CODE, |
| | | }; |
| | | const actModel = lf.getNodeModelById(selectnode.value.id); |
| | | actModel.updateText(routeConfig.currentAct?.ACT_NAME); |
| | |
| | | IS_CALC_FPY: _node.IS_CALC_FPY, |
| | | CAN_SKIP: _node.CAN_SKIP, |
| | | IS_INPUT: _node.IS_INPUT, |
| | | ALLOW_DFT_IN: _node.ALLOW_DFT_IN, |
| | | IS_OUTPUT: _node.IS_OUTPUT, |
| | | REMARK: _node.REMARK, |
| | | WORK_ORDER: currRoute.value.WORK_ORDER, |
| | | PROD_CODE: currRoute.value.PROD_CODE, |
| | | CUST_CODE: currRoute.value.CUST_CODE, |
| | | node: {} as node, |
| | | }; |
| | | const nodeModel = lf.getNodeModelById(selectnode.value.id); |
| | | nodeModel.updateText(_node.NODE_NAME); |
| | | routeConfig.isCalcFpy = _node.IS_CALC_FPY == 'Y'; |
| | | routeConfig.canSkip = _node.CAN_SKIP == 'Y'; |
| | | routeConfig.isActive = _node.IS_ACTIVE == 'Y'; |
| | | routeConfig.allowDftIn = _node.ALLOW_DFT_IN == 'Y'; |
| | | routeConfig.isInput = _node.IS_INPUT == 'Y'; |
| | | routeConfig.isOutput = _node.IS_OUTPUT == 'Y'; |
| | | setTimeout(() => { |