import React from 'react'; import {connect} from 'react-redux'; import RadioInpDrop from "@components/RadioInpDrop"; import {SETRADIO,CLEARSELECTED,CONFIRMSELECTED,SET_OT_RADIO_INPUT_VAL} from '@types/otherHistory'; import {SETSELECTED4,SET_CK_RADIO_INPUT_VAL} from '@types/checkBody'; import {SETDROPSHOW,HIDE,RESET,HIDEDROP,CLICKCOUNT,ISREAD,SET_SELECTED_AREA} from '@types/homePage.js'; import {RADIO_SELECT,SET_MS_RADIO_INPUT_VAL} from '@store/types/mainSuit.js'; import {CURRENT_RADIO,SET_RADIO_INPUT_VALUE} from '@store/types/currentIll.js'; import {Notify} from '@commonComp'; import {filterArr,didPushParamChange,filterDataArr,getLabelIndex,fullfillText} from '@utils/tools.js'; import {billing} from '@store/async-actions/pushMessage'; import config from '@config/index.js'; function mapStateToProps(state){ return { mainSaveText:state.mainSuit.saveText, select_start:state.homePage.select_start, } } // 主诉选中事件 function mainSelect(dispatch,params){ const {ikey,id,values} = params; //let index = getLabelIndex(ikey); dispatch({ type:SET_MS_RADIO_INPUT_VAL, data:{ ikey, id, values } }); } // 现病史选中事件 function currentSelect(dispatch,params){ const {ikey,id,values} = params; //let index = getLabelIndex(ikey); dispatch({ type:SET_RADIO_INPUT_VALUE, data:{ ikey, id, values } }); } //其他史选中事件 function otherSelect(dispatch,params){ const {ikey,id,values} = params; //let index = getLabelIndex(ikey); dispatch({ type:SET_OT_RADIO_INPUT_VAL, data:{ ikey, id, values } }); } //查体单选下拉选中事件 function checkSelect(dispatch,params){ const {ikey,id,values} = params; dispatch({ type:SET_CK_RADIO_INPUT_VAL, data:{ ikey, id, values } }); } //在不同模块(主诉、现病史等)下拉选中调用不同事件 function handleModuleDiff(dispatch,store,params){ const {mainSaveText,values,value} = params; const type = params.ikey.substr(0,1); //当前所在的项目 switch (+type){ case 1: if(values){//有选值才需要判断,清空不需要处理 let str='',temp=''; for(let i in values){ temp = values[i]; if(typeof temp=='object'){ str+=temp.value; }else{ str+=temp; } } let mainText = filterDataArr(mainSaveText); let lengths = value?mainText.length - value.length + str.length:mainText.length + str.length; 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: } } /**************标签双击输入action types**************/ //对应模块单选带输入存值事件 const InputActions = { 1:SET_MS_RADIO_INPUT_VAL, 2:SET_RADIO_INPUT_VALUE, 3:SET_OT_RADIO_INPUT_VAL, 4:SET_CK_RADIO_INPUT_VAL }; function mapDispatchToProps(dispatch,store){ return { handleSelect(params) { handleModuleDiff(dispatch, store, params); //单选选中隐藏弹窗 dispatch({ type: HIDEDROP }); //右侧推送 setTimeout(function(){ //延迟待确定后的数据更新后推送,避免获取的参数还是旧的 if(didPushParamChange()){ //操作后内容有变化才推送 dispatch(billing('',params.ikey.substr(0,1))); } },500); }, handleSaveInp(params){ const {boxMark} = params; dispatch({ type:InputActions[+boxMark], data:{values:params.values,ikey:params.ikey} }); if(didPushParamChange()) { //操作后内容有变化才推送 dispatch(billing()); } dispatch({ type:ISREAD }) }, handleShow(obj) { dispatch({ type:CLICKCOUNT, data:obj, clickType:'单击', num:1 }); dispatch({ type:SETDROPSHOW, data:obj }); dispatch({ type: RESET }); }, setSelectArea(data){ dispatch({ type:SET_SELECTED_AREA, data }) } } } const RadioInpDropCont = connect(mapStateToProps,mapDispatchToProps)(RadioInpDrop); export default RadioInpDropCont;