{"ast":null,"code":"import \"core-js/modules/es.array.concat.js\";\nimport \"core-js/modules/es.array.find.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.object.to-string.js\";\nimport \"core-js/modules/es.string.starts-with.js\";\nimport Hammer from 'hammerjs';\nexport default {\n name: 'EmployeeProcess',\n data: function data() {\n return {\n processType: 'employee',\n currentType: 'employee-process',\n scale: 1,\n panEnabled: false,\n lastPosX: 0,\n lastPosY: 0,\n processOptions: [{\n value: 'employee',\n label: '员工入职流程'\n }, {\n value: 'sales',\n label: '销售订单流程'\n }, {\n value: 'shipping',\n label: '发货业务流程'\n }],\n nodes: [{\n id: 'start',\n type: 'start',\n label: '开始',\n x: 400,\n y: 50,\n url: '/process/start'\n }, {\n id: 'interview',\n type: 'condition',\n label: '面试',\n x: 400,\n y: 150,\n url: '/interview'\n }, {\n id: 'pass',\n type: 'process',\n label: '发录用通知书',\n x: 600,\n y: 150,\n url: '/offer'\n }, {\n id: 'prepare',\n type: 'process',\n label: '准备入职材料',\n x: 600,\n y: 250,\n url: '/prepare'\n }, {\n id: 'verify',\n type: 'condition',\n label: '材料核实',\n x: 600,\n y: 350,\n url: '/verify'\n }, {\n id: 'onboard',\n type: 'process',\n label: '办理入职',\n x: 600,\n y: 450,\n url: '/onboard'\n }, {\n id: 'reject',\n type: 'process',\n label: '发送拒绝通知',\n x: 200,\n y: 250,\n url: '/reject'\n }, {\n id: 'archive',\n type: 'process',\n label: '归档简历',\n x: 200,\n y: 350,\n url: '/archive'\n }, {\n id: 'end',\n type: 'end',\n label: '结束',\n x: 400,\n y: 550,\n url: '/process/end'\n }],\n isMobile: false\n };\n },\n methods: {\n // 绘制流程线\n drawFlowLines: function drawFlowLines() {\n var canvas = this.$refs.flowCanvas;\n if (!canvas) return;\n var ctx = canvas.getContext('2d');\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n // 绘制一条红色测试线\n ctx.lineWidth = 5;\n ctx.strokeStyle = 'red';\n ctx.beginPath();\n ctx.moveTo(100, 100);\n ctx.lineTo(700, 100);\n ctx.stroke();\n\n // 添加文本\n ctx.font = '16px Arial';\n ctx.fillStyle = 'red';\n ctx.textAlign = 'center';\n ctx.fillText('测试线条 - 应该可见', 400, 80);\n\n // 根据当前流程类型绘制不同的线条\n switch (this.currentType) {\n case 'employee-process':\n this.drawEmployeeFlow(ctx);\n break;\n case 'sales-process':\n this.drawSalesFlow(ctx);\n break;\n case 'shipping-process':\n this.drawShippingFlow(ctx);\n break;\n }\n },\n // 绘制员工入职流程线\n drawEmployeeFlow: function drawEmployeeFlow(ctx) {\n ctx.lineWidth = 3;\n ctx.strokeStyle = '#409EFF';\n\n // 绘制简单直线\n ctx.beginPath();\n ctx.moveTo(400, 150);\n ctx.lineTo(400, 250);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(400, 150);\n ctx.lineTo(600, 150);\n ctx.stroke();\n },\n // 绘制销售订单流程线\n drawSalesFlow: function drawSalesFlow(ctx) {\n ctx.lineWidth = 3;\n ctx.strokeStyle = '#67C23A';\n\n // 绘制简单直线\n ctx.beginPath();\n ctx.moveTo(400, 150);\n ctx.lineTo(400, 350);\n ctx.stroke();\n },\n // 绘制物流发货流程线\n drawShippingFlow: function drawShippingFlow(ctx) {\n ctx.lineWidth = 3;\n ctx.strokeStyle = '#E6A23C';\n\n // 绘制简单直线\n ctx.beginPath();\n ctx.moveTo(300, 150);\n ctx.lineTo(500, 350);\n ctx.stroke();\n },\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 checkDevice: function checkDevice() {\n this.isMobile = window.innerWidth < 768;\n if (this.isMobile) {\n this.scale = 0.6; // 移动端默认缩小到60%\n } else {\n this.scale = 1;\n }\n this.applyScale();\n },\n applyScale: function applyScale() {\n var el = this.$refs.processFlow;\n el.style.transform = \"translate(\".concat(this.lastPosX, \"px, \").concat(this.lastPosY, \"px) scale(\").concat(this.scale, \")\");\n },\n handleResize: function handleResize() {\n this.checkDevice();\n },\n zoomIn: function zoomIn() {\n this.scale += 0.1;\n this.applyScale();\n },\n zoomOut: function zoomOut() {\n if (this.scale > 0.3) {\n this.scale -= 0.1;\n this.applyScale();\n }\n },\n resetZoom: function resetZoom() {\n this.scale = 1;\n this.$refs.processFlow.style.transform = 'translate(0px, 0px) scale(1)';\n this.lastPosX = 0;\n this.lastPosY = 0;\n },\n changeProcessType: function changeProcessType(type) {\n var _this2 = this;\n this.processType = type;\n switch (type) {\n case 'employee':\n this.currentType = 'employee-process';\n break;\n case 'sales':\n this.currentType = 'sales-process';\n break;\n case 'shipping':\n this.currentType = 'shipping-process';\n break;\n default:\n this.currentType = 'employee-process';\n }\n\n // 确保DOM更新后再应用缩放\n this.$nextTick(function () {\n _this2.resetZoom();\n _this2.applyScale();\n });\n },\n initHammer: function initHammer() {\n var _this3 = this;\n var el = this.$refs.processFlow;\n var hammertime = new Hammer(el);\n hammertime.get('pinch').set({\n enable: true\n });\n hammertime.get('pan').set({\n direction: Hammer.DIRECTION_ALL\n });\n hammertime.on('pinch', function (e) {\n var newScale = Math.max(0.3, Math.min(3, _this3.scale * e.scale));\n if (Math.abs(newScale - _this3.scale) > 0.01) {\n _this3.scale = newScale;\n _this3.applyScale();\n }\n });\n hammertime.on('pan', function (e) {\n if (_this3.panEnabled) {\n var deltaX = e.deltaX;\n var deltaY = e.deltaY;\n el.style.transform = \"translate(\".concat(_this3.lastPosX + deltaX, \"px, \").concat(_this3.lastPosY + deltaY, \"px) scale(\").concat(_this3.scale, \")\");\n if (e.isFinal) {\n _this3.lastPosX += deltaX;\n _this3.lastPosY += deltaY;\n }\n }\n });\n\n // 双击事件处理\n hammertime.on('doubletap', function () {\n _this3.resetZoom();\n });\n\n // 启用/禁用平移\n el.addEventListener('mousedown', function () {\n _this3.panEnabled = true;\n });\n document.addEventListener('mouseup', function () {\n _this3.panEnabled = false;\n });\n\n // 移动端触摸事件\n el.addEventListener('touchstart', function () {\n _this3.panEnabled = true;\n });\n document.addEventListener('touchend', function () {\n _this3.panEnabled = false;\n });\n }\n },\n mounted: function mounted() {\n var _this4 = this;\n // 确保初始化流程类型正确\n this.processType = 'employee';\n this.currentType = 'employee-process';\n this.$nextTick(function () {\n _this4.initHammer();\n // 绘制流程线\n _this4.drawFlowLines();\n });\n this.checkDevice();\n window.addEventListener('resize', this.handleResize);\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.handleResize);\n },\n computed: {\n displayNodes: function displayNodes() {\n return this.nodes;\n }\n }\n};","map":{"version":3,"names":["Hammer","name","data","processType","currentType","scale","panEnabled","lastPosX","lastPosY","processOptions","value","label","nodes","id","type","x","y","url","isMobile","methods","drawFlowLines","canvas","$refs","flowCanvas","ctx","getContext","clearRect","width","height","lineWidth","strokeStyle","beginPath","moveTo","lineTo","stroke","font","fillStyle","textAlign","fillText","drawEmployeeFlow","drawSalesFlow","drawShippingFlow","handleNodeClick","nodeId","_this","node","find","n","startsWith","window","open","$router","push","err","$message","message","concat","checkDevice","innerWidth","applyScale","el","processFlow","style","transform","handleResize","zoomIn","zoomOut","resetZoom","changeProcessType","_this2","$nextTick","initHammer","_this3","hammertime","get","set","enable","direction","DIRECTION_ALL","on","e","newScale","Math","max","min","abs","deltaX","deltaY","isFinal","addEventListener","document","mounted","_this4","beforeDestroy","removeEventListener","computed","displayNodes"],"sources":["src/views/EmployeeProcess.vue"],"sourcesContent":["\n \n \n \n 业务流程图\n \n \n \n \n \n \n 员工入职业务流程\n 正常运行\n \n \n \n 本流程规范了新员工从招聘到入职的完整过程,确保人才招聘和入职流程的规范化和标准化。\n \n \n \n 7\n 总步骤\n \n \n 4\n 已完成\n \n \n 15天\n 平均耗时\n \n \n \n \n\n \n \n \n 当前流程类型: {{ currentType }}\n \n \n \n \n\n \n \n {{ node.label }}\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
本流程规范了新员工从招聘到入职的完整过程,确保人才招聘和入职流程的规范化和标准化。