Selaa lähdekoodia

Merge remote-tracking branch 'origin/IE_test' into dev/new1

# Conflicts:
#	src/common/components/EditableSpan/index.jsx
#	src/components/NumberUnitDrop/index.jsx
#	src/components/SpreadDrop/index.jsx
zhouna 6 vuotta sitten
vanhempi
commit
77daf9d197

+ 9 - 6
src/common/components/EditableSpan/index.jsx

@@ -1,7 +1,7 @@
 import React,{Component} from 'react';
 import style from './index.less';
 import config from "@config/index";
-import {filterArr,isIE,getPageCoordinate} from '@utils/tools.js';
+import {filterArr,isIE,getPageCoordinate,filterDataArr} from '@utils/tools.js';
 import Notify from '../Notify/index.js';
 import classNames from 'classnames';
 
@@ -51,10 +51,10 @@ class EditableSpan extends Component{
   }
   onChange(e){
     e.stopPropagation();
-    const {handleChange,boxMark,i,handleSearch,value,mainSaveText,mainIds} = this.props;
+    const {handleChange,boxMark,i,handleSearch,value,mainSaveText,mainIds,handleClear} = this.props;
     const {labelVal,searchPre} = this.state;
     const text1 =e.target.innerText;
-    let mainText = filterArr(mainSaveText);//主诉字数
+    let mainText = filterDataArr(mainSaveText);//主诉字数
     if(+boxMark==1){
       if(mainText.length >= config.limited){
         if(text1.length > labelVal.length){
@@ -91,11 +91,13 @@ class EditableSpan extends Component{
       //console.log(labelVal,'旧:',searchPre,'新:',newText,'搜索:',search);
       if(config.punctuationReg.test(search)){     //只有标点符号时不搜索
         handleSearch&&handleSearch({text:search,isEnd,boxMark,mainIds});
+      }else{//只有标点符号时要清空搜索结果
+        handleClear && handleClear({boxMark})
       }
       //搜索后保持现在的值,继续输入时要用于对比
-      that.setState({
+      /*that.setState({
         searchPre:newText
-      });
+      });*/
     },config.delayTime);
     this.setState({
       timer
@@ -149,7 +151,7 @@ class EditableSpan extends Component{
 
   }
   handleKeyup(e){
-    const {boxMark,handleKeydown,i,value,removeId} = this.props;
+    const {boxMark,handleKeydown,i,value,removeId,handleClear} = this.props;
     const {preVal,index} = this.state;
     const ev = e||window.event;
     const target = ev.target||ev.srcElement;
@@ -160,6 +162,7 @@ class EditableSpan extends Component{
       let preObj = $(this.$span.current).prev();
       if(index!==0&&preVal.trim().length==1){
           removeId && removeId({boxMark,i:index,text:""});
+          handleClear && handleClear({boxMark});//删除最后一个字时清空搜索结果,避免现病史搜索框不立即消失的情况
           if(preObj[0].nodeName !=="DIV"){
             this.moveEnd(preObj[0]);
           }

+ 1 - 1
src/components/CommonSymptom/index.jsx

@@ -44,7 +44,7 @@ class CommonSymptom extends Component{
   render(){  
     const {data} = this.props;
     return <div className={this.getClass()} contenteditable="false">
-      <ul>
+      <ul className={style["listBox"]}>
         {data&&data.map((it)=>{
           return <li onClick={(e)=>this.handleSelect(e,it)}>{it.name}</li>
         })}

+ 4 - 0
src/components/CommonSymptom/index.less

@@ -3,6 +3,10 @@
   .pop;
   left: 85px;
   padding: 0 0 10px;
+  .listBox{
+    max-height: 370px;
+    overflow-y: auto;
+  }
   li{
     width: 200px;
     line-height: 35px;

+ 1 - 1
src/components/CurrentIll/index.jsx

@@ -139,7 +139,7 @@ class CurrentIll extends Component{
       <ItemBox title='现病史' editable={editClear||data.length==0?true:false} handleFocus={this.handleFocus} onchange={forbidInput?(e)=>{this.onchange(e)}:''} handleClick={this.handleClick}>
         {data.length>0?this.getInlineTag():''}
       </ItemBox>
-      {searchFlag ? <SearchDrop data={searchData} show={!totalHide&&show} onSelect={this.handleSearchSelect} left={boxLeft} top={boxTop} />:""}
+      {searchFlag ? <SearchDrop data={searchData} show={!totalHide} onSelect={this.handleSearchSelect} left={boxLeft} top={boxTop} />:""}
     </div>
   }
 }

+ 3 - 3
src/components/Multiple/index.jsx

@@ -2,7 +2,7 @@ import react from "react";
 import style from "./index.less";
 import $ from 'jquery';
 import classNames from 'classnames';
-import {handleEnter,isIE,filterArr,deepClone} from '@utils/tools.js';
+import {handleEnter,isIE,filterArr,deepClone,filterDataArr} from '@utils/tools.js';
 import {Notify} from '@commonComp';
 import config from '@config/index.js';
 /**
@@ -133,7 +133,7 @@ class Multiple extends react.Component{
   onChange(e){
     const {mainSaveText,ikey,type,handleLabelChange} = this.props;
     const {labelVal,editable} = this.state;
-    let mainText = filterArr(mainSaveText);//主诉字数
+    let mainText = filterDataArr(mainSaveText);//主诉字数
     if(editable){//避免IE中点击标签也会触发
       let val = e.target.innerText;
       if(+type==1){// 主诉字数达到上限时不允许输入
@@ -211,7 +211,7 @@ class Multiple extends react.Component{
       <div className={this.getListClass()} style={{top:boxTop,left:boxLeft}} contentEditable="false">
         <ul>
           {data&&data.map((it)=>{
-          return <li onClick={(e)=>this.handleSelect(e,it)} className={this.getSeleStyle(it.id)}>{it.labelPrefix}{it.name}{it.labelSuffix}</li>
+          return <li onClick={(e)=>this.handleSelect(e,it)} className={this.getSeleStyle(it.id)} title={it.name.length>8?it.name:''}>{it.name&&it.name.length>8?it.name.slice(0,8)+'...':it.name}</li>
         })}
           <li onClick={this.handleClear} className={style['mClear']}>清空选项</li>
           <li onClick={this.handleComfirn} className={style['mConfirm']}>确定</li>

+ 2 - 3
src/components/NumberUnitDrop/index.jsx

@@ -3,7 +3,7 @@ import className from 'classnames';
 import {NumberUnitPan} from '@commonComp';
 import style from './index.less';
 import config from '@config/index.js';
-import {filterArr,handleEnter,isIE,getPageCoordinate} from '@utils/tools.js';
+import {filterArr,handleEnter,isIE,getPageCoordinate,filterDataArr} from '@utils/tools.js';
 import {Notify} from '@commonComp';
 import $ from 'jquery';
 /***
@@ -67,7 +67,6 @@ class NumberUnitDrop extends Component{
       }
       handleShow&&handleShow({ikey,id:patId||id});
     },300);
-    
     this.setState({
       timer,
       boxLeft:getPageCoordinate(e).boxLeft,
@@ -109,7 +108,7 @@ class NumberUnitDrop extends Component{
     // 主诉字数达到上限时不允许输入
     const {mainSaveText,ikey,type,handleSelect,suffix,prefix,boxMark} = this.props;
     const {labelVal,editable} = this.state;
-    let mainText = filterArr(mainSaveText);//主诉字数
+    let mainText = filterDataArr(mainSaveText);//主诉字数
     if(editable){//避免IE中点击标签也会触发
       let val = e.target.innerText;
       if(+boxMark==1){

+ 12 - 10
src/components/SpreadDrop/index.jsx

@@ -2,7 +2,7 @@ import React,{Component} from 'react';
 import classNames from 'classnames';
 import config from '@config/index.js';
 import style from './index.less';
-import {deepClone,filterArr,handleEnter,isIE,getPageCoordinate,windowEventHandler} from '@utils/tools.js';
+import {deepClone,filterArr,handleEnter,isIE,getPageCoordinate,windowEventHandler,filterDataArr} from '@utils/tools.js';
 import {Notify} from '@commonComp';
 import ReactDom from "react-dom";
 import {getIds} from '@common/js/func.js';
@@ -112,7 +112,7 @@ class SpreadDrop extends Component{
   onChange(e){
     const {mainSaveText,ikey,type,handleLabelChange} = this.props;
     const {labelVal,editable} = this.state;
-    let mainText = filterArr(mainSaveText);//主诉字数
+    let mainText = filterDataArr(mainSaveText);//主诉字数
     if(editable){//避免IE中点击标签也会触发
       let val = e.target.innerText;
       if(+type==1){// 主诉字数达到上限时不允许输入
@@ -310,7 +310,7 @@ class SpreadDrop extends Component{
     }
     return style['tag'];
   }
-  
+
   componentDidMount(){
     if(isIE()){
       $(this.$div.current).onIe8Input(function(e){
@@ -336,7 +336,7 @@ class SpreadDrop extends Component{
         onInput={this.onChange}
         onkeydown={handleEnter}
         >{value||placeholder}</div>
-          <ListItems data={data} left={boxLeft} 
+          <ListItems data={data} left={boxLeft}
             top={boxTop} show={show} handleSelect={this.handleSelect} handleConfirm={this.handleConfirm} handleClear={this.handleClear} {...this.state}></ListItems>
       </div>
   }
@@ -380,7 +380,7 @@ class ListItems extends Component{
       display:show?'block':'none'
     }
   }
-  render (){   
+  render (){
     const {handleClear,handleConfirm} = this.props;
     const domNode = document.getElementById('root');
     return ReactDom.createPortal(
@@ -394,6 +394,7 @@ class ListItems extends Component{
     ,domNode)
   }
 }
+
 class ListItem extends Component{
   constructor(props){
     super(props);
@@ -402,7 +403,6 @@ class ListItem extends Component{
     e.stopPropagation();
     // window.event? window.event.cancelBubble = true : e.stopPropagation();
     const {handleClick,isExclu,isRadio,data,exists,noneIds,withs,joint,listIndex} = this.props;
-
     const index=listIndex+''+i;
     //列单选处理
     if(isRadio){
@@ -444,14 +444,16 @@ class ListItem extends Component{
     }
   }
   render(){
-    const {datas,isSpecialPos} = this.props;
+    const {data,isSpecialPos} = this.props;
     const pos = isSpecialPos?style['independent']:'';
     return <ul className={classNames(style['row'],pos)} onBlur={(e)=>e.stopPropagation()}>
-      {datas&&datas.map((it,i)=>{
-        return <li onClick={(e)=>this.handleClick(e,it,i)}
-                   className={this.getClass(it.id)}>{it.labelPrefix}{it.name}{it.labelSuffix}</li>
+      {data&&data.map((it,i)=>{
+        /*return <li onClick={(e)=>this.handleClick(e,it,i)}
+                   className={this.getClass(it.id)}>{it.labelPrefix}{it.name}{it.labelSuffix}</li>*/
+          return <li onClick={(e)=>this.handleClick(e,it,i)} className={this.getClass(it.id)} title={it.name.length>8?it.name:''}>{it.name&&it.name.length>8?it.name.slice(0,8)+'...':it.name}</li>
       })}
     </ul>;
   }
+
 }
 export default SpreadDrop;

+ 7 - 1
src/containers/EditableSpan.js

@@ -2,7 +2,7 @@ import {connect} from 'react-redux';
 import {EditableSpan} from '@commonComp';
 import {SETCHECKTEXT,SETSEARCHDATA,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,DEL_CHECKBODY} from '@types/checkBody';
 import {SET_SEARCH,MAIN_FOCUS_INDEX,CLEAR_SEARCH,SETMAINTEXT,DEL_MAIN,REMOVE_MAIN_ID} from '@types/mainSuit';
-import {SETOTHERTEXT,SETOTHERSEARCHDATA,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,DEL_OTHERHIS} from '@types/otherHistory';
+import {SETOTHERTEXT,SETOTHERSEARCHDATA,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,DEL_OTHERHIS,REMOVE_OTHER_ID} from '@types/otherHistory';
 import {SET_CURRENT_SEARCH,CURRENT_CLEAR,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,DEL_CURRENT,REMOVE_CURR_ID} from '@types/currentIll';
 import {getSearch} from '@store/async-actions/fetchModules.js';
 import {billing} from '@store/async-actions/pushMessage';
@@ -244,9 +244,15 @@ function mapDispatchToProps(dispatch,state) {
         case 2:
           dispatch({type:REMOVE_CURR_ID,index:obj.i,text:obj.text});
           break;
+        case 3:
+          dispatch({type:REMOVE_OTHER_ID,index:obj.i});//移除多余空标签
+          break;
         default:
           break;
       }
+    dispatch({
+      type:ISREAD
+    })
     }
   }
 }

+ 2 - 2
src/containers/MainSuit.js

@@ -7,7 +7,7 @@ import {getCommSymptoms,getCommSymptomPush} from '@store/async-actions/mainSuit.
 import {SET_MAIN_SUIT} from '@store/types/fillInfo';
 import {getSearch} from '@store/async-actions/fetchModules';
 import {billing} from '@store/async-actions/pushMessage';
-import {filterArr,didPushParamChange} from '@utils/tools.js';
+import {filterArr,didPushParamChange,filterDataArr} from '@utils/tools.js';
 import config from '@config/index.js';
 import {Notify} from '@commonComp';
 
@@ -51,7 +51,7 @@ function mapDispatchToProps(dispatch) {
           })
         },
         handleTailClick:(obj,saveText)=>{//点击带尾巴的标签,如添加病程变化
-          let text = filterArr(saveText);
+          let text = filterDataArr(saveText);
           if(text.length >= config.limited){
             Notify.info(config.limitText);
             return

+ 2 - 2
src/containers/Multiple.js

@@ -7,14 +7,14 @@ import {MAINSUIT_MUL,CHANGE_LABELVAL} from '@types/mainSuit';
 import {OTHERHIS_MUL,CHANGEOTHERTEXTLABEL} from '@types/otherHistory';
 import {CHECKBODY_MUL,CHANGECHECKTEXTLABEL} from '@types/checkBody';
 import {getLabelIndex,fullfillText,getIds} from '@common/js/func.js';
-import {filterArr} from '@utils/tools.js';
+import {filterArr,filterDataArr} from '@utils/tools.js';
 import config from '@config/index.js';
 import {Notify} from '@commonComp';
 
 function handleMainSuit(dispatch,params){
   const {ikey,seleData,seleId,value,mainSaveText} = params;
   //字数限制
-  let mainText = filterArr(mainSaveText);
+  let mainText = filterDataArr(mainSaveText);
   let lengths = value?mainText.length - value.length + seleData.length:mainText.length + seleData.length;
   if(lengths > config.limited){
     Notify.info(config.limitText);

+ 2 - 2
src/containers/NumberDrop.js

@@ -9,7 +9,7 @@ import {getLabelIndex} from '@common/js/func.js';
 import {CURRENT_NUMBER,CURRENT_TEXT_LABEL,CURRENT_TEXT_LABEL_NUMBER} from '@store/types/currentIll.js';
 import {billing} from '@store/async-actions/pushMessage';
 import {Notify} from '@commonComp';
-import {filterArr,didPushParamChange} from '@utils/tools.js';
+import {filterArr,didPushParamChange,filterDataArr} from '@utils/tools.js';
 import config from '@config/index.js';
 
 function mapStateToProps(state){
@@ -51,7 +51,7 @@ function handleModuleDiff(dispatch,params){
   const type = params.ikey.substr(0,1);    //当前所在的项目
   switch (+type){
     case 1:
-      let text = filterArr(mainSaveText);
+      let text = filterDataArr(mainSaveText);
       if(text.length >= config.limited){
         Notify.info(config.limitText);
         return

+ 2 - 2
src/containers/NumberUnitDrop.js

@@ -8,7 +8,7 @@ import {NUMBER_SELECT,CHANGE_LABELVAL} from '@store/types/mainSuit.js';
 import {getLabelIndex} from '@common/js/func.js';
 import {CURRENT_NUMBER,CURRENT_TEXT_LABEL} from '@store/types/currentIll.js';
 import {Notify} from '@commonComp';
-import {filterArr,didPushParamChange} from '@utils/tools.js';
+import {filterArr,didPushParamChange,filterDataArr} from '@utils/tools.js';
 import {billing} from '@store/async-actions/pushMessage';
 import config from '@config/index.js';
 
@@ -51,7 +51,7 @@ function handleModuleDiff(dispatch,params){
   const type = params.ikey.substr(0,1);    //当前所在的项目
   switch (+type){
     case 1:
-      let text = filterArr(mainSaveText);
+      let text = filterDataArr(mainSaveText);
       if(text.length >= config.limited){
         Notify.info(config.limitText);
         return

+ 2 - 2
src/containers/RadioDrop.js

@@ -7,7 +7,7 @@ import {SETDROPSHOW,HIDE,RESET,HIDEDROP,CLICKCOUNT,ISREAD} from '@types/homePage
 import {RADIO_SELECT,CHANGE_LABELVAL} from '@store/types/mainSuit.js';
 import {CURRENT_RADIO,CURRENT_TEXT_LABEL} from '@store/types/currentIll.js';
 import {Notify} from '@commonComp';
-import {filterArr,didPushParamChange} from '@utils/tools.js';
+import {filterArr,didPushParamChange,filterDataArr} from '@utils/tools.js';
 import {billing} from '@store/async-actions/pushMessage';
 import {getLabelIndex,fullfillText} from '@common/js/func.js';
 import config from '@config/index.js';
@@ -68,7 +68,7 @@ function handleModuleDiff(dispatch,store,params){
   const type = params.ikey.substr(0,1);    //当前所在的项目
   switch (+type){
     case 1:
-      let text = filterArr(mainSaveText);
+      let text = filterDataArr(mainSaveText);
       if(text.length >= config.limited){
         Notify.info(config.limitText);
         return

+ 5 - 5
src/containers/SpreadDrop.js

@@ -12,7 +12,7 @@ import {CURRENT_CONFIRM,SETMAINCHECKBOX,CURRENT_TEXT_LABEL,CURRENT_GET_BIGDATAPU
 import {getLabelIndex,fullfillText,getIds} from '@common/js/func.js';
 import {billing} from '@store/async-actions/pushMessage';
 import {Notify} from '@commonComp';
-import {filterArr,didPushParamChange} from '@utils/tools.js';
+import {filterArr,didPushParamChange,filterDataArr} from '@utils/tools.js';
 import config from '@config/index.js';
 
 function mapStateToProps(state) {
@@ -44,7 +44,7 @@ function mainSuitModule(dispatch,store,params){
   let existsName = getNames(exists);
   let withsName = getNames(withs);
   let banName = ban.name;
-  let text = filterArr(mainSaveText);
+  let text = filterDataArr(mainSaveText);
   if(text.length >= config.limited){
     Notify.info(config.limitText);
     return
@@ -217,7 +217,7 @@ function handleModuleDiff(dispatch,store,params){
   const {type,mainSaveText} = params;
   switch (+type){
     case 1:
-      /*let text = filterArr(mainSaveText);
+      /*let text = filterDataArr(mainSaveText);
       if(text.length >= config.limited){
         Notify.info(config.limitText);
         return
@@ -244,7 +244,7 @@ function handleModuleDiff(dispatch,store,params){
 function mainSuitCheck(dispatch,store,params){
   const {nones,exists,withs,order,mainSaveText,value} = params;
   let existsName = getNames(exists,order);
-  let text = filterArr(mainSaveText);
+  let text = filterDataArr(mainSaveText);
   if(text.length >= config.limited){
     Notify.info(config.limitText);
     return
@@ -306,7 +306,7 @@ function handleCheckBox(dispatch,store,params){
   const {type,mainSaveText} = params;
   switch (+type){
     case 1:
-      /*let text = filterArr(mainSaveText);
+      /*let text = filterDataArr(mainSaveText);
       if(text.length >= config.limited){
         Notify.info(config.limitText);
         return

+ 12 - 0
src/store/actions/otherHistory.js

@@ -305,6 +305,18 @@ export function backspaceText(state,action){
   return res;
 }
 
+//删除后移除空标签
+export function removeId(state,action){
+  let res = Object.assign({},state);
+  const {index} = action;
+  const data = res.data;
+  if(!data[index].value && data[index-1].tagType==8){
+    data.splice(index,1);
+  } 
+  res.update = Math.random();
+  return res;
+}
+
 // 单列多选
 export function multipleComfirn(state,action){
   let res = Object.assign({},state);

+ 5 - 3
src/store/reducers/otherHistory.js

@@ -1,6 +1,6 @@
 import {SETDATA,CONFIRMSELECTED,SETRADIO,SETNUMBER,SETOTHERCHECKBOX,SETOTHERTEXT,SETOTHERSEARCHDATA,
-  SELECTOTHERSEARCHDATA,CLEAROTHERHISTORY,CHANGEOTHERTEXTLABEL,SETOTHERINPUT,SETTEXTMODEVALUE,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,OTHERADDLABELITEM,OTHEREDICLEAR,DEL_OTHERHIS,CHANGEOTHERTEXTLABEL_NUMBER,OTHERHIS_MUL} from '../types/otherHistory';
-import {confirm,setRadioValue,setNumberValue,setCheckBoxValue,setCheckText,setSearchData,insertLabelData,clearOtherHistory,changeTextLabel,setOtherInput,setTextModeValue,addLabelItem,otherEditClear,backspaceText,changeNumLabelVal,multipleComfirn} from '../actions/otherHistory';
+  SELECTOTHERSEARCHDATA,CLEAROTHERHISTORY,CHANGEOTHERTEXTLABEL,SETOTHERINPUT,SETTEXTMODEVALUE,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,OTHERADDLABELITEM,OTHEREDICLEAR,DEL_OTHERHIS,CHANGEOTHERTEXTLABEL_NUMBER,OTHERHIS_MUL,REMOVE_OTHER_ID} from '../types/otherHistory';
+import {confirm,setRadioValue,setNumberValue,setCheckBoxValue,setCheckText,setSearchData,insertLabelData,clearOtherHistory,changeTextLabel,setOtherInput,setTextModeValue,addLabelItem,otherEditClear,backspaceText,changeNumLabelVal,multipleComfirn,removeId} from '../actions/otherHistory';
 
 const initState = {data:[],saveText:[],selecteds:[],focusIndex:'',editClear:true};/*mockData.OtherHis.moduleDetailDTOList;[
     mockData.radioData,
@@ -53,8 +53,10 @@ export default function(state=initState,action){//console.log(state)
         return otherEditClear(state,action);
     case DEL_OTHERHIS:
         return backspaceText(state,action);
-      case OTHERHIS_MUL:
+    case OTHERHIS_MUL:
         return multipleComfirn(state,action);
+    case REMOVE_OTHER_ID:
+        return removeId(state,action);
     default:
       return res;
   }

+ 2 - 1
src/store/types/otherHistory.js

@@ -18,4 +18,5 @@ export const OTHERADDLABELITEM = 'other_add_label_item';    //带加号的标签
 export const OTHEREDICLEAR = 'OTHEREDICLEAR';    //文本框是否可以编辑
 export const DEL_OTHERHIS = 'DEL_OTHERHIS';    //backspace
 export const CHANGEOTHERTEXTLABEL_NUMBER = 'CHANGEOTHERTEXTLABEL_NUMBER';    //数字键盘
-export const OTHERHIS_MUL = 'OTHERHIS_MUL';    //单列多选
+export const OTHERHIS_MUL = 'OTHERHIS_MUL';    //单列多选
+export const REMOVE_OTHER_ID = 'REMOVE_OTHER_ID';