Browse Source

故事优化

master
陈裕财 4 years ago
parent
commit
9629f7b95b
  1. 2
      src/views/xm/core/xmIteration/XmIterationForProjectComplex.vue
  2. 58
      src/views/xm/core/xmMenu/XmMenuMng.vue
  3. 86
      src/views/xm/core/xmMenu/XmMenuSelect.vue
  4. 73
      src/views/xm/core/xmMenu/XmMenuWithPlan.vue
  5. 243
      src/views/xm/core/xmMenuPlan/XmMenuPlanAdd.vue
  6. 238
      src/views/xm/core/xmMenuPlan/XmMenuPlanEdit.vue
  7. 287
      src/views/xm/core/xmMenuPlan/XmMenuPlanMng.vue
  8. 2
      src/views/xm/core/xmProduct/XmProductForProjectComplex.vue
  9. 2
      src/views/xm/core/xmProject/XmProjectComplex.vue
  10. 2
      src/views/xm/core/xmProject/XmProjectInfo.vue

2
src/views/xm/core/xmIteration/XmIterationForProjectComplex.vue

@ -19,7 +19,7 @@
<xm-project-for-link v-if="xmIteration && showPanel=='projects'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject"></xm-project-for-link>
</el-tab-pane>
<el-tab-pane label="故事" lazy name="menus" >
<xm-menu-mng v-if="xmIteration && showPanel=='menus'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject"></xm-menu-mng>
<xm-menu-mng v-if="xmIteration && showPanel=='menus'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject" :disabled-mng="false"></xm-menu-mng>
</el-tab-pane>
<el-tab-pane label="任务" lazy name="tasks" >
<xm-task-mng v-if="xmIteration && showPanel=='tasks'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject"></xm-task-mng>

58
src/views/xm/core/xmMenu/XmMenuMng.vue

