Browse Source

优化

master
陈裕财 4 years ago
parent
commit
28217d328b
  1. 10
      src/api/xm/core/xmBranchState.js
  2. 30
      src/api/xm/core/xmBranchStateHis.js
  3. 11
      src/api/xm/core/xmIterationState.js
  4. 30
      src/api/xm/core/xmIterationStateHis.js
  5. 10
      src/api/xm/core/xmProductState.js
  6. 30
      src/api/xm/core/xmProductStateHis.js
  7. 9
      src/api/xm/core/xmProjectState.js
  8. 14
      src/api/xm/core/xmProjectStateHis.js
  9. 163
      src/views/xm/core/xmBranchState/XmBranchStateEdit.vue
  10. 276
      src/views/xm/core/xmBranchState/XmBranchStateMng.vue
  11. 309
      src/views/xm/core/xmBranchStateHis/XmBranchStateHisEdit.vue
  12. 305
      src/views/xm/core/xmBranchStateHis/XmBranchStateHisMng.vue
  13. 156
      src/views/xm/core/xmIterationState/XmIterationStateEdit.vue
  14. 194
      src/views/xm/core/xmIterationState/XmIterationStateMng.vue
  15. 213
      src/views/xm/core/xmIterationStateHis/XmIterationStateHisEdit.vue
  16. 273
      src/views/xm/core/xmIterationStateHis/XmIterationStateHisMng.vue
  17. 145
      src/views/xm/core/xmProductState/XmProductStateEdit.vue
  18. 204
      src/views/xm/core/xmProductState/XmProductStateMng.vue
  19. 249
      src/views/xm/core/xmProductStateHis/XmProductStateHisEdit.vue
  20. 285
      src/views/xm/core/xmProductStateHis/XmProductStateHisMng.vue
  21. 179
      src/views/xm/core/xmProjectState/XmProjectStateEdit.vue
  22. 408
      src/views/xm/core/xmProjectState/XmProjectStateMng.vue
  23. 240
      src/views/xm/core/xmProjectStateHis/XmProjectStateHisEdit.vue
  24. 246
      src/views/xm/core/xmProjectStateHis/XmProjectStateHisMng.vue

10
src/api/xm/core/xmBranchState.js

