Browse Source

优化

master
陈裕财 4 years ago
parent
commit
202f326400
  1. 12
      src/api/xm/core/xmPhaseMenu.js
  2. 53
      src/api/xm/core/xmProductPhase.js
  3. 130
      src/views/xm/core/xmIteration/XmIterationInfo.vue
  4. 21
      src/views/xm/core/xmMenu/XmMenuMng.vue
  5. 6
      src/views/xm/core/xmProduct/XmProductInfo.vue
  6. 6
      src/views/xm/core/xmProduct/XmProductSelect.vue
  7. 12
      src/views/xm/core/xmProjectPhase/XmProjectPhaseAdd.vue
  8. 7
      src/views/xm/core/xmProjectPhase/XmProjectPhaseEdit.vue
  9. 1304
      src/views/xm/core/xmProjectPhase/XmProjectPhaseForProduct.vue
  10. 2
      src/views/xm/core/xmProjectTemplate/XmProjectTemplateList.vue

12
src/api/xm/core/xmPhaseMenu.js

@ -0,0 +1,12 @@
import axios from '@/utils/request'
import config from '@/common/config'
let base = config.getCoreBasePath();
export const batchAddXmPhaseMenu = params => { return axios.post(`${base}/xm/core/xmPhaseMenu/batchAdd`, params); };
export const batchDelXmPhaseMenu = params => { return axios.post(`${base}/xm/core/xmPhaseMenu/batchDel`, params); };

53
src/api/xm/core/xmProductPhase.js

@ -0,0 +1,53 @@
import axios from '@/utils/request'
import config from '@/common/config'
let base = config.getCoreBasePath();
/**
* xm_project_phase
*1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉
*2 查询新增修改的参数格式 params={id:'阶段主键 主键',phaseName:'阶段名称',remark:'备注',parentPhaseId:'上级阶段编号',branchId:'机构编号',projectId:'当前项目编号',beginDate:'开始时间',endDate:'结束时间',planWorkingHours:'工时',planWorkingStaffNu:'投入人员数',ctime:'创建时间',totalBudgetNouser:'非人力成本总预算',totalBudgetInnerUser:'内部人力成本总预算',totalBudgetOutUser:'外购人力成本总预算',projectBaselineId:'项目级基线',bizProcInstId:'当前流程实例编号',bizFlowState:'当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除'}
**/
//普通查询 条件之间and关系
export const listXmProductPhase = params => { return axios.get(`${base}/xm/core/xmProductPhase/list`, { params: params }); };
//模糊查询xm_project_phase 条件之间or关系
//export const listXmProductPhaseKey = params => { return axios.get(`${base}/xm/core/xmProductPhase/listKey`, { params: params }); };
//删除一条xm_project_phase params={id:'阶段主键 主键'}
export const delXmProductPhase = params => { return axios.post(`${base}/xm/core/xmProductPhase/del`,params); };
//批量删除xm_project_phase params=[{id:'阶段主键 主键'}]
export const batchDelXmProductPhase = params => { return axios.post(`${base}/xm/core/xmProductPhase/batchDel`, params); };
//修改一条xm_project_phase记录
export const editXmProductPhase = params => { return axios.post(`${base}/xm/core/xmProductPhase/edit`, params); };
//新增一条xm_project_phase
export const addXmProductPhase = params => { return axios.post(`${base}/xm/core/xmProductPhase/add`, params); };
//批量从模板导入到项目 params=[{id:'阶段主键 主键'}]
export const batchImportFromTemplate = params => { return axios.post(`${base}/xm/core/xmProductPhase/batchImportFromTemplate`, params); };
//批量从模板导入到项目 params=[{id:'阶段主键 主键'}]
export const batchSaveBudget = params => { return axios.post(`${base}/xm/core/xmProductPhase/batchSaveBudget`, params); };
//批量从模板导入到项目 params=[{id:'阶段主键 主键'}]
export const calcSomePhaseActDataFromTasks = params => { return axios.post(`${base}/xm/core/xmProductPhase/calcSomePhaseActDataFromTasks`, params); };
export const loaMenusToXmProductPhase = params => { return axios.post(`${base}/xm/core/xmProductPhase/loaMenusToXmProductPhase`, params); };
//修改负责人
export const setPhaseMngUser = params => { return axios.post(`${base}/xm/core/xmProductPhase/setPhaseMngUser`, params); };
export const calcKeyPaths = params => { return axios.post(`${base}/xm/core/xmProductPhase/calcKeyPaths`, params); };
export const selectTotalProductAndPhaseBudgetCost = params => { return axios.post(`${base}/xm/core/xmProductPhase/selectTotalProductAndPhaseBudgetCost`, params); };

