assessResult.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_SAVE_ASSESS_DATA,SET_INDEX_SUB_TYPE,ADD_ASSESS_ITEMS,REMOVE_ASSESS_ITEMS,CLEAR_INDEX_DATA} from '@types/assessResult';
  2. import config from "@config";
  3. const init = {
  4. data:[], //评估模块数据
  5. indexData:{}, //评估图表数据
  6. indexTimeTypes:{}, //单个图表选中的维度
  7. wholeAssess:[], //整体评估数据
  8. wholeIndexs:{}, //已加入的评估数据的index,加入按钮状态用
  9. wholeAssessText:'', //整体评估补充说明
  10. chooseSelecteds:{}, //选项勾选状态
  11. wholeResults:{}, //可能结果
  12. };
  13. export default (state=init,action)=>{
  14. const res = Object.assign({},state);
  15. const {data,range,index,rangeType,pindex,getNew} = action;
  16. switch (action.type){
  17. case SET_ASSESS_DATA:
  18. res.data = action.data;
  19. return res;
  20. case SET_INDEX_DATA:
  21. res.indexData[range[0]+range[1]] = data;
  22. Object.keys(data).map((i)=>{
  23. if(getNew){
  24. res.indexTimeTypes[pindex]=Object.assign({},res.indexTimeTypes[pindex],{[i]:config.chartDismen});
  25. }else{
  26. if(i===index){
  27. res.indexTimeTypes[pindex][i]=rangeType;
  28. }
  29. }
  30. });
  31. res.update = Math.random(); //对象更新
  32. return res;
  33. case CLEAR_INDEX_DATA: //删除图表数据,因为图表数据为记录,需实时更新
  34. res.indexData = {};
  35. res.indexTimeTypes = {};
  36. return res;
  37. case SET_INDEX_SUB_TYPE:
  38. if(!index){
  39. return res;
  40. }
  41. res.indexTimeTypes[index] = rangeType;
  42. res.update = Math.random(); //对象更新
  43. return res;
  44. case SET_SAVE_ASSESS_DATA:
  45. res.wholeIndexs = action.wholeAssessItems||{};
  46. res.wholeResults = action.wholeResults||{};
  47. //res.indexTimeTypes = action.chartTimeTypes;
  48. res.wholeAssessText = action.wholeAssessText||'';
  49. res.chooseSelecteds = action.chooseSelecteds||{};
  50. return res;
  51. //case CLEAR_ASSESS_DATA:
  52. case ADD_ASSESS_ITEMS:
  53. res.wholeAssess[action.index] = action.data;
  54. let arr = res.wholeIndexs[action.index];
  55. res.wholeIndexs[action.index] = arr?[...arr,action.subIndex]:[action.subIndex];
  56. res.update1 = Math.random(); //对象更新,与其他字段名不同因为绑定在pushItems,避免不必要的渲染
  57. return res;
  58. case REMOVE_ASSESS_ITEMS:
  59. const {index,pIndex} = action;
  60. const temp =[...res.wholeIndexs[pIndex]];
  61. res.wholeIndexs[pIndex].splice(temp.findIndex((i)=>i==index),1);
  62. //res.wholeAssess[pIndex].details[index].add=false;
  63. return res;
  64. default:
  65. return res;
  66. }
  67. }