@ -8,7 +8,7 @@ let base = config.getCoreBasePath();
/** /**
* 机构内所有项目指标汇总 * 机构内所有项目指标汇总
*1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉 *1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉
*2 查询新增修改的参数格式 params={id:'主键 主键',bizDate:'统计日期yyyy-mm-dd类型',totalFileCnt:'文件数据',totalBugCnt:'bug数目',totalTaskCnt:'任务数',totalBudgetNouserAmount:'项目总非人力预算-来自项目表',totalStaffCnt:'总参与人数',calcTime:'统计执行日期',calcStatus:'0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖',totalCostNouserAmount:'项目总非人力成本',totalClosedBugCnt:'已关闭bug总数',totalResolvedBugCnt:'已解决bug总数',totalCompleteTaskCnt:'已完成任务总数-来自任务表',totalPhaseCnt:'项目阶段计划数',totalCompletePhaseCnt:'项目阶段计划已完成数',totalNeedPayAmount:'待付款总金额',totalFinishPayAmount:'已付款总金额',totalNeedColAmount:'待收款总金额',totalFinishColAmount:'已收款总金额',totalCostUserAmount:'项目总人力成本',totalBudgetIuserAmount:'项目总内部人力预算-来自项目表',totalPlanWorkload:'项目总预算工作量-来自项目表',totalRiskCnt:'项目风险总数',totalCompleteRiskCnt:'已完成风险总数',branchId:'机构编号',branchName:'机构名称',totalBudgetOuserAmount:'项目总外购人力预算-来自项目表',totalCompleteWorkload:'已完成工作量-来自计划中实际完成工作量',totalCostIuserAmount:'项目总内部人力成本金额',totalCostOuserAmount:'项目总外购人力成本金额',totalProgress:'项目进度0~100之间,来自任务表',totalActiveBugCnt:'激活的bug总数',totalConfirmedBugCnt:'已解决bug总数',projectStatus:'项目状态,0-初始,1-立项中,2-执行中,3-已结项,4-暂停',totalActWorkload:'实际总工作量,来自任务表',totalActOutWorkload:'实际外购总工作量,来自任务表',totalActInnerWorkload:'实际内部总工作量,来自任务表',totalTaskBudgetCostAt:'已经分配到任务的总预算',totalTaskOutCnt:'外购任务数,来自任务表',totalNeedPayCnt:'待付款笔数',totalFinishPayCnt:'完成付款总比数',totalFinishPayUserCnt:'已付款总人数',totalNeedPayUserCnt:'待付款总人数',totalPlanIuserWorkload:'内部人力总工作量-应该大于或等于阶段计划内部人力总成本',totalPlanOuserWorkload:'外购人力总工作量-应该大于或等于阶段计划外购人力总成本',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',iterationCnt:'迭代数',productCnt:'产品数',menuCnt:'需求数'}
*2 查询新增修改的参数格式 params={branchId:'机构编号 主键',bizDate:'统计日期yyyy-mm-dd类型',totalFileCnt:'文件数据',totalBugCnt:'bug数目',totalTaskCnt:'任务数',totalBudgetNouserAmount:'项目总非人力预算-来自项目表',totalStaffCnt:'总参与人数',calcTime:'统计执行日期',calcStatus:'0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖',totalCostNouserAmount:'项目总非人力成本',totalClosedBugCnt:'已关闭bug总数',totalResolvedBugCnt:'已解决bug总数',totalCompleteTaskCnt:'已完成任务总数-来自任务表',totalPhaseCnt:'项目阶段计划数',totalCompletePhaseCnt:'项目阶段计划已完成数',totalNeedPayAmount:'待付款总金额',totalFinishPayAmount:'已付款总金额',totalNeedColAmount:'待收款总金额',totalFinishColAmount:'已收款总金额',totalCostUserAmount:'项目总人力成本',totalBudgetIuserAmount:'项目总内部人力预算-来自项目表',totalPlanWorkload:'项目总预算工作量-来自项目表',totalRiskCnt:'项目风险总数',totalCompleteRiskCnt:'已完成风险总数',branchName:'机构名称',totalBudgetOuserAmount:'项目总外购人力预算-来自项目表',totalCompleteWorkload:'已完成工作量-来自计划中实际完成工作量',totalCostIuserAmount:'项目总内部人力成本金额',totalCostOuserAmount:'项目总外购人力成本金额',totalProgress:'项目进度0~100之间,来自任务表',totalActiveBugCnt:'激活的bug总数',totalConfirmedBugCnt:'已解决bug总数',projectStatus:'项目状态,0-初始,1-立项中,2-执行中,3-已结项,4-暂停',totalActWorkload:'实际总工作量,来自任务表',totalActOutWorkload:'实际外购总工作量,来自任务表',totalActInnerWorkload:'实际内部总工作量,来自任务表',totalTaskBudgetCostAt:'已经分配到任务的总预算',totalTaskOutCnt:'外购任务数,来自任务表',totalNeedPayCnt:'待付款笔数',totalFinishPayCnt:'完成付款总比数',totalFinishPayUserCnt:'已付款总人数',totalNeedPayUserCnt:'待付款总人数',totalPlanIuserWorkload:'内部人力总工作量-应该大于或等于阶段计划内部人力总成本',totalPlanOuserWorkload:'外购人力总工作量-应该大于或等于阶段计划外购人力总成本',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',iterationCnt:'迭代数',productCnt:'产品数',menuCnt:'故事数',projectCnt:'项目数量',productBudgetWorkload:'产品总工时',productActWorkload:'产品实际完成总工作量',estimateWorkload:'预估完成工作量',execTaskCnt:'执行中任务数=任务表开始日期小于当前日期,进度<100的任务',toStartTaskCnt:'待开始的任务数=任务表中开始日期大于当前日期的任务数',execMenuCnt:'执行中需求=需求表中开始日期小于小于当前日期,进度<100的需求',toStartMenuCnt:'待开始需求数=需求表中开始日期大于当前日期的需求数',minStartTime:'最早开始日期',maxEndTime:'最晚结束时间'}
**/ **/
//普通查询 条件之间and关系 //普通查询 条件之间and关系
@ -17,10 +17,10 @@ export const listXmBranchState = params => { return axios.get(`${base}/xm/core/x
//模糊查询机构内所有项目指标汇总 条件之间or关系 //模糊查询机构内所有项目指标汇总 条件之间or关系
//export const listXmBranchStateKey = params => { return axios.get(`${base}/xm/core/xmBranchState/listKey`, { params: params }); }; //export const listXmBranchStateKey = params => { return axios.get(`${base}/xm/core/xmBranchState/listKey`, { params: params }); };
//删除一条机构内所有项目指标汇总 params={id:'主键 主键'}
//删除一条机构内所有项目指标汇总 params={branchId:'机构编号 主键'}
export const delXmBranchState = params => { return axios.post(`${base}/xm/core/xmBranchState/del`,params); }; export const delXmBranchState = params => { return axios.post(`${base}/xm/core/xmBranchState/del`,params); };
//批量删除机构内所有项目指标汇总 params=[{id:'主键 主键'}]
//批量删除机构内所有项目指标汇总 params=[{branchId:'机构编号 主键'}]
export const batchDelXmBranchState = params => { return axios.post(`${base}/xm/core/xmBranchState/batchDel`, params); }; export const batchDelXmBranchState = params => { return axios.post(`${base}/xm/core/xmBranchState/batchDel`, params); };
//修改一条机构内所有项目指标汇总记录 //修改一条机构内所有项目指标汇总记录
@ -30,7 +30,3 @@ export const editXmBranchState = params => { return axios.post(`${base}/xm/core/
export const addXmBranchState = params => { return axios.post(`${base}/xm/core/xmBranchState/add`, params); }; export const addXmBranchState = params => { return axios.post(`${base}/xm/core/xmBranchState/add`, params); };
export const loadProjectStateToXmBranchState = params => { return axios.post(`${base}/xm/core/xmBranchState/loadProjectStateToXmBranchState`,params); }; export const loadProjectStateToXmBranchState = params => { return axios.post(`${base}/xm/core/xmBranchState/loadProjectStateToXmBranchState`,params); };
export const listXmBranchStateHis = params => { return axios.get(`${base}/xm/core/xmBranchState/list/his`, { params: params }); };

30
src/api/xm/core/xmBranchStateHis.js

@ -0,0 +1,30 @@
import axios from '@/utils/request'
import config from '@/common/config'
let base = config.getCoreBasePath();
/**
* 机构内所有项目指标汇总
*1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉
*2 查询新增修改的参数格式 params={bizDate:'统计日期yyyy-mm-dd类型 主键',branchId:'机构编号 主键',totalFileCnt:'文件数据',totalBugCnt:'bug数目',totalTaskCnt:'任务数',totalBudgetNouserAmount:'项目总非人力预算-来自项目表',totalStaffCnt:'总参与人数',calcTime:'统计执行日期',calcStatus:'0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖',totalCostNouserAmount:'项目总非人力成本',totalClosedBugCnt:'已关闭bug总数',totalResolvedBugCnt:'已解决bug总数',totalCompleteTaskCnt:'已完成任务总数-来自任务表',totalPhaseCnt:'项目阶段计划数',totalCompletePhaseCnt:'项目阶段计划已完成数',totalNeedPayAmount:'待付款总金额',totalFinishPayAmount:'已付款总金额',totalNeedColAmount:'待收款总金额',totalFinishColAmount:'已收款总金额',totalCostUserAmount:'项目总人力成本',totalBudgetIuserAmount:'项目总内部人力预算-来自项目表',totalPlanWorkload:'项目总预算工作量-来自项目表',totalRiskCnt:'项目风险总数',totalCompleteRiskCnt:'已完成风险总数',branchName:'机构名称',totalBudgetOuserAmount:'项目总外购人力预算-来自项目表',totalCompleteWorkload:'已完成工作量-来自计划中实际完成工作量',totalCostIuserAmount:'项目总内部人力成本金额',totalCostOuserAmount:'项目总外购人力成本金额',totalProgress:'项目进度0~100之间,来自任务表',totalActiveBugCnt:'激活的bug总数',totalConfirmedBugCnt:'已解决bug总数',projectStatus:'项目状态,0-初始,1-立项中,2-执行中,3-已结项,4-暂停',totalActWorkload:'实际总工作量,来自任务表',totalActOutWorkload:'实际外购总工作量,来自任务表',totalActInnerWorkload:'实际内部总工作量,来自任务表',totalTaskBudgetCostAt:'已经分配到任务的总预算',totalTaskOutCnt:'外购任务数,来自任务表',totalNeedPayCnt:'待付款笔数',totalFinishPayCnt:'完成付款总比数',totalFinishPayUserCnt:'已付款总人数',totalNeedPayUserCnt:'待付款总人数',totalPlanIuserWorkload:'内部人力总工作量-应该大于或等于阶段计划内部人力总成本',totalPlanOuserWorkload:'外购人力总工作量-应该大于或等于阶段计划外购人力总成本',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',iterationCnt:'迭代数',productCnt:'产品数',menuCnt:'故事数',projectCnt:'项目数量',productBudgetWorkload:'产品总工时',productActWorkload:'产品实际完成总工作量',estimateWorkload:'预估完成工作量',execTaskCnt:'执行中任务数=任务表开始日期小于当前日期,进度<100的任务',toStartTaskCnt:'待开始的任务数=任务表中开始日期大于当前日期的任务数',execMenuCnt:'执行中需求=需求表中开始日期小于小于当前日期,进度<100的需求',toStartMenuCnt:'待开始需求数=需求表中开始日期大于当前日期的需求数',minStartTime:'最早开始日期',maxEndTime:'最晚结束时间'}
**/
//普通查询 条件之间and关系
export const listXmBranchStateHis = params => { return axios.get(`${base}/xm/core/xmBranchStateHis/list`, { params: params }); };
//模糊查询机构内所有项目指标汇总 条件之间or关系
//export const listXmBranchStateHisKey = params => { return axios.get(`${base}/xm/core/xmBranchStateHis/listKey`, { params: params }); };
//删除一条机构内所有项目指标汇总 params={bizDate:'统计日期yyyy-mm-dd类型 主键',branchId:'机构编号 主键'}
export const delXmBranchStateHis = params => { return axios.post(`${base}/xm/core/xmBranchStateHis/del`,params); };
//批量删除机构内所有项目指标汇总 params=[{bizDate:'统计日期yyyy-mm-dd类型 主键',branchId:'机构编号 主键'}]
export const batchDelXmBranchStateHis = params => { return axios.post(`${base}/xm/core/xmBranchStateHis/batchDel`, params); };
//修改一条机构内所有项目指标汇总记录
export const editXmBranchStateHis = params => { return axios.post(`${base}/xm/core/xmBranchStateHis/edit`, params); };
//新增一条机构内所有项目指标汇总
export const addXmBranchStateHis = params => { return axios.post(`${base}/xm/core/xmBranchStateHis/add`, params); };

11
src/api/xm/core/xmIterationState.js

@ -8,7 +8,7 @@ let base = config.getCoreBasePath();
/** /**
* 迭代定义 * 迭代定义
*1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉 *1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉
*2 查询新增修改的参数格式 params={id:'迭代编 主键',distBudgetCost:'已分配到任务的预算从任务表汇总而来',distBudgetWorkload:'已分配到任务的预算工作量从任务表汇总而来',actCost:'实际成本从任务表汇总而来',actWorkload:'实际工作量从任务表汇总而来',actStaffNum:'实际投入人员数',finishRate:'进度',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',projectCnt:'关联项目数',productCnt:'关联产品数',menuCnt:'关联需求数',taskCnt:'关联任务数',finishTaskCnt:'已完成的任务数',calcTime:'计算日期',iterationName:'迭代名称',budgetCost:'预算成本',budgetWorkload:'预算工作量',iterationId:'迭代编号'}
*2 查询新增修改的参数格式 params={iterationId:'迭代编 主键',distBudgetCost:'已分配到任务的预算从任务表汇总而来',distBudgetWorkload:'已分配到任务的预算工作量从任务表汇总而来',actCost:'实际成本从任务表汇总而来',actWorkload:'实际工作量从任务表汇总而来',actStaffNum:'实际投入人员数',finishRate:'进度',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',projectCnt:'关联项目数',productCnt:'关联产品数',menuCnt:'关联故事数',taskCnt:'关联任务数',finishTaskCnt:'已完成的任务数',calcTime:'计算日期',iterationName:'迭代名称',budgetCost:'预算成本',budgetWorkload:'预算工作量',bizDate:'业务日期yyyy-MM-dd字符串',closedBugCnt:'已关闭bug总数',resolvedBugCnt:'已解决bug总数',activeBugCnt:'激活的bug总数',confirmedBugCnt:'已解决bug总数',bugCnt:'bug总数',estimateWorkload:'预估工时=计划结束时间在计算当日前完成的任务的预算工时总和',minStartTime:'最早开始日期',maxEndTime:'最晚结束时间'}
**/ **/
//普通查询 条件之间and关系 //普通查询 条件之间and关系
@ -17,10 +17,10 @@ export const listXmIterationState = params => { return axios.get(`${base}/xm/cor
//模糊查询迭代定义 条件之间or关系 //模糊查询迭代定义 条件之间or关系
//export const listXmIterationStateKey = params => { return axios.get(`${base}/xm/core/xmIterationState/listKey`, { params: params }); }; //export const listXmIterationStateKey = params => { return axios.get(`${base}/xm/core/xmIterationState/listKey`, { params: params }); };
//删除一条迭代定义 params={id:'迭代编码 主键'}
//删除一条迭代定义 params={iterationId:'迭代编号 主键'}
export const delXmIterationState = params => { return axios.post(`${base}/xm/core/xmIterationState/del`,params); }; export const delXmIterationState = params => { return axios.post(`${base}/xm/core/xmIterationState/del`,params); };
//批量删除迭代定义 params=[{id:'迭代编码 主键'}]
//批量删除迭代定义 params=[{iterationId:'迭代编号 主键'}]
export const batchDelXmIterationState = params => { return axios.post(`${base}/xm/core/xmIterationState/batchDel`, params); }; export const batchDelXmIterationState = params => { return axios.post(`${base}/xm/core/xmIterationState/batchDel`, params); };
//修改一条迭代定义记录 //修改一条迭代定义记录
@ -31,8 +31,3 @@ export const addXmIterationState = params => { return axios.post(`${base}/xm/cor
export const loadTasksToXmIterationState= params => { return axios.post(`${base}/xm/core/xmIterationState/loadTasksToXmIterationState`, params); }; export const loadTasksToXmIterationState= params => { return axios.post(`${base}/xm/core/xmIterationState/loadTasksToXmIterationState`, params); };
export const listXmIterationStateHis = params => { return axios.get(`${base}/xm/core/xmIterationState/list/his`, { params: params }); };

30
src/api/xm/core/xmIterationStateHis.js

@ -0,0 +1,30 @@
import axios from '@/utils/request'
import config from '@/common/config'
let base = config.getCoreBasePath();
/**
* 迭代定义
*1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉
*2 查询新增修改的参数格式 params={iterationId:'迭代编号 主键',bizDate:'业务日期yyyy-MM-dd字符串 主键',distBudgetCost:'已分配到任务的预算从任务表汇总而来',distBudgetWorkload:'已分配到任务的预算工作量从任务表汇总而来',actCost:'实际成本从任务表汇总而来',actWorkload:'实际工作量从任务表汇总而来',actStaffNum:'实际投入人员数',finishRate:'进度',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',projectCnt:'关联项目数',productCnt:'关联产品数',menuCnt:'关联故事数',taskCnt:'关联任务数',finishTaskCnt:'已完成的任务数',calcTime:'计算日期',iterationName:'迭代名称',budgetCost:'预算成本',budgetWorkload:'预算工作量',closedBugCnt:'已关闭bug总数',resolvedBugCnt:'已解决bug总数',activeBugCnt:'激活的bug总数',confirmedBugCnt:'已解决bug总数',bugCnt:'bug总数',estimateWorkload:'预估工时=计划结束时间在计算当日前完成的任务的预算工时总和',minStartTime:'最早开始日期',maxEndTime:'最晚结束时间'}
**/
//普通查询 条件之间and关系
export const listXmIterationStateHis = params => { return axios.get(`${base}/xm/core/xmIterationStateHis/list`, { params: params }); };
//模糊查询迭代定义 条件之间or关系
//export const listXmIterationStateHisKey = params => { return axios.get(`${base}/xm/core/xmIterationStateHis/listKey`, { params: params }); };
//删除一条迭代定义 params={iterationId:'迭代编号 主键',bizDate:'业务日期yyyy-MM-dd字符串 主键'}
export const delXmIterationStateHis = params => { return axios.post(`${base}/xm/core/xmIterationStateHis/del`,params); };
//批量删除迭代定义 params=[{iterationId:'迭代编号 主键',bizDate:'业务日期yyyy-MM-dd字符串 主键'}]
export const batchDelXmIterationStateHis = params => { return axios.post(`${base}/xm/core/xmIterationStateHis/batchDel`, params); };
//修改一条迭代定义记录
export const editXmIterationStateHis = params => { return axios.post(`${base}/xm/core/xmIterationStateHis/edit`, params); };
//新增一条迭代定义
export const addXmIterationStateHis = params => { return axios.post(`${base}/xm/core/xmIterationStateHis/add`, params); };

10
src/api/xm/core/xmProductState.js

@ -8,7 +8,7 @@ let base = config.getCoreBasePath();
/** /**
* 功能状态表,无需前端维护所有数据由汇总统计得出 * 功能状态表,无需前端维护所有数据由汇总统计得出
*1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉 *1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉
*2 查询新增修改的参数格式 params={id:'主键 主键',planStartTime:'开始时间',planEndTime:'结束时间',actStartTime:'实际开始时间',actEndTime:'实际结束时间',planWorkload:'计划工作量,根据关联任务汇总',actWorkload:'实际工作量,根据关联任务汇总',planCostAmount:'计划成本,根据关联任务汇总',actCostAmount:'实际成本金额根据关联任务汇总',finishRate:'总体完成比例0-100之间,根据taskType进行汇总',demandRate:'需求完成率0-100之间,根据taskType进行汇总',designRate:'设计完成率0-100之间,根据taskType进行汇总',devRate:'开发完成率0-100之间,根据taskType进行汇总',uatRate:'uat测试完成率0-100之间,根据taskType进行汇总',sitRate:'sit测试完成率0-100之间,根据taskType进行汇总',ctime:'创建时间',ltime:'更新时间',cuserid:'创建人编号',cusername:'创建人姓名',calcTime:'汇总时间',planWorkhours:'工时数',planWorkerCnt:'总人数',closedBugs:'总关闭bugs',activeBugs:'激活bugs',confirmedBugs:'已确认bugs总数',resolvedBugs:'已解决bugs总数',productId:'产品编号',productName:'产品名称',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',projectCnt:'关联项目数',iterationCnt:'关联迭代数',taskCnt:'任务总数',finishTaskCnt:'已完成的任务总数'}
*2 查询新增修改的参数格式 params={productId:'产品编号 主键',planStartTime:'开始时间',planEndTime:'结束时间',actStartTime:'实际开始时间',actEndTime:'实际结束时间',planWorkload:'计划工作量,根据关联任务汇总',actWorkload:'实际工作量,根据关联任务汇总',planCostAmount:'计划成本,根据关联任务汇总',actCostAmount:'实际成本金额根据关联任务汇总',finishRate:'总体完成比例0-100之间,根据taskType进行汇总',demandRate:'需求完成率0-100之间,根据taskType进行汇总',designRate:'设计完成率0-100之间,根据taskType进行汇总',devRate:'开发完成率0-100之间,根据taskType进行汇总',uatRate:'uat测试完成率0-100之间,根据taskType进行汇总',sitRate:'sit测试完成率0-100之间,根据taskType进行汇总',ctime:'创建时间',ltime:'更新时间',cuserid:'创建人编号',cusername:'创建人姓名',calcTime:'汇总时间',planWorkhours:'工时数',planWorkerCnt:'总人数',closedBugs:'总关闭bugs',activeBugs:'激活bugs',confirmedBugs:'已确认bugs总数',resolvedBugs:'已解决bugs总数',productName:'产品名称',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',projectCnt:'关联项目数',iterationCnt:'关联迭代数',taskCnt:'任务总数',finishTaskCnt:'已完成的任务总数',bizDate:'业务日期yyyy-MM-dd字符串',branchId:'机构号码',bugCnt:'bug总数',menuCnt:'故事数',menuFinishCnt:'需求完成数',estimateWorkload:'预估工时=计划结束时间在计算当日前完成的任务的预算工时总和'}
**/ **/
//普通查询 条件之间and关系 //普通查询 条件之间and关系
@ -17,10 +17,10 @@ export const listXmProductState = params => { return axios.get(`${base}/xm/core/
//模糊查询功能状态表,无需前端维护,所有数据由汇总统计得出 条件之间or关系 //模糊查询功能状态表,无需前端维护,所有数据由汇总统计得出 条件之间or关系
//export const listXmProductStateKey = params => { return axios.get(`${base}/xm/core/xmProductState/listKey`, { params: params }); }; //export const listXmProductStateKey = params => { return axios.get(`${base}/xm/core/xmProductState/listKey`, { params: params }); };
//删除一条功能状态表,无需前端维护,所有数据由汇总统计得出 params={id:'主键 主键'}
//删除一条功能状态表,无需前端维护,所有数据由汇总统计得出 params={productId:'产品编号 主键'}
export const delXmProductState = params => { return axios.post(`${base}/xm/core/xmProductState/del`,params); }; export const delXmProductState = params => { return axios.post(`${base}/xm/core/xmProductState/del`,params); };
//批量删除功能状态表,无需前端维护,所有数据由汇总统计得出 params=[{id:'主键 主键'}]
//批量删除功能状态表,无需前端维护,所有数据由汇总统计得出 params=[{productId:'产品编号 主键'}]
export const batchDelXmProductState = params => { return axios.post(`${base}/xm/core/xmProductState/batchDel`, params); }; export const batchDelXmProductState = params => { return axios.post(`${base}/xm/core/xmProductState/batchDel`, params); };
//修改一条功能状态表,无需前端维护,所有数据由汇总统计得出记录 //修改一条功能状态表,无需前端维护,所有数据由汇总统计得出记录
@ -30,7 +30,3 @@ export const editXmProductState = params => { return axios.post(`${base}/xm/core
export const addXmProductState = params => { return axios.post(`${base}/xm/core/xmProductState/add`, params); }; export const addXmProductState = params => { return axios.post(`${base}/xm/core/xmProductState/add`, params); };
export const loadTasksToXmProductState = params => { return axios.post(`${base}/xm/core/xmProductState/loadTasksToXmProductState`, params); }; export const loadTasksToXmProductState = params => { return axios.post(`${base}/xm/core/xmProductState/loadTasksToXmProductState`, params); };
//普通查询 条件之间and关系
export const listXmProductStateHis = params => { return axios.get(`${base}/xm/core/xmProductState/list/his`, { params: params }); };

30
src/api/xm/core/xmProductStateHis.js

@ -0,0 +1,30 @@
import axios from '@/utils/request'
import config from '@/common/config'
let base = config.getCoreBasePath();
/**
* 功能状态表,无需前端维护所有数据由汇总统计得出
*1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉
*2 查询新增修改的参数格式 params={productId:'产品编号 主键',bizDate:'业务日期yyyy-MM-dd字符串 主键',planStartTime:'开始时间',planEndTime:'结束时间',actStartTime:'实际开始时间',actEndTime:'实际结束时间',planWorkload:'计划工作量,根据关联任务汇总',actWorkload:'实际工作量,根据关联任务汇总',planCostAmount:'计划成本,根据关联任务汇总',actCostAmount:'实际成本金额根据关联任务汇总',finishRate:'总体完成比例0-100之间,根据taskType进行汇总',demandRate:'需求完成率0-100之间,根据taskType进行汇总',designRate:'设计完成率0-100之间,根据taskType进行汇总',devRate:'开发完成率0-100之间,根据taskType进行汇总',uatRate:'uat测试完成率0-100之间,根据taskType进行汇总',sitRate:'sit测试完成率0-100之间,根据taskType进行汇总',ctime:'创建时间',ltime:'更新时间',cuserid:'创建人编号',cusername:'创建人姓名',calcTime:'汇总时间',planWorkhours:'工时数',planWorkerCnt:'总人数',closedBugs:'总关闭bugs',activeBugs:'激活bugs',confirmedBugs:'已确认bugs总数',resolvedBugs:'已解决bugs总数',productName:'产品名称',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',projectCnt:'关联项目数',iterationCnt:'关联迭代数',taskCnt:'任务总数',finishTaskCnt:'已完成的任务总数',branchId:'机构号码',bugCnt:'bug总数',menuCnt:'故事数',menuFinishCnt:'需求完成数',estimateWorkload:'预估工时=计划结束时间在计算当日前完成的任务的预算工时总和'}
**/
//普通查询 条件之间and关系
export const listXmProductStateHis = params => { return axios.get(`${base}/xm/core/xmProductStateHis/list`, { params: params }); };
//模糊查询功能状态表,无需前端维护,所有数据由汇总统计得出 条件之间or关系
//export const listXmProductStateHisKey = params => { return axios.get(`${base}/xm/core/xmProductStateHis/listKey`, { params: params }); };
//删除一条功能状态表,无需前端维护,所有数据由汇总统计得出 params={productId:'产品编号 主键',bizDate:'业务日期yyyy-MM-dd字符串 主键'}
export const delXmProductStateHis = params => { return axios.post(`${base}/xm/core/xmProductStateHis/del`,params); };
//批量删除功能状态表,无需前端维护,所有数据由汇总统计得出 params=[{productId:'产品编号 主键',bizDate:'业务日期yyyy-MM-dd字符串 主键'}]
export const batchDelXmProductStateHis = params => { return axios.post(`${base}/xm/core/xmProductStateHis/batchDel`, params); };
//修改一条功能状态表,无需前端维护,所有数据由汇总统计得出记录
export const editXmProductStateHis = params => { return axios.post(`${base}/xm/core/xmProductStateHis/edit`, params); };
//新增一条功能状态表,无需前端维护,所有数据由汇总统计得出
export const addXmProductStateHis = params => { return axios.post(`${base}/xm/core/xmProductStateHis/add`, params); };

9
src/api/xm/core/xmProjectState.js

@ -8,7 +8,7 @@ let base = config.getCoreBasePath();
/** /**
* 项目指标日统计表 * 项目指标日统计表
*1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉 *1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉
*2 查询新增修改的参数格式 params={id:'主键 主键',projectId:'项目编号',bizDate:'统计日期yyyy-mm-dd类型',totalFileCnt:'文件数据',totalBugCnt:'bug数目',totalTaskCnt:'任务数',totalBudgetNouserAmount:'项目总非人力预算-来自项目表',projectName:'项目名称',totalStaffCnt:'总参与人数',calCtime:'统计执行日期',calStatus:'0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖',totalCostNouserAmount:'项目总非人力成本',totalClosedBugCnt:'已关闭bug总数',totalResolvedBugCnt:'已解决bug总数',totalCompleteTaskCnt:'已完成任务总数-来自任务表',totalPhaseCnt:'项目阶段计划数',totalCompletePhaseCnt:'项目阶段计划已完成数',totalNeedPayAmount:'待付款总金额',totalFinishPayAmount:'已付款总金额',totalNeedColAmount:'待收款总金额',totalFinishColAmount:'已收款总金额',totalCostUserAmount:'项目总人力成本',totalBudgetIuserAmount:'项目总内部人力预算-来自项目表',totalPlanWorkload:'项目总预算工作量-来自项目表',totalRiskCnt:'项目风险总数',totalCompleteRiskCnt:'已完成风险总数',branchId:'机构编号',branchName:'机构名称',totalBudgetOuserAmount:'项目总外购人力预算-来自项目表',totalCompleteWorkload:'已完成工作量-来自计划中实际完成工作量',todayNewBugCnt:'今日新增bug数目',todayResolvedBugCnt:'今日解决bug数目',todayClosedBugCnt:'今日关闭bug',todayNewTaskCnt:'今日新增任务数',todayCompleteTaskCnt:'今日完成任务数',todayNewPhaseCnt:'今日新增计划数目',todayCompletePhaseCnt:'今日完成计划数目',todayNewStaffCnt:'今日新增员工数',todaySubStaffCnt:'今日退出员工数',todayNewPlanWorkload:'今日新增预算工作量',todayNewActWorkload:'今日新增实际工作量',todayNeedColAmount:'今日需要收款金额',todayFinishColAmount:'今日完成收款金额',todayCostUserAmount:'今日人力成本金额',todayCostIuserAmount:'今日内部人力成本金额',todayCostOuserAmount:'今日外购人力成本金额',todayCostNouserAmount:'今日非人力成本金额',totalCostIuserAmount:'项目总内部人力成本金额',totalCostOuserAmount:'项目总外购人力成本金额',todayNeedPayAmount:'今日新增待付款总金额',todayFinishPayAmount:'今日新增完成付款总金额',todayNewRiskCnt:'今日新增项目风险总数',todayCompleteRiskCnt:'今日完成风险总数',todayNewFileCnt:'今日新增文档',totalProgress:'项目进度0~100之间,来自任务表',totalActiveBugCnt:'激活的bug总数',totalConfirmedBugCnt:'已解决bug总数',projectStatus:'项目状态,0-初始,1-立项中,2-执行中,3-已结项,4-暂停',totalActWorkload:'实际总工作量,来自任务表',totalActOutWorkload:'实际外购总工作量,来自任务表',totalActInnerWorkload:'实际内部总工作量,来自任务表',totalTaskBudgetCostAt:'已经分配到任务的总预算',totalTaskOutCnt:'外购任务数,来自任务表',totalNeedPayCnt:'待付款笔数',totalFinishPayCnt:'完成付款总比数',todayConfirmedBugCnt:'今日确认bug',todayActiveBugCnt:'今日激活的bug',totalFinishPayUserCnt:'已付款总人数',totalNeedPayUserCnt:'待付款总人数',todayNeedPayUserCnt:'今日待付款总人数',todayFinishPayUserCnt:'今日已付款总人数'}
*2 查询新增修改的参数格式 params={projectId:'项目编号 主键',bizDate:'统计日期yyyy-mm-dd类型',totalFileCnt:'文件数据',totalBugCnt:'bug数目',totalTaskCnt:'任务数',totalBudgetNouserAmount:'项目总非人力预算-来自项目表',projectName:'项目名称',totalStaffCnt:'总参与人数',calcTime:'统计执行日期',calcStatus:'0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖',totalCostNouserAmount:'项目总非人力成本',totalClosedBugCnt:'已关闭bug总数',totalResolvedBugCnt:'已解决bug总数',totalCompleteTaskCnt:'已完成任务总数-来自任务表',totalPhaseCnt:'项目阶段计划数',totalCompletePhaseCnt:'项目阶段计划已完成数',totalNeedPayAmount:'待付款总金额',totalFinishPayAmount:'已付款总金额',totalNeedColAmount:'待收款总金额',totalFinishColAmount:'已收款总金额',totalCostUserAmount:'项目总人力成本',totalBudgetIuserAmount:'项目总内部人力预算-来自项目表',totalPlanWorkload:'项目总预算工作量-来自项目表',totalRiskCnt:'项目风险总数',totalCompleteRiskCnt:'已完成风险总数',branchId:'机构编号',branchName:'机构名称',totalBudgetOuserAmount:'项目总外购人力预算-来自项目表',totalCompleteWorkload:'已完成工作量-来自计划中实际完成工作量',totalCostIuserAmount:'项目总内部人力成本金额',totalCostOuserAmount:'项目总外购人力成本金额',totalProgress:'项目进度0~100之间,来自任务表',totalActiveBugCnt:'激活的bug总数',totalConfirmedBugCnt:'已解决bug总数',projectStatus:'0|初始',totalActWorkload:'实际总工作量,来自任务表',totalActOutWorkload:'实际外购总工作量,来自任务表',totalActInnerWorkload:'实际内部总工作量,来自任务表',totalTaskBudgetCostAt:'已经分配到任务的总预算',totalTaskOutCnt:'外购任务数,来自任务表',totalNeedPayCnt:'待付款笔数',totalFinishPayCnt:'完成付款总比数',totalFinishPayUserCnt:'已付款总人数',totalNeedPayUserCnt:'待付款总人数',totalPlanIuserWorkload:'内部人力总工作量-应该大于或等于阶段计划内部人力总成本',totalPlanOuserWorkload:'外购人力总工作量-应该大于或等于阶段计划外购人力总成本',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',iterationCnt:'迭代数',productCnt:'产品数',menuCnt:'故事数',finishMenuCnt:'完成的故事数',estimateWorkload:'预估工时=计划结束时间在计算当日前完成的任务的预算工时总和',execTaskCnt:'执行中任务数=任务表开始日期小于=当前日期,进度<100的任务',toStartTaskCnt:'待开始的任务数=任务表中开始日期=当前日期+1的任务数',execMenuCnt:'执行中需求=需求表中开始日期小于小于等于当前日期,进度<100的需求',toStartMenuCnt:'待开始需求数=需求表中开始日期=当前日期+1的需求数',minStartTime:'最早开始日期',maxEndTime:'最晚结束时间'}
**/ **/
//普通查询 条件之间and关系 //普通查询 条件之间and关系
@ -17,10 +17,10 @@ export const listXmProjectState = params => { return axios.get(`${base}/xm/core/
//模糊查询项目指标日统计表 条件之间or关系 //模糊查询项目指标日统计表 条件之间or关系
//export const listXmProjectStateKey = params => { return axios.get(`${base}/xm/core/xmProjectState/listKey`, { params: params }); }; //export const listXmProjectStateKey = params => { return axios.get(`${base}/xm/core/xmProjectState/listKey`, { params: params }); };
//删除一条项目指标日统计表 params={id:'主键 主键'}
//删除一条项目指标日统计表 params={projectId:'项目编号 主键'}
export const delXmProjectState = params => { return axios.post(`${base}/xm/core/xmProjectState/del`,params); }; export const delXmProjectState = params => { return axios.post(`${base}/xm/core/xmProjectState/del`,params); };
//批量删除项目指标日统计表 params=[{id:'主键 主键'}]
//批量删除项目指标日统计表 params=[{projectId:'项目编号 主键'}]
export const batchDelXmProjectState = params => { return axios.post(`${base}/xm/core/xmProjectState/batchDel`, params); }; export const batchDelXmProjectState = params => { return axios.post(`${base}/xm/core/xmProjectState/batchDel`, params); };
//修改一条项目指标日统计表记录 //修改一条项目指标日统计表记录
@ -41,6 +41,3 @@ export const loadTasksToXmProjectState = params => { return axios.post(`${base}/
export const loadTasksSettleToXmProjectState = params => { return axios.post(`${base}/xm/core/xmProjectState/loadTasksSettleToXmProjectState`, params); }; export const loadTasksSettleToXmProjectState = params => { return axios.post(`${base}/xm/core/xmProjectState/loadTasksSettleToXmProjectState`, params); };
//普通查询 条件之间and关系
export const listXmProjectStateHis = params => { return axios.get(`${base}/xm/core/xmProjectState/list/his`, { params: params }); };

14
src/api/xm/core/xmProjectStateHis.js

@ -6,25 +6,25 @@ let base = config.getCoreBasePath();
/** /**
* xm_project_state_his
* 项目指标日统计表
*1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉 *1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉
*2 查询新增修改的参数格式 params={id:'本表主键 主键',projectId:'项目编号',bizDate:'统计日期yyyy-mm-dd类型',totalFileCnt:'文件数据',totalBugCnt:'bug数目',totalTaskCnt:'任务数',totalBudgetNouserAmount:'项目总非人力预算-来自项目表',projectName:'项目名称',stateId:'xm_project_state原表主键id',totalStaffCnt:'总参与人数',calCtime:'统计执行日期',calStatus:'0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖',totalCostNouserAmount:'项目总非人力成本',totalCloseBugCnt:'已关闭bug总数',totalResolveBugCnt:'已解决bug总数',totalCompleteTaskCnt:'已完成任务总数-来自任务表',totalPhaseCnt:'项目阶段计划数',totalCompletePhaseCnt:'项目阶段计划已完成数',totalNeedPayAmount:'待付款总金额',totalFinishPayAmount:'已付款总金额',totalNeedColAmount:'待收款总金额',totalFinishColAmount:'已收款总金额',totalCostUserAmount:'项目总人力成本',totalBudgetIuserAmount:'项目总内部人力预算-来自项目表',totalPlanWorkload:'项目总预算工作量-来自项目表',totalRiskCnt:'项目风险总数',totalCompleteRiskCnt:'已完成风险总数',branchId:'机构编号',branchName:'机构名称',totalBudgetOuserAmount:'项目总外购人力预算-来自项目表',totalCompleteWorkload:'已完成工作量-来自计划中实际完成工作量'}
*2 查询新增修改的参数格式 params={projectId:'项目编号 主键',bizDate:'统计日期yyyy-mm-dd类型 主键',totalFileCnt:'文件数据',totalBugCnt:'bug数目',totalTaskCnt:'任务数',totalBudgetNouserAmount:'项目总非人力预算-来自项目表',projectName:'项目名称',totalStaffCnt:'总参与人数',calcTime:'统计执行日期',calcStatus:'0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖',totalCostNouserAmount:'项目总非人力成本',totalClosedBugCnt:'已关闭bug总数',totalResolvedBugCnt:'已解决bug总数',totalCompleteTaskCnt:'已完成任务总数-来自任务表',totalPhaseCnt:'项目阶段计划数',totalCompletePhaseCnt:'项目阶段计划已完成数',totalNeedPayAmount:'待付款总金额',totalFinishPayAmount:'已付款总金额',totalNeedColAmount:'待收款总金额',totalFinishColAmount:'已收款总金额',totalCostUserAmount:'项目总人力成本',totalBudgetIuserAmount:'项目总内部人力预算-来自项目表',totalPlanWorkload:'项目总预算工作量-来自项目表',totalRiskCnt:'项目风险总数',totalCompleteRiskCnt:'已完成风险总数',branchId:'机构编号',branchName:'机构名称',totalBudgetOuserAmount:'项目总外购人力预算-来自项目表',totalCompleteWorkload:'已完成工作量-来自计划中实际完成工作量',totalCostIuserAmount:'项目总内部人力成本金额',totalCostOuserAmount:'项目总外购人力成本金额',totalProgress:'项目进度0~100之间,来自任务表',totalActiveBugCnt:'激活的bug总数',totalConfirmedBugCnt:'已解决bug总数',projectStatus:'0|初始',totalActWorkload:'实际总工作量,来自任务表',totalActOutWorkload:'实际外购总工作量,来自任务表',totalActInnerWorkload:'实际内部总工作量,来自任务表',totalTaskBudgetCostAt:'已经分配到任务的总预算',totalTaskOutCnt:'外购任务数,来自任务表',totalNeedPayCnt:'待付款笔数',totalFinishPayCnt:'完成付款总比数',totalFinishPayUserCnt:'已付款总人数',totalNeedPayUserCnt:'待付款总人数',totalPlanIuserWorkload:'内部人力总工作量-应该大于或等于阶段计划内部人力总成本',totalPlanOuserWorkload:'外购人力总工作量-应该大于或等于阶段计划外购人力总成本',testCases:'测试案例总数',execCases:'测试中案例总数',designCases:'设计中案例总数',finishCases:'完成案例总数',iterationCnt:'迭代数',productCnt:'产品数',menuCnt:'故事数',finishMenuCnt:'完成的故事数',estimateWorkload:'预估工时=计划结束时间在计算当日前完成的任务的预算工时总和',execTaskCnt:'执行中任务数=任务表开始日期小于=当前日期,进度<100的任务',toStartTaskCnt:'待开始的任务数=任务表中开始日期=当前日期+1的任务数',execMenuCnt:'执行中需求=需求表中开始日期小于小于等于当前日期,进度<100的需求',toStartMenuCnt:'待开始需求数=需求表中开始日期=当前日期+1的需求数',minStartTime:'最早开始日期',maxEndTime:'最晚结束时间'}
**/ **/
//普通查询 条件之间and关系 //普通查询 条件之间and关系
export const listXmProjectStateHis = params => { return axios.get(`${base}/xm/core/xmProjectStateHis/list`, { params: params }); }; export const listXmProjectStateHis = params => { return axios.get(`${base}/xm/core/xmProjectStateHis/list`, { params: params }); };
//模糊查询xm_project_state_his 条件之间or关系
//模糊查询项目指标日统计表 条件之间or关系
//export const listXmProjectStateHisKey = params => { return axios.get(`${base}/xm/core/xmProjectStateHis/listKey`, { params: params }); }; //export const listXmProjectStateHisKey = params => { return axios.get(`${base}/xm/core/xmProjectStateHis/listKey`, { params: params }); };
//删除一条xm_project_state_his params={id:'本表主键 主键'}
//删除一条项目指标日统计表 params={projectId:'项目编号 主键',bizDate:'统计日期yyyy-mm-dd类型 主键'}
export const delXmProjectStateHis = params => { return axios.post(`${base}/xm/core/xmProjectStateHis/del`,params); }; export const delXmProjectStateHis = params => { return axios.post(`${base}/xm/core/xmProjectStateHis/del`,params); };
//批量删除xm_project_state_his params=[{id:'本表主键 主键'}]
//批量删除项目指标日统计表 params=[{projectId:'项目编号 主键',bizDate:'统计日期yyyy-mm-dd类型 主键'}]
export const batchDelXmProjectStateHis = params => { return axios.post(`${base}/xm/core/xmProjectStateHis/batchDel`, params); }; export const batchDelXmProjectStateHis = params => { return axios.post(`${base}/xm/core/xmProjectStateHis/batchDel`, params); };
//修改一条xm_project_state_his记录
//修改一条项目指标日统计表记录
export const editXmProjectStateHis = params => { return axios.post(`${base}/xm/core/xmProjectStateHis/edit`, params); }; export const editXmProjectStateHis = params => { return axios.post(`${base}/xm/core/xmProjectStateHis/edit`, params); };
//新增一条xm_project_state_his
//新增一条项目指标日统计表
export const addXmProjectStateHis = params => { return axios.post(`${base}/xm/core/xmProjectStateHis/add`, params); }; export const addXmProjectStateHis = params => { return axios.post(`${base}/xm/core/xmProjectStateHis/add`, params); };

163
src/views/xm/core/xmBranchState/XmBranchStateEdit.vue

@ -1,8 +1,10 @@
<template> <template>
<section class="page-container padding border">
<el-row>
<section class="page-container padding">
<el-row class="page-header">
</el-row>
<el-row class="page-main" :style="{overflowX:'auto',height:maxTableHeight+'px'}" ref="table">
<!--编辑界面 XmBranchState 机构内所有项目指标汇总--> <!--编辑界面 XmBranchState 机构内所有项目指标汇总-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
<el-form-item label="统计日期yyyy-mm-dd类型" prop="bizDate"> <el-form-item label="统计日期yyyy-mm-dd类型" prop="bizDate">
<el-input v-model="editForm.bizDate" placeholder="统计日期yyyy-mm-dd类型"></el-input> <el-input v-model="editForm.bizDate" placeholder="统计日期yyyy-mm-dd类型"></el-input>
</el-form-item> </el-form-item>
@ -18,9 +20,6 @@
<el-form-item label="项目总非人力预算-来自项目表" prop="totalBudgetNouserAmount"> <el-form-item label="项目总非人力预算-来自项目表" prop="totalBudgetNouserAmount">
<el-input v-model="editForm.totalBudgetNouserAmount" placeholder="项目总非人力预算-来自项目表"></el-input> <el-input v-model="editForm.totalBudgetNouserAmount" placeholder="项目总非人力预算-来自项目表"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="主键" prop="id">
<el-input v-model="editForm.id" placeholder="主键"></el-input>
</el-form-item>
<el-form-item label="总参与人数" prop="totalStaffCnt"> <el-form-item label="总参与人数" prop="totalStaffCnt">
<el-input-number v-model="editForm.totalStaffCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalStaffCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
@ -42,10 +41,10 @@
<el-form-item label="已完成任务总数-来自任务表" prop="totalCompleteTaskCnt"> <el-form-item label="已完成任务总数-来自任务表" prop="totalCompleteTaskCnt">
<el-input-number v-model="editForm.totalCompleteTaskCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalCompleteTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="项目计划数" prop="totalPhaseCnt">
<el-form-item label="项目阶段计划数" prop="totalPhaseCnt">
<el-input-number v-model="editForm.totalPhaseCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalPhaseCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="项目计划已完成数" prop="totalCompletePhaseCnt">
<el-form-item label="项目阶段计划已完成数" prop="totalCompletePhaseCnt">
<el-input-number v-model="editForm.totalCompletePhaseCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalCompletePhaseCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="待付款总金额" prop="totalNeedPayAmount"> <el-form-item label="待付款总金额" prop="totalNeedPayAmount">
@ -132,11 +131,11 @@
<el-form-item label="待付款总人数" prop="totalNeedPayUserCnt"> <el-form-item label="待付款总人数" prop="totalNeedPayUserCnt">
<el-input v-model="editForm.totalNeedPayUserCnt" placeholder="待付款总人数"></el-input> <el-input v-model="editForm.totalNeedPayUserCnt" placeholder="待付款总人数"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="内部人力总工作量-应该大于或等于计划内部人力总成本" prop="totalPlanIuserWorkload">
<el-input v-model="editForm.totalPlanIuserWorkload" placeholder="内部人力总工作量-应该大于或等于计划内部人力总成本"></el-input>
<el-form-item label="内部人力总工作量-应该大于或等于阶段计划内部人力总成本" prop="totalPlanIuserWorkload">
<el-input v-model="editForm.totalPlanIuserWorkload" placeholder="内部人力总工作量-应该大于或等于阶段计划内部人力总成本"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="外购人力总工作量-应该大于或等于计划外购人力总成本" prop="totalPlanOuserWorkload">
<el-input v-model="editForm.totalPlanOuserWorkload" placeholder="外购人力总工作量-应该大于或等于计划外购人力总成本"></el-input>
<el-form-item label="外购人力总工作量-应该大于或等于阶段计划外购人力总成本" prop="totalPlanOuserWorkload">
<el-input v-model="editForm.totalPlanOuserWorkload" placeholder="外购人力总工作量-应该大于或等于阶段计划外购人力总成本"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="测试案例总数" prop="testCases"> <el-form-item label="测试案例总数" prop="testCases">
<el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number>
@ -156,96 +155,150 @@
<el-form-item label="产品数" prop="productCnt"> <el-form-item label="产品数" prop="productCnt">
<el-input-number v-model="editForm.productCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.productCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="需求数" prop="menuCnt">
<el-form-item label="故事数" prop="menuCnt">
<el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item>
<el-col :span="24" :offset="8">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="editSubmit" :disabled="load.edit==true">提交</el-button>
</el-col>
<el-form-item label="项目数量" prop="projectCnt">
<el-input-number v-model="editForm.projectCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="产品总工时" prop="productBudgetWorkload">
<el-input v-model="editForm.productBudgetWorkload" placeholder="产品总工时"></el-input>
</el-form-item>
<el-form-item label="产品实际完成总工作量" prop="productActWorkload">
<el-input v-model="editForm.productActWorkload" placeholder="产品实际完成总工作量"></el-input>
</el-form-item>
<el-form-item label="预估完成工作量" prop="estimateWorkload">
<el-input v-model="editForm.estimateWorkload" placeholder="预估完成工作量"></el-input>
</el-form-item>
<el-form-item label="执行中任务数=任务表开始日期小于当前日期,进度<100的任务" prop="execTaskCnt">
<el-input-number v-model="editForm.execTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="待开始的任务数=任务表中开始日期大于当前日期的任务数" prop="toStartTaskCnt">
<el-input-number v-model="editForm.toStartTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="执行中需求=需求表中开始日期小于小于当前日期,进度<100的需求" prop="execMenuCnt">
<el-input-number v-model="editForm.execMenuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="待开始需求数=需求表中开始日期大于当前日期的需求数" prop="toStartMenuCnt">
<el-input-number v-model="editForm.toStartMenuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="最早开始日期" prop="minStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.minStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="最晚结束时间" prop="maxEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.maxEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-row> </el-row>
<el-row class="page-bottom bottom-fixed">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="saveSubmit" :disabled="load.edit==true">提交</el-button>
</el-row>
</section> </section>
</template> </template>
<script> <script>
import util from '@/common/js/util';// import util from '@/common/js/util';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { editXmBranchState } from '@/api/xm/core/xmBranchState';
import config from "@/common/config"; //import
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { addXmBranchState,editXmBranchState } from '@/api/xm/core/xmBranchState';
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name:'xmBranchStateEdit',
components: {
},
computed: { computed: {
...mapGetters([
'userInfo','roles'
])
...mapGetters([ 'userInfo' ]),
}, },
props:['xmBranchState','visible'],
props:['xmBranchState','visible','opType'],
watch: { watch: {
'xmBranchState':function( xmBranchState ) { 'xmBranchState':function( xmBranchState ) {
this.editForm = xmBranchState;
if(xmBranchState){
this.editForm = xmBranchState;
}
}, },
'visible':function(visible) { 'visible':function(visible) {
if(visible==true){ if(visible==true){
//
this.initData()
} }
} }
}, },
data() { data() {
return { return {
dicts:{},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
load:{ list: false, edit: false, del: false, add: false },//...
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
editFormRules: { editFormRules: {
id: [
//{ required: true, message: '', trigger: 'blur' }
branchId: [
//{ required: true, message: '', trigger: 'blur' }
] ]
}, },
// XmBranchState
editForm: { editForm: {
bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',id:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:''
}
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
/**end 在上面加自定义属性**/
bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',projectCnt:'',productBudgetWorkload:'',productActWorkload:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
},
maxTableHeight:300,
}//end return }//end return
},//end data },//end data
methods: { methods: {
// @cancel="editFormVisible=false" // @cancel="editFormVisible=false"
handleCancel:function(){ handleCancel:function(){
this.$refs['editForm'].resetFields();
this.$refs['editFormRef'].resetFields();
this.$emit('cancel'); this.$emit('cancel');
}, },
//XmBranchState @submit="afterEditSubmit"
editSubmit: function () {
this.$refs.editForm.validate((valid) => {
//XmBranchState @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.editFormRef.validate((valid) => {
if (valid) { if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => { this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true this.load.edit=true
let params = Object.assign({}, this.editForm); let params = Object.assign({}, this.editForm);
editXmBranchState(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.$refs['editForm'].resetFields();
this.$emit('submit');// @submit="afterEditSubmit"
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
var func=addXmBranchState
if(this.currOpType=='edit'){
func=editXmBranchState
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.editForm=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
}); });
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
} }
}); });
}, },
/**begin 在下面加自定义方法,记得补上面的一个逗号**/
initData: function(){
this.currOpType=this.opType
if(this.xmBranchState){
this.editForm = Object.assign({},this.xmBranchState);
}
if(this.opType=='edit'){
}else{
}
},
/**end 在上面加自定义方法**/
},//end method },//end method
components: {
// 'xm-branch-state-edit':XmBranchStateEdit
},
mounted() { mounted() {
this.editForm=Object.assign(this.editForm, this.xmBranchState);
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
});
} }
} }

276
src/views/xm/core/xmBranchState/XmBranchStateMng.vue

@ -1,106 +1,125 @@
<template> <template>
<section class="page-container padding border">
<section class="page-container border padding">
<el-row> <el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input> <el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmBranchStates">查询</el-button>
<el-button type="warning" v-loading="load.edit" @click="loadProjectStateToXmBranchState">刷新数据</el-button>
</el-row>
<el-row class="page-main ">
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchXmBranchStates" icon="el-icon-search">查询</el-button>
<el-button type="primary" @click="showAdd" icon="el-icon-plus"> </el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true" icon="el-icon-delete"></el-button>
</el-row>
<el-row class="padding-top">
<!--列表 XmBranchState 机构内所有项目指标汇总--> <!--列表 XmBranchState 机构内所有项目指标汇总-->
<el-table ref="table" :height="maxTableHeight" :data="xmBranchStates" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column sortable type="index" width="45"></el-table-column>
<el-table-column prop="branchId" label="机构" min-width="120" >
<template scope="scope">
{{scope.row.branchId}} {{scope.row.branchName?"-"+scope.row.branchName:""}}
</template>
</el-table-column>
<el-table-column prop="calcTime" label="统计日期" width="160" ></el-table-column>
<el-table-column prop="totalProgress" label="总进度%" min-width="80" >
<template scope="scope">
{{scope.row.totalProgress}}%
</template>
</el-table-column>
<el-table-column prop="projectCnt" label="项目数" min-width="80" ></el-table-column>
<el-table-column prop="totalPlanWorkload" label="预估总工作量" min-width="80" ></el-table-column>
<el-table-column prop="totalActWorkload" label="实际总工作量" min-width="80" ></el-table-column>
<el-table-column prop="totalTaskBudgetCostAt" label="落实总预算" min-width="80" ></el-table-column>
<el-table-column prop="totalTaskCnt" label="任务数" min-width="80" ></el-table-column>
<el-table-column prop="totalStaffCnt" label="总参与人数" min-width="80" ></el-table-column>
<el-table-column prop="productCnt" label="产品数" min-width="80" ></el-table-column>
<el-table-column prop="menuCnt" label="需求数" min-width="80" ></el-table-column>
<el-table-column prop="iterationCnt" label="迭代数" min-width="80" ></el-table-column>
<el-table-column prop="testCases" label="测试案例总数" min-width="80" ></el-table-column>
<el-table-column prop="totalBugCnt" label="bug数目" min-width="80" ></el-table-column>
<el-table-column prop="totalFinishPayAmount" label="已付款总金额" min-width="80" ></el-table-column>
<el-table-column prop="totalBudgetNouserAmount" label="总非人力预算" min-width="80" ></el-table-column>
<el-table-column prop="totalCostNouserAmount" label="总非人力成本" min-width="80" ></el-table-column>
<el-table-column prop="totalClosedBugCnt" label="已关闭bug总数" min-width="80" ></el-table-column>
<el-table-column prop="totalResolvedBugCnt" label="已解决bug总数" min-width="80" ></el-table-column>
<el-table-column prop="totalCompleteTaskCnt" label="已完成任务总数" min-width="80" ></el-table-column>
<el-table-column prop="totalNeedPayAmount" label="待付款总金额" min-width="80" ></el-table-column>
<el-table-column prop="totalNeedColAmount" label="待收款总金额" min-width="80" ></el-table-column>
<el-table-column prop="totalFinishColAmount" label="已收款总金额" min-width="80" ></el-table-column>
<el-table-column prop="totalCostUserAmount" label="项目总人力成本" min-width="80" ></el-table-column>
<el-table-column prop="totalBudgetIuserAmount" label="项目总内部人力预算" min-width="80" ></el-table-column>
<el-table-column prop="totalRiskCnt" label="项目风险总数" min-width="80" ></el-table-column>
<el-table-column prop="totalCompleteRiskCnt" label="已完成风险总数" min-width="80" ></el-table-column>
<el-table-column prop="totalBudgetOuserAmount" label="项目总外购人力预算" min-width="80" ></el-table-column>
<el-table-column prop="totalCompleteWorkload" label="已完成工作量" min-width="80" ></el-table-column>
<el-table-column prop="totalCostIuserAmount" label="项目总内部人力成本金额" min-width="80" ></el-table-column>
<el-table-column prop="totalCostOuserAmount" label="项目总外购人力成本金额" min-width="80" ></el-table-column>
<el-table-column prop="totalActiveBugCnt" label="激活的bug总数" min-width="80" ></el-table-column>
<el-table-column prop="totalConfirmedBugCnt" label="已解决bug总数" min-width="80" ></el-table-column>
<el-table-column prop="totalActOutWorkload" label="实际外购总工作量" min-width="80" ></el-table-column>
<el-table-column prop="totalActInnerWorkload" label="实际内部总工作量" min-width="80" ></el-table-column>
<el-table-column prop="totalTaskOutCnt" label="外购任务数" min-width="80" ></el-table-column>
<el-table-column prop="totalNeedPayCnt" label="待付款笔数" min-width="80" ></el-table-column>
<el-table-column prop="totalFinishPayCnt" label="完成付款总比数" min-width="80" ></el-table-column>
<el-table-column prop="totalFinishPayUserCnt" label="已付款总人数" min-width="80" ></el-table-column>
<el-table-column prop="totalNeedPayUserCnt" label="待付款总人数" min-width="80" ></el-table-column>
<el-table-column prop="totalPlanIuserWorkload" label="内部人力总工作量" min-width="80" ></el-table-column>
<el-table-column prop="totalPlanOuserWorkload" label="外购人力总工作量" min-width="80" ></el-table-column>
<el-table-column prop="designCases" label="设计中案例总数" min-width="80" ></el-table-column>
<el-table-column prop="finishCases" label="完成案例总数" min-width="80" ></el-table-column>
<el-table-column prop="totalPhaseCnt" label="项目计划数" min-width="80" ></el-table-column>
<el-table-column prop="totalCompletePhaseCnt" label="项目计划已完成数" min-width="80" ></el-table-column>
<el-table-column label="操作" width="160" fixed="right">
<el-table ref="xmBranchStateTable" :data="xmBranchStates" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column sortable type="index" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="bizDate" label="统计日期yyyy-mm-dd类型" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFileCnt" label="文件数据" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBugCnt" label="bug数目" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskCnt" label="任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetNouserAmount" label="项目总非人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalStaffCnt" label="总参与人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcTime" label="统计执行日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcStatus" label="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostNouserAmount" label="项目总非人力成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalClosedBugCnt" label="已关闭bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalResolvedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteTaskCnt" label="已完成任务总数-来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPhaseCnt" label="项目阶段计划数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompletePhaseCnt" label="项目阶段计划已完成数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayAmount" label="待付款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayAmount" label="已付款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedColAmount" label="待收款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishColAmount" label="已收款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostUserAmount" label="项目总人力成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetIuserAmount" label="项目总内部人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanWorkload" label="项目总预算工作量-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalRiskCnt" label="项目风险总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteRiskCnt" label="已完成风险总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="branchId" label="机构编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="branchName" label="机构名称" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetOuserAmount" label="项目总外购人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteWorkload" label="已完成工作量-来自计划中实际完成工作量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostIuserAmount" label="项目总内部人力成本金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostOuserAmount" label="项目总外购人力成本金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalProgress" label="项目进度0~100之间,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActiveBugCnt" label="激活的bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalConfirmedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectStatus" label="项目状态,0-初始,1-立项中,2-执行中,3-已结项,4-暂停" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActWorkload" label="实际总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActOutWorkload" label="实际外购总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActInnerWorkload" label="实际内部总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskBudgetCostAt" label="已经分配到任务的总预算" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskOutCnt" label="外购任务数,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayCnt" label="待付款笔数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayCnt" label="完成付款总比数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayUserCnt" label="已付款总人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayUserCnt" label="待付款总人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanIuserWorkload" label="内部人力总工作量-应该大于或等于阶段计划内部人力总成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanOuserWorkload" label="外购人力总工作量-应该大于或等于阶段计划外购人力总成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="testCases" label="测试案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execCases" label="测试中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="designCases" label="设计中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishCases" label="完成案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="iterationCnt" label="迭代数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productCnt" label="产品数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="menuCnt" label="故事数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectCnt" label="项目数量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productBudgetWorkload" label="产品总工时" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productActWorkload" label="产品实际完成总工作量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="estimateWorkload" label="预估完成工作量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execTaskCnt" label="执行中任务数=任务表开始日期小于当前日期,进度<100的任务" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="toStartTaskCnt" label="待开始的任务数=任务表中开始日期大于当前日期的任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execMenuCnt" label="执行中需求=需求表中开始日期小于小于当前日期,进度<100的需求" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="toStartMenuCnt" label="待开始需求数=需求表中开始日期大于当前日期的需求数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="minStartTime" label="最早开始日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="maxEndTime" label="最晚结束时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template scope="scope"> <template scope="scope">
<el-button @click="showXmBranchDatav( scope.row,scope.$index)">大屏展示</el-button>
<el-button type="primary" @click="showEdit( scope.row,scope.$index)" icon="el-icon-edit"></el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)" icon="el-icon-delete"></el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination> <el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row>
<el-row>
<!--编辑 XmBranchState 机构内所有项目指标汇总界面--> <!--编辑 XmBranchState 机构内所有项目指标汇总界面-->
<el-drawer title="编辑机构内所有项目指标汇总" :visible.sync="editFormVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-branch-state-edit :xm-branch-state="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-branch-state-edit>
<el-drawer title="编辑机构内所有项目指标汇总" :visible.sync="editFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-branch-state-edit op-type="edit" :xm-branch-state="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-branch-state-edit>
</el-drawer> </el-drawer>
<!--新增 XmBranchState 机构内所有项目指标汇总界面--> <!--新增 XmBranchState 机构内所有项目指标汇总界面-->
<el-drawer title="新增机构内所有项目指标汇总" :visible.sync="addFormVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-branch-state-add :xm-branch-state="addForm" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-branch-state-add>
<el-drawer title="新增机构内所有项目指标汇总" :visible.sync="addFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-branch-state-edit op-type="add" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-branch-state-edit>
</el-drawer> </el-drawer>
</el-row>
</el-row>
</section> </section>
</template> </template>
<script> <script>
import util from '@/common/js/util';// import util from '@/common/js/util';//
import config from '@/common/config';// import config from '@/common/config';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { listXmBranchState, delXmBranchState, batchDelXmBranchState,loadProjectStateToXmBranchState } from '@/api/xm/core/xmBranchState';
import XmBranchStateAdd from './XmBranchStateAdd';//
import XmBranchStateEdit from './XmBranchStateEdit';//
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { listXmBranchState, delXmBranchState, batchDelXmBranchState } from '@/api/xm/core/xmBranchState';
import XmBranchStateEdit from './XmBranchStateEdit';//
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name:'xmBranchStateMng',
components: {
XmBranchStateEdit,
},
props:['visible'],
computed: { computed: {
...mapGetters([
'userInfo','roles'
])
...mapGetters(['userInfo']),
},
watch:{
visible(val){
if(val==true){
this.initData();
this.searchXmBranchStates()
}
}
}, },
data() { data() {
return { return {
@ -119,24 +138,18 @@
load:{ list: false, edit: false, del: false, add: false },//... load:{ list: false, edit: false, del: false, add: false },//...
sels: [],// sels: [],//
dicts:{ dicts:{
//sex:[],
},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
//sex: [{id:'1',name:''},{id:'2',name:''}]
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
addFormVisible: false,//xmBranchState addFormVisible: false,//xmBranchState
//xmBranchState
addForm: { addForm: {
bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',id:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:''
bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',projectCnt:'',productBudgetWorkload:'',productActWorkload:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
}, },
editFormVisible: false,// editFormVisible: false,//
//xmBranchState
editForm: { editForm: {
bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',id:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:''
bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',projectCnt:'',productBudgetWorkload:'',productActWorkload:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
}, },
maxTableHeight:300, maxTableHeight:300,
/**begin 自定义属性请在下面加 请加备注**/
/**end 自定义属性请在上面加 请加备注**/
} }
},//end data },//end data
methods: { methods: {
@ -150,14 +163,18 @@
}, },
// obj.order=ascending/descending, asc/desc ; obj.prop=, // obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){ sortChange( obj ){
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
if(obj.order==null){
this.pageInfo.orderFields=[];
this.pageInfo.orderDirs=[];
}else{ }else{
dir='desc';
}
if(obj.prop=='xxx'){
this.pageInfo.orderFields=['xxx'];
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
this.pageInfo.orderFields=[util.toLine(obj.prop)];
this.pageInfo.orderDirs=[dir]; this.pageInfo.orderDirs=[dir];
} }
this.getXmBranchStates(); this.getXmBranchStates();
@ -181,12 +198,10 @@
} }
params.orderBy= orderBys.join(",") params.orderBy= orderBys.join(",")
} }
if(this.filters.key!==""){
//params.xxx=this.filters.key
}else{
//params.xxx=xxxxx
if(this.filters.key){
params.key=this.filters.key
} }
params.branchId=this.userInfo.branchId
this.load.list = true; this.load.list = true;
listXmBranchState(params).then((res) => { listXmBranchState(params).then((res) => {
var tips=res.data.tips; var tips=res.data.tips;
@ -195,7 +210,7 @@
this.pageInfo.count=false; this.pageInfo.count=false;
this.xmBranchStates = res.data.data; this.xmBranchStates = res.data.data;
}else{ }else{
this.$notify({showClose: true, message: tips.msg, type: 'error' });
this.$notify({ showClose:true, message: tips.msg, type: 'error' });
} }
this.load.list = false; this.load.list = false;
}).catch( err => this.load.list = false ); }).catch( err => this.load.list = false );
@ -229,7 +244,7 @@
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.load.del=true; this.load.del=true;
let params = { id: row.id };
let params = { branchId:row.branchId };
delXmBranchState(params).then((res) => { delXmBranchState(params).then((res) => {
this.load.del=false; this.load.del=false;
var tips=res.data.tips; var tips=res.data.tips;
@ -237,75 +252,54 @@
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmBranchStates(); this.getXmBranchStates();
} }
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false ); }).catch( err => this.load.del=false );
}); });
}, },
//xmBranchState //xmBranchState
batchDel: function () { batchDel: function () {
if(this.sels.length<=0){
return;
}
var params=this.sels.map(i=>{
return { branchId:i.branchId}
})
this.$confirm('确认删除选中记录吗?', '提示', { this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.load.del=true; this.load.del=true;
batchDelXmBranchState(this.sels).then((res) => {
batchDelXmBranchState(params).then((res) => {
this.load.del=false; this.load.del=false;
var tips=res.data.tips; var tips=res.data.tips;
if( tips.isOk ){ if( tips.isOk ){
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmBranchStates(); this.getXmBranchStates();
} }
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false ); }).catch( err => this.load.del=false );
}); });
}, },
rowClick: function(row, event, column){ rowClick: function(row, event, column){
this.editForm=row
this.$emit('row-click',row, event, column);// @row-click="rowClick" this.$emit('row-click',row, event, column);// @row-click="rowClick"
}, },
loadProjectStateToXmBranchState(){
this.load.edit=true;
loadProjectStateToXmBranchState({branchId:this.userInfo.branchId}).then(res=>{
this.load.edit=false;
var tips = res.data.tips;
if(tips.isOk){
this.getXmBranchStates()
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.edit=false )
},
/**begin 自定义函数请在下面加**/
showXmBranchDatav(){
this.$router.push({
name: "branchDatavFullScreen"
});
}
initData: function(){
/**end 自定义函数请在上面加**/
},
},//end methods },//end methods
components: {
'xm-branch-state-add':XmBranchStateAdd,
'xm-branch-state-edit':XmBranchStateEdit,
//
},
mounted() { mounted() {
this.$nextTick(() => { this.$nextTick(() => {
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el);
this.getXmBranchStates();
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.searchXmBranchStates();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmBranchStateTable.$el)
}); });
/**
initSimpleDicts( "all",["sex","grade"] ).then(res=>{
if(res.data.tips.isOk){
this.dicts=res.data.data
}
});
**/
} }
} }
</script> </script>
<style scoped> <style scoped>
</style> </style>

