Browse Source

优化

master
陈裕财 3 years ago
parent
commit
0352e0f275
  1. 11
      src/router/routes_xm.js
  2. 3
      src/views/xm/core/xmProject/top-nav.vue
  3. 223
      src/views/xm/core/xmTestPlan/XmTestPlanListForProject.vue

11
src/router/routes_xm.js

@ -120,6 +120,17 @@ export default {
},
hidden:true
},
{
path: 'test/plan',
component: _import('xm/core/xmTestPlan/XmTestPlanListForProject'),
name: 'projectTestPlan',
iconCls: 'fa el-icon-menu',
meta: {
title: '项目-测试',
icon: 'project',roles:["user"]
},
hidden:true
},
{
path: 'question',
component: _import('xm/core/xmQuestion/XmQuestionForProject'),

3
src/views/xm/core/xmProject/top-nav.vue

@ -43,6 +43,9 @@
<span slot="title"><i class="el-icon-s-operation"></i>任务</span>
</el-menu-item>
-->
<el-menu-item :index="'/xm/core/project/test/plan?projectId='+projectInfo.id">
<span slot="title"><i class="el-icon-question"></i>测试</span>
</el-menu-item>
<el-menu-item :index="'/xm/core/project/question?projectId='+projectInfo.id">
<span slot="title"><i class="el-icon-question"></i>缺陷</span>
</el-menu-item>

223
src/views/xm/core/xmTestPlan/XmTestPlanListForProject.vue

@ -0,0 +1,223 @@
<template>
<section class="page-container padding" ref="xmTestPlanTable">
<el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询" clearable></el-input>
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchXmTestPlans" icon="el-icon-search">查询</el-button>
</el-row>
<el-row class="padding-top">
<!--列表 XmTestPlan 测试计划-->
<el-table :data="xmTestPlans" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip fixed="left"></el-table-column>
<!--
<el-table-column sortable prop="username" width="55" show-overflow-tooltip fixed="left">
<span class="cell-text"> {{scope.row.username}}} </span>
<span class="cell-bar"><el-input style="display:inline;" v-model="scope.row.username" placeholder="" @change="editSomeFields(scope.row,'username',$event)" :maxlength="22"></el-input></span>
</el-table-column>
-->
<el-table-column prop="name" label="计划名称" min-width="250" show-overflow-tooltip>
<template slot-scope="scope">
<span> {{scope.row.name}} </span>
</template>
</el-table-column>
<el-table-column prop="status" label="状态" width="120" show-overflow-tooltip>
<template slot-scope="scope">
<mdp-select-dict-tag :dict="dicts['testPlanStatus']" v-model="scope.row.status" effect="dark" :disabled="true"></mdp-select-dict-tag>
</template>
</el-table-column>
<el-table-column prop="stime" label="开始时间" width="120" show-overflow-tooltip>
<template slot-scope="scope">
<span> {{scope.row.stime}} </span>
</template>
</el-table-column>
<el-table-column prop="etime" label="结束时间" width="120" show-overflow-tooltip>
<template slot-scope="scope">
<span> {{scope.row.etime}} </span>
</template>
</el-table-column>
<el-table-column label="操作" width="120" fixed="right">
<template slot-scope="scope">
<el-button type="primary" @click="select(scope.row)">选择</el-button>
</template>
</el-table-column>
</el-table>
</el-row>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from '@/common/config';//
import { initDicts,listXmTestPlan } from '@/api/xm/core/xmTestPlan';
import { mapGetters } from 'vuex'
export default {
name:'xmTestPlanSelect',
components: {
},
props:[],
computed: {
...mapGetters(['userInfo','projectInfo']),
},
watch:{
visible(val){
if(val==true){
this.initData();
this.searchXmTestPlans()
}
}
},
data() {
return {
visible:false,
filters: {
key: ''
},
xmTestPlans: [],//
pageInfo:{//
total:0,//0>0
pageSize:10,//
count:true,//
pageNum:1,//1
orderFields:[],// ['sex','student_id']
orderDirs:[]// asc,desc ['asc','desc']
},
load:{ list: false, edit: false, del: false, add: false },//...
sels: [],//
dicts:{
testPlanStatus:[],testPlanTcode:[],testStepTcode:[],priority:[],bizFlowState:[]
//sex: [{id:'1',name:''},{id:'2',name:''}]
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
addFormVisible: false,//xmTestPlan
addForm: {
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:''
},
editFormVisible: false,//
editForm: {
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:''
},
maxTableHeight:300,
}
},//end data
methods: {
...util,
handleSizeChange(pageSize) {
this.pageInfo.pageSize=pageSize;
this.getXmTestPlans();
},
handleCurrentChange(pageNum) {
this.pageInfo.pageNum = pageNum;
this.getXmTestPlans();
},
// obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){
if(obj.order==null){
this.pageInfo.orderFields=[];
this.pageInfo.orderDirs=[];
}else{
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
this.pageInfo.orderFields=[util.toLine(obj.prop)];
this.pageInfo.orderDirs=[dir];
}
this.getXmTestPlans();
},
searchXmTestPlans(){
this.pageInfo.count=true;
this.getXmTestPlans();
},
// XmTestPlan
getXmTestPlans() {
let params = {
pageSize: this.pageInfo.pageSize,
pageNum: this.pageInfo.pageNum,
total: this.pageInfo.total,
count:this.pageInfo.count
};
if(this.pageInfo.orderFields!=null && this.pageInfo.orderFields.length>0){
let orderBys=[];
for(var i=0;i<this.pageInfo.orderFields.length;i++){
orderBys.push(this.pageInfo.orderFields[i]+" "+this.pageInfo.orderDirs[i])
}
params.orderBy= orderBys.join(",")
}
if(this.filters.key){
params.key=this.filters.key
}
if(this.projectInfo && this.projectInfo.id){
params.projectId=this.projectInfo.id
}else{
return;
}
this.load.list = true;
listXmTestPlan(params).then((res) => {
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.total = res.data.total;
this.pageInfo.count=false;
this.xmTestPlans = res.data.data;
}else{
this.$notify({ position:'bottom-left',showClose:true, message: tips.msg, type: 'error' });
}
this.load.list = false;
}).catch( err => this.load.list = false );
},
//xmTestPlan
selsChange: function (sels) {
this.sels = sels;
},
rowClick: function(row, event, column){
this.editForm=row
this.editFormBak={...row};
this.$emit('row-click',row, event, column);// @row-click="rowClick"
},
initData: function(){
},
open(){
this.visible=true
},
select(row){
this.$route.push({
path:'/xm/core/test/plan',
query:{
casedbId:row.casedbId,
id:row.id
}
})
}
},//end methods
mounted() {
this.$nextTick(() => {
initDicts(this);
this.initData()
//this.searchXmTestPlans();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmTestPlanTable.$el)
});
}
}
</script>
<style scoped>
</style>
Loading…
Cancel
Save