From 269bc646d2602fb6cfeaededf62c068edef3ccd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Mon, 28 Mar 2022 23:51:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xm/core/xmIteration/XmIterationInfo.vue | 2 +- src/views/xm/core/xmProduct/XmProductInfo.vue | 2 +- src/views/xm/core/xmProject/XmProjectInfo.vue | 2 +- .../xm/core/xmQuestion/XmQuestionMng.vue | 2 +- .../core/xmTestCaseExec/XmTestCaseExecMng.vue | 2 +- .../xm/core/xmWorkItem/XmSubMenuList.vue | 272 +++++++++++++++++- 6 files changed, 268 insertions(+), 14 deletions(-) diff --git a/src/views/xm/core/xmIteration/XmIterationInfo.vue b/src/views/xm/core/xmIteration/XmIterationInfo.vue index 90bf3e8d..32636983 100644 --- a/src/views/xm/core/xmIteration/XmIterationInfo.vue +++ b/src/views/xm/core/xmIteration/XmIterationInfo.vue @@ -34,7 +34,7 @@ - + diff --git a/src/views/xm/core/xmProduct/XmProductInfo.vue b/src/views/xm/core/xmProduct/XmProductInfo.vue index f2b1eb11..4d8384e1 100644 --- a/src/views/xm/core/xmProduct/XmProductInfo.vue +++ b/src/views/xm/core/xmProduct/XmProductInfo.vue @@ -156,7 +156,7 @@ - + diff --git a/src/views/xm/core/xmProject/XmProjectInfo.vue b/src/views/xm/core/xmProject/XmProjectInfo.vue index 043822c1..bd9381e0 100644 --- a/src/views/xm/core/xmProject/XmProjectInfo.vue +++ b/src/views/xm/core/xmProject/XmProjectInfo.vue @@ -136,7 +136,7 @@ - + diff --git a/src/views/xm/core/xmQuestion/XmQuestionMng.vue b/src/views/xm/core/xmQuestion/XmQuestionMng.vue index 3f5f24c8..9d9c2ad1 100644 --- a/src/views/xm/core/xmQuestion/XmQuestionMng.vue +++ b/src/views/xm/core/xmQuestion/XmQuestionMng.vue @@ -521,7 +521,7 @@ if(this.filters.tags && this.filters.tags.length>0){ params.tagIdList=this.filters.tags.map(i=>i.tagId) } - params.qtype=this.qtype + //params.qtype=this.qtype listXmQuestion(params).then((res) => { var tips=res.data.tips; if(tips.isOk){ diff --git a/src/views/xm/core/xmTestCaseExec/XmTestCaseExecMng.vue b/src/views/xm/core/xmTestCaseExec/XmTestCaseExecMng.vue index 16c8003f..9cfb37ca 100644 --- a/src/views/xm/core/xmTestCaseExec/XmTestCaseExecMng.vue +++ b/src/views/xm/core/xmTestCaseExec/XmTestCaseExecMng.vue @@ -191,7 +191,7 @@ - + diff --git a/src/views/xm/core/xmWorkItem/XmSubMenuList.vue b/src/views/xm/core/xmWorkItem/XmSubMenuList.vue index 2e6e16d5..5ed062c7 100644 --- a/src/views/xm/core/xmWorkItem/XmSubMenuList.vue +++ b/src/views/xm/core/xmWorkItem/XmSubMenuList.vue @@ -5,20 +5,91 @@
特性 + + + +
用户故事 + + + +
- - - + + + + + + + + + + + + + + + + + + + + + + + @@ -27,8 +98,11 @@ import Vue from "vue"; import util from "@/common/js/util"; //全局公共库 import treeTool from "@/common/js/treeTool"; //全局公共库 import { initSimpleDicts } from '@/api/mdp/meta/item'; //下拉框数据查询 - import { listXmMenu,addXmMenu } from '@/api/xm/core/xmMenu'; - + import { listXmMenuWithState,addXmMenu,editXmMenuSomeFields,batchDelXmMenu } from '@/api/xm/core/xmMenu'; + import XmMenuWorkload from '@/views/xm/core/components/XmMenuWorkload';//修改界面 + import XmGroupDialog from '@/views/xm/core/xmGroup/XmGroupDialog';//修改界面 + import XmIterationSelect from '@/views/xm/core/components/XmIterationSelect.vue';//修改界面 + import TagDialog from "@/views/mdp/arc/tag/TagDialog"; import { mapGetters } from 'vuex' export default { @@ -48,7 +122,7 @@ export default { }, }, props: [ - 'parentXmMenu' + 'parentXmMenu','linkProjectId' ], watch: { 'parentXmMenu.menuId':function(){ @@ -61,14 +135,107 @@ export default { }, data() { return{ - load:{edit:false,list:false,add:false}, + load:{edit:false,list:false,add:false,del:false}, xmMenus:[], + editForm:{}, + dicts:{}, + sels:[], + } }, //end data methods: { + + //选择行xmMenu + selsChange: function (sels) { + this.sels = sels; + }, + + + rowClick: function(row, event, column){ + this.editForm=row + }, + + + formaterByDicts(row,property,cellValue){ + var property=property + var dict=null; + if(property=='source'){ + dict=this.dicts['demandSource'] + }else if(property=='dlvl'){ + dict=this.dicts['demandLvl'] + }else if(property=='dtype'){ + dict=this.dicts['demandType'] + }else if(property=='priority'){ + dict=this.dicts['priority'] + } + if(!dict){ + return cellValue; + }else{ + var item=dict.find(i=>i.id==cellValue) + return item?item.name:cellValue; + } + }, + formatterPriorityDicts(cellValue){ + if(!cellValue && cellValue!=='0'){ + return [] + } + var key="priority"; + if(this.dicts[key]==undefined || this.dicts[key]==null || this.dicts[key].length==0 ){ + return [{id:cellValue,name:cellValue,className:'primary'}]; + } + var list=this.dicts[key].filter(i=>i.id==cellValue) + if(list.length>0){ + var data= {...list[0],className:'primary'} + if(data.id=='0'){ + data.className='danger' + }else if(data.id=='1'){ + data.className='warning' + }else if(data.id=='2'){ + data.className='success' + }else if(data.id=='3'){ + data.className='primary' + }else if(data.id=='4'){ + data.className='info' + }else{ + data.className='primary' + } + return [data]; + }else{ + return [{id:cellValue,name:cellValue,className:'primary'}] + } + + }, + formatterMenuStatusDicts: function(cellValue){ + if(!cellValue && cellValue!=='0'){ + return [] + } + var key="menuStatus"; + if(this.dicts[key]==undefined || this.dicts[key]==null || this.dicts[key].length==0 ){ + return [{id:cellValue,name:cellValue,className:'primary'}]; + } + var list=this.dicts[key].filter(i=>i.id==cellValue) + if(list.length>0){ + var data= {...list[0],className:'primary'} + if(data.id=='0'){ + data.className='primary' + }else if(data.id=='1'){ + data.className='warning' + }else if(data.id=='2'){ + data.className='success' + }else if(data.id=='3'){ + data.className='info' + } else{ + data.className='danger' + } + return [data]; + }else{ + return [{id:cellValue,name:cellValue,className:'primary'}] + } + + }, getXmMenus(){ - listXmMenu({pmenuId:this.parentXmMenu.menuId}).then(res=>{ + listXmMenuWithState({pmenuId:this.parentXmMenu.menuId}).then(res=>{ var tips = res.data.tips; if(tips.isOk){ this.xmMenus=res.data.data @@ -120,11 +287,98 @@ export default { }); }, + editXmMenuSomeFields(row,fieldName,$event){ + var params={menuIds:[row.menuId]}; + if(this.sels.length>0){ + if(!this.sels.some(k=>k.menuId==row.menuId)){ + this.$notify({showClose:true,message:'请操作选中的行或者取消选中的行再操作其它行',type:'warning'}) + return; + } + params.menuIds=this.sels.map(i=>i.menuId) + } + if(fieldName==='iterationId'){ + if($event){ + params[fieldName]=$event.id; + params.iterationName=$event.iterationName + }else{ + return; + } + }else if(fieldName==='tagIds'){ + if($event){ + params[fieldName]=$event.map(i=>i.tagId).join(","); + params.tagNames=$event.map(i=>i.tagName).join(","); + }else{ + return; + } + }else if(fieldName==='workload'){ + params={...params,...$event} + }else if(fieldName==='mmUserid'){ + params.mmUserid=$event[0].userid + params.mmUsername=$event[0].username + }else{ + params[fieldName]=$event + } + + editXmMenuSomeFields(params).then(res=>{ + var tips = res.data.tips; + if(tips.isOk){ + if(this.sels.length>0){ + this.sels.forEach(i=>{ + this.fieldTagVisible=false; + Object.assign(i,params) + }) + }else{ + Object.assign(row,params) + } + }else{ + this.$notify({showClose:true,message:tips.msg,type:tips.isOk?'success':'error'}) + } + }) + }, + + onTagSelected(tags,option){ + if(option.action=='editTagIds'){ + this.editXmMenuSomeFields(option.data,"tagIds",tags) + } + + }, + + onGroupUserSelect(users,option){ + this.editXmMenuSomeFields(option.data,"mmUserid",users); + }, + //批量删除xmMenu + batchDel: function () { + if(this.sels.length==0){ + this.$notify({showClose: true, message: "请先选择要删除的需求", type: 'warning'}); + return; + } + this.$confirm('确认删除选中的'+this.sels.length+'条数据吗?删除后数据不可恢复', '提示', { + type: 'warning' + }).then(() => { + this.load.del=true; + batchDelXmMenu(this.sels).then((res) => { + this.load.del=false; + var tips=res.data.tips; + if( tips.isOk ){ + this.getXmMenus(); + } + this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'}); + }).catch( err => this.load.del=false ); + }); + }, }, //end methods - components: { + components: { + TagDialog, + XmMenuWorkload, + XmGroupDialog, + XmIterationSelect, }, mounted() { this.initData(); + + initSimpleDicts("all",['menuStatus','demandSource','demandLvl','demandType','priority']).then(res=>{ + this.dicts=res.data.data; + }) }, };