diff --git a/applications/flow/__pycache__/serializers.cpython-36.pyc b/applications/flow/__pycache__/serializers.cpython-36.pyc index 9c93a81..33d613a 100644 Binary files a/applications/flow/__pycache__/serializers.cpython-36.pyc and b/applications/flow/__pycache__/serializers.cpython-36.pyc differ diff --git a/applications/flow/constants.py b/applications/flow/constants.py index 6f6bade..dbe8daf 100644 --- a/applications/flow/constants.py +++ b/applications/flow/constants.py @@ -36,3 +36,10 @@ PIPELINE_STATE_TO_FLOW_STATE = { StateType.CREATED: "positive", } + + +class NodeTemplateType: + # 空节点模板 + EmptyTemplate = "0" + # 带内容的节点模板 + ContentTemplate = "2" diff --git a/applications/flow/filters.py b/applications/flow/filters.py new file mode 100644 index 0000000..5fac4dc --- /dev/null +++ b/applications/flow/filters.py @@ -0,0 +1,5 @@ +import django_filters as filters + + +class NodeTemplateFilter(filters.FilterSet): + template_type = filters.CharFilter(lookup_expr="iexact") diff --git a/applications/flow/models.py b/applications/flow/models.py index 1ab9ad3..92ace10 100644 --- a/applications/flow/models.py +++ b/applications/flow/models.py @@ -4,7 +4,7 @@ from django.db import models from django.forms import BooleanField from django_mysql.models import JSONField -from applications.flow.constants import FAIL_OFFSET_UNIT_CHOICE +from applications.flow.constants import FAIL_OFFSET_UNIT_CHOICE, NodeTemplateType class Category(models.Model): @@ -101,4 +101,4 @@ class NodeRun(BaseNode): class NodeTemplate(BaseNode): - template_type = models.CharField("节点模板类型", max_length=1, default="2") + template_type = models.CharField("节点模板类型", max_length=1, default=NodeTemplateType.ContentTemplate) diff --git a/applications/flow/views.py b/applications/flow/views.py index ea36f8a..1cc18d9 100644 --- a/applications/flow/views.py +++ b/applications/flow/views.py @@ -6,6 +6,7 @@ from rest_framework import mixins from rest_framework.decorators import action from rest_framework.response import Response +from applications.flow.filters import NodeTemplateFilter from applications.flow.models import Process, Node, ProcessRun, NodeRun, NodeTemplate from applications.flow.serializers import ProcessViewSetsSerializer, ListProcessViewSetsSerializer, \ RetrieveProcessViewSetsSerializer, ExecuteProcessSerializer, ListProcessRunViewSetsSerializer, \ @@ -93,6 +94,7 @@ class NodeTemplateViewSet(mixins.ListModelMixin, GenericViewSet): queryset = NodeTemplate.objects.order_by("-id") serializer_class = NodeTemplateSerializer + filterset_class = NodeTemplateFilter # Create your views here. diff --git a/web/src/components/graph/behavior/drag-node.js b/web/src/components/graph/behavior/drag-node.js index e38bfb4..f351cae 100644 --- a/web/src/components/graph/behavior/drag-node.js +++ b/web/src/components/graph/behavior/drag-node.js @@ -112,10 +112,6 @@ export default G6 => { if (targetNode._cfg.model.nodeType === 0 && sourceNode._cfg.model.nodeType !== 3) { return this.graph.emit('before-edge-add', false, {msg: '禁止从开始节点结束!'}) } - //从作业流节点结束 - if (targetNode._cfg.model.nodeType === 3) { - return this.graph.emit('before-edge-add', false, {msg: '禁止从作业流节点结束!'}) - } let msg = '' this.graph.getEdges().forEach(line => { //重复连线 diff --git a/web/src/views/job_flow_mgmt/single_job_flow.vue b/web/src/views/job_flow_mgmt/single_job_flow.vue index 715e238..64a19c7 100644 --- a/web/src/views/job_flow_mgmt/single_job_flow.vue +++ b/web/src/views/job_flow_mgmt/single_job_flow.vue @@ -671,11 +671,6 @@ this.graph.emit('before-edge-add', false, {msg: '禁止从开始节点结束!'}) return false } - // 从作业流节点结束 - if (targetNode._cfg.model.nodeType === 3) { - this.graph.emit('before-edge-add', false, {msg: '禁止从作业流节点结束!'}) - return false - } let msg = '' this.graph.getEdges().forEach(line => { // 重复连线 diff --git a/web/src/views/job_flow_mgmt/single_job_flow/headerPanel.vue b/web/src/views/job_flow_mgmt/single_job_flow/headerPanel.vue index 9c74722..1de493e 100644 --- a/web/src/views/job_flow_mgmt/single_job_flow/headerPanel.vue +++ b/web/src/views/job_flow_mgmt/single_job_flow/headerPanel.vue @@ -306,7 +306,8 @@ } }) // 删除作业流节点及连线,避免干扰 - const flag = this.deleteFlowNode(paramData) + // const flag = this.deleteFlowNode(paramData) + const flag = true if (!flag) { this.validatorFlag = false return false diff --git a/web/src/views/job_flow_mgmt/single_job_flow/taskMake.vue b/web/src/views/job_flow_mgmt/single_job_flow/taskMake.vue index 7d44522..6c21e4b 100644 --- a/web/src/views/job_flow_mgmt/single_job_flow/taskMake.vue +++ b/web/src/views/job_flow_mgmt/single_job_flow/taskMake.vue @@ -131,7 +131,7 @@ getJobFlowList(str) { this.jobListLoading = true const params = { - category: this.form.system_id + page_size: 20 } if (str === 'search') { params.name = this.form.name @@ -156,7 +156,8 @@ getNodeTemplateList(str) { this.jobListLoading = true const params = { - category: this.form.system_id + template_type: this.form.makeType, + page_size: 999 } if (str === 'search') { params.name = this.form.name @@ -274,12 +275,50 @@ }, // 处理查询 handleSearch() { - if (!this.form.makeType) { - // 当前作业为未编排,查询获取作业列表 - this.getJobList('search') - } else { - // 当前作业为已编排,查询获取作业流列表 + if (this.form.makeType === 0) { + this.getNodeTemplateList('search') + } else if (this.form.makeType === 1) { + // 编排类型切换成已编排时,记录此时的跑批id + this.midRunId = this.form.system_id + // 编排类型切换为已编排时,当前跑批系统id不为空,默认获取作业流列表 this.getJobFlowList('search') + } else if (this.form.makeType === 2) { + this.getNodeTemplateList('search') + } else if (this.form.makeType === 3) { + this.jobList = [ + { + 'id': 45, + 'creator': 'product', + 'name': '条件网关', + 'type': 4, + 'nodeType': 4, + 'icon': 'e6d9' + }, + { + 'id': 46, + 'creator': 'product', + 'name': '并行网关', + 'type': 4, + 'nodeType': 4, + 'icon': 'e6d9' + }, + { + 'id': 47, + 'creator': 'product', + 'name': '汇聚网关', + 'type': 4, + 'nodeType': 4, + 'icon': 'e6d9' + }, + { + 'id': 48, + 'creator': 'product', + 'name': '条件并行网关', + 'type': 4, + 'nodeType': 4, + 'icon': 'e6d9' + } + ] } }, // 处理跑批系统id变化