MainSuit.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. import React from 'react';
  2. import { connect } from 'react-redux';
  3. import MainSuit from '@components/MainSuit';
  4. import {CLEAR_COMSYMPTOMS,SHOW_TAIL,INSERT_MAIN,CLEAR_SEARCH,SET_SEARCH,SAVE_FREE,SET_DATA,INSERT_SEARCH,SETTEXTMODEVALUE,SET_FEATURE,SAVE_CHRONIC} from '@store/types/mainSuit';
  5. import {RESET,CLICKCOUNT,ISREAD,SEARCH_DROP_LOCATION,MODI_LOADING} from '@store/types/homePage.js';
  6. import {getCommSymptoms,getCommSymptomPush} from '@store/async-actions/mainSuit.js'
  7. import {CLEAR_DIAGNOSE} from '@store/types/diagnosticList';
  8. import {getSearch,getFeature,autoFillModules} from '@store/async-actions/fetchModules';
  9. import {billing} from '@store/async-actions/pushMessage';
  10. import {didPushParamChange,filterDataArr,inspectAndAssist} from '@utils/tools.js';
  11. import config from '@config/index.js';
  12. import {Notify} from '@commonComp';
  13. import {getInitModules} from '@store/async-actions/homePage.js';
  14. import {SHOW_REFER_RECORD} from '@store/types/diagnosticList';
  15. function mapStateToProps(state) {
  16. return {
  17. showDrop:state.mainSuit.showDrop,//用于更新
  18. update:state.mainSuit.update,
  19. CommonSymptoms:state.mainSuit.CommonSymptoms,//常见症状
  20. datas:state.mainSuit.data,//数据源
  21. selecteds:state.mainSuit.selecteds,//数据源
  22. saveText:state.mainSuit.saveText,
  23. searchData:state.mainSuit.searchDatas,//搜索结果
  24. type: state.typeConfig.typeConfig,
  25. showArr:state.homePage.showDrop,
  26. totalHide:state.homePage.totalHide,
  27. focusIndex:state.mainSuit.focusIndex,
  28. fuzhen:state.diagnosticList.mainSuitStr,//诊断第一个复诊值
  29. span:state.mainSuit.span,
  30. editClear:state.mainSuit.editClear,
  31. clearAction:state.mainSuit.clearAction,//清除
  32. mainIds:state.mainSuit.mainIds,//选中症状的id,搜索去重用
  33. isRead:state.homePage.isRead,
  34. commSymHide:state.homePage.commSymHide,
  35. boxTop:state.homePage.boxTop,
  36. boxLeft:state.homePage.boxLeft,
  37. currentData:state.currentIll.data,
  38. allModules:state.homePage.allModules,
  39. chronicDesease:state.mainSuit.chronicDesease||state.diagnosticList.chronicMagItem,
  40. }
  41. }
  42. function mapDispatchToProps(dispatch) {
  43. return {
  44. reTotalHide:()=>{//重置隐藏
  45. dispatch({
  46. type:RESET
  47. })
  48. },
  49. getCommonSymptoms:()=>{//获取常见症状
  50. dispatch(getCommSymptoms());
  51. },
  52. clearCommS:()=>{
  53. dispatch({
  54. type: CLEAR_COMSYMPTOMS
  55. })
  56. },
  57. handleTailClick:(obj,saveText,allModules)=>{//点击带尾巴的标签,如添加病程变化
  58. let text = filterDataArr(saveText);
  59. if(text.length >= config.limited){
  60. Notify.info(config.limitText);
  61. return
  62. }
  63. // 埋点dispatch
  64. dispatch({
  65. type:CLICKCOUNT,
  66. data:{id:obj.id},
  67. clickType:'单击',
  68. num:1
  69. });
  70. dispatch({
  71. type: SHOW_TAIL,
  72. info:obj.questionMapping,
  73. id:obj.relationModule,
  74. allModules:allModules
  75. })
  76. dispatch({
  77. type:ISREAD
  78. })
  79. },
  80. insertMain:(item)=>{//将选中的常见症状插入
  81. dispatch({
  82. type: INSERT_MAIN,
  83. item
  84. });
  85. //右侧推送
  86. setTimeout(function(){ //延迟待确定后的数据更新后推送,避免获取的参数还是旧的
  87. if(didPushParamChange()){ //操作后内容有变化才推送
  88. dispatch(billing());
  89. }
  90. },500);
  91. },
  92. getData(){//主诉使用模板
  93. dispatch({
  94. type: SET_DATA
  95. })
  96. },
  97. pushMessage(data) {//结构模式右侧推送
  98. dispatch(billing(data));
  99. },
  100. getSearchData:(item)=>{
  101. getSearch(item).then((res)=>{
  102. let result = res.data;
  103. if(+result.code == 0){
  104. let data = result.data;
  105. dispatch({
  106. type:SET_SEARCH,
  107. data:data
  108. })
  109. }else{
  110. console.log(result.msg);
  111. }
  112. });
  113. },
  114. insertSearch(obj){
  115. dispatch({
  116. type: INSERT_SEARCH,
  117. info:obj.item,
  118. span:obj.span
  119. })
  120. dispatch({
  121. type:ISREAD
  122. })
  123. //右侧推送
  124. setTimeout(function(){
  125. dispatch(billing());
  126. },200);
  127. },
  128. clearSearch:()=>{
  129. dispatch({
  130. type: CLEAR_SEARCH
  131. })
  132. },
  133. freeText(item){//自由输入
  134. dispatch({
  135. type: SAVE_FREE,
  136. data:item
  137. })
  138. //右侧推送
  139. setTimeout(function(){
  140. if(didPushParamChange()){
  141. dispatch(billing());
  142. }
  143. },500);
  144. },
  145. fetchPushInfos(){//文本模式下推送
  146. //调右侧推送
  147. dispatch(billing());
  148. },
  149. handleInput(obj){ //文本模式值保存
  150. dispatch({
  151. type:SETTEXTMODEVALUE,
  152. text:obj.text
  153. })
  154. },
  155. clearDiagnose(){//清除复诊
  156. dispatch({
  157. type:CLEAR_DIAGNOSE,
  158. })
  159. },
  160. getSearchLocation(top,left){
  161. dispatch({
  162. type:SEARCH_DROP_LOCATION,
  163. top:top,
  164. left:left,
  165. dis:0
  166. })
  167. },
  168. async getSymptomFeature(item){
  169. const it = item&&item.trim();
  170. const symptomFeature = await getFeature(it);
  171. if(symptomFeature.data.code==0){
  172. const data = symptomFeature.data.data;
  173. dispatch({
  174. type:SET_FEATURE,
  175. data:data
  176. })
  177. }
  178. },
  179. async saveChronic(item){//储存慢病信息
  180. // loading
  181. dispatch({type:MODI_LOADING,flag:true});
  182. // 存慢病
  183. dispatch({
  184. type:SAVE_CHRONIC,
  185. data:item
  186. })
  187. // 取模板
  188. await dispatch(getInitModules);
  189. // 模板回来关闭;loading
  190. dispatch({type:MODI_LOADING,flag:false});
  191. dispatch({type:SHOW_REFER_RECORD});
  192. },
  193. pureSaveChronic(item){//引用病例时储存
  194. // 存慢病
  195. dispatch({
  196. type:SAVE_CHRONIC,
  197. data:item
  198. })
  199. },
  200. getBilling: () => {
  201. dispatch(billing())
  202. },
  203. autoFillModules() {//自动填充模板
  204. dispatch(autoFillModules())
  205. }
  206. }
  207. }
  208. const MainSuitContainer = connect(
  209. mapStateToProps,
  210. mapDispatchToProps
  211. )(MainSuit);
  212. export default MainSuitContainer;