Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MeterSphere
metersphere
提交
d3fccb25
M
metersphere
项目概览
MeterSphere
/
metersphere
上一次同步 大约 3 年
通知
25
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
metersphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d3fccb25
编写于
3月 29, 2021
作者:
F
fit2-zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(场景自动化,测试用例,): 测试用例、 接口定义、场景自动化 增加“默认模块” 创建测试用例、接口定义、场景时 所属模块默认值为“默认模块”
上级
e2ead6e0
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
98 addition
and
69 deletion
+98
-69
backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java
...java/io/metersphere/api/service/ApiAutomationService.java
+4
-0
frontend/src/business/components/api/automation/ApiAutomation.vue
.../src/business/components/api/automation/ApiAutomation.vue
+1
-1
frontend/src/business/components/api/automation/scenario/ApiScenarioModule.vue
.../components/api/automation/scenario/ApiScenarioModule.vue
+15
-8
frontend/src/business/components/api/automation/scenario/EditApiScenario.vue
...ss/components/api/automation/scenario/EditApiScenario.vue
+12
-14
frontend/src/business/components/api/automation/scenario/api/AddBasisApi.vue
...ss/components/api/automation/scenario/api/AddBasisApi.vue
+17
-6
frontend/src/business/components/api/automation/scenario/common/ScenarioImport.vue
...ponents/api/automation/scenario/common/ScenarioImport.vue
+15
-8
frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue
...components/api/definition/components/case/ApiCaseItem.vue
+1
-1
frontend/src/business/components/api/definition/components/module/ApiModule.vue
...components/api/definition/components/module/ApiModule.vue
+1
-2
frontend/src/business/components/common/select-tree/SelectTree.vue
...src/business/components/common/select-tree/SelectTree.vue
+4
-2
frontend/src/business/components/track/case/components/TestCaseEdit.vue
...usiness/components/track/case/components/TestCaseEdit.vue
+24
-26
frontend/src/business/components/track/common/NodeTree.vue
frontend/src/business/components/track/common/NodeTree.vue
+1
-1
frontend/src/i18n/en-US.js
frontend/src/i18n/en-US.js
+1
-0
frontend/src/i18n/zh-CN.js
frontend/src/i18n/zh-CN.js
+1
-0
frontend/src/i18n/zh-TW.js
frontend/src/i18n/zh-TW.js
+1
-0
未找到文件。
backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java
浏览文件 @
d3fccb25
...
...
@@ -234,6 +234,10 @@ public class ApiAutomationService {
}
else
{
scenario
.
setUserId
(
request
.
getUserId
());
}
if
(
StringUtils
.
isEmpty
(
request
.
getApiScenarioModuleId
())
||
StringUtils
.
isEmpty
(
request
.
getModulePath
()))
{
scenario
.
setApiScenarioModuleId
(
"root"
);
scenario
.
setModulePath
(
"/默认模块"
);
}
return
scenario
;
}
...
...
frontend/src/business/components/api/automation/ApiAutomation.vue
浏览文件 @
d3fccb25
...
...
@@ -189,7 +189,7 @@
let
label
=
this
.
$t
(
'
api_test.automation.add_scenario
'
);
let
name
=
getUUID
().
substring
(
0
,
8
);
this
.
activeName
=
name
;
this
.
tabs
.
push
({
label
:
label
,
name
:
name
,
currentScenario
:
{
apiScenarioModuleId
:
""
,
id
:
getUUID
()}});
this
.
tabs
.
push
({
label
:
label
,
name
:
name
,
currentScenario
:
{
apiScenarioModuleId
:
"
root
"
,
id
:
getUUID
()}});
}
if
(
tab
.
name
===
'
edit
'
)
{
let
label
=
this
.
$t
(
'
api_test.automation.add_scenario
'
);
...
...
frontend/src/business/components/api/automation/scenario/ApiScenarioModule.vue
浏览文件 @
d3fccb25
...
...
@@ -29,7 +29,7 @@
@
refresh=
"refresh"
ref=
"basisScenario"
/>
<api-import
ref=
"apiImport"
:moduleOptions=
"
moduleOption
s"
@
refreshAll=
"$emit('refreshAll')"
/>
<api-import
ref=
"apiImport"
:moduleOptions=
"
extendTreeNode
s"
@
refreshAll=
"$emit('refreshAll')"
/>
</div>
</template>
...
...
@@ -38,7 +38,7 @@
import
SelectMenu
from
"
../../../track/common/SelectMenu
"
;
import
MsAddBasisScenario
from
"
@/business/components/api/automation/scenario/AddBasisScenario
"
;
import
MsNodeTree
from
"
../../../track/common/NodeTree
"
;
import
{
buildNodePath
}
from
"
../../definition/model/NodeTree
"
;
import
{
buildNodePath
,
buildTree
}
from
"
../../definition/model/NodeTree
"
;
import
ModuleTrashButton
from
"
../../definition/components/module/ModuleTrashButton
"
;
import
ApiImport
from
"
./common/ScenarioImport
"
;
import
MsSearchBar
from
"
@/business/components/common/components/search/MsSearchBar
"
;
...
...
@@ -82,9 +82,10 @@
trashEnable
:
false
},
data
:
[],
extendTreeNodes
:
[],
currentModule
:
undefined
,
moduleOptions
:
[],
operators
:
[
operators
:
[
{
label
:
this
.
$t
(
'
api_test.automation.add_scenario
'
),
callback
:
this
.
addScenario
...
...
@@ -97,7 +98,7 @@
label
:
this
.
$t
(
'
report.export
'
),
children
:
[
{
label
:
this
.
$t
(
'
report.export_to_ms_format
'
)
,
label
:
this
.
$t
(
'
report.export_to_ms_format
'
),
callback
:
()
=>
{
this
.
$emit
(
'
exportAPI
'
);
}
...
...
@@ -187,11 +188,17 @@
this
.
result
=
this
.
$get
(
url
,
response
=>
{
if
(
response
.
data
!=
undefined
&&
response
.
data
!=
null
)
{
this
.
data
=
response
.
data
;
let
moduleOptions
=
[];
this
.
data
.
forEach
(
node
=>
{
buildNodePath
(
node
,
{
path
:
''
},
moduleOptions
);
this
.
extendTreeNodes
=
[];
this
.
extendTreeNodes
.
unshift
({
"
id
"
:
"
root
"
,
"
name
"
:
this
.
$t
(
'
commons.module_title
'
),
"
level
"
:
0
,
"
children
"
:
this
.
data
,
});
this
.
$emit
(
'
setModuleOptions
'
,
moduleOptions
);
this
.
extendTreeNodes
.
forEach
(
node
=>
{
buildTree
(
node
,
{
path
:
''
});
});
this
.
$emit
(
'
setModuleOptions
'
,
this
.
extendTreeNodes
);
this
.
$emit
(
'
setNodeTree
'
,
this
.
data
);
if
(
this
.
$refs
.
nodeTree
)
{
this
.
$refs
.
nodeTree
.
filter
(
this
.
condition
.
filterText
);
...
...
frontend/src/business/components/api/automation/scenario/EditApiScenario.vue
浏览文件 @
d3fccb25
...
...
@@ -22,9 +22,7 @@
</el-col>
<el-col
:span=
"7"
>
<el-form-item
:label=
"$t('test_track.module.module')"
prop=
"apiScenarioModuleId"
>
<el-select
class=
"ms-scenario-input"
size=
"small"
v-model=
"currentScenario.apiScenarioModuleId"
>
<el-option
v-for=
"item in moduleOptions"
:key=
"item.id"
:label=
"item.path"
:value=
"item.id"
/>
</el-select>
<ms-select-tree
size=
"small"
:data=
"moduleOptions"
:defaultKey=
"currentScenario.apiScenarioModuleId"
@
getValue=
"setModule"
:obj=
"moduleObj"
clearable
checkStrictly
/>
</el-form-item>
</el-col>
<el-col
:span=
"7"
>
...
...
@@ -244,6 +242,7 @@
import
MaximizeScenario
from
"
./maximize/MaximizeScenario
"
;
import
ScenarioHeader
from
"
./maximize/ScenarioHeader
"
;
import
MsDrawer
from
"
../../../common/components/MsDrawer
"
;
import
MsSelectTree
from
"
../../../common/select-tree/SelectTree
"
;
let
jsonPath
=
require
(
'
jsonpath
'
);
export
default
{
...
...
@@ -266,7 +265,8 @@
EnvPopover
,
MaximizeScenario
,
ScenarioHeader
,
MsDrawer
MsDrawer
,
MsSelectTree
},
data
()
{
return
{
...
...
@@ -274,6 +274,10 @@
label
:
"
label
"
,
children
:
"
hashTree
"
},
moduleObj
:
{
id
:
'
id
'
,
label
:
'
name
'
,
},
rules
:
{
name
:
[
{
required
:
true
,
message
:
this
.
$t
(
'
test_track.case.input_name
'
),
trigger
:
'
blur
'
},
...
...
@@ -450,6 +454,10 @@
},
},
methods
:
{
setModule
(
id
,
data
)
{
this
.
currentScenario
.
apiScenarioModuleId
=
id
;
this
.
currentScenario
.
modulePath
=
data
.
path
;
},
setHideBtn
()
{
this
.
isBtnHide
=
false
;
},
...
...
@@ -905,15 +913,6 @@
this
.
expandedNode
.
splice
(
this
.
expandedNode
.
indexOf
(
data
.
resourceId
),
1
);
}
},
getPath
(
id
)
{
if
(
id
===
null
)
{
return
null
;
}
let
path
=
this
.
moduleOptions
.
filter
(
function
(
item
)
{
return
item
.
id
===
id
?
item
.
path
:
""
;
});
return
path
[
0
].
path
;
},
setFiles
(
item
,
bodyUploadFiles
,
obj
)
{
if
(
item
.
body
)
{
if
(
item
.
body
.
kvs
)
{
...
...
@@ -1071,7 +1070,6 @@
setParameter
()
{
this
.
currentScenario
.
stepTotal
=
this
.
scenarioDefinition
.
length
;
this
.
currentScenario
.
projectId
=
this
.
projectId
;
this
.
currentScenario
.
modulePath
=
this
.
getPath
(
this
.
currentScenario
.
apiScenarioModuleId
);
// 构建一个场景对象 方便引用处理
let
scenario
=
{
id
:
this
.
currentScenario
.
id
,
...
...
frontend/src/business/components/api/automation/scenario/api/AddBasisApi.vue
浏览文件 @
d3fccb25
...
...
@@ -31,7 +31,7 @@
</el-form-item>
<el-form-item
:label=
"$t('test_track.module.module')"
prop=
"moduleId"
>
<ms-select-tree
size=
"small"
:data=
"moduleOptions"
@
getValue=
"setModule"
:obj=
"moduleObj"
clearable
checkStrictly
/>
<ms-select-tree
size=
"small"
:data=
"moduleOptions"
:defaultKey=
"httpForm.moduleId"
@
getValue=
"setModule"
:obj=
"moduleObj"
clearable
checkStrictly
/>
</el-form-item>
<el-form-item
:label=
"$t('commons.description')"
prop=
"description"
style=
"margin-bottom: 29px"
>
...
...
@@ -64,6 +64,7 @@
import
{
createComponent
,
Request
}
from
"
../../../definition/components/jmeter/components
"
;
import
{
getUUID
}
from
"
@/common/js/utils
"
;
import
MsSelectTree
from
"
@/business/components/common/select-tree/SelectTree
"
;
import
{
buildTree
}
from
"
../../../definition/model/NodeTree
"
;
export
default
{
...
...
@@ -83,7 +84,7 @@
callback
();
};
return
{
httpForm
:
{
environmentId
:
""
},
httpForm
:
{
environmentId
:
""
,
moduleId
:
"
root
"
},
moduleOptions
:
[],
httpVisible
:
false
,
currentModule
:
{},
...
...
@@ -250,13 +251,23 @@
let
url
=
"
/api/module/list/
"
+
getCurrentProjectID
()
+
"
/
"
+
data
.
protocol
;
this
.
result
=
this
.
$get
(
url
,
response
=>
{
if
(
response
.
data
!=
undefined
&&
response
.
data
!=
null
)
{
this
.
moduleOptions
=
response
.
data
;
let
data
=
response
.
data
;
this
.
moduleOptions
=
[];
this
.
moduleOptions
.
unshift
({
"
id
"
:
"
root
"
,
"
name
"
:
this
.
$t
(
'
commons.module_title
'
),
"
level
"
:
0
,
"
children
"
:
data
,
});
this
.
moduleOptions
.
forEach
(
node
=>
{
buildTree
(
node
,
{
path
:
''
});
});
}
});
},
setModule
(
id
)
{
setModule
(
id
,
data
)
{
this
.
httpForm
.
moduleId
=
id
;
//this.reload()
;
this
.
httpForm
.
modulePath
=
data
.
path
;
},
reload
()
{
this
.
loading
=
true
...
...
@@ -271,7 +282,7 @@
data
.
protocol
=
"
DUBBO
"
;
}
data
.
id
=
getUUID
();
this
.
httpForm
=
{
id
:
data
.
id
,
name
:
data
.
name
,
protocol
:
data
.
protocol
,
path
:
data
.
path
,
method
:
api
.
method
,
userId
:
getCurrentUser
().
id
,
request
:
data
};
this
.
httpForm
=
{
id
:
data
.
id
,
name
:
data
.
name
,
protocol
:
data
.
protocol
,
path
:
data
.
path
,
method
:
api
.
method
,
userId
:
getCurrentUser
().
id
,
request
:
data
,
moduleId
:
"
root
"
};
this
.
getMaintainerOptions
();
this
.
list
(
data
);
this
.
httpVisible
=
true
;
...
...
frontend/src/business/components/api/automation/scenario/common/ScenarioImport.vue
浏览文件 @
d3fccb25
...
...
@@ -22,11 +22,9 @@
<el-row>
<el-col
:span=
"11"
>
<el-form-item
:label=
"$t('commons.import_module')"
>
<el-select
size=
"small"
v-model=
"formData.moduleId"
class=
"project-select"
clearable
>
<el-option
v-for=
"item in moduleOptions"
:key=
"item.id"
:label=
"item.path"
:value=
"item.id"
/>
</el-select>
<ms-select-tree
size=
"small"
:data=
"moduleOptions"
:defaultKey=
"formData.moduleId"
@
getValue=
"setModule"
:obj=
"moduleObj"
clearable
checkStrictly
/>
</el-form-item>
<el-form-item
v-if=
"!isHar"
:label=
"$t('commons.import_mode')"
>
<el-form-item
v-if=
"!isHar"
:label=
"$t('commons.import_mode')"
>
<el-select
size=
"small"
v-model=
"formData.modeId"
class=
"project-select"
clearable
>
<el-option
v-for=
"item in modeOptions"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
...
...
@@ -70,16 +68,17 @@
<
script
>
import
MsDialogFooter
from
"
../../../../common/components/MsDialogFooter
"
;
import
{
listenGoBack
,
removeGoBackListener
}
from
"
@/common/js/utils
"
;
import
MsSelectTree
from
"
../../../../common/select-tree/SelectTree
"
;
export
default
{
name
:
"
ScenarioImport
"
,
components
:
{
MsDialogFooter
},
components
:
{
MsDialogFooter
,
MsSelectTree
},
props
:
{
saved
:
{
type
:
Boolean
,
default
:
true
,
},
moduleOptions
:
{}
moduleOptions
:
Array
,
},
data
()
{
return
{
...
...
@@ -140,7 +139,11 @@
},
rules
:
{},
currentModule
:
{},
fileList
:
[]
fileList
:
[],
moduleObj
:
{
id
:
'
id
'
,
label
:
'
name
'
,
},
}
},
activated
()
{
...
...
@@ -257,7 +260,11 @@
this
.
fileList
=
[];
removeGoBackListener
(
this
.
close
);
this
.
visible
=
false
;
}
},
setModule
(
id
,
data
)
{
this
.
formData
.
moduleId
=
id
;
this
.
formData
.
modulePath
=
data
.
path
;
},
}
}
</
script
>
...
...
frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue
浏览文件 @
d3fccb25
...
...
@@ -281,7 +281,7 @@
let
data
=
this
.
api
;
data
.
name
=
this
.
apiCase
.
name
;
data
.
moduleId
=
module
;
data
.
modulePath
=
'
/默认模块
'
;
data
.
modulePath
=
"
/
"
+
this
.
$t
(
'
commons.module_title
'
)
;
this
.
setParameters
(
data
);
let
bodyFiles
=
this
.
getBodyUploadFiles
(
data
);
this
.
$fileUpload
(
"
/api/definition/create
"
,
null
,
bodyFiles
,
data
,
()
=>
{
...
...
frontend/src/business/components/api/definition/components/module/ApiModule.vue
浏览文件 @
d3fccb25
...
...
@@ -7,7 +7,6 @@
v-loading=
"result.loading"
:tree-nodes=
"data"
:type=
"isReadOnly ? 'view' : 'edit'"
:allLabel=
"'默认模块'"
@
add=
"add"
@
edit=
"edit"
@
drag=
"drag"
...
...
@@ -135,7 +134,7 @@
this
.
extendTreeNodes
=
[];
this
.
extendTreeNodes
.
unshift
({
"
id
"
:
"
root
"
,
"
name
"
:
"
默认模块
"
,
"
name
"
:
this
.
$t
(
'
commons.module_title
'
)
,
"
level
"
:
0
,
"
children
"
:
this
.
data
,
});
...
...
frontend/src/business/components/common/select-tree/SelectTree.vue
浏览文件 @
d3fccb25
...
...
@@ -236,7 +236,9 @@
setKey
(
thisKey
)
{
this
.
$refs
.
tree
.
setCurrentKey
(
thisKey
);
let
node
=
this
.
$refs
.
tree
.
getNode
(
thisKey
);
this
.
setData
(
node
.
data
);
if
(
node
&&
node
.
data
)
{
this
.
setData
(
node
.
data
);
}
},
//单选:设置、初始化对象
setData
(
data
)
{
...
...
@@ -287,7 +289,7 @@
},
//下拉框关闭执行
popoverHide
()
{
this
.
$emit
(
'
getValue
'
,
this
.
returnDataKeys
,
this
.
returnDatas
);
this
.
$emit
(
'
getValue
'
,
this
.
returnDataKeys
,
this
.
returnDatas
?
this
.
returnDatas
:
{}
);
},
// 多选,清空所有勾选
clearSelectedNodes
()
{
...
...
frontend/src/business/components/track/case/components/TestCaseEdit.vue
浏览文件 @
d3fccb25
...
...
@@ -35,20 +35,8 @@
<el-col
:span=
"7"
>
<el-form-item
:label=
"$t('test_track.case.module')"
:label-width=
"formLabelWidth"
prop=
"module"
>
<el-select
v-model=
"form.module"
:disabled=
"readOnly"
:placeholder=
"$t('test_track.case.input_module')"
filterable
class=
"ms-case-input"
>
<el-option
v-for=
"item in moduleOptions"
:key=
"item.id"
:label=
"item.path"
:value=
"item.id"
>
</el-option>
</el-select>
<ms-select-tree
:disabled=
"readOnly"
:data=
"moduleOptions"
:defaultKey=
"form.module"
:obj=
"moduleObj"
@
getValue=
"setModule"
clearable
checkStrictly
size=
"small"
/>
</el-form-item>
</el-col>
<el-col
:span=
"7"
>
...
...
@@ -292,7 +280,7 @@ import MsDialogFooter from '../../../common/components/MsDialogFooter'
import
{
getCurrentUser
,
handleCtrlSEvent
,
listenGoBack
,
removeGoBackListener
}
from
"
@/common/js/utils
"
;
import
{
Message
}
from
"
element-ui
"
;
import
TestCaseAttachment
from
"
@/business/components/track/case/components/TestCaseAttachment
"
;
import
{
buildNodePath
}
from
"
../../../api/definition/model/NodeTree
"
;
import
{
buildNodePath
,
buildTree
}
from
"
../../../api/definition/model/NodeTree
"
;
import
CaseComment
from
"
@/business/components/track/case/components/CaseComment
"
;
import
MsInputTag
from
"
@/business/components/api/automation/scenario/MsInputTag
"
;
import
MsPreviousNextButton
from
"
../../../common/components/MsPreviousNextButton
"
;
...
...
@@ -301,12 +289,13 @@ import TestCaseComment from "@/business/components/track/case/components/TestCas
import
ReviewCommentItem
from
"
@/business/components/track/review/commom/ReviewCommentItem
"
;
import
{
API_STATUS
,
REVIEW_STATUS
,
TEST
}
from
"
@/business/components/api/definition/model/JsonData
"
;
import
MsTableButton
from
"
@/business/components/common/components/MsTableButton
"
;
import
MsSelectTree
from
"
../../../common/select-tree/SelectTree
"
;
export
default
{
name
:
"
TestCaseEdit
"
,
components
:
{
MsTableButton
,
MsSelectTree
,
ReviewCommentItem
,
TestCaseComment
,
MsPreviousNextButton
,
MsInputTag
,
CaseComment
,
MsDialogFooter
,
TestCaseAttachment
},
...
...
@@ -325,7 +314,8 @@ export default {
dialogFormVisible
:
false
,
form
:
{
name
:
''
,
module
:
''
,
module
:
'
root
'
,
nodePath
:
''
,
maintainer
:
getCurrentUser
().
id
,
priority
:
'
P0
'
,
type
:
''
,
...
...
@@ -381,6 +371,10 @@ export default {
index
:
0
,
showInputTag
:
true
,
tableType
:
""
,
moduleObj
:
{
id
:
'
id
'
,
label
:
'
name
'
,
},
};
},
props
:
{
...
...
@@ -435,6 +429,10 @@ export default {
this
.
addListener
();
// 添加 ctrl s 监听
},
methods
:
{
setModule
(
id
,
data
)
{
this
.
form
.
module
=
id
;
this
.
form
.
nodePath
=
data
.
path
;
},
clearInput
()
{
//this.$refs['cascade'].panel.clearCheckedNodes()
},
...
...
@@ -761,11 +759,6 @@ export default {
Object
.
assign
(
param
,
this
.
form
);
param
.
steps
=
JSON
.
stringify
(
this
.
form
.
steps
);
param
.
nodeId
=
this
.
form
.
module
;
this
.
moduleOptions
.
forEach
(
item
=>
{
if
(
this
.
form
.
module
===
item
.
id
)
{
param
.
nodePath
=
item
.
path
;
}
});
if
(
this
.
projectId
)
{
param
.
projectId
=
this
.
projectId
;
}
...
...
@@ -838,11 +831,16 @@ export default {
this
.
getTestOptions
()
},
getModuleOptions
()
{
let
moduleOptions
=
[];
this
.
treeNodes
.
forEach
(
node
=>
{
buildNodePath
(
node
,
{
path
:
''
},
moduleOptions
);
this
.
moduleOptions
=
[];
this
.
moduleOptions
.
unshift
({
"
id
"
:
"
root
"
,
"
name
"
:
this
.
$t
(
'
commons.module_title
'
),
"
level
"
:
0
,
"
children
"
:
this
.
treeNodes
,
});
this
.
moduleOptions
.
forEach
(
node
=>
{
buildTree
(
node
,
{
path
:
''
});
});
this
.
moduleOptions
=
moduleOptions
;
},
getMaintainerOptions
()
{
let
workspaceId
=
localStorage
.
getItem
(
WORKSPACE_ID
);
...
...
frontend/src/business/components/track/common/NodeTree.vue
浏览文件 @
d3fccb25
...
...
@@ -92,7 +92,7 @@ export default {
allLabel
:
{
type
:
String
,
default
()
{
return
this
.
$t
(
"
commons.all_label.case
"
);
return
this
.
$t
(
'
commons.module_title
'
);
}
},
nameLimit
:
{
...
...
frontend/src/i18n/en-US.js
浏览文件 @
d3fccb25
...
...
@@ -5,6 +5,7 @@ export default {
pass_rate
:
'
Pass rate
'
,
execution_times
:
'
Execution times
'
,
cover
:
'
Cover
'
,
module_title
:
'
Default module
'
,
not_cover
:
'
Not Cover
'
,
import
:
'
Import
'
,
import_success
:
'
Import success
'
,
...
...
frontend/src/i18n/zh-CN.js
浏览文件 @
d3fccb25
...
...
@@ -5,6 +5,7 @@ export default {
pass_rate
:
'
通过率
'
,
execution_times
:
'
执行次数
'
,
cover
:
'
覆盖
'
,
module_title
:
'
默认模块
'
,
not_cover
:
'
不覆盖
'
,
import
:
'
导入
'
,
import_success
:
'
导入成功
'
,
...
...
frontend/src/i18n/zh-TW.js
浏览文件 @
d3fccb25
...
...
@@ -5,6 +5,7 @@ export default {
pass_rate
:
'
通過率
'
,
execution_times
:
'
執行次數
'
,
cover
:
'
覆蓋
'
,
module_title
:
'
默認模塊
'
,
not_cover
:
'
不覆蓋
'
,
import
:
'
導入
'
,
import_success
:
'
導入成功
'
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录