MainSuit.js 7.0 KB

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