{"ast":null,"code":"import \"core-js/modules/es.array.filter.js\";\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.array.for-each.js\";\nimport \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.string.starts-with.js\";\nimport \"core-js/modules/web.dom-collections.for-each.js\";\nimport \"core-js/modules/web.timers.js\";\nimport jsPlumb from 'jsplumb';\nexport default {\n name: 'ProcessFlow',\n data: function data() {\n return {\n processTypes: {\n employee: {\n title: '员工入职业务流程',\n description: '本流程规范了新员工从招聘到入职的完整过程,确保人才招聘和入职流程的规范化和标准化。',\n status: '正常运行',\n statusType: 'success',\n totalSteps: 7,\n completedSteps: 4,\n avgDuration: '15天'\n }\n },\n nodes: [{\n id: 'start',\n type: 'start',\n label: '开始',\n x: 350,\n y: 50,\n url: '/process/start'\n }, {\n id: 'interview',\n type: 'condition',\n label: '面试',\n x: 350,\n y: 150,\n url: '/interview'\n }, {\n id: 'pass',\n type: 'process',\n label: '发录用通知书',\n x: 550,\n y: 150,\n url: '/offer'\n }, {\n id: 'prepare',\n type: 'process',\n label: '准备入职材料',\n x: 550,\n y: 250,\n url: '/prepare'\n }, {\n id: 'verify',\n type: 'condition',\n label: '材料核实',\n x: 550,\n y: 350,\n url: '/verify'\n }, {\n id: 'onboard',\n type: 'process',\n label: '办理入职',\n x: 550,\n y: 450,\n url: '/onboard'\n }, {\n id: 'reject',\n type: 'process',\n label: '发送拒绝通知',\n x: 150,\n y: 250,\n url: '/reject'\n }, {\n id: 'archive',\n type: 'process',\n label: '归档简历',\n x: 150,\n y: 350,\n url: '/archive'\n }, {\n id: 'end',\n type: 'end',\n label: '结束',\n x: 350,\n y: 550,\n url: '/process/end'\n }],\n connections: [{\n source: 'start',\n target: 'interview'\n }, {\n source: 'interview',\n target: 'pass',\n label: '通过'\n }, {\n source: 'interview',\n target: 'reject',\n label: '不通过'\n }, {\n source: 'pass',\n target: 'prepare'\n }, {\n source: 'prepare',\n target: 'verify'\n }, {\n source: 'verify',\n target: 'onboard',\n label: '完整'\n }, {\n source: 'verify',\n target: 'prepare',\n label: '需补充'\n }, {\n source: 'reject',\n target: 'archive'\n }, {\n source: 'onboard',\n target: 'end'\n }, {\n source: 'archive',\n target: 'end'\n }],\n jsPlumbInstance: null\n };\n },\n computed: {\n currentProcess: function currentProcess() {\n var processType = this.$route.params.type || 'employee';\n return this.processTypes[processType];\n }\n },\n methods: {\n handleNodeClick: function handleNodeClick(nodeId) {\n var _this = this;\n var node = this.nodes.find(function (n) {\n return n.id === nodeId;\n });\n if (node && node.url) {\n if (node.url.startsWith('http')) {\n window.open(node.url, '_blank');\n } else {\n this.$router.push(node.url)[\"catch\"](function (err) {\n if (err.name !== 'NavigationDuplicated') {\n _this.$message({\n type: 'info',\n message: \"\\u6B63\\u5728\\u8DF3\\u8F6C\\u5230\".concat(node.label, \"\\u9875\\u9762...\")\n });\n }\n });\n }\n }\n },\n nodeStyle: function nodeStyle(node) {\n return {\n left: node.x + 'px',\n top: node.y + 'px'\n };\n },\n initJsPlumb: function initJsPlumb() {\n var _this2 = this;\n this.jsPlumbInstance = jsPlumb.jsPlumb.getInstance({\n Container: this.$refs.processFlow,\n Connector: ['Flowchart', {\n cornerRadius: 5,\n stub: 30,\n midpoint: 0.7\n }],\n Endpoint: ['Dot', {\n radius: 5\n }],\n Anchor: [['Left', 'Right', 'Top'],\n // source anchors\n ['Left', 'Right', 'Bottom'] // target anchors\n ],\n PaintStyle: {\n strokeWidth: 2,\n stroke: '#409EFF'\n },\n EndpointStyle: {\n fill: '#409EFF',\n radius: 4\n },\n HoverPaintStyle: {\n stroke: '#67C23A'\n }\n });\n\n // 为每个节点添加端点\n this.nodes.forEach(function (node) {\n var element = document.getElementById(node.id);\n if (element) {\n _this2.jsPlumbInstance.makeSource(element, {\n filter: '.flow-node',\n anchor: ['Left', 'Right', 'Top'],\n maxConnections: -1\n });\n _this2.jsPlumbInstance.makeTarget(element, {\n filter: '.flow-node',\n anchor: ['Left', 'Right', 'Bottom'],\n maxConnections: -1\n });\n }\n });\n\n // 添加连接\n this.connections.forEach(function (conn) {\n var connection = _this2.jsPlumbInstance.connect({\n source: conn.source,\n target: conn.target,\n detachable: false,\n overlays: [['Arrow', {\n location: 1\n }], conn.label ? ['Label', {\n label: conn.label,\n location: 0.5,\n cssClass: 'connection-label',\n events: {\n click: function click() {\n _this2.$message.info(conn.label || '流程连接');\n }\n }\n }] : null].filter(Boolean)\n });\n if (conn.source === 'verify' && conn.target === 'prepare') {\n connection.setConnector(['Flowchart', {\n stub: [30, 30],\n cornerRadius: 5,\n alwaysRespectStubs: true\n }]);\n }\n });\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n // 等待 DOM 完全渲染后再初始化 jsPlumb\n setTimeout(function () {\n _this3.initJsPlumb();\n }, 500);\n },\n beforeDestroy: function beforeDestroy() {\n if (this.jsPlumbInstance) {\n this.jsPlumbInstance.destroy();\n }\n }\n};","map":{"version":3,"names":["jsPlumb","name","data","processTypes","employee","title","description","status","statusType","totalSteps","completedSteps","avgDuration","nodes","id","type","label","x","y","url","connections","source","target","jsPlumbInstance","computed","currentProcess","processType","$route","params","methods","handleNodeClick","nodeId","_this","node","find","n","startsWith","window","open","$router","push","err","$message","message","concat","nodeStyle","left","top","initJsPlumb","_this2","getInstance","Container","$refs","processFlow","Connector","cornerRadius","stub","midpoint","Endpoint","radius","Anchor","PaintStyle","strokeWidth","stroke","EndpointStyle","fill","HoverPaintStyle","forEach","element","document","getElementById","makeSource","filter","anchor","maxConnections","makeTarget","conn","connection","connect","detachable","overlays","location","cssClass","events","click","info","Boolean","setConnector","alwaysRespectStubs","mounted","_this3","setTimeout","beforeDestroy","destroy"],"sources":["src/views/EmployeeProcess.vue"],"sourcesContent":["\n\n\n\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}