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`
|
CREATE TABLE IF NOT EXISTS `api_scenario_report_structure`
|
||||||
(
|
(
|
||||||
`id` varchar(50) NOT NULL COMMENT 'ID',
|
`id` varchar
|
||||||
`report_id` VARCHAR(50) DEFAULT NULL COMMENT '请求资源 id',
|
(
|
||||||
`create_time` bigint(13) NULL COMMENT '创建时间',
|
50
|
||||||
`resource_tree` longblob DEFAULT NULL COMMENT '资源步骤结构树',
|
) 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 '执行日志',
|
`console` LONGTEXT DEFAULT NULL COMMENT '执行日志',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY
|
||||||
KEY `index_report_id` (`report_id`) USING BTREE
|
(
|
||||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;
|
`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",
|
"name": "permission.project_manager.edit",
|
||||||
"resourceId": "PROJECT_MANAGER"
|
"resourceId": "PROJECT_MANAGER"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "PROJECT_APP_MANAGER:READ+EDIT",
|
||||||
|
"name": "编辑应用设置",
|
||||||
|
"resourceId": "PROJECT_APP_MANAGER"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "PROJECT_ENVIRONMENT:READ",
|
"id": "PROJECT_ENVIRONMENT:READ",
|
||||||
"name": "permission.project_environment.read",
|
"name": "permission.project_environment.read",
|
||||||
|
@ -975,6 +980,10 @@
|
||||||
"id": "PROJECT_FILE",
|
"id": "PROJECT_FILE",
|
||||||
"name": "permission.project_file.name"
|
"name": "permission.project_file.name"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "PROJECT_APP_MANAGER",
|
||||||
|
"name": "应用设置"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "PROJECT_TRACK_CASE",
|
"id": "PROJECT_TRACK_CASE",
|
||||||
"name": "permission.project_track_case.name"
|
"name": "permission.project_track_case.name"
|
||||||
|
|
|
@ -33,7 +33,8 @@
|
||||||
<el-menu-item popper-class="submenu" @click="clickPlanMenu">
|
<el-menu-item popper-class="submenu" @click="clickPlanMenu">
|
||||||
{{ $t('project.version_manage') }}
|
{{ $t('project.version_manage') }}
|
||||||
</el-menu-item>
|
</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') }}
|
{{ $t('project.app_manage') }}
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</el-menu>
|
</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: {
|
methods: {
|
||||||
clickPlanMenu() {
|
clickPlanMenu() {
|
||||||
this.$info(this.$t('commons.function_planning'));
|
this.$info(this.$t('commons.function_planning'));
|
||||||
|
|
|
@ -114,6 +114,19 @@
|
||||||
<span class="desc">{{ $t('project.log_desc') }}</span>
|
<span class="desc">{{ $t('project.log_desc') }}</span>
|
||||||
</div>
|
</div>
|
||||||
</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>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
|
@ -63,15 +63,6 @@
|
||||||
<el-input v-model="form.azureFilterId" autocomplete="off"/>
|
<el-input v-model="form.azureFilterId" autocomplete="off"/>
|
||||||
<ms-instructions-icon content="非必填项,用例关联需求时,可以只筛选出,所填的 workItem 下的选项" effect="light"/>
|
<ms-instructions-icon content="非必填项,用例关联需求时,可以只筛选出,所填的 workItem 下的选项" effect="light"/>
|
||||||
</el-form-item>
|
</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>
|
</el-form>
|
||||||
<template v-slot:footer>
|
<template v-slot:footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
|
|
|
@ -12,22 +12,25 @@
|
||||||
<div>
|
<div>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-row style="margin-top: 10px">
|
<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>
|
||||||
<el-row style="margin-top: 10px">
|
<el-row style="margin-top: 15px">
|
||||||
<fieldset>
|
<div style="width: 550px" class="divBorder" :model="form">
|
||||||
<el-form :model="form" ref="form" label-position="left" label-width="200px" size="small">
|
<div v-if="isXpack">
|
||||||
<el-form-item :label-width="labelWidth" :label="$t('project.public_info')" prop="casePublic"
|
<span style="margin-left: 10px; margin-top: 5px; display: block">{{
|
||||||
v-if="this.isXpack">
|
this.$t('project.public')
|
||||||
<el-switch v-model="form.casePublic" style="margin-top:20px"></el-switch>
|
}}</span>
|
||||||
</el-form-item>
|
<span class="spanCss">{{ this.$t('project.public_info') }}</span>
|
||||||
<el-divider v-if="this.isXpack"></el-divider>
|
<el-switch v-model="form.casePublic"
|
||||||
<el-form-item :label-width="labelWidth" :label="$t('project.test_case_custom_id_info')"
|
style="margin-left: 500px ; margin-top: -60px"></el-switch>
|
||||||
prop="customNum">
|
<el-divider></el-divider>
|
||||||
<el-switch v-model="form.customNum" style="margin-top:20px"></el-switch>
|
</div>
|
||||||
</el-form-item>
|
<span style="margin-left: 10px; margin-top: 5px; display: block">{{
|
||||||
</el-form>
|
this.$t('project.test_case_custom_id')
|
||||||
</fieldset>
|
}}</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-row>
|
||||||
</el-col>
|
</el-col>
|
||||||
</div>
|
</div>
|
||||||
|
@ -36,44 +39,47 @@
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-row style="margin-top: 10px">
|
<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>
|
||||||
<el-row style="margin-top: 10px">
|
<el-row style="margin-top: 15px">
|
||||||
<fieldset>
|
<div style="width: 550px" class="divBorder" :model="form">
|
||||||
<el-form :model="form" ref="form" label-position="left" label-width="200px" size="small">
|
<span style="margin-left: 10px ; margin-top: 10px; display: block;">{{
|
||||||
<el-form-item :label-width="labelWidth" :label="$t('project.repeatable_info')"
|
this.$t('project.repeatable')
|
||||||
prop="repeatable">
|
}}</span>
|
||||||
<el-switch v-model="form.repeatable" style="margin-top:20px"></el-switch>
|
<span class="spanCss">{{ this.$t('project.repeatable_info') }}</span>
|
||||||
</el-form-item>
|
<el-switch v-model="form.repeatable" style="margin-left: 500px ; margin-top: -60px"></el-switch>
|
||||||
<el-divider></el-divider>
|
<el-divider></el-divider>
|
||||||
<el-form-item :label-width="labelWidth" :label="$t('project.scenario_custom_id_info')"
|
<span style="margin-left: 10px">{{ this.$t('project.scenario_custom_id') }}</span>
|
||||||
prop="scenarioCustomNum">
|
<span class="spanCss">{{ this.$t('project.scenario_custom_id_info') }}</span>
|
||||||
<el-switch v-model="form.scenarioCustomNum" style="margin-top:20px"></el-switch>
|
<el-switch v-model="form.scenarioCustomNum"
|
||||||
</el-form-item>
|
style="margin-left: 500px ; margin-top: -60px"></el-switch>
|
||||||
</el-form>
|
<el-divider></el-divider>
|
||||||
</fieldset>
|
<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-row>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8" :offset="4">
|
<el-col :span="8" :offset="4">
|
||||||
<el-row style="margin-top: 10px">
|
<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>
|
||||||
<el-row style="margin-top: 10px">
|
<el-row style="margin-top: 15px">
|
||||||
<fieldset>
|
<div style="width: 550px" class="divBorder" :model="form">
|
||||||
<el-form :model="form" ref="form" label-position="left" label-width="200px" size="small">
|
<span style="margin-left: 10px;margin-top: 10px; display: block;">{{
|
||||||
<el-form-item label-width="200px" :label="$t('api_test.definition.api_quick_button')"
|
this.$t('api_test.definition.api_quick_button')
|
||||||
prop="apiQuick">
|
}}</span>
|
||||||
<el-radio-group v-model="form.apiQuick">
|
<el-radio-group v-model="form.apiQuick" style="margin-left: 300px; margin-top: -40px">
|
||||||
<el-radio label="debug" value="debug">
|
<el-radio label="debug" value="debug">
|
||||||
{{ this.$t('api_test.definition.request.fast_debug') }}
|
{{ this.$t('api_test.definition.request.fast_debug') }}
|
||||||
</el-radio>
|
</el-radio>
|
||||||
<el-radio label="api" value="api">
|
<el-radio label="api" value="api">
|
||||||
{{ this.$t('api_test.definition.request.title') }}
|
{{ this.$t('api_test.definition.request.title') }}
|
||||||
</el-radio>
|
</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</div>
|
||||||
</el-form>
|
|
||||||
</fieldset>
|
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -96,6 +102,7 @@
|
||||||
|
|
||||||
import MsContainer from "@/business/components/common/components/MsContainer";
|
import MsContainer from "@/business/components/common/components/MsContainer";
|
||||||
import MsMainContainer from "@/business/components/common/components/MsMainContainer";
|
import MsMainContainer from "@/business/components/common/components/MsMainContainer";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
getCurrentProjectID,
|
getCurrentProjectID,
|
||||||
getCurrentUser,
|
getCurrentUser,
|
||||||
|
@ -161,6 +168,14 @@ export default {
|
||||||
this.$success(this.$t('commons.save_success'));
|
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;
|
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>
|
</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 MsRolesTag from "@/business/components/common/components/MsRolesTag";
|
||||||
import AddMember from "@/business/components/settings/common/AddMember";
|
import AddMember from "@/business/components/settings/common/AddMember";
|
||||||
import MsInstructionsIcon from "@/business/components/common/components/MsInstructionsIcon";
|
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 {
|
export default {
|
||||||
name: "MsProject",
|
name: "MsProject",
|
||||||
|
|
|
@ -659,9 +659,10 @@ export default {
|
||||||
no_data: 'No Data',
|
no_data: 'No Data',
|
||||||
select: 'Select',
|
select: 'Select',
|
||||||
repeatable: 'Interface definition URL repeatable',
|
repeatable: 'Interface definition URL repeatable',
|
||||||
repeatable_info: 'Interface definition URL repeatable \n When enabled, the interface definition repeatability check will not check the URL',
|
repeatable_info: 'After enabling, the interface definition repeatability check will not check the URL',
|
||||||
case_public: 'Common use case library',
|
case_public: 'Public 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',
|
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',
|
upload_file_again: 'Upload again',
|
||||||
code_segment: {
|
code_segment: {
|
||||||
code_segment: "Custom Code",
|
code_segment: "Custom Code",
|
||||||
|
@ -694,6 +695,7 @@ export default {
|
||||||
log: 'Log',
|
log: 'Log',
|
||||||
version_manage: 'Version',
|
version_manage: 'Version',
|
||||||
app_manage: 'App Management',
|
app_manage: 'App Management',
|
||||||
|
app_manage_desc: 'Edit application management',
|
||||||
desc: 'Project Description',
|
desc: 'Project Description',
|
||||||
manage_people: 'Project Manager',
|
manage_people: 'Project Manager',
|
||||||
creator: 'Creator',
|
creator: 'Creator',
|
||||||
|
@ -705,9 +707,9 @@ export default {
|
||||||
group_desc: 'Add user groups and global configuration',
|
group_desc: 'Add user groups and global configuration',
|
||||||
code_segment_desc: 'Custom code snippet',
|
code_segment_desc: 'Custom code snippet',
|
||||||
test_case_custom_id: 'Test Case Custom ID',
|
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: '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: {
|
member: {
|
||||||
create: 'Create',
|
create: 'Create',
|
||||||
|
|
|
@ -663,9 +663,10 @@ export default {
|
||||||
no_data: '无数据',
|
no_data: '无数据',
|
||||||
select: '选择项目',
|
select: '选择项目',
|
||||||
repeatable: '接口定义URL可重复',
|
repeatable: '接口定义URL可重复',
|
||||||
repeatable_info: '接口定义URL可重复 \n 启用后接口定义重复性校验将不校验URL',
|
repeatable_info: '启用后接口定义重复性校验将不校验URL',
|
||||||
case_public: '公共用例库',
|
case_public: '公共用例库',
|
||||||
public_info: '启动公共用例库 \n 可以使用公共用例库数据,也可以自行添加用例至公共用例库',
|
public: '启动公共用例库',
|
||||||
|
public_info: '可以使用公共用例库数据,也可以自行添加用例至公共用例库',
|
||||||
upload_file_again: '重新上传',
|
upload_file_again: '重新上传',
|
||||||
code_segment: {
|
code_segment: {
|
||||||
code_segment: "自定义代码片段",
|
code_segment: "自定义代码片段",
|
||||||
|
@ -698,6 +699,7 @@ export default {
|
||||||
log: '操作日志',
|
log: '操作日志',
|
||||||
version_manage: '版本管理',
|
version_manage: '版本管理',
|
||||||
app_manage: '应用管理',
|
app_manage: '应用管理',
|
||||||
|
app_manage_desc: '编辑应用管理',
|
||||||
desc: '项目描述',
|
desc: '项目描述',
|
||||||
manage_people: '管理员',
|
manage_people: '管理员',
|
||||||
creator: '创建人',
|
creator: '创建人',
|
||||||
|
@ -709,9 +711,9 @@ export default {
|
||||||
log_desc: '项目全部操作过程',
|
log_desc: '项目全部操作过程',
|
||||||
code_segment_desc: '自定义代码片段',
|
code_segment_desc: '自定义代码片段',
|
||||||
test_case_custom_id: '测试用例自定义ID',
|
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: '场景自定义ID',
|
||||||
scenario_custom_id_info: '场景自定义ID \n 场景用例ID默认为系统自增ID',
|
scenario_custom_id_info: '场景用例ID默认为系统自增ID',
|
||||||
},
|
},
|
||||||
member: {
|
member: {
|
||||||
create: '添加成员',
|
create: '添加成员',
|
||||||
|
|
|
@ -698,6 +698,7 @@ export default {
|
||||||
log: '操作日誌',
|
log: '操作日誌',
|
||||||
version_manage: '版本管理',
|
version_manage: '版本管理',
|
||||||
app_manage: '應用管理',
|
app_manage: '應用管理',
|
||||||
|
app_manage_desc: '編輯應用管理',
|
||||||
desc: '項目描述',
|
desc: '項目描述',
|
||||||
manage_people: '管理員',
|
manage_people: '管理員',
|
||||||
creator: '創建人',
|
creator: '創建人',
|
||||||
|
|
Loading…
Reference in New Issue