fix(项目设置): 应用设置修改

--bug=1008893 --user=王孝刚 【公共用例库】-提示信息字体过大,不应该是正式文本一样参考原型设计
https://www.tapd.cn/55049933/s/1082003
This commit is contained in:
wxg0103 2021-12-16 19:18:46 +08:00 committed by 刘瑞斌
parent b5fcaad3da
commit 201c1b2b74
11 changed files with 461 additions and 88 deletions

View File

@ -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');

View File

@ -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"

View File

@ -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'));

View File

@ -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>

View File

@ -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">

View File

@ -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>

View File

@ -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>

View File

@ -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",

View File

@ -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',

View File

@ -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: '添加成员',

View File

@ -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: '創建人',