|
|
|
@ -23,8 +23,265 @@ |
|
|
|
</el-popover> |
|
|
|
</div> |
|
|
|
</el-tab-pane> |
|
|
|
<el-tab-pane label="迭代概览" lazy name="iterationOverview" v-if="xmIteration && xmIteration.id"> |
|
|
|
<xm-iteration-overview v-if="xmIteration && showPanel=='iterationOverview'" :xm-iteration="xmIteration" :sel-project="selProject"></xm-iteration-overview> |
|
|
|
<el-tab-pane label="迭代概览" lazy name="iterationOverview" v-if="xmIteration && xmIteration.id"> |
|
|
|
<el-row ref="pageMainRef" :gutter="20"> |
|
|
|
<el-col |
|
|
|
:span="6" |
|
|
|
class="padding border" |
|
|
|
:style="{ maxHeight: maxTableHeight + 'px', overflowY: 'auto' }" |
|
|
|
> |
|
|
|
<h4 class="padding-bottom">常用功能快捷导航</h4> |
|
|
|
<el-steps |
|
|
|
:active="calcIterationStatusStep" |
|
|
|
finish-status="success" |
|
|
|
direction="vertical" |
|
|
|
> |
|
|
|
<el-step |
|
|
|
v-for="(i, index) in dicts['iterationStatus']" |
|
|
|
:title="i.name" |
|
|
|
:key="index" |
|
|
|
> |
|
|
|
<el-row slot="description"> |
|
|
|
<el-row v-if="i.id == '0'" |
|
|
|
><!--打开--> |
|
|
|
<span v-if="xmIteration.istatus == i.id"> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showPanel = 'menus'" |
|
|
|
>需求管理</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showIterationMenu" |
|
|
|
>配置需求范围</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="editSomeFields(xmIteration, 'istatus', '1')" |
|
|
|
>开启需求评审</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
<span v-if="xmIteration.istatus != i.id"> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showPanel = 'menus'" |
|
|
|
>需求管理</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showIterationMenu" |
|
|
|
>需求范围</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
</el-row> |
|
|
|
<el-row v-else-if="i.id == '1'" |
|
|
|
><!--需求评审--> |
|
|
|
<span v-if="xmIteration.istatus == i.id"> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showIterationMenu" |
|
|
|
>确认需求范围</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showPanel='bugs'" |
|
|
|
>缺陷登记</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="editSomeFields(xmIteration, 'istatus', '2')" |
|
|
|
>进入计划会</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
<span v-if="xmIteration.istatus != i.id"> |
|
|
|
|
|
|
|
</span> |
|
|
|
</el-row> |
|
|
|
<el-row v-else-if="i.id == '2'" |
|
|
|
><!--计划会--> |
|
|
|
<span v-if="xmIteration.istatus == i.id"> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showIterationDetail" |
|
|
|
>迭代计划</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showPanel = 'tasks'" |
|
|
|
>任务管理</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="editSomeFields(xmIteration, 'istatus', '3')" |
|
|
|
>设为研发中</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
<span v-if="xmIteration.istatus != i.id"> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showIterationDetail" |
|
|
|
>迭代计划</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showPanel = 'tasks'" |
|
|
|
>任务管理</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
</el-row> |
|
|
|
<el-row v-else-if="i.id == '3'" |
|
|
|
><!--研发中--> |
|
|
|
<span v-if="xmIteration.istatus == i.id"> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showPanel = 'tasks'" |
|
|
|
>任务管理</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showPanel = '效能'" |
|
|
|
>效能分析</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="editSomeFields(xmIteration, 'istatus', '4')" |
|
|
|
>设为测试中</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
<span v-if="xmIteration.istatus != i.id"> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showPanel = '效能'" |
|
|
|
>效能分析</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
</el-row> |
|
|
|
<el-row v-else-if="i.id == '4'" |
|
|
|
><!--测试中--> |
|
|
|
<span v-if="xmIteration.istatus == i.id"> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="showPanel = 'bugs'" |
|
|
|
>缺陷管理</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="editSomeFields(xmIteration, 'istatus', '5')" |
|
|
|
>设为待上线</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
</el-row> |
|
|
|
<el-row v-else-if="i.id == '5'" |
|
|
|
><!--上线中--> |
|
|
|
<span v-if="xmIteration.istatus == i.id"> |
|
|
|
|
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="editSomeFields(xmIteration, 'istatus', '6')" |
|
|
|
>设为已完成</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
<span v-if="xmIteration.istatus != i.id"> |
|
|
|
|
|
|
|
</span> |
|
|
|
</el-row> |
|
|
|
<el-row v-else-if="i.id == '6'" |
|
|
|
><!--已完成--> |
|
|
|
<span v-if="xmIteration.istatus == i.id"> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="editSomeFields(xmIteration, 'istatus', '7')" |
|
|
|
>设为已关闭</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
<span v-if="xmIteration.istatus != i.id"> |
|
|
|
|
|
|
|
</span> |
|
|
|
</el-row> |
|
|
|
<el-row v-else-if="i.id == '7'" |
|
|
|
><!--已关闭--> |
|
|
|
<span v-if="xmIteration.istatus == i.id"> |
|
|
|
<el-button |
|
|
|
class="step-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
@click="editSomeFields(xmIteration, 'istatus', '0')" |
|
|
|
>重新打开</el-button |
|
|
|
> |
|
|
|
</span> |
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
</el-step> |
|
|
|
</el-steps> |
|
|
|
</el-col> |
|
|
|
<el-col :span="18"> |
|
|
|
<xm-iteration-overview v-if="xmIteration && showPanel=='iterationOverview'" :xm-iteration="xmIteration" :sel-project="selProject"></xm-iteration-overview> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-tab-pane> |
|
|
|
<el-tab-pane label="执行统计" lazy name="iterationCalc" v-if="xmIteration && xmIteration.id"> |
|
|
|
<div v-if="showPanel=='iterationCalc'"> |
|
|
|
@ -41,7 +298,7 @@ |
|
|
|
</el-tab-pane> |
|
|
|
|
|
|
|
<el-tab-pane label="迭代详情" lazy name="detail" v-if="xmIteration&&xmIteration.id"> |
|
|
|
<xm-iteration-edit v-if="showPanel=='detail'" :xm-iteration="xmIteration"></xm-iteration-edit> |
|
|
|
<xm-iteration-edit v-if="showPanel=='detail'" :xm-iteration="xmIteration" @edit-fields="onEditFields"></xm-iteration-edit> |
|
|
|
</el-tab-pane> |
|
|
|
<el-tab-pane label="配置需求范围" lazy name="iterationMenuMng" v-if="xmIteration&&xmIteration.id"> |
|
|
|
<xm-iteration-menu-mng v-if="showPanel=='iterationMenuMng'" :xm-iteration="xmIteration"></xm-iteration-menu-mng> |
|
|
|
@ -55,6 +312,10 @@ |
|
|
|
<el-tab-pane label="缺陷列表" lazy name="bugs" v-if="xmIteration&&xmIteration.id"> |
|
|
|
<xm-question-mng v-if="xmIteration && showPanel=='bugs'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject"></xm-question-mng> |
|
|
|
</el-tab-pane> |
|
|
|
|
|
|
|
<el-tab-pane label="效能分析" lazy name="效能" v-if="xmIteration&&xmIteration.id"> |
|
|
|
<xm-report v-if="xmIteration && showPanel=='效能'" :xm-iteration="xmIteration" ></xm-report> |
|
|
|
</el-tab-pane> |
|
|
|
</el-tabs> |
|
|
|
<el-row> |
|
|
|
|
|
|
|
@ -86,14 +347,30 @@ |
|
|
|
import XmIterationLinkForProduct from '../xmIterationLink/XmIterationLinkForProduct.vue'; |
|
|
|
import XmIterationLinkForProject from '../xmIterationLink/XmIterationLinkForProject.vue'; |
|
|
|
import XmIterationAdd from './XmIterationAdd';//新增界面 |
|
|
|
import XmReport from "@/views/xm/rpt/reportIndex"; |
|
|
|
|
|
|
|
import XmIterationMenuMng from '../xmIterationMenu/XmIterationMenuMng.vue'; |
|
|
|
import { loadTasksToXmIterationState } from '@/api/xm/core/xmIteration'; |
|
|
|
import { initDicts,loadTasksToXmIterationState,editSomeFieldsXmIteration } from '@/api/xm/core/xmIteration'; |
|
|
|
export default { |
|
|
|
computed: { |
|
|
|
...mapGetters([ |
|
|
|
'userInfo','roles' |
|
|
|
]), |
|
|
|
|
|
|
|
calcIterationStatusStep() { |
|
|
|
if (this.dicts["iterationStatus"] && this.xmIteration) { |
|
|
|
var index = this.dicts["iterationStatus"].findIndex((i) => { |
|
|
|
if (i.id == this.xmIteration.istatus) { |
|
|
|
return true; |
|
|
|
} else { |
|
|
|
return false; |
|
|
|
} |
|
|
|
}); |
|
|
|
return index + 1; |
|
|
|
} else { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
props:['visible','selProject','xmProduct'], |
|
|
|
watch:{ |
|
|
|
@ -104,6 +381,7 @@ |
|
|
|
}, |
|
|
|
data() { |
|
|
|
return{ |
|
|
|
dicts:{iterationStatus:[]}, |
|
|
|
load:{calcIteration:false}, |
|
|
|
xmIteration:null, |
|
|
|
showPanel:'iterationOverview',//menus,tasks,bugs,iterationStateShow |
|
|
|
@ -141,6 +419,32 @@ |
|
|
|
tabClick(tab){ |
|
|
|
this.showPanel=tab.name |
|
|
|
}, |
|
|
|
|
|
|
|
editSomeFields(row,fieldName,$event){ |
|
|
|
let params={}; |
|
|
|
params['ids']=[row].map(i=>i.id) |
|
|
|
params[fieldName]=$event |
|
|
|
var func = editSomeFieldsXmIteration |
|
|
|
func(params).then(res=>{ |
|
|
|
let tips = res.data.tips; |
|
|
|
if(tips.isOk){ |
|
|
|
Object.assign(row,params) |
|
|
|
this.$emit('edit-fields',params) |
|
|
|
}else{ |
|
|
|
this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'}) |
|
|
|
} |
|
|
|
}).catch((e)=>Object.assign(this.editForm,this.editFormBak)) |
|
|
|
}, |
|
|
|
showIterationMenu(){ |
|
|
|
this.showPanel='iterationMenuMng' |
|
|
|
}, |
|
|
|
showIterationDetail(){ |
|
|
|
this.showPanel='detail' |
|
|
|
}, |
|
|
|
onEditFields(row){ |
|
|
|
Object.assign(this.xmIteration,row) |
|
|
|
this.$emit('edit-fields',row) |
|
|
|
} |
|
|
|
},//end methods |
|
|
|
components: { |
|
|
|
XmIterationOverview, |
|
|
|
@ -157,14 +461,15 @@ |
|
|
|
XmIterationLinkForProduct, |
|
|
|
XmIterationLinkForProject, |
|
|
|
XmIterationMenuMng, |
|
|
|
XmReport, |
|
|
|
|
|
|
|
}, |
|
|
|
mounted() { |
|
|
|
this.$nextTick(() => { |
|
|
|
|
|
|
|
}); |
|
|
|
this.$nextTick(() => { |
|
|
|
initDicts(this) |
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
</script> |
|
|
|
|