fix(项目设置): 应用设置修改
--bug=1008893 --user=王孝刚 【公共用例库】-提示信息字体过大,不应该是正式文本一样参考原型设计 https://www.tapd.cn/55049933/s/1082003
This commit is contained in:
parent
b5fcaad3da
commit
201c1b2b74
|
@ -42,11 +42,30 @@ CREATE TABLE IF NOT EXISTS `api_scenario_report_result`
|
|||
|
||||
CREATE TABLE IF NOT EXISTS `api_scenario_report_structure`
|
||||
(
|
||||
`id` varchar(50) NOT NULL COMMENT 'ID',
|
||||
`report_id` VARCHAR(50) DEFAULT NULL COMMENT '请求资源 id',
|
||||
`create_time` bigint(13) NULL COMMENT '创建时间',
|
||||
`id` varchar
|
||||
(
|
||||
50
|
||||
) NOT NULL COMMENT 'ID',
|
||||
`report_id` VARCHAR
|
||||
(
|
||||
50
|
||||
) DEFAULT NULL COMMENT '请求资源 id',
|
||||
`create_time` bigint
|
||||
(
|
||||
13
|
||||
) NULL COMMENT '创建时间',
|
||||
`resource_tree` longblob DEFAULT NULL COMMENT '资源步骤结构树',
|
||||
`console` LONGTEXT DEFAULT NULL COMMENT '执行日志',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `index_report_id` (`report_id`) USING BTREE
|
||||
PRIMARY KEY
|
||||
(
|
||||
`id`
|
||||
),
|
||||
KEY `index_report_id`
|
||||
(
|
||||
`report_id`
|
||||
) USING BTREE
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;
|
||||
|
||||
|
||||
INSERT INTO user_group_permission (id, group_id, permission_id, module_id)
|
||||
VALUES (UUID(), 'project_app_manager', 'PROJECT_APP_MANAGER:READ+EDIT', 'PROJECT_APP_MANAGER');
|
||||
|
|
|
@ -330,6 +330,11 @@
|
|||
"name": "permission.project_manager.edit",
|
||||
"resourceId": "PROJECT_MANAGER"
|
||||
},
|
||||
{
|
||||
"id": "PROJECT_APP_MANAGER:READ+EDIT",
|
||||
"name": "编辑应用设置",
|
||||
"resourceId": "PROJECT_APP_MANAGER"
|
||||
},
|
||||
{
|
||||
"id": "PROJECT_ENVIRONMENT:READ",
|
||||
"name": "permission.project_environment.read",
|
||||
|
@ -975,6 +980,10 @@
|
|||
"id": "PROJECT_FILE",
|
||||
"name": "permission.project_file.name"
|
||||
},
|
||||
{
|
||||
"id": "PROJECT_APP_MANAGER",
|
||||
"name": "应用设置"
|
||||
},
|
||||
{
|
||||
"id": "PROJECT_TRACK_CASE",
|
||||
"name": "permission.project_track_case.name"
|
||||
|
|
|
@ -33,7 +33,8 @@
|
|||
<el-menu-item popper-class="submenu" @click="clickPlanMenu">
|
||||
{{ $t('project.version_manage') }}
|
||||
</el-menu-item>
|
||||
<el-menu-item :index="'/project/app'" popper-class="submenu" :disabled="this.isProjectAdmin">
|
||||
<el-menu-item :index="'/project/app'" popper-class="submenu"
|
||||
v-permission="['PROJECT_APP_MANAGER:READ+EDIT']">
|
||||
{{ $t('project.app_manage') }}
|
||||
</el-menu-item>
|
||||
</el-menu>
|
||||
|
@ -68,20 +69,6 @@ export default {
|
|||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.$get("/user/group/list/project/" + getCurrentProjectID() + "/" + getCurrentUserId(), res => {
|
||||
let data = res.data;
|
||||
if (data) {
|
||||
data.forEach(row => {
|
||||
if (row.id === 'project_admin') {
|
||||
this.isProjectAdmin = false;
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.isProjectAdmin = true;
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
clickPlanMenu() {
|
||||
this.$info(this.$t('commons.function_planning'));
|
||||
|
|
|
@ -114,6 +114,19 @@
|
|||
<span class="desc">{{ $t('project.log_desc') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="div-item">
|
||||
<div style="float: left">
|
||||
<i class="el-icon-mobile-phone icon-color"
|
||||
@click="click('/project/app', ['PROJECT_APP_MANAGER:READ+EDIT'])">
|
||||
</i>
|
||||
</div>
|
||||
<div style="float: left">
|
||||
<span class="title" @click="click('/project/app', ['PROJECT_APP_MANAGER:READ+EDIT'])">
|
||||
{{ $t('project.app_manage') }}
|
||||
</span><br/>
|
||||
<span class="desc">{{ $t('project.app_manage_desc') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
|
|
@ -63,15 +63,6 @@
|
|||
<el-input v-model="form.azureFilterId" autocomplete="off"/>
|
||||
<ms-instructions-icon content="非必填项,用例关联需求时,可以只筛选出,所填的 workItem 下的选项" effect="light"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.repeatable')" prop="repeatable">
|
||||
<el-switch v-model="form.repeatable"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.test_case_custom_id')" prop="customNum">
|
||||
<el-switch v-model="form.customNum"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.scenario_custom_id')" prop="scenarioCustomNum">
|
||||
<el-switch v-model="form.scenarioCustomNum"></el-switch>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template v-slot:footer>
|
||||
<div class="dialog-footer">
|
||||
|
|
|
@ -12,22 +12,25 @@
|
|||
<div>
|
||||
<el-col :span="8">
|
||||
<el-row style="margin-top: 10px">
|
||||
<span>{{ this.$t('commons.enable_settings') }}</span>
|
||||
<span style="font-weight:bold">{{ this.$t('commons.enable_settings') }}</span>
|
||||
</el-row>
|
||||
<el-row style="margin-top: 10px">
|
||||
<fieldset>
|
||||
<el-form :model="form" ref="form" label-position="left" label-width="200px" size="small">
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.public_info')" prop="casePublic"
|
||||
v-if="this.isXpack">
|
||||
<el-switch v-model="form.casePublic" style="margin-top:20px"></el-switch>
|
||||
</el-form-item>
|
||||
<el-divider v-if="this.isXpack"></el-divider>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.test_case_custom_id_info')"
|
||||
prop="customNum">
|
||||
<el-switch v-model="form.customNum" style="margin-top:20px"></el-switch>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</fieldset>
|
||||
<el-row style="margin-top: 15px">
|
||||
<div style="width: 550px" class="divBorder" :model="form">
|
||||
<div v-if="isXpack">
|
||||
<span style="margin-left: 10px; margin-top: 5px; display: block">{{
|
||||
this.$t('project.public')
|
||||
}}</span>
|
||||
<span class="spanCss">{{ this.$t('project.public_info') }}</span>
|
||||
<el-switch v-model="form.casePublic"
|
||||
style="margin-left: 500px ; margin-top: -60px"></el-switch>
|
||||
<el-divider></el-divider>
|
||||
</div>
|
||||
<span style="margin-left: 10px; margin-top: 5px; display: block">{{
|
||||
this.$t('project.test_case_custom_id')
|
||||
}}</span>
|
||||
<span class="spanCss">{{ this.$t('project.test_case_custom_id_info') }}</span>
|
||||
<el-switch v-model="form.customNum" style="margin-left: 500px ; margin-top: -60px"></el-switch>
|
||||
</div>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</div>
|
||||
|
@ -36,34 +39,39 @@
|
|||
<el-row :gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-row style="margin-top: 10px">
|
||||
<span>{{ this.$t('commons.enable_settings') }}</span>
|
||||
<span style="font-weight:bold">{{ this.$t('commons.enable_settings') }}</span>
|
||||
</el-row>
|
||||
<el-row style="margin-top: 10px">
|
||||
<fieldset>
|
||||
<el-form :model="form" ref="form" label-position="left" label-width="200px" size="small">
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.repeatable_info')"
|
||||
prop="repeatable">
|
||||
<el-switch v-model="form.repeatable" style="margin-top:20px"></el-switch>
|
||||
</el-form-item>
|
||||
<el-row style="margin-top: 15px">
|
||||
<div style="width: 550px" class="divBorder" :model="form">
|
||||
<span style="margin-left: 10px ; margin-top: 10px; display: block;">{{
|
||||
this.$t('project.repeatable')
|
||||
}}</span>
|
||||
<span class="spanCss">{{ this.$t('project.repeatable_info') }}</span>
|
||||
<el-switch v-model="form.repeatable" style="margin-left: 500px ; margin-top: -60px"></el-switch>
|
||||
<el-divider></el-divider>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.scenario_custom_id_info')"
|
||||
prop="scenarioCustomNum">
|
||||
<el-switch v-model="form.scenarioCustomNum" style="margin-top:20px"></el-switch>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</fieldset>
|
||||
<span style="margin-left: 10px">{{ this.$t('project.scenario_custom_id') }}</span>
|
||||
<span class="spanCss">{{ this.$t('project.scenario_custom_id_info') }}</span>
|
||||
<el-switch v-model="form.scenarioCustomNum"
|
||||
style="margin-left: 500px ; margin-top: -60px"></el-switch>
|
||||
<el-divider></el-divider>
|
||||
<span style="margin-left: 10px">{{ 'TCP Mock Port' }}</span>
|
||||
<el-input-number v-model="form.mockTcpPort" :controls="false"
|
||||
style="width: 37%;margin-left: 100px; margin-top: 5px"></el-input-number>
|
||||
<el-switch v-model="form.isMockTcpOpen" @change="chengeMockTcpSwitch"
|
||||
style="margin-left: 500px;margin-top: -60px "></el-switch>
|
||||
</div>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="8" :offset="4">
|
||||
<el-row style="margin-top: 10px">
|
||||
<span>{{ this.$t('commons.view_settings') }}</span>
|
||||
<span style="font-weight:bold">{{ this.$t('commons.view_settings') }}</span>
|
||||
</el-row>
|
||||
<el-row style="margin-top: 10px">
|
||||
<fieldset>
|
||||
<el-form :model="form" ref="form" label-position="left" label-width="200px" size="small">
|
||||
<el-form-item label-width="200px" :label="$t('api_test.definition.api_quick_button')"
|
||||
prop="apiQuick">
|
||||
<el-radio-group v-model="form.apiQuick">
|
||||
<el-row style="margin-top: 15px">
|
||||
<div style="width: 550px" class="divBorder" :model="form">
|
||||
<span style="margin-left: 10px;margin-top: 10px; display: block;">{{
|
||||
this.$t('api_test.definition.api_quick_button')
|
||||
}}</span>
|
||||
<el-radio-group v-model="form.apiQuick" style="margin-left: 300px; margin-top: -40px">
|
||||
<el-radio label="debug" value="debug">
|
||||
{{ this.$t('api_test.definition.request.fast_debug') }}
|
||||
</el-radio>
|
||||
|
@ -71,9 +79,7 @@
|
|||
{{ this.$t('api_test.definition.request.title') }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</fieldset>
|
||||
</div>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
@ -96,6 +102,7 @@
|
|||
|
||||
import MsContainer from "@/business/components/common/components/MsContainer";
|
||||
import MsMainContainer from "@/business/components/common/components/MsMainContainer";
|
||||
|
||||
import {
|
||||
getCurrentProjectID,
|
||||
getCurrentUser,
|
||||
|
@ -161,6 +168,14 @@ export default {
|
|||
this.$success(this.$t('commons.save_success'));
|
||||
});
|
||||
},
|
||||
chengeMockTcpSwitch(value) {
|
||||
if (value && this.form.mockTcpPort === 0) {
|
||||
this.result = this.$get('/project/genTcpMockPort/' + this.form.id, res => {
|
||||
let port = res.data;
|
||||
this.form.mockTcpPort = port;
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
@ -172,5 +187,18 @@ export default {
|
|||
white-space: pre-line;
|
||||
}
|
||||
|
||||
.divBorder {
|
||||
border: 1px solid #DCDFE6;
|
||||
}
|
||||
|
||||
.spanCss {
|
||||
display: block;
|
||||
color: #929295;
|
||||
margin-left: 10px;
|
||||
font-size: 13px
|
||||
}
|
||||
|
||||
.el-divider--horizontal {
|
||||
margin: 0 0 5px 0;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -0,0 +1,321 @@
|
|||
<template>
|
||||
<div v-loading="result.loading">
|
||||
<el-dialog :close-on-click-modal="false" :title="title" :visible.sync="createVisible" destroy-on-close
|
||||
@close="handleClose">
|
||||
<el-form :model="form" :rules="rules" ref="form" label-position="right" label-width="80px" size="small">
|
||||
<el-form-item :label-width="labelWidth" :label="$t('commons.name')" prop="name">
|
||||
<el-input v-model="form.name" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="platformOptions.length > 1" :label-width="labelWidth" :label="$t('集成第三方平台')"
|
||||
prop="platform">
|
||||
<el-select filterable v-model="form.platform">
|
||||
<el-option v-for="item in platformOptions" :key="item.value" :label="item.text" :value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :label-width="labelWidth" :label="$t('workspace.case_template_manage')" prop="caseTemplateId">
|
||||
<template-select :data="form" scene="API_CASE" prop="caseTemplateId" ref="caseTemplate"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="xpackEable" :label-width="labelWidth" :label="$t('使用第三方平台模板')" prop="scenarioCustomNum">
|
||||
<el-switch v-model="form.thirdPartTemplate"></el-switch>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="!xpackEable || !form.thirdPartTemplate" :label-width="labelWidth"
|
||||
:label="$t('workspace.issue_template_manage')" prop="issueTemplateId">
|
||||
<template-select :platform="form.platform" :data="form" scene="ISSUE" prop="issueTemplateId"
|
||||
ref="issueTemplate"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :label-width="labelWidth" label="TCP Mock Port">
|
||||
<el-input-number v-model="form.mockTcpPort" :controls="false"
|
||||
style="width: 37%;margin-right: 30px"></el-input-number>
|
||||
<el-switch v-model="form.isMockTcpOpen" @change="chengeMockTcpSwitch"></el-switch>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :label-width="labelWidth" :label="$t('commons.description')" prop="description">
|
||||
<el-input :autosize="{ minRows: 2, maxRows: 4}" type="textarea" v-model="form.description"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.tapd_id')" v-if="tapd">
|
||||
<el-input v-model="form.tapdId" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.jira_key')" v-if="jira">
|
||||
<el-input v-model="form.jiraKey" autocomplete="off"/>
|
||||
<ms-instructions-icon effect="light">
|
||||
<template>
|
||||
<img class="jira-image" src="../../../../assets/jira-key.png"/>
|
||||
</template>
|
||||
</ms-instructions-icon>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.zentao_id')" v-if="zentao">
|
||||
<el-input v-model="form.zentaoId" autocomplete="off"></el-input>
|
||||
<ms-instructions-icon effect="light">
|
||||
<template>
|
||||
禅道流程:产品-项目 | 产品-迭代 | 产品-冲刺 | 项目-迭代 | 项目-冲刺 <br/><br/>
|
||||
根据 "后台 -> 自定义 -> 流程" 查看对应流程,根据流程填写ID <br/><br/>
|
||||
产品-项目 | 产品-迭代 | 产品-冲刺 需要填写产品ID <br/><br/>
|
||||
项目-迭代 | 项目-冲刺 需要填写项目ID
|
||||
</template>
|
||||
</ms-instructions-icon>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.azureDevops_id')" v-if="azuredevops">
|
||||
<el-input v-model="form.azureDevopsId" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.azureDevops_filter_id')" v-if="azuredevops">
|
||||
<el-input v-model="form.azureFilterId" autocomplete="off"/>
|
||||
<ms-instructions-icon content="非必填项,用例关联需求时,可以只筛选出,所填的 workItem 下的选项" effect="light"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.repeatable')" prop="repeatable">
|
||||
<el-switch v-model="form.repeatable"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.test_case_custom_id')" prop="customNum">
|
||||
<el-switch v-model="form.customNum"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item :label-width="labelWidth" :label="$t('project.scenario_custom_id')" prop="scenarioCustomNum">
|
||||
<el-switch v-model="form.scenarioCustomNum"></el-switch>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template v-slot:footer>
|
||||
<div class="dialog-footer">
|
||||
<ms-dialog-footer
|
||||
@cancel="createVisible = false"
|
||||
@confirm="submit('form')"/>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<ms-delete-confirm :title="$t('project.delete')" @delete="_handleDelete" ref="deleteConfirm"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import {
|
||||
getCurrentProjectID,
|
||||
getCurrentUser, getCurrentUserId,
|
||||
getCurrentWorkspaceId, hasLicense,
|
||||
listenGoBack,
|
||||
removeGoBackListener
|
||||
} from "@/common/js/utils";
|
||||
|
||||
import {AZURE_DEVOPS, JIRA, PROJECT_ID, TAPD, ZEN_TAO} from "@/common/js/constants";
|
||||
import {PROJECT_CONFIGS} from "@/business/components/common/components/search/search-components";
|
||||
import MsInstructionsIcon from "@/business/components/common/components/MsInstructionsIcon";
|
||||
import TemplateSelect from "@/business/components/settings/workspace/template/TemplateSelect";
|
||||
import MsResourceFiles from "@/business/components/performance/test/components/ResourceFiles";
|
||||
import MsTableButton from "@/business/components/common/components/MsTableButton";
|
||||
import MsJarConfig from "@/business/components/api/test/components/jar/JarConfig";
|
||||
import TemplateComponent
|
||||
from "@/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent";
|
||||
import ApiEnvironmentConfig from "@/business/components/api/test/components/ApiEnvironmentConfig";
|
||||
import MsTableOperatorButton from "@/business/components/common/components/MsTableOperatorButton";
|
||||
import MsDeleteConfirm from "@/business/components/common/components/MsDeleteConfirm";
|
||||
import MsMainContainer from "@/business/components/common/components/MsMainContainer";
|
||||
import MsContainer from "@/business/components/common/components/MsContainer";
|
||||
import MsTableOperator from "@/business/components/common/components/MsTableOperator";
|
||||
import MsTablePagination from "@/business/components/common/pagination/TablePagination";
|
||||
import MsTableHeader from "@/business/components/common/components/MsTableHeader";
|
||||
import MsDialogFooter from "@/business/components/common/components/MsDialogFooter";
|
||||
import {ISSUE_PLATFORM_OPTION} from "@/common/js/table-constants";
|
||||
|
||||
export default {
|
||||
name: "EditProject",
|
||||
components: {
|
||||
MsInstructionsIcon,
|
||||
TemplateSelect,
|
||||
MsResourceFiles,
|
||||
MsTableButton,
|
||||
MsJarConfig,
|
||||
TemplateComponent,
|
||||
ApiEnvironmentConfig,
|
||||
MsTableOperatorButton,
|
||||
MsDeleteConfirm,
|
||||
MsMainContainer,
|
||||
MsContainer, MsTableOperator, MsTablePagination, MsTableHeader, MsDialogFooter
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
createVisible: false,
|
||||
result: {},
|
||||
btnTips: this.$t('project.create'),
|
||||
title: this.$t('project.create'),
|
||||
condition: {components: PROJECT_CONFIGS},
|
||||
items: [],
|
||||
form: {},
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
userFilters: [],
|
||||
rules: {
|
||||
name: [
|
||||
{required: true, message: this.$t('project.input_name'), trigger: 'blur'},
|
||||
{min: 2, max: 50, message: this.$t('commons.input_limit', [2, 50]), trigger: 'blur'}
|
||||
],
|
||||
description: [
|
||||
{max: 250, message: this.$t('commons.input_limit', [0, 250]), trigger: 'blur'}
|
||||
],
|
||||
// caseTemplateId: [{required: true}],
|
||||
// issueTemplateId: [{required: true}],
|
||||
},
|
||||
screenHeight: 'calc(100vh - 195px)',
|
||||
labelWidth: '150px',
|
||||
platformOptions: [],
|
||||
xpackEable: false
|
||||
};
|
||||
},
|
||||
props: {
|
||||
baseUrl: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
if (this.$route.path.split('/')[2] === 'project' &&
|
||||
this.$route.path.split('/')[3] === 'create') {
|
||||
this.create();
|
||||
this.$router.replace('/setting/project/all');
|
||||
}
|
||||
this.xpackEable = hasLicense();
|
||||
},
|
||||
computed: {
|
||||
currentUser: () => {
|
||||
return getCurrentUser();
|
||||
},
|
||||
tapd() {
|
||||
return this.form.platform === TAPD && this.platformOptions.map(i => i.value).indexOf(TAPD) > -1;
|
||||
},
|
||||
jira() {
|
||||
return this.form.platform === JIRA && this.platformOptions.map(i => i.value).indexOf(JIRA) > -1;
|
||||
},
|
||||
zentao() {
|
||||
return this.form.platform === ZEN_TAO && this.platformOptions.map(i => i.value).indexOf(ZEN_TAO) > -1;
|
||||
},
|
||||
azuredevops() {
|
||||
return this.form.platform === AZURE_DEVOPS && this.platformOptions.map(i => i.value).indexOf(AZURE_DEVOPS) > -1;
|
||||
},
|
||||
},
|
||||
inject: [
|
||||
'reload'
|
||||
],
|
||||
destroyed() {
|
||||
this.createVisible = false;
|
||||
},
|
||||
methods: {
|
||||
getOptions() {
|
||||
if (this.$refs.issueTemplate) {
|
||||
this.$refs.issueTemplate.getTemplateOptions();
|
||||
}
|
||||
if (this.$refs.caseTemplate) {
|
||||
this.$refs.caseTemplate.getTemplateOptions();
|
||||
}
|
||||
},
|
||||
edit(row) {
|
||||
this.title = this.$t('project.edit');
|
||||
this.getOptions();
|
||||
this.createVisible = true;
|
||||
listenGoBack(this.handleClose);
|
||||
if (row) {
|
||||
this.form = Object.assign({}, row);
|
||||
} else {
|
||||
this.form = {};
|
||||
}
|
||||
this.platformOptions = [];
|
||||
this.platformOptions.push(...ISSUE_PLATFORM_OPTION);
|
||||
this.$get("/service/integration/all/" + getCurrentUser().lastWorkspaceId, response => {
|
||||
let data = response.data;
|
||||
let platforms = data.map(d => d.platform);
|
||||
this.filterPlatformOptions(platforms, TAPD);
|
||||
this.filterPlatformOptions(platforms, JIRA);
|
||||
this.filterPlatformOptions(platforms, ZEN_TAO);
|
||||
this.filterPlatformOptions(platforms, AZURE_DEVOPS);
|
||||
});
|
||||
},
|
||||
filterPlatformOptions(platforms, platform) {
|
||||
if (platforms.indexOf(platform) === -1) {
|
||||
for (let i = 0; i < this.platformOptions.length; i++) {
|
||||
if (this.platformOptions[i].value === platform) {
|
||||
this.platformOptions.splice(1, i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
submit(formName) {
|
||||
this.$refs[formName].validate((valid) => {
|
||||
if (valid) {
|
||||
let saveType = "add";
|
||||
if (this.form.id) {
|
||||
saveType = "update";
|
||||
}
|
||||
let protocol = document.location.protocol;
|
||||
protocol = protocol.substring(0, protocol.indexOf(":"));
|
||||
this.form.protocal = protocol;
|
||||
this.form.workspaceId = getCurrentWorkspaceId();
|
||||
this.form.createUser = getCurrentUserId();
|
||||
this.result = this.$post("/project/" + saveType, this.form, () => {
|
||||
this.createVisible = false;
|
||||
this.reload();
|
||||
this.$success(this.$t('commons.save_success'));
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
},
|
||||
handleDelete(project) {
|
||||
this.$refs.deleteConfirm.open(project);
|
||||
},
|
||||
_handleDelete(project) {
|
||||
this.$confirm(this.$t('project.delete_tip'), '', {
|
||||
confirmButtonText: this.$t('commons.confirm'),
|
||||
cancelButtonText: this.$t('commons.cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$get('/project/delete/' + project.id, () => {
|
||||
if (project.id === getCurrentProjectID()) {
|
||||
localStorage.removeItem(PROJECT_ID);
|
||||
this.$post("/user/update/current", {id: getCurrentUser().id, lastProjectId: ''});
|
||||
}
|
||||
this.$success(this.$t('commons.delete_success'));
|
||||
this.list();
|
||||
});
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: this.$t('commons.delete_cancelled')
|
||||
});
|
||||
});
|
||||
},
|
||||
handleClose() {
|
||||
removeGoBackListener(this.handleClose);
|
||||
this.createVisible = false;
|
||||
},
|
||||
chengeMockTcpSwitch(value) {
|
||||
if (value && this.form.mockTcpPort === 0) {
|
||||
this.result = this.$get('/project/genTcpMockPort/' + this.form.id, res => {
|
||||
let port = res.data;
|
||||
this.form.mockTcpPort = port;
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
document.addEventListener('keydown', this.handleEvent);
|
||||
},
|
||||
beforeDestroy() {
|
||||
document.removeEventListener('keydown', this.handleEvent);
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
pre {
|
||||
margin: 0 0;
|
||||
font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", Arial, sans-serif;
|
||||
}
|
||||
|
||||
.el-input, .el-textarea {
|
||||
width: 80%;
|
||||
}
|
||||
</style>
|
|
@ -209,7 +209,7 @@ import {PROJECT_CONFIGS} from "@/business/components/common/components/search/se
|
|||
import MsRolesTag from "@/business/components/common/components/MsRolesTag";
|
||||
import AddMember from "@/business/components/settings/common/AddMember";
|
||||
import MsInstructionsIcon from "@/business/components/common/components/MsInstructionsIcon";
|
||||
import EditProject from "@/business/components/project/menu/EditProject";
|
||||
import EditProject from "@/business/components/settings/workspace/EditProject";
|
||||
|
||||
export default {
|
||||
name: "MsProject",
|
||||
|
|
|
@ -659,9 +659,10 @@ export default {
|
|||
no_data: 'No Data',
|
||||
select: 'Select',
|
||||
repeatable: 'Interface definition URL repeatable',
|
||||
repeatable_info: 'Interface definition URL repeatable \n When enabled, the interface definition repeatability check will not check the URL',
|
||||
case_public: 'Common use case library',
|
||||
public_info: 'Start common use case library \n You can use the public use case library data or add your own use cases to the public use case library',
|
||||
repeatable_info: 'After enabling, the interface definition repeatability check will not check the URL',
|
||||
case_public: 'Public Library',
|
||||
public: 'Start Public Library',
|
||||
public_info: 'You can use public use case library data, or you can add use cases to the public use case library by yourself',
|
||||
upload_file_again: 'Upload again',
|
||||
code_segment: {
|
||||
code_segment: "Custom Code",
|
||||
|
@ -694,6 +695,7 @@ export default {
|
|||
log: 'Log',
|
||||
version_manage: 'Version',
|
||||
app_manage: 'App Management',
|
||||
app_manage_desc: 'Edit application management',
|
||||
desc: 'Project Description',
|
||||
manage_people: 'Project Manager',
|
||||
creator: 'Creator',
|
||||
|
@ -705,9 +707,9 @@ export default {
|
|||
group_desc: 'Add user groups and global configuration',
|
||||
code_segment_desc: 'Custom code snippet',
|
||||
test_case_custom_id: 'Test Case Custom ID',
|
||||
test_case_custom_id_info: 'Test Case Custom ID \n The Case ID defaults to the system self increment ID',
|
||||
test_case_custom_id_info: 'The Case ID defaults to the system self incrementing ID',
|
||||
scenario_custom_id: 'Scenario Custom ID',
|
||||
scenario_custom_id_info: 'Scenario Custom ID \n The scenario Case ID defaults to the system self increment ID',
|
||||
scenario_custom_id_info: 'The scenario use case ID defaults to the system self-incremented ID',
|
||||
},
|
||||
member: {
|
||||
create: 'Create',
|
||||
|
|
|
@ -663,9 +663,10 @@ export default {
|
|||
no_data: '无数据',
|
||||
select: '选择项目',
|
||||
repeatable: '接口定义URL可重复',
|
||||
repeatable_info: '接口定义URL可重复 \n 启用后接口定义重复性校验将不校验URL',
|
||||
repeatable_info: '启用后接口定义重复性校验将不校验URL',
|
||||
case_public: '公共用例库',
|
||||
public_info: '启动公共用例库 \n 可以使用公共用例库数据,也可以自行添加用例至公共用例库',
|
||||
public: '启动公共用例库',
|
||||
public_info: '可以使用公共用例库数据,也可以自行添加用例至公共用例库',
|
||||
upload_file_again: '重新上传',
|
||||
code_segment: {
|
||||
code_segment: "自定义代码片段",
|
||||
|
@ -698,6 +699,7 @@ export default {
|
|||
log: '操作日志',
|
||||
version_manage: '版本管理',
|
||||
app_manage: '应用管理',
|
||||
app_manage_desc: '编辑应用管理',
|
||||
desc: '项目描述',
|
||||
manage_people: '管理员',
|
||||
creator: '创建人',
|
||||
|
@ -709,9 +711,9 @@ export default {
|
|||
log_desc: '项目全部操作过程',
|
||||
code_segment_desc: '自定义代码片段',
|
||||
test_case_custom_id: '测试用例自定义ID',
|
||||
test_case_custom_id_info: '测试用例自定义ID \n 用例ID默认为系统自增ID',
|
||||
test_case_custom_id_info: '用例ID默认为系统自增ID',
|
||||
scenario_custom_id: '场景自定义ID',
|
||||
scenario_custom_id_info: '场景自定义ID \n 场景用例ID默认为系统自增ID',
|
||||
scenario_custom_id_info: '场景用例ID默认为系统自增ID',
|
||||
},
|
||||
member: {
|
||||
create: '添加成员',
|
||||
|
|
|
@ -698,6 +698,7 @@ export default {
|
|||
log: '操作日誌',
|
||||
version_manage: '版本管理',
|
||||
app_manage: '應用管理',
|
||||
app_manage_desc: '編輯應用管理',
|
||||
desc: '項目描述',
|
||||
manage_people: '管理員',
|
||||
creator: '創建人',
|
||||
|
|
Loading…
Reference in New Issue