fix(接口测试): 修复环境配置复制环境,复制成功后页面关闭的缺陷

--bug=1015758 --user=王孝刚 【接口测试】github#16797,环境配置,点击复制环境,复制成功,但环境配置窗口关闭了
https://www.tapd.cn/55049933/s/1222041
This commit is contained in:
wxg0103 2022-08-11 13:47:15 +08:00 committed by 刘瑞斌
parent f5ab742d5e
commit 2297374a46
2 changed files with 333 additions and 323 deletions

View File

@ -7,177 +7,182 @@
:env-add-permission="['PROJECT_ENVIRONMENT:READ+CREATE']"
:data="environments" :item-operators="environmentOperators" :add-fuc="addEnvironment"
:delete-fuc="deleteEnvironment" @itemSelected="environmentSelected" ref="environmentItems"/>
<environment-edit :if-create="ifCreate" :environment="currentEnvironment" ref="environmentEdit" @close="close" :is-read-only="isReadOnly"/>
<environment-edit :if-create="ifCreate" :environment="currentEnvironment" ref="environmentEdit" @close="close"
:is-read-only="isReadOnly"/>
</el-container>
</el-dialog>
</template>
<script>
import MsApiCollapse from "../collapse/ApiCollapse";
import MsApiCollapseItem from "../collapse/ApiCollapseItem";
import draggable from 'vuedraggable';
import MsContainer from "../../../../common/components/MsContainer";
import MsAsideContainer from "../../../../common/components/MsAsideContainer";
import MsMainContainer from "../../../../common/components/MsMainContainer";
import MsAsideItem from "../../../../common/components/MsAsideItem";
import EnvironmentEdit from "./EnvironmentEdit";
import {deepClone, hasPermission, listenGoBack, removeGoBackListener} from "@/common/js/utils";
import {Environment, parseEnvironment} from "../../model/EnvironmentModel";
import MsApiCollapse from "../collapse/ApiCollapse";
import MsApiCollapseItem from "../collapse/ApiCollapseItem";
import draggable from 'vuedraggable';
import MsContainer from "../../../../common/components/MsContainer";
import MsAsideContainer from "../../../../common/components/MsAsideContainer";
import MsMainContainer from "../../../../common/components/MsMainContainer";
import MsAsideItem from "../../../../common/components/MsAsideItem";
import EnvironmentEdit from "./EnvironmentEdit";
import {hasPermission, listenGoBack, removeGoBackListener} from "@/common/js/utils";
import {Environment, parseEnvironment} from "../../model/EnvironmentModel";
export default {
name: "ApiEnvironmentConfig",
components: {
EnvironmentEdit,
MsAsideItem,
MsMainContainer, MsAsideContainer, MsContainer, MsApiCollapseItem, MsApiCollapse, draggable
export default {
name: "ApiEnvironmentConfig",
components: {
EnvironmentEdit,
MsAsideItem,
MsMainContainer, MsAsideContainer, MsContainer, MsApiCollapseItem, MsApiCollapse, draggable
},
data() {
return {
result: {},
visible: false,
projectId: '',
environments: [],
currentEnvironment: new Environment(),
environmentOperators: [
{
icon: 'el-icon-document-copy',
func: this.copyEnvironment,
permissions: ['PROJECT_ENVIRONMENT:READ+COPY']
},
{
icon: 'el-icon-delete',
func: this.deleteEnvironment,
permissions: ['PROJECT_ENVIRONMENT:READ+DELETE']
}
],
selectEnvironmentId: '',
ifCreate: false, //
isCopy: false
}
},
computed: {
isReadOnly() {
return !hasPermission('PROJECT_ENVIRONMENT:READ+EDIT');
}
},
methods: {
open: function (projectId, envId) {
this.visible = true;
this.projectId = projectId;
this.selectEnvironmentId = envId;
this.getEnvironments();
listenGoBack(this.close);
},
data() {
return {
result: {},
visible: false,
projectId: '',
environments: [],
currentEnvironment: new Environment(),
environmentOperators: [
{
icon: 'el-icon-document-copy',
func: this.copyEnvironment,
permissions: ['PROJECT_ENVIRONMENT:READ+COPY']
},
{
icon: 'el-icon-delete',
func: this.deleteEnvironment,
permissions: ['PROJECT_ENVIRONMENT:READ+DELETE']
}
],
selectEnvironmentId: '',
ifCreate: false, //
}
},
computed: {
isReadOnly() {
return !hasPermission('PROJECT_ENVIRONMENT:READ+EDIT');
}
},
methods: {
open: function (projectId, envId) {
this.visible = true;
this.projectId = projectId;
this.selectEnvironmentId = envId;
this.getEnvironments();
listenGoBack(this.close);
},
deleteEnvironment(environment, index) {
this.ifCreate = false;
if (environment.id) {
this.result = this.$get('/api/environment/delete/' + environment.id, () => {
this.$success(this.$t('commons.delete_success'));
this.getEnvironments();
});
}
else {
this.environments.splice(index, 1);
}
},
copyEnvironment(environment) {
this.ifCreate = false;
this.currentEnvironment = environment;
if (!environment.id) {
this.$warning(this.$t('commons.please_save'));
return;
}
let newEnvironment = {};
newEnvironment = new Environment(environment);
newEnvironment.id = null;
newEnvironment.name = this.getNoRepeatName(newEnvironment.name);
if (!this.validateEnvironment(newEnvironment)) {
return;
}
this.$refs.environmentEdit._save(newEnvironment);
this.environments.push(newEnvironment);
this.$refs.environmentItems.itemSelected(this.environments.length - 1, newEnvironment);
},
validateEnvironment(environment) {
if (!this.$refs.environmentEdit.validate()) {
this.$error(this.$t('commons.formatErr'));
return false;
}
return true;
},
getNoRepeatName(name) {
for (let i in this.environments) {
if (this.environments[i].name === name) {
return this.getNoRepeatName(name + ' copy');
}
}
return name;
},
addEnvironment() {
this.ifCreate = true;
let newEnvironment = new Environment({
projectId: this.projectId
deleteEnvironment(environment, index) {
this.ifCreate = false;
if (environment.id) {
this.result = this.$get('/api/environment/delete/' + environment.id, () => {
this.$success(this.$t('commons.delete_success'));
this.getEnvironments();
});
this.environments.push(newEnvironment);
this.$refs.environmentItems.itemSelected(this.environments.length - 1, newEnvironment);
},
environmentSelected(environment) {
this.getEnvironment(environment);
},
getEnvironments() {
if (this.projectId) {
this.result = this.$get('/api/environment/list/' + this.projectId, response => {
this.environments = response.data;
if (this.environments.length > 0) {
if (this.selectEnvironmentId) {
const index = this.environments.findIndex(e => e.id === this.selectEnvironmentId);
if (index !== -1) {
this.$refs.environmentItems.itemSelected(index, this.environments[index]);
} else {
this.$refs.environmentItems.itemSelected(0, this.environments[0]);
}
} else {
this.environments.splice(index, 1);
}
},
copyEnvironment(environment) {
this.ifCreate = false;
this.isCopy = true;
this.currentEnvironment = environment;
if (!environment.id) {
this.$warning(this.$t('commons.please_save'));
return;
}
let newEnvironment = {};
newEnvironment = new Environment(environment);
newEnvironment.id = null;
newEnvironment.name = this.getNoRepeatName(newEnvironment.name);
if (!this.validateEnvironment(newEnvironment)) {
return;
}
this.$refs.environmentEdit._save(newEnvironment);
this.environments.unshift(newEnvironment);
this.$refs.environmentItems.itemSelected(this.environments.length - 1, newEnvironment);
},
validateEnvironment(environment) {
if (!this.$refs.environmentEdit.validate()) {
this.$error(this.$t('commons.formatErr'));
return false;
}
return true;
},
getNoRepeatName(name) {
for (let i in this.environments) {
if (this.environments[i].name === name) {
return this.getNoRepeatName(name + ' copy');
}
}
return name;
},
addEnvironment() {
this.ifCreate = true;
let newEnvironment = new Environment({
projectId: this.projectId
});
this.environments.push(newEnvironment);
this.$refs.environmentItems.itemSelected(this.environments.length - 1, newEnvironment);
},
environmentSelected(environment) {
this.getEnvironment(environment);
},
getEnvironments() {
if (this.projectId) {
this.result = this.$get('/api/environment/list/' + this.projectId, response => {
this.environments = response.data;
if (this.environments.length > 0) {
if (this.selectEnvironmentId) {
const index = this.environments.findIndex(e => e.id === this.selectEnvironmentId);
if (index !== -1) {
this.$refs.environmentItems.itemSelected(index, this.environments[index]);
} else {
this.$refs.environmentItems.itemSelected(0, this.environments[0]);
}
} else {
let item = new Environment({
projectId: this.projectId
});
this.environments.push(item);
this.$refs.environmentItems.itemSelected(0, item);
this.$refs.environmentItems.itemSelected(0, this.environments[0]);
}
});
}
},
getEnvironment(environment) {
parseEnvironment(environment);
this.currentEnvironment = environment;
if(this.currentEnvironment.name){
this.ifCreate = false;
}
},
close() {
this.$emit('close');
this.visible = false;
this.$refs.environmentEdit.clearValidate();
removeGoBackListener(this.close);
} else {
let item = new Environment({
projectId: this.projectId
});
this.environments.push(item);
this.$refs.environmentItems.itemSelected(0, item);
}
});
}
},
getEnvironment(environment) {
parseEnvironment(environment);
this.currentEnvironment = environment;
if (this.currentEnvironment.name) {
this.ifCreate = false;
}
},
close() {
this.$emit('close');
if (!this.isCopy) {
this.visible = false;
}
this.$refs.environmentEdit.clearValidate();
removeGoBackListener(this.close);
this.isCopy = false;
}
}
}
</script>
<style scoped>
.environment-dialog >>> .el-dialog__body {
padding-top: 20px;
}
.environment-dialog >>> .el-dialog__body {
padding-top: 20px;
}
.el-container {
position: relative;
}
.el-container {
position: relative;
}
.ms-aside-container {
height: 100%;
position: absolute;
}
.ms-aside-container {
height: 100%;
position: absolute;
}
</style>

View File

@ -7,7 +7,8 @@
:data="environments" :item-operators="environmentOperators" :add-fuc="addEnvironment"
:env-add-permission="ENV_CREATE"
:delete-fuc="deleteEnvironment" @itemSelected="environmentSelected" ref="environmentItems"/>
<environment-edit :if-create="ifCreate" :project-id="projectId" :environment="currentEnvironment" ref="environmentEdit" :is-read-only="isReadOnly"
<environment-edit :if-create="ifCreate" :project-id="projectId" :environment="currentEnvironment"
ref="environmentEdit" :is-read-only="isReadOnly"
@confirm="save"
@close="close"/>
</el-container>
@ -15,197 +16,201 @@
</template>
<script>
import MsApiCollapse from "./collapse/ApiCollapse";
import MsApiCollapseItem from "./collapse/ApiCollapseItem";
import draggable from 'vuedraggable';
import MsContainer from "../../../common/components/MsContainer";
import MsAsideContainer from "../../../common/components/MsAsideContainer";
import MsMainContainer from "../../../common/components/MsMainContainer";
import MsAsideItem from "../../../common/components/MsAsideItem";
import EnvironmentEdit from "./environment/EnvironmentEdit";
import {deepClone, hasPermission, listenGoBack, removeGoBackListener} from "../../../../../common/js/utils";
import {Environment, parseEnvironment} from "../model/EnvironmentModel";
import MsDialogHeader from "@/business/components/common/components/MsDialogHeader";
import MsApiCollapse from "./collapse/ApiCollapse";
import MsApiCollapseItem from "./collapse/ApiCollapseItem";
import draggable from 'vuedraggable';
import MsContainer from "../../../common/components/MsContainer";
import MsAsideContainer from "../../../common/components/MsAsideContainer";
import MsMainContainer from "../../../common/components/MsMainContainer";
import MsAsideItem from "../../../common/components/MsAsideItem";
import EnvironmentEdit from "./environment/EnvironmentEdit";
import {hasPermission, listenGoBack, removeGoBackListener} from "../../../../../common/js/utils";
import {Environment, parseEnvironment} from "../model/EnvironmentModel";
import MsDialogHeader from "@/business/components/common/components/MsDialogHeader";
export default {
name: "ApiEnvironmentConfig",
components: {
EnvironmentEdit,
MsAsideItem,
MsMainContainer, MsAsideContainer, MsContainer, MsApiCollapseItem, MsApiCollapse, draggable, MsDialogHeader
},
data() {
return {
result: {},
visible: false,
projectId: '',
environments: [],
currentEnvironment: new Environment(),
environmentOperators: [
{
icon: 'el-icon-document-copy',
func: this.copyEnvironment,
permissions: this.type === 'project' ?
['PROJECT_ENVIRONMENT:READ+COPY'] : ['WORKSPACE_PROJECT_ENVIRONMENT:READ+COPY']
},
{
icon: 'el-icon-delete',
func: this.deleteEnvironment,
permissions: this.type === 'project' ?
['PROJECT_ENVIRONMENT:READ+DELETE'] : ['WORKSPACE_PROJECT_ENVIRONMENT:READ+DELETE']
}
],
selectEnvironmentId: '',
ifCreate: false, //
export default {
name: "ApiEnvironmentConfig",
components: {
EnvironmentEdit,
MsAsideItem,
MsMainContainer, MsAsideContainer, MsContainer, MsApiCollapseItem, MsApiCollapse, draggable, MsDialogHeader
},
data() {
return {
result: {},
visible: false,
projectId: '',
environments: [],
currentEnvironment: new Environment(),
environmentOperators: [
{
icon: 'el-icon-document-copy',
func: this.copyEnvironment,
permissions: this.type === 'project' ?
['PROJECT_ENVIRONMENT:READ+COPY'] : ['WORKSPACE_PROJECT_ENVIRONMENT:READ+COPY']
},
{
icon: 'el-icon-delete',
func: this.deleteEnvironment,
permissions: this.type === 'project' ?
['PROJECT_ENVIRONMENT:READ+DELETE'] : ['WORKSPACE_PROJECT_ENVIRONMENT:READ+DELETE']
}
],
selectEnvironmentId: '',
ifCreate: false, //
isCopy: false
}
},
props: {
type: {
type: String,
default() {
return "project";
}
}
},
computed: {
ENV_CREATE() {
return this.type === 'project' ?
['PROJECT_ENVIRONMENT:READ+CREATE'] : ['WORKSPACE_PROJECT_ENVIRONMENT:READ+CREATE'];
},
props: {
type: {
type: String,
default() {
return "project";
}
}
ENV_EDIT() {
return this.type === 'project' ?
['PROJECT_ENVIRONMENT:READ+EDIT'] : ['WORKSPACE_PROJECT_ENVIRONMENT:READ+EDIT'];
},
computed: {
ENV_CREATE() {
return this.type === 'project' ?
['PROJECT_ENVIRONMENT:READ+CREATE'] : ['WORKSPACE_PROJECT_ENVIRONMENT:READ+CREATE'];
},
ENV_EDIT() {
return this.type === 'project' ?
['PROJECT_ENVIRONMENT:READ+EDIT'] : ['WORKSPACE_PROJECT_ENVIRONMENT:READ+EDIT'];
},
isReadOnly() {
// /
return this.type === 'project' ?
!hasPermission('PROJECT_ENVIRONMENT:READ+EDIT') : !hasPermission('WORKSPACE_PROJECT_ENVIRONMENT:READ+EDIT');
}
isReadOnly() {
// /
return this.type === 'project' ?
!hasPermission('PROJECT_ENVIRONMENT:READ+EDIT') : !hasPermission('WORKSPACE_PROJECT_ENVIRONMENT:READ+EDIT');
}
},
methods: {
open: function (projectId, envId) {
this.visible = true;
this.projectId = projectId;
this.selectEnvironmentId = envId;
this.getEnvironments();
listenGoBack(this.close);
},
methods: {
open: function (projectId, envId) {
this.visible = true;
this.projectId = projectId;
this.selectEnvironmentId = envId;
this.getEnvironments();
listenGoBack(this.close);
},
deleteEnvironment(environment, index) {
this.ifCreate = false;
if (environment.id) {
this.result = this.$get('/api/environment/delete/' + environment.id, () => {
this.$success(this.$t('commons.delete_success'));
this.getEnvironments();
});
}
else {
this.environments.splice(index, 1);
}
},
copyEnvironment(environment) {
this.ifCreate = false;
//
this.environmentSelected(environment);
this.currentEnvironment = environment;
if (!environment.id) {
this.$warning(this.$t('commons.please_save'));
return;
}
let newEnvironment = {};
newEnvironment = new Environment(environment);
newEnvironment.id = null;
newEnvironment.name = this.getNoRepeatName(newEnvironment.name);
if (!this.validateEnvironment(newEnvironment)) {
return;
}
this.$refs.environmentEdit._save(newEnvironment);
this.environments.push(newEnvironment);
this.$refs.environmentItems.itemSelected(this.environments.length - 1, newEnvironment);
},
validateEnvironment(environment) {
if (!this.$refs.environmentEdit.validate()) {
this.$error(this.$t('commons.formatErr'));
return false;
}
return true;
},
getNoRepeatName(name) {
for (let i in this.environments) {
if (this.environments[i].name === name) {
return this.getNoRepeatName(name + ' copy');
}
}
return name;
},
addEnvironment() {
this.ifCreate = true;
let newEnvironment = new Environment({
projectId: this.projectId
deleteEnvironment(environment, index) {
this.ifCreate = false;
if (environment.id) {
this.result = this.$get('/api/environment/delete/' + environment.id, () => {
this.$success(this.$t('commons.delete_success'));
this.getEnvironments();
});
this.environments.push(newEnvironment);
this.$refs.environmentItems.itemSelected(this.environments.length - 1, newEnvironment);
},
environmentSelected(environment) {
this.getEnvironment(environment);
},
getEnvironments() {
if (this.projectId) {
this.result = this.$get('/api/environment/list/' + this.projectId, response => {
this.environments = response.data;
if (this.environments.length > 0) {
if (this.selectEnvironmentId) {
const index = this.environments.findIndex(e => e.id === this.selectEnvironmentId);
if (index !== -1) {
this.$refs.environmentItems.itemSelected(index, this.environments[index]);
} else {
this.$refs.environmentItems.itemSelected(0, this.environments[0]);
}
} else {
this.environments.splice(index, 1);
}
},
copyEnvironment(environment) {
this.ifCreate = false;
this.isCopy = true;
//
this.environmentSelected(environment);
this.currentEnvironment = environment;
if (!environment.id) {
this.$warning(this.$t('commons.please_save'));
return;
}
let newEnvironment = {};
newEnvironment = new Environment(environment);
newEnvironment.id = null;
newEnvironment.name = this.getNoRepeatName(newEnvironment.name);
if (!this.validateEnvironment(newEnvironment)) {
return;
}
this.$refs.environmentEdit._save(newEnvironment);
this.environments.unshift(newEnvironment);
this.$refs.environmentItems.itemSelected(this.environments.length - 1, newEnvironment);
},
validateEnvironment(environment) {
if (!this.$refs.environmentEdit.validate()) {
this.$error(this.$t('commons.formatErr'));
return false;
}
return true;
},
getNoRepeatName(name) {
for (let i in this.environments) {
if (this.environments[i].name === name) {
return this.getNoRepeatName(name + ' copy');
}
}
return name;
},
addEnvironment() {
this.ifCreate = true;
let newEnvironment = new Environment({
projectId: this.projectId
});
this.environments.push(newEnvironment);
this.$refs.environmentItems.itemSelected(this.environments.length - 1, newEnvironment);
},
environmentSelected(environment) {
this.getEnvironment(environment);
},
getEnvironments() {
if (this.projectId) {
this.result = this.$get('/api/environment/list/' + this.projectId, response => {
this.environments = response.data;
if (this.environments.length > 0) {
if (this.selectEnvironmentId) {
const index = this.environments.findIndex(e => e.id === this.selectEnvironmentId);
if (index !== -1) {
this.$refs.environmentItems.itemSelected(index, this.environments[index]);
} else {
this.$refs.environmentItems.itemSelected(0, this.environments[0]);
}
} else {
let item = new Environment({
projectId: this.projectId
});
this.environments.push(item);
this.$refs.environmentItems.itemSelected(0, item);
this.$refs.environmentItems.itemSelected(0, this.environments[0]);
}
});
}
},
getEnvironment(environment) {
parseEnvironment(environment);
this.currentEnvironment = environment;
if(this.currentEnvironment.name){
this.ifCreate = false;
}
},
save(){
this.$refs.environmentEdit.save();
},
close() {
this.$emit('close');
this.visible = false;
this.$refs.environmentEdit.clearValidate();
removeGoBackListener(this.close);
} else {
let item = new Environment({
projectId: this.projectId
});
this.environments.push(item);
this.$refs.environmentItems.itemSelected(0, item);
}
});
}
},
getEnvironment(environment) {
parseEnvironment(environment);
this.currentEnvironment = environment;
if (this.currentEnvironment.name) {
this.ifCreate = false;
}
},
save() {
this.$refs.environmentEdit.save();
},
close() {
this.$emit('close');
if (!this.isCopy) {
this.visible = false;
}
this.$refs.environmentEdit.clearValidate();
removeGoBackListener(this.close);
this.isCopy = false;
}
}
}
</script>
<style scoped>
.environment-dialog >>> .el-dialog__body {
padding-top: 20px;
}
.environment-dialog >>> .el-dialog__body {
padding-top: 20px;
}
.el-container {
position: relative;
}
.el-container {
position: relative;
}
.ms-aside-container {
height: 100%;
position: absolute;
}
.ms-aside-container {
height: 100%;
position: absolute;
}
</style>