(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[5],{ /***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/common/TimeExpressionValidator.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/common/TimeExpressionValidator.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"TimeExpressionValidator\",\n // 数据传递\n props: [\"timeExpressionType\", \"timeExpression\"],\n data() {\n return {\n nextNTriggerTime: []\n };\n },\n methods: {\n checkTimeExpression() {\n let that = this;\n let url = \"/validate/timeExpression?timeExpressionType=\" + this.timeExpressionType + \"&timeExpression=\" + this.timeExpression;\n this.axios.get(url).then(res => that.nextNTriggerTime = res);\n }\n },\n mounted() {\n console.log(\"type:\" + this.timeExpressionType);\n console.log(\"expression:\" + this.timeExpression);\n this.timeExpression = encodeURIComponent(this.timeExpression);\n console.log(\"expressionAfterEncodeURIComponent: \" + this.timeExpression);\n this.checkTimeExpression();\n }\n});\n\n//# sourceURL=webpack:///./src/components/common/TimeExpressionValidator.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), /***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/dag/WorkflowEditor.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/dag/WorkflowEditor.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _JSEditor_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JSEditor.vue */ \"./src/components/dag/JSEditor.vue\");\n/* harmony import */ var _common_TimeExpressionValidator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/TimeExpressionValidator */ \"./src/components/common/TimeExpressionValidator.vue\");\n/* harmony import */ var _PowerWorkflow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PowerWorkflow */ \"./src/components/dag/PowerWorkflow.vue\");\n/* harmony import */ var _views_WorkflowManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../views/WorkflowManager */ \"./src/components/views/WorkflowManager.vue\");\n\n\n\n\nfunction nodeInfoChange(icon, index) {\n return function (value) {\n if (!this.selectNode) return;\n const group = this.selectNode.getContainer();\n const current = group.getChildByIndex(index);\n if (value) {\n current.attr({\n img: icon\n });\n } else {\n current.attr({\n img: \"\"\n });\n }\n };\n}\n\n/** 节点类型映射 */\nconst nodeType = {\n 1: item => {\n return {\n type: \"flow-node\",\n size: [240, 70],\n leftText: item.jobId,\n titleText: item.nodeName,\n icon1: item.enable ? __webpack_require__(/*! ../../assets/start.svg */ \"./src/assets/start.svg\") : \"\",\n icon2: item.skipWhenFailed ? __webpack_require__(/*! ../../assets/skip.svg */ \"./src/assets/skip.svg\") : \"\"\n };\n },\n 2: item => {\n return {\n type: \"max-diamond-node\",\n text: !item.nodeName ? \"判断\" : item.nodeName,\n style: {\n sideLength: 80,\n textStyle: {\n // fill: \"#FFFFFF\",\n }\n // fill: \"#FE9201\",\n // stroke: \"#D45547\",\n }\n };\n },\n 3: item => {\n return {\n type: \"flow-child-node\",\n size: [240, 70],\n leftText: item.jobId,\n titleText: item.nodeName,\n icon1: item.enable ? __webpack_require__(/*! ../../assets/start.svg */ \"./src/assets/start.svg\") : \"\",\n icon2: item.skipWhenFailed ? __webpack_require__(/*! ../../assets/skip.svg */ \"./src/assets/skip.svg\") : \"\"\n };\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"WorkflowEditor\",\n components: {\n TimeExpressionValidator: _common_TimeExpressionValidator__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n PowerWorkflow: _PowerWorkflow__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n JSEditor: _JSEditor_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n WorkflowManager: _views_WorkflowManager__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n data() {\n return {\n workflowInfo: {\n id: \"\",\n appId: window.localStorage.getItem(\"Power_appId\"),\n enable: true,\n maxWfInstanceNum: 1,\n notifyUserIds: [],\n timeExpression: undefined,\n timeExpressionType: undefined,\n wfDescription: undefined,\n wfName: undefined,\n lifeCycle: null\n },\n nodeInfo: {\n id: null,\n jobId: null,\n nodeName: \"\",\n nodeParams: \"\",\n enable: true,\n skipWhenFailed: true\n },\n timeExpressionTypeOptions: [{\n key: \"API\",\n label: \"API\"\n }, {\n key: \"CRON\",\n label: \"CRON\"\n }],\n userList: [],\n // 导入任务相关\n importDrawerVisible: false,\n jobQueryContent: {\n appId: window.localStorage.getItem(\"Power_appId\"),\n index: 0,\n pageSize: 8,\n jobId: undefined,\n keyword: undefined\n },\n jobInfoPageResult: {\n pageSize: 20,\n totalItems: 0,\n data: []\n },\n // 事件(1:新增起点,2:新增终点,3:删除节点;4:删除边)\n event: undefined,\n from: undefined,\n // 时间表达式校验窗口\n timeExpressionValidatorVisible: false,\n /** DAG信息 */\n peworkflowDAG: {\n nodes: [],\n edges: []\n },\n /** 保存按钮loading */\n saveLoading: false,\n /** 流程图实例 */\n powerFlow: null,\n /** 选中的数据 */\n multipleSelection: [],\n /** 当前的节点信息 */\n taskList: [],\n /** 当前选中的节点 */\n selectNode: null,\n /** 重置节点方法 */\n resetNodes: null,\n /** 待选任务列表 */\n waitTaskList: [],\n /** 任务搜索loading */\n taskLoading: false,\n /** 任务节流 */\n taskTimeout: null,\n /** 工作流引入显隐控制 */\n workflowVisible: false\n };\n },\n methods: {\n // 返回上一页\n back: function () {\n this.$router.go(-1);\n },\n /* ******** 导入任务相关,所有函数与 JobManager 重复,需要前端大佬重构! ******** */\n // 点击重置按钮\n onClickReset() {\n this.jobQueryContent.keyword = undefined;\n this.jobQueryContent.jobId = undefined;\n this.listJobInfos();\n },\n // 列出符合当前搜索条件的任务\n listJobInfos() {\n const that = this;\n this.axios.post(\"/job/list\", this.jobQueryContent).then(res => {\n that.jobInfoPageResult = res;\n });\n },\n // 点击 换页\n onClickChangePage(index) {\n // 后端从0开始,前端从1开始\n this.jobQueryContent.index = index - 1;\n this.listJobInfos();\n },\n onClickImportNode() {\n this.listJobInfos();\n this.importDrawerVisible = true;\n },\n /** 引入其他类型节点, 判断,工作流 */\n onClickImportSpecialNode(data) {\n const {\n type\n } = data;\n console.log(type);\n if (type === 3) {\n this.workflowVisible = true;\n } else {\n this.importTask([{\n appId: this.workflowInfo.appId,\n jobParams: \"true\",\n type: type,\n workflowId: this.workflowInfo.id,\n jobName: \"\"\n }]);\n }\n },\n /** 引入嵌套工作流节点 */\n onImportChildWorkflowNode(data) {\n this.importTask([{\n appId: this.workflowInfo.appId,\n nodeName: data.wfName,\n enable: data.enable,\n id: data.id,\n nodeParams: \"\",\n type: 3,\n workflowId: this.workflowInfo.id,\n jobName: data.wfName\n }]);\n },\n onClickValidateTimeExpression() {\n this.timeExpressionValidatorVisible = true;\n },\n /** 选中节点 */\n handleSelectedNode(item) {\n this.selectNode = item;\n\n // 从节点列表找到节点\n let index = this.getNodeIndexById(item.get(\"model\").nodeId);\n let node = this.taskList[index];\n // if (node.type === \"condition\") return false;\n this.remoteTaskData(null, node.jobId);\n console.log(node);\n this.nodeInfo = {\n type: node.nodeType,\n jobId: node.jobId,\n nodeName: node.nodeName ? node.nodeName : node.nodeType == 2 ? \"判断\" : node.nodeName,\n nodeParams: node.nodeParams,\n enable: node.enable,\n skipWhenFailed: node.skipWhenFailed,\n id: item.get(\"model\").nodeId || item.get(\"model\").id\n };\n },\n /** 多选节点 */\n handleSelectionChange(val) {\n this.multipleSelection = val;\n },\n /** 修改节点名称 */\n handleNodeName(value) {\n const nodeItem = this.powerFlow.graph.get(\"selectedItem\");\n const group = nodeItem.getContainer();\n const current = group.getChildByIndex(2);\n current.attr(\"text\", value);\n },\n /** 获取工作流程图实例 */\n getDag(powerFlow, {\n resetNodes\n }) {\n this.powerFlow = powerFlow;\n this.resetNodes = resetNodes;\n },\n /** 根据nodeId找任务节点索引 */\n getNodeIndexById(nodeId) {\n return this.taskList.findIndex(item => item.nodeId == nodeId);\n },\n /** 获取工作流信息 */\n async getWorkflowInfo(fit) {\n const res = await this.axios.get(\"/workflow/fetch\", {\n params: {\n workflowId: this.workflowInfo.id,\n appId: this.workflowInfo.appId\n }\n });\n this.workflowInfo = {\n ...this.workflowInfo,\n ...res\n };\n if (res.peworkflowDAG) {\n this.taskList = res.peworkflowDAG.nodes;\n this.peworkflowDAG = res.peworkflowDAG;\n this.$nextTick(() => {\n this.resetNodes();\n if (fit) {\n // this.powerFlow.graph.fitView(20);\n // 改为layout适配会对节点少的时候友好一点\n this.powerFlow.graph.layout();\n }\n });\n }\n },\n /** 保存工作流全局信息 */\n async saveWorkflow() {\n // 改为不需要dag信息\n const flowData = this.powerFlow.graph.save();\n console.log(flowData);\n let dagInfo = {\n nodes: flowData.nodes.map(item => ({\n nodeId: item.id\n })),\n edges: flowData.edges.map(item => {\n const property = {};\n if (item.label) {\n property.property = item.label === \"Y\" ? \"true\" : \"false\";\n }\n return {\n from: item.source,\n to: item.target,\n ...property\n };\n })\n };\n const {\n lifeCycle\n } = this.workflowInfo;\n if (lifeCycle && Array.isArray(lifeCycle)) {\n const start = lifeCycle[0];\n const end = lifeCycle[1];\n this.workflowInfo.lifeCycle = {\n start,\n end\n };\n }\n const res = await this.axios.post(\"/workflow/save\", {\n ...this.workflowInfo,\n dag: dagInfo\n });\n this.$message.success(this.$t(\"message.success\"));\n if (!this.workflowInfo.id) this.workflowInfo.id = res;\n },\n /** 导入任务节点数据 */\n async importTask(taskList) {\n if (taskList.length === 0) {\n return;\n }\n let type = \"\";\n let data = taskList.map(item => {\n type = item.type ? Number(item.type) : 1;\n return {\n appId: item.appId,\n enable: item.enable,\n skipWhenFailed: item.skipWhenFailed,\n nodeName: item.jobName,\n jobId: item.id,\n nodeParams: item.jobParams,\n workflowId: this.workflowInfo.id,\n // type: \"JOB\"\n type: type\n };\n });\n let res = await this.axios.post(\"/workflow/saveNode\", data);\n console.log(res);\n // 先移动视口一个节点点的位置\n // 获取缩放比例\n const zoom = this.powerFlow.graph.getZoom();\n this.powerFlow.graph.translate(260 * zoom, 0);\n const viewPointEnd = this.powerFlow.graph.getPointByCanvas(0, 0);\n res.forEach((item, index) => {\n const nodeText = nodeType[type](item);\n this.powerFlow.graph.add(\"node\", {\n ...item,\n id: `${item.id}`,\n nodeId: `${item.id}`,\n nodeType: `${item.type}`,\n // type: nodeType[item.type],\n size: [240, 70],\n x: viewPointEnd.x + 20,\n y: viewPointEnd.y + 70 * index + 20 + index * 10,\n ...nodeText\n // leftText: item.jobId,\n // titleText: item.nodeName,\n // icon1: item.enable ? require(\"../../assets/start.svg\") : \"\",\n // icon2: item.skipWhenFailed ? require(\"../../assets/skip.svg\") : \"\",\n });\n });\n this.taskList = [...this.taskList, ...res.map(item => ({\n ...item,\n nodeType: item.type,\n nodeParams: item.nodeParams,\n nodeId: item.id\n }))];\n },\n /** 保存单个节点 */\n async handleNodeSave(value = {}) {\n let data = [{\n ...this.nodeInfo,\n appId: this.workflowInfo.appId,\n workflowId: this.workflowInfo.id,\n ...value\n }];\n await this.axios.post(\"/workflow/saveNode\", data);\n let index = this.getNodeIndexById(this.nodeInfo.id);\n this.taskList[index] = {\n ...this.taskList[index],\n nodeName: this.nodeInfo.nodeName,\n nodeParams: this.nodeInfo.nodeParams,\n enable: this.nodeInfo.enable,\n skipWhenFailed: this.nodeInfo.skipWhenFailed\n };\n this.$message.success(this.$t(\"message.success\"));\n },\n /** 批量导入工作流 */\n async onBulkImport() {\n if (this.multipleSelection.length === 0) {\n this.$message.warning(this.$t(\"message.noSelect\"));\n return;\n }\n await this.importTask(this.multipleSelection);\n },\n /** 远程加载任务列表数据 */\n async remoteTaskData(value, jobId) {\n clearTimeout(this.taskTimeout);\n this.taskTimeout = setTimeout(() => {\n this.taskLoading = true;\n console.log(this.nodeInfo);\n let url = \"/job/list\";\n if (this.nodeInfo.type === 3) {\n url = \"/workflow/list\";\n }\n this.axios.post(url, {\n ...this.jobQueryContent,\n index: 0,\n keyword: value,\n jobId: jobId\n }).then(res => {\n this.waitTaskList = res.data;\n this.taskLoading = false;\n });\n }, 100);\n },\n /** 选中任务时 */\n handleWaitTaskChange(value) {\n // 找到节点信息\n let current = this.waitTaskList.find(item => item.id === value);\n let currentShape = this.selectNode.getContainer().getChildByIndex(1);\n currentShape.attr({\n text: current.id\n });\n let index = this.getNodeIndexById(this.selectNode.get(\"model\").nodeId);\n this.powerFlow.graph.updateItem(this.selectNode, {\n leftText: current.id,\n jobId: current.id\n });\n this.taskList[index] = {\n ...this.taskList[index],\n jobId: current.id\n };\n this.nodeInfo.jobId = value;\n },\n /** 节点外点击时单独处理 */\n handleWaitFocus() {\n this.powerFlow.graph.set(\"noKeyDown\", true);\n },\n /** 判断节点参数改变 */\n onCodeChange(code) {\n this.nodeInfo.nodeParams = code;\n }\n },\n mounted() {\n // 加载用户信息\n let that = this;\n that.axios.get(\"/user/list\").then(res => that.userList = res);\n\n // 读取传递数据,如果是修改,需要先将数据绘制上去\n let modify = this.$route.params.modify;\n if (modify) {\n this.workflowInfo = this.$route.params.workflowInfo;\n if (this.workflowInfo.lifeCycle) {\n const {\n start,\n end\n } = this.workflowInfo.lifeCycle;\n this.workflowInfo.lifeCycle = [start, end];\n } else {\n this.workflowInfo.lifeCycle = null;\n }\n this.workflowInfo.appId = window.localStorage.getItem(\"Power_appId\");\n this.getWorkflowInfo(true);\n }\n },\n watch: {\n \"nodeInfo.enable\": {\n handler: nodeInfoChange(__webpack_require__(/*! ../../assets/start.svg */ \"./src/assets/start.svg\"), 3)\n },\n \"nodeInfo.skipWhenFailed\": {\n handler: nodeInfoChange(__webpack_require__(/*! ../../assets/skip.svg */ \"./src/assets/skip.svg\"), 4)\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/dag/WorkflowEditor.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), /***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"77823dab-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/common/TimeExpressionValidator.vue?vue&type=template&id=053ae4d9&scoped=true": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"77823dab-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/common/TimeExpressionValidator.vue?vue&type=template&id=053ae4d9&scoped=true ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"el-card\", {\n staticClass: \"box-card\"\n }, _vm._l(_vm.nextNTriggerTime, function (res) {\n return _c(\"div\", {\n key: res,\n staticClass: \"text item\"\n }, [_vm._v(\" \" + _vm._s(res) + \" \")]);\n }), 0)], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n\n\n//# sourceURL=webpack:///./src/components/common/TimeExpressionValidator.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%2277823dab-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), /***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"77823dab-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/dag/WorkflowEditor.vue?vue&type=template&id=6eb224e1&scoped=true": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"77823dab-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/dag/WorkflowEditor.vue?vue&type=template&id=6eb224e1&scoped=true ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"el-row\", {\n staticStyle: {\n \"margin-left\": \"0px\",\n \"margin-bottom\": \"20px\",\n \"margin-right\": \"25px\"\n }\n }, [_c(\"el-col\", {\n attrs: {\n span: 1\n }\n }, [_c(\"el-button\", {\n attrs: {\n type: \"primary\"\n },\n on: {\n click: _vm.back\n }\n }, [_vm._v(_vm._s(_vm.$t(\"message.back\")))])], 1), _c(\"el-col\", {\n attrs: {\n span: 1,\n offset: 22\n }\n }, [_c(\"el-button\", {\n attrs: {\n type: \"success\",\n loading: _vm.saveLoading\n },\n on: {\n click: _vm.saveWorkflow\n }\n }, [_vm._v(_vm._s(_vm.$t(\"message.save\")))])], 1)], 1), _c(\"el-row\", [_c(\"el-form\", {\n ref: \"form\",\n attrs: {\n model: _vm.workflowInfo,\n \"label-width\": \"100px\"\n }\n }, [_c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.wfName\")\n }\n }, [_c(\"el-input\", {\n model: {\n value: _vm.workflowInfo.wfName,\n callback: function ($$v) {\n _vm.$set(_vm.workflowInfo, \"wfName\", $$v);\n },\n expression: \"workflowInfo.wfName\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.wfDescription\")\n }\n }, [_c(\"el-input\", {\n model: {\n value: _vm.workflowInfo.wfDescription,\n callback: function ($$v) {\n _vm.$set(_vm.workflowInfo, \"wfDescription\", $$v);\n },\n expression: \"workflowInfo.wfDescription\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.scheduleInfo\")\n }\n }, [_c(\"el-row\", [_c(\"el-col\", {\n attrs: {\n span: 6\n }\n }, [_c(\"el-select\", {\n attrs: {\n placeholder: _vm.$t(\"message.timeExpressionType\")\n },\n model: {\n value: _vm.workflowInfo.timeExpressionType,\n callback: function ($$v) {\n _vm.$set(_vm.workflowInfo, \"timeExpressionType\", $$v);\n },\n expression: \"workflowInfo.timeExpressionType\"\n }\n }, _vm._l(_vm.timeExpressionTypeOptions, function (item) {\n return _c(\"el-option\", {\n key: item.key,\n attrs: {\n label: item.label,\n value: item.key\n }\n });\n }), 1)], 1), _c(\"el-col\", {\n attrs: {\n span: 12\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: _vm.$t(\"message.wfTimeExpressionPLH\")\n },\n model: {\n value: _vm.workflowInfo.timeExpression,\n callback: function ($$v) {\n _vm.$set(_vm.workflowInfo, \"timeExpression\", $$v);\n },\n expression: \"workflowInfo.timeExpression\"\n }\n })], 1), _c(\"el-col\", {\n attrs: {\n span: 4\n }\n }, [_c(\"el-button\", {\n attrs: {\n type: \"text\"\n },\n on: {\n click: _vm.onClickValidateTimeExpression\n }\n }, [_vm._v(_vm._s(_vm.$t(\"message.validateTimeExpression\")))])], 1)], 1)], 1), _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.lifeCycle\")\n }\n }, [_c(\"el-date-picker\", {\n attrs: {\n type: \"datetimerange\",\n \"start-placeholder\": _vm.$t(\"message.startTime\"),\n \"end-placeholder\": _vm.$t(\"message.finishedTime\"),\n \"value-format\": \"timestamp\"\n },\n model: {\n value: _vm.workflowInfo.lifeCycle,\n callback: function ($$v) {\n _vm.$set(_vm.workflowInfo, \"lifeCycle\", $$v);\n },\n expression: \"workflowInfo.lifeCycle\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.maxInstanceNum\")\n }\n }, [_c(\"el-input-number\", {\n model: {\n value: _vm.workflowInfo.maxWfInstanceNum,\n callback: function ($$v) {\n _vm.$set(_vm.workflowInfo, \"maxWfInstanceNum\", $$v);\n },\n expression: \"workflowInfo.maxWfInstanceNum\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.alarmConfig\")\n }\n }, [_c(\"el-select\", {\n attrs: {\n multiple: \"\",\n filterable: \"\",\n placeholder: _vm.$t(\"message.alarmSelectorPLH\")\n },\n model: {\n value: _vm.workflowInfo.notifyUserIds,\n callback: function ($$v) {\n _vm.$set(_vm.workflowInfo, \"notifyUserIds\", $$v);\n },\n expression: \"workflowInfo.notifyUserIds\"\n }\n }, _vm._l(_vm.userList, function (user) {\n return _c(\"el-option\", {\n key: user.id,\n attrs: {\n label: user.username,\n value: user.id\n }\n });\n }), 1)], 1)], 1)], 1), _c(\"el-row\", [_c(\"div\", {\n staticClass: \"power-flow\"\n }, [_c(\"div\", {\n staticClass: \"power-dag\",\n attrs: {\n id: \"fullInc\"\n }\n }, [_c(\"PowerWorkflow\", {\n attrs: {\n onClickImportSpecialNode: _vm.onClickImportSpecialNode,\n onClickImportNode: _vm.onClickImportNode,\n selectNode: _vm.selectNode,\n nodes: _vm.peworkflowDAG.nodes,\n edges: _vm.peworkflowDAG.edges,\n defaultWidthInc: 234,\n fullInc: \"fullInc\"\n },\n on: {\n onSelectedNode: _vm.handleSelectedNode,\n getDag: _vm.getDag\n }\n }, [_vm.selectNode !== null ? _c(\"div\", {\n staticClass: \"job-panl\"\n }, [_c(\"el-form\", {\n ref: \"form\",\n attrs: {\n model: _vm.nodeInfo\n }\n }, [_vm.nodeInfo.type != \"2\" ? _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.jobName\")\n }\n }, [_c(\"el-select\", {\n style: {\n width: \"calc(100% - 90px)\"\n },\n attrs: {\n filterable: \"\",\n remote: \"\",\n \"reserve-keyword\": \"\",\n placeholder: \"请输入关键词\",\n \"remote-method\": _vm.remoteTaskData,\n loading: _vm.taskLoading\n },\n on: {\n focus: _vm.handleWaitFocus,\n change: _vm.handleWaitTaskChange\n },\n model: {\n value: _vm.nodeInfo.jobId,\n callback: function ($$v) {\n _vm.$set(_vm.nodeInfo, \"jobId\", $$v);\n },\n expression: \"nodeInfo.jobId\"\n }\n }, _vm._l(_vm.waitTaskList, function (item) {\n return _c(\"el-option\", {\n key: item.id,\n attrs: {\n label: item.jobName || item.wfName,\n value: item.id\n }\n });\n }), 1)], 1) : _vm._e(), _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.nodeName\")\n }\n }, [_c(\"el-input\", {\n style: {\n width: \"calc(100% - 90px)\"\n },\n on: {\n input: _vm.handleNodeName\n },\n model: {\n value: _vm.nodeInfo.nodeName,\n callback: function ($$v) {\n _vm.$set(_vm.nodeInfo, \"nodeName\", $$v);\n },\n expression: \"nodeInfo.nodeName\"\n }\n })], 1), _vm.nodeInfo.type != \"2\" ? _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.nodeParams\")\n }\n }, [_c(\"el-input\", {\n style: {\n width: \"calc(100% - 90px)\"\n },\n model: {\n value: _vm.nodeInfo.nodeParams,\n callback: function ($$v) {\n _vm.$set(_vm.nodeInfo, \"nodeParams\", $$v);\n },\n expression: \"nodeInfo.nodeParams\"\n }\n })], 1) : _vm._e(), _vm.nodeInfo.type != \"2\" ? _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.enable\")\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.nodeInfo.enable,\n callback: function ($$v) {\n _vm.$set(_vm.nodeInfo, \"enable\", $$v);\n },\n expression: \"nodeInfo.enable\"\n }\n }), _vm.nodeInfo.enable ? _c(\"img\", {\n staticClass: \"job-panl-icon\",\n attrs: {\n src: __webpack_require__(/*! ../../assets/start.svg */ \"./src/assets/start.svg\"),\n height: \"18\",\n width: \"18\",\n alt: \"\"\n }\n }) : _vm._e()], 1) : _vm._e(), _vm.nodeInfo.type != \"2\" ? _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.skipWhenFailed\")\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.nodeInfo.skipWhenFailed,\n callback: function ($$v) {\n _vm.$set(_vm.nodeInfo, \"skipWhenFailed\", $$v);\n },\n expression: \"nodeInfo.skipWhenFailed\"\n }\n }), _vm.nodeInfo.skipWhenFailed ? _c(\"img\", {\n staticClass: \"job-panl-icon\",\n attrs: {\n src: __webpack_require__(/*! ../../assets/skip.svg */ \"./src/assets/skip.svg\"),\n height: \"18\",\n width: \"18\",\n alt: \"\"\n }\n }) : _vm._e()], 1) : _vm._e()], 1), _vm.nodeInfo.type == \"2\" ? _c(\"div\", {\n staticClass: \"judge-message-params\"\n }, [_c(\"p\", [_vm._v(_vm._s(_vm.$t(\"message.nodeParams\")))]), _c(\"JSEditor\", {\n key: \"nodeParams\",\n attrs: {\n code: _vm.nodeInfo.nodeParams\n },\n on: {\n onCodeChange: _vm.onCodeChange\n }\n })], 1) : _vm._e(), _c(\"div\", {\n staticClass: \"job-panl-btn\"\n }, [_c(\"el-button\", {\n attrs: {\n type: \"success\"\n },\n on: {\n click: _vm.handleNodeSave\n }\n }, [_vm._v(_vm._s(_vm.$t(\"message.save\")))])], 1)], 1) : _vm._e()]), _c(\"el-drawer\", {\n attrs: {\n title: _vm.$t(\"message.importJobTitle\"),\n visible: _vm.importDrawerVisible,\n direction: \"rtl\",\n size: \"60%\"\n },\n on: {\n \"update:visible\": function ($event) {\n _vm.importDrawerVisible = $event;\n }\n }\n }, [_c(\"div\", {\n staticClass: \"power-import-body\"\n }, [_c(\"el-row\", [_c(\"el-form\", {\n staticClass: \"el-form--inline\",\n attrs: {\n inline: true,\n model: _vm.jobQueryContent\n }\n }, [_c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.jobId\")\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: _vm.$t(\"message.jobId\")\n },\n model: {\n value: _vm.jobQueryContent.jobId,\n callback: function ($$v) {\n _vm.$set(_vm.jobQueryContent, \"jobId\", $$v);\n },\n expression: \"jobQueryContent.jobId\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: _vm.$t(\"message.keyword\")\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: _vm.$t(\"message.keyword\")\n },\n model: {\n value: _vm.jobQueryContent.keyword,\n callback: function ($$v) {\n _vm.$set(_vm.jobQueryContent, \"keyword\", $$v);\n },\n expression: \"jobQueryContent.keyword\"\n }\n })], 1), _c(\"el-form-item\", [_c(\"el-button\", {\n attrs: {\n type: \"primary\"\n },\n on: {\n click: _vm.listJobInfos\n }\n }, [_vm._v(_vm._s(_vm.$t(\"message.query\")))]), _c(\"el-button\", {\n attrs: {\n type: \"cancel\"\n },\n on: {\n click: _vm.onClickReset\n }\n }, [_vm._v(_vm._s(_vm.$t(\"message.reset\")))]), _c(\"el-button\", {\n attrs: {\n type: \"cancel\"\n },\n on: {\n click: _vm.onBulkImport\n }\n }, [_vm._v(_vm._s(_vm.$t(\"message.bulkImport\")))])], 1)], 1)], 1), _c(\"el-table\", {\n staticClass: \"power-import-table\",\n attrs: {\n data: _vm.jobInfoPageResult.data\n },\n on: {\n \"selection-change\": _vm.handleSelectionChange\n }\n }, [_c(\"el-table-column\", {\n attrs: {\n type: \"selection\",\n width: \"55\"\n }\n }), _c(\"el-table-column\", {\n attrs: {\n property: \"id\",\n label: _vm.$t(\"message.jobId\")\n }\n }), _c(\"el-table-column\", {\n attrs: {\n property: \"jobName\",\n label: _vm.$t(\"message.jobName\")\n }\n }), _c(\"el-table-column\", {\n attrs: {\n label: _vm.$t(\"message.operation\")\n },\n scopedSlots: _vm._u([{\n key: \"default\",\n fn: function (scope) {\n return [_c(\"el-button\", {\n attrs: {\n size: \"medium\"\n },\n on: {\n click: function ($event) {\n return _vm.importTask([scope.row]);\n }\n }\n }, [_vm._v(_vm._s(_vm.$t(\"message.import\")))])];\n }\n }])\n })], 1), _c(\"el-row\", [_c(\"el-pagination\", {\n attrs: {\n layout: \"prev, pager, next\",\n total: this.jobInfoPageResult.totalItems,\n \"page-size\": this.jobInfoPageResult.pageSize\n },\n on: {\n \"current-change\": _vm.onClickChangePage\n }\n })], 1)], 1)])], 1)])]), _vm.timeExpressionValidatorVisible ? _c(\"el-dialog\", {\n attrs: {\n visible: _vm.timeExpressionValidatorVisible\n },\n on: {\n \"update:visible\": function ($event) {\n _vm.timeExpressionValidatorVisible = $event;\n }\n }\n }, [_c(\"TimeExpressionValidator\", {\n attrs: {\n \"time-expression\": _vm.workflowInfo.timeExpression,\n \"time-expression-type\": _vm.workflowInfo.timeExpressionType\n }\n })], 1) : _vm._e(), _c(\"el-drawer\", {\n attrs: {\n title: _vm.$t(\"message.importWorkflowTitle\"),\n visible: _vm.workflowVisible,\n direction: \"rtl\",\n size: \"60%\"\n },\n on: {\n \"update:visible\": function ($event) {\n _vm.workflowVisible = $event;\n }\n }\n }, [_c(\"WorkflowManager\", {\n attrs: {\n isWorkflow: true\n },\n on: {\n onImportNode: _vm.onImportChildWorkflowNode\n }\n })], 1)], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\n\n\n//# sourceURL=webpack:///./src/components/dag/WorkflowEditor.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%2277823dab-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/dag/WorkflowEditor.vue?vue&type=style&index=0&id=6eb224e1&scoped=true&lang=css": /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/dag/WorkflowEditor.vue?vue&type=style&index=0&id=6eb224e1&scoped=true&lang=css ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"\\n.el-input[data-v-6eb224e1] {\\n width: 80%;\\n}\\n.job-panl-icon[data-v-6eb224e1] {\\n vertical-align: middle;\\n}\\n.title[data-v-6eb224e1] {\\n display: inline-block;\\n margin: 5px 0;\\n font-size: 16px;\\n font-weight: bold;\\n}\\n.power-dag[data-v-6eb224e1] {\\n width: 100%;\\n display: flex;\\n justify-content: space-between;\\n}\\n.job-panl[data-v-6eb224e1] {\\n /* border: 1px solid red; */\\n flex: 1;\\n position: relative;\\n border-radius: 10px;\\n box-shadow: 0 10px 10px 1px #c0c0c0;\\n border-top-right-radius: 0px;\\n box-sizing: border-box;\\n margin: 0 10px;\\n padding: 10px;\\n height: 100%;\\n}\\n.job-panl-btn[data-v-6eb224e1] {\\n /* position: absolute;\\n bottom: 0; */\\n display: flex;\\n justify-content: flex-end;\\n width: 100%;\\n /* margin-right: 12px; */\\n box-sizing: border-box;\\n padding: 12px;\\n border-top: 1px solid #f0f0f0;\\n}\\n.job-tools[data-v-6eb224e1] {\\n width: calc(100% - 10px);\\n box-sizing: border-box;\\n border: 1px solid #d0d0d0;\\n /* box-shadow: 0 0 10px 1px #c0c0c0; */\\n border-radius: 10px;\\n margin-right: 10px;\\n border-bottom-left-radius: 0px;\\n border-bottom-right-radius: 0px;\\n display: flex;\\n padding: 8px 10px;\\n}\\n.job-tools > div[data-v-6eb224e1] {\\n box-sizing: border-box;\\n height: 30px;\\n width: 30px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n cursor: pointer;\\n}\\n.job-tools div[data-v-6eb224e1]:hover {\\n border: 1px solid #f0f0f0;\\n}\\n.job-tools > div + div[data-v-6eb224e1] {\\n margin-left: 24px;\\n}\\n.job-tools i[data-v-6eb224e1] {\\n font-size: 20px;\\n /* color: #aaaaaa; */\\n}\\n.power-import-body[data-v-6eb224e1] {\\n padding: 0px 20px;\\n}\\n/* .el-drawer__body {\\n padding: 0 20px;\\n} */\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/components/dag/WorkflowEditor.vue?./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/dag/WorkflowEditor.vue?vue&type=style&index=1&id=6eb224e1&lang=css": /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/dag/WorkflowEditor.vue?vue&type=style&index=1&id=6eb224e1&lang=css ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"\\nsvg {\\n font-size: 16px;\\n border: 1px solid red;\\n}\\n.power-flow {\\n background: #fff;\\n}\\n.node rect {\\n stroke: #999;\\n fill: #fff;\\n stroke-width: 1.5px;\\n}\\n.edgePath path {\\n stroke: #333;\\n stroke-width: 1px;\\n}\\n.power-import-table .el-table-column--selection > .cell {\\n padding-left: 15px;\\n}\\n.judge-message-params {\\n font-size: 14px;\\n color: #606266;\\n}\\n.judge-message-params p {\\n margin-bottom: 4px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/components/dag/WorkflowEditor.vue?./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), /***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/dag/WorkflowEditor.vue?vue&type=style&index=0&id=6eb224e1&scoped=true&lang=css": /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/vue-style-loader??ref--6-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/dag/WorkflowEditor.vue?vue&type=style&index=0&id=6eb224e1&scoped=true&lang=css ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("// style-loader: Adds some css to the DOM by adding a