@ -14,8 +14,8 @@
</el-input>
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmMenus" icon="el-icon-search"></el-button>
<el-button v-if="!selProject&&!xmIteration" type="primary" @click="showAdd" icon="el-icon-plus">故事</el-button>
<el-button v-if="!selProject&&!xmIteration" @click="toBatchEdit" icon="el-icon-edit">修改</el-button>
<el-button v-if="!selProject&&!xmIteration&&disabledMng!=false" type="primary" @click="showAdd" icon="el-icon-plus">故事</el-button>
<el-button v-if="!selProject&&!xmIteration&&disabledMng!=false" @click="toBatchEdit" icon="el-icon-edit">修改</el-button>
<el-popover
placement="top-start"
title=""
@ -119,7 +119,7 @@
<el-table-column label="操作" width="260" show-overflow-tooltip>
<template slot-scope="scope">
<el-popover style="padding-left:10px;"
v-if="isPmUser"
v-if="disabledMng!=false"
placement="top-start"
width="250"
trigger="click" >
@ -137,7 +137,7 @@
<el-button v-if="!selProject" :disabled="scope.row.ntype=='1'" type="text" @click="showTaskListForMenu(scope.row,scope.$index)" icon="el-icon-s-operation">任务</el-button>
<el-button v-if="selProject" :disabled="scope.row.ntype=='1'" type="text" @click="showTasks(scope.row,scope.$index)" icon="el-icon-s-operation">任务</el-button>
<el-button type="text" :disabled="scope.row.ntype=='1'" @click="toIterationList(scope.row,scope.$index)" icon="el-icon-document-copy">迭代</el-button>
<el-button type="text" :disabled="scope.row.childrenCnt>0" @click="handleDel(scope.row)" icon="el-icon-delete">删除</el-button>
<el-button type="text" v-if="disabledMng!=false" :disabled="scope.row.childrenCnt>0" @click="handleDel(scope.row)" icon="el-icon-delete">删除</el-button>
</template>
</el-table-column>
@ -228,7 +228,7 @@
import { mapGetters } from 'vuex'
export default {
props:['selProject','xmIteration','xmProduct'],
props:['selProject','xmIteration','xmProduct','disabledMng'],
computed: {
...mapGetters([
'userInfo','roles'
@ -397,6 +397,30 @@
}
return params;
},
loadMenusLazy(row, treeNode, resolve) {
if(row.children&&row.children.length>0){
resolve(row.children)
}else{
var params={pmenuId:row.menuId}
params=this.getParams(params);
params.isTop=""
this.load.list = true;
var func=listXmMenuWithState
if(this.selProject&&this.selProject.id){
func=listXmMenuWithPlan
}
func(params).then(res=>{
this.load.list = false
var tips = res.data.tips;
if(tips.isOk){
resolve(res.data.data)
}else{
resolve([])
}
}).catch( err => this.load.list = false );
}
},
// XmMenu xm_project_menu
getXmMenus() {
let params = {
@ -840,30 +864,6 @@
this.filters.parentMenuList.splice(index+1,this.filters.parentMenuList.length-index)
this.pageInfo.count=true
this.searchXmMenus();
},
loadMenusLazy(row, treeNode, resolve) {
if(row.children&&row.children.length>0){
resolve(row.children)
}else{
var params={pmenuId:row.menuId}
params=this.getParams(params);
params.isTop=""
this.load.list = true;
var func=listXmMenuWithState
if(this.selProject&&this.selProject.id){
func=listXmMenuWithPlan
}
func(params).then(res=>{
this.load.list = false
var tips = res.data.tips;
if(tips.isOk){
resolve(res.data.data)
}else{
resolve([])
}
}).catch( err => this.load.list = false );
}
}
},//end methods
components: {

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

@ -76,11 +76,11 @@
<el-button type="primary" v-if="multi" v-on:click="multiSelectedConfirm">确认选择</el-button>
</el-row>
<el-row style="padding-top:12px;">
<el-table ref="table" :height="tableHeight" :data="xmMenusTreeData" default-expand-all row-key="menuId" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table ref="table" lazy :load="loadMenusLazy" :height="tableHeight" :data="xmMenusTreeData" default-expand-all row-key="menuId" :tree-props="{children: 'children', hasChildren: 'childrenCnt'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column v-if="multi" type="selection" width="50"></el-table-column>
<el-table-column prop="menuName" label="故事名称" min-width="140" >
<template slot-scope="scope">
{{scope.row.seqNo}}&nbsp;&nbsp;<el-link @click="toMenu(scope.row)">{{scope.row.menuName}}</el-link>
<el-link :icon="scope.row.ntype=='1'?'el-icon-folder-opened':''" @click="toMenu(scope.row)">{{scope.row.seqNo}}&nbsp;&nbsp;{{scope.row.menuName}}</el-link>
</template>
</el-table-column>
<el-table-column prop="mmUsername" label="责任人" width="140" >
@ -213,6 +213,68 @@
this.pageInfo.count=true;
this.getXmMenus();
},
getParams(params){
if(!params.productId){
params.branchId=this.userInfo.branchId
}
if( this.filters.key){
params.key="%"+this.filters.key+"%"
}
if(this.filters.mmUser){
params.mmUserid=this.filters.mmUser.userid;
}
if(this.filters.iterationFilterType){
params.iterationFilterType=this.filters.iterationFilterType
}
if(this.xmIteration){
params.iterationFilterType='join'
params.iterationId=this.xmIteration.id
}
if(this.filters.taskFilterType){
params.taskFilterType=this.filters.taskFilterType
}
if(this.selProject){
params.projectId=this.selProject.id
}
if(this.filters.parentMenu){
params.pmenuId=this.filters.parentMenu.menuId
}
if( this.dateRanger && this.dateRanger.length==2){
params.ctimeStart=this.dateRanger[0]
params.ctimeEnd=this.dateRanger[1]
}
if(!(params.ctimeStart||params.pmenuId||params.projectId||params.iterationId||params.iterationFilterType||params.mmUserid||params.key||params.taskFilterType)){
params.isTop="1"
}
return params;
},
loadMenusLazy(row, treeNode, resolve) {
if(row.children&&row.children.length>0){
resolve(row.children)
}else{
var params={pmenuId:row.menuId}
params=this.getParams(params);
params.isTop=""
this.load.list = true;
var func=listXmMenu
func(params).then(res=>{
this.load.list = false
var tips = res.data.tips;
if(tips.isOk){
resolve(res.data.data)
}else{
resolve([])
}
}).catch( err => this.load.list = false );
}
},
// XmMenu xm_project_menu
getXmMenus() {
let params = {
@ -237,25 +299,7 @@
//params.xxx=xxxxx
}
if( this.dateRanger && this.dateRanger.length==2){
params.ctimeStart=this.dateRanger[0]
params.ctimeEnd=this.dateRanger[1]
}
if(this.filters.mmUser){
params.mmUserid=this.filters.mmUser.userid;
}
if( this.filters.key){
params.key="%"+this.filters.key+"%"
}
params.excludeIterationId=this.excludeIterationId
if(this.filters.iterationFilterType){
params.iterationFilterType=this.filters.iterationFilterType
}
if(this.filters.taskFilterType){
params.taskFilterType=this.filters.taskFilterType
}
params=this.getParams(params)
this.load.list = true;
listXmMenu(params).then((res) => {

73
src/views/xm/core/xmMenu/XmMenuWithPlan.vue

@ -94,11 +94,11 @@
</el-row>
<el-row v-show="batchEditVisible">
<el-table :height="tableHeight" :data="xmMenusTreeData" row-key="menuId" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table lazy :load="loadMenusLazy" :height="tableHeight" :data="xmMenusTreeData" row-key="menuId" :tree-props="{children: 'children', hasChildren: 'childrenCnt'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column prop="menuName" label="故事名称" min-width="150" >
<template slot-scope="scope">
{{scope.row.seqNo}}&nbsp;&nbsp;{{scope.row.menuName}}
<el-link :icon="scope.row.ntype=='1'?'el-icon-folder-opened':''">{{scope.row.seqNo}}&nbsp;&nbsp;{{scope.row.menuName}}</el-link>
</template>
</el-table-column>
<el-table-column prop="chargeUsername" label="负责人" min-width="80" >
@ -273,6 +273,68 @@
this.pageInfo.count=true;
this.getXmMenus();
},
getParams(params){
if(!params.productId){
params.branchId=this.userInfo.branchId
}
if( this.filters.key){
params.key="%"+this.filters.key+"%"
}
if(this.filters.mmUser){
params.mmUserid=this.filters.mmUser.userid;
}
if(this.filters.iterationFilterType){
params.iterationFilterType=this.filters.iterationFilterType
}
if(this.xmIteration){
params.iterationFilterType='join'
params.iterationId=this.xmIteration.id
}
if(this.filters.taskFilterType){
params.taskFilterType=this.filters.taskFilterType
}
if(this.selProject){
params.projectId=this.selProject.id
}
if(this.filters.parentMenu){
params.pmenuId=this.filters.parentMenu.menuId
}
if( this.dateRanger && this.dateRanger.length==2){
params.ctimeStart=this.dateRanger[0]
params.ctimeEnd=this.dateRanger[1]
}
if(!(params.ctimeStart||params.pmenuId||params.projectId||params.iterationId||params.iterationFilterType||params.mmUserid||params.key||params.taskFilterType)){
params.isTop="1"
}
return params;
},
loadMenusLazy(row, treeNode, resolve) {
if(row.children&&row.children.length>0){
resolve(row.children)
}else{
var params={pmenuId:row.menuId}
params=this.getParams(params);
params.isTop=""
this.load.list = true;
var func=listXmMenuWithPlan
func(params).then(res=>{
this.load.list = false
var tips = res.data.tips;
if(tips.isOk){
resolve(res.data.data)
}else{
resolve([])
}
}).catch( err => this.load.list = false );
}
},
// XmMenu xm_project_menu
getXmMenus() {
let params = {
@ -288,13 +350,8 @@
}
params.orderBy= orderBys.join(",")
}
if(this.selProject){
params.projectId=this.selProject.id
}
if( this.filters.key){
params.key="%"+this.filters.key+"%"
}
params=this.getParams(params);
this.load.list = true;
listXmMenuWithPlan(params).then((res) => {
var tips=res.data.tips;

243
src/views/xm/core/xmMenuPlan/XmMenuPlanAdd.vue

@ -1,243 +0,0 @@
<template>
<section class="page-container page-full-height padding border">
<el-row>
<!--新增界面 XmMenuPlan 功能计划表,无需前端维护所有数据由汇总统计得出-->
<el-form :model="addForm" label-width="120px" :rules="addFormRules" ref="addForm">
<el-form-item label="项目编号" prop="projectId">
<el-input v-model="addForm.projectId" placeholder="项目编号" ></el-input>
</el-form-item>
<el-form-item label="主键" prop="id">
<el-input v-model="addForm.id" placeholder="主键" ></el-input>
</el-form-item>
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="addForm.projectName" placeholder="项目名称" ></el-input>
</el-form-item>
<el-form-item label="功能编号" prop="menuId">
<el-input v-model="addForm.menuId" placeholder="功能编号" ></el-input>
</el-form-item>
<el-form-item label="开始时间" prop="planStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="addForm.planStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="planEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="addForm.planEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="实际开始时间" prop="actStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="addForm.actStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="实际结束时间" prop="actEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="addForm.actEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="计划工作量,根据关联任务汇总" prop="planWorkload">
<el-input v-model="addForm.planWorkload" placeholder="计划工作量,根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="实际工作量,根据关联任务汇总" prop="actWorkload">
<el-input v-model="addForm.actWorkload" placeholder="实际工作量,根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="计划成本,根据关联任务汇总" prop="planCostAmount">
<el-input v-model="addForm.planCostAmount" placeholder="计划成本,根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="实际成本金额根据关联任务汇总" prop="actCostAmount">
<el-input v-model="addForm.actCostAmount" placeholder="实际成本金额根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="总体完成比例0-100之间,根据taskType进行汇总" prop="finishRate">
<el-input v-model="addForm.finishRate" placeholder="总体完成比例0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="需求完成率0-100之间,根据taskType进行汇总" prop="demandRate">
<el-input v-model="addForm.demandRate" placeholder="需求完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="设计完成率0-100之间,根据taskType进行汇总" prop="designRate">
<el-input v-model="addForm.designRate" placeholder="设计完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="开发完成率0-100之间,根据taskType进行汇总" prop="devRate">
<el-input v-model="addForm.devRate" placeholder="开发完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="uat测试完成率0-100之间,根据taskType进行汇总" prop="uatRate">
<el-input v-model="addForm.uatRate" placeholder="uat测试完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="sit测试完成率0-100之间,根据taskType进行汇总" prop="sitRate">
<el-input v-model="addForm.sitRate" placeholder="sit测试完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="上线状态0未上线1上线成功" prop="onlineStatus">
<el-input v-model="addForm.onlineStatus" placeholder="上线状态0未上线1上线成功" ></el-input>
</el-form-item>
<el-form-item label="上线时间" prop="onlineTime">
<el-date-picker type="date" placeholder="选择日期" v-model="addForm.onlineTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="计划状态0初始1正常2暂停3延误4结束5关闭" prop="planStatus">
<el-input v-model="addForm.planStatus" placeholder="计划状态0初始1正常2暂停3延误4结束5关闭" ></el-input>
</el-form-item>
<el-form-item label="负责人编号" prop="chargeUserid">
<el-input v-model="addForm.chargeUserid" placeholder="负责人编号" ></el-input>
</el-form-item>
<el-form-item label="负责人姓名" prop="chargeUsername">
<el-input v-model="addForm.chargeUsername" placeholder="负责人姓名" ></el-input>
</el-form-item>
<el-form-item label="状态0初始1设计中2开发中3测试中4uat测试2已上线3已下线4已删除" prop="menuStatus">
<el-input v-model="addForm.menuStatus" placeholder="状态0初始1设计中2开发中3测试中4uat测试2已上线3已下线4已删除" ></el-input>
</el-form-item>
<el-form-item label="创建时间" prop="ctime">
<el-date-picker type="date" placeholder="选择日期" v-model="addForm.ctime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="更新时间" prop="ltime">
<el-date-picker type="date" placeholder="选择日期" v-model="addForm.ltime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="创建人编号" prop="cuserid">
<el-input v-model="addForm.cuserid" placeholder="创建人编号" ></el-input>
</el-form-item>
<el-form-item label="创建人姓名" prop="cusername">
<el-input v-model="addForm.cusername" placeholder="创建人姓名" ></el-input>
</el-form-item>
<el-form-item label="汇总时间" prop="calcTime">
<el-date-picker type="date" placeholder="选择日期" v-model="addForm.calcTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="菜单名字" prop="menuName">
<el-input v-model="addForm.menuName" placeholder="菜单名字" ></el-input>
</el-form-item>
<el-form-item label="工时数" prop="planWorkhours">
<el-input v-model="addForm.planWorkhours" placeholder="工时数"></el-input>
</el-form-item>
<el-form-item label="总人数" prop="planWorkerCnt">
<el-input-number v-model="addForm.planWorkerCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="总关闭bugs" prop="closedBugs">
<el-input-number v-model="addForm.closedBugs" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="激活bugs" prop="activeBugs">
<el-input-number v-model="addForm.activeBugs" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已确认bugs总数" prop="confirmedBugs">
<el-input-number v-model="addForm.confirmedBugs" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已解决bugs总数" prop="resolvedBugs">
<el-input-number v-model="addForm.resolvedBugs" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="测试用例总数" prop="testCases">
<el-input-number v-model="addForm.testCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="测试中用例总数" prop="execCases">
<el-input-number v-model="addForm.execCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="设计中用例总数" prop="designCases">
<el-input-number v-model="addForm.designCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="完成用例总数" prop="finishCases">
<el-input-number v-model="addForm.finishCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="关联迭代数" prop="iterationCnt">
<el-input-number v-model="addForm.iterationCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="任务数" prop="taskCnt">
<el-input-number v-model="addForm.taskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="完成的任务数" prop="finishTaskCnt">
<el-input-number v-model="addForm.finishTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="产品编号" prop="productId">
<el-input v-model="addForm.productId" placeholder="产品编号" ></el-input>
</el-form-item>
<el-form-item label="产品名称" prop="productName">
<el-input v-model="addForm.productName" placeholder="产品名称" ></el-input>
</el-form-item>
<el-form-item label="bug总数" prop="bugCnt">
<el-input-number v-model="addForm.bugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item>
<el-col :span="24" :offset="8">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.add" type="primary" @click.native="addSubmit" :disabled="load.add==true">提交</el-button>
</el-col>
</el-form-item>
</el-form>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import { listOption } from '@/api/mdp/meta/itemOption';//
import { addXmMenuPlan } from '@/api/xm/core/xmMenuPlan';
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'userInfo','roles'
])
},
props:['xmMenuPlan','visible'],
watch: {
'xmMenuPlan':function( xmMenuPlan ) {
this.addForm = xmMenuPlan;
},
'visible':function(visible) {
if(visible==true){
//
}
}
},
data() {
return {
options:{},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
load:{ list: false, edit: false, del: false, add: false },//...
addFormRules: {
id: [
//{ required: true, message: '', trigger: 'blur' }
]
},
// ,
addForm: {
projectId:'',id:'',projectName:'',menuId:'',planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',onlineStatus:'',onlineTime:'',planStatus:'',chargeUserid:'',chargeUsername:'',menuStatus:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',menuName:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',taskCnt:'',finishTaskCnt:'',productId:'',productName:'',bugCnt:''
}
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
/**end 在上面加自定义属性**/
}//end return
},//end data
methods: {
// @cancel="addFormVisible=false"
handleCancel:function(){
this.$refs['addForm'].resetFields();
this.$emit('cancel');
},
//XmMenuPlan , @submit="afterAddSubmit"
addSubmit: function () {
this.$refs.addForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.add=true
let params = Object.assign({}, this.addForm);
addXmMenuPlan(params).then((res) => {
this.load.add=false
var tips=res.data.tips;
if(tips.isOk){
this.$refs['addForm'].resetFields();
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.add=false);
});
}
});
},
/**begin 在下面加自定义方法,记得补上面的一个逗号**/
/**end 在上面加自定义方法**/
},//end method
components: {
// 'xm-menu-plan-edit':XmMenuPlanEdit
},
mounted() {
this.addForm=Object.assign(this.addForm, this.xmMenuPlan);
/**在下面写其它函数***/
}//end mounted
}
</script>
<style scoped>
</style>

