mainSuit.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. import {
  2. RECOVER_TAG_MAIN,
  3. COMM_SYMPTOMS,
  4. CLEAR_COMSYMPTOMS,
  5. SHOW_TAIL,
  6. INSERT_MAIN,
  7. SET_SEARCH,
  8. CLEAR_SEARCH,
  9. GET_BIGDATAPUSH,
  10. SET_MAINSUIT,
  11. MIX_CONFIRM,
  12. NUMBER_SELECT,
  13. RADIO_SELECT,
  14. COMM_CONFIRM,
  15. CHANGE_LABELVAL,
  16. SAVE_FREE,
  17. CLEAR_MAIN_SUIT,
  18. SET_DATA,
  19. INSERT_SEARCH,
  20. MAIN_FOCUS_INDEX,
  21. SETTEXTMODEVALUE,
  22. SETMAINTEXT,
  23. MAINADDLABELITEM,
  24. SETMAININPUT,
  25. DEL_MAIN,
  26. REMOVE_MAIN_ID,
  27. MAINSUIT_MUL,
  28. DEL_MAIN_LABLE,
  29. SET_FEATURE,
  30. SET_MS_RADIO_INPUT_VAL,
  31. SAVE_CHRONIC,
  32. MAIN_REMOVE_SPAN,
  33. SET_ADD_SEARCH,
  34. CLEAR_ADD_SEARCH,
  35. DELETE_MAIN_SELECTED_TAGS,
  36. REMAINSUITDATA,
  37. CLEARMAINSUITDATA,
  38. } from '../types/mainSuit';
  39. import {
  40. getCommSymptoms,
  41. handleTailClick,
  42. insertMain,
  43. setSearch,
  44. getBigSymptom,
  45. setMainMoudle,
  46. confirm,
  47. commConfirm,
  48. changeLabelVal,
  49. saveFreeVal,
  50. clearMainSuit,
  51. insertSearch,
  52. setTextModeValue,
  53. backspaceText,
  54. removeId,
  55. multipleComfirn,
  56. delSingleLable,
  57. getSymptomFeature,
  58. reMainsuitData,
  59. } from '../actions/mainSuit';
  60. import {recoveTag,setRadioInputValue,setNumberValue,setRadioValue,setCheckText,addLabelItem,setInputLabel,deleteSelectedLabels} from '@utils/utils';
  61. const initState = {
  62. showDrop:false,
  63. CommonSymptoms:[],//常见症状
  64. searchDatas:[],//搜索结果
  65. bigDataSymptom:[],//大数据推送症状
  66. moduleData:[],//主诉模板
  67. addSmoduleData:[],//添加病情变化模板
  68. data:[],//主诉使用的模板数据
  69. saveText:[],//主诉框内的值
  70. moduleNum:{num:0},//点了几次添加病情变化
  71. focusIndex:'',
  72. mainIds:[], //选中的主症状和伴随的id(搜索去重)
  73. editClear:true,
  74. symptomFeature:{//分词
  75. featureData:[],
  76. refresh:false //用于数据更新
  77. },
  78. chronicDesease:null, //慢病
  79. mainTailIds:[], //获取症状尾巴用
  80. mainReadSonM:[], //回读的子模板
  81. addSearchData:[] //添加症状里的搜索
  82. }
  83. export default function(state=initState,action){
  84. const res = Object.assign({},state);
  85. switch (action.type) {
  86. case SET_MAINSUIT: //主诉模板
  87. return setMainMoudle(state, action);
  88. case SET_DATA: //主诉使用模板
  89. // res.data = res.moduleData.concat();
  90. res.data = JSON.parse(JSON.stringify(res.moduleData));
  91. res.update = Math.random();
  92. return res;
  93. // return setMainData(state,action);
  94. case COMM_SYMPTOMS:
  95. return getCommSymptoms(state, action);
  96. case CLEAR_COMSYMPTOMS: //清空常见症状
  97. // return clearCommSymptoms(state,action);
  98. res.CommonSymptoms = [];
  99. return res;
  100. case GET_BIGDATAPUSH: //大数据推送症状
  101. return getBigSymptom(state, action);
  102. case SHOW_TAIL: //显示标签尾巴
  103. return handleTailClick(state, action);
  104. case INSERT_MAIN: //插入选中的常见症状
  105. return insertMain(state, action);
  106. case COMM_CONFIRM: //普通多选框确定事件
  107. return commConfirm(state, action);
  108. case MIX_CONFIRM: //有伴 多选框确定事件
  109. return confirm(state, action);
  110. case SET_SEARCH:
  111. return setSearch(state, action);
  112. case INSERT_SEARCH:
  113. return insertSearch(state, action);
  114. case CLEAR_SEARCH: //清空搜索结果
  115. res.searchDatas = [];
  116. return res;
  117. case NUMBER_SELECT: //数字键盘选中的值处理
  118. return setNumberValue(state, action);
  119. case RADIO_SELECT: //单选选中的值处理
  120. return setRadioValue(state, action);
  121. case CHANGE_LABELVAL: //改变标签值
  122. return changeLabelVal(state, action);
  123. case SAVE_FREE: //自由输入
  124. return saveFreeVal(state, action);
  125. case MAIN_FOCUS_INDEX:
  126. res.focusIndex = action.index;
  127. res.span = action.$span;
  128. return res;
  129. case CLEAR_MAIN_SUIT: //清除数据
  130. return clearMainSuit(state, action);
  131. case SETTEXTMODEVALUE:
  132. return setTextModeValue(state, action);
  133. case SETMAINTEXT:
  134. return setCheckText(state, action);
  135. case MAINADDLABELITEM:
  136. return addLabelItem(state, action);
  137. case SETMAININPUT:
  138. return setInputLabel(state, action);
  139. case DEL_MAIN:
  140. return backspaceText(state, action);
  141. case REMOVE_MAIN_ID:
  142. return removeId(state, action);
  143. case MAINSUIT_MUL: //单列多选
  144. return multipleComfirn(state, action);
  145. case DEL_MAIN_LABLE: //单独删除标签
  146. return delSingleLable(state, action);
  147. case SET_FEATURE: //主诉分词
  148. return getSymptomFeature(state, action);
  149. case SET_MS_RADIO_INPUT_VAL:
  150. return setRadioInputValue(state, action);
  151. case SAVE_CHRONIC: //存慢病信息,说明走慢病流程,慢病没有主诉模板,故要清掉
  152. res.chronicDesease = action.data;
  153. res.moduleData = [];
  154. res.addSmoduleData = [];
  155. return res;
  156. case RECOVER_TAG_MAIN:
  157. return recoveTag(state, action);
  158. case MAIN_REMOVE_SPAN:
  159. // 只剩最后一个空标签时才移除
  160. if (res.data.length == 1) {
  161. res.data = [];
  162. res.saveText = [];
  163. res.mainIds = [];
  164. res.editClear = true;
  165. }
  166. return res;
  167. case SET_ADD_SEARCH: //添加症状-搜索
  168. res.addSearchData = action.data;
  169. return res;
  170. case CLEAR_ADD_SEARCH: //清空症状搜索结果
  171. //非必要是不要重复赋值[],造成searchBox componentWillReceiveProps循环调用导致内存泄漏
  172. if (res.addSearchData && res.addSearchData.length > 0) {
  173. res.addSearchData = [];
  174. }
  175. return res;
  176. case DELETE_MAIN_SELECTED_TAGS:
  177. return deleteSelectedLabels(state, action);
  178. // 回显主述
  179. case REMAINSUITDATA:
  180. return reMainsuitData(state, action);
  181. case CLEARMAINSUITDATA:
  182. res.saveText = [];
  183. return res;
  184. default:
  185. return state;
  186. }
  187. }