309
src/views/xm/core/xmBranchStateHis/XmBranchStateHisEdit.vue

@ -0,0 +1,309 @@
<template>
<section class="page-container padding">
<el-row class="page-header">
</el-row>
<el-row class="page-main" :style="{overflowX:'auto',height:maxTableHeight+'px'}" ref="table">
<!--编辑界面 XmBranchStateHis 机构内所有项目指标汇总-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
<el-form-item label="统计日期yyyy-mm-dd类型" prop="bizDate">
<el-input v-model="editForm.bizDate" placeholder="统计日期yyyy-mm-dd类型"></el-input>
</el-form-item>
<el-form-item label="文件数据" prop="totalFileCnt">
<el-input-number v-model="editForm.totalFileCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="bug数目" prop="totalBugCnt">
<el-input-number v-model="editForm.totalBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="任务数" prop="totalTaskCnt">
<el-input-number v-model="editForm.totalTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="项目总非人力预算-来自项目表" prop="totalBudgetNouserAmount">
<el-input v-model="editForm.totalBudgetNouserAmount" placeholder="项目总非人力预算-来自项目表"></el-input>
</el-form-item>
<el-form-item label="总参与人数" prop="totalStaffCnt">
<el-input-number v-model="editForm.totalStaffCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="统计执行日期" prop="calcTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.calcTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖" prop="calcStatus">
<el-input v-model="editForm.calcStatus" placeholder="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖"></el-input>
</el-form-item>
<el-form-item label="项目总非人力成本" prop="totalCostNouserAmount">
<el-input v-model="editForm.totalCostNouserAmount" placeholder="项目总非人力成本"></el-input>
</el-form-item>
<el-form-item label="已关闭bug总数" prop="totalClosedBugCnt">
<el-input-number v-model="editForm.totalClosedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已解决bug总数" prop="totalResolvedBugCnt">
<el-input-number v-model="editForm.totalResolvedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已完成任务总数-来自任务表" prop="totalCompleteTaskCnt">
<el-input-number v-model="editForm.totalCompleteTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="项目阶段计划数" prop="totalPhaseCnt">
<el-input-number v-model="editForm.totalPhaseCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="项目阶段计划已完成数" prop="totalCompletePhaseCnt">
<el-input-number v-model="editForm.totalCompletePhaseCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="待付款总金额" prop="totalNeedPayAmount">
<el-input v-model="editForm.totalNeedPayAmount" placeholder="待付款总金额"></el-input>
</el-form-item>
<el-form-item label="已付款总金额" prop="totalFinishPayAmount">
<el-input v-model="editForm.totalFinishPayAmount" placeholder="已付款总金额"></el-input>
</el-form-item>
<el-form-item label="待收款总金额" prop="totalNeedColAmount">
<el-input v-model="editForm.totalNeedColAmount" placeholder="待收款总金额"></el-input>
</el-form-item>
<el-form-item label="已收款总金额" prop="totalFinishColAmount">
<el-input v-model="editForm.totalFinishColAmount" placeholder="已收款总金额"></el-input>
</el-form-item>
<el-form-item label="项目总人力成本" prop="totalCostUserAmount">
<el-input v-model="editForm.totalCostUserAmount" placeholder="项目总人力成本"></el-input>
</el-form-item>
<el-form-item label="项目总内部人力预算-来自项目表" prop="totalBudgetIuserAmount">
<el-input v-model="editForm.totalBudgetIuserAmount" placeholder="项目总内部人力预算-来自项目表"></el-input>
</el-form-item>
<el-form-item label="项目总预算工作量-来自项目表" prop="totalPlanWorkload">
<el-input v-model="editForm.totalPlanWorkload" placeholder="项目总预算工作量-来自项目表"></el-input>
</el-form-item>
<el-form-item label="项目风险总数" prop="totalRiskCnt">
<el-input-number v-model="editForm.totalRiskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已完成风险总数" prop="totalCompleteRiskCnt">
<el-input-number v-model="editForm.totalCompleteRiskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="机构编号" prop="branchId">
<el-input v-model="editForm.branchId" placeholder="机构编号"></el-input>
</el-form-item>
<el-form-item label="机构名称" prop="branchName">
<el-input v-model="editForm.branchName" placeholder="机构名称"></el-input>
</el-form-item>
<el-form-item label="项目总外购人力预算-来自项目表" prop="totalBudgetOuserAmount">
<el-input v-model="editForm.totalBudgetOuserAmount" placeholder="项目总外购人力预算-来自项目表"></el-input>
</el-form-item>
<el-form-item label="已完成工作量-来自计划中实际完成工作量" prop="totalCompleteWorkload">
<el-input v-model="editForm.totalCompleteWorkload" placeholder="已完成工作量-来自计划中实际完成工作量"></el-input>
</el-form-item>
<el-form-item label="项目总内部人力成本金额" prop="totalCostIuserAmount">
<el-input v-model="editForm.totalCostIuserAmount" placeholder="项目总内部人力成本金额"></el-input>
</el-form-item>
<el-form-item label="项目总外购人力成本金额" prop="totalCostOuserAmount">
<el-input v-model="editForm.totalCostOuserAmount" placeholder="项目总外购人力成本金额"></el-input>
</el-form-item>
<el-form-item label="项目进度0~100之间,来自任务表" prop="totalProgress">
<el-input v-model="editForm.totalProgress" placeholder="项目进度0~100之间,来自任务表"></el-input>
</el-form-item>
<el-form-item label="激活的bug总数" prop="totalActiveBugCnt">
<el-input-number v-model="editForm.totalActiveBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已解决bug总数" prop="totalConfirmedBugCnt">
<el-input-number v-model="editForm.totalConfirmedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="项目状态,0-初始,1-立项中,2-执行中,3-已结项,4-暂停" prop="projectStatus">
<el-input v-model="editForm.projectStatus" placeholder="项目状态,0-初始,1-立项中,2-执行中,3-已结项,4-暂停"></el-input>
</el-form-item>
<el-form-item label="实际总工作量,来自任务表" prop="totalActWorkload">
<el-input v-model="editForm.totalActWorkload" placeholder="实际总工作量,来自任务表"></el-input>
</el-form-item>
<el-form-item label="实际外购总工作量,来自任务表" prop="totalActOutWorkload">
<el-input v-model="editForm.totalActOutWorkload" placeholder="实际外购总工作量,来自任务表"></el-input>
</el-form-item>
<el-form-item label="实际内部总工作量,来自任务表" prop="totalActInnerWorkload">
<el-input v-model="editForm.totalActInnerWorkload" placeholder="实际内部总工作量,来自任务表"></el-input>
</el-form-item>
<el-form-item label="已经分配到任务的总预算" prop="totalTaskBudgetCostAt">
<el-input v-model="editForm.totalTaskBudgetCostAt" placeholder="已经分配到任务的总预算"></el-input>
</el-form-item>
<el-form-item label="外购任务数,来自任务表" prop="totalTaskOutCnt">
<el-input v-model="editForm.totalTaskOutCnt" placeholder="外购任务数,来自任务表"></el-input>
</el-form-item>
<el-form-item label="待付款笔数" prop="totalNeedPayCnt">
<el-input v-model="editForm.totalNeedPayCnt" placeholder="待付款笔数"></el-input>
</el-form-item>
<el-form-item label="完成付款总比数" prop="totalFinishPayCnt">
<el-input v-model="editForm.totalFinishPayCnt" placeholder="完成付款总比数"></el-input>
</el-form-item>
<el-form-item label="已付款总人数" prop="totalFinishPayUserCnt">
<el-input v-model="editForm.totalFinishPayUserCnt" placeholder="已付款总人数"></el-input>
</el-form-item>
<el-form-item label="待付款总人数" prop="totalNeedPayUserCnt">
<el-input v-model="editForm.totalNeedPayUserCnt" placeholder="待付款总人数"></el-input>
</el-form-item>
<el-form-item label="内部人力总工作量-应该大于或等于阶段计划内部人力总成本" prop="totalPlanIuserWorkload">
<el-input v-model="editForm.totalPlanIuserWorkload" placeholder="内部人力总工作量-应该大于或等于阶段计划内部人力总成本"></el-input>
</el-form-item>
<el-form-item label="外购人力总工作量-应该大于或等于阶段计划外购人力总成本" prop="totalPlanOuserWorkload">
<el-input v-model="editForm.totalPlanOuserWorkload" placeholder="外购人力总工作量-应该大于或等于阶段计划外购人力总成本"></el-input>
</el-form-item>
<el-form-item label="测试案例总数" prop="testCases">
<el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="测试中案例总数" prop="execCases">
<el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="设计中案例总数" prop="designCases">
<el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="完成案例总数" prop="finishCases">
<el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="迭代数" prop="iterationCnt">
<el-input-number v-model="editForm.iterationCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="产品数" prop="productCnt">
<el-input-number v-model="editForm.productCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="故事数" prop="menuCnt">
<el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="项目数量" prop="projectCnt">
<el-input-number v-model="editForm.projectCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="产品总工时" prop="productBudgetWorkload">
<el-input v-model="editForm.productBudgetWorkload" placeholder="产品总工时"></el-input>
</el-form-item>
<el-form-item label="产品实际完成总工作量" prop="productActWorkload">
<el-input v-model="editForm.productActWorkload" placeholder="产品实际完成总工作量"></el-input>
</el-form-item>
<el-form-item label="预估完成工作量" prop="estimateWorkload">
<el-input v-model="editForm.estimateWorkload" placeholder="预估完成工作量"></el-input>
</el-form-item>
<el-form-item label="执行中任务数=任务表开始日期小于当前日期,进度<100的任务" prop="execTaskCnt">
<el-input-number v-model="editForm.execTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="待开始的任务数=任务表中开始日期大于当前日期的任务数" prop="toStartTaskCnt">
<el-input-number v-model="editForm.toStartTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="执行中需求=需求表中开始日期小于小于当前日期,进度<100的需求" prop="execMenuCnt">
<el-input-number v-model="editForm.execMenuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="待开始需求数=需求表中开始日期大于当前日期的需求数" prop="toStartMenuCnt">
<el-input-number v-model="editForm.toStartMenuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="最早开始日期" prop="minStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.minStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="最晚结束时间" prop="maxEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.maxEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-form>
</el-row>
<el-row class="page-bottom bottom-fixed">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="saveSubmit" :disabled="load.edit==true">提交</el-button>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //import
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { addXmBranchStateHis,editXmBranchStateHis } from '@/api/xm/core/xmBranchStateHis';
import { mapGetters } from 'vuex'
export default {
name:'xmBranchStateHisEdit',
components: {
},
computed: {
...mapGetters([ 'userInfo' ]),
},
props:['xmBranchStateHis','visible','opType'],
watch: {
'xmBranchStateHis':function( xmBranchStateHis ) {
if(xmBranchStateHis){
this.editForm = xmBranchStateHis;
}
},
'visible':function(visible) {
if(visible==true){
this.initData()
}
}
},
data() {
return {
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
editFormRules: {
bizDate: [
//{ required: true, message: 'yyyy-mm-dd', trigger: 'blur' }
]
},
editForm: {
bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',projectCnt:'',productBudgetWorkload:'',productActWorkload:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
},
maxTableHeight:300,
}//end return
},//end data
methods: {
// @cancel="editFormVisible=false"
handleCancel:function(){
this.$refs['editFormRef'].resetFields();
this.$emit('cancel');
},
//XmBranchStateHis @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.editFormRef.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true
let params = Object.assign({}, this.editForm);
var func=addXmBranchStateHis
if(this.currOpType=='edit'){
func=editXmBranchStateHis
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.editForm=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
});
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
}
});
},
initData: function(){
this.currOpType=this.opType
if(this.xmBranchStateHis){
this.editForm = Object.assign({},this.xmBranchStateHis);
}
if(this.opType=='edit'){
}else{
}
},
},//end method
mounted() {
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
});
}
}
</script>
<style scoped>
</style>

305
src/views/xm/core/xmBranchStateHis/XmBranchStateHisMng.vue

