Browse Source

优化

master
陈裕财 3 years ago
parent
commit
6bf29e8fef
  1. 119
      src/router/routes_xm.js
  2. 1
      src/store/getters.js
  3. 4
      src/store/index.js
  4. 29
      src/store/modules/iterationInfo.js
  5. 29
      src/store/modules/xmIteration.js
  6. 15
      src/views/xm/core/xmIteration/XmIterationMng.vue
  7. 4
      src/views/xm/core/xmIteration/XmIterationOverviewComplex.vue
  8. 4
      src/views/xm/core/xmIteration/top-nav.vue
  9. 6
      src/views/xm/core/xmMenu/XmMenuBox.vue
  10. 48
      src/views/xm/core/xmMenu/XmMenuBoxForIteration.vue
  11. 2
      src/views/xm/core/xmMenu/XmMenuBoxForProduct.vue
  12. 2
      src/views/xm/core/xmMenu/XmMenuBoxForProject.vue
  13. 2
      src/views/xm/core/xmMenu/XmMenuSelect.vue
  14. 2
      src/views/xm/core/xmProduct/top-nav.vue
  15. 2
      src/views/xm/core/xmProject/top-nav.vue
  16. 4
      src/views/xm/core/xmQuestion/XmQuestionEdit.vue
  17. 52
      src/views/xm/core/xmQuestion/XmQuestionForIteration.vue
  18. 9
      src/views/xm/core/xmQuestion/XmQuestionMng.vue
  19. 40
      src/views/xm/core/xmRecord/XmRecordForIteration.vue
  20. 18
      src/views/xm/core/xmTask/XmTaskAdd.vue
  21. 4
      src/views/xm/core/xmTask/XmTaskEdit.vue
  22. 50
      src/views/xm/core/xmTask/XmTaskListForIteration.vue
  23. 1
      src/views/xm/core/xmTask/XmTaskMng.vue
  24. 40
      src/views/xm/rpt/reportIndexForIteration.vue

119
src/router/routes_xm.js

