diff --git a/src/styles/mdp.scss b/src/styles/mdp.scss index 0f08ed56..1af1a2bb 100644 --- a/src/styles/mdp.scss +++ b/src/styles/mdp.scss @@ -1,10 +1,20 @@ //main-container全局样式 .page-full-height{ - height: calc(100vh); + height: calc(100vh); } .page-height{ - height: calc(90vh); + height: calc(90vh); } +.page-main-height{ + height: calc(80vh); + overflow: auto; +} +.page-bottom-height{ + + height: calc(10vh); + overflow: auto; + +} .page-container { .page-header{ flex: 0 0 auto; @@ -43,11 +53,14 @@ background-color:rgb(182, 206, 214); } .page-main{ + padding-top: 10px; padding-left: 10px; padding-right: 10px; + padding-bottom: 10px; border:1px solid #e8e8e8; } .page-bottom{ + margin-top:5px; padding-left:5px; padding-right:5px; } diff --git a/src/views/xm/core/xmIteration/XmIterationComplex.vue b/src/views/xm/core/xmIteration/XmIterationComplex.vue new file mode 100644 index 00000000..464e0ea4 --- /dev/null +++ b/src/views/xm/core/xmIteration/XmIterationComplex.vue @@ -0,0 +1,159 @@ + + + + + + + + + + 产品、战略 + 产品、战略 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/xm/core/xmIteration/XmIterationSelect.vue b/src/views/xm/core/xmIteration/XmIterationSelect.vue index d31ad6eb..7717c3bb 100644 --- a/src/views/xm/core/xmIteration/XmIterationSelect.vue +++ b/src/views/xm/core/xmIteration/XmIterationSelect.vue @@ -5,68 +5,66 @@ - - 迭代名称 {{editForm.seqNo}} {{editForm.iterationName}} + 迭代名称 + + + + 迭代查询范围: + + + + + + + + + + + + + + 上线时间: + + + + 迭代名称: + + + + 默认只能查询本人创建的迭代、本人作为故事责任人参与的迭代 + + + 查询 + - + + + - {{scope.row.seqNo}} {{scope.row.iterationName}} + {{scope.row.seqNo}} {{scope.row.iterationName}} + {{formatterDate(scope.row,null,scope.row.startTime)}}~{{formatterDate(scope.row,null,scope.row.endTime)}} + {{!scope.row.iphase?'未开始':scope.row.iphase}} + + + + - - - - 上线时间 - - - - 迭代查询范围: - - - - - - - - - - - - - - 上线时间: - - - - 迭代名称: - - - - 默认只能查询本人创建的迭代、本人作为故事责任人参与的迭代 - - - 查询 - - - - - - - + @@ -323,9 +321,28 @@ }else{ return cellValue; } - }, + }, /**end 自定义函数请在上面加**/ + calcFinishRate(row){ + if(row.finishRate){ + return parseInt(row.finishRate); + }else{ + return 0; + } + }, + + loadTasksToXmIterationState(row){ + this.load.edit=true; + loadTasksToXmIterationState({id:row.id}).then(res=>{ + this.load.edit=false; + var tips =res.data.tips; + if(tips.isOk){ + this.getXmIterations(); + } + this.$message({ message: tips.msg, type: tips.isOk?'success':'error'}); + }); + }, },//end methods components: { //在下面添加其它组件 @@ -343,10 +360,13 @@ - diff --git a/src/views/xm/core/xmIterationMenu/XmIterationMenuMng.vue b/src/views/xm/core/xmIterationMenu/XmIterationMenuMng.vue index 263a2063..e5a2f54c 100644 --- a/src/views/xm/core/xmIterationMenu/XmIterationMenuMng.vue +++ b/src/views/xm/core/xmIterationMenu/XmIterationMenuMng.vue @@ -2,10 +2,10 @@ - + - + @@ -52,6 +52,7 @@ export default { + props:['xmIteration'], computed: { ...mapGetters([ 'userInfo','roles' @@ -60,6 +61,11 @@ return this.translateDataToTree(this.xmIterationMenus); }, }, + watch:{ + 'xmIteration':function(xmIteration){ + this.onIterationRowClick(xmIteration) + } + }, data() { return { filters: { @@ -322,6 +328,9 @@ //在下面添加其它组件 }, mounted() { + if(this.xmIteration){ + this.iteration=this.xmIteration + } this.$nextTick(() => { var clientRect=this.$refs.table.$el.getBoundingClientRect(); var subHeight=50/1000 * window.innerHeight; diff --git a/src/views/xm/core/xmIterationState/XmIterationStateMng.vue b/src/views/xm/core/xmIterationState/XmIterationStateMng.vue index 3b0482d8..a199134a 100644 --- a/src/views/xm/core/xmIterationState/XmIterationStateMng.vue +++ b/src/views/xm/core/xmIterationState/XmIterationStateMng.vue @@ -54,8 +54,7 @@ import { listXmIterationState, delXmIterationState, batchDelXmIterationState } from '@/api/xm/core/xmIterationState'; import XmIterationStateAdd from './XmIterationStateAdd';//新增界面 import XmIterationStateEdit from './XmIterationStateEdit';//修改界面 - import { mapGetters } from 'vuex' -import TabPane from '../../../example/tab/components/tabPane.vue'; + import { mapGetters } from 'vuex' export default { computed: { diff --git a/src/views/xm/core/xmIterationState/XmIterationStateShow.vue b/src/views/xm/core/xmIterationState/XmIterationStateShow.vue new file mode 100644 index 00000000..a199134a --- /dev/null +++ b/src/views/xm/core/xmIterationState/XmIterationStateShow.vue @@ -0,0 +1,261 @@ + + + + + 查询 + + + + + + + + + {{scope.row.finishRate}} % + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmMenu/XmMenuMng.vue b/src/views/xm/core/xmMenu/XmMenuMng.vue index bc8b1e0d..d4a171e8 100644 --- a/src/views/xm/core/xmMenu/XmMenuMng.vue +++ b/src/views/xm/core/xmMenu/XmMenuMng.vue @@ -1,6 +1,10 @@ + + + + @@ -27,8 +31,7 @@ 故事 - 修改 - 产品 + 修改 - {{scope.row.seqNo}} {{scope.row.menuName}} - - - - - - - {{scope.row.finishRate}}% - - - - - - - - {{scope.row.remark?scope.row.remark.substr(0,18)+"...":""}} - - - - - - - + {{scope.row.seqNo}} {{scope.row.menuName}} + + {{scope.row.finishRate}}% + + {{scope.row.mmUsername}} + {{scope.row.chargeUsername}} + + + + 描述 + - - - + + + - + - + - + @@ -198,7 +188,8 @@ - + + @@ -211,7 +202,7 @@ import util from '@/common/js/util';//全局公共库 //import Sticky from '@/components/Sticky' // 粘性header组件 //import { listOption } from '@/api/mdp/meta/itemOption';//下拉框数据查询 - import { listXmMenu, delXmMenu, batchDelXmMenu,batchAddXmMenu,batchEditXmMenu,listXmMenuWithState } from '@/api/xm/core/xmMenu'; + import { listXmMenu, delXmMenu, batchDelXmMenu,batchAddXmMenu,batchEditXmMenu,listXmMenuWithState,listXmMenuWithPlan } from '@/api/xm/core/xmMenu'; import { batchRelTasksWithMenu } from '@/api/xm/core/xmTask'; import { loadTasksToXmMenuState} from '@/api/xm/core/xmMenuState'; @@ -233,7 +224,7 @@ import { mapGetters } from 'vuex' export default { - props:['selProject'], + props:['selProject','xmIteration'], computed: { ...mapGetters([ 'userInfo','roles' @@ -393,14 +384,20 @@ } if(this.filters.mmUser){ params.mmUserid=this.filters.mmUser.userid; - } - params.excludeIterationId=this.excludeIterationId + } 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 + } params.ctimeStart=this.dateRanger[0]+" 00:00:00" params.ctimeEnd=this.dateRanger[1]+" 23:59:59" let callback= (res)=>{ @@ -415,7 +412,7 @@ this.load.list = false; } this.load.list = true; - listXmMenuWithState(params).then( callback ).catch( err => this.load.list = false ); + listXmMenuWithPlan(params).then( callback ).catch( err => this.load.list = false ); }, //显示编辑界面 XmMenu xm_project_menu @@ -809,10 +806,7 @@ //在下面添加其它组件 }, - mounted() { - if(this.filters.product==null){ - this.productVisible=true; - } + mounted() { this.$nextTick(() => { var clientRect=this.$refs.table.$el.getBoundingClientRect(); var subHeight=50/1000 * window.innerHeight; @@ -830,5 +824,8 @@ text-align:center; float:left; padding-top:5px; -} +} +.align-right{ + float: right; +} \ No newline at end of file diff --git a/src/views/xm/core/xmProduct/XmProductMng.vue b/src/views/xm/core/xmProduct/XmProductMng.vue index 5369eab2..a43c607d 100644 --- a/src/views/xm/core/xmProduct/XmProductMng.vue +++ b/src/views/xm/core/xmProduct/XmProductMng.vue @@ -94,19 +94,18 @@ - - - + - {{scope.row.id}} {{scope.row.productName}} - - - - - {{scope.row.finishRate}}% + {{scope.row.productName}} + + {{scope.row.finishRate}}% + + {{scope.row.pmUsername}} + + + - - + @@ -143,9 +142,9 @@ - + - + @@ -488,4 +487,8 @@ float:left; padding-top:5px; } + +.align-right{ + float: right; +} \ No newline at end of file diff --git a/src/views/xm/core/xmProduct/XmProductSelect.vue b/src/views/xm/core/xmProduct/XmProductSelect.vue index e3ec3e48..475e5417 100644 --- a/src/views/xm/core/xmProduct/XmProductSelect.vue +++ b/src/views/xm/core/xmProduct/XmProductSelect.vue @@ -3,8 +3,7 @@ - - + 产品名称 - {{scope.row.id}} {{scope.row.productName}} + {{scope.row.productName}} + {{scope.row.finishRate}}% + + {{scope.row.pmUsername}} + + + @@ -93,6 +98,7 @@ import { listXmProductWithState } from '@/api/xm/core/xmProduct'; import { mapGetters } from 'vuex' import UsersSelect from "@/views/mdp/sys/user/UsersSelect"; + import { loadTasksToXmProductState } from '@/api/xm/core/xmProductState'; export default { @@ -272,6 +278,20 @@ this.searchXmProducts(); }, + loadTasksToXmProductState: function (row) { + this.load.edit=true; + + let params = { productId: row.id }; + loadTasksToXmProductState(params).then((res) => { + this.load.edit=false; + var tips=res.data.tips; + if(tips.isOk){ + this.pageInfo.count=true; + this.getXmProducts(); + } + this.$message({ message: tips.msg, type: tips.isOk?'success':'error' }); + }).catch( err => this.load.edit=false ); + }, },//end methods components: { UsersSelect, @@ -296,4 +316,7 @@ float:left; padding-top:5px; } +.align-right{ + float: right; +} \ No newline at end of file diff --git a/src/views/xm/core/xmProject/XmProjectInfo.vue b/src/views/xm/core/xmProject/XmProjectInfo.vue index 7c7e3574..33889112 100644 --- a/src/views/xm/core/xmProject/XmProjectInfo.vue +++ b/src/views/xm/core/xmProject/XmProjectInfo.vue @@ -1,114 +1,170 @@ - - - - - 项目概览 - - - - 迭代 - - - - 产品 - - - - 故事 - - - - - 任务 - - - - - 缺陷 - - - - - 团队 - + + + + + + + + + + {{selProject.name.substring(0,10)}} + {{selProject.name}} + 概览 + + + + 迭代 + + + + 产品 + + + + 故事 + + + + 任务 + - - - 文档 - + + + 缺陷 + - - - 阶段计划 - + + + 团队 + + + 文档 + + + 规划与里程碑 + + 阶段计划及里程碑 + + + 测试计划 + + + + + 项目监控 + + + 故事监控 + + + + 合同管理 + + + 预算 + - - - 测试计划 - + + + 费用 + - - - 故事监控 - + + + 考核 + - - - 项目监控 - + + + 日志 + - - - 预算 - + + + 环境清单 + + + + 风险 + + + 更多 + + 故事监控 + + + 项目监控 + + + 预算 + - - - 费用 - + + + 费用 + - - - 考核 - + + + 考核 + - - - 日志 - + + + 日志 + - - - 合同管理 - + + + 合同管理 + - - - 环境清单 - - - - 风险 - - - - 论坛 - - - 即聊 - - - 客服 + + + 环境清单 + + + + 风险 + + + 论坛 + + + 即聊 + + + 客服 - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -141,6 +197,7 @@ import xmTestCaseExecMng from '../xmTestCaseExec/XmTestCaseExecMng'; import xmIterationMng from '../xmIteration/XmIterationMng'; import xmProductMng from '../xmProduct/XmProductMng'; + import XmIterationComplex from '../xmIteration/XmIterationComplex.vue'; export default { @@ -163,6 +220,7 @@ }, data() { return { + platformViewVisible:false, tabPosition:'left', infotype:"项目概览", load:{list:false,edit:false}, @@ -335,6 +393,9 @@ return dateStr.substr(0,10); } }, + goBack(){ + this.$router.back() + } },//end methods components: { @@ -357,7 +418,8 @@ xmTestCaseExecMng, xmProjectGroupSelect, xmIterationMng, - xmProductMng + xmProductMng, +XmIterationComplex, //在下面添加其它组件 }, mounted() { @@ -368,17 +430,12 @@ } - \ No newline at end of file + +.align-right{ + float: right; +} +.badge { + margin-top: 7px; + padding-bottom: 10px; +} + diff --git a/src/views/xm/core/xmTask/XmTaskEdit.vue b/src/views/xm/core/xmTask/XmTaskEdit.vue index cf8b5cf7..4661b2d4 100644 --- a/src/views/xm/core/xmTask/XmTaskEdit.vue +++ b/src/views/xm/core/xmTask/XmTaskEdit.vue @@ -1,6 +1,6 @@ - - + + diff --git a/src/views/xm/core/xmTask/XmTaskMng.vue b/src/views/xm/core/xmTask/XmTaskMng.vue index 16fff0e5..ea870e79 100644 --- a/src/views/xm/core/xmTask/XmTaskMng.vue +++ b/src/views/xm/core/xmTask/XmTaskMng.vue @@ -369,9 +369,9 @@ - + - +