assessResult.js 2.9 KB

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