AssessResult.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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,REMOVE_ASSESS_ITEMS,CLEAR_INDEX_DATA} from '@types/assessResult';
  8. import store from '@store';
  9. import {SET_SCALE_INFO} from "../store/types/pushMessage";
  10. /***
  11. * 管理评估逻辑:
  12. * 根据推送弹窗显示“智能推荐”,首次无选中项
  13. * 评估内容项接口返回,其中整体评估为右侧操作加入
  14. * 点确定等同于页面病例保存按钮(同时保存页面数据和评估结果)
  15. * 点确定后再次打开,保留上次操作结果(页面清空,引用除外),
  16. * 但推荐选项按最新推送显示
  17. *
  18. * ***/
  19. function mapStateToProps(state) {
  20. const {assessResult,pushMessage} = state;
  21. return {
  22. data:assessResult.data,
  23. indexData:assessResult.indexData,
  24. indexNames:assessResult.indexNames,
  25. update:assessResult.update, //评估数据更新
  26. update1:assessResult.update1, //加入记录更新
  27. timeTypes:assessResult.indexTimeTypes, //图表切换的维度
  28. //wholeAssessData:assessResult.wholeAssess, //评估内容
  29. wholeIndexs:assessResult.wholeIndexs||{}, //已加入评估记录的推送项
  30. wholeResults:assessResult.wholeResults, //整体评估可能结果
  31. chooseSelecteds:assessResult.chooseSelecteds, //已选中的选项
  32. wholeAssessText:assessResult.wholeAssessText, //整体评估补充说明
  33. scaleInfo: pushMessage.scaleInfo,//量表内容
  34. scaleUpdate:pushMessage.scaleUpdate,
  35. chronicPushItems: pushMessage.chronicPushItems, //慢病右侧推送
  36. formulaResult:pushMessage.formulaResult, //量表计算结果
  37. calcuResult:pushMessage.calcuResult, //评估弹窗可能结果计算结果
  38. calcuValues:pushMessage.calcuValues, //计算公式填的值
  39. }
  40. }
  41. function mapDispatchToProps(dispatch) {
  42. return {
  43. getAssess(isRecommend){ //获取评估内容数据
  44. if(isRecommend){
  45. const data = {
  46. regionName: "整体评估",
  47. regionType: "0",
  48. isRecommend:true
  49. };
  50. dispatch({
  51. type:SET_ASSESS_DATA,
  52. data:[data]
  53. });
  54. return;
  55. }
  56. dispatch(getAssessData()).then((res)=>{
  57. if(res.data.code=='0'){
  58. dispatch({
  59. type:SET_ASSESS_DATA,
  60. data:res.data.data
  61. })
  62. }
  63. }).catch(error=>{
  64. console.log(error);
  65. });
  66. },
  67. getIndexData(param){ //获取评估图表数据
  68. const {range,rangeType,index,pindex,getNew} = param;
  69. dispatch(getIndexData(range)).then((res)=>{
  70. if(res.data.code=='0'){
  71. dispatch({
  72. type:SET_INDEX_DATA,
  73. data:parseChartData(res.data.data),
  74. range,
  75. index,
  76. rangeType,
  77. pindex,
  78. getNew
  79. });
  80. }
  81. }).catch(error=>{
  82. console.log(error);
  83. });
  84. },
  85. clearChartData(){ //清除评估图表数据
  86. dispatch({
  87. type:CLEAR_INDEX_DATA
  88. })
  89. },
  90. }
  91. }
  92. function parseChartData(indexData){
  93. let arr=[],obj={},temp={};
  94. let nameArr=[],nameObj={}; //暂弃
  95. if(!indexData){
  96. return [];
  97. }
  98. indexData.itemIndexData.map((it)=>{
  99. temp=indexData.indexConfigData.find((i)=>{return it.itemName==i.indexUnique});
  100. arr=obj[temp.indexDesc]||[];
  101. nameArr=nameObj[temp.indexDesc]||[];
  102. obj[temp.indexDesc]=[...arr,it];
  103. nameObj[temp.indexDesc]=[...nameArr,it.itemName];
  104. });
  105. //nameObj,obj;
  106. return {nameObj,obj};
  107. }
  108. const AssessResultContainer = connect(mapStateToProps, mapDispatchToProps)(AssessResult);
  109. export default AssessResultContainer;