CurrentIll.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. import React from 'react';
  2. import { connect } from 'react-redux';
  3. import CurrentIll from '@components/CurrentIll';
  4. import {INSERT_PROCESS,SET_CURRENT_DATA,SETTEXTMODEVALUE,SET_LABEL_MODULE,SELECT_SEARCHDATA,CLEAR_CURRENT_EDIT,SAVE_CURR_FREE} from '@store/types/currentIll';
  5. import {pushMessage} from '../store/async-actions/pushContainer';
  6. import {getModules} from '../store/async-actions/fetchModules.js';
  7. import {SETDROPSHOW} from '@types/homePage.js';
  8. import {HIDE,RESET,CLICKCOUNT,ISREAD,SEARCH_DROP_LOCATION} from '@store/types/homePage.js';
  9. import {billing} from '@store/async-actions/pushMessage';
  10. import {getModule} from '@store/async-actions/fetchModules.js';
  11. import {didPushParamChange} from '@utils/tools.js';
  12. import {Notify} from '@commonComp';
  13. function mapStateToProps(state) {
  14. const {homePage,currentIll,mainSuit,diagnosticList} = state;
  15. return {
  16. data:currentIll.data,//主诉模板
  17. emptyData:currentIll.emptyData,//空模板
  18. searchData:currentIll.searchDatas,//搜索结果
  19. focusIndex:currentIll.focusIndex,
  20. processModule:currentIll.processModule,//病程变化模板
  21. showArr:homePage.showDrop,
  22. span:currentIll.span,
  23. update:currentIll.update,//用于更新
  24. mainText:mainSuit.saveText,//主诉选中的数据
  25. mainData:mainSuit.data,//主诉使用的模板
  26. symptomFeature:mainSuit.symptomFeature,//主诉分词数据
  27. moduleNum:mainSuit.moduleNum,//主诉使用的模板
  28. type: state.typeConfig.typeConfig,
  29. mainIds:mainSuit.mainIds,//主诉症状选中的id(去重用)
  30. mainTailIds:mainSuit.mainTailIds,//主诉症状选中的id(去重用)
  31. totalHide: homePage.totalHide,
  32. saveText:currentIll.saveText,
  33. selecteds:currentIll.selecteds, //普通多选选中状态
  34. editClear:currentIll.editClear,
  35. symptomIds:currentIll.symptomIds,//症状id,去重用
  36. isRead:homePage.isRead,
  37. fuzhen:diagnosticList.mainSuitStr,//诊断第一个复诊值
  38. boxTop:homePage.boxTop,
  39. boxLeft:homePage.boxLeft,
  40. allModules:homePage.allModules,
  41. // isChronic:!!diagnosticList.chronicMagItem,
  42. isChronic:mainSuit.chronicDesease?mainSuit.chronicDesease:diagnosticList.chronicMagItem,
  43. }
  44. }
  45. function mapDispatchToProps(dispatch) {
  46. return {
  47. insertProcess(obj,allModules){//点击病程变化
  48. // 埋点dispatch
  49. dispatch({
  50. type:CLICKCOUNT,
  51. data:{id:obj.id},
  52. clickType:'单击',
  53. num:1
  54. });
  55. dispatch({
  56. type:INSERT_PROCESS,
  57. });
  58. dispatch({
  59. type:ISREAD
  60. })
  61. },
  62. async setData(info){//设置现病史使用模板
  63. // let idsArr = info.mainIds;
  64. let idsArr = info.mainTailIds.filter((it,i)=>{return it});
  65. // let ids = idsArr.join(",");
  66. let labelModule = await getModules(idsArr);
  67. if(labelModule.data.code==0){//根据id获取标签模板
  68. dispatch({
  69. type:SET_LABEL_MODULE,
  70. data:labelModule.data.data
  71. })
  72. }
  73. dispatch({
  74. type:SET_CURRENT_DATA,
  75. info
  76. })
  77. //右侧推送
  78. setTimeout(function(){ //延迟待确定后的数据更新后推送,避免获取的参数还是旧的
  79. if(didPushParamChange()){ //操作后内容有变化才推送
  80. dispatch(billing());
  81. }
  82. },500);
  83. },
  84. pushMessage: (data) => {
  85. dispatch(() => pushMessage(data))
  86. },
  87. //文本模式下推送
  88. fetchPushInfos(){
  89. //调右侧推送
  90. if(didPushParamChange()) {
  91. dispatch(billing());
  92. }
  93. },
  94. handleInput(obj){ //文本模式值保存
  95. dispatch({
  96. type:SETTEXTMODEVALUE,
  97. text:obj.text
  98. })
  99. },
  100. fetchModules(param){
  101. const {id,name,index,span,conceptId} = param;
  102. getModule(id).then((res)=>{
  103. if(res.data.code=='0'){
  104. dispatch({
  105. type:SELECT_SEARCHDATA,
  106. index,
  107. name,
  108. data: res.data.data,
  109. span,
  110. isReplace:false,
  111. conceptId
  112. })
  113. dispatch({
  114. type:ISREAD
  115. })
  116. }
  117. });
  118. //右侧推送
  119. setTimeout(function(){
  120. dispatch(billing());
  121. },200);
  122. },
  123. changeEditIll(bool){
  124. dispatch({
  125. type:CLEAR_CURRENT_EDIT,
  126. editClear:bool
  127. })
  128. },
  129. getSearchLocation(top,left){
  130. dispatch({
  131. type:SEARCH_DROP_LOCATION,
  132. top:top,
  133. left:left,
  134. dis:0
  135. })
  136. },
  137. freeText(item){//自由输入
  138. dispatch({
  139. type: SAVE_CURR_FREE,
  140. data:item
  141. })
  142. //右侧推送
  143. setTimeout(function(){
  144. if(didPushParamChange()){
  145. dispatch(billing());
  146. }
  147. },500);
  148. }
  149. }
  150. }
  151. const CurrentIllContainer = connect(
  152. mapStateToProps,
  153. mapDispatchToProps
  154. )(CurrentIll);
  155. export default CurrentIllContainer;