130
src/views/xm/core/xmIteration/XmIterationInfo.vue

@ -26,121 +26,11 @@
<span slot="title"><i class="el-icon-document"></i>需求</span>
</el-menu-item>
<el-menu-item index="任务">
<span slot="title"><i class="el-icon-s-operation"></i>任务</span>
<span slot="title"><i class="el-icon-s-operation"></i>任务</span>
</el-menu-item>
<el-menu-item index="缺陷">
<span slot="title"><i class="el-icon-question"></i>缺陷</span>
</el-menu-item>
<el-menu-item index="团队">
<span slot="title"><i class="el-icon-user-solid"></i>团队</span>
</el-menu-item>
<el-submenu index="规划" class="hidden-sm-and-down">
<template slot="title">规划</template>
<el-menu-item index="计划及里程碑">
<span slot="title"><i class="el-icon-odometer"></i>计划及里程碑</span>
</el-menu-item>
<el-menu-item index="测试计划">
<span slot="title"><i class="el-icon-odometer"></i>测试计划</span>
</el-menu-item>
</el-submenu >
<el-submenu index="财务" class="hidden-sm-and-down">
<template slot="title">财务</template>
<el-menu-item index="合同管理">
<span slot="title"><i class="el-icon-s-data"></i>合同管理</span>
</el-menu-item>
<el-menu-item index="预算">
<span slot="title"><i class="el-icon-coin"></i>预算</span>
</el-menu-item>
<el-menu-item index="费用">
<span slot="title"><i class="el-icon-coin"></i>费用</span>
</el-menu-item>
</el-submenu >
<el-submenu index="监控" class="hidden-sm-and-down">
<template slot="title">监控</template>
<el-menu-item index="考核">
<span slot="title"><i class="el-icon-view"></i>考核</span>
</el-menu-item>
<el-menu-item index="项目监控">
<span slot="title"><i class="el-icon-video-camera"></i>项目监控</span>
</el-menu-item>
<el-menu-item index="需求监控">
<span slot="title"><i class="el-icon-video-camera"></i>需求监控</span>
</el-menu-item>
<el-menu-item index="风险">
<span slot="title"><i class="el-icon-question"></i>风险</span>
</el-menu-item>
</el-submenu >
<el-submenu index="知识" class="hidden-md-and-down">
<template slot="title">知识</template>
<el-menu-item index="文档" >
<span slot="title"><i class="el-icon-document"></i>文档</span>
</el-menu-item>
<el-menu-item index="环境清单" >
<span slot="title"><i class="el-icon-setting"></i>环境清单</span>
</el-menu-item>
<el-menu-item index="日志">
<span slot="title"><i class="el-icon-edit-outline"></i>日志</span>
</el-menu-item>
</el-submenu >
<el-submenu index="更多">
<template slot="title">更多 </template>
<el-menu-item index="需求监控" >
<span slot="title"><i class="el-icon-video-camera"></i>需求监控</span>
</el-menu-item>
<el-menu-item index="项目监控">
<span slot="title"><i class="el-icon-video-camera"></i>项目监控</span>
</el-menu-item>
<el-menu-item index="合同管理">
<span slot="title"><i class="el-icon-s-data"></i>合同管理</span>
</el-menu-item>
<el-menu-item index="预算">
<span slot="title"><i class="el-icon-coin"></i>预算</span>
</el-menu-item>
<el-menu-item index="费用">
<span slot="title"><i class="el-icon-coin"></i>费用</span>
</el-menu-item>
<el-menu-item index="考核">
<span slot="title"><i class="el-icon-view"></i>考核</span>
</el-menu-item>
<el-menu-item index="日志">
<span slot="title"><i class="el-icon-edit-outline"></i>日志</span>
</el-menu-item>
<el-menu-item index="合同管理">
<span slot="title"><i class="el-icon-s-data"></i>合同管理</span>
</el-menu-item>
<el-menu-item index="环境清单">
<span slot="title"><i class="el-icon-setting"></i>环境清单</span>
</el-menu-item>
<el-menu-item index="风险">
<span slot="title"><i class="el-icon-question"></i>风险</span>
</el-menu-item>
<el-menu-item index="论坛">
<span slot="title"><i class="el-icon-date"></i>论坛</span>
</el-menu-item>
<el-menu-item index="即聊">
<span slot="title"><i class="el-icon-date"></i>即聊</span>
</el-menu-item>
<el-menu-item index="客服">
<span slot="title"><i class="el-icon-date"></i>客服</span>
</el-menu-item>
</el-submenu>
<span slot="title"><i class="el-icon-question"></i>缺陷</span>
</el-menu-item>
</el-menu>
<xm-iteration-overview-complex v-if="infotype=='迭代概览'" :xm-iteration="xmIteration"></xm-iteration-overview-complex>
@ -150,19 +40,7 @@
<xm-task-mng v-if="infotype=='任务'" ref="xmTaskMng" :xm-iteration="xmIteration" ></xm-task-mng>
<xm-question v-if="infotype=='缺陷'" :qtype="'bug'" :xm-iteration='xmIteration' ref="xmQuestion"></xm-question>
<xm-group-mng v-if="infotype=='团队'" :xm-iteration="xmIteration"></xm-group-mng>
<xm-file-mng v-if="infotype=='文档'" :xm-iteration="xmIteration"></xm-file-mng>
<xm-project-phase-mng v-if="infotype=='计划及里程碑'" ref="xmProjectPhaseMng" :xm-iteration="xmIteration" ></xm-project-phase-mng>
<xm-test-case-exec-mng v-if="infotype=='测试计划'" :visible="infotype=='测试计划'" :xm-iteration='xmIteration' ref="xmQuestion"></xm-test-case-exec-mng>
<xm-menu-with-plan v-if="infotype=='需求监控'" ref="xmMenuWithPlan" :xm-iteration="xmIteration"></xm-menu-with-plan>
<xm-project-state-mng v-if="infotype=='项目监控'" :xm-iteration="xmIteration"></xm-project-state-mng>
<xm-budget v-if="infotype=='预算'" :xm-iteration="xmIteration"></xm-budget>
<xm-cost v-if="infotype=='费用'" :xm-iteration="xmIteration"></xm-cost>
<xm-project-kpi v-if="infotype=='考核'" :xm-iteration="xmIteration"></xm-project-kpi>
<xm-record v-if="infotype=='日志'" :visible="infotype=='日志'" :xm-iteration="xmIteration"></xm-record>
<xm-contract v-if="infotype=='合同管理'" :xm-iteration="xmIteration"></xm-contract>
<xm-env-list v-if="infotype=='环境清单'" :xm-iteration="xmIteration"></xm-env-list>
<xm-question v-if="infotype=='风险'" :qtype="'risk'" :xm-iteration='xmIteration' ref="xmRisk"></xm-question>
<el-drawer title="选中团队成员" :visible.sync="groupUserVisible" size="50%" append-to-body :close-on-click-modal="false">
<el-drawer title="选中团队成员" :visible.sync="groupUserVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-project-group-select :xm-iteration="xmIteration" :visible="groupUserVisible" is-select-multi-user="1" @user-confirm="onUserSelected"></xm-project-group-select>
</el-drawer>
</el-row>

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

