From 207a10e794d1b1654dafdb64e217704e26d68998 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Tue, 29 Apr 2025 17:46:32 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E7=9A=84=E5=AE=9E=E4=BE=8B=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1389297788223488]环境的实例列表 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1389297788223488 --- .../application-config/application-config.js | 8 ++ .../env/env-instance-bluegreen-dialog.vue | 50 +++++++--- .../config/env/env-instance-edit.vue | 28 +++++- .../config/env/env-instance-list.vue | 97 ++++++++++++++++++- 4 files changed, 164 insertions(+), 19 deletions(-) diff --git a/src/resources/api/deploy/application-config/application-config.js b/src/resources/api/deploy/application-config/application-config.js index df6f118e..93d4b969 100644 --- a/src/resources/api/deploy/application-config/application-config.js +++ b/src/resources/api/deploy/application-config/application-config.js @@ -84,6 +84,10 @@ const applicationConfig = { // 保存环境实例 return axios.post('/api/rest/deploy/app/config/instance/save', params); }, + deleteEnvInstance(params) { + // 删除环境实例 + return axios.post('/api/rest/deploy/app/config/instance/delete', params); + }, saveAppTree(params) { // 保存应用配置树(应用层) return axios.post('/api/rest/deploy/app/config/app/save', params); @@ -155,6 +159,10 @@ const applicationConfig = { saveInstanceBlueGreen(params) { // 保存蓝绿集 return axios.post('/api/rest/deploy/app/instance/bluegreen/save', params); + }, + batchSaveInstanceBlueGreen(params) { + // 保存蓝绿集 + return axios.post('/api/rest/deploy/app/instance/bluegreen/batchsave', params); } }; diff --git a/src/views/pages/deploy/application-config/config/env/env-instance-bluegreen-dialog.vue b/src/views/pages/deploy/application-config/config/env/env-instance-bluegreen-dialog.vue index 1d34884e..dbffa378 100644 --- a/src/views/pages/deploy/application-config/config/env/env-instance-bluegreen-dialog.vue +++ b/src/views/pages/deploy/application-config/config/env/env-instance-bluegreen-dialog.vue @@ -33,6 +33,7 @@ export default { } }, instanceId: { type: Number}, + instanceIdList: { type: Array}, blueGreenId: {type: Number} }, data() { @@ -79,20 +80,45 @@ export default { if (!this.$refs.bluesetForm.valid()) { return false; } - let data = { - blueGreenId: this.$refs.bluesetForm.value, - resourceId: this.instanceId, - ...this.params - }; - this.$api.deploy.applicationConfig.saveInstanceBlueGreen(data).then(res => { - if (res && res.Status == 'OK') { - this.$t('message.savesuccess'); - this.closeDialog(); + let blueGreenId = this.$refs.bluesetForm.value; + if (this.instanceId) { + let data = { + blueGreenId: blueGreenId, + resourceId: this.instanceId, + appSystemId: this.params.appSystemId, + appModuleId: this.params.appModuleId, + envId: this.params.envId + }; + this.$api.deploy.applicationConfig.saveInstanceBlueGreen(data).then(res => { + if (res && res.Status == 'OK') { + this.$t('message.savesuccess'); + this.closeDialog(true); + } + }); + } else if (this.instanceIdList && this.instanceIdList.length > 0) { + if (blueGreenId) { + let data = { + blueGreenId: blueGreenId, + resourceIdList: this.instanceIdList, + appSystemId: this.params.appSystemId, + appModuleId: this.params.appModuleId, + envId: this.params.envId + }; + this.$api.deploy.applicationConfig.batchSaveInstanceBlueGreen(data).then(res => { + if (res && res.Status == 'OK') { + this.$t('message.savesuccess'); + this.closeDialog(true); + } + }); + } else { + this.closeDialog(false); } - }); + } else { + this.closeDialog(false); + } }, - closeDialog() { - this.$emit('close'); + closeDialog(needRefresh) { + this.$emit('close', needRefresh); } }, filter: {}, diff --git a/src/views/pages/deploy/application-config/config/env/env-instance-edit.vue b/src/views/pages/deploy/application-config/config/env/env-instance-edit.vue index 595bd670..b297b05f 100644 --- a/src/views/pages/deploy/application-config/config/env/env-instance-edit.vue +++ b/src/views/pages/deploy/application-config/config/env/env-instance-edit.vue @@ -3,7 +3,7 @@ {} + }, + isEdit: { + type: Boolean, + default: false + }, + instanceData: { + type: Object, + default: () => {} } }, data() { return { loadingShow: true, + dialogTitle: this.isEdit == true ? this.$t('dialog.title.edittarget', {target: this.$t('page.instance')}) : this.$t('dialog.title.addtarget', {target: this.$t('page.instance')}), formValue: {}, formList: [], exampleList: [ @@ -47,9 +56,10 @@ export default { name: 'instance', type: 'radio', label: this.$t('page.instance'), + disabled: this.isEdit, dataList: [ { - text: this.$t('dialog.title.addtarget', {target: this.$t('page.instance')}), + text: this.isEdit == true ? this.$t('dialog.title.edittarget', {target: this.$t('page.instance')}) : this.$t('dialog.title.addtarget', {target: this.$t('page.instance')}), value: 1 }, { @@ -83,6 +93,7 @@ export default { transfer: true, textName: 'label', valueName: 'id', + disabled: this.isEdit, dataList: [] } ], @@ -109,6 +120,16 @@ export default { await this.getAppInstanceCiAttrList(); this.formList = this.exampleList.concat(this.addformList); this.$set(this.formValue, 'instance', 1); + if (this.isEdit == true && this.instanceData) { + this.$set(this.formValue, 'ciId', this.instanceData.ciId); + this.$set(this.formValue, 'id', this.instanceData.id); + this.$set(this.formValue, 'name', this.instanceData.name); + this.$set(this.formValue, 'ip', this.instanceData.ip); + this.$set(this.formValue, 'port', this.instanceData.port); + if (this.instanceData.maintenanceWindow) { + this.$set(this.formValue, 'maintenanceWindow', this.handleMaintenanceWindowValue([this.instanceData.maintenanceWindow])); + } + } this.getCiList(); }, beforeUpdate() {}, @@ -182,6 +203,9 @@ export default { if (formValue && formValue.maintenanceWindow) { params.maintenanceWindow = this.setMaintenanceWindowValue(formValue.maintenanceWindow); } + if (this.isEdit == true) { + params.id = this.instanceData.id; + } this.$api.deploy.applicationConfig.saveEnvInstance(params).then((res) => { if (res && res.Status == 'OK') { this.$Message.success(this.$t('message.savesuccess')); diff --git a/src/views/pages/deploy/application-config/config/env/env-instance-list.vue b/src/views/pages/deploy/application-config/config/env/env-instance-list.vue index 7d25cec9..52b05496 100644 --- a/src/views/pages/deploy/application-config/config/env/env-instance-list.vue +++ b/src/views/pages/deploy/application-config/config/env/env-instance-list.vue @@ -3,8 +3,8 @@
-
    -
  • {{ $t('page.instance') }}
  • +
      +
    • {{ $t('page.instance') }}
    • +
    • {{ $t('term.deploy.blueSet') }}
    @@ -40,6 +41,8 @@ v-if="hasInstance" :tbodyList="tbodyList" :theadList="theadList" + :multiple="true" + @getSelected="getSelected" >