@ -0,0 +1,305 @@
<template>
<section class="page-container border padding">
<el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchXmBranchStateHiss" icon="el-icon-search">查询</el-button>
<el-button type="primary" @click="showAdd" icon="el-icon-plus"> </el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true" icon="el-icon-delete"></el-button>
</el-row>
<el-row class="padding-top">
<!--列表 XmBranchStateHis 机构内所有项目指标汇总-->
<el-table ref="xmBranchStateHisTable" :data="xmBranchStateHiss" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column sortable type="index" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="bizDate" label="统计日期yyyy-mm-dd类型" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFileCnt" label="文件数据" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBugCnt" label="bug数目" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskCnt" label="任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetNouserAmount" label="项目总非人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalStaffCnt" label="总参与人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcTime" label="统计执行日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcStatus" label="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostNouserAmount" label="项目总非人力成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalClosedBugCnt" label="已关闭bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalResolvedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteTaskCnt" label="已完成任务总数-来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPhaseCnt" label="项目阶段计划数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompletePhaseCnt" label="项目阶段计划已完成数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayAmount" label="待付款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayAmount" label="已付款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedColAmount" label="待收款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishColAmount" label="已收款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostUserAmount" label="项目总人力成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetIuserAmount" label="项目总内部人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanWorkload" label="项目总预算工作量-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalRiskCnt" label="项目风险总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteRiskCnt" label="已完成风险总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="branchId" label="机构编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="branchName" label="机构名称" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetOuserAmount" label="项目总外购人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteWorkload" label="已完成工作量-来自计划中实际完成工作量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostIuserAmount" label="项目总内部人力成本金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostOuserAmount" label="项目总外购人力成本金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalProgress" label="项目进度0~100之间,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActiveBugCnt" label="激活的bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalConfirmedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectStatus" label="项目状态,0-初始,1-立项中,2-执行中,3-已结项,4-暂停" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActWorkload" label="实际总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActOutWorkload" label="实际外购总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActInnerWorkload" label="实际内部总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskBudgetCostAt" label="已经分配到任务的总预算" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskOutCnt" label="外购任务数,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayCnt" label="待付款笔数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayCnt" label="完成付款总比数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayUserCnt" label="已付款总人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayUserCnt" label="待付款总人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanIuserWorkload" label="内部人力总工作量-应该大于或等于阶段计划内部人力总成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanOuserWorkload" label="外购人力总工作量-应该大于或等于阶段计划外购人力总成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="testCases" label="测试案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execCases" label="测试中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="designCases" label="设计中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishCases" label="完成案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="iterationCnt" label="迭代数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productCnt" label="产品数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="menuCnt" label="故事数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectCnt" label="项目数量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productBudgetWorkload" label="产品总工时" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productActWorkload" label="产品实际完成总工作量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="estimateWorkload" label="预估完成工作量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execTaskCnt" label="执行中任务数=任务表开始日期小于当前日期,进度<100的任务" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="toStartTaskCnt" label="待开始的任务数=任务表中开始日期大于当前日期的任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execMenuCnt" label="执行中需求=需求表中开始日期小于小于当前日期,进度<100的需求" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="toStartMenuCnt" label="待开始需求数=需求表中开始日期大于当前日期的需求数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="minStartTime" label="最早开始日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="maxEndTime" label="最晚结束时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template scope="scope">
<el-button type="primary" @click="showEdit( scope.row,scope.$index)" icon="el-icon-edit"></el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)" icon="el-icon-delete"></el-button>
</template>
</el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row>
<el-row>
<!--编辑 XmBranchStateHis 机构内所有项目指标汇总界面-->
<el-drawer title="编辑机构内所有项目指标汇总" :visible.sync="editFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-branch-state-his-edit op-type="edit" :xm-branch-state-his="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-branch-state-his-edit>
</el-drawer>
<!--新增 XmBranchStateHis 机构内所有项目指标汇总界面-->
<el-drawer title="新增机构内所有项目指标汇总" :visible.sync="addFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-branch-state-his-edit op-type="add" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-branch-state-his-edit>
</el-drawer>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from '@/common/config';//
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { listXmBranchStateHis, delXmBranchStateHis, batchDelXmBranchStateHis } from '@/api/xm/core/xmBranchStateHis';
import XmBranchStateHisEdit from './XmBranchStateHisEdit';//
import { mapGetters } from 'vuex'
export default {
name:'xmBranchStateHisMng',
components: {
XmBranchStateHisEdit,
},
props:['visible'],
computed: {
...mapGetters(['userInfo']),
},
watch:{
visible(val){
if(val==true){
this.initData();
this.searchXmBranchStateHiss()
}
}
},
data() {
return {
filters: {
key: ''
},
xmBranchStateHiss: [],//
pageInfo:{//
total:0,//0>0
pageSize:10,//
count:false,//
pageNum:1,//1
orderFields:[],// ['sex','student_id']
orderDirs:[]// asc,desc ['asc','desc']
},
load:{ list: false, edit: false, del: false, add: false },//...
sels: [],//
dicts:{
//sex: [{id:'1',name:''},{id:'2',name:''}]
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
addFormVisible: false,//xmBranchStateHis
addForm: {
bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',projectCnt:'',productBudgetWorkload:'',productActWorkload:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
},
editFormVisible: false,//
editForm: {
bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',projectCnt:'',productBudgetWorkload:'',productActWorkload:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
},
maxTableHeight:300,
}
},//end data
methods: {
handleSizeChange(pageSize) {
this.pageInfo.pageSize=pageSize;
this.getXmBranchStateHiss();
},
handleCurrentChange(pageNum) {
this.pageInfo.pageNum = pageNum;
this.getXmBranchStateHiss();
},
// obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){
if(obj.order==null){
this.pageInfo.orderFields=[];
this.pageInfo.orderDirs=[];
}else{
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
this.pageInfo.orderFields=[util.toLine(obj.prop)];
this.pageInfo.orderDirs=[dir];
}
this.getXmBranchStateHiss();
},
searchXmBranchStateHiss(){
this.pageInfo.count=true;
this.getXmBranchStateHiss();
},
// XmBranchStateHis
getXmBranchStateHiss() {
let params = {
pageSize: this.pageInfo.pageSize,
pageNum: this.pageInfo.pageNum,
total: this.pageInfo.total,
count:this.pageInfo.count
};
if(this.pageInfo.orderFields!=null && this.pageInfo.orderFields.length>0){
let orderBys=[];
for(var i=0;i<this.pageInfo.orderFields.length;i++){
orderBys.push(this.pageInfo.orderFields[i]+" "+this.pageInfo.orderDirs[i])
}
params.orderBy= orderBys.join(",")
}
if(this.filters.key){
params.key=this.filters.key
}
this.load.list = true;
listXmBranchStateHis(params).then((res) => {
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.total = res.data.total;
this.pageInfo.count=false;
this.xmBranchStateHiss = res.data.data;
}else{
this.$notify({ showClose:true, message: tips.msg, type: 'error' });
}
this.load.list = false;
}).catch( err => this.load.list = false );
},
// XmBranchStateHis
showEdit: function ( row,index ) {
this.editFormVisible = true;
this.editForm = Object.assign({}, row);
},
// XmBranchStateHis
showAdd: function () {
this.addFormVisible = true;
//this.addForm=Object.assign({}, this.editForm);
},
afterAddSubmit(){
this.addFormVisible=false;
this.pageInfo.count=true;
this.getXmBranchStateHiss();
},
afterEditSubmit(){
this.editFormVisible=false;
},
//xmBranchStateHis
selsChange: function (sels) {
this.sels = sels;
},
//xmBranchStateHis
handleDel: function (row,index) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.load.del=true;
let params = { bizDate:row.bizDate, branchId:row.branchId };
delXmBranchStateHis(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.count=true;
this.getXmBranchStateHiss();
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false );
});
},
//xmBranchStateHis
batchDel: function () {
if(this.sels.length<=0){
return;
}
var params=this.sels.map(i=>{
return { bizDate:i.bizDate, branchId:i.branchId}
})
this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.load.del=true;
batchDelXmBranchStateHis(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;
if( tips.isOk ){
this.pageInfo.count=true;
this.getXmBranchStateHiss();
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false );
});
},
rowClick: function(row, event, column){
this.editForm=row
this.$emit('row-click',row, event, column);// @row-click="rowClick"
},
initData: function(){
},
},//end methods
mounted() {
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.searchXmBranchStateHiss();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmBranchStateHisTable.$el)
});
}
}
</script>
<style scoped>
</style>

156
src/views/xm/core/xmIterationState/XmIterationStateEdit.vue

@ -1,11 +1,10 @@
<template> <template>
<section class="page-container padding border">
<el-row>
<section class="page-container padding">
<el-row class="page-header">
</el-row>
<el-row class="page-main" :style="{overflowX:'auto',height:maxTableHeight+'px'}" ref="table">
<!--编辑界面 XmIterationState 迭代定义--> <!--编辑界面 XmIterationState 迭代定义-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
<el-form-item label="迭代编码" prop="id">
<el-input v-model="editForm.id" placeholder="迭代编码"></el-input>
</el-form-item>
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
<el-form-item label="已分配到任务的预算从任务表汇总而来" prop="distBudgetCost"> <el-form-item label="已分配到任务的预算从任务表汇总而来" prop="distBudgetCost">
<el-input v-model="editForm.distBudgetCost" placeholder="已分配到任务的预算从任务表汇总而来"></el-input> <el-input v-model="editForm.distBudgetCost" placeholder="已分配到任务的预算从任务表汇总而来"></el-input>
</el-form-item> </el-form-item>
@ -24,16 +23,16 @@
<el-form-item label="进度" prop="finishRate"> <el-form-item label="进度" prop="finishRate">
<el-input v-model="editForm.finishRate" placeholder="进度"></el-input> <el-input v-model="editForm.finishRate" placeholder="进度"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="测试例总数" prop="testCases">
<el-form-item label="测试例总数" prop="testCases">
<el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="测试中例总数" prop="execCases">
<el-form-item label="测试中例总数" prop="execCases">
<el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="设计中例总数" prop="designCases">
<el-form-item label="设计中例总数" prop="designCases">
<el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="完成例总数" prop="finishCases">
<el-form-item label="完成例总数" prop="finishCases">
<el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="关联项目数" prop="projectCnt"> <el-form-item label="关联项目数" prop="projectCnt">
@ -42,7 +41,7 @@
<el-form-item label="关联产品数" prop="productCnt"> <el-form-item label="关联产品数" prop="productCnt">
<el-input-number v-model="editForm.productCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.productCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="关联需求数" prop="menuCnt">
<el-form-item label="关联故事数" prop="menuCnt">
<el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="关联任务数" prop="taskCnt"> <el-form-item label="关联任务数" prop="taskCnt">
@ -66,93 +65,144 @@
<el-form-item label="迭代编号" prop="iterationId"> <el-form-item label="迭代编号" prop="iterationId">
<el-input v-model="editForm.iterationId" placeholder="迭代编号"></el-input> <el-input v-model="editForm.iterationId" placeholder="迭代编号"></el-input>
</el-form-item> </el-form-item>
<el-form-item>
<el-col :span="24" :offset="8">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="editSubmit" :disabled="load.edit==true">提交</el-button>
</el-col>
<el-form-item label="业务日期yyyy-MM-dd字符串" prop="bizDate">
<el-input v-model="editForm.bizDate" placeholder="业务日期yyyy-MM-dd字符串"></el-input>
</el-form-item>
<el-form-item label="已关闭bug总数" prop="closedBugCnt">
<el-input-number v-model="editForm.closedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已解决bug总数" prop="resolvedBugCnt">
<el-input-number v-model="editForm.resolvedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="激活的bug总数" prop="activeBugCnt">
<el-input-number v-model="editForm.activeBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已解决bug总数" prop="confirmedBugCnt">
<el-input-number v-model="editForm.confirmedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="bug总数" prop="bugCnt">
<el-input-number v-model="editForm.bugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" prop="estimateWorkload">
<el-input v-model="editForm.estimateWorkload" placeholder="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和"></el-input>
</el-form-item>
<el-form-item label="最早开始日期" prop="minStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.minStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="最晚结束时间" prop="maxEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.maxEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-row> </el-row>
<el-row class="page-bottom bottom-fixed">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="saveSubmit" :disabled="load.edit==true">提交</el-button>
</el-row>
</section> </section>
</template> </template>
<script> <script>
import util from '@/common/js/util';// import util from '@/common/js/util';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { editXmIterationState } from '@/api/xm/core/xmIterationState';
import config from "@/common/config"; //import
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { addXmIterationState,editXmIterationState } from '@/api/xm/core/xmIterationState';
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name:'xmIterationStateEdit',
components: {
},
computed: { computed: {
...mapGetters([
'userInfo','roles'
])
...mapGetters([ 'userInfo' ]),
}, },
props:['xmIterationState','visible'],
props:['xmIterationState','visible','opType'],
watch: { watch: {
'xmIterationState':function( xmIterationState ) { 'xmIterationState':function( xmIterationState ) {
this.editForm = xmIterationState;
if(xmIterationState){
this.editForm = xmIterationState;
}
}, },
'visible':function(visible) { 'visible':function(visible) {
if(visible==true){ if(visible==true){
//
this.initData()
} }
} }
}, },
data() { data() {
return { return {
dicts:{},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
load:{ list: false, edit: false, del: false, add: false },//...
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
editFormRules: { editFormRules: {
id: [
//{ required: true, message: '', trigger: 'blur' }
iterationId: [
//{ required: true, message: '', trigger: 'blur' }
] ]
}, },
// XmIterationState
editForm: { editForm: {
id:'',distBudgetCost:'',distBudgetWorkload:'',actCost:'',actWorkload:'',actStaffNum:'',finishRate:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',productCnt:'',menuCnt:'',taskCnt:'',finishTaskCnt:'',calcTime:'',iterationName:'',budgetCost:'',budgetWorkload:'',iterationId:''
}
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
/**end 在上面加自定义属性**/
distBudgetCost:'',distBudgetWorkload:'',actCost:'',actWorkload:'',actStaffNum:'',finishRate:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',productCnt:'',menuCnt:'',taskCnt:'',finishTaskCnt:'',calcTime:'',iterationName:'',budgetCost:'',budgetWorkload:'',iterationId:'',bizDate:'',closedBugCnt:'',resolvedBugCnt:'',activeBugCnt:'',confirmedBugCnt:'',bugCnt:'',estimateWorkload:'',minStartTime:'',maxEndTime:''
},
maxTableHeight:300,
}//end return }//end return
},//end data },//end data
methods: { methods: {
// @cancel="editFormVisible=false" // @cancel="editFormVisible=false"
handleCancel:function(){ handleCancel:function(){
this.$refs['editForm'].resetFields();
this.$refs['editFormRef'].resetFields();
this.$emit('cancel'); this.$emit('cancel');
}, },
//XmIterationState @submit="afterEditSubmit"
editSubmit: function () {
this.$refs.editForm.validate((valid) => {
//XmIterationState @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.editFormRef.validate((valid) => {
if (valid) { if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => { this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true this.load.edit=true
let params = Object.assign({}, this.editForm); let params = Object.assign({}, this.editForm);
editXmIterationState(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.$refs['editForm'].resetFields();
this.$emit('submit');// @submit="afterEditSubmit"
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
var func=addXmIterationState
if(this.currOpType=='edit'){
func=editXmIterationState
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.editForm=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
}); });
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
} }
}); });
}, },
/**begin 在下面加自定义方法,记得补上面的一个逗号**/
initData: function(){
this.currOpType=this.opType
if(this.xmIterationState){
this.editForm = Object.assign({},this.xmIterationState);
}
if(this.opType=='edit'){
}else{
}
},
/**end 在上面加自定义方法**/
},//end method },//end method
components: {
// 'xm-iteration-state-edit':XmIterationStateEdit
},
mounted() { mounted() {
this.editForm=Object.assign(this.editForm, this.xmIterationState);
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
});
} }
} }

194
src/views/xm/core/xmIterationState/XmIterationStateMng.vue

@ -1,72 +1,93 @@
<template> <template>
<section>
<el-row v-if="!xmIteration" class="page-main">
<section class="page-container border padding">
<el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input> <el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmIterationStates">查询</el-button>
</el-row>
<el-row class="page-main ">
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchXmIterationStates" icon="el-icon-search">查询</el-button>
<el-button type="primary" @click="showAdd" icon="el-icon-plus"> </el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true" icon="el-icon-delete"></el-button>
</el-row>
<el-row class="padding-top">
<!--列表 XmIterationState 迭代定义--> <!--列表 XmIterationState 迭代定义-->
<el-table ref="table" :height="maxTableHeight" :data="xmIterationStates" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column sortable type="index" width="45"></el-table-column>
<el-table-column prop="iterationName" label="迭代名称" min-width="80" ></el-table-column>
<el-table-column prop="finishRate" label="进度" min-width="80">
<template slot-scope="scope">
{{scope.row.finishRate}} %
<el-table ref="xmIterationStateTable" :data="xmIterationStates" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column sortable type="index" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="distBudgetCost" label="已分配到任务的预算从任务表汇总而来" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="distBudgetWorkload" label="已分配到任务的预算工作量从任务表汇总而来" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actCost" label="实际成本从任务表汇总而来" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actWorkload" label="实际工作量从任务表汇总而来" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actStaffNum" label="实际投入人员数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishRate" label="进度" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="testCases" label="测试案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execCases" label="测试中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="designCases" label="设计中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishCases" label="完成案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectCnt" label="关联项目数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productCnt" label="关联产品数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="menuCnt" label="关联故事数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="taskCnt" label="关联任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishTaskCnt" label="已完成的任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcTime" label="计算日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="iterationName" label="迭代名称" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="budgetCost" label="预算成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="budgetWorkload" label="预算工作量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="iterationId" label="迭代编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bizDate" label="业务日期yyyy-MM-dd字符串" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="closedBugCnt" label="已关闭bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="resolvedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="activeBugCnt" label="激活的bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="confirmedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bugCnt" label="bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="estimateWorkload" label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="minStartTime" label="最早开始日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="maxEndTime" label="最晚结束时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template scope="scope">
<el-button type="primary" @click="showEdit( scope.row,scope.$index)" icon="el-icon-edit"></el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)" icon="el-icon-delete"></el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="calcTime" label="计算日期" min-width="80" ></el-table-column>
<el-table-column prop="budgetCost" label="预算成本" min-width="80" ></el-table-column>
<el-table-column prop="budgetWorkload" label="预算工作量" min-width="80" ></el-table-column>
<el-table-column prop="distBudgetCost" label="已分配到任务的预算" min-width="80" ></el-table-column>
<el-table-column prop="distBudgetWorkload" label="已分配到任务的预算工作量" min-width="80" ></el-table-column>
<el-table-column prop="actCost" label="实际成本" min-width="80" ></el-table-column>
<el-table-column prop="actWorkload" label="实际工作量" min-width="80" ></el-table-column>
<el-table-column prop="actStaffNum" label="实际投入人员数" min-width="80" ></el-table-column>
<el-table-column prop="testCases" label="测试用例总数" min-width="80" ></el-table-column>
<el-table-column prop="execCases" label="测试中用例总数" min-width="80" ></el-table-column>
<el-table-column prop="designCases" label="设计中用例总数" min-width="80" ></el-table-column>
<el-table-column prop="finishCases" label="完成用例总数" min-width="80" ></el-table-column>
<el-table-column prop="projectCnt" label="关联项目数" min-width="80" ></el-table-column>
<el-table-column prop="productCnt" label="关联产品数" min-width="80" ></el-table-column>
<el-table-column prop="menuCnt" label="关联需求数" min-width="80" ></el-table-column>
<el-table-column prop="taskCnt" label="关联任务数" min-width="80" ></el-table-column>
<el-table-column prop="finishTaskCnt" label="已完成的任务数" min-width="80" ></el-table-column>
</el-table> </el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination> <el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row>
<el-row>
<!--编辑 XmIterationState 迭代定义界面--> <!--编辑 XmIterationState 迭代定义界面-->
<el-drawer title="编辑迭代定义" :visible.sync="editFormVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-iteration-state-edit :xm-iteration-state="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-iteration-state-edit>
<el-drawer title="编辑迭代定义" :visible.sync="editFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-iteration-state-edit op-type="edit" :xm-iteration-state="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-iteration-state-edit>
</el-drawer> </el-drawer>
<!--新增 XmIterationState 迭代定义界面--> <!--新增 XmIterationState 迭代定义界面-->
<el-drawer title="新增迭代定义" :visible.sync="addFormVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-iteration-state-add :xm-iteration-state="addForm" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-iteration-state-add>
<el-drawer title="新增迭代定义" :visible.sync="addFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-iteration-state-edit op-type="add" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-iteration-state-edit>
</el-drawer> </el-drawer>
</el-row>
</el-row>
</section> </section>
</template> </template>
<script> <script>
import util from '@/common/js/util';// import util from '@/common/js/util';//
import config from '@/common/config';// import config from '@/common/config';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { listXmIterationState, delXmIterationState, batchDelXmIterationState } from '@/api/xm/core/xmIterationState'; import { listXmIterationState, delXmIterationState, batchDelXmIterationState } from '@/api/xm/core/xmIterationState';
import XmIterationStateAdd from './XmIterationStateAdd';//
import XmIterationStateEdit from './XmIterationStateEdit';//
import XmIterationStateEdit from './XmIterationStateEdit';//
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name:'xmIterationStateMng',
components: {
XmIterationStateEdit,
},
props:['visible'],
computed: { computed: {
...mapGetters([
'userInfo','roles'
])
...mapGetters(['userInfo']),
}, },
props:['xmIteration'],
watch:{ watch:{
xmIteration(xmIteration){
this.getXmIterationStates();
}
visible(val){
if(val==true){
this.initData();
this.searchXmIterationStates()
}
}
}, },
data() { data() {
return { return {
@ -85,24 +106,18 @@
load:{ list: false, edit: false, del: false, add: false },//... load:{ list: false, edit: false, del: false, add: false },//...
sels: [],// sels: [],//
dicts:{ dicts:{
//sex:[],
},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
//sex: [{id:'1',name:''},{id:'2',name:''}]
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
addFormVisible: false,//xmIterationState addFormVisible: false,//xmIterationState
//xmIterationState
addForm: { addForm: {
id:'',distBudgetCost:'',distBudgetWorkload:'',actCost:'',actWorkload:'',actStaffNum:'',finishRate:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',productCnt:'',menuCnt:'',taskCnt:'',finishTaskCnt:'',calcTime:'',iterationName:'',budgetCost:'',budgetWorkload:'',iterationId:''
distBudgetCost:'',distBudgetWorkload:'',actCost:'',actWorkload:'',actStaffNum:'',finishRate:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',productCnt:'',menuCnt:'',taskCnt:'',finishTaskCnt:'',calcTime:'',iterationName:'',budgetCost:'',budgetWorkload:'',iterationId:'',bizDate:'',closedBugCnt:'',resolvedBugCnt:'',activeBugCnt:'',confirmedBugCnt:'',bugCnt:'',estimateWorkload:'',minStartTime:'',maxEndTime:''
}, },
editFormVisible: false,// editFormVisible: false,//
//xmIterationState
editForm: { editForm: {
id:'',distBudgetCost:'',distBudgetWorkload:'',actCost:'',actWorkload:'',actStaffNum:'',finishRate:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',productCnt:'',menuCnt:'',taskCnt:'',finishTaskCnt:'',calcTime:'',iterationName:'',budgetCost:'',budgetWorkload:'',iterationId:''
distBudgetCost:'',distBudgetWorkload:'',actCost:'',actWorkload:'',actStaffNum:'',finishRate:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',productCnt:'',menuCnt:'',taskCnt:'',finishTaskCnt:'',calcTime:'',iterationName:'',budgetCost:'',budgetWorkload:'',iterationId:'',bizDate:'',closedBugCnt:'',resolvedBugCnt:'',activeBugCnt:'',confirmedBugCnt:'',bugCnt:'',estimateWorkload:'',minStartTime:'',maxEndTime:''
}, },
maxTableHeight:300, maxTableHeight:300,
/**begin 自定义属性请在下面加 请加备注**/
/**end 自定义属性请在上面加 请加备注**/
} }
},//end data },//end data
methods: { methods: {
@ -116,14 +131,18 @@
}, },
// obj.order=ascending/descending, asc/desc ; obj.prop=, // obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){ sortChange( obj ){
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
if(obj.order==null){
this.pageInfo.orderFields=[];
this.pageInfo.orderDirs=[];
}else{ }else{
dir='desc';
}
if(obj.prop=='xxx'){
this.pageInfo.orderFields=['xxx'];
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
this.pageInfo.orderFields=[util.toLine(obj.prop)];
this.pageInfo.orderDirs=[dir]; this.pageInfo.orderDirs=[dir];
} }
this.getXmIterationStates(); this.getXmIterationStates();
@ -147,14 +166,10 @@
} }
params.orderBy= orderBys.join(",") params.orderBy= orderBys.join(",")
} }
if(this.filters.key!==""){
//params.xxx=this.filters.key
}else{
//params.xxx=xxxxx
}
if(this.xmIteration){
params.iterationId=this.xmIteration.id
if(this.filters.key){
params.key=this.filters.key
} }
this.load.list = true; this.load.list = true;
listXmIterationState(params).then((res) => { listXmIterationState(params).then((res) => {
var tips=res.data.tips; var tips=res.data.tips;
@ -163,7 +178,7 @@
this.pageInfo.count=false; this.pageInfo.count=false;
this.xmIterationStates = res.data.data; this.xmIterationStates = res.data.data;
}else{ }else{
this.$notify({showClose: true, message: tips.msg, type: 'error' });
this.$notify({ showClose:true, message: tips.msg, type: 'error' });
} }
this.load.list = false; this.load.list = false;
}).catch( err => this.load.list = false ); }).catch( err => this.load.list = false );
@ -197,7 +212,7 @@
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.load.del=true; this.load.del=true;
let params = { id: row.id };
let params = { iterationId:row.iterationId };
delXmIterationState(params).then((res) => { delXmIterationState(params).then((res) => {
this.load.del=false; this.load.del=false;
var tips=res.data.tips; var tips=res.data.tips;
@ -205,59 +220,54 @@
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmIterationStates(); this.getXmIterationStates();
} }
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false ); }).catch( err => this.load.del=false );
}); });
}, },
//xmIterationState //xmIterationState
batchDel: function () { batchDel: function () {
if(this.sels.length<=0){
return;
}
var params=this.sels.map(i=>{
return { iterationId:i.iterationId}
})
this.$confirm('确认删除选中记录吗?', '提示', { this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.load.del=true; this.load.del=true;
batchDelXmIterationState(this.sels).then((res) => {
batchDelXmIterationState(params).then((res) => {
this.load.del=false; this.load.del=false;
var tips=res.data.tips; var tips=res.data.tips;
if( tips.isOk ){ if( tips.isOk ){
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmIterationStates(); this.getXmIterationStates();
} }
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false ); }).catch( err => this.load.del=false );
}); });
}, },
rowClick: function(row, event, column){ rowClick: function(row, event, column){
this.editForm=row
this.$emit('row-click',row, event, column);// @row-click="rowClick" this.$emit('row-click',row, event, column);// @row-click="rowClick"
}, },
/**begin 自定义函数请在下面加**/
initData: function(){
/**end 自定义函数请在上面加**/
},
},//end methods },//end methods
components: {
'xm-iteration-state-add':XmIterationStateAdd,
'xm-iteration-state-edit':XmIterationStateEdit
//
},
mounted() { mounted() {
this.$nextTick(() => { this.$nextTick(() => {
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el);
this.getXmIterationStates();
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.searchXmIterationStates();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmIterationStateTable.$el)
}); });
/**
initSimpleDicts( "all",["sex","grade"] ).then(res=>{
if(res.data.tips.isOk){
this.dicts=res.data.data
}
});
**/
} }
} }
</script> </script>
<style scoped> <style scoped>
</style> </style>

213
src/views/xm/core/xmIterationStateHis/XmIterationStateHisEdit.vue

