mainSuit.js 5.1 KB

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