@ -119,12 +119,29 @@
</el-table-column>
<el-table-column prop="iterationName" label="迭代" width="80" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="taskCnt" label="任务数" width="80" show-overflow-tooltip>
<template slot="header">
<el-tooltip content="已完成 / 总数 注意:统计包括下级数据"><div>任务数<i class="el-icon-bangzhu"></i></div></el-tooltip>
</template>
<template slot-scope="scope">
<div>{{scope.row.finishTaskCnt}}/{{scope.row.taskCnt}}</div>
</template>
</el-table-column>
<el-table-column prop="finishRate" label="进度" width="80" show-overflow-tooltip>
<template slot-scope="scope">
<span v-if="scope.row.finishRate"><el-tag :type="scope.row.finishRate>=100?'success':'warning'">{{scope.row.finishRate}}%</el-tag></span>
</template>
</el-table-column>
</el-table-column>
<el-table-column prop="bugs" label="缺陷" width="100" show-overflow-tooltip>
<template slot="header">
<el-tooltip content="已关闭缺陷数 / 总缺陷数 注意:统计包括下级数据"><div>缺陷<i class="el-icon-bangzhu"></i></div></el-tooltip>
</template>
<template slot-scope="scope">
{{scope.row.closedBugs}}/{{scope.row.bugCnt}}
</template>
</el-table-column>
<el-table-column prop="tagNames" label="标签" width="100" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="ctime" label="创建日期" width="100" show-overflow-tooltip>

