import React from 'react'; import {connect} from 'react-redux'; import NumberUnitDrop from "@components/NumberUnitDrop"; import {SETNUMBER,CHANGEOTHERTEXTLABEL} from '@types/otherHistory'; import {SETNUMBER4,CHANGECHECKTEXTLABEL} from '@types/checkBody.js'; import {SETDROPSHOW,CLICKCOUNT,HIDE,RESET,HIDEDROP,ISREAD,SET_SELECTED_AREA,SET_CURRENT_MODULE} from '@types/homePage.js'; import {NUMBER_SELECT,CHANGE_LABELVAL} from '@store/types/mainSuit.js'; import {CURRENT_NUMBER,CURRENT_TEXT_LABEL} from '@store/types/currentIll.js'; import {Notify} from '@commonComp'; import {didPushParamChange,filterDataArr,getLabelIndex} from '@utils/tools.js'; import {billing,getMRAnalyse} from '@store/async-actions/pushMessage'; import config from '@config/index.js'; import storeGlobal from '@store'; function mapStateToProps(state){ return { mainSaveText:state.mainSuit.saveText, mainData:state.mainSuit.data, select_start:state.homePage.select_start, } } //查体数字键盘选中 function checkSelect(dispatch,params){ dispatch({ type:SETNUMBER4, params }); } //其他史数字键盘选中 function otherSelect(dispatch,params){ dispatch({ type:SETNUMBER, params }); } //主诉 function mainSelect(dispatch,params){ dispatch({ type:NUMBER_SELECT, params }); } //现病史 function currentSelect(dispatch,params){ dispatch({ type:CURRENT_NUMBER, params }); } function handleModuleDiff(dispatch,params){ const {mainSaveText,mark,mainData} = params; const type = params.ikey.substr(0,1); //当前所在的项目 let ikey = getLabelIndex(params.ikey); switch (+type){ case 1: if(mark){//选中才限制,清空和回退无需验证 let text = filterDataArr(mainSaveText); const item = mainData[+ikey]; const nextItem = mainData[+ikey+1]; let lengths = text.length; if(nextItem&&nextItem.tagType==8 && nextItem.tagName==',' && item.value){ lengths = text.length + 1; } if(lengths >= config.limited){ Notify.info(config.limitText); return } } mainSelect(dispatch,params); break; case 2: currentSelect(dispatch,params); break; case 3: otherSelect(dispatch,params); break; case 4: checkSelect(dispatch,params); break; default: } } /**************************双击标签输入*********************************/ // 主诉 function mainSuitLabel(dispatch,params){ const index = params.ikey; let ikey = getLabelIndex(index); const {changeVal,totalVal} = params; dispatch({ type:CHANGE_LABELVAL, // data:{changeVal:changeVal,ikey:ikey,totalVal} data:Object.assign({},params,{ikey}) }) } // 现病史 function currentLabel(dispatch,params){ const index = params.ikey; let ikey = getLabelIndex(index); dispatch({ type:CURRENT_TEXT_LABEL, // data:{changeVal:params.changeVal,ikey:ikey} data:Object.assign({},params,{ikey}) }) } //其他史 function otherHisLabelEdit(dispatch,params){ const index = params.ikey; const {changeVal,totalVal} = params; let ikey = getLabelIndex(index); dispatch({ type:CHANGEOTHERTEXTLABEL, // data:{changeVal:changeVal,ikey:ikey,totalVal} data:Object.assign({},params,{ikey}) }) } //查体 function checkBodyLabelEdit(dispatch,params){ const index = params.ikey; let ikey = getLabelIndex(index); const {changeVal,totalVal} = params; dispatch({ type:CHANGECHECKTEXTLABEL, // data:{changeVal:changeVal,ikey:ikey,totalVal} data:Object.assign({},params,{ikey}) }) } function mapDispatchToProps(dispatch,store){ return { handleSelect(params){ handleModuleDiff(dispatch,params); //右侧推送 clearTimeout(timer); let timer = setTimeout(function(){ //延迟待确定后的数据更新后推送,避免获取的参数还是旧的 if(didPushParamChange()){ //操作后内容有变化才推送 dispatch(billing('',params.ikey.substr(0,1))); clearTimeout(timer); } },config.delayPushTime); if(!params.text.trim()){ dispatch({ type:ISREAD }) } dispatch({ type: ISREAD }); }, handleDbclick(obj){ dispatch({ type:CLICKCOUNT, data:obj, clickType:'双击', num:1 }); }, handleHide(){ dispatch({ type:HIDEDROP }) }, handleShow(params) { const storeState = storeGlobal.getState() const {moduleName, moduleObj} = storeState.homePage dispatch({ type:CLICKCOUNT, data:params, clickType:'单击', num:1 }); dispatch({ type:SETDROPSHOW, data:params }); if(moduleName != moduleObj[params.ikey[0]]) { dispatch({ type: SET_CURRENT_MODULE, moduleName: moduleObj[params.ikey[0]] }); dispatch(getMRAnalyse()); } /*dispatch({ type: RESET });*/ }, handleLabelChange(params){ const {type} = params; switch (+type){ case 1: mainSuitLabel(dispatch,params); break; case 2: currentLabel(dispatch,params); break; case 3: otherHisLabelEdit(dispatch,params); break; case 4: checkBodyLabelEdit(dispatch,params); break; default: } dispatch({ type: ISREAD }); }, setSelectArea(data){ dispatch({ type:SET_SELECTED_AREA, data }) } } } const NumberUnitDropCont = connect(mapStateToProps,mapDispatchToProps)(NumberUnitDrop); export default NumberUnitDropCont;