Browse Source

优化

master
陈裕财 3 years ago
parent
commit
21a5478151
  1. 192
      src/views/xm/rpt/iteration/iterationRptOverview.vue
  2. 202
      src/views/xm/rpt/product/productRptOverview.vue
  3. 200
      src/views/xm/rpt/project/projectRptOverview.vue
  4. 196
      src/views/xm/rpt/testCase/testCasedbRptOverview.vue
  5. 36
      src/views/xm/rpt/testPlan/testPlanRptOverview.vue

192
src/views/xm/rpt/iteration/iterationRptOverview.vue

@ -1,31 +1,35 @@
<template>
<section class="padding">
<section>
<el-row :class="{'row-box':true,'cfg':isRptCfg}">
<div class="rpt-title">{{ rawDatas.name }}</div>
<el-input class="input" v-model="rawDatas.name" placeholder="计划名称"/>
<div class="rpt-title">{{ rawDatas.iterationName }}</div>
<el-input class="input" v-model="rawDatas.iterationName" placeholder="报告名称"/>
</el-row>
<el-row :class="{'row-box':true,'cfg':isRptCfg}">
<div class="title">{{ title?title:'报告概览' }}</div>
<el-input class="input" v-model="title" placeholder="报告概览"/>
</el-row>
<el-row class="padding">
<el-row class="padding-top padding-left padding-right">
<span>数据汇总</span>
</el-row>
<el-row ref="table">
<el-row class="box">
<el-row class="box padding" >
<el-col :span="6" class="box-red">
<div class="box-info">
<div class="num">{{rawDatas.totalCases?rawDatas.totalCases:'0'}}</div>
<div class="label">用例</div>
<div class="num">{{rawDatas.taskCnt?rawDatas.taskCnt:'0'}}</div>
<div class="label">总任务</div>
</div>
</el-col>
<el-col :span="6" class="box-blue">
<div class="box-info">
<div class="num">{{caseFuGaiLv}}%</div>
<div class="label">用例覆盖率</div>
<div class="num">{{rawDatas.menuCnt?rawDatas.menuCnt:'0'}}</div>
<div class="label">需求数</div>
</div>
</el-col>
<el-col :span="6" class="box-green">
<div class="box-info">
<div class="num">{{caseTongGuoLv}}%</div>
<div class="label">用例通过率</div>
<div class="num">{{rawDatas.testCases?rawDatas.testCases:'0'}}</div>
<div class="label">测试用例数</div>
</div>
</el-col>
<el-col :span="6" class="box-orange">
@ -35,52 +39,33 @@
</div>
</el-col>
</el-row>
<!--编辑界面 XmTestPlan 测试计划-->
<el-form :model="rawDatas" label-width="120px" :rules="rawDatasRules" ref="rawDatasRef" label-position="left">
</el-row>
<el-row class="padding-top padding-left padding-right">
<span>责任人</span>
</el-row>
<el-row class="padding">
<el-col :span="8">
<mdp-select-user-xm label="负责人" userid-key="cuserid" username-key="cusername" v-model="rawDatas"></mdp-select-user-xm>
</el-col>
<el-col :span="8">
<mdp-select-dict-x label="状态" :dict="dicts['testPlanStatus']" v-model="rawDatas.status"></mdp-select-dict-x>
<mdp-select-user-xm label="负责人" userid-key="adminUserid" username-key="adminUsername" v-model="rawDatas"></mdp-select-user-xm>
</el-col>
<el-col :span="8">
<mdp-select-dict-x label="测试结果" :dict="dicts['testPlanTcode']" v-model="rawDatas.tcode"></mdp-select-dict-x>
<mdp-select-dict-x label="状态" :dict="dicts['iterationStatus']" v-model="rawDatas.istatus"></mdp-select-dict-x>
</el-col>
</el-row>
<el-form-item label="归属测试库" prop="casedbName">
{{rawDatas.casedbName}}
</el-form-item>
<el-form-item label="归属项目" prop="projectId">
<span v-if="opType=='add'">
<xm-project-select v-if="!selProject || !selProject.id" ref="xmProjectSelect" :link-product-id="xmTestCasedb? xmTestCasedb.productId:null" @row-click="onPorjectConfirm" :auto-select="false">
<span slot="title">选择项目</span>
</xm-project-select>
<div v-else>{{rawDatas.projectName}}</div>
</span>
<div v-else>{{rawDatas.projectName}}</div>
</el-form-item>
<el-form-item label="归属产品" prop="productName">
{{rawDatas.productName}}
</el-form-item>
<el-form-item label="起止时间" prop="stime">
<mdp-date-range :auto-default="false" placeholder="选择日期" v-model="rawDatas" start-key="stime" end-key="etime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd" ></mdp-date-range>
</el-form-item>
</el-form>
<el-row class="padding-top padding-left padding-right">
<span>起始时间</span>
</el-row>
<el-row class="padding">
<mdp-date-range :auto-default="false" placeholder="选择日期" v-model="rawDatas" start-key="startTime" end-key="endTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd" ></mdp-date-range>
</el-row>
<el-row class="padding-bottom">
<el-row class="padding-top padding-left padding-right">
<span>报告总结</span>
</el-row>
<el-row>
<el-input type="textarea" :rows="8" v-model="rawDatas.summaryRemark"></el-input>
<el-row class="padding">
<el-input type="textarea" :rows="8" v-model="remark"></el-input>
</el-row>
</el-row>
<el-row v-if="rawDatas.summaryRemark!==rawDatasBak.summaryRemark" >
<span style="float:right;">
<el-button type="primary" @click.native="editSomeFields(rawDatas,'summaryRemark',rawDatas.summaryRemark)">提交</el-button>
</span>
</el-row>
</section>
</template>
@ -88,50 +73,26 @@
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //import
import { initDicts, addXmTestPlan,editXmTestPlan,editSomeFieldsXmTestPlan } from '@/api/xm/core/xmTestPlan';
import { initDicts } from '@/api/xm/core/xmIteration';
import { mapGetters } from 'vuex'
import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect';
import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//
export default {
name:'xmTestPlanEdit',
name:'iterationRptOverview',
components: {
XmProjectSelect,MdpSelectUserXm,
},
computed: {
...mapGetters([ 'userInfo' ]),
caseFuGaiLv(){
if(!this.rawDatas.totalCases){
return 0
}
var okCases=parseInt(this.rawDatas.okCases>0?this.rawDatas.okCases:0)
var errCases=parseInt(this.rawDatas.errCases>0?this.rawDatas.errCases:0)
var igCases=parseInt(this.rawDatas.igCases>0?this.rawDatas.igCases:0)
var blCases=parseInt(this.rawDatas.blCases>0?this.rawDatas.blCases:0)
var totalExecs=okCases+errCases+igCases+blCases
var rate=parseInt(totalExecs/this.rawDatas.totalCases*100)
return rate;
},
caseTongGuoLv(){
if(!this.rawDatas.totalCases){
return 0
}
var okCases=parseInt(this.rawDatas.okCases>0?this.rawDatas.okCases:0)
var errCases=parseInt(this.rawDatas.errCases>0?this.rawDatas.errCases:0)
var igCases=parseInt(this.rawDatas.igCases>0?this.rawDatas.igCases:0)
var blCases=parseInt(this.rawDatas.blCases>0?this.rawDatas.blCases:0)
var totalExecs=okCases+igCases
var rate=parseInt(totalExecs/this.rawDatas.totalCases*100)
return rate;
}
},
props:['xmTestPlan','visible','opType','selProject','xmTestCasedb','rptDatas','isRptCfg'],
props:['xmIteration','rptDatas','isRptCfg'],
watch: {
'xmTestPlan':function( xmTestPlan ) {
if(xmTestPlan){
this.rawDatas = {...xmTestPlan};
'xmIteration':function( xmIteration ) {
if(xmIteration){
this.rawDatas = {...xmIteration};
}
},
@ -148,19 +109,14 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{
testPlanStatus:[],
testPlanTcode:[],
iterationStatus:[],
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
rawDatasRules: {
},
rawDatas: {
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
},
rawDatasBak: {
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
id:'',name:'',casedbId:'',casedbName:'',iterationId:'',iterationName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',taskCnt:'',okCases:'',errCases:'',igCases:'',blCases:'',iterationId:'',iterationName:'',flowState:'',summaryRemark:''
},
maxTableHeight:300,
summaryRemarkEditVisible:false,
@ -169,83 +125,15 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
methods: {
...util,
// @cancel="rawDatasVisible=false"
handleCancel:function(){
this.$refs['rawDatasRef'].resetFields();
this.$emit('cancel');
},
//XmTestPlan @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.rawDatasRef.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true
let params = Object.assign({}, this.rawDatas);
var func=addXmTestPlan
if(this.currOpType=='edit'){
func=editXmTestPlan
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.rawDatas=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ position:'bottom-left',showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
});
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
}
});
},
initData: function(){
if(this.xmTestPlan){
this.rawDatas = Object.assign({},this.xmTestPlan);
if(this.xmIteration){
this.rawDatas = Object.assign({},this.xmIteration);
}
if(this.rptDatas){
this.rawDatas=Object.assign({},this.rptDatas)
}
this.rawDatasBak={...this.rawDatas}
},
editSomeFields(row,fieldName,$event){
if(this.opType=='add'){
return;
}
let params={};
params['ids']=[row].map(i=>i.id)
if(fieldName=='stime'){
params[fieldName]=$event.stime
params.etime=$event.etime
}else if(fieldName=='cuserid'){
params[fieldName]=$event[0].userid
params.cusername=$event[0].username
}else{
params[fieldName]=$event
}
var func = editSomeFieldsXmTestPlan
func(params).then(res=>{
let tips = res.data.tips;
if(tips.isOk){
this.rawDatasBak=[...this.rawDatas]
this.$emit('edit-fields',params)
}else{
Object.assign(this.rawDatas,this.rawDatasBak)
this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
}
}).catch((e)=>Object.assign(this.rawDatas,this.rawDatasBak))
},
onPorjectConfirm(row){
this.rawDatas.projectId=row.id
this.rawDatas.projectName=row.name
this.rawDatas.name=this.rawDatas.projectName+'-测试计划-V1.0'
},
sizeAutoChange(){
}
@ -262,5 +150,5 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
</script>
<style lang="scss" scoped>
@import url('../index/overview.scss');
@import '../index/overview.scss';
</style>

202
src/views/xm/rpt/product/productRptOverview.vue

@ -1,31 +1,35 @@
<template>
<section class="padding">
<section>
<el-row :class="{'row-box':true,'cfg':isRptCfg}">
<div class="rpt-title">{{ rawDatas.name }}</div>
<el-input class="input" v-model="rawDatas.name" placeholder="计划名称"/>
<div class="rpt-title">{{ rawDatas.productName }}</div>
<el-input class="input" v-model="rawDatas.productName" placeholder="报告名称"/>
</el-row>
<el-row :class="{'row-box':true,'cfg':isRptCfg}">
<div class="title">{{ title?title:'报告概览' }}</div>
<el-input class="input" v-model="title" placeholder="报告概览"/>
</el-row>
<el-row class="padding">
<el-row class="padding-top padding-left padding-right">
<span>数据汇总</span>
</el-row>
<el-row ref="table">
<el-row class="box">
<el-row class="box padding" >
<el-col :span="6" class="box-red">
<div class="box-info">
<div class="num">{{rawDatas.totalCases?rawDatas.totalCases:'0'}}</div>
<div class="label">用例</div>
<div class="num">{{rawDatas.taskCnt?rawDatas.taskCnt:'0'}}</div>
<div class="label">总任务</div>
</div>
</el-col>
<el-col :span="6" class="box-blue">
<div class="box-info">
<div class="num">{{caseFuGaiLv}}%</div>
<div class="label">用例覆盖率</div>
<div class="num">{{rawDatas.menuCnt?rawDatas.menuCnt:'0'}}</div>
<div class="label">需求数</div>
</div>
</el-col>
<el-col :span="6" class="box-green">
<div class="box-info">
<div class="num">{{caseTongGuoLv}}%</div>
<div class="label">用例通过率</div>
<div class="num">{{rawDatas.testCases?rawDatas.testCases:'0'}}</div>
<div class="label">测试用例数</div>
</div>
</el-col>
<el-col :span="6" class="box-orange">
@ -35,52 +39,39 @@
</div>
</el-col>
</el-row>
<!--编辑界面 XmTestPlan 测试计划-->
<el-form :model="rawDatas" label-width="120px" :rules="rawDatasRules" ref="rawDatasRef" label-position="left">
</el-row>
<el-row class="padding-top padding-left padding-right">
<span>责任人</span>
</el-row>
<el-row class="padding">
<el-col :span="8">
<mdp-select-user-xm label="负责人" userid-key="cuserid" username-key="cusername" v-model="rawDatas"></mdp-select-user-xm>
<el-col :span="6">
<mdp-select-user-xm label="主管领导" userid-key="admUserid" username-key="admUsername" v-model="rawDatas"></mdp-select-user-xm>
</el-col>
<el-col :span="8">
<mdp-select-dict-x label="状态" :dict="dicts['testPlanStatus']" v-model="rawDatas.status"></mdp-select-dict-x>
<el-col :span="6">
<mdp-select-user-xm label="负责人" userid-key="pmUserid" username-key="pmUsername" v-model="rawDatas"></mdp-select-user-xm>
</el-col>
<el-col :span="8">
<mdp-select-dict-x label="测试结果" :dict="dicts['testPlanTcode']" v-model="rawDatas.tcode"></mdp-select-dict-x>
<el-col :span="6">
<mdp-select-user-xm label="助理" userid-key="assUserid" username-key="assUsername" v-model="rawDatas"></mdp-select-user-xm>
</el-col>
<el-col :span="6">
<mdp-select-dict-x label="状态" :dict="dicts['xmProductPstatus']" v-model="rawDatas.pstatus"></mdp-select-dict-x>
</el-col>
</el-row>
<el-form-item label="归属测试库" prop="casedbName">
{{rawDatas.casedbName}}
</el-form-item>
<el-form-item label="归属项目" prop="projectId">
<span v-if="opType=='add'">
<xm-project-select v-if="!selProject || !selProject.id" ref="xmProjectSelect" :link-product-id="xmTestCasedb? xmTestCasedb.productId:null" @row-click="onPorjectConfirm" :auto-select="false">
<span slot="title">选择项目</span>
</xm-project-select>
<div v-else>{{rawDatas.projectName}}</div>
</span>
<div v-else>{{rawDatas.projectName}}</div>
</el-form-item>
<el-form-item label="归属产品" prop="productName">
{{rawDatas.productName}}
</el-form-item>
<el-form-item label="起止时间" prop="stime">
<mdp-date-range :auto-default="false" placeholder="选择日期" v-model="rawDatas" start-key="stime" end-key="etime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd" ></mdp-date-range>
</el-form-item>
</el-form>
</el-row>
<el-row class="padding-bottom">
<el-row class="padding-top padding-left padding-right">
<span>起始时间</span>
</el-row>
<el-row class="padding">
<mdp-date-range :auto-default="false" placeholder="选择日期" v-model="rawDatas" start-key="startTime" end-key="endTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd" ></mdp-date-range>
</el-row>
<el-row class="padding-top padding-left padding-right">
<span>报告总结</span>
</el-row>
<el-row>
<el-input type="textarea" :rows="8" v-model="rawDatas.summaryRemark"></el-input>
<el-row class="padding">
<el-input type="textarea" :rows="8" v-model="remark"></el-input>
</el-row>
</el-row>
<el-row v-if="rawDatas.summaryRemark!==rawDatasBak.summaryRemark" >
<span style="float:right;">
<el-button type="primary" @click.native="editSomeFields(rawDatas,'summaryRemark',rawDatas.summaryRemark)">提交</el-button>
</span>
</el-row>
</section>
</template>
@ -88,50 +79,26 @@
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //import
import { initDicts, addXmTestPlan,editXmTestPlan,editSomeFieldsXmTestPlan } from '@/api/xm/core/xmTestPlan';
import { initDicts } from '@/api/xm/core/xmProduct';
import { mapGetters } from 'vuex'
import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect';
import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//
export default {
name:'xmTestPlanEdit',
name:'productRptOverview',
components: {
XmProjectSelect,MdpSelectUserXm,
},
computed: {
...mapGetters([ 'userInfo' ]),
caseFuGaiLv(){
if(!this.rawDatas.totalCases){
return 0
}
var okCases=parseInt(this.rawDatas.okCases>0?this.rawDatas.okCases:0)
var errCases=parseInt(this.rawDatas.errCases>0?this.rawDatas.errCases:0)
var igCases=parseInt(this.rawDatas.igCases>0?this.rawDatas.igCases:0)
var blCases=parseInt(this.rawDatas.blCases>0?this.rawDatas.blCases:0)
var totalExecs=okCases+errCases+igCases+blCases
var rate=parseInt(totalExecs/this.rawDatas.totalCases*100)
return rate;
},
caseTongGuoLv(){
if(!this.rawDatas.totalCases){
return 0
}
var okCases=parseInt(this.rawDatas.okCases>0?this.rawDatas.okCases:0)
var errCases=parseInt(this.rawDatas.errCases>0?this.rawDatas.errCases:0)
var igCases=parseInt(this.rawDatas.igCases>0?this.rawDatas.igCases:0)
var blCases=parseInt(this.rawDatas.blCases>0?this.rawDatas.blCases:0)
var totalExecs=okCases+igCases
var rate=parseInt(totalExecs/this.rawDatas.totalCases*100)
return rate;
}
},
props:['xmTestPlan','visible','opType','selProject','xmTestCasedb','rptDatas','isRptCfg'],
props:['xmProduct','rptDatas','isRptCfg'],
watch: {
'xmTestPlan':function( xmTestPlan ) {
if(xmTestPlan){
this.rawDatas = {...xmTestPlan};
'xmProduct':function( xmProduct ) {
if(xmProduct){
this.rawDatas = {...xmProduct};
}
},
@ -148,19 +115,14 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{
testPlanStatus:[],
testPlanTcode:[],
xmProductPstatus:[],
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
rawDatasRules: {
},
rawDatas: {
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
},
rawDatasBak: {
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
id:'',name:'',casedbId:'',casedbName:'',productId:'',productName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',taskCnt:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
},
maxTableHeight:300,
summaryRemarkEditVisible:false,
@ -169,83 +131,15 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
methods: {
...util,
// @cancel="rawDatasVisible=false"
handleCancel:function(){
this.$refs['rawDatasRef'].resetFields();
this.$emit('cancel');
},
//XmTestPlan @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.rawDatasRef.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true
let params = Object.assign({}, this.rawDatas);
var func=addXmTestPlan
if(this.currOpType=='edit'){
func=editXmTestPlan
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.rawDatas=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ position:'bottom-left',showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
});
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
}
});
},
initData: function(){
if(this.xmTestPlan){
this.rawDatas = Object.assign({},this.xmTestPlan);
if(this.xmProduct){
this.rawDatas = Object.assign({},this.xmProduct);
}
if(this.rptDatas){
this.rawDatas=Object.assign({},this.rptDatas)
}
this.rawDatasBak={...this.rawDatas}
},
editSomeFields(row,fieldName,$event){
if(this.opType=='add'){
return;
}
let params={};
params['ids']=[row].map(i=>i.id)
if(fieldName=='stime'){
params[fieldName]=$event.stime
params.etime=$event.etime
}else if(fieldName=='cuserid'){
params[fieldName]=$event[0].userid
params.cusername=$event[0].username
}else{
params[fieldName]=$event
}
var func = editSomeFieldsXmTestPlan
func(params).then(res=>{
let tips = res.data.tips;
if(tips.isOk){
this.rawDatasBak=[...this.rawDatas]
this.$emit('edit-fields',params)
}else{
Object.assign(this.rawDatas,this.rawDatasBak)
this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
}
}).catch((e)=>Object.assign(this.rawDatas,this.rawDatasBak))
},
onPorjectConfirm(row){
this.rawDatas.projectId=row.id
this.rawDatas.projectName=row.name
this.rawDatas.name=this.rawDatas.projectName+'-测试计划-V1.0'
},
sizeAutoChange(){
}
@ -262,5 +156,5 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
</script>
<style lang="scss" scoped>
@import url('../index/overview.scss');
@import '../index/overview.scss';
</style>

200
src/views/xm/rpt/project/projectRptOverview.vue

@ -1,31 +1,35 @@
<template>
<section class="padding">
<section>
<el-row :class="{'row-box':true,'cfg':isRptCfg}">
<div class="rpt-title">{{ rawDatas.name }}</div>
<el-input class="input" v-model="rawDatas.name" placeholder="计划名称"/>
<el-input class="input" v-model="rawDatas.name" placeholder="报告名称"/>
</el-row>
<el-row :class="{'row-box':true,'cfg':isRptCfg}">
<div class="title">{{ title?title:'报告概览' }}</div>
<el-input class="input" v-model="title" placeholder="报告概览"/>
</el-row>
<el-row class="padding">
<el-row class="padding-top padding-left padding-right">
<span>数据汇总</span>
</el-row>
<el-row ref="table">
<el-row class="box">
<el-row class="box padding" >
<el-col :span="6" class="box-red">
<div class="box-info">
<div class="num">{{rawDatas.totalCases?rawDatas.totalCases:'0'}}</div>
<div class="label">用例</div>
<div class="num">{{rawDatas.taskCnt?rawDatas.taskCnt:'0'}}</div>
<div class="label">总任务</div>
</div>
</el-col>
<el-col :span="6" class="box-blue">
<div class="box-info">
<div class="num">{{caseFuGaiLv}}%</div>
<div class="label">用例覆盖率</div>
<div class="num">{{rawDatas.menuCnt?rawDatas.menuCnt:'0'}}</div>
<div class="label">需求数</div>
</div>
</el-col>
<el-col :span="6" class="box-green">
<div class="box-info">
<div class="num">{{caseTongGuoLv}}%</div>
<div class="label">用例通过率</div>
<div class="num">{{rawDatas.testCases?rawDatas.testCases:'0'}}</div>
<div class="label">测试用例数</div>
</div>
</el-col>
<el-col :span="6" class="box-orange">
@ -35,52 +39,39 @@
</div>
</el-col>
</el-row>
<!--编辑界面 XmTestPlan 测试计划-->
<el-form :model="rawDatas" label-width="120px" :rules="rawDatasRules" ref="rawDatasRef" label-position="left">
</el-row>
<el-row class="padding-top padding-left padding-right">
<span>责任人</span>
</el-row>
<el-row class="padding">
<el-col :span="8">
<mdp-select-user-xm label="负责人" userid-key="cuserid" username-key="cusername" v-model="rawDatas"></mdp-select-user-xm>
<el-col :span="6">
<mdp-select-user-xm label="主管领导" userid-key="admUserid" username-key="admUsername" v-model="rawDatas"></mdp-select-user-xm>
</el-col>
<el-col :span="8">
<mdp-select-dict-x label="状态" :dict="dicts['testPlanStatus']" v-model="rawDatas.status"></mdp-select-dict-x>
<el-col :span="6">
<mdp-select-user-xm label="负责人" userid-key="pmUserid" username-key="pmUsername" v-model="rawDatas"></mdp-select-user-xm>
</el-col>
<el-col :span="8">
<mdp-select-dict-x label="测试结果" :dict="dicts['testPlanTcode']" v-model="rawDatas.tcode"></mdp-select-dict-x>
<el-col :span="6">
<mdp-select-user-xm label="助理" userid-key="assUserid" username-key="assUsername" v-model="rawDatas"></mdp-select-user-xm>
</el-col>
<el-col :span="6">
<mdp-select-dict-x label="状态" :dict="dicts['projectStatus']" v-model="rawDatas.status"></mdp-select-dict-x>
</el-col>
</el-row>
<el-form-item label="归属测试库" prop="casedbName">
{{rawDatas.casedbName}}
</el-form-item>
<el-form-item label="归属项目" prop="projectId">
<span v-if="opType=='add'">
<xm-project-select v-if="!selProject || !selProject.id" ref="xmProjectSelect" :link-product-id="xmTestCasedb? xmTestCasedb.productId:null" @row-click="onPorjectConfirm" :auto-select="false">
<span slot="title">选择项目</span>
</xm-project-select>
<div v-else>{{rawDatas.projectName}}</div>
</span>
<div v-else>{{rawDatas.projectName}}</div>
</el-form-item>
<el-form-item label="归属产品" prop="productName">
{{rawDatas.productName}}
</el-form-item>
<el-form-item label="起止时间" prop="stime">
<mdp-date-range :auto-default="false" placeholder="选择日期" v-model="rawDatas" start-key="stime" end-key="etime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd" ></mdp-date-range>
</el-form-item>
</el-form>
</el-row>
<el-row class="padding-bottom">
<el-row class="padding-top padding-left padding-right">
<span>起始时间</span>
</el-row>
<el-row class="padding">
<mdp-date-range :auto-default="false" placeholder="选择日期" v-model="rawDatas" start-key="startTime" end-key="endTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd" ></mdp-date-range>
</el-row>
<el-row class="padding-top padding-left padding-right">
<span>报告总结</span>
</el-row>
<el-row>
<el-input type="textarea" :rows="8" v-model="rawDatas.summaryRemark"></el-input>
<el-row class="padding">
<el-input type="textarea" :rows="8" v-model="remark"></el-input>
</el-row>
</el-row>
<el-row v-if="rawDatas.summaryRemark!==rawDatasBak.summaryRemark" >
<span style="float:right;">
<el-button type="primary" @click.native="editSomeFields(rawDatas,'summaryRemark',rawDatas.summaryRemark)">提交</el-button>
</span>
</el-row>
</section>
</template>
@ -88,50 +79,26 @@
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //import
import { initDicts, addXmTestPlan,editXmTestPlan,editSomeFieldsXmTestPlan } from '@/api/xm/core/xmTestPlan';
import { initDicts } from '@/api/xm/core/xmProject';
import { mapGetters } from 'vuex'
import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect';
import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//
export default {
name:'xmTestPlanEdit',
name:'projectRptOverview',
components: {
XmProjectSelect,MdpSelectUserXm,
},
computed: {
...mapGetters([ 'userInfo' ]),
caseFuGaiLv(){
if(!this.rawDatas.totalCases){
return 0
}
var okCases=parseInt(this.rawDatas.okCases>0?this.rawDatas.okCases:0)
var errCases=parseInt(this.rawDatas.errCases>0?this.rawDatas.errCases:0)
var igCases=parseInt(this.rawDatas.igCases>0?this.rawDatas.igCases:0)
var blCases=parseInt(this.rawDatas.blCases>0?this.rawDatas.blCases:0)
var totalExecs=okCases+errCases+igCases+blCases
var rate=parseInt(totalExecs/this.rawDatas.totalCases*100)
return rate;
},
caseTongGuoLv(){
if(!this.rawDatas.totalCases){
return 0
}
var okCases=parseInt(this.rawDatas.okCases>0?this.rawDatas.okCases:0)
var errCases=parseInt(this.rawDatas.errCases>0?this.rawDatas.errCases:0)
var igCases=parseInt(this.rawDatas.igCases>0?this.rawDatas.igCases:0)
var blCases=parseInt(this.rawDatas.blCases>0?this.rawDatas.blCases:0)
var totalExecs=okCases+igCases
var rate=parseInt(totalExecs/this.rawDatas.totalCases*100)
return rate;
}
},
props:['xmTestPlan','visible','opType','selProject','xmTestCasedb','rptDatas','isRptCfg'],
props:['xmProject','rptDatas','isRptCfg'],
watch: {
'xmTestPlan':function( xmTestPlan ) {
if(xmTestPlan){
this.rawDatas = {...xmTestPlan};
'xmProject':function( xmProject ) {
if(xmProject){
this.rawDatas = {...xmProject};
}
},
@ -148,19 +115,14 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{
testPlanStatus:[],
testPlanTcode:[],
projectStatus:[],
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
rawDatasRules: {
},
rawDatas: {
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
},
rawDatasBak: {
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',taskCnt:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
},
maxTableHeight:300,
summaryRemarkEditVisible:false,
@ -169,83 +131,15 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
methods: {
...util,
// @cancel="rawDatasVisible=false"
handleCancel:function(){
this.$refs['rawDatasRef'].resetFields();
this.$emit('cancel');
},
//XmTestPlan @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.rawDatasRef.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true
let params = Object.assign({}, this.rawDatas);
var func=addXmTestPlan
if(this.currOpType=='edit'){
func=editXmTestPlan
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.rawDatas=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ position:'bottom-left',showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
});
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
}
});
},
initData: function(){
if(this.xmTestPlan){
this.rawDatas = Object.assign({},this.xmTestPlan);
if(this.xmProject){
this.rawDatas = Object.assign({},this.xmProject);
}
if(this.rptDatas){
this.rawDatas=Object.assign({},this.rptDatas)
}
this.rawDatasBak={...this.rawDatas}
},
editSomeFields(row,fieldName,$event){
if(this.opType=='add'){
return;
}
let params={};
params['ids']=[row].map(i=>i.id)
if(fieldName=='stime'){
params[fieldName]=$event.stime
params.etime=$event.etime
}else if(fieldName=='cuserid'){
params[fieldName]=$event[0].userid
params.cusername=$event[0].username
}else{
params[fieldName]=$event
}
var func = editSomeFieldsXmTestPlan
func(params).then(res=>{
let tips = res.data.tips;
if(tips.isOk){
this.rawDatasBak=[...this.rawDatas]
this.$emit('edit-fields',params)
}else{
Object.assign(this.rawDatas,this.rawDatasBak)
this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
}
}).catch((e)=>Object.assign(this.rawDatas,this.rawDatasBak))
},
onPorjectConfirm(row){
this.rawDatas.projectId=row.id
this.rawDatas.projectName=row.name
this.rawDatas.name=this.rawDatas.projectName+'-测试计划-V1.0'
},
sizeAutoChange(){
}
@ -262,5 +156,5 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
</script>
<style lang="scss" scoped>
@import url('../index/overview.scss');
@import '../index/overview.scss';
</style>

196
src/views/xm/rpt/testCase/testCasedbRptOverview.vue

@ -1,86 +1,33 @@
<template>
<section class="padding">
<section>
<el-row :class="{'row-box':true,'cfg':isRptCfg}">
<div class="rpt-title">{{ rawDatas.name }}</div>
<el-input class="input" v-model="rawDatas.name" placeholder="计划名称"/>
<el-input class="input" v-model="rawDatas.name" placeholder="报告名称"/>
</el-row>
<el-row :class="{'row-box':true,'cfg':isRptCfg}">
<div class="title">{{ title?title:'报告概览' }}</div>
<el-input class="input" v-model="title" placeholder="报告概览"/>
</el-row>
<el-row ref="table">
<el-row class="box">
<el-col :span="6" class="box-red">
<div class="box-info">
<div class="num">{{rawDatas.totalCases?rawDatas.totalCases:'0'}}</div>
<div class="label">用例数</div>
</div>
</el-col>
<el-col :span="6" class="box-blue">
<div class="box-info">
<div class="num">{{caseFuGaiLv}}%</div>
<div class="label">用例覆盖率</div>
</div>
</el-col>
<el-col :span="6" class="box-green">
<div class="box-info">
<div class="num">{{caseTongGuoLv}}%</div>
<div class="label">用例通过率</div>
</div>
</el-col>
<el-col :span="6" class="box-orange">
<div class="box-info">
<div class="num">{{rawDatas.bugCnt?rawDatas.bugCnt:0}}</div>
<div class="label">缺陷数</div>
</div>
</el-col>
<el-row class="padding">
<el-row class="padding-top padding-left padding-right">
<span>责任人</span>
</el-row>
<!--编辑界面 XmTestPlan 测试计划-->
<el-form :model="rawDatas" label-width="120px" :rules="rawDatasRules" ref="rawDatasRef" label-position="left">
<el-row class="padding">
<el-col :span="8">
<el-col :span="6">
<mdp-select-user-xm label="负责人" userid-key="cuserid" username-key="cusername" v-model="rawDatas"></mdp-select-user-xm>
</el-col>
<el-col :span="8">
<mdp-select-dict-x label="状态" :dict="dicts['testPlanStatus']" v-model="rawDatas.status"></mdp-select-dict-x>
</el-col>
<el-col :span="8">
<mdp-select-dict-x label="测试结果" :dict="dicts['testPlanTcode']" v-model="rawDatas.tcode"></mdp-select-dict-x>
<el-col :span="6">
<mdp-select-dict-x label="状态" :dict="dicts['casedbStatus']" v-model="rawDatas.status"></mdp-select-dict-x>
</el-col>
</el-row>
<el-form-item label="归属测试库" prop="casedbName">
{{rawDatas.casedbName}}
</el-form-item>
<el-form-item label="归属项目" prop="projectId">
<span v-if="opType=='add'">
<xm-project-select v-if="!selProject || !selProject.id" ref="xmProjectSelect" :link-product-id="xmTestCasedb? xmTestCasedb.productId:null" @row-click="onPorjectConfirm" :auto-select="false">
<span slot="title">选择项目</span>
</xm-project-select>
<div v-else>{{rawDatas.projectName}}</div>
</span>
<div v-else>{{rawDatas.projectName}}</div>
</el-form-item>
<el-form-item label="归属产品" prop="productName">
{{rawDatas.productName}}
</el-form-item>
<el-form-item label="起止时间" prop="stime">
<mdp-date-range :auto-default="false" placeholder="选择日期" v-model="rawDatas" start-key="stime" end-key="etime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd" ></mdp-date-range>
</el-form-item>
</el-form>
</el-row>
<el-row class="padding-bottom">
<el-row class="padding-top padding-left padding-right">
<span>报告总结</span>
</el-row>
<el-row>
<el-input type="textarea" :rows="8" v-model="rawDatas.summaryRemark"></el-input>
<el-row class="padding">
<el-input type="textarea" :rows="8" v-model="remark"></el-input>
</el-row>
</el-row>
<el-row v-if="rawDatas.summaryRemark!==rawDatasBak.summaryRemark" >
<span style="float:right;">
<el-button type="primary" @click.native="editSomeFields(rawDatas,'summaryRemark',rawDatas.summaryRemark)">提交</el-button>
</span>
</el-row>
</section>
</template>
@ -88,50 +35,26 @@
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //import
import { initDicts, addXmTestPlan,editXmTestPlan,editSomeFieldsXmTestPlan } from '@/api/xm/core/xmTestPlan';
import { initDicts } from '@/api/xm/core/xmTestCasedb';
import { mapGetters } from 'vuex'
import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect';
import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//
export default {
name:'xmTestPlanEdit',
name:'projectRptOverview',
components: {
XmProjectSelect,MdpSelectUserXm,
},
computed: {
...mapGetters([ 'userInfo' ]),
caseFuGaiLv(){
if(!this.rawDatas.totalCases){
return 0
}
var okCases=parseInt(this.rawDatas.okCases>0?this.rawDatas.okCases:0)
var errCases=parseInt(this.rawDatas.errCases>0?this.rawDatas.errCases:0)
var igCases=parseInt(this.rawDatas.igCases>0?this.rawDatas.igCases:0)
var blCases=parseInt(this.rawDatas.blCases>0?this.rawDatas.blCases:0)
var totalExecs=okCases+errCases+igCases+blCases
var rate=parseInt(totalExecs/this.rawDatas.totalCases*100)
return rate;
},
caseTongGuoLv(){
if(!this.rawDatas.totalCases){
return 0
}
var okCases=parseInt(this.rawDatas.okCases>0?this.rawDatas.okCases:0)
var errCases=parseInt(this.rawDatas.errCases>0?this.rawDatas.errCases:0)
var igCases=parseInt(this.rawDatas.igCases>0?this.rawDatas.igCases:0)
var blCases=parseInt(this.rawDatas.blCases>0?this.rawDatas.blCases:0)
var totalExecs=okCases+igCases
var rate=parseInt(totalExecs/this.rawDatas.totalCases*100)
return rate;
}
},
props:['xmTestPlan','visible','opType','selProject','xmTestCasedb','rptDatas','isRptCfg'],
props:['xmTestCasedb','rptDatas','isRptCfg'],
watch: {
'xmTestPlan':function( xmTestPlan ) {
if(xmTestPlan){
this.rawDatas = {...xmTestPlan};
'xmTestCasedb':function( xmTestCasedb ) {
if(xmTestCasedb){
this.rawDatas = {...xmTestCasedb};
}
},
@ -148,19 +71,14 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{
testPlanStatus:[],
testPlanTcode:[],
casedbStatus:[],
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
rawDatasRules: {
},
rawDatas: {
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
},
rawDatasBak: {
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',taskCnt:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:''
},
maxTableHeight:300,
summaryRemarkEditVisible:false,
@ -169,83 +87,15 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
methods: {
...util,
// @cancel="rawDatasVisible=false"
handleCancel:function(){
this.$refs['rawDatasRef'].resetFields();
this.$emit('cancel');
},
//XmTestPlan @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.rawDatasRef.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true
let params = Object.assign({}, this.rawDatas);
var func=addXmTestPlan
if(this.currOpType=='edit'){
func=editXmTestPlan
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.rawDatas=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ position:'bottom-left',showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
});
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
}
});
},
initData: function(){
if(this.xmTestPlan){
this.rawDatas = Object.assign({},this.xmTestPlan);
if(this.xmTestCasedb){
this.rawDatas = Object.assign({},this.xmTestCasedb);
}
if(this.rptDatas){
this.rawDatas=Object.assign({},this.rptDatas)
}
this.rawDatasBak={...this.rawDatas}
},
editSomeFields(row,fieldName,$event){
if(this.opType=='add'){
return;
}
let params={};
params['ids']=[row].map(i=>i.id)
if(fieldName=='stime'){
params[fieldName]=$event.stime
params.etime=$event.etime
}else if(fieldName=='cuserid'){
params[fieldName]=$event[0].userid
params.cusername=$event[0].username
}else{
params[fieldName]=$event
}
var func = editSomeFieldsXmTestPlan
func(params).then(res=>{
let tips = res.data.tips;
if(tips.isOk){
this.rawDatasBak=[...this.rawDatas]
this.$emit('edit-fields',params)
}else{
Object.assign(this.rawDatas,this.rawDatasBak)
this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
}
}).catch((e)=>Object.assign(this.rawDatas,this.rawDatasBak))
},
onPorjectConfirm(row){
this.rawDatas.projectId=row.id
this.rawDatas.projectName=row.name
this.rawDatas.name=this.rawDatas.projectName+'-测试计划-V1.0'
},
sizeAutoChange(){
}
@ -262,5 +112,5 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
</script>
<style lang="scss" scoped>
@import url('../index/overview.scss');
@import '../index/overview.scss';
</style>

36
src/views/xm/rpt/testPlan/testPlanRptOverview.vue

@ -1,15 +1,18 @@
<template>
<section class="padding">
<section>
<el-row :class="{'row-box':true,'cfg':isRptCfg}">
<div class="rpt-title">{{ rawDatas.name }}</div>
<el-input class="input" v-model="rawDatas.name" placeholder="计划名称"/>
<el-input class="input" v-model="rawDatas.name" placeholder="报告名称"/>
</el-row>
<el-row :class="{'row-box':true,'cfg':isRptCfg}">
<div class="title">{{ title?title:'报告概览' }}</div>
<el-input class="input" v-model="title" placeholder="报告概览"/>
</el-row>
<el-row ref="table">
<el-row class="box">
<el-row ref="table" class="padding">
<el-row class="padding">
<span>数据汇总</span>
</el-row>
<el-row class="box padding">
<el-col :span="6" class="box-red">
<div class="box-info">
<div class="num">{{rawDatas.totalCases?rawDatas.totalCases:'0'}}</div>
@ -70,17 +73,18 @@
<mdp-date-range :auto-default="false" placeholder="选择日期" v-model="rawDatas" start-key="stime" end-key="etime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd" ></mdp-date-range>
</el-form-item>
</el-form>
</el-row>
<el-row class="padding-bottom">
<span>报告总结</span>
</el-row>
<el-row>
<el-input type="textarea" :rows="8" v-model="rawDatas.summaryRemark"></el-input>
</el-row>
<el-row v-if="rawDatas.summaryRemark!==rawDatasBak.summaryRemark" >
<span style="float:right;">
<el-button type="primary" @click.native="editSomeFields(rawDatas,'summaryRemark',rawDatas.summaryRemark)">提交</el-button>
</span>
<el-row>
<span>报告总结</span>
</el-row>
<el-row>
<el-input type="textarea" :rows="8" v-model="rawDatas.summaryRemark"></el-input>
</el-row>
<el-row v-if="rawDatas.summaryRemark!==rawDatasBak.summaryRemark" >
<span style="float:right;">
<el-button type="primary" @click.native="editSomeFields(rawDatas,'summaryRemark',rawDatas.summaryRemark)">提交</el-button>
</span>
</el-row>
</el-row>
</section>
</template>
@ -262,5 +266,5 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修
</script>
<style lang="scss" scoped>
@import url('../index/overview.scss');
@import '../index/overview.scss';
</style>
Loading…
Cancel
Save