diff --git a/src/router/routes_xm.js b/src/router/routes_xm.js
index 47f2a426..249995d5 100644
--- a/src/router/routes_xm.js
+++ b/src/router/routes_xm.js
@@ -1,5 +1,6 @@
/* Layout */
import Layout from '../views/layout/Layout'
+import XmProjectLayout from '../views/xm/core/xmProject/index'
const _import = require('./_import_' + process.env.NODE_ENV)
export default {
@@ -14,7 +15,7 @@ export default {
icon: 'project'
},
// leaf: true,//只有一个节点
- children: [
+ children: [
{ path: 'xmProject/XmProjectAllMng', component: _import('xm/core/xmProject/XmProjectAllMng'), name: 'xmProjectAllMng', meta: { title: '项目总览',roles:["user"] }},
{ path: 'xmProject/XmProjectMng', component: _import('xm/core/xmProject/XmProjectMng'), name: 'xmProjectMng', meta: { title: '项目(我的)',roles:["user"] }},
{ path: 'xmProject/XmProjectRecycle', component: _import('xm/core/xmProject/XmProjectRecycle'), name: 'XmProjectRecycle', meta: { title: '项目回收站',roles:["user"] }},
@@ -25,18 +26,53 @@ export default {
{ path: 'xmTask/XmMyTaskCenter', component: _import('xm/core/xmTask/XmMyTaskCenter'), name: 'xmMyTaskCenter', meta: { title: '任务(我的)',roles:["user"] }},
{ path: 'xmTask/XmTaskDetailRoute', component: _import('xm/core/xmTask/XmTaskDetailRoute'), name: 'XmTaskDetailRoute', meta: { title: '任务详情',roles:["user"] },hidden:true},
+
]
- },
- {
- path: '/xm/core/xmProject/XmProjectInfoRoute',
- component: _import('xm/core/xmProject/XmProjectInfoRoute'),
- name: 'XmProjectInfoRoute',
+ },{
+ path: '/xm/core/project',
+ component: XmProjectLayout,
+ name: '项目管理',
iconCls: 'fa el-icon-menu',
meta: {
- title: '项目管理-路由跳转',
- icon: 'project',roles:["user"]
- },
- hidden:true
+ title: '项目管理',
+ icon: 'project'
+ },
+ // leaf: true,//只有一个节点
+ children: [
+ {
+ path: 'overviewComplex',
+ component: _import('xm/core/xmProject/XmProjectOverviewComplex'),
+ name: 'projectOverviewComplex',
+ iconCls: 'fa el-icon-menu',
+ meta: {
+ title: '项目-首页',
+ icon: 'project',roles:["user"]
+ },
+ hidden:true
+ },
+ {
+ path: 'productLink',
+ component: _import('xm/core/xmProduct/XmProductForLinkComplex'),
+ name: 'projectProductLink',
+ iconCls: 'fa el-icon-menu',
+ meta: {
+ title: '项目-产品',
+ icon: 'project',roles:["user"]
+ },
+ hidden:true
+ },
+ {
+ path: 'menu',
+ component: _import('xm/core/xmMenu/XmMenuMng'),
+ name: 'projectMenu',
+ iconCls: 'fa el-icon-menu',
+ meta: {
+ title: '项目-需求',
+ icon: 'project',roles:["user"]
+ },
+ hidden:true
+ },
+ ]
},
{ path: '/xm/core/testCasedbRoute', component: _import('xm/core/xmTestCasedb/XmTestCasedbRoute'), name: 'XmTestCasedbRoute', meta: { title: '测试库管理',roles:["user"] },hidden:true},
diff --git a/src/store/getters.js b/src/store/getters.js
index e6378f16..236ea338 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -21,5 +21,7 @@ const getters = {
added: state => state.permission.added,
isLoadOk:state=>state.user.isLoadOk,
noticeMsg:state=>state.noticeMsg.noticeMsg,
+ projectInfo:state=>state.projectInfo.projectInfo,
+ productInfo:state=>state.productInfo.productInfo,
}
export default getters
diff --git a/src/store/index.js b/src/store/index.js
index 582f7b79..1f025d7f 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -6,6 +6,8 @@ import permission from './modules/permission'
import tagsView from './modules/tagsView'
import user from './modules/user'
import noticeMsg from './modules/noticeMsg'
+import projectInfo from './modules/projectInfo'
+import productInfo from './modules/productInfo'
import getters from './getters'
Vue.use(Vuex)
@@ -18,6 +20,8 @@ const store = new Vuex.Store({
tagsView,
user,
noticeMsg,
+ projectInfo,
+ productInfo
},
getters
})
diff --git a/src/store/modules/productInfo.js b/src/store/modules/productInfo.js
new file mode 100644
index 00000000..3958162c
--- /dev/null
+++ b/src/store/modules/productInfo.js
@@ -0,0 +1,17 @@
+const productInfo = {
+ state: {
+ productInfo: {}
+ },
+ mutations: {
+ SET_PRODUCT: (state, productInfo) => {
+ state.productInfo=productInfo
+ }
+ },
+ actions: {
+ setProduct({ commit }, productInfo) {
+ commit('SET_PRODUCT', productInfo)
+ }
+ }
+}
+
+export default productInfo
diff --git a/src/store/modules/projectInfo.js b/src/store/modules/projectInfo.js
new file mode 100644
index 00000000..be28edd5
--- /dev/null
+++ b/src/store/modules/projectInfo.js
@@ -0,0 +1,29 @@
+
+var key='xm-project-info';
+const projectInfo = {
+ state: {
+ projectInfo: {}
+ },
+ mutations: {
+ SET_PROJECT: (state, projectInfo) => {
+ state.projectInfo=projectInfo
+ if(projectInfo && projectInfo!='null' && projectInfo!='undefined' ){
+ sessionStorage.setItem(key,JSON.stringify(projectInfo))
+ }else{
+ sessionStorage.removeItem(key)
+ }
+
+ }
+ },
+ actions: {
+ setProject({ commit }, projectInfo) {
+ commit('SET_PROJECT', projectInfo)
+ }
+ }
+}
+var projectStr=sessionStorage.getItem(key)
+if(projectStr && projectStr!='null' && projectStr!='undefined' ){
+ projectInfo.state.projectInfo=JSON.parse(projectStr)
+}
+
+export default projectInfo
diff --git a/src/views/xm/core/xmMenu/XmMenuMng.vue b/src/views/xm/core/xmMenu/XmMenuMng.vue
index 166ccf6b..3d42d322 100644
--- a/src/views/xm/core/xmMenu/XmMenuMng.vue
+++ b/src/views/xm/core/xmMenu/XmMenuMng.vue
@@ -3,7 +3,7 @@
-
+
@@ -59,7 +59,7 @@
迭代:
-
+
@@ -86,8 +86,8 @@
-
-
+
+
@@ -355,7 +355,7 @@
-
+
@@ -370,7 +370,7 @@
-
+
@@ -381,14 +381,14 @@
:visible.sync="taskMngVisible"
:with-header="false"
size="80%">
-
+
-
+
{
@@ -745,7 +745,7 @@
this.load.list = false;
}
this.load.list = true;
- if(!this.selProject){
+ if(!this.projectInfo){
listXmMenuWithState(params).then( callback ).catch( err => this.load.list = false );
}else{
listXmMenuWithPlan(params).then( callback ).catch( err => this.load.list = false );
diff --git a/src/views/xm/core/xmProduct/XmProductForLinkComplex.vue b/src/views/xm/core/xmProduct/XmProductForLinkComplex.vue
index 58febdef..3c16999d 100644
--- a/src/views/xm/core/xmProduct/XmProductForLinkComplex.vue
+++ b/src/views/xm/core/xmProduct/XmProductForLinkComplex.vue
@@ -6,7 +6,7 @@
@@ -177,7 +177,7 @@
label="配置关联的项目"
lazy
name="productProjectLink"
- v-if="xmProduct && xmProduct.id && !selProject"
+ v-if="xmProduct && xmProduct.id && !projectInfo"
>
@@ -220,7 +220,7 @@
ptype="0"
:xm-product="xmProduct"
:xm-iteration="xmIteration"
- :sel-project="selProject"
+ :sel-project="projectInfo"
>
@@ -316,7 +316,7 @@ import XmProductAdd from "./XmProductEdit"; //新增界面
export default {
computed: {
- ...mapGetters(["userInfo", "roles"]),
+ ...mapGetters(["userInfo", "roles","projectInfo"]),
calcProductPstatusStep() {
if (this.dicts["xmProductPstatus"] && this.xmProduct) {
@@ -333,7 +333,7 @@ export default {
}
},
},
- props: ["visible", "selProject", "xmIteration"],
+ props: ["visible", "xmIteration"],
watch: {
visible: function (visible) {
if (visible == true) {
diff --git a/src/views/xm/core/xmProject/XmProjectMng.vue b/src/views/xm/core/xmProject/XmProjectMng.vue
index c32065d9..ba969a2d 100644
--- a/src/views/xm/core/xmProject/XmProjectMng.vue
+++ b/src/views/xm/core/xmProject/XmProjectMng.vue
@@ -367,6 +367,8 @@
import XmProjectTplMng from './XmProjectTplMng';
import XmProductSelect from '@/views/xm/core/components/XmProductSelect';
import MdpSelectUserXm from "@/views/xm/core/components/MdpSelectUserXm/index";
+
+ import store from '@/store'
if(!Vue.component("xm-project-info")){
@@ -662,7 +664,10 @@
//进入info界面
intoInfo(row) {
this.selectProject = row;
- this.$router.push({ name:'XmProjectInfoRoute', query: {id:row.id} })
+ store.dispatch("setProject",row).then(res=>{
+ this.$router.push({ name:'projectOverviewComplex', query: {id:row.id} })
+ })
+
localStorage.setItem("xm-project-info-route",JSON.stringify(row))
//this.showInfo = true;
},
diff --git a/src/views/xm/core/xmProject/XmProjectOverviewComplex.vue b/src/views/xm/core/xmProject/XmProjectOverviewComplex.vue
index 66fc7523..1757d930 100644
--- a/src/views/xm/core/xmProject/XmProjectOverviewComplex.vue
+++ b/src/views/xm/core/xmProject/XmProjectOverviewComplex.vue
@@ -1,5 +1,120 @@
+
+
+ 常用功能快捷导航
+
+
+
+
+
+ 创建产品
+ 关联产品
+ 环境清单
+ 进入售前
+
+
+ 关联产品
+ 环境清单
+
+
+
+
+ 需求管理
+ 设为立项中
+
+
+ 需求管理
+
+
+
+
+ 签订合同
+ 创建团队
+ 创建计划
+ 预算清单
+ 项目估算
+ 项目收益
+ 设为立项中
+
+
+ 合同管理
+ 团队管理
+ 计划管理
+ 预算管理
+ 项目估算
+ 项目收益
+
+
+
+
+ 迭代管理
+ 任务管理
+ 缺陷管理
+ 每日工时
+ 每月工时
+ 费用管理
+ 效能分析
+ 暂停项目
+ 变更申请
+ 设为结项中
+
+
+ 迭代管理
+ 任务管理
+ 缺陷管理
+ 每日工时
+ 每月工时
+ 费用管理
+ 效能分析
+ 结项申请
+ 变更申请
+
+
+
+
+ 重新激活
+
+
+
+
+ 结项申请
+ 结项审批
+
+
+ 结项审批
+
+
+
+
+ 转入售后
+
+
+
+
+
+
+ 设为已完成
+
+
+
+
+ 关闭项目
+
+
+
+
+
+
+
+
+
+
+
项目概览
@@ -22,10 +137,10 @@
历史审批流
-
-
-
-
+
+
+
+
@@ -40,8 +155,10 @@
-
-
+
+
+
+
@@ -58,20 +175,34 @@ import ProcinstMng from '@/views//mdp/workflow/hi/procinst/ProcinstMng';
import { loadTasksToXmProjectState , loadTasksSettleToXmProjectState} from '@/api/xm/core/xmProjectState';
import { listXmProject} from '@/api/xm/core/xmProject';
+import { initDicts,getDefOptions,editXmProjectSomeFields } from "@/api/xm/core/xmProject";
export default {
components: { XmProjectOverview, XmProjectDetail, XmProductProjectLinkMng ,TaskMng,ProcinstMng},
computed: {
- ...mapGetters(["userInfo"]),
- },
-
- props:['selProject'],
+ ...mapGetters(["userInfo","projectInfo"]),
+ calcProjectStatusStep() {
+ if (this.dicts["projectStatus"] && this.projectInfo) {
+ var index = this.dicts["projectStatus"].findIndex((i) => {
+ if (i.id == this.projectInfo.status) {
+ return true;
+ } else {
+ return false;
+ }
+ });
+ return index + 1;
+ } else {
+ return 0;
+ }
+ },
+ },
watch:{
},
data() {
return {
showPanelName:'overview',
-
+ maxTableHeight:500,
+ dicts: getDefOptions(),
load:{calcProject:false,calcSettle:false}
};
},
@@ -85,23 +216,23 @@ export default {
},
loadTasksToXmProjectState(){
- var row=this.selProject;
+ var row=this.projectInfo;
var params={projectId:row.id}
loadTasksToXmProjectState(params).then((res) => {
this.load.calcProject=false;
var tips=res.data.tips;
- listXmProject({id:this.selProject.id}).then(res=>{
+ listXmProject({id:this.projectInfo.id}).then(res=>{
var tips = res.data.tips;
if(tips.isOk){
- var selProject=res.data.data[0]
- this.onEditFields(selProject)
+ var projectInfo=res.data.data[0]
+ this.onEditFields(projectInfo)
}
})
this.$notify({position:'bottom-left',showClose:true,message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.calcProject=false );
},
loadTasksSettleToXmProjectState(){
- var row=this.selProject;
+ var row=this.projectInfo;
var params={projectId:row.id}
loadTasksSettleToXmProjectState(params).then((res) => {
this.load.calcProject=false;
@@ -112,22 +243,67 @@ export default {
afterFlowSubmit(){
- listXmProject({id:this.selProject.id}).then(res=>{
+ listXmProject({id:this.projectInfo.id}).then(res=>{
var tips = res.data.tips;
if(tips.isOk){
- var selProject=res.data.data[0]
- this.afterEditSubmit(selProject)
+ var projectInfo=res.data.data[0]
+ this.afterEditSubmit(projectInfo)
}
})
},
onEditFields(row){
- Object.assign(this.selProject,row)
+ Object.assign(this.projectInfo,row)
this.$emit("edit-fields",row);
- }
+ },
+ goBack() {
+ localStorage.setItem("project-infotype", "项目概览");
+ this.$router.back(-1);
+ },
+ goHome(){
+ localStorage.setItem("project-infotype", "项目概览");
+ this.$router.push({path:'/'})
+ },
+
+ showCurrFlow(){
+ this.showPanelName='currFlow'
+ },
+ showHisFlow(){
+ this.showPanelName='hisFlow'
+ },
+ showDetail(){
+ this.showPanelName='detail'
+ },
+ showProjectGaiSuan(){
+ this.showPanelName='detail'
+ this.$nextTick(()=>{
+ this.$refs['detail'].$refs['projectEdit'].currTabPane='4'
+ })
+ },
+ showProjectShouYi(){
+ this.showPanelName='detail'
+ this.$nextTick(()=>{
+ this.$refs['detail'].$refs['projectEdit'].currTabPane='5'
+ })
+
+ },
+ showMenusPage(){
+ this.infotype='需求'
+ },
+ linkProduct(){
+ this.showPanelName='productProjectLink'
+ },
+ createProduct(){
+ this.infotype='产品'
+ this.$nextTick(()=>{
+ this.$refs['xmProductComplex'].addProductVisible=true
+ })
+ }
},
mounted() {
+
+ this.maxTableHeight = util.calcTableMaxHeight(this.$refs.pageBody.$el);
this.$nextTick(() => {
});
},
diff --git a/src/views/xm/core/xmProject/top-nav.vue b/src/views/xm/core/xmProject/top-nav.vue
index 7be1364f..4a5f862e 100644
--- a/src/views/xm/core/xmProject/top-nav.vue
+++ b/src/views/xm/core/xmProject/top-nav.vue
@@ -9,22 +9,23 @@
background-color="rgb(48, 65, 86)"
text-color="rgb(191, 203, 217)"
active-text-color="#409eff"
+ :router="true"
>
-
+
- 项目: {{ selProject.name.substring(0, 15) }} 项目: {{ projectInfo.name.substring(0, 15) }}
项目: {{ selProject.name }} 项目: {{ projectInfo.name }}
@@ -32,20 +33,20 @@
slot="title"
style="color: #ffd04b"
class="hidden-md-and-up"
- :title="selProject.name"
+ :title="projectInfo.name"
>
- 项目: {{ selProject.name.substring(0, 15) }}= 15"
+ > 项目: {{ projectInfo.name.substring(0, 15) }}
项目: {{ selProject.name }} 项目: {{ projectInfo.name }}
-
+
产品
-
+
需求
@@ -147,124 +148,12 @@
-
-
- 常用功能快捷导航
-
-
-
-
-
- 创建产品
- 关联产品
- 环境清单
- 进入售前
-
-
- 关联产品
- 环境清单
-
-
-
-
- 需求管理
- 设为立项中
-
-
- 需求管理
-
-
-
-
- 签订合同
- 创建团队
- 创建计划
- 预算清单
- 项目估算
- 项目收益
- 设为立项中
-
-
- 合同管理
- 团队管理
- 计划管理
- 预算管理
- 项目估算
- 项目收益
-
-
-
-
- 迭代管理
- 任务管理
- 缺陷管理
- 每日工时
- 每月工时
- 费用管理
- 效能分析
- 暂停项目
- 变更申请
- 设为结项中
-
-
- 迭代管理
- 任务管理
- 缺陷管理
- 每日工时
- 每月工时
- 费用管理
- 效能分析
- 结项申请
- 变更申请
-
-
-
-
- 重新激活
-
-
-
-
- 结项申请
- 结项审批
-
-
- 结项审批
-
-
-
-
- 转入售后
-
-
-
-
-
-
- 设为已完成
-
-
-
-
- 关闭项目
-
-
-
-
-
-
-
-
-
-
+
+ >
-
+
+ -->
-