238
src/views/xm/core/xmMenuPlan/XmMenuPlanEdit.vue

@ -1,238 +0,0 @@
<template>
<section class="page-container page-full-height padding border">
<el-row>
<!--编辑界面 XmMenuPlan 功能计划表,无需前端维护所有数据由汇总统计得出-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
<el-form-item label="项目编号" prop="projectId">
<el-input v-model="editForm.projectId" placeholder="项目编号"></el-input>
</el-form-item>
<el-form-item label="主键" prop="id">
<el-input v-model="editForm.id" placeholder="主键"></el-input>
</el-form-item>
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="editForm.projectName" placeholder="项目名称"></el-input>
</el-form-item>
<el-form-item label="功能编号" prop="menuId">
<el-input v-model="editForm.menuId" placeholder="功能编号"></el-input>
</el-form-item>
<el-form-item label="开始时间" prop="planStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.planStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="planEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.planEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="实际开始时间" prop="actStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.actStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="实际结束时间" prop="actEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.actEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="计划工作量,根据关联任务汇总" prop="planWorkload">
<el-input v-model="editForm.planWorkload" placeholder="计划工作量,根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="实际工作量,根据关联任务汇总" prop="actWorkload">
<el-input v-model="editForm.actWorkload" placeholder="实际工作量,根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="计划成本,根据关联任务汇总" prop="planCostAmount">
<el-input v-model="editForm.planCostAmount" placeholder="计划成本,根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="实际成本金额根据关联任务汇总" prop="actCostAmount">
<el-input v-model="editForm.actCostAmount" placeholder="实际成本金额根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="总体完成比例0-100之间,根据taskType进行汇总" prop="finishRate">
<el-input v-model="editForm.finishRate" placeholder="总体完成比例0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="需求完成率0-100之间,根据taskType进行汇总" prop="demandRate">
<el-input v-model="editForm.demandRate" placeholder="需求完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="设计完成率0-100之间,根据taskType进行汇总" prop="designRate">
<el-input v-model="editForm.designRate" placeholder="设计完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="开发完成率0-100之间,根据taskType进行汇总" prop="devRate">
<el-input v-model="editForm.devRate" placeholder="开发完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="uat测试完成率0-100之间,根据taskType进行汇总" prop="uatRate">
<el-input v-model="editForm.uatRate" placeholder="uat测试完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="sit测试完成率0-100之间,根据taskType进行汇总" prop="sitRate">
<el-input v-model="editForm.sitRate" placeholder="sit测试完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="上线状态0未上线1上线成功" prop="onlineStatus">
<el-input v-model="editForm.onlineStatus" placeholder="上线状态0未上线1上线成功"></el-input>
</el-form-item>
<el-form-item label="上线时间" prop="onlineTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.onlineTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="计划状态0初始1正常2暂停3延误4结束5关闭" prop="planStatus">
<el-input v-model="editForm.planStatus" placeholder="计划状态0初始1正常2暂停3延误4结束5关闭"></el-input>
</el-form-item>
<el-form-item label="负责人编号" prop="chargeUserid">
<el-input v-model="editForm.chargeUserid" placeholder="负责人编号"></el-input>
</el-form-item>
<el-form-item label="负责人姓名" prop="chargeUsername">
<el-input v-model="editForm.chargeUsername" placeholder="负责人姓名"></el-input>
</el-form-item>
<el-form-item label="状态0初始1设计中2开发中3测试中4uat测试2已上线3已下线4已删除" prop="menuStatus">
<el-input v-model="editForm.menuStatus" placeholder="状态0初始1设计中2开发中3测试中4uat测试2已上线3已下线4已删除"></el-input>
</el-form-item>
<el-form-item label="创建时间" prop="ctime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.ctime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="更新时间" prop="ltime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.ltime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="创建人编号" prop="cuserid">
<el-input v-model="editForm.cuserid" placeholder="创建人编号"></el-input>
</el-form-item>
<el-form-item label="创建人姓名" prop="cusername">
<el-input v-model="editForm.cusername" placeholder="创建人姓名"></el-input>
</el-form-item>
<el-form-item label="汇总时间" prop="calcTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.calcTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="菜单名字" prop="menuName">
<el-input v-model="editForm.menuName" placeholder="菜单名字"></el-input>
</el-form-item>
<el-form-item label="工时数" prop="planWorkhours">
<el-input v-model="editForm.planWorkhours" placeholder="工时数"></el-input>
</el-form-item>
<el-form-item label="总人数" prop="planWorkerCnt">
<el-input-number v-model="editForm.planWorkerCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="总关闭bugs" prop="closedBugs">
<el-input-number v-model="editForm.closedBugs" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="激活bugs" prop="activeBugs">
<el-input-number v-model="editForm.activeBugs" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已确认bugs总数" prop="confirmedBugs">
<el-input-number v-model="editForm.confirmedBugs" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已解决bugs总数" prop="resolvedBugs">
<el-input-number v-model="editForm.resolvedBugs" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="测试用例总数" prop="testCases">
<el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="测试中用例总数" prop="execCases">
<el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="设计中用例总数" prop="designCases">
<el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="完成用例总数" prop="finishCases">
<el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="关联迭代数" prop="iterationCnt">
<el-input-number v-model="editForm.iterationCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="任务数" prop="taskCnt">
<el-input-number v-model="editForm.taskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="完成的任务数" prop="finishTaskCnt">
<el-input-number v-model="editForm.finishTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="产品编号" prop="productId">
<el-input v-model="editForm.productId" placeholder="产品编号"></el-input>
</el-form-item>
<el-form-item label="产品名称" prop="productName">
<el-input v-model="editForm.productName" placeholder="产品名称"></el-input>
</el-form-item>
<el-form-item label="bug总数" prop="bugCnt">
<el-input-number v-model="editForm.bugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item>
<el-col :span="24" :offset="8">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="editSubmit" :disabled="load.edit==true">提交</el-button>
</el-col>
</el-form-item>
</el-form>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import { listOption } from '@/api/mdp/meta/itemOption';//
import { editXmMenuPlan } from '@/api/xm/core/xmMenuPlan';
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'userInfo','roles'
])
},
props:['xmMenuPlan','visible'],
watch: {
'xmMenuPlan':function( xmMenuPlan ) {
this.editForm = xmMenuPlan;
},
'visible':function(visible) {
if(visible==true){
//
}
}
},
data() {
return {
options:{},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
load:{ list: false, edit: false, del: false, add: false },//...
editFormRules: {
id: [
//{ required: true, message: '', trigger: 'blur' }
]
},
// XmMenuPlan ,
editForm: {
projectId:'',id:'',projectName:'',menuId:'',planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',onlineStatus:'',onlineTime:'',planStatus:'',chargeUserid:'',chargeUsername:'',menuStatus:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',menuName:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',taskCnt:'',finishTaskCnt:'',productId:'',productName:'',bugCnt:''
}
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
/**end 在上面加自定义属性**/
}//end return
},//end data
methods: {
// @cancel="editFormVisible=false"
handleCancel:function(){
this.$refs['editForm'].resetFields();
this.$emit('cancel');
},
//XmMenuPlan ,@submit="afterEditSubmit"
editSubmit: function () {
this.$refs.editForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true
let params = Object.assign({}, this.editForm);
editXmMenuPlan(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.$refs['editForm'].resetFields();
this.$emit('submit');// @submit="afterEditSubmit"
}
this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
});
}
});
},
/**begin 在下面加自定义方法,记得补上面的一个逗号**/
/**end 在上面加自定义方法**/
},//end method
components: {
// 'xm-menu-plan-edit':XmMenuPlanEdit
},
mounted() {
this.editForm=Object.assign(this.editForm, this.xmMenuPlan);
}
}
</script>
<style scoped>
</style>