@ -0,0 +1,213 @@
<template>
<section class="page-container padding">
<el-row class="page-header">
</el-row>
<el-row class="page-main" :style="{overflowX:'auto',height:maxTableHeight+'px'}" ref="table">
<!--编辑界面 XmIterationStateHis 迭代定义-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
<el-form-item label="已分配到任务的预算从任务表汇总而来" prop="distBudgetCost">
<el-input v-model="editForm.distBudgetCost" placeholder="已分配到任务的预算从任务表汇总而来"></el-input>
</el-form-item>
<el-form-item label="已分配到任务的预算工作量从任务表汇总而来" prop="distBudgetWorkload">
<el-input v-model="editForm.distBudgetWorkload" placeholder="已分配到任务的预算工作量从任务表汇总而来"></el-input>
</el-form-item>
<el-form-item label="实际成本从任务表汇总而来" prop="actCost">
<el-input v-model="editForm.actCost" placeholder="实际成本从任务表汇总而来"></el-input>
</el-form-item>
<el-form-item label="实际工作量从任务表汇总而来" prop="actWorkload">
<el-input v-model="editForm.actWorkload" placeholder="实际工作量从任务表汇总而来"></el-input>
</el-form-item>
<el-form-item label="实际投入人员数" prop="actStaffNum">
<el-input v-model="editForm.actStaffNum" placeholder="实际投入人员数"></el-input>
</el-form-item>
<el-form-item label="进度" prop="finishRate">
<el-input v-model="editForm.finishRate" placeholder="进度"></el-input>
</el-form-item>
<el-form-item label="测试案例总数" prop="testCases">
<el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="测试中案例总数" prop="execCases">
<el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="设计中案例总数" prop="designCases">
<el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="完成案例总数" prop="finishCases">
<el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="关联项目数" prop="projectCnt">
<el-input-number v-model="editForm.projectCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="关联产品数" prop="productCnt">
<el-input-number v-model="editForm.productCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="关联故事数" prop="menuCnt">
<el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="关联任务数" prop="taskCnt">
<el-input-number v-model="editForm.taskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已完成的任务数" prop="finishTaskCnt">
<el-input-number v-model="editForm.finishTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="计算日期" prop="calcTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.calcTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="迭代名称" prop="iterationName">
<el-input v-model="editForm.iterationName" placeholder="迭代名称"></el-input>
</el-form-item>
<el-form-item label="预算成本" prop="budgetCost">
<el-input v-model="editForm.budgetCost" placeholder="预算成本"></el-input>
</el-form-item>
<el-form-item label="预算工作量" prop="budgetWorkload">
<el-input v-model="editForm.budgetWorkload" placeholder="预算工作量"></el-input>
</el-form-item>
<el-form-item label="迭代编号" prop="iterationId">
<el-input v-model="editForm.iterationId" placeholder="迭代编号"></el-input>
</el-form-item>
<el-form-item label="业务日期yyyy-MM-dd字符串" prop="bizDate">
<el-input v-model="editForm.bizDate" placeholder="业务日期yyyy-MM-dd字符串"></el-input>
</el-form-item>
<el-form-item label="已关闭bug总数" prop="closedBugCnt">
<el-input-number v-model="editForm.closedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已解决bug总数" prop="resolvedBugCnt">
<el-input-number v-model="editForm.resolvedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="激活的bug总数" prop="activeBugCnt">
<el-input-number v-model="editForm.activeBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已解决bug总数" prop="confirmedBugCnt">
<el-input-number v-model="editForm.confirmedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="bug总数" prop="bugCnt">
<el-input-number v-model="editForm.bugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" prop="estimateWorkload">
<el-input v-model="editForm.estimateWorkload" placeholder="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和"></el-input>
</el-form-item>
<el-form-item label="最早开始日期" prop="minStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.minStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="最晚结束时间" prop="maxEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.maxEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-form>
</el-row>
<el-row class="page-bottom bottom-fixed">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="saveSubmit" :disabled="load.edit==true">提交</el-button>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //import
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { addXmIterationStateHis,editXmIterationStateHis } from '@/api/xm/core/xmIterationStateHis';
import { mapGetters } from 'vuex'
export default {
name:'xmIterationStateHisEdit',
components: {
},
computed: {
...mapGetters([ 'userInfo' ]),
},
props:['xmIterationStateHis','visible','opType'],
watch: {
'xmIterationStateHis':function( xmIterationStateHis ) {
if(xmIterationStateHis){
this.editForm = xmIterationStateHis;
}
},
'visible':function(visible) {
if(visible==true){
this.initData()
}
}
},
data() {
return {
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
editFormRules: {
iterationId: [
//{ required: true, message: '', trigger: 'blur' }
]
},
editForm: {
distBudgetCost:'',distBudgetWorkload:'',actCost:'',actWorkload:'',actStaffNum:'',finishRate:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',productCnt:'',menuCnt:'',taskCnt:'',finishTaskCnt:'',calcTime:'',iterationName:'',budgetCost:'',budgetWorkload:'',iterationId:'',bizDate:'',closedBugCnt:'',resolvedBugCnt:'',activeBugCnt:'',confirmedBugCnt:'',bugCnt:'',estimateWorkload:'',minStartTime:'',maxEndTime:''
},
maxTableHeight:300,
}//end return
},//end data
methods: {
// @cancel="editFormVisible=false"
handleCancel:function(){
this.$refs['editFormRef'].resetFields();
this.$emit('cancel');
},
//XmIterationStateHis @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.editFormRef.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true
let params = Object.assign({}, this.editForm);
var func=addXmIterationStateHis
if(this.currOpType=='edit'){
func=editXmIterationStateHis
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.editForm=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
});
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
}
});
},
initData: function(){
this.currOpType=this.opType
if(this.xmIterationStateHis){
this.editForm = Object.assign({},this.xmIterationStateHis);
}
if(this.opType=='edit'){
}else{
}
},
},//end method
mounted() {
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
});
}
}
</script>
<style scoped>
</style>

273
src/views/xm/core/xmIterationStateHis/XmIterationStateHisMng.vue

@ -0,0 +1,273 @@
<template>
<section class="page-container border padding">
<el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchXmIterationStateHiss" icon="el-icon-search">查询</el-button>
<el-button type="primary" @click="showAdd" icon="el-icon-plus"> </el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true" icon="el-icon-delete"></el-button>
</el-row>
<el-row class="padding-top">
<!--列表 XmIterationStateHis 迭代定义-->
<el-table ref="xmIterationStateHisTable" :data="xmIterationStateHiss" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column sortable type="index" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="distBudgetCost" label="已分配到任务的预算从任务表汇总而来" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="distBudgetWorkload" label="已分配到任务的预算工作量从任务表汇总而来" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actCost" label="实际成本从任务表汇总而来" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actWorkload" label="实际工作量从任务表汇总而来" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actStaffNum" label="实际投入人员数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishRate" label="进度" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="testCases" label="测试案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execCases" label="测试中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="designCases" label="设计中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishCases" label="完成案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectCnt" label="关联项目数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productCnt" label="关联产品数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="menuCnt" label="关联故事数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="taskCnt" label="关联任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishTaskCnt" label="已完成的任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcTime" label="计算日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="iterationName" label="迭代名称" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="budgetCost" label="预算成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="budgetWorkload" label="预算工作量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="iterationId" label="迭代编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bizDate" label="业务日期yyyy-MM-dd字符串" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="closedBugCnt" label="已关闭bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="resolvedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="activeBugCnt" label="激活的bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="confirmedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bugCnt" label="bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="estimateWorkload" label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="minStartTime" label="最早开始日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="maxEndTime" label="最晚结束时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template scope="scope">
<el-button type="primary" @click="showEdit( scope.row,scope.$index)" icon="el-icon-edit"></el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)" icon="el-icon-delete"></el-button>
</template>
</el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row>
<el-row>
<!--编辑 XmIterationStateHis 迭代定义界面-->
<el-drawer title="编辑迭代定义" :visible.sync="editFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-iteration-state-his-edit op-type="edit" :xm-iteration-state-his="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-iteration-state-his-edit>
</el-drawer>
<!--新增 XmIterationStateHis 迭代定义界面-->
<el-drawer title="新增迭代定义" :visible.sync="addFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-iteration-state-his-edit op-type="add" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-iteration-state-his-edit>
</el-drawer>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from '@/common/config';//
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { listXmIterationStateHis, delXmIterationStateHis, batchDelXmIterationStateHis } from '@/api/xm/core/xmIterationStateHis';
import XmIterationStateHisEdit from './XmIterationStateHisEdit';//
import { mapGetters } from 'vuex'
export default {
name:'xmIterationStateHisMng',
components: {
XmIterationStateHisEdit,
},
props:['visible'],
computed: {
...mapGetters(['userInfo']),
},
watch:{
visible(val){
if(val==true){
this.initData();
this.searchXmIterationStateHiss()
}
}
},
data() {
return {
filters: {
key: ''
},
xmIterationStateHiss: [],//
pageInfo:{//
total:0,//0>0
pageSize:10,//
count:false,//
pageNum:1,//1
orderFields:[],// ['sex','student_id']
orderDirs:[]// asc,desc ['asc','desc']
},
load:{ list: false, edit: false, del: false, add: false },//...
sels: [],//
dicts:{
//sex: [{id:'1',name:''},{id:'2',name:''}]
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
addFormVisible: false,//xmIterationStateHis
addForm: {
distBudgetCost:'',distBudgetWorkload:'',actCost:'',actWorkload:'',actStaffNum:'',finishRate:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',productCnt:'',menuCnt:'',taskCnt:'',finishTaskCnt:'',calcTime:'',iterationName:'',budgetCost:'',budgetWorkload:'',iterationId:'',bizDate:'',closedBugCnt:'',resolvedBugCnt:'',activeBugCnt:'',confirmedBugCnt:'',bugCnt:'',estimateWorkload:'',minStartTime:'',maxEndTime:''
},
editFormVisible: false,//
editForm: {
distBudgetCost:'',distBudgetWorkload:'',actCost:'',actWorkload:'',actStaffNum:'',finishRate:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',productCnt:'',menuCnt:'',taskCnt:'',finishTaskCnt:'',calcTime:'',iterationName:'',budgetCost:'',budgetWorkload:'',iterationId:'',bizDate:'',closedBugCnt:'',resolvedBugCnt:'',activeBugCnt:'',confirmedBugCnt:'',bugCnt:'',estimateWorkload:'',minStartTime:'',maxEndTime:''
},
maxTableHeight:300,
}
},//end data
methods: {
handleSizeChange(pageSize) {
this.pageInfo.pageSize=pageSize;
this.getXmIterationStateHiss();
},
handleCurrentChange(pageNum) {
this.pageInfo.pageNum = pageNum;
this.getXmIterationStateHiss();
},
// obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){
if(obj.order==null){
this.pageInfo.orderFields=[];
this.pageInfo.orderDirs=[];
}else{
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
this.pageInfo.orderFields=[util.toLine(obj.prop)];
this.pageInfo.orderDirs=[dir];
}
this.getXmIterationStateHiss();
},
searchXmIterationStateHiss(){
this.pageInfo.count=true;
this.getXmIterationStateHiss();
},
// XmIterationStateHis
getXmIterationStateHiss() {
let params = {
pageSize: this.pageInfo.pageSize,
pageNum: this.pageInfo.pageNum,
total: this.pageInfo.total,
count:this.pageInfo.count
};
if(this.pageInfo.orderFields!=null && this.pageInfo.orderFields.length>0){
let orderBys=[];
for(var i=0;i<this.pageInfo.orderFields.length;i++){
orderBys.push(this.pageInfo.orderFields[i]+" "+this.pageInfo.orderDirs[i])
}
params.orderBy= orderBys.join(",")
}
if(this.filters.key){
params.key=this.filters.key
}
this.load.list = true;
listXmIterationStateHis(params).then((res) => {
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.total = res.data.total;
this.pageInfo.count=false;
this.xmIterationStateHiss = res.data.data;
}else{
this.$notify({ showClose:true, message: tips.msg, type: 'error' });
}
this.load.list = false;
}).catch( err => this.load.list = false );
},
// XmIterationStateHis
showEdit: function ( row,index ) {
this.editFormVisible = true;
this.editForm = Object.assign({}, row);
},
// XmIterationStateHis
showAdd: function () {
this.addFormVisible = true;
//this.addForm=Object.assign({}, this.editForm);
},
afterAddSubmit(){
this.addFormVisible=false;
this.pageInfo.count=true;
this.getXmIterationStateHiss();
},
afterEditSubmit(){
this.editFormVisible=false;
},
//xmIterationStateHis
selsChange: function (sels) {
this.sels = sels;
},
//xmIterationStateHis
handleDel: function (row,index) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.load.del=true;
let params = { iterationId:row.iterationId, bizDate:row.bizDate };
delXmIterationStateHis(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.count=true;
this.getXmIterationStateHiss();
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false );
});
},
//xmIterationStateHis
batchDel: function () {
if(this.sels.length<=0){
return;
}
var params=this.sels.map(i=>{
return { iterationId:i.iterationId, bizDate:i.bizDate}
})
this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.load.del=true;
batchDelXmIterationStateHis(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;
if( tips.isOk ){
this.pageInfo.count=true;
this.getXmIterationStateHiss();
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false );
});
},
rowClick: function(row, event, column){
this.editForm=row
this.$emit('row-click',row, event, column);// @row-click="rowClick"
},
initData: function(){
},
},//end methods
mounted() {
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.searchXmIterationStateHiss();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmIterationStateHisTable.$el)
});
}
}
</script>
<style scoped>
</style>

145
src/views/xm/core/xmProductState/XmProductStateEdit.vue

@ -1,11 +1,10 @@
<template> <template>
<section class="page-container padding border">
<el-row>
<section class="page-container padding">
<el-row class="page-header">
</el-row>
<el-row class="page-main" :style="{overflowX:'auto',height:maxTableHeight+'px'}" ref="table">
<!--编辑界面 XmProductState 功能状态表,无需前端维护所有数据由汇总统计得出--> <!--编辑界面 XmProductState 功能状态表,无需前端维护所有数据由汇总统计得出-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
<el-form-item label="主键" prop="id">
<el-input v-model="editForm.id" placeholder="主键"></el-input>
</el-form-item>
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
<el-form-item label="开始时间" prop="planStartTime"> <el-form-item label="开始时间" prop="planStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.planStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker> <el-date-picker type="date" placeholder="选择日期" v-model="editForm.planStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
@ -87,16 +86,16 @@
<el-form-item label="产品名称" prop="productName"> <el-form-item label="产品名称" prop="productName">
<el-input v-model="editForm.productName" placeholder="产品名称"></el-input> <el-input v-model="editForm.productName" placeholder="产品名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="测试例总数" prop="testCases">
<el-form-item label="测试例总数" prop="testCases">
<el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="测试中例总数" prop="execCases">
<el-form-item label="测试中例总数" prop="execCases">
<el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="设计中例总数" prop="designCases">
<el-form-item label="设计中例总数" prop="designCases">
<el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="完成例总数" prop="finishCases">
<el-form-item label="完成例总数" prop="finishCases">
<el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="关联项目数" prop="projectCnt"> <el-form-item label="关联项目数" prop="projectCnt">
@ -111,93 +110,135 @@
<el-form-item label="已完成的任务总数" prop="finishTaskCnt"> <el-form-item label="已完成的任务总数" prop="finishTaskCnt">
<el-input-number v-model="editForm.finishTaskCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.finishTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item>
<el-col :span="24" :offset="8">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="editSubmit" :disabled="load.edit==true">提交</el-button>
</el-col>
<el-form-item label="业务日期yyyy-MM-dd字符串" prop="bizDate">
<el-input v-model="editForm.bizDate" placeholder="业务日期yyyy-MM-dd字符串"></el-input>
</el-form-item>
<el-form-item label="机构号码" prop="branchId">
<el-input v-model="editForm.branchId" placeholder="机构号码"></el-input>
</el-form-item>
<el-form-item label="bug总数" prop="bugCnt">
<el-input-number v-model="editForm.bugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="故事数" prop="menuCnt">
<el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="需求完成数" prop="menuFinishCnt">
<el-input-number v-model="editForm.menuFinishCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" prop="estimateWorkload">
<el-input v-model="editForm.estimateWorkload" placeholder="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-row> </el-row>
<el-row class="page-bottom bottom-fixed">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="saveSubmit" :disabled="load.edit==true">提交</el-button>
</el-row>
</section> </section>
</template> </template>
<script> <script>
import util from '@/common/js/util';// import util from '@/common/js/util';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { editXmProductState } from '@/api/xm/core/xmProductState';
import config from "@/common/config"; //import
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { addXmProductState,editXmProductState } from '@/api/xm/core/xmProductState';
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name:'xmProductStateEdit',
components: {
},
computed: { computed: {
...mapGetters([
'userInfo','roles'
])
...mapGetters([ 'userInfo' ]),
}, },
props:['xmProductState','visible'],
props:['xmProductState','visible','opType'],
watch: { watch: {
'xmProductState':function( xmProductState ) { 'xmProductState':function( xmProductState ) {
this.editForm = xmProductState;
if(xmProductState){
this.editForm = xmProductState;
}
}, },
'visible':function(visible) { 'visible':function(visible) {
if(visible==true){ if(visible==true){
//
this.initData()
} }
} }
}, },
data() { data() {
return { return {
dicts:{},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
load:{ list: false, edit: false, del: false, add: false },//...
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
editFormRules: { editFormRules: {
id: [
//{ required: true, message: '', trigger: 'blur' }
productId: [
//{ required: true, message: '', trigger: 'blur' }
] ]
}, },
// XmProductState ,
editForm: { editForm: {
id:'',planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',productId:'',productName:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',iterationCnt:'',taskCnt:'',finishTaskCnt:''
}
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
/**end 在上面加自定义属性**/
planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',productId:'',productName:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',iterationCnt:'',taskCnt:'',finishTaskCnt:'',bizDate:'',branchId:'',bugCnt:'',menuCnt:'',menuFinishCnt:'',estimateWorkload:''
},
maxTableHeight:300,
}//end return }//end return
},//end data },//end data
methods: { methods: {
// @cancel="editFormVisible=false" // @cancel="editFormVisible=false"
handleCancel:function(){ handleCancel:function(){
this.$refs['editForm'].resetFields();
this.$refs['editFormRef'].resetFields();
this.$emit('cancel'); this.$emit('cancel');
}, },
//XmProductState ,@submit="afterEditSubmit"
editSubmit: function () {
this.$refs.editForm.validate((valid) => {
//XmProductState ,@submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.editFormRef.validate((valid) => {
if (valid) { if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => { this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true this.load.edit=true
let params = Object.assign({}, this.editForm); let params = Object.assign({}, this.editForm);
editXmProductState(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.$refs['editForm'].resetFields();
this.$emit('submit');// @submit="afterEditSubmit"
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
var func=addXmProductState
if(this.currOpType=='edit'){
func=editXmProductState
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.editForm=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
}); });
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
} }
}); });
}, },
/**begin 在下面加自定义方法,记得补上面的一个逗号**/
initData: function(){
this.currOpType=this.opType
if(this.xmProductState){
this.editForm = Object.assign({},this.xmProductState);
}
if(this.opType=='edit'){
}else{
}
},
/**end 在上面加自定义方法**/
},//end method },//end method
components: {
// 'xm-product-state-edit':XmProductStateEdit
},
mounted() { mounted() {
this.editForm=Object.assign(this.editForm, this.xmProductState);
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
});
} }
} }

204
src/views/xm/core/xmProductState/XmProductStateMng.vue

@ -1,57 +1,106 @@
<template> <template>
<section class="page-container padding border">
<el-row v-if="!xmProduct">
<section class="page-container border padding">
<el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input> <el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmProductStates">查询</el-button>
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchXmProductStates" icon="el-icon-search">查询</el-button>
<el-button type="primary" @click="showAdd" icon="el-icon-plus"> </el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true" icon="el-icon-delete"></el-button>
</el-row> </el-row>
<el-row class="page-main ">
<el-row class="padding-top">
<!--列表 XmProductState 功能状态表,无需前端维护所有数据由汇总统计得出--> <!--列表 XmProductState 功能状态表,无需前端维护所有数据由汇总统计得出-->
<el-table ref="table" :height="tableHeight" :data="xmProductStates" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column sortable type="index" width="45"></el-table-column>
<el-table-column prop="productName" label="产品名称" min-width="80" ></el-table-column>
<el-table-column prop="calcTime" label="汇总时间" min-width="80" ></el-table-column>
<el-table-column prop="finishRate" label="总体进度" min-width="80" ></el-table-column>
<el-table-column prop="planWorkerCnt" label="总人数" min-width="80" ></el-table-column>
<el-table-column prop="projectCnt" label="关联项目数" min-width="80" ></el-table-column>
<el-table-column prop="iterationCnt" label="关联迭代数" min-width="80" ></el-table-column>
<el-table-column prop="taskCnt" label="任务总数" min-width="80" ></el-table-column>
<el-table-column prop="testCases" label="测试用例总数" min-width="80" ></el-table-column>
<el-table-column prop="finishTaskCnt" label="已完成的任务总数" min-width="80" ></el-table-column>
<el-table-column prop="actStartTime" label="实际开始时间" min-width="80" ></el-table-column>
<el-table-column prop="actEndTime" label="实际结束时间" min-width="80" ></el-table-column>
<el-table-column prop="planWorkload" label="计划工作量" min-width="80" ></el-table-column>
<el-table-column prop="actWorkload" label="实际工作量" min-width="80" ></el-table-column>
<el-table-column prop="planCostAmount" label="计划成本" min-width="80" ></el-table-column>
<el-table-column prop="actCostAmount" label="实际成本" min-width="80" ></el-table-column>
<el-table-column prop="planWorkhours" label="工时数" min-width="80" ></el-table-column>
<el-table-column prop="closedBugs" label="总关闭bugs" min-width="80" ></el-table-column>
<el-table-column prop="activeBugs" label="激活bugs" min-width="80" ></el-table-column>
<el-table-column prop="confirmedBugs" label="已确认bugs总数" min-width="80" ></el-table-column>
<el-table-column prop="resolvedBugs" label="已解决bugs总数" min-width="80" ></el-table-column>
<el-table-column prop="execCases" label="测试中用例总数" min-width="80" ></el-table-column>
<el-table-column prop="designCases" label="设计中用例总数" min-width="80" ></el-table-column>
<el-table-column prop="finishCases" label="完成用例总数" min-width="80" ></el-table-column>
<el-table ref="xmProductStateTable" :data="xmProductStates" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column sortable type="index" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="planStartTime" label="开始时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="planEndTime" label="结束时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actStartTime" label="实际开始时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actEndTime" label="实际结束时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="planWorkload" label="计划工作量,根据关联任务汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actWorkload" label="实际工作量,根据关联任务汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="planCostAmount" label="计划成本,根据关联任务汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actCostAmount" label="实际成本金额根据关联任务汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishRate" label="总体完成比例0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="demandRate" label="需求完成率0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="designRate" label="设计完成率0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="devRate" label="开发完成率0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="uatRate" label="uat测试完成率0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="sitRate" label="sit测试完成率0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="ctime" label="创建时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="ltime" label="更新时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="cuserid" label="创建人编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="cusername" label="创建人姓名" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcTime" label="汇总时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="planWorkhours" label="工时数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="planWorkerCnt" label="总人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="closedBugs" label="总关闭bugs" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="activeBugs" label="激活bugs" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="confirmedBugs" label="已确认bugs总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="resolvedBugs" label="已解决bugs总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productId" label="产品编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productName" label="产品名称" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="testCases" label="测试案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execCases" label="测试中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="designCases" label="设计中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishCases" label="完成案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectCnt" label="关联项目数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="iterationCnt" label="关联迭代数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="taskCnt" label="任务总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishTaskCnt" label="已完成的任务总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bizDate" label="业务日期yyyy-MM-dd字符串" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="branchId" label="机构号码" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bugCnt" label="bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="menuCnt" label="故事数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="menuFinishCnt" label="需求完成数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="estimateWorkload" label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template scope="scope">
<el-button type="primary" @click="showEdit( scope.row,scope.$index)" icon="el-icon-edit"></el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)" icon="el-icon-delete"></el-button>
</template>
</el-table-column>
</el-table> </el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination> <el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row> </el-row>
<el-row>
<!--编辑 XmProductState 功能状态表,无需前端维护所有数据由汇总统计得出界面-->
<el-drawer title="编辑功能状态表,无需前端维护,所有数据由汇总统计得出" :visible.sync="editFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-product-state-edit op-type="edit" :xm-product-state="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-product-state-edit>
</el-drawer>
<!--新增 XmProductState 功能状态表,无需前端维护所有数据由汇总统计得出界面-->
<el-drawer title="新增功能状态表,无需前端维护,所有数据由汇总统计得出" :visible.sync="addFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-product-state-edit op-type="add" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-product-state-edit>
</el-drawer>
</el-row>
</section> </section>
</template> </template>
<script> <script>
import util from '@/common/js/util';// import util from '@/common/js/util';//
import config from '@/common/config';// import config from '@/common/config';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { listXmProductState, delXmProductState, batchDelXmProductState } from '@/api/xm/core/xmProductState'; import { listXmProductState, delXmProductState, batchDelXmProductState } from '@/api/xm/core/xmProductState';
import XmProductStateEdit from './XmProductStateEdit';//
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name:'xmProductStateMng',
components: {
XmProductStateEdit,
},
props:['visible'],
computed: { computed: {
...mapGetters([
'userInfo','roles'
])
...mapGetters(['userInfo']),
},
watch:{
visible(val){
if(val==true){
this.initData();
this.searchXmProductStates()
}
}
}, },
props:['xmProduct'],
data() { data() {
return { return {
filters: { filters: {
@ -69,23 +118,18 @@
load:{ list: false, edit: false, del: false, add: false },//... load:{ list: false, edit: false, del: false, add: false },//...
sels: [],// sels: [],//
dicts:{ dicts:{
//sex:[],
},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
//sex: [{id:'1',name:''},{id:'2',name:''}]
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
addFormVisible: false,//xmProductState addFormVisible: false,//xmProductState
//xmProductState
addForm: { addForm: {
id:'',planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',productId:'',productName:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',iterationCnt:'',taskCnt:'',finishTaskCnt:''
planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',productId:'',productName:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',iterationCnt:'',taskCnt:'',finishTaskCnt:'',bizDate:'',branchId:'',bugCnt:'',menuCnt:'',menuFinishCnt:'',estimateWorkload:''
}, },
editFormVisible: false,// editFormVisible: false,//
//xmProductState
editForm: { editForm: {
id:'',planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',productId:'',productName:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',iterationCnt:'',taskCnt:'',finishTaskCnt:''
planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',productId:'',productName:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',iterationCnt:'',taskCnt:'',finishTaskCnt:'',bizDate:'',branchId:'',bugCnt:'',menuCnt:'',menuFinishCnt:'',estimateWorkload:''
}, },
/**begin 自定义属性请在下面加 请加备注**/
tableHeight:300,
/**end 自定义属性请在上面加 请加备注**/
maxTableHeight:300,
} }
},//end data },//end data
methods: { methods: {
@ -99,14 +143,18 @@
}, },
// obj.order=ascending/descending, asc/desc ; obj.prop=, // obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){ sortChange( obj ){
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
if(obj.order==null){
this.pageInfo.orderFields=[];
this.pageInfo.orderDirs=[];
}else{ }else{
dir='desc';
}
if(obj.prop=='xxx'){
this.pageInfo.orderFields=['xxx'];
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
this.pageInfo.orderFields=[util.toLine(obj.prop)];
this.pageInfo.orderDirs=[dir]; this.pageInfo.orderDirs=[dir];
} }
this.getXmProductStates(); this.getXmProductStates();
@ -130,14 +178,10 @@
} }
params.orderBy= orderBys.join(",") params.orderBy= orderBys.join(",")
} }
if(this.filters.key!==""){
//params.xxx=this.filters.key
}else{
//params.xxx=xxxxx
}
if(this.xmProduct){
params.productId=this.xmProduct.id
if(this.filters.key){
params.key=this.filters.key
} }
this.load.list = true; this.load.list = true;
listXmProductState(params).then((res) => { listXmProductState(params).then((res) => {
var tips=res.data.tips; var tips=res.data.tips;
@ -146,7 +190,7 @@
this.pageInfo.count=false; this.pageInfo.count=false;
this.xmProductStates = res.data.data; this.xmProductStates = res.data.data;
}else{ }else{
this.$notify({showClose: true, message: tips.msg, type: 'error' });
this.$notify({ showClose:true, message: tips.msg, type: 'error' });
} }
this.load.list = false; this.load.list = false;
}).catch( err => this.load.list = false ); }).catch( err => this.load.list = false );
@ -180,7 +224,7 @@
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.load.del=true; this.load.del=true;
let params = { id: row.id };
let params = { productId:row.productId };
delXmProductState(params).then((res) => { delXmProductState(params).then((res) => {
this.load.del=false; this.load.del=false;
var tips=res.data.tips; var tips=res.data.tips;
@ -188,60 +232,54 @@
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmProductStates(); this.getXmProductStates();
} }
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false ); }).catch( err => this.load.del=false );
}); });
}, },
//xmProductState //xmProductState
batchDel: function () { batchDel: function () {
if(this.sels.length<=0){
return;
}
var params=this.sels.map(i=>{
return { productId:i.productId}
})
this.$confirm('确认删除选中记录吗?', '提示', { this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.load.del=true; this.load.del=true;
batchDelXmProductState(this.sels).then((res) => {
batchDelXmProductState(params).then((res) => {
this.load.del=false; this.load.del=false;
var tips=res.data.tips; var tips=res.data.tips;
if( tips.isOk ){ if( tips.isOk ){
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmProductStates(); this.getXmProductStates();
} }
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false ); }).catch( err => this.load.del=false );
}); });
}, },
rowClick: function(row, event, column){ rowClick: function(row, event, column){
this.editForm=row
this.$emit('row-click',row, event, column);// @row-click="rowClick" this.$emit('row-click',row, event, column);// @row-click="rowClick"
}, },
/**begin 自定义函数请在下面加**/
initData: function(){
/**end 自定义函数请在上面加**/
},
},//end methods },//end methods
components: {
//
},
mounted() { mounted() {
this.$nextTick(() => { this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.searchXmProductStates();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmProductStateTable.$el)
this.tableHeight = util.calcTableMaxHeight(this.$refs.table.$$el);
this.getXmProductStates();
}); });
/**
initSimpleDicts( "all",["sex","grade"] ).then(res=>{
if(res.data.tips.isOk){
this.dicts=res.data.data
}
});
**/
} }
} }
</script> </script>
<style scoped> <style scoped>
</style> </style>

