EditableSpan.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. import {connect} from 'react-redux';
  2. import {EditableSpan} from '@commonComp';
  3. import {SETCHECKTEXT,SETSEARCHDATA,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,DEL_CHECKBODY} from '@types/checkBody';
  4. import {SET_SEARCH,MAIN_FOCUS_INDEX,CLEAR_SEARCH,SETMAINTEXT,DEL_MAIN} from '@types/mainSuit';
  5. import {SETOTHERTEXT,SETOTHERSEARCHDATA,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,DEL_OTHERHIS} from '@types/otherHistory';
  6. import {SET_CURRENT_SEARCH,CURRENT_CLEAR,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,DEL_CURRENT} from '@types/currentIll';
  7. import {getSearch} from '@store/async-actions/fetchModules.js';
  8. import {billing} from '@store/async-actions/pushMessage';
  9. import {didPushParamChange} from '@utils/tools.js';
  10. import {SETTEXTFOCUS} from '@types/homePage';
  11. import {RESET,SETDROPSHOW,ISREAD} from "@store/types/homePage";
  12. import config from '@config/index.js';
  13. function mapStateToProps(state){//console.log(state)
  14. return {
  15. mainSaveText:state.mainSuit.saveText,
  16. isRead:state.homePage.isRead,
  17. }
  18. }
  19. function mainSuitSearch(obj){
  20. return (dispatch)=>{
  21. const text = obj.text.replace(/\,/,'');
  22. getSearch({boxMark:1,inpStr:text,mainIds:obj.mainIds}).then((res)=>{
  23. if(res.data.code=='0'){
  24. dispatch({
  25. type:SET_SEARCH,
  26. data:res.data.data,
  27. inpStr:text //搜索输入的值
  28. })
  29. }
  30. });
  31. }
  32. }
  33. function currentSearch(obj){
  34. return (dispatch)=>{
  35. const text = obj.text.replace(/\,/,'');
  36. getSearch({boxMark:1,inpStr:text,mainIds:obj.mainIds}).then((res)=>{
  37. if(res.data.code=='0'){
  38. dispatch({
  39. type:SET_CURRENT_SEARCH,
  40. data:res.data.data,
  41. inpStr:text
  42. })
  43. }
  44. });
  45. }
  46. }
  47. function checkBodySearch(obj){
  48. return (dispatch)=>{
  49. const text = obj.text.replace(/\,/,'');
  50. getSearch({boxMark:4,inpStr:text}).then((res)=>{
  51. if(res.data.code=='0'){
  52. dispatch({
  53. type:SETSEARCHDATA,
  54. data:res.data.data,
  55. inpStr:text
  56. });
  57. }
  58. });
  59. }
  60. }
  61. function otherHisSearch(obj) {
  62. return (dispatch)=>{
  63. const text = obj.text.replace(/\,/,'');
  64. getSearch({boxMark:3,inpStr:text}).then((res)=>{
  65. if(res.data.code=='0'){
  66. dispatch({
  67. type:SETOTHERSEARCHDATA,
  68. data:res.data.data,
  69. inpStr:text
  70. });
  71. }
  72. });
  73. }
  74. }
  75. function mapDispatchToProps(dispatch,state) {
  76. return {
  77. setFocusIndex(obj){//将选中值插入相应位置
  78. const {i,boxMark} = obj;
  79. switch (+obj.boxMark){
  80. case 1:
  81. dispatch({
  82. type:MAIN_FOCUS_INDEX,
  83. index:i,
  84. $span:obj.dom
  85. });
  86. break;
  87. case 2:
  88. dispatch({
  89. type:CURRENT_FOCUS_INDEX,
  90. index:i,
  91. $span:obj.dom
  92. });
  93. break;
  94. case 3:
  95. dispatch({
  96. type:OTHER_FOCUS_INDEX,
  97. index:i,
  98. $span:obj.dom
  99. });
  100. break;
  101. case 4:
  102. dispatch({
  103. type:CHECK_FOCUS_INDEX,
  104. index:i,
  105. $span:obj.dom
  106. });
  107. break;
  108. default:
  109. dispatch({
  110. type:SETTEXTFOCUS,
  111. index:i
  112. });
  113. break;
  114. }
  115. //显示搜索框
  116. dispatch({
  117. type:SETDROPSHOW,
  118. data:{ikey:boxMark+i+'0'}
  119. });
  120. dispatch({
  121. type: RESET
  122. });
  123. },
  124. handleChange(obj){//存data值
  125. switch (+obj.boxMark){
  126. case 1:
  127. dispatch({
  128. type:SETMAINTEXT,
  129. text:obj.text1,
  130. i:obj.i
  131. });
  132. dispatch({
  133. type: RESET
  134. });
  135. break;
  136. case 2:
  137. dispatch({
  138. type:SETCURRENTTEXT,
  139. text:obj.text1,
  140. i:obj.i
  141. });
  142. break;
  143. case 3:
  144. dispatch({
  145. type:SETOTHERTEXT,
  146. text:obj.text1,
  147. i:obj.i
  148. });
  149. break;
  150. case 4:
  151. dispatch({
  152. type:SETCHECKTEXT,
  153. text:obj.text1,
  154. i:obj.i
  155. });
  156. break;
  157. default:
  158. break;
  159. }
  160. //右侧推送
  161. clearTimeout(timer);
  162. let timer = setTimeout(function(){ //延迟待确定后的数据更新后推送,避免获取的参数还是旧的
  163. if(didPushParamChange()){ //操作后内容有变化才推送
  164. dispatch(billing);
  165. clearTimeout(timer);
  166. }
  167. },config.delayPushTime);
  168. },
  169. handleSearch(obj){
  170. switch (+obj.boxMark){
  171. case 1:
  172. dispatch(mainSuitSearch(obj));
  173. break;
  174. case 2:
  175. dispatch(currentSearch(obj));
  176. break;
  177. case 3:
  178. dispatch(otherHisSearch(obj));
  179. break;
  180. case 4:
  181. dispatch(checkBodySearch(obj));
  182. break;
  183. default:
  184. break;
  185. }
  186. },
  187. handleClear(obj){//清空搜索结果
  188. switch (+obj.boxMark){
  189. case 1:
  190. dispatch({type:CLEAR_SEARCH});
  191. break;
  192. case 2:
  193. dispatch({type:CURRENT_CLEAR});
  194. break;
  195. case 3:
  196. dispatch({type:OTHERHIS_CLEAR});
  197. break;
  198. case 4:
  199. dispatch({type:CHECKBODY_CLEAR});
  200. break;
  201. default:
  202. break;
  203. }
  204. },
  205. handleKeydown(obj){//backspace删除
  206. if(obj.i==null){return}
  207. switch (+obj.boxMark){
  208. case 1:
  209. dispatch({type:DEL_MAIN,delIndex:obj.i});
  210. break;
  211. case 2:
  212. dispatch({type:DEL_CURRENT,delIndex:obj.i});
  213. break;
  214. case 3:
  215. dispatch({type:DEL_OTHERHIS,delIndex:obj.i});
  216. break;
  217. case 4:
  218. dispatch({type:DEL_CHECKBODY,delIndex:obj.i});
  219. break;
  220. default:
  221. break;
  222. }
  223. // 更新文本标签
  224. dispatch({
  225. type:ISREAD
  226. })
  227. },
  228. }
  229. }
  230. const EditableSpanCont = connect(
  231. mapStateToProps,
  232. mapDispatchToProps
  233. )(EditableSpan);
  234. export default EditableSpanCont;