assessResult.js 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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} 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. };
  21. export default (state=init,action)=>{
  22. const res = Object.assign({},state);
  23. const {data,range,index,rangeType,pindex,getNew} = action;
  24. switch (action.type){
  25. case SET_ASSESS_DATA:
  26. res.data = action.data;
  27. return res;
  28. case SET_INDEX_DATA:
  29. res.indexData[range[0]+range[1]] = data.obj;
  30. res.indexNames[range[0]+range[1]] = data.nameObj;
  31. Object.keys(data.obj||{}).map((i)=>{
  32. if(getNew){
  33. res.indexTimeTypes[pindex]=Object.assign({},res.indexTimeTypes[pindex],{[i]:config.chartDismen});
  34. }else{
  35. if(i===index){
  36. res.indexTimeTypes[pindex][i]=rangeType;
  37. }
  38. }
  39. });
  40. res.update = Math.random(); //对象更新
  41. return res;
  42. case CLEAR_INDEX_DATA: //删除图表数据,因为图表数据为记录,需实时更新
  43. res.indexData = {};
  44. res.indexTimeTypes = {};
  45. return res;
  46. case SET_INDEX_SUB_TYPE:
  47. if(!index){
  48. return res;
  49. }
  50. res.indexTimeTypes[index] = rangeType;
  51. res.update = Math.random(); //对象更新
  52. return res;
  53. case 'SAVE_POSSIBLE_RESULT':
  54. res.wholeResults = action.wholeResults||{};
  55. return res;
  56. case SET_SAVE_ASSESS_DATA:
  57. res.wholeIndexs = action.wholeAssessItems||{};
  58. res.wholeResults = action.wholeResults||{};
  59. res.wholeScaleItems = action.wholeScaleItems||[];
  60. res.wholeAssessText = action.wholeAssessText||{};
  61. res.chooseSelecteds = action.chooseSelecteds||{};
  62. res.calcuResult = action.calcuResult||{};
  63. res.calcuValues = action.calcuValues||{};
  64. return res;
  65. //case CLEAR_ASSESS_DATA:
  66. case ADD_ASSESS_ITEMS:
  67. res.wholeAssess[action.index] = action.data;
  68. let arr = res.wholeIndexs[action.index];
  69. res.wholeIndexs[action.index] = arr?[...arr,action.subIndex]:[action.subIndex];
  70. res.update1 = Math.random(); //对象更新,与其他字段名不同因为绑定在pushItems,避免不必要的渲染
  71. return res;
  72. case ADD_WHOLE_SCALE_ITEMS:
  73. res.wholeScaleItems[action.index] = action.data;
  74. res.update1 = Math.random();
  75. return res;
  76. case REMOVE_ASSESS_ITEMS:
  77. const {index,pIndex} = action;
  78. const temp =[...res.wholeIndexs[pIndex]];
  79. res.wholeIndexs[pIndex].splice(temp.findIndex((i)=>i==index),1);
  80. //res.wholeAssess[pIndex].details[index].add=false;
  81. return res;
  82. case SET_CHRONIC_CALCU_RESULT:
  83. if(action.id){
  84. res.calcuResult[action.id] = action.result;
  85. }else{
  86. res.calcuResult = action.data;
  87. }
  88. res.update1= Math.random();
  89. return res;
  90. case SET_CALCU_VALUES:
  91. res.calcuValues[action.id] = action.data;
  92. return res;
  93. default:
  94. return res;
  95. }
  96. }