Browse Source

优化

master
陈裕财 3 years ago
parent
commit
63bbe562c0
  1. 6
      src/views/xm/core/xmTestCasedb/XmTestCasedbEnv.vue
  2. 111
      src/views/xm/core/xmTestCasedb/XmTestCasedbEnvSelect.vue
  3. 26
      src/views/xm/core/xmTestPlan/Detail.vue
  4. 140
      src/views/xm/core/xmTestPlan/XmTestPlanEnv.vue
  5. 22
      src/views/xm/core/xmTestPlan/XmTestPlanInfo.vue
  6. 2
      src/views/xm/core/xmTestPlan/XmTestPlanMng.vue

6
src/views/xm/core/xmTestCasedb/XmTestCasedbEnv.vue

@ -5,8 +5,8 @@
style="width: 100%">
<el-table-column
prop="id"
label="参数名"
min-width="200">
label="参数名(英文)"
min-width="100">
<template scope="scope">
<el-input v-model="scope.row.id"></el-input>
</template>
@ -23,7 +23,7 @@
<el-table-column
prop="name"
label="备注"
min-width="250">
min-width="150">
<template scope="scope">
<el-input v-model="scope.row.name"></el-input>
</template>

111
src/views/xm/core/xmTestCasedb/XmTestCasedbEnvSelect.vue

@ -0,0 +1,111 @@
<template>
<section>
<el-row v-if="isMult"><el-button type="primary" style="float:right;" icon="el-icon-checked" @click="selectConfirm">确认选中</el-button></el-row>
<el-row class="padding-top">
<el-table
:data="envList"
stripe
fit
border
style="width: 100%"
@selection-change="selsChange"
>
<template v-if="isMult"><el-table-column v-if="isMult" type="selection" width="55" ></el-table-column></template>
<el-table-column
prop="id"
label="参数名"
width="150">
<template slot="header" slot-scope="scope">
<div style="display:flex;">参数名 <el-checkbox v-model="isMult">多选</el-checkbox></div>
</template>
<template scope="scope">
<el-input v-model="scope.row.id"></el-input>
</template>
</el-table-column>
<el-table-column
prop="value"
label="参数值"
min-width="250">
<template scope="scope">
<el-input v-model="scope.row.value"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="备注"
min-width="150">
<template scope="scope">
<el-input v-model="scope.row.name"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="180">
<template scope="scope">
<el-button v-show="!isMult" type="primary" @click="select(scope.row,scope.$index)" icon="el-icon-checked">选择</el-button>
</template>
</el-table-column>
</el-table>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import { editSomeFieldsXmTestCasedb } from '@/api/xm/core/xmTestCasedb';
import { mapGetters } from 'vuex';
export default {
props:['xmTestCasedb'],
computed: {
...mapGetters([
'userInfo','roles'
]),
},
watch:{
xmTestCasedb:{
deep:true,
handler:function(){
this.initData();
}
}
},
data() {
return {
sels:[],
isMult:false,
envList:[{id:'',value:'',name:''}],
}
},//end data
methods: {
selsChange: function (sels) {
this.sels = sels;
},
selectConfirm(){
this.$emit('select',this.sels)
},
select(row){
this.$emit('select',[row])
},
initData(){
if(this.xmTestCasedb.envJson){
this.envList=JSON.parse(this.xmTestCasedb.envJson)
}else{
this.envList=[]
}
},
},//end methods
components: {
},
mounted() {
this.initData()
}
}
</script>
<style scoped>
</style>

26
src/views/xm/core/xmTestPlan/Detail.vue

@ -15,7 +15,9 @@
]),
},
watch:{
$route(){
this.initData();
}
},
data() {
return {
@ -23,21 +25,23 @@
}
},//end data
methods: {
initData(){
var planId=this.$route.query.id
if(planId){
var key="xm-test-plan-info-"+planId
var str=sessionStorage.getItem(key)
if(str && str!='null' && str!='undefined'){
this.xmTestPlan=JSON.parse(str)
}
}
}
},//end methods
components: {
XmTestPlanInfo,
//
},
mounted() {
var planId=this.$route.query.id
if(planId){
var key="xm-test-plan-info-"+planId
var str=sessionStorage.getItem(key)
if(str && str!='null' && str!='undefined'){
this.xmTestPlan=JSON.parse(str)
}
}
mounted() {
this.initData();
}
}
</script>

