MainSuit.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  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,MODI_LOADING,SETDROPSHOW,SET_CURRENT_MODULE} 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,getMRAnalyse} 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. import { SET_READ_MODE } from "@store/types/typeConfig";
  16. import store from '@store';
  17. function mapStateToProps(state) {
  18. const {mainSuit,homePage,diagnosticList,typeConfig} = state;
  19. return {
  20. //showDrop:mainSuit.showDrop,//用于更新
  21. update:mainSuit.update,
  22. CommonSymptoms:mainSuit.CommonSymptoms,//常见症状
  23. datas:mainSuit.data,//数据源
  24. saveText:mainSuit.saveText,
  25. searchData:mainSuit.searchDatas,//搜索结果
  26. type: typeConfig.mode,
  27. showArr:homePage.showDrop,
  28. totalHide:homePage.totalHide,
  29. focusIndex:mainSuit.focusIndex,
  30. fuzhen:diagnosticList.mainSuitStr,//诊断第一个复诊值
  31. span:mainSuit.span,
  32. editClear:mainSuit.editClear,
  33. clearAction:mainSuit.clearAction,//清除
  34. mainIds:mainSuit.mainIds,//选中症状的id,搜索去重用
  35. isRead:homePage.isRead,
  36. commSymHide:homePage.commSymHide,
  37. currentData:state.currentIll.data,
  38. allModules:homePage.allModules,
  39. chronicDesease:mainSuit.chronicDesease?mainSuit.chronicDesease:diagnosticList.chronicMagItem,
  40. items:state.historyTemplates.items,
  41. showHisBox:mainSuit.showHisBox,
  42. readMode:typeConfig.readMode, //回读回来的模式(与当前模式并存)
  43. typeConfig: state.typeConfig
  44. }
  45. }
  46. function mapDispatchToProps(dispatch) {
  47. return {
  48. reTotalHide:()=>{//重置隐藏
  49. dispatch({
  50. type:RESET
  51. })
  52. },
  53. getCommonSymptoms:()=>{//获取常见症状
  54. dispatch(getCommSymptoms());
  55. },
  56. clearCommS:()=>{
  57. dispatch({
  58. type: CLEAR_COMSYMPTOMS
  59. })
  60. },
  61. handleTailClick:(obj,saveText,allModules)=>{
  62. //点击带尾巴的标签,如添加病程变化
  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. })
  78. dispatch({
  79. type:ISREAD
  80. })
  81. },
  82. insertMain:(item)=>{//将选中的常见症状插入
  83. // 判断字数限制
  84. const items = item.select;
  85. if(items.length>1){
  86. /*for(let i=1; i<items.length; i++){
  87. items[i].name = '、'+items[i].name;
  88. items[i].value = items[i].value?'、'+items[i].value:items[i].name;
  89. }*/
  90. // 计算字数
  91. let tempTotal = "";
  92. for(let j in items){
  93. tempTotal += items[j].name ;
  94. }
  95. if((tempTotal.length+ items.length-1) >= config.limited){
  96. Notify.info(config.limitText);
  97. return ;
  98. }
  99. }
  100. dispatch({//主诉使用模板
  101. type: SET_DATA
  102. })
  103. dispatch({
  104. type: INSERT_MAIN,
  105. item
  106. });
  107. //右侧推送
  108. setTimeout(function(){ //延迟待确定后的数据更新后推送,避免获取的参数还是旧的
  109. if(didPushParamChange()){ //操作后内容有变化才推送
  110. dispatch(billing());
  111. }
  112. },500);
  113. },
  114. /*getData(){//主诉使用模板
  115. dispatch({
  116. type: SET_DATA
  117. })
  118. },*/
  119. pushMessage(data) {//结构模式右侧推送
  120. if(didPushParamChange()) {
  121. dispatch(billing(data));
  122. }
  123. },
  124. getSearchData:(item)=>{
  125. getSearch(item).then((res)=>{
  126. let result = res.data;
  127. if(+result.code == 0){
  128. let data = result.data;
  129. dispatch({
  130. type:SET_SEARCH,
  131. data:data
  132. })
  133. }else{
  134. console.log(result.msg);
  135. }
  136. });
  137. },
  138. insertSearch(obj){
  139. dispatch({
  140. type: INSERT_SEARCH,
  141. info:obj.item,
  142. span:obj.span
  143. })
  144. dispatch({
  145. type:ISREAD
  146. })
  147. //右侧推送
  148. setTimeout(function(){
  149. dispatch(billing());
  150. },200);
  151. },
  152. clearSearch:()=>{
  153. dispatch({
  154. type: CLEAR_SEARCH
  155. })
  156. },
  157. freeText(item){//自由输入
  158. dispatch({
  159. type: SAVE_FREE,
  160. data:item
  161. })
  162. //右侧推送
  163. setTimeout(function(){
  164. if(didPushParamChange()){
  165. dispatch(billing());
  166. }
  167. },500);
  168. },
  169. fetchPushInfos(){//文本模式下推送
  170. //调右侧推送
  171. if(didPushParamChange()) {
  172. dispatch(billing());
  173. }
  174. },
  175. handleInput(obj){ //文本模式值保存
  176. dispatch({
  177. type:SETTEXTMODEVALUE,
  178. text:obj.text
  179. })
  180. },
  181. clearDiagnose(){//清除复诊
  182. dispatch({
  183. type:CLEAR_DIAGNOSE,
  184. })
  185. },
  186. getSymptomFeature(data){
  187. dispatch({
  188. type:SET_FEATURE,
  189. data:data
  190. })
  191. },
  192. async saveChronic(item,isTextMode){//储存慢病信息
  193. // loading
  194. dispatch({type:MODI_LOADING,flag:true});
  195. // 存慢病
  196. dispatch({
  197. type:SAVE_CHRONIC,
  198. data:item
  199. })
  200. if(isTextMode){
  201. dispatch({type: SET_READ_MODE, readMode: 0});
  202. }
  203. // 取模板
  204. await dispatch(getInitModules);
  205. // 模板回来关闭;loading
  206. dispatch({type:MODI_LOADING,flag:false});
  207. dispatch({type:SHOW_REFER_RECORD});
  208. },
  209. pureSaveChronic(item){//引用病例时储存
  210. // 存慢病
  211. dispatch({
  212. type:SAVE_CHRONIC,
  213. data:item
  214. })
  215. },
  216. autoFillModules() {//自动填充模板
  217. dispatch(autoFillModules())
  218. },
  219. handleShow(obj) {
  220. const storeState = store.getState()
  221. const {moduleName, moduleObj} = storeState.homePage
  222. dispatch({
  223. type:SETDROPSHOW,
  224. data:obj
  225. });
  226. if(moduleName != moduleObj[obj.ikey]) {
  227. dispatch({
  228. type: SET_CURRENT_MODULE,
  229. moduleName: moduleObj[obj.ikey]
  230. });
  231. dispatch(getMRAnalyse());
  232. }
  233. dispatch({
  234. type: RESET
  235. });
  236. },
  237. }
  238. }
  239. const MainSuitContainer = connect(
  240. mapStateToProps,
  241. mapDispatchToProps
  242. )(MainSuit);
  243. export default MainSuitContainer;