AssessResult.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import React from 'react';
  2. import {connect} from 'react-redux';
  3. import AssessResult from '@components/AssessResult';
  4. import {ISREAD} from '@store/types/homePage.js';
  5. import {billing} from '@store/async-actions/pushMessage';
  6. import {getAssessData,getIndexData} from '@store/async-actions/fetchModules';
  7. import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_INDEX_SUB_TYPE} from '@types/assessResult';
  8. import store from '@store';
  9. /***
  10. * 管理评估逻辑:
  11. * 根据推送弹窗显示“智能推荐”,首次无选中项
  12. * 评估内容项接口返回,其中整体评估为右侧操作加入
  13. * 点确定等同于页面病例保存按钮(同时保存页面数据和评估结果)
  14. * 点确定后再次打开,保留上次操作结果(页面清空,引用除外),
  15. * 但推荐选项按最新推送显示
  16. *
  17. * ***/
  18. function mapStateToProps(state) {
  19. //console.log(state)
  20. const {assessResult} = state;
  21. return {
  22. data:assessResult.data,
  23. indexData:assessResult.indexData,
  24. saveIndexData:assessResult.saveIndexData,
  25. saveData:assessResult.saveData,
  26. update:assessResult.update,
  27. timeTypes:assessResult.indexTimeTypes
  28. }
  29. }
  30. function mapDispatchToProps(dispatch) {
  31. return {
  32. getAssess(){
  33. dispatch(getAssessData()).then((res)=>{
  34. if(res.data.code=='0'){
  35. dispatch({
  36. type:SET_ASSESS_DATA,
  37. data:res.data.data
  38. })
  39. }
  40. }).catch(error=>{
  41. console.log(error);
  42. });
  43. },
  44. getIndexData(param){
  45. const state=store.getState();
  46. const {range,rangeType,index} = param;
  47. const indexData = state.assessResult.indexData;
  48. const obj = indexData[range[0]+range[range.length-1]];
  49. if(obj&&Object.keys(obj).length!=0){ //该维度已获取过数据
  50. //console.log(obj,rangeType,index);
  51. /*dispatch({
  52. type:SET_INDEX_SUB_TYPE,
  53. index,
  54. rangeType
  55. });*/
  56. return ;
  57. }
  58. dispatch(getIndexData(range)).then((res)=>{
  59. if(res.data.code=='0'){
  60. dispatch({
  61. type:SET_INDEX_DATA,
  62. data:parseChartData(res.data.data),
  63. range,
  64. index,
  65. rangeType
  66. });
  67. }
  68. }).catch(error=>{
  69. console.log(error);
  70. });
  71. }
  72. }
  73. }
  74. function parseChartData(indexData){
  75. let arr=[],obj={},temp={};
  76. let nameArr=[],nameObj={}; //暂弃
  77. if(!indexData){
  78. return [];
  79. }
  80. indexData.itemIndexData.map((it)=>{
  81. temp=indexData.indexConfigData.find((i)=>{return it.itemName==i.indexUnique});
  82. arr=obj[temp.orderNo]||[];
  83. nameArr=nameObj[temp.orderNo]||[];
  84. obj[temp.orderNo]=[...arr,it];
  85. nameObj[temp.orderNo]=[...nameArr,it.itemName];
  86. });
  87. //nameObj,obj;
  88. return obj;
  89. }
  90. const AssessResultContainer = connect(mapStateToProps, mapDispatchToProps)(AssessResult);
  91. export default AssessResultContainer;