140
src/views/xm/core/xmTestPlan/XmTestPlanEnv.vue

@ -0,0 +1,140 @@
<template>
<section>
<el-table
:data="envList"
style="width: 100%">
<el-table-column
prop="id"
label="参数名(英文)"
min-width="100">
<template scope="scope">
<el-input v-model="scope.row.id"></el-input>
</template>
</el-table-column>
<el-table-column
prop="value"
label="参数值"
min-width="250">
<template scope="scope">
<el-input v-model="scope.row.value"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="备注"
min-width="150">
<template scope="scope">
<el-input v-model="scope.row.name"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="280">
<template slot="header" slot-scope="scope">
操作
<div style="display:flex;">
<el-button v-if="!envList||envList.length==0" @click="addEnvRow({},0)" icon="el-icon-plus"></el-button>
<el-button v-if="!envList||envList.length==0" @click="importFromCasedb({},0)" icon="el-icon-plus" plain>从测试库导入</el-button>
</div>
</template>
<template scope="scope">
<el-button type="danger" @click="deleteEnvRow(scope.row,scope.$index)" icon="el-icon-delete" circle plain></el-button>
<el-button @click="addEnvRow(scope.row,scope.$index)" icon="el-icon-plus" circle plain></el-button>
<el-button @click="importFromCasedb(scope.row,scope.$index)" icon="el-icon-plus" plain>从测试库导入</el-button>
</template>
</el-table-column>
</el-table>
<slot name="submit" :value="envList">
<el-row class="padding" style="float:right;"><el-button @click="saveData" type="primary">保存</el-button></el-row>
</slot>
<el-dialog append-to-body title="选择测试库环境变量" width="900px" top="10px" :visible.sync="xmTestCasedbEnvVisible">
<xm-test-casedb-env-select :xmTestCasedb="xmTestCasedb" @select="onCasedbEnvSelect"></xm-test-casedb-env-select>
</el-dialog>
</section>
</template>
<script>
import util from '@/common/js/util';//
import { editSomeFieldsXmTestPlan } from '@/api/xm/core/xmTestPlan';
import XmTestCasedbEnvSelect from '../xmTestCasedb/XmTestCasedbEnvSelect.vue';
import { mapGetters } from 'vuex';
export default {
props:['xmTestPlan','xmTestCasedb'],
computed: {
...mapGetters([
'userInfo','roles'
]),
},
watch:{
xmTestPlan:{
deep:true,
handler:function(){
this.initData();
}
}
},
data() {
return {
envList:[{id:'',value:'',name:''}],
xmTestCasedbEnvVisible:false,
}
},//end data
methods: {
addEnvRow(row,index){
this.envList.splice(index+1,0,{id:'',value:''})
},
deleteEnvRow(row,index){
this.envList.splice(index,1)
},
saveData(){
this.editSomeFields(this.xmTestPlan,"envJson",JSON.stringify(this.envList));
},
initData(){
if(this.xmTestPlan.envJson){
this.envList=JSON.parse(this.xmTestPlan.envJson)
}else{
this.envList=[]
}
},
importFromCasedb(row,index){
this.xmTestCasedbEnvVisible=true;
},
onCasedbEnvSelect(rows){
if(rows && rows.length>0){
this.envList.push(...rows)
}
this.xmTestCasedbEnvVisible=false;
},
editSomeFields(row,fieldName,$event){
let params={};
params['ids']=[row].map(i=>i.id)
params[fieldName]=$event
var func = editSomeFieldsXmTestPlan
func(params).then(res=>{
let tips = res.data.tips;
if(tips.isOk){
row.envJson=$event
this.$emit('edit-fields',row)
this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
}else{
this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
}
}).catch((e)=> {})
},
},//end methods
components: {
XmTestCasedbEnvSelect,
},
mounted() {
this.initData()
}
}
</script>
<style scoped>
</style>

