MainSuit.js 7.1 KB

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