From 22529d31261f8b19a66b2110851efa2ca5ab6a1e Mon Sep 17 00:00:00 2001 From: dengbf Date: Tue, 28 Oct 2025 15:16:28 +0800 Subject: [PATCH] =?UTF-8?q?-=20[=E5=85=B3=E8=81=94]=20#[1511731442974898]?= =?UTF-8?q?=E8=B6=85=E7=BA=A7=E6=B5=81=E6=B0=B4=E7=BA=BF=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E6=95=B4=E4=BD=93=E4=BF=9D=E5=AD=98=E6=A0=A1=E9=AA=8C=20http:/?= =?UTF-8?q?/192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/?= =?UTF-8?q?939050947543042/1511731442974898?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/deploy/pipeline/pipeline-edit.vue | 54 ++++++++- .../deploy/pipeline/valid-pipeline-dialog.vue | 104 ++++++++++++++++++ 2 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 src/views/pages/deploy/pipeline/valid-pipeline-dialog.vue diff --git a/src/views/pages/deploy/pipeline/pipeline-edit.vue b/src/views/pages/deploy/pipeline/pipeline-edit.vue index 11e8634c..b48aeb57 100644 --- a/src/views/pages/deploy/pipeline/pipeline-edit.vue +++ b/src/views/pages/deploy/pipeline/pipeline-edit.vue @@ -87,6 +87,12 @@
{{ $t('term.deploy.batchchannel') }}
+ import('./edit-jobtemplate-dialog.vue'), TsFormInput: () => import('@/resources/plugins/TsForm/TsFormInput'), - AuthDialog: () => import('./auth-dialog.vue') + AuthDialog: () => import('./auth-dialog.vue'), + ValidPipelineDialog: () => import('./valid-pipeline-dialog.vue') }, props: {}, data() { @@ -164,7 +171,10 @@ export default { }, isSaving: false, isUpdateJobTemplate: false, //true是从前端获取jobTemplate - jobTemplateMap: {} //编辑job时如果不存在则通过接口获取 + jobTemplateMap: {}, //编辑job时如果不存在则通过接口获取 + appConfigList: [], //应用配置列表 + validList: [], //校验列表 + isValidPipelineDialogShow: false //校验弹窗是否显示 }; }, beforeCreate() {}, @@ -285,6 +295,7 @@ export default { this.isLoading = true; this.$api.deploy.pipeline.getPipelineById(this.id).then(res => { this.pipelineData = res.Return; + this.appConfigList = res.Return.appConfigList || []; //在每个通道最后都增加一个空组 this.pipelineData.laneList.forEach(lane => { lane.groupList.push({ jobTemplateList: [] }); @@ -358,6 +369,14 @@ export default { this.$Message.info(this.$t('term.deploy.atleastaddajob')); return false; } + const validList = this.validParams(); + this.validList = validList; + if (validList.length > 0) { + this.isValidPipelineDialogShow = true; + return false; + } else { + this.isValidPipelineDialogShow = false; + } this.isSaving = true; this.$api.deploy.pipeline.savePipeline(this.pipelineData).then(res => { if (res.Status == 'OK') { @@ -390,6 +409,37 @@ export default { }); } }); + }, + validParams() { + let errorList = []; + if (!this.$utils.isEmpty(this.appConfigList)) { + this.pipelineData.laneList.forEach((lane, laneIndex) => { + lane.groupList.forEach((group, groupIndex) => { + group.jobTemplateList.forEach((job, jobIndex) => { + const params = job.config && job.config.param || {}; + const findItem = this.appConfigList.find(item => item.appSystemId === job.appSystemId); + if (findItem && findItem.config && !this.$utils.isEmpty(findItem.config.runtimeParamList)) { + for (let i = 0; i < findItem.config.runtimeParamList.length; i++) { + const runtimeParamObj = findItem.config.runtimeParamList[i]; + if (runtimeParamObj.isRequired && this.$utils.isEmpty(params[runtimeParamObj.key])) { + errorList.push({ + type: 'error', + editJob: job, + group: group, + message: '第' + (laneIndex + 1) + '通道,第' + (groupIndex + 1) + '组,第' + (jobIndex + 1) + '个作业:作业参数请填写完整' + }); + break; + } + } + } + }); + }); + }); + } + return errorList; + }, + clickItem(valid) { + this.editJob(valid.editJob, valid.group); } }, filter: {}, diff --git a/src/views/pages/deploy/pipeline/valid-pipeline-dialog.vue b/src/views/pages/deploy/pipeline/valid-pipeline-dialog.vue new file mode 100644 index 00000000..fee842d3 --- /dev/null +++ b/src/views/pages/deploy/pipeline/valid-pipeline-dialog.vue @@ -0,0 +1,104 @@ + + + -- Gitee