Browse Source

增加项目变更审批流程

master
陈裕财 5 years ago
parent
commit
c246877ba7
  1. 88
      src/views/xm/core/xmProject/XmProjectEdit.vue
  2. 14
      src/views/xm/core/xmProject/XmProjectInfo.vue
  3. 130
      src/views/xm/core/xmProject/XmProjectOveriewComplex.vue
  4. 11
      src/views/xm/core/xmProject/XmProjectOverview.vue

88
src/views/xm/core/xmProject/XmProjectEdit.vue

@ -1,44 +1,35 @@
<template>
<section class="page-container page-full-height padding border">
<el-row>
<section class="page-container padding border">
<el-row class="padding-bottom">
<el-steps :active="calcProjectStatusStep" simple finish-status="success">
<el-step v-for="(i,index) in options['projectStatus']" :title="i.optionName" :key="index">
<el-row slot="title" @click.native.stop="editForm.status=i.optionValue">
{{i.optionName}}
</el-row>
</el-step>
</el-steps>
</el-row>
<el-row class="page-main page-height-70">
<!--编辑界面 XmProject xm_project-->
<div ref="editFormDiv">
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm" class="editForm">
<el-form-item label="项目名称" prop="name">
<el-input v-model="editForm.name" placeholder="项目名称" ></el-input>
</el-form-item>
<el-form-item label="项目编号" prop="code">
<el-input v-model="editForm.code" placeholder="项目编号,不可为空" ></el-input>
</el-form-item>
<el-form-item label="项目状态" prop="status">
<el-radio-group v-model="editForm.status">
<el-radio v-for="(i,index) in options['projectStatus']" :label="i.optionValue" :key="index">{{i.optionName}}</el-radio>
</el-radio-group>
<el-form :model="editForm" label-width="150px" :rules="editFormRules" ref="editForm" class="editForm">
<el-form-item label="项目编号|名称" prop="name">
<el-input v-model="editForm.code" placeholder="项目编号,不可为空" style="width:20%;" ></el-input><el-input style="width:80%;" v-model="editForm.name" placeholder="" ></el-input>
</el-form-item>
<el-form-item label="项目类型" prop="xmType">
<el-radio-group v-model="editForm.xmType">
<el-radio v-for="(i,index) in options['projectType']" :label="i.optionValue" :key="index">{{i.optionName}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="紧急程度" prop="urgent">
<el-radio-group v-model="editForm.urgent">
<el-radio v-for="(i,index) in options['urgencyLevel']" :label="i.optionValue" :key="index">{{i.optionName}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="优先程度" prop="priority">
<el-radio-group v-model="editForm.priority">
<el-radio v-for="(i,index) in options['priority']" :label="i.optionValue" :key="index">{{i.optionName}}</el-radio>
</el-radio-group>
<el-form-item label="项目属性" prop="xmType">
<el-select v-model="editForm.xmType">
<el-option v-for="(i,index) in options['projectType']" :label="i.optionName" :value="i.optionValue" :key="index"></el-option>
</el-select>
<el-select v-model="editForm.urgent">
<el-option v-for="(i,index) in options['urgencyLevel']" :label="i.optionName" :value="i.optionValue" :key="index"></el-option>
</el-select>
<el-select v-model="editForm.priority">
<el-option v-for="(i,index) in options['priority']" :label="i.optionName" :value="i.optionValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="预算控制" prop="priority">
<el-checkbox v-model="editForm.budgetCtrl" true-label="1" false-label="0" >严格控制预算</el-checkbox> ->->
</el-form-item>
<el-form-item label="项目团队" prop="groupUsername">
<el-button @click.native="showProjectGroups">团队维护</el-button>
</el-form-item>
<el-form-item label="工期及成本预估" >
<el-row>
<el-date-picker
@ -123,8 +114,10 @@
<el-form-item label="项目描述" prop="description">
<el-input type="textarea" :rows="6" v-model="editForm.description" placeholder="项目描述" ></el-input>
</el-form-item>
<el-form-item>
<el-col :span="24">
</el-form>
</div>
</el-row>
<el-row>
<el-button v-if="selProject.status=='0'" v-loading="load.edit" type="primary" @click.native="editSubmit" :disabled="load.edit==true">提交</el-button>
<el-button icon="el-icon-watch" type="danger" @click="handleCommand({type:'sendToProcessApprova',data:editForm,bizKey:'xm_project_baseinfo_change_approva'})">基本信息修改申请</el-button>
<el-button icon="el-icon-watch" type="danger" @click="handleCommand({type:'sendToProcessApprova',data:editForm,bizKey:'xm_project_delay_approva'})">延期申请</el-button>
@ -134,17 +127,6 @@
<el-button icon="el-icon-video-pause" type="danger" @click="handleCommand({type:'sendToProcessApprova',data:editForm,bizKey:'xm_project_pause_approva'})">项目暂停申请</el-button>
<el-button icon="el-icon-video-play" type="primary" @click="handleCommand({type:'sendToProcessApprova',data:editForm,bizKey:'xm_project_restart_approva'})">项目重新启动申请</el-button>
</el-col>
</el-form-item>
</el-form>
</div>
<el-drawer
append-to-body
title="项目分组"
:visible.sync="groupSelectVisible"
width="80%">
<xm-project-group-formwork :sel-groups="xmProjectGroups" @select-confirm="onGroupSelected"></xm-project-group-formwork>
</el-drawer>
</el-row>
</section>
</template>
@ -263,6 +245,20 @@
totalReceivables:function(){
return this.editForm.totalReceivables
},
calcProjectStatusStep(){
if(this.options['projectStatus'] && this.editForm){
var index=this.options['projectStatus'].findIndex(i=>{
if(i.optionValue==this.editForm.status){
return true;
}else{
return false;
}
})
return index+1;
}else{
return 0;
}
}
},
props:['selProject','visible'],
watch: {

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

@ -140,10 +140,8 @@
</el-menu-item>
</el-submenu>
</el-menu>
<xm-project-overview v-if="infotype=='项目概览'" :sel-project="selProject"></xm-project-overview>
<!--
<xm-detail v-if="infotype=='项目概览'" :sel-project="selProject" @submit="afterEditSubmit"></xm-detail>
-->
<xm-project-overiew-complex v-if="infotype=='项目概览'" :sel-project="selProject"></xm-project-overiew-complex>
<xm-iteration-complex v-if="infotype=='迭代'" ref="xmIterationMng" :sel-project="selProject" ></xm-iteration-complex>
<xm-product-mng v-if="infotype=='产品'" ref="xmProductMng" :sel-project="selProject" ></xm-product-mng>
<xm-menu-mng v-if="infotype=='用户故事'" :sel-project="selProject"></xm-menu-mng>
@ -196,10 +194,9 @@
import xmMenuWithPlan from '../xmMenu/XmMenuWithPlan';
import xmProjectStateMng from '../xmProjectState/XmProjectStateMng';
import xmTestCaseExecMng from '../xmTestCaseExec/XmTestCaseExecMng';
import xmIterationMng from '../xmIteration/XmIterationMng';
import xmProductMng from '../xmProduct/XmProductMng';
import XmIterationComplex from '../xmIteration/XmIterationComplex.vue';
import XmProjectOverview from "./XmProjectOverview";
import XmProjectOveriewComplex from './XmProjectOveriewComplex.vue';
export default {
@ -401,7 +398,6 @@
},//end methods
components: {
XmProjectOverview,
xmTaskMng,
xmProjectPhaseMng,
xmGroupMng,
@ -420,9 +416,9 @@
xmProjectStateMng,
xmTestCaseExecMng,
xmProjectGroupSelect,
xmIterationMng,
xmProductMng,
XmIterationComplex,
xmProductMng,
XmProjectOveriewComplex,
//
},
mounted() {

130
src/views/xm/core/xmProject/XmProjectOveriewComplex.vue

@ -0,0 +1,130 @@
<template>
<section class="page-container page-height-90 padding-left padding-right">
<el-menu mode="horizontal" default-active="overiew" @select="onMenuToolBarSelect">
<el-menu-item index="overiew">
<span slot="title">项目概览</span>
</el-menu-item>
<el-menu-item index="detail">
<span slot="title">项目详情</span>
</el-menu-item>
<el-submenu index="project-change">
<template slot="title">
<span slot="title">项目变更</span>
</template>
<el-menu-item index="project-change-base-info">
<span slot="title">基础信息修改</span>
</el-menu-item>
<el-menu-item index="project-change-start">
<span slot="title">立项申请</span>
</el-menu-item>
<el-menu-item index="project-change-budget">
<span slot="title">预算+-</span>
</el-menu-item>
<el-menu-item index="project-change-cost">
<span slot="title">成本+-</span>
</el-menu-item>
<el-menu-item index="project-change-collection">
<span slot="title">收款</span>
</el-menu-item>
<el-menu-item index="project-change-conclusion">
<span slot="title">结项申请</span>
</el-menu-item>
<el-menu-item index="project-change-suspend">
<span slot="title">暂停申请</span>
</el-menu-item>
<el-menu-item index="project-change-activation">
<span slot="title">激活申请</span>
</el-menu-item>
<el-menu-item index="project-change-to-after-sales">
<span slot="title">转售后申请</span>
</el-menu-item>
<el-menu-item index="project-change-new-pm">
<span slot="title">项目经理变更申请</span>
</el-menu-item>
<el-menu-item index="project-change-new-leader">
<span slot="title">组长变更申请</span>
</el-menu-item>
</el-submenu>
<el-submenu index="menu-change">
<template slot="title">
<span slot="title">需求变更</span>
</template>
<el-menu-item index="menu-change-review">
<span slot="title">需求评审</span>
</el-menu-item>
<el-menu-item index="menu-change-border-review">
<span slot="title">需求边界异动</span>
</el-menu-item>
</el-submenu>
<el-submenu index="iteration-change">
<template slot="title">
<span slot="title">迭代变更</span>
</template>
<el-menu-item index="menu-change-review">
<span slot="title">迭代计划评审</span>
</el-menu-item>
<el-menu-item index="menu-change-border-review">
<span slot="title">迭代上线申请</span>
</el-menu-item>
</el-submenu>
<el-submenu index="phase-change">
<template slot="title">
<span slot="title">阶段计划变更</span>
</template>
<el-menu-item index="phase-change-review">
<span slot="title">计划评审</span>
</el-menu-item>
<el-menu-item index="phase-change-border-review">
<span slot="title">预算变更</span>
</el-menu-item>
</el-submenu>
</el-menu>
<xm-project-overview v-if="showPanelName=='overiew'" :sel-project="selProject"></xm-project-overview>
<xm-project-detail v-if="showPanelName=='detail'" :sel-project="selProject"></xm-project-detail>
</section>
</template>
<script>
import util from "@/common/js/util"; //
//import Sticky from "@/components/Sticky"; // header
import { mapGetters } from "vuex";
import { listXmProjectState } from '@/api/xm/core/xmProjectState';
import XmProjectOverview from './XmProjectOverview.vue';
import XmProjectDetail from './XmProjectDetail.vue';
export default {
components: { XmProjectOverview, XmProjectDetail },
computed: {
...mapGetters(["userInfo"]),
},
props:['selProject'],
watch:{
},
data() {
return {
showPanelName:'overiew'
};
},
methods:{
onMenuToolBarSelect(menuIndex){
this.showPanelName=menuIndex;
}
},
mounted() {
this.$nextTick(() => {
});
},
};
</script>
<style scoped lang="scss">
</style>

11
src/views/xm/core/xmProject/XmProjectOverview.vue

@ -1,11 +1,6 @@
<template>
<section class="page-container padding">
<el-row class="page-header page-height-10">
<el-col :xs="22" :sm="22" :md="23" :lg="23" :xl="23">
<span >项目总览</span>
</el-col>
</el-row>
<el-row class="page-main page-height-75" style="overflow-x: hidden;">
<section class="page-container page-height-90">
<el-row class="page-main page-height-75 padding" style="overflow-x: hidden;">
<el-row :gutter="10">
<el-col :span="8" >
<el-card class="box-card" style="padding:0px ;height:425px">
@ -253,7 +248,7 @@ export default {
};
this.load.list = true;
listXmProjectState(params).then((res) => {
debugger;
let tips=res.data.tips;
if(tips.isOk){
this.xmProjectState = res.data.data;

Loading…
Cancel
Save