RadioInpDrop.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. import React from 'react';
  2. import {connect} from 'react-redux';
  3. import RadioInpDrop from "@components/RadioInpDrop";
  4. import {SETRADIO,CLEARSELECTED,CONFIRMSELECTED,SET_OT_RADIO_INPUT_VAL} from '@types/otherHistory';
  5. import {SETSELECTED4,SET_CK_RADIO_INPUT_VAL} from '@types/checkBody';
  6. import {SETDROPSHOW,HIDE,RESET,HIDEDROP,CLICKCOUNT,ISREAD} from '@types/homePage.js';
  7. import {RADIO_SELECT,SET_MS_RADIO_INPUT_VAL} from '@store/types/mainSuit.js';
  8. import {CURRENT_RADIO,SET_RADIO_INPUT_VALUE} from '@store/types/currentIll.js';
  9. import {Notify} from '@commonComp';
  10. import {filterArr,didPushParamChange,filterDataArr,getLabelIndex,fullfillText} from '@utils/tools.js';
  11. import {billing} from '@store/async-actions/pushMessage';
  12. import config from '@config/index.js';
  13. function mapStateToProps(state){
  14. return {
  15. mainSaveText:state.mainSuit.saveText,
  16. }
  17. }
  18. // 主诉选中事件
  19. function mainSelect(dispatch,params){
  20. const {ikey,id,values} = params;
  21. //let index = getLabelIndex(ikey);
  22. dispatch({
  23. type:SET_MS_RADIO_INPUT_VAL,
  24. data:{
  25. ikey,
  26. id,
  27. values
  28. }
  29. });
  30. }
  31. // 现病史选中事件
  32. function currentSelect(dispatch,params){
  33. const {ikey,id,values} = params;
  34. //let index = getLabelIndex(ikey);
  35. dispatch({
  36. type:SET_RADIO_INPUT_VALUE,
  37. data:{
  38. ikey,
  39. id,
  40. values
  41. }
  42. });
  43. }
  44. //其他史选中事件
  45. function otherSelect(dispatch,params){
  46. const {ikey,id,values} = params;
  47. //let index = getLabelIndex(ikey);
  48. dispatch({
  49. type:SET_OT_RADIO_INPUT_VAL,
  50. data:{
  51. ikey,
  52. id,
  53. values
  54. }
  55. });
  56. }
  57. //查体单选下拉选中事件
  58. function checkSelect(dispatch,params){
  59. const {ikey,id,values} = params;
  60. dispatch({
  61. type:SET_CK_RADIO_INPUT_VAL,
  62. data:{
  63. ikey,
  64. id,
  65. values
  66. }
  67. });
  68. }
  69. //在不同模块(主诉、现病史等)下拉选中调用不同事件
  70. function handleModuleDiff(dispatch,store,params){
  71. const {mainSaveText,values,value} = params;
  72. const type = params.ikey.substr(0,1); //当前所在的项目
  73. switch (+type){
  74. case 1:
  75. if(values){//有选值才需要判断,清空不需要处理
  76. let str='',temp='';
  77. for(let i in values){
  78. temp = values[i];
  79. if(typeof temp=='object'){
  80. str+=temp.value;
  81. }else{
  82. str+=temp;
  83. }
  84. }
  85. let mainText = filterDataArr(mainSaveText);
  86. let lengths = value?mainText.length - value.length + str.length:mainText.length + str.length;
  87. if(lengths >= config.limited){
  88. Notify.info(config.limitText);
  89. return
  90. }
  91. }
  92. mainSelect(dispatch,params);
  93. break;
  94. case 2:
  95. currentSelect(dispatch,params);
  96. break;
  97. case 3:
  98. otherSelect(dispatch,params);
  99. break;
  100. case 4:
  101. checkSelect(dispatch,params);
  102. break;
  103. default:
  104. }
  105. }
  106. /**************标签双击输入action types**************/
  107. //对应模块单选带输入存值事件
  108. const InputActions = {
  109. 1:SET_MS_RADIO_INPUT_VAL,
  110. 2:SET_RADIO_INPUT_VALUE,
  111. 3:SET_OT_RADIO_INPUT_VAL,
  112. 4:SET_CK_RADIO_INPUT_VAL
  113. };
  114. function mapDispatchToProps(dispatch,store){
  115. return {
  116. handleSelect(params) {
  117. handleModuleDiff(dispatch, store, params);
  118. //单选选中隐藏弹窗
  119. dispatch({
  120. type: HIDEDROP
  121. });
  122. //右侧推送
  123. setTimeout(function(){ //延迟待确定后的数据更新后推送,避免获取的参数还是旧的
  124. if(didPushParamChange()){ //操作后内容有变化才推送
  125. dispatch(billing('',params.ikey.substr(0,1)));
  126. }
  127. },500);
  128. },
  129. handleSaveInp(params){
  130. const {boxMark} = params;
  131. dispatch({
  132. type:InputActions[+boxMark],
  133. data:{values:params.values,ikey:params.ikey}
  134. });
  135. if(didPushParamChange()) { //操作后内容有变化才推送
  136. dispatch(billing());
  137. }
  138. dispatch({
  139. type:ISREAD
  140. })
  141. },
  142. handleShow(obj) {
  143. dispatch({
  144. type:CLICKCOUNT,
  145. data:obj,
  146. clickType:'单击',
  147. num:1
  148. });
  149. dispatch({
  150. type:SETDROPSHOW,
  151. data:obj
  152. });
  153. dispatch({
  154. type: RESET
  155. });
  156. }
  157. }
  158. }
  159. const RadioInpDropCont = connect(mapStateToProps,mapDispatchToProps)(RadioInpDrop);
  160. export default RadioInpDropCont;