EditableSpan.js 7.8 KB

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