22
src/views/xm/core/xmTestPlan/XmTestPlanInfo.vue

@ -6,6 +6,8 @@
<el-divider direction="vertical"></el-divider>
{{xmTestPlan.name}}
<el-divider direction="vertical"></el-divider>
<el-link :type="subPage=='testPlanEnv'?'primary':''" @click="subPage='testPlanEnv'"><i class="el-icon-setting"></i>&nbsp;环境</el-link>
<el-divider direction="vertical"></el-divider>
<el-link :type="subPage=='testPlanCase'?'primary':''" @click="subPage='testPlanCase'"><i class="el-icon-video-play"></i>&nbsp;执行测试</el-link>
<el-divider direction="vertical"></el-divider>
<el-link :type="subPage=='testBug'?'primary':''" @click="subPage='testBug'"><i class="el-icon-question"></i>&nbsp;缺陷</el-link>
@ -27,7 +29,9 @@
</span>
</span>
</el-row>
<el-row v-if="subPage=='testPlanEnv'" class="padding-left padding-right">
<xm-test-plan-env :xm-test-plan="xmTestPlan" :xm-test-casedb="xmTestCasedb"></xm-test-plan-env>
</el-row>
<el-row v-if="subPage=='testPlanCase'" class="padding-left padding-right">
<xm-test-plan-case-mng :xm-test-plan="xmTestPlan" :xm-test-casedb="xmTestCasedb"></xm-test-plan-case-mng>
</el-row>
@ -62,6 +66,7 @@ export default {
XmProductSelect,XmQuestionMng,
"xm-test-plan-rpt":()=>import("../../rpt/index/index.vue"),
"xm-rpt":()=>import("../../rpt/index"),
"xm-test-plan-env":()=>import("../xmTestPlan/XmTestPlanEnv.vue"),
"xm-test-plan-mng":()=>import("../xmTestPlan/XmTestPlanMng.vue"),
"xm-test-case-mng":()=>import("../xmTestCase/XmTestCaseMng.vue"),
"xm-test-plan-case-mng":()=>import("../xmTestPlanCase/XmTestPlanCaseMng.vue")
@ -118,6 +123,12 @@ export default {
visible(val){
if(val==true){
}
},
xmTestPlan:{
deep:true,
handler(){
this.subPage="testPlanEnv"
}
}
},
data() {
@ -125,17 +136,12 @@ export default {
dicts:{
testPlanStatus:[],
},
activeIndex:'testPlan',//testPlanCase,testPlan
subPage:'testPlanCase',//testPlanCase,testBug
subPage:'testPlanEnv',//testPlanCase,testBug
}
},//end data
methods: {
...util,
onTestPlanSelect(row){
this.activeIndex='testPlanCase'
this.xmTestPlan=row
},
...util,
showRptConfig(){
this.$refs['rpt'].isRptCfg=true
},

2
src/views/xm/core/xmTestPlan/XmTestPlanMng.vue

@ -54,7 +54,7 @@
</el-table-column>
<el-table-column prop="totalCases" label="进度" min-width="120" show-overflow-tooltip>
<template slot-scope="scope">
<el-tooltip open-delay=300 :content="'总用例数:'+scope.row.totalCases+' 成功:'+scope.row.okCases +' 失败:'+scope.row.errCases+' 忽略:'+scope.row.igCases+' 阻塞:'+scope.row.blCases">
<el-tooltip :open-delay="300" :content="'总用例数:'+scope.row.totalCases+' 成功:'+scope.row.okCases +' 失败:'+scope.row.errCases+' 忽略:'+scope.row.igCases+' 阻塞:'+scope.row.blCases">
<el-progress :stroke-width="22" :text-inside="true" :status="scope.row.totalCases>0 && scope.row.errCases<=0 ?'success':'exception'" :percentage="scope.row.totalCases>0?parseInt((parseInt(scope.row.okCases)+parseInt(scope.row.igCases)+parseInt(scope.row.errCases)+parseInt(scope.row.blCases))*100/parseInt(scope.row.totalCases)):0"></el-progress>
</el-tooltip>
</template>

Loading…
Cancel
Save