249
src/views/xm/core/xmProductStateHis/XmProductStateHisEdit.vue

@ -0,0 +1,249 @@
<template>
<section class="page-container padding">
<el-row class="page-header">
</el-row>
<el-row class="page-main" :style="{overflowX:'auto',height:maxTableHeight+'px'}" ref="table">
<!--编辑界面 XmProductStateHis 功能状态表,无需前端维护所有数据由汇总统计得出-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
<el-form-item label="开始时间" prop="planStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.planStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="planEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.planEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="实际开始时间" prop="actStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.actStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="实际结束时间" prop="actEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.actEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="计划工作量,根据关联任务汇总" prop="planWorkload">
<el-input v-model="editForm.planWorkload" placeholder="计划工作量,根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="实际工作量,根据关联任务汇总" prop="actWorkload">
<el-input v-model="editForm.actWorkload" placeholder="实际工作量,根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="计划成本,根据关联任务汇总" prop="planCostAmount">
<el-input v-model="editForm.planCostAmount" placeholder="计划成本,根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="实际成本金额根据关联任务汇总" prop="actCostAmount">
<el-input v-model="editForm.actCostAmount" placeholder="实际成本金额根据关联任务汇总"></el-input>
</el-form-item>
<el-form-item label="总体完成比例0-100之间,根据taskType进行汇总" prop="finishRate">
<el-input v-model="editForm.finishRate" placeholder="总体完成比例0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="需求完成率0-100之间,根据taskType进行汇总" prop="demandRate">
<el-input v-model="editForm.demandRate" placeholder="需求完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="设计完成率0-100之间,根据taskType进行汇总" prop="designRate">
<el-input v-model="editForm.designRate" placeholder="设计完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="开发完成率0-100之间,根据taskType进行汇总" prop="devRate">
<el-input v-model="editForm.devRate" placeholder="开发完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="uat测试完成率0-100之间,根据taskType进行汇总" prop="uatRate">
<el-input v-model="editForm.uatRate" placeholder="uat测试完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="sit测试完成率0-100之间,根据taskType进行汇总" prop="sitRate">
<el-input v-model="editForm.sitRate" placeholder="sit测试完成率0-100之间,根据taskType进行汇总"></el-input>
</el-form-item>
<el-form-item label="创建时间" prop="ctime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.ctime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="更新时间" prop="ltime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.ltime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="创建人编号" prop="cuserid">
<el-input v-model="editForm.cuserid" placeholder="创建人编号"></el-input>
</el-form-item>
<el-form-item label="创建人姓名" prop="cusername">
<el-input v-model="editForm.cusername" placeholder="创建人姓名"></el-input>
</el-form-item>
<el-form-item label="汇总时间" prop="calcTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.calcTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="工时数" prop="planWorkhours">
<el-input v-model="editForm.planWorkhours" placeholder="工时数"></el-input>
</el-form-item>
<el-form-item label="总人数" prop="planWorkerCnt">
<el-input v-model="editForm.planWorkerCnt" placeholder="总人数"></el-input>
</el-form-item>
<el-form-item label="总关闭bugs" prop="closedBugs">
<el-input v-model="editForm.closedBugs" placeholder="总关闭bugs"></el-input>
</el-form-item>
<el-form-item label="激活bugs" prop="activeBugs">
<el-input v-model="editForm.activeBugs" placeholder="激活bugs"></el-input>
</el-form-item>
<el-form-item label="已确认bugs总数" prop="confirmedBugs">
<el-input v-model="editForm.confirmedBugs" placeholder="已确认bugs总数"></el-input>
</el-form-item>
<el-form-item label="已解决bugs总数" prop="resolvedBugs">
<el-input v-model="editForm.resolvedBugs" placeholder="已解决bugs总数"></el-input>
</el-form-item>
<el-form-item label="产品编号" prop="productId">
<el-input v-model="editForm.productId" placeholder="产品编号"></el-input>
</el-form-item>
<el-form-item label="产品名称" prop="productName">
<el-input v-model="editForm.productName" placeholder="产品名称"></el-input>
</el-form-item>
<el-form-item label="测试案例总数" prop="testCases">
<el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="测试中案例总数" prop="execCases">
<el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="设计中案例总数" prop="designCases">
<el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="完成案例总数" prop="finishCases">
<el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="关联项目数" prop="projectCnt">
<el-input-number v-model="editForm.projectCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="关联迭代数" prop="iterationCnt">
<el-input-number v-model="editForm.iterationCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="任务总数" prop="taskCnt">
<el-input-number v-model="editForm.taskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已完成的任务总数" prop="finishTaskCnt">
<el-input-number v-model="editForm.finishTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="业务日期yyyy-MM-dd字符串" prop="bizDate">
<el-input v-model="editForm.bizDate" placeholder="业务日期yyyy-MM-dd字符串"></el-input>
</el-form-item>
<el-form-item label="机构号码" prop="branchId">
<el-input v-model="editForm.branchId" placeholder="机构号码"></el-input>
</el-form-item>
<el-form-item label="bug总数" prop="bugCnt">
<el-input-number v-model="editForm.bugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="故事数" prop="menuCnt">
<el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="需求完成数" prop="menuFinishCnt">
<el-input-number v-model="editForm.menuFinishCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" prop="estimateWorkload">
<el-input v-model="editForm.estimateWorkload" placeholder="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和"></el-input>
</el-form-item>
</el-form>
</el-row>
<el-row class="page-bottom bottom-fixed">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="saveSubmit" :disabled="load.edit==true">提交</el-button>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //import
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { addXmProductStateHis,editXmProductStateHis } from '@/api/xm/core/xmProductStateHis';
import { mapGetters } from 'vuex'
export default {
name:'xmProductStateHisEdit',
components: {
},
computed: {
...mapGetters([ 'userInfo' ]),
},
props:['xmProductStateHis','visible','opType'],
watch: {
'xmProductStateHis':function( xmProductStateHis ) {
if(xmProductStateHis){
this.editForm = xmProductStateHis;
}
},
'visible':function(visible) {
if(visible==true){
this.initData()
}
}
},
data() {
return {
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
editFormRules: {
productId: [
//{ required: true, message: '', trigger: 'blur' }
]
},
editForm: {
planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',productId:'',productName:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',iterationCnt:'',taskCnt:'',finishTaskCnt:'',bizDate:'',branchId:'',bugCnt:'',menuCnt:'',menuFinishCnt:'',estimateWorkload:''
},
maxTableHeight:300,
}//end return
},//end data
methods: {
// @cancel="editFormVisible=false"
handleCancel:function(){
this.$refs['editFormRef'].resetFields();
this.$emit('cancel');
},
//XmProductStateHis ,@submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.editFormRef.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true
let params = Object.assign({}, this.editForm);
var func=addXmProductStateHis
if(this.currOpType=='edit'){
func=editXmProductStateHis
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.editForm=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
});
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
}
});
},
initData: function(){
this.currOpType=this.opType
if(this.xmProductStateHis){
this.editForm = Object.assign({},this.xmProductStateHis);
}
if(this.opType=='edit'){
}else{
}
},
},//end method
mounted() {
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
});
}
}
</script>
<style scoped>
</style>

285
src/views/xm/core/xmProductStateHis/XmProductStateHisMng.vue

@ -0,0 +1,285 @@
<template>
<section class="page-container border padding">
<el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchXmProductStateHiss" icon="el-icon-search">查询</el-button>
<el-button type="primary" @click="showAdd" icon="el-icon-plus"> </el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true" icon="el-icon-delete"></el-button>
</el-row>
<el-row class="padding-top">
<!--列表 XmProductStateHis 功能状态表,无需前端维护所有数据由汇总统计得出-->
<el-table ref="xmProductStateHisTable" :data="xmProductStateHiss" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column sortable type="index" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="planStartTime" label="开始时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="planEndTime" label="结束时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actStartTime" label="实际开始时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actEndTime" label="实际结束时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="planWorkload" label="计划工作量,根据关联任务汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actWorkload" label="实际工作量,根据关联任务汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="planCostAmount" label="计划成本,根据关联任务汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="actCostAmount" label="实际成本金额根据关联任务汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishRate" label="总体完成比例0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="demandRate" label="需求完成率0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="designRate" label="设计完成率0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="devRate" label="开发完成率0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="uatRate" label="uat测试完成率0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="sitRate" label="sit测试完成率0-100之间,根据taskType进行汇总" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="ctime" label="创建时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="ltime" label="更新时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="cuserid" label="创建人编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="cusername" label="创建人姓名" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcTime" label="汇总时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="planWorkhours" label="工时数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="planWorkerCnt" label="总人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="closedBugs" label="总关闭bugs" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="activeBugs" label="激活bugs" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="confirmedBugs" label="已确认bugs总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="resolvedBugs" label="已解决bugs总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productId" label="产品编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productName" label="产品名称" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="testCases" label="测试案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execCases" label="测试中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="designCases" label="设计中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishCases" label="完成案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectCnt" label="关联项目数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="iterationCnt" label="关联迭代数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="taskCnt" label="任务总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishTaskCnt" label="已完成的任务总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bizDate" label="业务日期yyyy-MM-dd字符串" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="branchId" label="机构号码" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bugCnt" label="bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="menuCnt" label="故事数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="menuFinishCnt" label="需求完成数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="estimateWorkload" label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template scope="scope">
<el-button type="primary" @click="showEdit( scope.row,scope.$index)" icon="el-icon-edit"></el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)" icon="el-icon-delete"></el-button>
</template>
</el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row>
<el-row>
<!--编辑 XmProductStateHis 功能状态表,无需前端维护所有数据由汇总统计得出界面-->
<el-drawer title="编辑功能状态表,无需前端维护,所有数据由汇总统计得出" :visible.sync="editFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-product-state-his-edit op-type="edit" :xm-product-state-his="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-product-state-his-edit>
</el-drawer>
<!--新增 XmProductStateHis 功能状态表,无需前端维护所有数据由汇总统计得出界面-->
<el-drawer title="新增功能状态表,无需前端维护,所有数据由汇总统计得出" :visible.sync="addFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-product-state-his-edit op-type="add" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-product-state-his-edit>
</el-drawer>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from '@/common/config';//
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { listXmProductStateHis, delXmProductStateHis, batchDelXmProductStateHis } from '@/api/xm/core/xmProductStateHis';
import XmProductStateHisEdit from './XmProductStateHisEdit';//
import { mapGetters } from 'vuex'
export default {
name:'xmProductStateHisMng',
components: {
XmProductStateHisEdit,
},
props:['visible'],
computed: {
...mapGetters(['userInfo']),
},
watch:{
visible(val){
if(val==true){
this.initData();
this.searchXmProductStateHiss()
}
}
},
data() {
return {
filters: {
key: ''
},
xmProductStateHiss: [],//
pageInfo:{//
total:0,//0>0
pageSize:10,//
count:false,//
pageNum:1,//1
orderFields:[],// ['sex','student_id']
orderDirs:[]// asc,desc ['asc','desc']
},
load:{ list: false, edit: false, del: false, add: false },//...
sels: [],//
dicts:{
//sex: [{id:'1',name:''},{id:'2',name:''}]
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
addFormVisible: false,//xmProductStateHis
addForm: {
planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',productId:'',productName:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',iterationCnt:'',taskCnt:'',finishTaskCnt:'',bizDate:'',branchId:'',bugCnt:'',menuCnt:'',menuFinishCnt:'',estimateWorkload:''
},
editFormVisible: false,//
editForm: {
planStartTime:'',planEndTime:'',actStartTime:'',actEndTime:'',planWorkload:'',actWorkload:'',planCostAmount:'',actCostAmount:'',finishRate:'',demandRate:'',designRate:'',devRate:'',uatRate:'',sitRate:'',ctime:'',ltime:'',cuserid:'',cusername:'',calcTime:'',planWorkhours:'',planWorkerCnt:'',closedBugs:'',activeBugs:'',confirmedBugs:'',resolvedBugs:'',productId:'',productName:'',testCases:'',execCases:'',designCases:'',finishCases:'',projectCnt:'',iterationCnt:'',taskCnt:'',finishTaskCnt:'',bizDate:'',branchId:'',bugCnt:'',menuCnt:'',menuFinishCnt:'',estimateWorkload:''
},
maxTableHeight:300,
}
},//end data
methods: {
handleSizeChange(pageSize) {
this.pageInfo.pageSize=pageSize;
this.getXmProductStateHiss();
},
handleCurrentChange(pageNum) {
this.pageInfo.pageNum = pageNum;
this.getXmProductStateHiss();
},
// obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){
if(obj.order==null){
this.pageInfo.orderFields=[];
this.pageInfo.orderDirs=[];
}else{
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
this.pageInfo.orderFields=[util.toLine(obj.prop)];
this.pageInfo.orderDirs=[dir];
}
this.getXmProductStateHiss();
},
searchXmProductStateHiss(){
this.pageInfo.count=true;
this.getXmProductStateHiss();
},
// XmProductStateHis ,
getXmProductStateHiss() {
let params = {
pageSize: this.pageInfo.pageSize,
pageNum: this.pageInfo.pageNum,
total: this.pageInfo.total,
count:this.pageInfo.count
};
if(this.pageInfo.orderFields!=null && this.pageInfo.orderFields.length>0){
let orderBys=[];
for(var i=0;i<this.pageInfo.orderFields.length;i++){
orderBys.push(this.pageInfo.orderFields[i]+" "+this.pageInfo.orderDirs[i])
}
params.orderBy= orderBys.join(",")
}
if(this.filters.key){
params.key=this.filters.key
}
this.load.list = true;
listXmProductStateHis(params).then((res) => {
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.total = res.data.total;
this.pageInfo.count=false;
this.xmProductStateHiss = res.data.data;
}else{
this.$notify({ showClose:true, message: tips.msg, type: 'error' });
}
this.load.list = false;
}).catch( err => this.load.list = false );
},
// XmProductStateHis ,
showEdit: function ( row,index ) {
this.editFormVisible = true;
this.editForm = Object.assign({}, row);
},
// XmProductStateHis ,
showAdd: function () {
this.addFormVisible = true;
//this.addForm=Object.assign({}, this.editForm);
},
afterAddSubmit(){
this.addFormVisible=false;
this.pageInfo.count=true;
this.getXmProductStateHiss();
},
afterEditSubmit(){
this.editFormVisible=false;
},
//xmProductStateHis
selsChange: function (sels) {
this.sels = sels;
},
//xmProductStateHis
handleDel: function (row,index) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.load.del=true;
let params = { productId:row.productId, bizDate:row.bizDate };
delXmProductStateHis(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;
if(tips.isOk){
this.pageInfo.count=true;
this.getXmProductStateHiss();
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false );
});
},
//xmProductStateHis
batchDel: function () {
if(this.sels.length<=0){
return;
}
var params=this.sels.map(i=>{
return { productId:i.productId, bizDate:i.bizDate}
})
this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.load.del=true;
batchDelXmProductStateHis(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;
if( tips.isOk ){
this.pageInfo.count=true;
this.getXmProductStateHiss();
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false );
});
},
rowClick: function(row, event, column){
this.editForm=row
this.$emit('row-click',row, event, column);// @row-click="rowClick"
},
initData: function(){
},
},//end methods
mounted() {
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.searchXmProductStateHiss();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmProductStateHisTable.$el)
});
}
}
</script>
<style scoped>
</style>

179
src/views/xm/core/xmProjectState/XmProjectStateEdit.vue

@ -1,8 +1,10 @@
<template> <template>
<section class="page-container padding border">
<el-row>
<section class="page-container padding">
<el-row class="page-header">
</el-row>
<el-row class="page-main" :style="{overflowX:'auto',height:maxTableHeight+'px'}" ref="table">
<!--编辑界面 XmProjectState 项目指标日统计表--> <!--编辑界面 XmProjectState 项目指标日统计表-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
<el-form-item label="项目编号" prop="projectId"> <el-form-item label="项目编号" prop="projectId">
<el-input v-model="editForm.projectId" placeholder="项目编号"></el-input> <el-input v-model="editForm.projectId" placeholder="项目编号"></el-input>
</el-form-item> </el-form-item>
@ -24,17 +26,14 @@
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="projectName">
<el-input v-model="editForm.projectName" placeholder="项目名称"></el-input> <el-input v-model="editForm.projectName" placeholder="项目名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="主键" prop="id">
<el-input v-model="editForm.id" placeholder="主键"></el-input>
</el-form-item>
<el-form-item label="总参与人数" prop="totalStaffCnt"> <el-form-item label="总参与人数" prop="totalStaffCnt">
<el-input-number v-model="editForm.totalStaffCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalStaffCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="统计执行日期" prop="calCtime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.calCtime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
<el-form-item label="统计执行日期" prop="calcTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.calcTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖" prop="calStatus">
<el-input v-model="editForm.calStatus" placeholder="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖"></el-input>
<el-form-item label="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖" prop="calcStatus">
<el-input v-model="editForm.calcStatus" placeholder="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="项目总非人力成本" prop="totalCostNouserAmount"> <el-form-item label="项目总非人力成本" prop="totalCostNouserAmount">
<el-input v-model="editForm.totalCostNouserAmount" placeholder="项目总非人力成本"></el-input> <el-input v-model="editForm.totalCostNouserAmount" placeholder="项目总非人力成本"></el-input>
@ -48,10 +47,10 @@
<el-form-item label="已完成任务总数-来自任务表" prop="totalCompleteTaskCnt"> <el-form-item label="已完成任务总数-来自任务表" prop="totalCompleteTaskCnt">
<el-input-number v-model="editForm.totalCompleteTaskCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalCompleteTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="项目计划数" prop="totalPhaseCnt">
<el-form-item label="项目阶段计划数" prop="totalPhaseCnt">
<el-input-number v-model="editForm.totalPhaseCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalPhaseCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="项目计划已完成数" prop="totalCompletePhaseCnt">
<el-form-item label="项目阶段计划已完成数" prop="totalCompletePhaseCnt">
<el-input-number v-model="editForm.totalCompletePhaseCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalCompletePhaseCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="待付款总金额" prop="totalNeedPayAmount"> <el-form-item label="待付款总金额" prop="totalNeedPayAmount">
@ -108,8 +107,8 @@
<el-form-item label="已解决bug总数" prop="totalConfirmedBugCnt"> <el-form-item label="已解决bug总数" prop="totalConfirmedBugCnt">
<el-input-number v-model="editForm.totalConfirmedBugCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalConfirmedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="项目状态,0-初始,1-立项中,2-执行中,3-已结项,4-暂停" prop="projectStatus">
<el-input v-model="editForm.projectStatus" placeholder="项目状态,0-初始,1-立项中,2-执行中,3-已结项,4-暂停"></el-input>
<el-form-item label="0|初始" prop="projectStatus">
<el-input v-model="editForm.projectStatus" placeholder="0|初始"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="实际总工作量,来自任务表" prop="totalActWorkload"> <el-form-item label="实际总工作量,来自任务表" prop="totalActWorkload">
<el-input v-model="editForm.totalActWorkload" placeholder="实际总工作量,来自任务表"></el-input> <el-input v-model="editForm.totalActWorkload" placeholder="实际总工作量,来自任务表"></el-input>
@ -138,22 +137,22 @@
<el-form-item label="待付款总人数" prop="totalNeedPayUserCnt"> <el-form-item label="待付款总人数" prop="totalNeedPayUserCnt">
<el-input v-model="editForm.totalNeedPayUserCnt" placeholder="待付款总人数"></el-input> <el-input v-model="editForm.totalNeedPayUserCnt" placeholder="待付款总人数"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="内部人力总工作量-应该大于或等于计划内部人力总成本" prop="totalPlanIuserWorkload">
<el-input v-model="editForm.totalPlanIuserWorkload" placeholder="内部人力总工作量-应该大于或等于计划内部人力总成本"></el-input>
<el-form-item label="内部人力总工作量-应该大于或等于阶段计划内部人力总成本" prop="totalPlanIuserWorkload">
<el-input v-model="editForm.totalPlanIuserWorkload" placeholder="内部人力总工作量-应该大于或等于阶段计划内部人力总成本"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="外购人力总工作量-应该大于或等于计划外购人力总成本" prop="totalPlanOuserWorkload">
<el-input v-model="editForm.totalPlanOuserWorkload" placeholder="外购人力总工作量-应该大于或等于计划外购人力总成本"></el-input>
<el-form-item label="外购人力总工作量-应该大于或等于阶段计划外购人力总成本" prop="totalPlanOuserWorkload">
<el-input v-model="editForm.totalPlanOuserWorkload" placeholder="外购人力总工作量-应该大于或等于阶段计划外购人力总成本"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="测试例总数" prop="testCases">
<el-form-item label="测试例总数" prop="testCases">
<el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="测试中例总数" prop="execCases">
<el-form-item label="测试中例总数" prop="execCases">
<el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="设计中例总数" prop="designCases">
<el-form-item label="设计中例总数" prop="designCases">
<el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="完成例总数" prop="finishCases">
<el-form-item label="完成例总数" prop="finishCases">
<el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="迭代数" prop="iterationCnt"> <el-form-item label="迭代数" prop="iterationCnt">
@ -162,102 +161,144 @@
<el-form-item label="产品数" prop="productCnt"> <el-form-item label="产品数" prop="productCnt">
<el-input-number v-model="editForm.productCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.productCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="需求数" prop="menuCnt">
<el-form-item label="故事数" prop="menuCnt">
<el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="任务数" prop="taskCnt">
<el-input-number v-model="editForm.taskCnt" :min="0" :max="200"></el-input-number>
<el-form-item label="完成的故事数" prop="finishMenuCnt">
<el-input-number v-model="editForm.finishMenuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" prop="estimateWorkload">
<el-input v-model="editForm.estimateWorkload" placeholder="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和"></el-input>
</el-form-item>
<el-form-item label="执行中任务数=任务表开始日期小于=当前日期,进度<100的任务" prop="execTaskCnt">
<el-input-number v-model="editForm.execTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="待开始的任务数=任务表中开始日期=当前日期+1的任务数" prop="toStartTaskCnt">
<el-input-number v-model="editForm.toStartTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="执行中需求=需求表中开始日期小于小于等于当前日期,进度<100的需求" prop="execMenuCnt">
<el-input-number v-model="editForm.execMenuCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="完成的任务数" prop="finishTaskCnt">
<el-input-number v-model="editForm.finishTaskCnt" :min="0" :max="200"></el-input-number>
<el-form-item label="待开始需求数=需求表中开始日期=当前日期+1的需求数" prop="toStartMenuCnt">
<el-input-number v-model="editForm.toStartMenuCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item>
<el-col :span="24" :offset="8">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="editSubmit" :disabled="load.edit==true">提交</el-button>
</el-col>
<el-form-item label="最早开始日期" prop="minStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.minStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="最晚结束时间" prop="maxEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.maxEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-row> </el-row>
<el-row class="page-bottom bottom-fixed">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="saveSubmit" :disabled="load.edit==true">提交</el-button>
</el-row>
</section> </section>
</template> </template>
<script> <script>
import util from '@/common/js/util';// import util from '@/common/js/util';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { editXmProjectState } from '@/api/xm/core/xmProjectState';
import config from "@/common/config"; //import
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { addXmProjectState,editXmProjectState } from '@/api/xm/core/xmProjectState';
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name:'xmProjectStateEdit',
components: {
},
computed: { computed: {
...mapGetters([
'userInfo','roles'
])
...mapGetters([ 'userInfo' ]),
}, },
props:['xmProjectState','visible'],
props:['xmProjectState','visible','opType'],
watch: { watch: {
'xmProjectState':function( xmProjectState ) { 'xmProjectState':function( xmProjectState ) {
this.editForm = xmProjectState;
if(xmProjectState){
this.editForm = xmProjectState;
}
}, },
'visible':function(visible) { 'visible':function(visible) {
if(visible==true){ if(visible==true){
//
this.initData()
} }
} }
}, },
data() { data() {
return { return {
dicts:{},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
load:{ list: false, edit: false, del: false, add: false },//...
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
editFormRules: { editFormRules: {
id: [
//{ required: true, message: '', trigger: 'blur' }
projectId: [
//{ required: true, message: '', trigger: 'blur' }
] ]
}, },
// XmProjectState
editForm: { editForm: {
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',id:'',totalStaffCnt:'',calCtime:'',calStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',taskCnt:'',finishTaskCnt:''
}
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
/**end 在上面加自定义属性**/
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',finishMenuCnt:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
},
maxTableHeight:300,
}//end return }//end return
},//end data },//end data
methods: { methods: {
// @cancel="editFormVisible=false" // @cancel="editFormVisible=false"
handleCancel:function(){ handleCancel:function(){
this.$refs['editForm'].resetFields();
this.$refs['editFormRef'].resetFields();
this.$emit('cancel'); this.$emit('cancel');
}, },
//XmProjectState @submit="afterEditSubmit"
editSubmit: function () {
this.$refs.editForm.validate((valid) => {
//XmProjectState @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.editFormRef.validate((valid) => {
if (valid) { if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => { this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true this.load.edit=true
let params = Object.assign({}, this.editForm); let params = Object.assign({}, this.editForm);
editXmProjectState(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.$refs['editForm'].resetFields();
this.$emit('submit');// @submit="afterEditSubmit"
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
var func=addXmProjectState
if(this.currOpType=='edit'){
func=editXmProjectState
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.editForm=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
}); });
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
} }
}); });
}, },
/**begin 在下面加自定义方法,记得补上面的一个逗号**/
initData: function(){
this.currOpType=this.opType
if(this.xmProjectState){
this.editForm = Object.assign({},this.xmProjectState);
}
if(this.opType=='edit'){
}else{
}
},
/**end 在上面加自定义方法**/
},//end method },//end method
components: {
// 'xm-project-state-edit':XmProjectStateEdit
},
mounted() { mounted() {
this.editForm=Object.assign(this.editForm, this.xmProjectState);
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
});
} }
} }