287
src/views/xm/core/xmMenuPlan/XmMenuPlanMng.vue

@ -1,287 +0,0 @@
<template>
<section class="page-container page-full-height padding border">
<el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmMenuPlans">查询</el-button>
<el-button type="primary" @click="showAdd">+功能计划表,无需前端维护所有数据由汇总统计得出</el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true">批量删除</el-button>
</el-row>
<el-row class="page-main page-height-90">
<!--列表 XmMenuPlan 功能计划表,无需前端维护所有数据由汇总统计得出-->
<el-table ref="table" :height="tableHeight" :data="xmMenuPlans" @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="45"></el-table-column>
<el-table-column sortable type="index" width="45"></el-table-column>
<el-table-column prop="projectId" label="项目编号" min-width="80" ></el-table-column>
<el-table-column prop="id" label="主键" min-width="80" ></el-table-column>
<el-table-column prop="projectName" label="项目名称" min-width="80" ></el-table-column>
<el-table-column prop="menuId" label="功能编号" min-width="80" ></el-table-column>
<el-table-column prop="planStartTime" label="开始时间" min-width="80" ></el-table-column>
<el-table-column prop="planEndTime" label="结束时间" min-width="80" ></el-table-column>
<el-table-column prop="actStartTime" label="实际开始时间" min-width="80" ></el-table-column>
<el-table-column prop="actEndTime" label="实际结束时间" min-width="80" ></el-table-column>
<el-table-column prop="planWorkload" label="计划工作量,根据关联任务汇总" min-width="80" ></el-table-column>
<el-table-column prop="actWorkload" label="实际工作量,根据关联任务汇总" min-width="80" ></el-table-column>
<el-table-column prop="planCostAmount" label="计划成本,根据关联任务汇总" min-width="80" ></el-table-column>
<el-table-column prop="actCostAmount" label="实际成本金额根据关联任务汇总" min-width="80" ></el-table-column>
<el-table-column prop="finishRate" label="总体完成比例0-100之间,根据taskType进行汇总" min-width="80" ></el-table-column>
<el-table-column prop="demandRate" label="需求完成率0-100之间,根据taskType进行汇总" min-width="80" ></el-table-column>
<el-table-column prop="designRate" label="设计完成率0-100之间,根据taskType进行汇总" min-width="80" ></el-table-column>
<el-table-column prop="devRate" label="开发完成率0-100之间,根据taskType进行汇总" min-width="80" ></el-table-column>
<el-table-column prop="uatRate" label="uat测试完成率0-100之间,根据taskType进行汇总" min-width="80" ></el-table-column>
<el-table-column prop="sitRate" label="sit测试完成率0-100之间,根据taskType进行汇总" min-width="80" ></el-table-column>
<el-table-column prop="onlineStatus" label="上线状态0未上线1上线成功" min-width="80" ></el-table-column>
<el-table-column prop="onlineTime" label="上线时间" min-width="80" ></el-table-column>
<el-table-column prop="planStatus" label="计划状态0初始1正常2暂停3延误4结束5关闭" min-width="80" ></el-table-column>
<el-table-column prop="chargeUserid" label="负责人编号" min-width="80" ></el-table-column>
<el-table-column prop="chargeUsername" label="负责人姓名" min-width="80" ></el-table-column>
<el-table-column prop="menuStatus" label="状态0初始1设计中2开发中3测试中4uat测试2已上线3已下线4已删除" min-width="80" ></el-table-column>
<el-table-column prop="ctime" label="创建时间" min-width="80" ></el-table-column>
<el-table-column prop="ltime" label="更新时间" min-width="80" ></el-table-column>
<el-table-column prop="cuserid" label="创建人编号" min-width="80" ></el-table-column>
<el-table-column prop="cusername" label="创建人姓名" min-width="80" ></el-table-column>
<el-table-column prop="calcTime" label="汇总时间" min-width="80" ></el-table-column>
<el-table-column prop="menuName" label="菜单名字" min-width="80" ></el-table-column>
<el-table-column prop="planWorkhours" label="工时数" min-width="80" ></el-table-column>
<el-table-column prop="planWorkerCnt" label="总人数" min-width="80" ></el-table-column>
<el-table-column prop="closedBugs" label="总关闭bugs" min-width="80" ></el-table-column>
<el-table-column prop="activeBugs" label="激活bugs" min-width="80" ></el-table-column>
<el-table-column prop="confirmedBugs" label="已确认bugs总数" min-width="80" ></el-table-column>
<el-table-column prop="resolvedBugs" label="已解决bugs总数" min-width="80" ></el-table-column>
<el-table-column prop="testCases" label="测试用例总数" min-width="80" ></el-table-column>
<el-table-column prop="execCases" label="测试中用例总数" min-width="80" ></el-table-column>
<el-table-column prop="designCases" label="设计中用例总数" min-width="80" ></el-table-column>
<el-table-column prop="finishCases" label="完成用例总数" min-width="80" ></el-table-column>
<el-table-column prop="iterationCnt" label="关联迭代数" min-width="80" ></el-table-column>
<el-table-column prop="taskCnt" label="任务数" min-width="80" ></el-table-column>
<el-table-column prop="finishTaskCnt" label="完成的任务数" min-width="80" ></el-table-column>
<el-table-column prop="productId" label="产品编号" min-width="80" ></el-table-column>
<el-table-column prop="productName" label="产品名称" min-width="80" ></el-table-column>
<el-table-column prop="bugCnt" label="bug总数" min-width="80" ></el-table-column>
<el-table-column label="操作" width="160" fixed="right">
<template scope="scope">
<el-button @click="showEdit( scope.row,scope.$index)"></el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)"></el-button>
</template>
</el-table-column>
</el-table>
<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>
<!--编辑 XmMenuPlan 功能计划表,无需前端维护所有数据由汇总统计得出界面-->
<el-drawer title="编辑功能计划表,无需前端维护,所有数据由汇总统计得出" :visible.sync="editFormVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-menu-plan-edit :xm-menu-plan="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-menu-plan-edit>
</el-drawer>
<!--新增 XmMenuPlan 功能计划表,无需前端维护所有数据由汇总统计得出界面-->
<el-drawer title="新增功能计划表,无需前端维护,所有数据由汇总统计得出" :visible.sync="addFormVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-menu-plan-add :xm-menu-plan="addForm" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-menu-plan-add>
</el-drawer>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from '@/common/config';//
import { listOption } from '@/api/mdp/meta/itemOption';//
import { listXmMenuPlan, delXmMenuPlan, batchDelXmMenuPlan } from '@/api/xm/core/xmMenuPlan';
import XmMenuPlanAdd from './XmMenuPlanAdd';//
import XmMenuPlanEdit from './XmMenuPlanEdit';//
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'userInfo','roles'
])
},
data() {
return {
filters: {
key: ''
},
xmMenuPlans: [],//
pageInfo:{//
total:0,//0>0
pageSize:10,//
count:false,//
pageNum:1,//1
orderFields:[],// ['sex','student_id']
orderDirs:[]// asc,desc ['asc','desc']
},
load:{ list: false, edit: false, del: false, add: false },//...
sels: [],//
options:{
//sex:[],
},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
addFormVisible: false,//xmMenuPlan
//xmMenuPlan
addForm: {
projectId:'',id:'',projectName:'',menuId:'',planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',onlineStatus:'',onlineTime:'',planStatus:'',chargeUserid:'',chargeUsername:'',menuStatus:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',menuName:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',taskCnt:'',finishTaskCnt:'',productId:'',productName:'',bugCnt:''
},
editFormVisible: false,//
//xmMenuPlan
editForm: {
projectId:'',id:'',projectName:'',menuId:'',planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',onlineStatus:'',onlineTime:'',planStatus:'',chargeUserid:'',chargeUsername:'',menuStatus:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',menuName:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',taskCnt:'',finishTaskCnt:'',productId:'',productName:'',bugCnt:''
},
/**begin 自定义属性请在下面加 请加备注**/
tableHeight:300,
/**end 自定义属性请在上面加 请加备注**/
}
},//end data
methods: {
handleSizeChange(pageSize) {
this.pageInfo.pageSize=pageSize;
this.getXmMenuPlans();
},
handleCurrentChange(pageNum) {
this.pageInfo.pageNum = pageNum;
this.getXmMenuPlans();
},
// obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
if(obj.prop=='xxx'){
this.pageInfo.orderFields=['xxx'];
this.pageInfo.orderDirs=[dir];
}
this.getXmMenuPlans();
},
searchXmMenuPlans(){
this.pageInfo.count=true;
this.getXmMenuPlans();
},
// XmMenuPlan ,
getXmMenuPlans() {
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.xxx=this.filters.key
}else{
//params.xxx=xxxxx
}
this.load.list = true;
listXmMenuPlan(params).then((res) => {
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.total = res.data.total;
this.pageInfo.count=false;
this.xmMenuPlans = res.data.data;
}else{
this.$message({showClose: true, message: tips.msg, type: 'error' });
}
this.load.list = false;
}).catch( err => this.load.list = false );
},
// XmMenuPlan ,
showEdit: function ( row,index ) {
this.editFormVisible = true;
this.editForm = Object.assign({}, row);
},
// XmMenuPlan ,
showAdd: function () {
this.addFormVisible = true;
//this.addForm=Object.assign({}, this.editForm);
},
afterAddSubmit(){
this.addFormVisible=false;
this.pageInfo.count=true;
this.getXmMenuPlans();
},
afterEditSubmit(){
this.editFormVisible=false;
},
//xmMenuPlan
selsChange: function (sels) {
this.sels = sels;
},
//xmMenuPlan
handleDel: function (row,index) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.load.del=true;
let params = { id: row.id };
delXmMenuPlan(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.count=true;
this.getXmMenuPlans();
}
this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false );
});
},
//xmMenuPlan
batchDel: function () {
this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.load.del=true;
batchDelXmMenuPlan(this.sels).then((res) => {
this.load.del=false;
var tips=res.data.tips;
if( tips.isOk ){
this.pageInfo.count=true;
this.getXmMenuPlans();
}
this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false );
});
},
rowClick: function(row, event, column){
this.$emit('row-click',row, event, column);// @row-click="rowClick"
},
/**begin 自定义函数请在下面加**/
/**end 自定义函数请在上面加**/
},//end methods
components: {
'xm-menu-plan-add':XmMenuPlanAdd,
'xm-menu-plan-edit':XmMenuPlanEdit,
//
},
mounted() {
this.$nextTick(() => {
var clientRect=this.$refs.table.$el.getBoundingClientRect();
var subHeight=70/1000 * window.innerHeight;
this.tableHeight = window.innerHeight -clientRect.y - this.$refs.table.$el.offsetTop-subHeight;
this.getXmMenuPlans();
});
/**
listOption([{categoryId:'all',itemCode:'sex'},{categoryId:'all',itemCode:'grade'}] ).then(res=>{
if(res.data.tips.isOk){
this.options=res.data.data
}
});
**/
}
}
</script>
<style scoped>
</style>