@ -2,6 +2,7 @@
import Layout from '../views/layout/Layout'
import XmProjectLayout from '../views/xm/core/xmProject/index'
import XmProductLayout from '../views/xm/core/xmProduct/index'
import XmIterationLayout from '../views/xm/core/xmIteration/index'
const _import = require('./_import_' + process.env.NODE_ENV)
export default {
@ -99,7 +100,7 @@ export default {
{
path: 'task',
component: _import('xm/core/xmTask/XmTaskListForProject'),
name: 'projectMenu',
name: 'projectTask',
iconCls: 'fa el-icon-menu',
meta: {
title: '项目-任务',
@ -301,7 +302,7 @@ export default {
{
path: 'task',
component: _import('xm/core/xmTask/XmTaskListForProduct'),
name: 'productMenu',
name: 'productTask',
iconCls: 'fa el-icon-menu',
meta: {
title: '产品-任务',
@ -412,6 +413,120 @@ export default {
]
},
{
path: '/xm/core/iteration',
component: XmIterationLayout,
name: '迭代管理',
iconCls: 'fa el-icon-menu',
meta: {
title: '迭代管理',
icon: 'iteration'
},
hidden:true,
// leaf: true,//只有一个节点
children: [
{
path: 'overview',
component: _import('xm/core/xmIteration/XmIterationOverviewComplex'),
name: 'iterationOverview',
iconCls: 'fa el-icon-menu',
meta: {
title: '迭代-首页',
icon: 'iteration',roles:["user"]
},
hidden:true
},
{
path: 'project',
component: _import('xm/core/xmProject/XmProjectForLinkComplex'),
name: 'iterationProjectLink',
iconCls: 'fa el-icon-menu',
meta: {
title: '迭代-项目',
icon: 'iteration',roles:["user"]
},
hidden:true
},
{
path: 'menu',
component: _import('xm/core/xmMenu/XmMenuBoxForIteration'),
name: 'iterationMenu',
iconCls: 'fa el-icon-menu',
meta: {
title: '迭代-需求',
icon: 'iteration',roles:["user"]
},
hidden:true
},
{
path: 'task',
component: _import('xm/core/xmTask/XmTaskListForIteration'),
name: 'iterationTask',
iconCls: 'fa el-icon-menu',
meta: {
title: '迭代-任务',
icon: 'iteration',roles:["user"]
},
hidden:true
},
{
path: 'question',
component: _import('xm/core/xmQuestion/XmQuestionForIteration'),
name: 'iterationQuestion',
iconCls: 'fa el-icon-menu',
meta: {
title: '迭代-缺陷',
icon: 'iteration',roles:["user"]
},
hidden:true
},
{
path: 'record',
component: _import('xm/core/xmRecord/XmRecordForIteration'),
name: 'iterationRecord',
iconCls: 'fa el-icon-menu',
meta: {
title: '迭代-日志',
icon: 'iteration',roles:["user"]
},
hidden:true
},
{
path: 'workloadDay',
component: _import('xm/core/xmWorkload/WorkloadSetDayList'),
name: 'iterationBudget',
iconCls: 'fa el-icon-menu',
meta: {
title: '迭代-工时日报',
icon: 'iteration',roles:["user"]
},
hidden:true
},
{
path: 'workloadMonth',
component: _import('xm/core/xmWorkload/WorkloadSetMonthList'),
name: 'iterationWorkloadMonth',
iconCls: 'fa el-icon-menu',
meta: {
title: '迭代-工时月报',
icon: 'iteration',roles:["user"]
},
hidden:true
},
{
path: 'report',
component: _import('xm/rpt/reportIndexForIteration'),
name: 'iterationReport',
iconCls: 'fa el-icon-menu',
meta: {
title: '迭代-效能',
icon: 'iteration',roles:["user"]
},
hidden:true
},
]
},
{ path: '/xm/core/testCasedbRoute', component: _import('xm/core/xmTestCasedb/XmTestCasedbRoute'), name: 'XmTestCasedbRoute', meta: { title: '测试库管理',roles:["user"] },hidden:true},
{
path: '/xm/core',

1
src/store/getters.js

@ -23,5 +23,6 @@ const getters = {
noticeMsg:state=>state.noticeMsg.noticeMsg,
projectInfo:state=>state.projectInfo.projectInfo,
xmProduct:state=>state.xmProduct.xmProduct,
xmIteration:state=>state.xmIteration.xmIteration,
}
export default getters

4
src/store/index.js

@ -8,7 +8,7 @@ import user from './modules/user'
import noticeMsg from './modules/noticeMsg'
import projectInfo from './modules/projectInfo'
import xmProduct from './modules/xmProduct'
import iterationInfo from './modules/iterationInfo'
import xmIteration from './modules/xmIteration'
import getters from './getters'
@ -24,7 +24,7 @@ const store = new Vuex.Store({
noticeMsg,
projectInfo,
xmProduct,
iterationInfo,
xmIteration,
},
getters
})

29
src/store/modules/iterationInfo.js

@ -1,29 +0,0 @@
var key='xm-iteration-info';
const iterationInfo = {
state: {
iterationInfo: null,
},
mutations: {
SET_ITERATION_INFO: (state, iterationInfo) => {
state.iterationInfo=iterationInfo
if(iterationInfo && iterationInfo!='null' && iterationInfo!='undefined' ){
sessionStorage.setItem(key,JSON.stringify(iterationInfo))
}else{
sessionStorage.removeItem(key)
}
}
},
actions: {
setIterationInfo({ commit }, iterationInfo) {
commit('SET_ITERATION_INFO', iterationInfo)
}
}
}
var iterationStr=sessionStorage.getItem(key)
if(iterationStr && iterationStr!='null' && iterationStr!='undefined' ){
iterationInfo.state.iterationInfo=JSON.parse(iterationStr)
}
export default iterationInfo

29
src/store/modules/xmIteration.js

@ -0,0 +1,29 @@
var key='xm-iteration';
const xmIteration = {
state: {
xmIteration: null,
},
mutations: {
SET_XM_ITERATION: (state, xmIteration) => {
state.xmIteration=xmIteration
if(xmIteration && xmIteration!='null' && xmIteration!='undefined' ){
sessionStorage.setItem(key,JSON.stringify(xmIteration))
}else{
sessionStorage.removeItem(key)
}
}
},
actions: {
setXmIteration({ commit }, xmIteration) {
commit('SET_XM_ITERATION', xmIteration)
}
}
}
var iterationStr=sessionStorage.getItem(key)
if(iterationStr && iterationStr!='null' && iterationStr!='undefined' ){
xmIteration.state.xmIteration=JSON.parse(iterationStr)
}
export default xmIteration

15
src/views/xm/core/xmIteration/XmIterationMng.vue

@ -314,6 +314,7 @@ import { mapGetters } from "vuex";
import XmIterationSelect from "@/views/xm/core/components/XmIterationSelect.vue";
import XmProductSelect from "@/views/xm/core/components/XmProductSelect.vue";
import { addUserFocus, delUserFocus } from "@/api/mdp/sys/userFocus";
import store from '@/store'
export default {
computed: {
...mapGetters(["userInfo", "roles"]),
@ -598,12 +599,14 @@ export default {
//info
intoInfo(row) {
this.editForm = row;
localStorage.setItem("xm-iteration-info-route", JSON.stringify(row));
this.$router.push({
name: "XmIterationInfoRoute",
query: { id: row.id },
});
//this.showInfo = true;
store.dispatch('setXmIteration',row).then(res=>{
this.$router.push({
path:'/xm/core/iteration/overview',
query:{
iterationId:row.id
}
})
})
},
//xmIteration
selsChange: function (sels) {

4
src/views/xm/core/xmIteration/XmIterationOverviewComplex.vue

@ -2,7 +2,7 @@
<section class="padding-left padding-right">
<el-row ref="pageMainRef">
<el-col
:span="infotype == '迭代概览' ? 4 : 0"
:span="4"
class="padding border"
:style="{ maxHeight: maxTableHeight + 'px', overflowY: 'auto' }"
>
@ -262,7 +262,7 @@
</el-step>
</el-steps>
</el-col>
<el-col>
<el-col :span="20">
<el-menu mode="horizontal" :default-active="showPanelName" @select="onMenuToolBarSelect">
<el-menu-item index="overview">
<span slot="title">迭代概览</span>

4
src/views/xm/core/xmIteration/top-nav.vue

@ -11,7 +11,7 @@
active-text-color="#409eff"
:router="true"
>
<el-menu-item index="迭代概览">
<el-menu-item :index="'/xm/core/iteration/overview?iterationId='+xmIteration.id">
<span
slot="title"
style="font-size: 18px; color: #ff8c00"
@ -57,9 +57,11 @@
<el-menu-item :index="'/xm/core/iteration/question?iterationId='+xmIteration.id">
<span slot="title"><i class="el-icon-question"></i>缺陷</span>
</el-menu-item>
<!--
<el-menu-item :index="'/xm/core/iteration/group?iterationId='+xmIteration.id">
<span slot="title"><i class="el-icon-user-solid"></i>团队</span>
</el-menu-item>
-->
<el-menu-item :index="'/xm/core/iteration/report?iterationId='+xmIteration.id">
<span slot="title"><i class="el-icon-s-data"></i>效能</span>
</el-menu-item>

6
src/views/xm/core/xmMenu/XmMenuBox.vue

@ -42,6 +42,12 @@
this.filters.xmProduct=this.xmProduct
},
deep:true,
},
xmIteration:{
handler(){
this.filters.xmProduct={id:this.xmIteration.productId,productName:this.xmIteration.productName}
},
deep:true,
}
},
data() {

48
src/views/xm/core/xmMenu/XmMenuBoxForIteration.vue

@ -0,0 +1,48 @@
<template>
<section>
<xm-menu-box v-if="xmProduct&&xmProduct.id" :xm-iteration="xmIteration" :xm-product="xmProduct"></xm-menu-box>
</section>
</template>
<script>
import util from '@/common/js/util';//
import XmMenuBox from './XmMenuBox.vue'
import { mapGetters } from 'vuex'
export default {
components: {
XmMenuBox
},
computed: {
...mapGetters([
'userInfo','roles','xmIteration'
]),
xmProduct(){
if(this.xmIteration && this.xmIteration.id){
return {id:this.xmIteration.productId,productName:this.xmIteration.productName}
}else{
return null;
}
}
},
watch: {
},
data() {
return {
}//end return
},//end data
methods: {
},//end method
mounted() {
}//end mounted
}
</script>
<style lang="less" scoped>
</style>

2
src/views/xm/core/xmMenu/XmMenuBoxForProduct.vue

@ -1,6 +1,6 @@
<template>
<section>
<xm-menu-box :xm-product="xmProduct"></xm-menu-box>
<xm-menu-box v-if="xmProduct&& xmProduct.id" :xm-product="xmProduct"></xm-menu-box>
</section>
</template>

2
src/views/xm/core/xmMenu/XmMenuBoxForProject.vue

@ -1,6 +1,6 @@
<template>
<section>
<xm-menu-box :sel-project="projectInfo"></xm-menu-box>
<xm-menu-box v-if="projectInfo && projectInfo.id" :sel-project="projectInfo"></xm-menu-box>
</section>
</template>

2
src/views/xm/core/xmMenu/XmMenuSelect.vue

@ -6,7 +6,7 @@
</el-col>
<el-col :span="17" >
<el-row v-if="filters.product && filters.product.id">
<xm-iteration-select style="display:inline;" v-if="!xmIteration" :auto-select="false" :link-project-id="selProject?selProject.id:null" @row-click="onIterationSelected" ref="xmIterationMng" :product-id="filters.product?filters.product.id:null" @clear="onIterationClearSelect"></xm-iteration-select>
<xm-iteration-select style="display:inline;" v-if="!xmIteration||!xmIteration.id" :auto-select="false" :link-project-id="selProject?selProject.id:null" @row-click="onIterationSelected" ref="xmIterationMng" :product-id="filters.product?filters.product.id:null" @clear="onIterationClearSelect"></xm-iteration-select>
<el-select v-model="filters.taskFilterType" placeholder="已分配任务的需求?" clearable v-if="taskFilterType">
<el-option value="not-join-any-project" label="未分配过任务的需求"></el-option>

2
src/views/xm/core/xmProduct/top-nav.vue

@ -49,7 +49,7 @@
<el-menu-item :index="'/xm/core/product/project?productId='+xmProduct.id">
<span slot="title"><i class="el-icon-odometer"></i>项目</span>
</el-menu-item>
<el-menu-item label="需求" :index="'/xm/core/product/menu?productId='+xmProduct.id" class="hidden-md-and-down">
<el-menu-item label="需求" :index="'/xm/core/product/menu?productId='+xmProduct.id">
<span slot="title"><i class="el-icon-document"></i>需求</span>
</el-menu-item>
<el-menu-item :index="'/xm/core/product/iteration?productId='+xmProduct.id">

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

@ -46,7 +46,7 @@
<el-menu-item :index="'/xm/core/project/product?projectId='+projectInfo.id">
<span slot="title"><i class="el-icon-s-opportunity"></i>产品</span>
</el-menu-item>
<el-menu-item label="需求" :index="'/xm/core/project/menu?projectId='+projectInfo.id" class="hidden-md-and-down">
<el-menu-item label="需求" :index="'/xm/core/project/menu?projectId='+projectInfo.id">
<span slot="title"><i class="el-icon-document"></i>需求</span>
</el-menu-item>
<el-menu-item :index="'/xm/core/project/iteration?projectId='+projectInfo.id">

4
src/views/xm/core/xmQuestion/XmQuestionEdit.vue

@ -182,7 +182,7 @@
</el-drawer>
<el-drawer append-to-body title="需求选择" :visible.sync="selectMenuVisible" size="60%" :close-on-click-modal="false">
<xm-menu-select :visible="selectMenuVisible" :is-select-menu="true" checkScope="3" @selected="onSelectedMenu" :sel-project="selProject"></xm-menu-select>
<xm-menu-select :xm-product="xmProduct" :xm-iteration="xmIteration" :visible="selectMenuVisible" :is-select-menu="true" checkScope="3" @selected="onSelectedMenu" :sel-project="selProject"></xm-menu-select>
</el-drawer>
</el-row>
<el-drawer append-to-body title="标签" :visible.sync="tagSelectVisible" class="dialog-body" size="60%">
@ -244,7 +244,7 @@
}
},
props:['xmQuestion','visible',"selProject",'opType','xmProduct','xmTestCase','xmTestPlanCase','xmMenu'],
props:['xmQuestion','visible',"selProject",'opType','xmProduct','xmTestCase','xmTestPlanCase','xmMenu','xmIteration'],
watch: {
'xmQuestion':function( xmQuestion ) {
this.editForm = {...xmQuestion};

52
src/views/xm/core/xmQuestion/XmQuestionForIteration.vue

@ -0,0 +1,52 @@
<template>
<xm-question-mng v-if="xmIteration && xmIteration.id" class="padding-top" :xm-product="xmProduct" :xm-iteration="xmIteration"></xm-question-mng>
</template>
<script>
import util from '@/common/js/util';//
import config from '@/common/config';//
import XmQuestionMng from './XmQuestionMng';//
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'userInfo','roles','xmIteration'
]),
xmProduct(){
if(this.xmIteration && this.xmIteration.id){
return {id:this.xmIteration.productId,productName:this.xmIteration.productName}
}else{
return null;
}
}
},
data() {
return {
}
},//end data
methods: {
},//end methods
components: {
XmQuestionMng
},
mounted() {
}
}
</script>
<style lang="scss" scoped>
</style>

9
src/views/xm/core/xmQuestion/XmQuestionMng.vue

@ -211,12 +211,12 @@
</el-row>
<!--编辑 XmQuestion xm_question界面-->
<el-dialog title="编辑缺陷" :visible.sync="editFormVisible" fullscreen top="10px" :close-on-click-modal="false" append-to-body>
<xm-question-edit :sel-project=" {id:editForm.projectId,name:editForm.projectName} " :xm-question="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit" @edit-fields="onEditFields"></xm-question-edit>
<xm-question-edit :sel-project=" {id:editForm.projectId,name:editForm.projectName} " :xm-product="filters.product" :xm-iteration="xmIteration" :xm-question="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit" @edit-fields="onEditFields"></xm-question-edit>
</el-dialog>
<!--新增 XmQuestion xm_question界面-->
<el-dialog title="新增缺陷" :visible.sync="addFormVisible" width="90%" top="10px" append-to-body :close-on-click-modal="false">
<xm-question-add :xm-menu="xmMenu" op-type="add" :xm-test-plan-case="xmTestPlanCase" :xm-test-plan="xmTestPlan" :xm-product="filters.product" :xm-test-case="xmTestCase" :qtype="qtype" :sel-project=" filters.selProject " :xm-question="addForm" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-question-add>
<xm-question-add :xm-menu="xmMenu" op-type="add" :xm-test-plan-case="xmTestPlanCase" :xm-test-plan="xmTestPlan" :xm-product="filters.product" :xm-iteration="xmIteration" :xm-test-case="xmTestCase" :qtype="qtype" :sel-project=" filters.selProject " :xm-question="addForm" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-question-add>
</el-dialog>
<xm-group-dialog ref="xmGroupDialog" :sel-project=" filters.selProject " :is-select-single-user="1" @user-confirm="onUserConfirm"></xm-group-dialog>
<el-drawer append-to-body title="需求选择" :visible.sync="menuVisible" size="60%" :close-on-click-modal="false">
@ -408,6 +408,7 @@
},
// XmQuestion xm_question
getXmQuestions() {
debugger;
let params = {
pageSize: this.pageInfo.pageSize,
pageNum: this.pageInfo.pageNum,
@ -1059,10 +1060,10 @@
},
mounted() {
if(this.selProject){
this.filters.selProject=this.selProject
this.filters.selProject={...this.selProject}
}
if(this.xmProduct){
this.filters.product=this.xmProduct
this.filters.product={...this.xmProduct}
}
if(this.queryScene=='my'){
this.filters.handlerUserid=this.userInfo.userid;

40
src/views/xm/core/xmRecord/XmRecordForIteration.vue

@ -0,0 +1,40 @@
<template>
<section>
<xm-record-mng v-if="xmIteration && xmIteration.id" :xm-product="{id:xmIteration.productId,productName:xmIteration.productName}"></xm-record-mng>
</section>
</template>
<script>
import { mapGetters } from 'vuex';
import XmRecordMng from './XmRecordMng'
export default {
computed: {
...mapGetters([
'userInfo','roles','xmIteration'
]),
},
watch:{
},
data() {
return {
}
},//end data
methods: {
},//end methods
components: {
XmRecordMng,
//
},
activated(){
},
mounted() {
}
}
</script>
<style scoped>
</style>

18
src/views/xm/core/xmTask/XmTaskAdd.vue

@ -215,7 +215,7 @@
</el-drawer>
<el-drawer append-to-body title="需求选择" :visible.sync="menuVisible" size="60%" :close-on-click-modal="false">
<xm-menu-select :is-select-menu="true" @selected="onMenuSelected" :sel-project="xmProject" :xm-product="xmProduct"></xm-menu-select>
<xm-menu-select :is-select-menu="true" @selected="onMenuSelected" :sel-project="xmProject" :xm-product="xmProduct" :xm-iteration="xmIteration"></xm-menu-select>
</el-drawer>
<el-drawer append-to-body title="选择执行人" :visible.sync="execGroupUserSelectVisible" size="60%" :close-on-click-modal="false">
<xm-group-select :visible="execGroupUserSelectVisible" :sel-project="xmProject" :isSelectSingleUser="1" @user-confirm="execGroupUserSelectConfirm"></xm-group-select>
@ -271,7 +271,7 @@
}
}
},
props:['xmTask','visible','xmProject','xmProduct',"parentTask","ptype"],
props:['xmTask','visible','xmProject','xmProduct',"parentTask","ptype",'xmIteration'],
watch: {
'xmTask':function( xmTask ) {
},
@ -336,6 +336,20 @@
},
//XmTask xm_task @submit="afterAddSubmit"
addSubmit: function () {
if(this.xmIteration && this.xmIteration.id){
if(!this.addForm.menuId){
this.$notify({position:'bottom-left',showClose:true,message:'在迭代视图中添加任务需要关联需求!请选择需求',type: 'error'})
this.menuVisible=true;
return;
}
}
if(this.xmProduct && this.xmProduct.id){
if(!this.addForm.menuId){
this.$notify({position:'bottom-left',showClose:true,message:'在产品视图中添加任务需要关联需求!请选择需求',type: 'error'})
this.menuVisible=true;
return;
}
}
this.$refs.addForm.validate((valid) => {
if (valid) {
if(this.addForm.oshare==='1'){

4
src/views/xm/core/xmTask/XmTaskEdit.vue

@ -508,7 +508,7 @@
</el-drawer>
<el-drawer append-to-body title="需求选择" :visible.sync="menuVisible" size="80%" :close-on-click-modal="false">
<xm-menu-select :is-select-menu="true" checkScope="3" @selected="onMenuSelected" :sel-project="xmProject"></xm-menu-select>
<xm-menu-select :is-select-menu="true" checkScope="3" @selected="onMenuSelected" :sel-project="xmProject" :xm-iteration="xmIteration"></xm-menu-select>
</el-drawer>
<el-drawer title="选中任务" :visible.sync="selectTaskVisible" size="80%" append-to-body :close-on-click-modal="false">
@ -639,7 +639,7 @@
}
},
props:['xmTask','visible','xmProject',"parentTask"],
props:['xmTask','visible','xmProject',"parentTask",'xmIteration'],
watch: {
'xmTask':function( xmTask ) {
},

50
src/views/xm/core/xmTask/XmTaskListForIteration.vue

@ -0,0 +1,50 @@
<template>
<section>
<xm-task-mng v-if="xmIteration && xmIteration.id" :xm-product="xmProduct" :xm-iteration="xmIteration" ptype="1" query-scope="task"></xm-task-mng>
</section>
</template>
<script>
import Vue from 'vue'
import util from '@/common/js/util';//
import { mapGetters } from 'vuex'
import XmTaskMng from './XmTaskMng.vue';
export default {
computed: {
...mapGetters([
'userInfo','roles','xmIteration'
]),
xmProduct(){
if(this.xmIteration && this.xmIteration.id){
return {id:this.xmIteration.productId,productName:this.xmIteration.productName}
}else{
return null;
}
}
},
watch: {
},
data() {
return {
/**end 自定义属性请在上面加 请加备注**/
}
},//end data
methods: {
/**end 自定义函数请在上面加**/
},//end methods
components: {
XmTaskMng
//
},
mounted() {
}
}
</script>
<style scoped>
</style>

1
src/views/xm/core/xmTask/XmTaskMng.vue

@ -685,6 +685,7 @@
:xm-project="currentProject"
:xm-product="xmProduct"
:xm-task="addForm"
:xm-iteration="xmIteration"
:parent-task="parentTask"
:ptype="ptype"
:visible="addFormVisible"

40
src/views/xm/rpt/reportIndexForIteration.vue

@ -0,0 +1,40 @@
<template>
<section>
<report-index :xm-iteration="xmIteration" :xm-product="{id:xmIteration.productId,productName:xmIteration.productName}"></report-index>
</section>
</template>
<script>
import { mapGetters } from 'vuex';
import reportIndex from './reportIndex'
export default {
computed: {
...mapGetters([
'userInfo','roles','xmIteration'
]),
},
watch:{
},
data() {
return {
}
},//end data
methods: {
},//end methods
components: {
reportIndex,
//
},
activated(){
},
mounted() {
}
}
</script>
<style scoped>
</style>
Loading…
Cancel
Save