6
src/views/xm/core/xmProduct/XmProductInfo.vue

@ -146,7 +146,7 @@
<xm-question v-if="infotype=='缺陷'" :qtype="'bug'" :xm-product='xmProduct' ref="xmQuestion"></xm-question>
<xm-group-mng v-if="infotype=='团队'" :xm-product="xmProduct"></xm-group-mng>
<xm-file-mng v-if="infotype=='文档'" :xm-product="xmProduct"></xm-file-mng>
<xm-project-phase-mng v-if="infotype=='计划及里程碑'" ref="xmProjectPhaseMng" :xm-product="xmProduct" ></xm-project-phase-mng>
<xm-project-phase-for-product v-if="infotype=='计划及里程碑'" ref="xmProjectPhaseMng" :xm-product="xmProduct" ></xm-project-phase-for-product>
<xm-test-case-exec-mng v-if="infotype=='测试计划'" :visible="infotype=='测试计划'" :xm-product='xmProduct' ref="xmQuestion"></xm-test-case-exec-mng>
<xm-menu-with-plan v-if="infotype=='需求监控'" ref="xmMenuWithPlan" :xm-product="xmProduct"></xm-menu-with-plan>
<xm-project-state-mng v-if="infotype=='项目监控'" :xm-product="xmProduct"></xm-project-state-mng>
@ -188,7 +188,7 @@
import xmBudget from '../xmProject/XmProjectBudgetCost';
import xmContract from '../xmProjectContract/XmProjectContractMng';
import xmEnvList from '../xmProjectEnvList/XmProjectEnvListMng';
import xmProjectPhaseMng from '../xmProjectPhase/XmProjectPhaseMng';
import xmProjectPhaseForProduct from '../xmProjectPhase/xmProjectPhaseForProduct';
import xmMenuMng from '../xmMenu/XmMenuMng';
import xmMenuWithPlan from '../xmMenu/XmMenuWithPlan';
import xmProjectStateMng from '../xmProjectState/XmProjectStateMng';
@ -403,7 +403,7 @@ import XmProjectForLink from '../xmProject/XmProjectForLink.vue';
},//end methods
components: {
xmTaskMng,
xmProjectPhaseMng,
xmProjectPhaseForProduct,
xmGroupMng,
xmExchange,
xmQuestion,

6
src/views/xm/core/xmProduct/XmProductSelect.vue

@ -5,8 +5,8 @@
<el-table ref="table" :height="maxTableHeight" :data="xmProducts" :row-class-name="tableRowClassName" @sort-change="sortChange" :highlight-current-row="true" current-row-key="id" v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column label="" type="index" width="50" > </el-table-column>
<el-table-column v-if="isSelectProduct==true" label="产品代号" prop="code" min-width="100" > </el-table-column>
<el-table-column prop="productName" label="产品名称" min-width="150" >
<el-table-column v-if="isSelectProduct==true" label="产品代号" prop="code" min-width="100" show-overflow-tooltip > </el-table-column>
<el-table-column prop="productName" label="产品名称" show-overflow-tooltip>
<template slot="header" slot-scope="scope">
产品名称
<el-popover
@ -66,7 +66,7 @@
<el-button type="primary" @click="searchXmProducts" >查询</el-button>
</el-col>
</el-row>
<el-button type="text" slot="reference" icon="el-icon-more">更多条件</el-button>
<el-button type="text" slot="reference">更多条件</el-button>
</el-popover>
</template>
<template slot-scope="scope">

12
src/views/xm/core/xmProjectPhase/XmProjectPhaseAdd.vue

@ -8,9 +8,12 @@
<el-form-item label="类型" prop="ntype">
<el-radio v-model="addForm.ntype" label="1">计划集</el-radio>
<el-radio v-model="addForm.ntype" label="0">计划</el-radio>
<font color="red">
<font color="red" v-if="addForm.phaseClass=='0'">
<br>计划集只负责汇总数据类似文件夹功能计划集下可建立子计划集子计划但不能关联任务;<br>计划下不能建立子计划集也不能建立子计划但可以关联任务
</font>
<font color="red" v-else-if="addForm.phaseClass=='1'">
<br>计划集只负责汇总数据类似文件夹功能计划集下可建立子计划集子计划但不能关联需求;<br>计划下不能建立子计划集也不能建立子计划但可以关联需求
</font>
</el-form-item>
<el-form-item label="计划名称" prop="phaseName">
<el-input v-model="addForm.phaseName" placeholder="计划名称" ></el-input>
@ -112,6 +115,7 @@
import util from '@/common/js/util';//
import { listOption } from '@/api/mdp/meta/itemOption';//
import { addXmProjectPhase } from '@/api/xm/core/xmProjectPhase';
import { addXmProductPhase } from '@/api/xm/core/xmProductPhase';
import { mapGetters } from 'vuex'
export default {
@ -305,7 +309,11 @@
}else{
params.parentPhaseId=this.parentProjectPhase.id
}
addXmProjectPhase(params).then((res) => {
var func=addXmProjectPhase;
if(addForm.phaseClass=='1'){
func=addXmProductPhase
}
func(params).then((res) => {
this.load.add=false
var tips=res.data.tips;
if(tips.isOk){

7
src/views/xm/core/xmProjectPhase/XmProjectPhaseEdit.vue

@ -126,6 +126,7 @@
import util from '@/common/js/util';//
import { listOption } from '@/api/mdp/meta/itemOption';//
import { editXmProjectPhase } from '@/api/xm/core/xmProjectPhase';
import { editXmProductPhase } from '@/api/xm/core/xmProductPhase';
import { mapGetters } from 'vuex'
import XmProjectPhaseOverview from './XmProjectPhaseOverview';//
@ -319,7 +320,11 @@
params.phaseBudgetStaffNu= this.parseFloat2(params.phaseBudgetOutUserCnt) + this.parseFloat2(params.phaseBudgetInnerUserCnt)
}
editXmProjectPhase(params).then((res) => {
var func=editXmProjectPhase
if(this.editForm.phaseClass=="1"){
func=editXmProductPhase
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){

1304
src/views/xm/core/xmProjectPhase/XmProjectPhaseForProduct.vue
File diff suppressed because it is too large
View File

2
src/views/xm/core/xmProjectTemplate/XmProjectTemplateList.vue

@ -94,7 +94,7 @@
id:'',code:'',name:'',xmType:'',startTime:'',endTime:'',urgent:'',priority:'',description:'',createUserid:'',createUsername:'',createTime:'',assess:'',assessRemarks:'',status:'',branchId:'',planTotalCost:'',bizProcInstId:'',bizFlowState:'',planNouserAt:'',planInnerUserAt:'',planOutUserAt:'',locked:'',baseTime:'',baseRemark:'',baselineId:'',planWorkload:'',totalReceivables:'',budgetMarginRate:'',contractAmt:'',planInnerUserPrice:'',planOutUserPrice:'',planOutUserCnt:'',planInnerUserCnt:'',planWorkingHours:'',taxRate:'',planInnerUserWorkload:'',planOutUserWorkload:'',productId:'',productName:'',templateId:'',tcuserid:'',tcusername:'',tremark:'',tctime:'',tcbranchId:'',shareScope:''
},
projectTemplateInfoVisible:false,
maxTableHeight:false,
maxTableHeight:300,
/**begin 自定义属性请在下面加 请加备注**/
/**end 自定义属性请在上面加 请加备注**/

Loading…
Cancel
Save