408
src/views/xm/core/xmProjectState/XmProjectStateMng.vue

@ -1,144 +1,130 @@
<template> <template>
<section class="page-container padding border">
<section class="page-container border padding">
<el-row> <el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="项目名称模糊查询"> </el-input>
<el-button v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmProjectStates" icon="el-icon-search"></el-button>
<xm-project-select style="display:inline;" :auto-select="false" @row-click="onPorjectConfirm(loadTasksToXmProjectState,$event)">
<font slot="title">刷新任务统计数据</font>
</xm-project-select>
<xm-project-select style="display:inline;" :auto-select="false" @row-click="onPorjectConfirm(loadTasksSettleToXmProjectState,$event)">
<font slot="title">刷新结算数据</font>
</xm-project-select>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchXmProjectStates" icon="el-icon-search">查询</el-button>
<el-button type="primary" @click="showAdd" icon="el-icon-plus"> </el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true" icon="el-icon-delete"></el-button>
</el-row> </el-row>
<el-row class="page-main">
<el-row class="padding-top">
<!--列表 XmProjectState 项目指标日统计表--> <!--列表 XmProjectState 项目指标日统计表-->
<el-table ref="table" :height="maxTableHeight" :data="xmProjectStates" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="45"></el-table-column>
<el-table-column sortable type="index" width="45"> </el-table-column>
<el-table-column type="expand" width="45">
<template slot-scope="scope">
<el-form label-width="120px" >
<el-form-item label="总预算金额" prop="totalFileCnt">
<span style="margin-left:10px;font-size:14px;">项目总预算</span><el-tag type='success'> {{(scope.row.totalBudgetNouserAmount+scope.row.totalBudgetIuserAmount+scope.row.totalBudgetOuserAmount)/10000}}</el-tag>
<span style="margin-left:10px;font-size:14px;">非人力总预算</span><el-tag :type="scope.row.totalBudgetNouserAmount>0?'warning':'danger'">{{scope.row.totalBudgetNouserAmount/10000}}</el-tag>
<span style="margin-left:10px;font-size:14px;">内部人力总预算</span><el-tag :type="scope.row.totalBudgetIuserAmount>0?'warning':'danger'">{{scope.row.totalBudgetIuserAmount/10000}}</el-tag>
<span style="margin-left:10px;font-size:14px;">外购人力总预算</span><el-tag :type="scope.row.totalBudgetOuserAmount>0?'warning':'danger'">{{scope.row.totalBudgetOuserAmount/10000}}</el-tag>
<span style="margin-left:10px;font-size:14px;">已分配到任务的总预算</span><el-tag :type="scope.row.totalTaskBudgetCostAt>0?'warning':'danger'">{{scope.row.totalTaskBudgetCostAt/10000}}</el-tag>
</el-form-item>
<el-form-item label="bug数目" prop="totalBugCnt">
总数<el-tag type="primary">{{scope.row.totalBugCnt?scope.row.totalBugCnt:0}}</el-tag>
激活:<el-tag type="warning">{{scope.row.totalActiveBugCnt?scope.row.totalActiveBugCnt:0}}</el-tag>
已确认<el-tag type="danger">{{scope.row.totalConfirmedBugCnt?scope.row.totalConfirmedBugCnt:0}}</el-tag>
已解决 <el-tag type="success">{{scope.row.totalResolvedBugCnt?scope.row.totalResolvedBugCnt:0}}</el-tag>
已关闭<el-tag type="info">{{scope.row.totalClosedBugCnt?scope.row.totalClosedBugCnt:0}}</el-tag>
</el-form-item>
<el-form-item label="任务数" prop="totalTaskCnt">
任务总数<el-tag type="primary">{{scope.row.totalTaskCnt?scope.row.totalTaskCnt:0}}</el-tag>
已完成 :<el-tag type="warning">{{scope.row.totalCompleteTaskCnt?scope.row.totalCompleteTaskCnt:0}}</el-tag>
未完成<el-tag type="danger">{{scope.row.totalCompleteTaskCnt?scope.row.totalTaskCnt-scope.row.totalCompleteTaskCnt:scope.row.totalTaskCnt}}</el-tag>
外购任务数<el-tag type="danger">{{scope.row.totalTaskOutCnt?scope.row.totalTaskOutCnt:0}}</el-tag>
</el-form-item>
<el-form-item label="工作量" prop="projectName">
预算
总工作量<el-tag type="primary">{{scope.row.totalPlanWorkload?scope.row.totalPlanWorkload:0}}</el-tag>
内购<el-tag type="danger">{{scope.row.totalPlanInnerWorkload?scope.row.totalPlanInnerWorkload:0}}</el-tag>
外购<el-tag type="danger">{{scope.row.totalPlanOutWorkload?scope.row.totalPlanOutWorkload:0}}</el-tag>
<br/>
实际
总工作量<el-tag type="primary">{{scope.row.totalActWorkload?scope.row.totalActWorkload:0}}</el-tag>
内购<el-tag type="danger">{{scope.row.totalActInnerWorkload?scope.row.totalActInnerWorkload:0}}</el-tag>
外购<el-tag type="danger">{{scope.row.totalActOutWorkload?scope.row.totalActOutWorkload:0}}</el-tag>
</el-form-item>
<el-form-item label="实际成本" prop="projectName">
总成本<el-tag type="primary">{{ scope.row.totalCostNouserAmount+scope.row.totalCostIuserAmount+scope.row.totalCostOuserAmount}}</el-tag>
非人力成本 :<el-tag type="warning">{{scope.row.totalCostNouserAmount?scope.row.totalCostNouserAmount:0}}</el-tag>
内购人力成本<el-tag type="danger">{{scope.row.totalCostIuserAmount?scope.row.totalCostIuserAmount:0}}</el-tag>
外购人力成本<el-tag type="danger">{{scope.row.totalCostOuserAmount?scope.row.totalCostOuserAmount:0}}</el-tag>
</el-form-item>
<el-form-item label="结算" prop="projectName">
待付款人数.金额.笔数<el-tag type="primary">{{scope.row.totalNeedPayUserCnt?scope.row.totalNeedPayUserCnt:0}}</el-tag>, <el-tag type="primary">{{scope.row.totalNeedPayAmount?scope.row.totalNeedPayAmount:0}}</el-tag>,<el-tag type="warning"> {{scope.row.totalNeedPayCnt?scope.row.totalNeedPayCnt:0}}</el-tag>
<br/>
已付款人数.金额.笔数: <el-tag type="primary">{{scope.row.totalFinishPayUserCnt?scope.row.totalFinishPayUserCnt:0}}</el-tag>, <el-tag type="warning">{{scope.row.totalFinishPayAmount?scope.row.totalFinishPayAmount:0}}</el-tag>, <el-tag type="warning"> {{scope.row.totalFinishPayCnt?scope.row.totalFinishPayCnt:0}}</el-tag>
</el-form-item>
<el-form-item label="收款" prop="projectName">
待收款金额<el-tag type="primary">{{scope.row.totalNeedColAmount?scope.row.totalNeedColAmount:0}}</el-tag>
已收款金额: <el-tag type="primary">{{scope.row.totalFinishColAmount?scope.row.totalFinishColAmount:0}}</el-tag>
</el-form-item>
<el-form-item label="项目风险" prop="totalRiskCnt">
总数{{scope.row.totalRiskCnt}},已解决{{scope.row.totalCompleteRiskCnt}}待解决{{scope.row.totalRiskCnt-scope.row.totalCompleteRiskCnt}}
</el-form-item>
</el-form>
</template>
</el-table-column>
<el-table-column prop="projectName" label="项目名称" min-width="250" >
</el-table-column>
<el-table-column prop="bizDate" label="统计日期" min-width="120" ></el-table-column>
<el-table-column prop="totalProgress" label="项目进度" min-width="80" >
<template slot-scope="scope">
{{scope.row.totalProgress}}%
</template>
</el-table-column>
<el-table-column prop="projectStatus" label="项目状态" min-width="80" :formatter="formatterOption"></el-table-column>
<el-table-column prop="totalFileCnt" label="文档数量" min-width="80" ></el-table-column>
<el-table-column prop="totalBugCnt" label="bug数目" min-width="80" ></el-table-column>
<el-table-column prop="totalTaskCnt" label="任务数" min-width="80" ></el-table-column>
<el-table-column prop="totalStaffCnt" label="总参与人数" min-width="80" ></el-table-column>
<el-table-column prop="totalCostUserAmount" label="人力成本" min-width="80" ></el-table-column>
<el-table-column prop="totalCostNouserAmount" label="非人力成本" min-width="80" ></el-table-column>
<el-table-column prop="totalFinishPayAmount" label="已付款总金额" min-width="80" ></el-table-column>
<el-table-column prop="totalFinishColAmount" label="已收款总金额" min-width="80" ></el-table-column>
<el-table-column prop="totalPlanWorkload" label="项目总预算工作量" min-width="80" ></el-table-column>
<el-table-column prop="totalActWorkload" label="实际总工作量" min-width="80" ></el-table-column>
<el-table-column label="操作" width="160" fixed="right">
<el-table ref="xmProjectStateTable" :data="xmProjectStates" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column sortable type="index" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectId" label="项目编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bizDate" label="统计日期yyyy-mm-dd类型" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFileCnt" label="文件数据" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBugCnt" label="bug数目" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskCnt" label="任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetNouserAmount" label="项目总非人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectName" label="项目名称" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalStaffCnt" label="总参与人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcTime" label="统计执行日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcStatus" label="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostNouserAmount" label="项目总非人力成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalClosedBugCnt" label="已关闭bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalResolvedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteTaskCnt" label="已完成任务总数-来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPhaseCnt" label="项目阶段计划数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompletePhaseCnt" label="项目阶段计划已完成数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayAmount" label="待付款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayAmount" label="已付款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedColAmount" label="待收款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishColAmount" label="已收款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostUserAmount" label="项目总人力成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetIuserAmount" label="项目总内部人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanWorkload" label="项目总预算工作量-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalRiskCnt" label="项目风险总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteRiskCnt" label="已完成风险总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="branchId" label="机构编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="branchName" label="机构名称" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetOuserAmount" label="项目总外购人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteWorkload" label="已完成工作量-来自计划中实际完成工作量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostIuserAmount" label="项目总内部人力成本金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostOuserAmount" label="项目总外购人力成本金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalProgress" label="项目进度0~100之间,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActiveBugCnt" label="激活的bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalConfirmedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectStatus" label="0|初始" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActWorkload" label="实际总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActOutWorkload" label="实际外购总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActInnerWorkload" label="实际内部总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskBudgetCostAt" label="已经分配到任务的总预算" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskOutCnt" label="外购任务数,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayCnt" label="待付款笔数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayCnt" label="完成付款总比数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayUserCnt" label="已付款总人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayUserCnt" label="待付款总人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanIuserWorkload" label="内部人力总工作量-应该大于或等于阶段计划内部人力总成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanOuserWorkload" label="外购人力总工作量-应该大于或等于阶段计划外购人力总成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="testCases" label="测试案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execCases" label="测试中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="designCases" label="设计中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishCases" label="完成案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="iterationCnt" label="迭代数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productCnt" label="产品数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="menuCnt" label="故事数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishMenuCnt" label="完成的故事数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="estimateWorkload" label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execTaskCnt" label="执行中任务数=任务表开始日期小于=当前日期,进度<100的任务" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="toStartTaskCnt" label="待开始的任务数=任务表中开始日期=当前日期+1的任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execMenuCnt" label="执行中需求=需求表中开始日期小于小于等于当前日期,进度<100的需求" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="toStartMenuCnt" label="待开始需求数=需求表中开始日期=当前日期+1的需求数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="minStartTime" label="最早开始日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="maxEndTime" label="最晚结束时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template scope="scope"> <template scope="scope">
<el-button @click="showXmProjectDatav( scope.row,scope.$index)">大屏展示</el-button>
<el-button type="primary" @click="showEdit( scope.row,scope.$index)" icon="el-icon-edit"></el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)" icon="el-icon-delete"></el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination> <el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row>
<el-row>
<!--编辑 XmProjectState 项目指标日统计表界面--> <!--编辑 XmProjectState 项目指标日统计表界面-->
<el-drawer title="编辑项目指标日统计表" :visible.sync="editFormVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-project-state-edit :xm-project-state="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-project-state-edit>
<el-drawer title="编辑项目指标日统计表" :visible.sync="editFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-project-state-edit op-type="edit" :xm-project-state="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-project-state-edit>
</el-drawer> </el-drawer>
<!--新增 XmProjectState 项目指标日统计表界面--> <!--新增 XmProjectState 项目指标日统计表界面-->
<el-drawer title="新增项目指标日统计表" :visible.sync="addFormVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-project-state-add :xm-project-state="addForm" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-project-state-add>
<el-drawer title="新增项目指标日统计表" :visible.sync="addFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-project-state-edit op-type="add" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-project-state-edit>
</el-drawer> </el-drawer>
</el-row>
</el-row>
</section> </section>
</template> </template>
<script> <script>
import util from '@/common/js/util';// import util from '@/common/js/util';//
import config from '@/common/config';// import config from '@/common/config';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { listXmProjectState,loadProjectToXmProjectState, loadBugsToXmProjectState, loadTasksToXmProjectState , loadTasksSettleToXmProjectState} from '@/api/xm/core/xmProjectState';
import XmProjectStateAdd from './XmProjectStateAdd';//
import XmProjectStateEdit from './XmProjectStateEdit';//
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { listXmProjectState, delXmProjectState, batchDelXmProjectState } from '@/api/xm/core/xmProjectState';
import XmProjectStateEdit from './XmProjectStateEdit';//
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect.vue';
export default { export default {
name:'xmProjectStateMng',
components: {
XmProjectStateEdit,
},
props:['visible'],
computed: { computed: {
...mapGetters([
'userInfo','roles'
])
...mapGetters(['userInfo']),
}, },
props:['selProject'],
watch:{ watch:{
selProject:function(selProject,old){
this.filters.selProject={...this.selProject}
this.getXmProjectStates()
}
visible(val){
if(val==true){
this.initData();
this.searchXmProjectStates()
}
}
}, },
data() { data() {
return { return {
filters: { filters: {
key: '',
selProject:{name:'',id:''},
key: ''
}, },
xmProjectStates: [],// xmProjectStates: [],//
pageInfo:{// pageInfo:{//
@ -152,26 +138,18 @@ import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect.vue';
load:{ list: false, edit: false, del: false, add: false },//... load:{ list: false, edit: false, del: false, add: false },//...
sels: [],// sels: [],//
dicts:{ dicts:{
//sex:[],
projectStatus:[],
},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
//sex: [{id:'1',name:''},{id:'2',name:''}]
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
addFormVisible: false,//xmProjectState addFormVisible: false,//xmProjectState
//xmProjectState
addForm: { addForm: {
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',id:'',totalStaffCnt:'',calCtime:'',calStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',todayNewBugCnt:'',todayResolvedBugCnt:'',todayClosedBugCnt:'',todayNewTaskCnt:'',todayCompleteTaskCnt:'',todayNewPhaseCnt:'',todayCompletePhaseCnt:'',todayNewStaffCnt:'',todaySubStaffCnt:'',todayNewPlanWorkload:'',todayNewActWorkload:'',todayNeedColAmount:'',todayFinishColAmount:'',todayCostUserAmount:'',todayCostIuserAmount:'',todayCostOuserAmount:'',todayCostNouserAmount:'',totalCostIuserAmount:'',totalCostOuserAmount:'',todayNeedPayAmount:'',todayFinishPayAmount:'',todayNewRiskCnt:'',todayCompleteRiskCnt:'',todayNewFileCnt:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',todayConfirmedBugCnt:'',todayActiveBugCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',todayNeedPayUserCnt:'',todayFinishPayUserCnt:''
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',finishMenuCnt:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
}, },
editFormVisible: false,// editFormVisible: false,//
//xmProjectState
editForm: { editForm: {
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',id:'',totalStaffCnt:'',calCtime:'',calStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',todayNewBugCnt:'',todayResolvedBugCnt:'',todayClosedBugCnt:'',todayNewTaskCnt:'',todayCompleteTaskCnt:'',todayNewPhaseCnt:'',todayCompletePhaseCnt:'',todayNewStaffCnt:'',todaySubStaffCnt:'',todayNewPlanWorkload:'',todayNewActWorkload:'',todayNeedColAmount:'',todayFinishColAmount:'',todayCostUserAmount:'',todayCostIuserAmount:'',todayCostOuserAmount:'',todayCostNouserAmount:'',totalCostIuserAmount:'',totalCostOuserAmount:'',todayNeedPayAmount:'',todayFinishPayAmount:'',todayNewRiskCnt:'',todayCompleteRiskCnt:'',todayNewFileCnt:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',todayConfirmedBugCnt:'',todayActiveBugCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',todayNeedPayUserCnt:'',todayFinishPayUserCnt:''
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',finishMenuCnt:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
}, },
selectProjectVisible:false,
/**begin 自定义属性请在下面加 请加备注**/
maxTableHeight:300, maxTableHeight:300,
nextCommand:null,
/**end 自定义属性请在上面加 请加备注**/
} }
},//end data },//end data
methods: { methods: {
@ -185,14 +163,18 @@ import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect.vue';
}, },
// obj.order=ascending/descending, asc/desc ; obj.prop=, // obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){ sortChange( obj ){
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
if(obj.order==null){
this.pageInfo.orderFields=[];
this.pageInfo.orderDirs=[];
}else{ }else{
dir='desc';
}
if(obj.prop=='xxx'){
this.pageInfo.orderFields=['xxx'];
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
this.pageInfo.orderFields=[util.toLine(obj.prop)];
this.pageInfo.orderDirs=[dir]; this.pageInfo.orderDirs=[dir];
} }
this.getXmProjectStates(); this.getXmProjectStates();
@ -216,14 +198,10 @@ import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect.vue';
} }
params.orderBy= orderBys.join(",") params.orderBy= orderBys.join(",")
} }
if(this.filters.selProject){
params.projectId=this.filters.selProject.id
}else{
params.branchId=this.userInfo.branchId
}
if(this.filters.key){ if(this.filters.key){
params.key=this.filters.key params.key=this.filters.key
} }
this.load.list = true; this.load.list = true;
listXmProjectState(params).then((res) => { listXmProjectState(params).then((res) => {
var tips=res.data.tips; var tips=res.data.tips;
@ -232,7 +210,7 @@ import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect.vue';
this.pageInfo.count=false; this.pageInfo.count=false;
this.xmProjectStates = res.data.data; this.xmProjectStates = res.data.data;
}else{ }else{
this.$notify({showClose: true, message: tips.msg, type: 'error' });
this.$notify({ showClose:true, message: tips.msg, type: 'error' });
} }
this.load.list = false; this.load.list = false;
}).catch( err => this.load.list = false ); }).catch( err => this.load.list = false );
@ -266,7 +244,7 @@ import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect.vue';
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.load.del=true; this.load.del=true;
let params = { id: row.id };
let params = { projectId:row.projectId };
delXmProjectState(params).then((res) => { delXmProjectState(params).then((res) => {
this.load.del=false; this.load.del=false;
var tips=res.data.tips; var tips=res.data.tips;
@ -274,178 +252,54 @@ import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect.vue';
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmProjectStates(); this.getXmProjectStates();
} }
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false ); }).catch( err => this.load.del=false );
}); });
}, },
//xmProjectState //xmProjectState
batchDel: function () { batchDel: function () {
if(this.sels.length<=0){
return;
}
var params=this.sels.map(i=>{
return { projectId:i.projectId}
})
this.$confirm('确认删除选中记录吗?', '提示', { this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.load.del=true; this.load.del=true;
batchDelXmProjectState(this.sels).then((res) => {
batchDelXmProjectState(params).then((res) => {
this.load.del=false; this.load.del=false;
var tips=res.data.tips; var tips=res.data.tips;
if( tips.isOk ){ if( tips.isOk ){
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmProjectStates(); this.getXmProjectStates();
} }
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false ); }).catch( err => this.load.del=false );
}); });
}, },
loadProjectToXmProjectState: function () {
if(!this.filters.selProject||!this.filters.selProject.id){
this.$notify({showClose: true, message: '请选择一个项目', type: 'warning'});
this.showProjectList(this.loadBugsToXmProjectState);
return;
}
this.load.edit=true;
var params={projectId:this.filters.selProject.id}
loadProjectToXmProjectState(params).then((res) => {
this.load.edit=false;
var tips=res.data.tips;
if( tips.isOk ){
this.pageInfo.count=true;
this.getXmProjectStates();
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.edit=false );
},
loadBugsToXmProjectState: function () {
if(!this.filters.selProject||!this.filters.selProject.id){
this.$notify({showClose: true, message: '请选择一个项目', type: 'warning'});
this.showProjectList(this.loadBugsToXmProjectState);
return;
}
this.load.edit=true;
var params={projectId:this.filters.selProject.id}
loadBugsToXmProjectState(params).then((res) => {
this.load.edit=false;
var tips=res.data.tips;
if( tips.isOk ){
this.pageInfo.count=true;
this.getXmProjectStates();
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.edit=false );
},
loadTasksToXmProjectState: function (project) {
if(!project){
this.$notify({showClose: true, message: '请选择一个项目', type: 'warning'});
return;
}
this.load.edit=true;
var params={projectId:project.id}
loadTasksToXmProjectState(params).then((res) => {
this.load.edit=false;
var tips=res.data.tips;
if( tips.isOk ){
this.pageInfo.count=true;
this.getXmProjectStates();
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.edit=false );
},
loadTasksSettleToXmProjectState: function (project) {
if(!project){
this.$notify({showClose: true, message: '请选择一个项目', type: 'warning'});
return;
}
this.load.edit=true;
var params={projectId:project.id}
loadTasksSettleToXmProjectState(params).then((res) => {
this.load.edit=false;
var tips=res.data.tips;
if( tips.isOk ){
this.pageInfo.count=true;
this.getXmProjectStates();
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.edit=false );
},
rowClick: function(row, event, column){ rowClick: function(row, event, column){
this.editForm=row
this.$emit('row-click',row, event, column);// @row-click="rowClick" this.$emit('row-click',row, event, column);// @row-click="rowClick"
}, },
/**begin 自定义函数请在下面加**/
onPorjectConfirm:function(nextCommand,project){
if(nextCommand){
nextCommand(project);
}else{
this.searchXmProjectStates();
}
},
closeSelectProject:function(){
this.filters.selProject={name:'',id:''}
},
initData: function(){
formatterOption: function(row,column,cellValue, index){
var columnName=column.property;
var key="";
if(columnName=='projectStatus'){
key="projectStatus"
}else{
return cellValue
}
if(this.dicts[key]==undefined || this.dicts[key]==null || this.dicts[key].length==0 ){
return cellValue;
}
var list=this.dicts[key].filter(i=>i.id==cellValue)
if(list.length>0){
return list[0].name
}else{
return cellValue;
}
},
showXmProjectDatav(row){
this.$router.push({
name: "projectDatavFullScreen",
params:{projectId:row.projectId}
});
}
/**end 自定义函数请在上面加**/
},
},//end methods },//end methods
components: {
'xm-project-state-add':XmProjectStateAdd,
'xm-project-state-edit':XmProjectStateEdit,XmProjectSelect,
//
},
mounted() { mounted() {
this.$nextTick(() => { this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.searchXmProjectStates();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmProjectStateTable.$el)
if(this.selProject){
this.filters.selProject=this.selProject
}
this.getXmProjectStates();
initSimpleDicts('all',['projectStatus']).then(res=>{
this.dicts=res.data.data;
})
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el);
}); });
/**
initSimpleDicts( "all",["sex","grade"] ).then(res=>{
if(res.data.tips.isOk){
this.dicts=res.data.data
}
});
**/
} }
} }
</script> </script>
<style scoped> <style scoped>
</style> </style>

240
src/views/xm/core/xmProjectStateHis/XmProjectStateHisEdit.vue

@ -1,8 +1,10 @@
<template> <template>
<section class="page-container padding border">
<el-row>
<!--编辑界面 XmProjectStateHis xm_project_state_his-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
<section class="page-container padding">
<el-row class="page-header">
</el-row>
<el-row class="page-main" :style="{overflowX:'auto',height:maxTableHeight+'px'}" ref="table">
<!--编辑界面 XmProjectStateHis 项目指标日统计表-->
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
<el-form-item label="项目编号" prop="projectId"> <el-form-item label="项目编号" prop="projectId">
<el-input v-model="editForm.projectId" placeholder="项目编号"></el-input> <el-input v-model="editForm.projectId" placeholder="项目编号"></el-input>
</el-form-item> </el-form-item>
@ -24,34 +26,31 @@
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="projectName">
<el-input v-model="editForm.projectName" placeholder="项目名称"></el-input> <el-input v-model="editForm.projectName" placeholder="项目名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="xm_project_state原表主键id" prop="stateId">
<el-input v-model="editForm.stateId" placeholder="xm_project_state原表主键id"></el-input>
</el-form-item>
<el-form-item label="总参与人数" prop="totalStaffCnt"> <el-form-item label="总参与人数" prop="totalStaffCnt">
<el-input-number v-model="editForm.totalStaffCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalStaffCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="统计执行日期" prop="calCtime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.calCtime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
<el-form-item label="统计执行日期" prop="calcTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.calcTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖" prop="calStatus">
<el-input v-model="editForm.calStatus" placeholder="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖"></el-input>
<el-form-item label="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖" prop="calcStatus">
<el-input v-model="editForm.calcStatus" placeholder="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="项目总非人力成本" prop="totalCostNouserAmount"> <el-form-item label="项目总非人力成本" prop="totalCostNouserAmount">
<el-input v-model="editForm.totalCostNouserAmount" placeholder="项目总非人力成本"></el-input> <el-input v-model="editForm.totalCostNouserAmount" placeholder="项目总非人力成本"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="已关闭bug总数" prop="totalCloseBugCnt">
<el-input-number v-model="editForm.totalCloseBugCnt" :min="0" :max="200"></el-input-number>
<el-form-item label="已关闭bug总数" prop="totalClosedBugCnt">
<el-input-number v-model="editForm.totalClosedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="已解决bug总数" prop="totalResolveBugCnt">
<el-input-number v-model="editForm.totalResolveBugCnt" :min="0" :max="200"></el-input-number>
<el-form-item label="已解决bug总数" prop="totalResolvedBugCnt">
<el-input-number v-model="editForm.totalResolvedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="已完成任务总数-来自任务表" prop="totalCompleteTaskCnt"> <el-form-item label="已完成任务总数-来自任务表" prop="totalCompleteTaskCnt">
<el-input-number v-model="editForm.totalCompleteTaskCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalCompleteTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="项目计划数" prop="totalPhaseCnt">
<el-form-item label="项目阶段计划数" prop="totalPhaseCnt">
<el-input-number v-model="editForm.totalPhaseCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalPhaseCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="项目计划已完成数" prop="totalCompletePhaseCnt">
<el-form-item label="项目阶段计划已完成数" prop="totalCompletePhaseCnt">
<el-input-number v-model="editForm.totalCompletePhaseCnt" :min="0" :max="200"></el-input-number> <el-input-number v-model="editForm.totalCompletePhaseCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="待付款总金额" prop="totalNeedPayAmount"> <el-form-item label="待付款总金额" prop="totalNeedPayAmount">
@ -93,96 +92,213 @@
<el-form-item label="已完成工作量-来自计划中实际完成工作量" prop="totalCompleteWorkload"> <el-form-item label="已完成工作量-来自计划中实际完成工作量" prop="totalCompleteWorkload">
<el-input v-model="editForm.totalCompleteWorkload" placeholder="已完成工作量-来自计划中实际完成工作量"></el-input> <el-input v-model="editForm.totalCompleteWorkload" placeholder="已完成工作量-来自计划中实际完成工作量"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="本表主键" prop="id">
<el-input v-model="editForm.id" placeholder="本表主键"></el-input>
<el-form-item label="项目总内部人力成本金额" prop="totalCostIuserAmount">
<el-input v-model="editForm.totalCostIuserAmount" placeholder="项目总内部人力成本金额"></el-input>
</el-form-item>
<el-form-item label="项目总外购人力成本金额" prop="totalCostOuserAmount">
<el-input v-model="editForm.totalCostOuserAmount" placeholder="项目总外购人力成本金额"></el-input>
</el-form-item>
<el-form-item label="项目进度0~100之间,来自任务表" prop="totalProgress">
<el-input v-model="editForm.totalProgress" placeholder="项目进度0~100之间,来自任务表"></el-input>
</el-form-item>
<el-form-item label="激活的bug总数" prop="totalActiveBugCnt">
<el-input-number v-model="editForm.totalActiveBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="已解决bug总数" prop="totalConfirmedBugCnt">
<el-input-number v-model="editForm.totalConfirmedBugCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="0|初始" prop="projectStatus">
<el-input v-model="editForm.projectStatus" placeholder="0|初始"></el-input>
</el-form-item>
<el-form-item label="实际总工作量,来自任务表" prop="totalActWorkload">
<el-input v-model="editForm.totalActWorkload" placeholder="实际总工作量,来自任务表"></el-input>
</el-form-item>
<el-form-item label="实际外购总工作量,来自任务表" prop="totalActOutWorkload">
<el-input v-model="editForm.totalActOutWorkload" placeholder="实际外购总工作量,来自任务表"></el-input>
</el-form-item>
<el-form-item label="实际内部总工作量,来自任务表" prop="totalActInnerWorkload">
<el-input v-model="editForm.totalActInnerWorkload" placeholder="实际内部总工作量,来自任务表"></el-input>
</el-form-item>
<el-form-item label="已经分配到任务的总预算" prop="totalTaskBudgetCostAt">
<el-input v-model="editForm.totalTaskBudgetCostAt" placeholder="已经分配到任务的总预算"></el-input>
</el-form-item>
<el-form-item label="外购任务数,来自任务表" prop="totalTaskOutCnt">
<el-input v-model="editForm.totalTaskOutCnt" placeholder="外购任务数,来自任务表"></el-input>
</el-form-item>
<el-form-item label="待付款笔数" prop="totalNeedPayCnt">
<el-input v-model="editForm.totalNeedPayCnt" placeholder="待付款笔数"></el-input>
</el-form-item>
<el-form-item label="完成付款总比数" prop="totalFinishPayCnt">
<el-input v-model="editForm.totalFinishPayCnt" placeholder="完成付款总比数"></el-input>
</el-form-item>
<el-form-item label="已付款总人数" prop="totalFinishPayUserCnt">
<el-input v-model="editForm.totalFinishPayUserCnt" placeholder="已付款总人数"></el-input>
</el-form-item>
<el-form-item label="待付款总人数" prop="totalNeedPayUserCnt">
<el-input v-model="editForm.totalNeedPayUserCnt" placeholder="待付款总人数"></el-input>
</el-form-item>
<el-form-item label="内部人力总工作量-应该大于或等于阶段计划内部人力总成本" prop="totalPlanIuserWorkload">
<el-input v-model="editForm.totalPlanIuserWorkload" placeholder="内部人力总工作量-应该大于或等于阶段计划内部人力总成本"></el-input>
</el-form-item>
<el-form-item label="外购人力总工作量-应该大于或等于阶段计划外购人力总成本" prop="totalPlanOuserWorkload">
<el-input v-model="editForm.totalPlanOuserWorkload" placeholder="外购人力总工作量-应该大于或等于阶段计划外购人力总成本"></el-input>
</el-form-item>
<el-form-item label="测试案例总数" prop="testCases">
<el-input-number v-model="editForm.testCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="测试中案例总数" prop="execCases">
<el-input-number v-model="editForm.execCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="设计中案例总数" prop="designCases">
<el-input-number v-model="editForm.designCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="完成案例总数" prop="finishCases">
<el-input-number v-model="editForm.finishCases" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="迭代数" prop="iterationCnt">
<el-input-number v-model="editForm.iterationCnt" :min="0" :max="200"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item>
<el-col :span="24" :offset="8">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="editSubmit" :disabled="load.edit==true">提交</el-button>
</el-col>
<el-form-item label="产品数" prop="productCnt">
<el-input-number v-model="editForm.productCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="故事数" prop="menuCnt">
<el-input-number v-model="editForm.menuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="完成的故事数" prop="finishMenuCnt">
<el-input-number v-model="editForm.finishMenuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" prop="estimateWorkload">
<el-input v-model="editForm.estimateWorkload" placeholder="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和"></el-input>
</el-form-item>
<el-form-item label="执行中任务数=任务表开始日期小于=当前日期,进度<100的任务" prop="execTaskCnt">
<el-input-number v-model="editForm.execTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="待开始的任务数=任务表中开始日期=当前日期+1的任务数" prop="toStartTaskCnt">
<el-input-number v-model="editForm.toStartTaskCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="执行中需求=需求表中开始日期小于小于等于当前日期,进度<100的需求" prop="execMenuCnt">
<el-input-number v-model="editForm.execMenuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="待开始需求数=需求表中开始日期=当前日期+1的需求数" prop="toStartMenuCnt">
<el-input-number v-model="editForm.toStartMenuCnt" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="最早开始日期" prop="minStartTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.minStartTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="最晚结束时间" prop="maxEndTime">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.maxEndTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-row> </el-row>
<el-row class="page-bottom bottom-fixed">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="saveSubmit" :disabled="load.edit==true">提交</el-button>
</el-row>
</section> </section>
</template> </template>
<script> <script>
import util from '@/common/js/util';// import util from '@/common/js/util';//
//import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { editXmProjectStateHis } from '@/api/xm/core/xmProjectStateHis';
import config from "@/common/config"; //import
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { addXmProjectStateHis,editXmProjectStateHis } from '@/api/xm/core/xmProjectStateHis';
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name:'xmProjectStateHisEdit',
components: {
},
computed: { computed: {
...mapGetters([
'userInfo','roles'
])
...mapGetters([ 'userInfo' ]),
}, },
props:['xmProjectStateHis','visible'],
props:['xmProjectStateHis','visible','opType'],
watch: { watch: {
'xmProjectStateHis':function( xmProjectStateHis ) { 'xmProjectStateHis':function( xmProjectStateHis ) {
this.editForm = xmProjectStateHis;
if(xmProjectStateHis){
this.editForm = xmProjectStateHis;
}
}, },
'visible':function(visible) { 'visible':function(visible) {
if(visible==true){ if(visible==true){
//
this.initData()
} }
} }
}, },
data() { data() {
return { return {
dicts:{},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
load:{ list: false, edit: false, del: false, add: false },//...
currOpType:'add',//add/edit
load:{ list: false, edit: false, del: false, add: false },//...
dicts:{},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
editFormRules: { editFormRules: {
id: [
//{ required: true, message: '', trigger: 'blur' }
projectId: [
//{ required: true, message: '', trigger: 'blur' }
] ]
}, },
// XmProjectStateHis xm_project_state_his
editForm: { editForm: {
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',stateId:'',totalStaffCnt:'',calCtime:'',calStatus:'',totalCostNouserAmount:'',totalCloseBugCnt:'',totalResolveBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',id:''
}
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
/**end 在上面加自定义属性**/
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',finishMenuCnt:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
},
maxTableHeight:300,
}//end return }//end return
},//end data },//end data
methods: { methods: {
// @cancel="editFormVisible=false" // @cancel="editFormVisible=false"
handleCancel:function(){ handleCancel:function(){
this.$refs['editForm'].resetFields();
this.$refs['editFormRef'].resetFields();
this.$emit('cancel'); this.$emit('cancel');
}, },
//XmProjectStateHis xm_project_state_his@submit="afterEditSubmit"
editSubmit: function () {
this.$refs.editForm.validate((valid) => {
//XmProjectStateHis @submit="afterEditSubmit"
saveSubmit: function () {
this.$refs.editFormRef.validate((valid) => {
if (valid) { if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => { this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true this.load.edit=true
let params = Object.assign({}, this.editForm); let params = Object.assign({}, this.editForm);
editXmProjectStateHis(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.$refs['editForm'].resetFields();
this.$emit('submit');// @submit="afterEditSubmit"
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
var func=addXmProjectStateHis
if(this.currOpType=='edit'){
func=editXmProjectStateHis
}
func(params).then((res) => {
this.load.edit=false
var tips=res.data.tips;
if(tips.isOk){
this.editForm=res.data.data
this.initData()
this.currOpType="edit";
this.$emit('submit');// @submit="afterAddSubmit"
}
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
}); });
}else{
this.$notify({ showClose:true, message: "表单验证不通过,请修改表单数据再提交", type: 'error' });
} }
}); });
}
/**begin 在下面加自定义方法,记得补上面的一个逗号**/
},
initData: function(){
this.currOpType=this.opType
if(this.xmProjectStateHis){
this.editForm = Object.assign({},this.xmProjectStateHis);
}
if(this.opType=='edit'){
}else{
}
},
/**end 在上面加自定义方法**/
},//end method },//end method
components: {
// 'xm-project-state-his-edit':XmProjectStateHisEdit
},
mounted() { mounted() {
this.editForm=Object.assign(this.editForm, this.xmProjectStateHis);
this.$nextTick(() => {
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
});
} }
} }

246
src/views/xm/core/xmProjectStateHis/XmProjectStateHisMng.vue

@ -1,83 +1,125 @@
<template> <template>
<section class="page-container padding border">
<section class="page-container border padding">
<el-row> <el-row>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input> <el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmProjectStateHiss">查询</el-button>
<el-button type="primary" @click="showAdd">+xm_project_state_his</el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true">批量删除</el-button>
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchXmProjectStateHiss" icon="el-icon-search">查询</el-button>
<el-button type="primary" @click="showAdd" icon="el-icon-plus"> </el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true" icon="el-icon-delete"></el-button>
</el-row> </el-row>
<el-row class="page-main ">
<!--列表 XmProjectStateHis xm_project_state_his-->
<el-table :data="xmProjectStateHiss" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column sortable type="selection" width="40"></el-table-column>
<el-table-column sortable type="index" width="40"></el-table-column>
<el-table-column prop="projectId" label="项目编号" min-width="80" ></el-table-column>
<el-table-column prop="bizDate" label="统计日期yyyy-mm-dd类型" min-width="80" ></el-table-column>
<el-table-column prop="totalFileCnt" label="文件数据" min-width="80" ></el-table-column>
<el-table-column prop="totalBugCnt" label="bug数目" min-width="80" ></el-table-column>
<el-table-column prop="totalTaskCnt" label="任务数" min-width="80" ></el-table-column>
<el-table-column prop="totalBudgetNouserAmount" label="项目总非人力预算-来自项目表" min-width="80" ></el-table-column>
<el-table-column prop="projectName" label="项目名称" min-width="80" ></el-table-column>
<el-table-column prop="stateId" label="xm_project_state原表主键id" min-width="80" ></el-table-column>
<el-table-column prop="totalStaffCnt" label="总参与人数" min-width="80" ></el-table-column>
<el-table-column prop="calCtime" label="统计执行日期" min-width="80" ></el-table-column>
<el-table-column prop="calStatus" label="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖" min-width="80" ></el-table-column>
<el-table-column prop="totalCostNouserAmount" label="项目总非人力成本" min-width="80" ></el-table-column>
<el-table-column prop="totalCloseBugCnt" label="已关闭bug总数" min-width="80" ></el-table-column>
<el-table-column prop="totalResolveBugCnt" label="已解决bug总数" min-width="80" ></el-table-column>
<el-table-column prop="totalCompleteTaskCnt" label="已完成任务总数-来自任务表" min-width="80" ></el-table-column>
<el-table-column prop="totalPhaseCnt" label="项目计划数" min-width="80" ></el-table-column>
<el-table-column prop="totalCompletePhaseCnt" label="项目计划已完成数" min-width="80" ></el-table-column>
<el-table-column prop="totalNeedPayAmount" label="待付款总金额" min-width="80" ></el-table-column>
<el-table-column prop="totalFinishPayAmount" label="已付款总金额" min-width="80" ></el-table-column>
<el-table-column prop="totalNeedColAmount" label="待收款总金额" min-width="80" ></el-table-column>
<el-table-column prop="totalFinishColAmount" label="已收款总金额" min-width="80" ></el-table-column>
<el-table-column prop="totalCostUserAmount" label="项目总人力成本" min-width="80" ></el-table-column>
<el-table-column prop="totalBudgetIuserAmount" label="项目总内部人力预算-来自项目表" min-width="80" ></el-table-column>
<el-table-column prop="totalPlanWorkload" label="项目总预算工作量-来自项目表" min-width="80" ></el-table-column>
<el-table-column prop="totalRiskCnt" label="项目风险总数" min-width="80" ></el-table-column>
<el-table-column prop="totalCompleteRiskCnt" label="已完成风险总数" min-width="80" ></el-table-column>
<el-table-column prop="branchId" label="机构编号" min-width="80" ></el-table-column>
<el-table-column prop="branchName" label="机构名称" min-width="80" ></el-table-column>
<el-table-column prop="totalBudgetOuserAmount" label="项目总外购人力预算-来自项目表" min-width="80" ></el-table-column>
<el-table-column prop="totalCompleteWorkload" label="已完成工作量-来自计划中实际完成工作量" min-width="80" ></el-table-column>
<el-table-column prop="id" label="本表主键" min-width="80" ></el-table-column>
<el-table-column label="操作" width="160" fixed="right" >
<template slot-scope="scope">
<el-button @click="showEdit( scope.row,scope.$index)"></el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)"></el-button>
<el-row class="padding-top">
<!--列表 XmProjectStateHis 项目指标日统计表-->
<el-table ref="xmProjectStateHisTable" :data="xmProjectStateHiss" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column sortable type="index" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectId" label="项目编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="bizDate" label="统计日期yyyy-mm-dd类型" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFileCnt" label="文件数据" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBugCnt" label="bug数目" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskCnt" label="任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetNouserAmount" label="项目总非人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectName" label="项目名称" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalStaffCnt" label="总参与人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcTime" label="统计执行日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="calcStatus" label="0-暂时的1稳定的,暂时的可以被覆盖,稳定的不允许覆盖" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostNouserAmount" label="项目总非人力成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalClosedBugCnt" label="已关闭bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalResolvedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteTaskCnt" label="已完成任务总数-来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPhaseCnt" label="项目阶段计划数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompletePhaseCnt" label="项目阶段计划已完成数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayAmount" label="待付款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayAmount" label="已付款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedColAmount" label="待收款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishColAmount" label="已收款总金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostUserAmount" label="项目总人力成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetIuserAmount" label="项目总内部人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanWorkload" label="项目总预算工作量-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalRiskCnt" label="项目风险总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteRiskCnt" label="已完成风险总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="branchId" label="机构编号" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="branchName" label="机构名称" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalBudgetOuserAmount" label="项目总外购人力预算-来自项目表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCompleteWorkload" label="已完成工作量-来自计划中实际完成工作量" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostIuserAmount" label="项目总内部人力成本金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalCostOuserAmount" label="项目总外购人力成本金额" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalProgress" label="项目进度0~100之间,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActiveBugCnt" label="激活的bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalConfirmedBugCnt" label="已解决bug总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="projectStatus" label="0|初始" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActWorkload" label="实际总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActOutWorkload" label="实际外购总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalActInnerWorkload" label="实际内部总工作量,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskBudgetCostAt" label="已经分配到任务的总预算" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalTaskOutCnt" label="外购任务数,来自任务表" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayCnt" label="待付款笔数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayCnt" label="完成付款总比数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalFinishPayUserCnt" label="已付款总人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalNeedPayUserCnt" label="待付款总人数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanIuserWorkload" label="内部人力总工作量-应该大于或等于阶段计划内部人力总成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="totalPlanOuserWorkload" label="外购人力总工作量-应该大于或等于阶段计划外购人力总成本" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="testCases" label="测试案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execCases" label="测试中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="designCases" label="设计中案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishCases" label="完成案例总数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="iterationCnt" label="迭代数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="productCnt" label="产品数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="menuCnt" label="故事数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="finishMenuCnt" label="完成的故事数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="estimateWorkload" label="预估工时=计划结束时间在计算当日前完成的任务的预算工时总和" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execTaskCnt" label="执行中任务数=任务表开始日期小于=当前日期,进度<100的任务" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="toStartTaskCnt" label="待开始的任务数=任务表中开始日期=当前日期+1的任务数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="execMenuCnt" label="执行中需求=需求表中开始日期小于小于等于当前日期,进度<100的需求" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="toStartMenuCnt" label="待开始需求数=需求表中开始日期=当前日期+1的需求数" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="minStartTime" label="最早开始日期" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column prop="maxEndTime" label="最晚结束时间" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template scope="scope">
<el-button type="primary" @click="showEdit( scope.row,scope.$index)" icon="el-icon-edit"></el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)" icon="el-icon-delete"></el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination> <el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
<!--编辑 XmProjectStateHis xm_project_state_his界面-->
<el-drawer title="编辑xm_project_state_his" :visible.sync="editFormVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-project-state-his-edit :xm-project-state-his="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-project-state-his-edit>
</el-row>
<el-row>
<!--编辑 XmProjectStateHis 项目指标日统计表界面-->
<el-drawer title="编辑项目指标日统计表" :visible.sync="editFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-project-state-his-edit op-type="edit" :xm-project-state-his="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-project-state-his-edit>
</el-drawer> </el-drawer>
<!--新增 XmProjectStateHis xm_project_state_his界面-->
<el-drawer title="新增xm_project_state_his" :visible.sync="addFormVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-project-state-his-add :xm-project-state-his="addForm" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-project-state-his-add>
<!--新增 XmProjectStateHis 项目指标日统计表界面-->
<el-drawer title="新增项目指标日统计表" :visible.sync="addFormVisible" size="60%" append-to-body :close-on-click-modal="false">
<xm-project-state-his-edit op-type="add" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-project-state-his-edit>
</el-drawer> </el-drawer>
</el-row>
</el-row>
</section> </section>
</template> </template>
<script> <script>
import util from '@/common/js/util';// import util from '@/common/js/util';//
//import Sticky from '@/components/Sticky' // header
//import { initSimpleDicts } from '@/api/mdp/meta/item';//
import config from '@/common/config';//
import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//
import { listXmProjectStateHis, delXmProjectStateHis, batchDelXmProjectStateHis } from '@/api/xm/core/xmProjectStateHis'; import { listXmProjectStateHis, delXmProjectStateHis, batchDelXmProjectStateHis } from '@/api/xm/core/xmProjectStateHis';
import XmProjectStateHisAdd from './XmProjectStateHisAdd';//
import XmProjectStateHisEdit from './XmProjectStateHisEdit';//
import XmProjectStateHisEdit from './XmProjectStateHisEdit';//
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name:'xmProjectStateHisMng',
components: {
XmProjectStateHisEdit,
},
props:['visible'],
computed: { computed: {
...mapGetters([
'userInfo','roles'
])
...mapGetters(['userInfo']),
},
watch:{
visible(val){
if(val==true){
this.initData();
this.searchXmProjectStateHiss()
}
}
}, },
data() { data() {
return { return {
@ -95,22 +137,19 @@
}, },
load:{ list: false, edit: false, del: false, add: false },//... load:{ list: false, edit: false, del: false, add: false },//...
sels: [],// sels: [],//
dicts:{},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
dicts:{
//sex: [{id:'1',name:''},{id:'2',name:''}]
},// params={categoryId:'all',itemCodes:['sex']} {sex: [{id:'1',name:''},{id:'2',name:''}]}
addFormVisible: false,//xmProjectStateHis addFormVisible: false,//xmProjectStateHis
//xmProjectStateHis
addForm: { addForm: {
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',stateId:'',totalStaffCnt:'',calCtime:'',calStatus:'',totalCostNouserAmount:'',totalCloseBugCnt:'',totalResolveBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',id:''
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',finishMenuCnt:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
}, },
editFormVisible: false,// editFormVisible: false,//
//xmProjectStateHis
editForm: { editForm: {
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',stateId:'',totalStaffCnt:'',calCtime:'',calStatus:'',totalCostNouserAmount:'',totalCloseBugCnt:'',totalResolveBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',id:''
}
/**begin 自定义属性请在下面加 请加备注**/
/**end 自定义属性请在上面加 请加备注**/
projectId:'',bizDate:'',totalFileCnt:'',totalBugCnt:'',totalTaskCnt:'',totalBudgetNouserAmount:'',projectName:'',totalStaffCnt:'',calcTime:'',calcStatus:'',totalCostNouserAmount:'',totalClosedBugCnt:'',totalResolvedBugCnt:'',totalCompleteTaskCnt:'',totalPhaseCnt:'',totalCompletePhaseCnt:'',totalNeedPayAmount:'',totalFinishPayAmount:'',totalNeedColAmount:'',totalFinishColAmount:'',totalCostUserAmount:'',totalBudgetIuserAmount:'',totalPlanWorkload:'',totalRiskCnt:'',totalCompleteRiskCnt:'',branchId:'',branchName:'',totalBudgetOuserAmount:'',totalCompleteWorkload:'',totalCostIuserAmount:'',totalCostOuserAmount:'',totalProgress:'',totalActiveBugCnt:'',totalConfirmedBugCnt:'',projectStatus:'',totalActWorkload:'',totalActOutWorkload:'',totalActInnerWorkload:'',totalTaskBudgetCostAt:'',totalTaskOutCnt:'',totalNeedPayCnt:'',totalFinishPayCnt:'',totalFinishPayUserCnt:'',totalNeedPayUserCnt:'',totalPlanIuserWorkload:'',totalPlanOuserWorkload:'',testCases:'',execCases:'',designCases:'',finishCases:'',iterationCnt:'',productCnt:'',menuCnt:'',finishMenuCnt:'',estimateWorkload:'',execTaskCnt:'',toStartTaskCnt:'',execMenuCnt:'',toStartMenuCnt:'',minStartTime:'',maxEndTime:''
},
maxTableHeight:300,
} }
},//end data },//end data
methods: { methods: {
@ -124,14 +163,18 @@
}, },
// obj.order=ascending/descending, asc/desc ; obj.prop=, // obj.order=ascending/descending, asc/desc ; obj.prop=,
sortChange( obj ){ sortChange( obj ){
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
if(obj.order==null){
this.pageInfo.orderFields=[];
this.pageInfo.orderDirs=[];
}else{ }else{
dir='desc';
}
if(obj.prop=='xxx'){
this.pageInfo.orderFields=['xxx'];
var dir='asc';
if(obj.order=='ascending'){
dir='asc'
}else{
dir='desc';
}
this.pageInfo.orderFields=[util.toLine(obj.prop)];
this.pageInfo.orderDirs=[dir]; this.pageInfo.orderDirs=[dir];
} }
this.getXmProjectStateHiss(); this.getXmProjectStateHiss();
@ -140,7 +183,7 @@
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmProjectStateHiss(); this.getXmProjectStateHiss();
}, },
// XmProjectStateHis xm_project_state_his
// XmProjectStateHis
getXmProjectStateHiss() { getXmProjectStateHiss() {
let params = { let params = {
pageSize: this.pageInfo.pageSize, pageSize: this.pageInfo.pageSize,
@ -155,11 +198,10 @@
} }
params.orderBy= orderBys.join(",") params.orderBy= orderBys.join(",")
} }
if(this.filters.key!==""){
//params.xxx=this.filters.key
}else{
//params.xxx=xxxxx
if(this.filters.key){
params.key=this.filters.key
} }
this.load.list = true; this.load.list = true;
listXmProjectStateHis(params).then((res) => { listXmProjectStateHis(params).then((res) => {
var tips=res.data.tips; var tips=res.data.tips;
@ -168,18 +210,18 @@
this.pageInfo.count=false; this.pageInfo.count=false;
this.xmProjectStateHiss = res.data.data; this.xmProjectStateHiss = res.data.data;
}else{ }else{
this.$notify({showClose: true, message: tips.msg, type: 'error' });
this.$notify({ showClose:true, message: tips.msg, type: 'error' });
} }
this.load.list = false; this.load.list = false;
}).catch( err => this.load.list = false ); }).catch( err => this.load.list = false );
}, },
// XmProjectStateHis xm_project_state_his
// XmProjectStateHis
showEdit: function ( row,index ) { showEdit: function ( row,index ) {
this.editFormVisible = true; this.editFormVisible = true;
this.editForm = Object.assign({}, row); this.editForm = Object.assign({}, row);
}, },
// XmProjectStateHis xm_project_state_his
// XmProjectStateHis
showAdd: function () { showAdd: function () {
this.addFormVisible = true; this.addFormVisible = true;
//this.addForm=Object.assign({}, this.editForm); //this.addForm=Object.assign({}, this.editForm);
@ -202,7 +244,7 @@
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.load.del=true; this.load.del=true;
let params = { id: row.id };
let params = { projectId:row.projectId, bizDate:row.bizDate };
delXmProjectStateHis(params).then((res) => { delXmProjectStateHis(params).then((res) => {
this.load.del=false; this.load.del=false;
var tips=res.data.tips; var tips=res.data.tips;
@ -210,46 +252,49 @@
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmProjectStateHiss(); this.getXmProjectStateHiss();
} }
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false ); }).catch( err => this.load.del=false );
}); });
}, },
//xmProjectStateHis //xmProjectStateHis
batchDel: function () { batchDel: function () {
if(this.sels.length<=0){
return;
}
var params=this.sels.map(i=>{
return { projectId:i.projectId, bizDate:i.bizDate}
})
this.$confirm('确认删除选中记录吗?', '提示', { this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.load.del=true; this.load.del=true;
batchDelXmProjectStateHis(this.sels).then((res) => {
batchDelXmProjectStateHis(params).then((res) => {
this.load.del=false; this.load.del=false;
var tips=res.data.tips; var tips=res.data.tips;
if( tips.isOk ){ if( tips.isOk ){
this.pageInfo.count=true; this.pageInfo.count=true;
this.getXmProjectStateHiss(); this.getXmProjectStateHiss();
} }
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
this.$notify({ showClose:true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false ); }).catch( err => this.load.del=false );
}); });
}, },
rowClick: function(row, event, column){ rowClick: function(row, event, column){
this.editForm=row
this.$emit('row-click',row, event, column);// @row-click="rowClick" this.$emit('row-click',row, event, column);// @row-click="rowClick"
}
/**begin 自定义函数请在下面加**/
},
initData: function(){
/**end 自定义函数请在上面加**/
},
},//end methods },//end methods
components: {
'xm-project-state-his-add':XmProjectStateHisAdd,
'xm-project-state-his-edit':XmProjectStateHisEdit,
//
},
mounted() { mounted() {
this.$nextTick(() => { this.$nextTick(() => {
this.getXmProjectStateHiss();
//initSimpleDicts('all',['sex','gradeLvl']).then(res=>this.dicts=res.data.data);
this.initData()
this.searchXmProjectStateHiss();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.xmProjectStateHisTable.$el)
}); });
} }
} }
@ -257,5 +302,4 @@
</script> </script>
<style scoped> <style scoped>
</style> </style>
Loading…
Cancel
Save