2
src/views/xm/core/xmProduct/XmProductForProjectComplex.vue

@ -19,7 +19,7 @@
<xm-product-project-for-link v-if="xmProduct && showPanel=='projects'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject"></xm-product-project-for-link>
</el-tab-pane>
<el-tab-pane label="故事" lazy name="menus" >
<xm-menu-mng v-if="xmProduct && showPanel=='menus'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject"></xm-menu-mng>
<xm-menu-mng v-if="xmProduct && showPanel=='menus'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject" :disabled-mng="false"></xm-menu-mng>
</el-tab-pane>
<el-tab-pane label="任务" lazy name="tasks" >
<xm-task-mng v-if="xmProduct && showPanel=='tasks'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject"></xm-task-mng>

2
src/views/xm/core/xmProject/XmProjectComplex.vue

@ -21,7 +21,7 @@
<xm-product-project-for-link v-if="selProject && showPanel=='projects'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject"></xm-product-project-for-link>
</el-tab-pane>
<el-tab-pane label="故事" lazy name="menus" >
<xm-menu-mng v-if="selProject && showPanel=='menus'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject"></xm-menu-mng>
<xm-menu-mng v-if="selProject && showPanel=='menus'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject" :disabled-mng="false"></xm-menu-mng>
</el-tab-pane>
<el-tab-pane label="任务" lazy name="tasks" >
<xm-task-mng v-if="selProject && showPanel=='tasks'" :xm-product="xmProduct" :xm-iteration="xmIteration" :sel-project="selProject"></xm-task-mng>

2
src/views/xm/core/xmProject/XmProjectInfo.vue

@ -145,7 +145,7 @@
<xm-project-overview-complex v-if="infotype=='项目概览'" :sel-project="selProject"></xm-project-overview-complex>
<xm-iteration-for-project-complex v-if="infotype=='迭代'" ref="xmIterationMng" :sel-project="selProject"></xm-iteration-for-project-complex>
<xm-product-for-project-complex v-if="infotype=='产品'" ref="xmProductComplex" :sel-project="selProject"></xm-product-for-project-complex>
<xm-menu-mng v-if="infotype=='用户故事'" :sel-project="selProject"></xm-menu-mng>
<xm-menu-mng v-if="infotype=='用户故事'" :sel-project="selProject" :disabled-mng="false"></xm-menu-mng>
<xm-task-mng v-if="infotype=='任务'" ref="xmTaskMng" :sel-project="selProject" ></xm-task-mng>
<xm-question v-if="infotype=='缺陷'" :qtype="'bug'" :sel-project='selProject' ref="xmQuestion"></xm-question>
<xm-group-mng v-if="infotype=='团队'" :sel-project="selProject"></xm-group-mng>

Loading…
Cancel
Save