assessResult.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_SAVE_ASSESS_DATA,SET_INDEX_SUB_TYPE,ADD_ASSESS_ITEMS,
  2. REMOVE_ASSESS_ITEMS,CLEAR_INDEX_DATA,SET_CHRONIC_CALCU_RESULT,ADD_WHOLE_SCALE_ITEMS,SET_CALCU_VALUES,CLEAR_ASSESS_RESULT_VALUE} from '@types/assessResult';
  3. import config from "@config";
  4. const init = {
  5. data:{}, //评估模块数据
  6. indexData:{}, //评估图表数据
  7. indexNames:{},
  8. indexTimeTypes:{}, //单个图表选中的维度
  9. wholeAssess:[], //整体评估数据
  10. wholeIndexs:{}, //已加入的评估数据的index,加入按钮状态用
  11. wholeAssessText:{}, //整体评估补充说明
  12. chooseSelecteds:{}, //选项勾选状态
  13. wholeResults:{
  14. possible:{},
  15. radioVal:{}
  16. }, //可能结果
  17. calcuResult:{}, //计算公式结果
  18. calcuValues:{}, //计算公式填的值
  19. wholeScaleItems:{}, //全部量表中添加的整体评估项
  20. addedScaleIds:[]
  21. };
  22. export default (state=init,action)=>{
  23. const res = Object.assign({},state);
  24. const {data,range,index,rangeType,pindex,getNew} = action;
  25. switch (action.type){
  26. case SET_ASSESS_DATA:
  27. res.data[action.name] = action.data;
  28. res.update1 = Math.random();
  29. return res;
  30. case SET_INDEX_DATA:
  31. res.indexData[range[0]+range[1]] = data.obj;
  32. res.indexNames[range[0]+range[1]] = data.nameObj;
  33. Object.keys(data.obj||{}).map((i)=>{
  34. if(getNew){
  35. res.indexTimeTypes[pindex]=Object.assign({},res.indexTimeTypes[pindex],{[i]:config.chartDismen});
  36. }else{
  37. if(i===index){
  38. res.indexTimeTypes[pindex][i]=rangeType;
  39. }
  40. }
  41. });
  42. res.update = Math.random(); //对象更新
  43. return res;
  44. case CLEAR_INDEX_DATA: //删除图表数据,因为图表数据为记录,需实时更新
  45. res.indexData = {};
  46. res.indexTimeTypes = {};
  47. return res;
  48. case CLEAR_ASSESS_RESULT_VALUE:
  49. res.data = {};
  50. res.indexNames = {};
  51. res.addedScaleIds = [];
  52. res.calcuResult = {};
  53. res.calcuValues = {};
  54. res.wholeAssess = [];
  55. res.wholeIndexs = {};
  56. res.wholeResults = {};
  57. return res;
  58. case SET_INDEX_SUB_TYPE:
  59. if(!index){
  60. return res;
  61. }
  62. res.indexTimeTypes[index] = rangeType;
  63. res.update = Math.random(); //对象更新
  64. return res;
  65. case 'SAVE_POSSIBLE_RESULT':
  66. res.wholeResults = action.wholeResults||{};
  67. return res;
  68. case SET_SAVE_ASSESS_DATA:
  69. res.wholeIndexs = action.wholeAssessItems||{};
  70. res.addedScaleIds = action.addedScaleIds||[];
  71. res.wholeResults = action.wholeResults||{};
  72. res.wholeScaleItems = action.wholeScaleItems||{};
  73. res.wholeAssessText = action.wholeAssessText||{};
  74. res.chooseSelecteds = action.chooseSelecteds||{};
  75. res.calcuResult = action.calcuResult||{};
  76. res.calcuValues = action.calcuValues||{};
  77. return res;
  78. case ADD_ASSESS_ITEMS:
  79. res.wholeAssess[action.index] = action.data;
  80. let arr = res.wholeIndexs[action.index];
  81. res.wholeIndexs[action.index] = arr?[...arr,action.subIndex]:[action.subIndex];
  82. //已从全部量表中加入过,加入新的,删除原来的
  83. if(res.addedScaleIds.includes(action.id)){
  84. delete res.wholeScaleItems[action.id];
  85. }else{
  86. action.id?res.addedScaleIds.push(action.id):'';
  87. }
  88. res.update1 = Math.random(); //对象更新,与其他字段名不同因为绑定在pushItems,避免不必要的渲染
  89. return res;
  90. case ADD_WHOLE_SCALE_ITEMS: //从全部量表中加入量表
  91. res.wholeScaleItems[action.id] = action.data;
  92. //已从指标推送中添加过该量表,加入新的,删除原来的
  93. let inx = -1,subInx = -1;
  94. if(res.addedScaleIds.includes(action.id)){
  95. const inx = res.wholeAssess.findIndex((it)=>{
  96. subInx = it.details.findIndex((i)=>{
  97. return i.type==1&&i.content.conceptId==action.id;
  98. });
  99. return subInx!=-1;
  100. });
  101. if(inx!=-1){
  102. const trueInx = inx!=-1&&res.wholeIndexs[inx].findIndex((i)=>i==subInx);
  103. res.wholeIndexs[inx].splice(trueInx,1);
  104. }
  105. }else{
  106. res.addedScaleIds.push(action.id);
  107. }
  108. res.update1 = Math.random();
  109. return res;
  110. case REMOVE_ASSESS_ITEMS:
  111. const {index,pIndex} = action;
  112. const temp =[...res.wholeIndexs[pIndex]];
  113. res.wholeIndexs[pIndex].splice(temp.findIndex((i)=>i==index),1);
  114. return res;
  115. case SET_CHRONIC_CALCU_RESULT:
  116. if(action.id){
  117. res.calcuResult[action.id] = action.result;
  118. }else{
  119. res.calcuResult = action.data;
  120. }
  121. res.update1= Math.random();
  122. return res;
  123. case SET_CALCU_VALUES:
  124. if(action.id){
  125. res.calcuValues[action.id] = action.data;
  126. }else{
  127. res.calcuValues = action.data;
  128. }
  129. return res;
  130. default:
  131. return res;
  132. }
  133. }