Sfoglia il codice sorgente

Merge branch 'dev/new1' into dev/zhangxc1

zhangxc 6 anni fa
parent
commit
70c7a971a0

+ 2 - 6
src/common/components/ItemBox/index.jsx

@@ -38,13 +38,9 @@ class ItemBox extends Component {
     }
   }
 
-  /*componentWillReceiveProps(next){
-    if(this.props.value && next.value!=this.props.value){
-      this.$div.current.innerText?(this.$div.current.innerText = next.value||''):(this.$div.current.innerHTML = next.value||'');
-    }
-  }*/
-
   componentDidMount(){
+    const {setRef} = this.props;
+    setRef&&setRef(this.$div);
     if(isIE()){
       $(this.$div.current).onIe8Input(function(e){
         this.handleInput(e)

+ 22 - 18
src/components/AddInspect/SlideSelect/index.jsx

@@ -36,7 +36,7 @@ class SlideSelect extends Component {
   render() {
     const {handleConfirm,changeActivePart,handleDelClick,getItemList,date,item,idx,handleFillShow,showDetails,handleLabelSub,showFill,changeShowFill,handlePush,dateTime,currentIdx,currentData,fillActive,handleShowDate,handleChangeDate} = this.props;
     const {show} = this.state;
-    let numPlus = 0;
+    let numPlus = 0,numPlus1 = 0;
     return (
       <li key={item.questionId} className={styles.slideLi}> 
         {
@@ -49,6 +49,14 @@ class SlideSelect extends Component {
                 <i data-flg="current" onClick={(e) => { handleLabelSub(e,item.questionId,idx); handleFillShow(e,idx) }}>{item.name}</i>
             </p>
         }
+        
+        {
+          item.details && item.details.map((val)=>{
+            if(val.value && val.value != ''){
+                numPlus = ++numPlus
+              }
+            })
+          }
         {
             item.show ? 
                 <table className={styles.table}>
@@ -65,30 +73,26 @@ class SlideSelect extends Component {
                                 </tr>
                             }
                         })):(item.details.map((val,num)=>{
-                          if(val.value && val.value != '' && num < 4 ){
-                              return <tr>
-                                  <td style={{width:'30%'}}>{val.name}</td>
-                                  {showDetails(val)}
-                                  <td style={{width:'25%'}}>
-                                      {normalVal(val.minValue,val.maxValue)}
-                                  </td>
-                                  <td style={{width:'25%'}}>{'化验时间:'+item.time}</td>
-                              </tr>
+                          if(val.value && val.value != '' ){
+                              ++numPlus1;
+                              if(numPlus1 < 5){
+                                return <tr>
+                                    <td style={{width:'30%'}}>{val.name}</td>
+                                    {showDetails(val)}
+                                    <td style={{width:'25%'}}>
+                                        {normalVal(val.minValue,val.maxValue)}
+                                    </td>
+                                    <td style={{width:'25%'}}>{'化验时间:'+item.time}</td>
+                                </tr>
+                              }
                           }
                       }))
                     }
                 </table>:null
         }
         {
-          item.details && item.details.length > 5 ?  
+          numPlus > 4 ?  
           <div className={styles.slides} onClick={this.handleSlide}>
-              {
-                item.details.map((val)=>{
-                  if(val.value && val.value != ''){
-                    numPlus = ++numPlus
-                  }
-                })
-              }
               {
                 show ? <span>收起</span> :<span>剩余<span className={styles.num}>{numPlus-4}</span>项</span>
               }

+ 9 - 10
src/components/MainSuit/index.jsx

@@ -233,32 +233,29 @@ class MainSuit extends Component{
   handleBlur(e){//隐藏常见症状下拉、存自由输入的值
     const {freeText,saveText,datas,clearSearch,getSymptomFeature,currentData} = this.props;
     const that = this;
-    const ev = e || window.event;
     let data = this.state.inpText;
     if(!isIE()){
       if(currentData&&currentData.length==0){//现病史没有模板的时候才去获取
-        getSymptomFeature && getSymptomFeature(ev.target.innerText);
+        getSymptomFeature && getSymptomFeature(e.target.innerText);
       } 
-      ev.target.innerText?(ev.target.innerText=""):(ev.target.innerHTML="")
+      e.target.innerText?(e.target.innerText=""):(e.target.innerHTML="")
       freeText && freeText(data.trim());
     }else{
       if(datas.length==0){
+        const ev = e || window.event;
         const data = ev.target.innerText;
         // freeText && freeText(data.trim());
         freeText && freeText(data);
       }
     }
     // 延时关闭常见症状下拉、清空搜索结果,不延时会影响选中
-      // clearTimeout(this.state.clearTimer);
       const clearTimer = setTimeout(function(){
         clearSearch && clearSearch();
+        clearTimeout(clearTimer);
         // that.setState({
         //   symptom:false
         // })
-      },config.delayTime-200);
-      // this.setState({
-      //   clearTimer
-      // });  
+      },config.delayTime-200); 
   }
 
 
@@ -267,11 +264,13 @@ class MainSuit extends Component{
     const {showModule,show,symptom,search} = this.state;
     const symptomFlag = CommonSymptoms.length>0 ? true : false;
     const searchFlag = searchData.length>0 ? true : false;
+    const boxTop1 = datas.length>0?boxTop:45;
+    const boxLeft1 = datas.length>0?boxLeft:85;
     if(+type===1){      //文本模式
       return <Textarea title='主诉' boxMark='1' isRead={isRead} value={saveText[0]} handlePush={fetchPushInfos} handleInput={handleInput} />;
     }
     return  <div className={`${'mainsuit-box'} ${style['main-suit']}`} id="mainsuitBox">
-      <ItemBox 
+      <ItemBox
       fuzhen={fuzhen} 
       title='主诉' 
       editable={editClear||datas.length==0?true:false} 
@@ -285,7 +284,7 @@ class MainSuit extends Component{
         {datas.length>0?<div style={{display:'inline-block'}}>{this.getInlineTag()}</div>:(saveText[0]?saveText[0]:'')}
       </ItemBox>
       {/*没有推送结果就不显示*/}
-      {symptomFlag && !searchFlag ? <CommonSymptom data={CommonSymptoms} show={!totalHide&&symptom} onSelect={this.handleSelect} /> : ( searchFlag ? <SearchDrop data={searchData} show={!commSymHide} onSelect={this.handleSearchSelect} left={boxLeft} top={boxTop} />:"")}
+      {symptomFlag && !searchFlag ? <CommonSymptom data={CommonSymptoms} show={!totalHide&&symptom} onSelect={this.handleSelect} /> : ( searchFlag ? <SearchDrop data={searchData} show={!commSymHide} onSelect={this.handleSearchSelect} left={boxLeft1} top={boxTop1} mainEmpty={datas.length==0?true:false}/>:"")}
     </div>
   }
 }

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

@@ -194,7 +194,7 @@ class NumberDrop extends Component{
       <span onFocus={this.handleNumFocus}
             onClick={allClick?null:this.handleNumClick}
             contentEditable={true}
-            style={{minWidth:'10px',display:'inline-block'}}
+            style={{minWidth:'10px',display:'inline-block',textAlign:'center'}}
             ref = {this.$span}
             onBlur={this.numInpBlur}
             onInput={this.handleSpanInp}

+ 4 - 4
src/components/NumberUnitDrop/index.jsx

@@ -41,7 +41,7 @@ class NumberUnitDrop extends Component{
     this.changeToEdit = this.changeToEdit.bind(this);
   }
   select(obj){         //选中键盘上数字事件
-    const {handleSelect,ikey,suffix,prefix,mainSaveText} = this.props;
+    const {handleSelect,ikey,suffix,prefix,mainSaveText,formulaCode} = this.props;
     this.setState({
       hasSelect:true
     });
@@ -50,7 +50,7 @@ class NumberUnitDrop extends Component{
         value:''
       });
     }
-    handleSelect&&handleSelect({ikey,text:obj.text,suffix,prefix,mainSaveText,mark:obj.mark});
+    handleSelect&&handleSelect({ikey,text:obj.text,suffix,prefix,mainSaveText,mark:obj.mark,formulaCode});
   }
   
   handleNumClick(e){ 
@@ -85,13 +85,13 @@ class NumberUnitDrop extends Component{
   //数字框失焦,保存值到store中
   numInpBlur(e){
     e.stopPropagation();
-    const {handleSelect,ikey,suffix,prefix,mainSaveText,handleLabelChange,boxMark} = this.props;
+    const {handleSelect,ikey,suffix,prefix,mainSaveText,handleLabelChange,boxMark,formulaCode} = this.props;
     const {editable} = this.state;
     if(editable){
       const text = e.target.innerText || e.target.innerHTML;
       // this.$span.current.innerText='';      //修改生成文字变成输入的2倍bug 
       // handleSelect&&handleSelect({ikey,text,suffix,prefix,mainSaveText});
-      handleLabelChange&&handleLabelChange({ikey,changeVal:text,suffix,prefix,mainSaveText,type:boxMark});
+      handleLabelChange&&handleLabelChange({ikey,changeVal:text,suffix,prefix,mainSaveText,type:boxMark,formulaCode});
       
     }
     this.setState({

+ 2 - 2
src/components/PreviewBody/index.jsx

@@ -283,7 +283,7 @@ class PreviewBody extends Component {
             <td style={{ fontSize: '14px', padding: '1px 0px 8px 0px', lineHeight: '20px' }}>
               {dataJson.advice.commontreatment && dataJson.advice.commontreatment.length > 0 && <p style={{ fontSize: '14px', marginBottom: '8px', marginTop: '8px' }}><span>一般治疗</span></p>}
               {
-                dataJson.advice.commontreatment && <div style={{ padding: '0px 0px 5px 0px' }}>{dataJson.advice.commontreatment}</div>
+                dataJson.advice.commontreatment && <div style={{ padding: '0px 0px 5px 0px',wordBreak:"break-all" }}>{dataJson.advice.commontreatment}</div>
               }
               {dataJson.advice.scheme && dataJson.advice.scheme.length > 0 && <p style={{ fontSize: '14px', marginBottom: '8px', marginTop: '8px' }}><span>治疗方案</span></p>}
               {
@@ -295,7 +295,7 @@ class PreviewBody extends Component {
                   })
               }
               {
-                dataJson.advice.adviceInput && <div style={{ padding: '0px 0px 5px 0px' }}>{dataJson.advice.adviceInput}</div>
+                dataJson.advice.adviceInput && <div style={{ padding: '0px 0px 5px 0px',wordBreak:"break-all" }}>{dataJson.advice.adviceInput}</div>
               }
             </td>
           </tr>

+ 2 - 2
src/components/RadioInpDrop/index.jsx

@@ -182,7 +182,7 @@ class RadioInpDrop extends Component{
     return list;
   }
   render(){
-    const {data,show} = this.props;
+    const {data,show,vals,placeholder} = this.props;
     const {boxLeft,boxTop} = this.state;
     return <div className={style['container']} ref = {this.$cont}>
       <div className={this.getClass()}
@@ -191,7 +191,7 @@ class RadioInpDrop extends Component{
            onDoubleClick={this.handledbClick}
            onClick={(e)=>this.handleShow(e,true)}
            onkeydown={handleEnter}>
-        {this.parseInputDom()}
+        {vals?this.parseInputDom():<span>{placeholder}</span>}
       </div>
       <DropList onSelect={this.handleSelect} data={data} left={boxLeft} top={boxTop} show={show}/>
     </div>

+ 28 - 11
src/components/SearchDrop/index.jsx

@@ -21,6 +21,9 @@ class SearchDrop extends Component{
   constructor(props){
     super(props);
     this.handleSelect = this.handleSelect.bind(this);
+    this.state={
+      data:props.data||[]
+    }
   }
   getClass(){
     let name = style['text-list'];
@@ -54,18 +57,32 @@ class SearchDrop extends Component{
     // onShow&&onShow(e,false);
   }
   render(){
+    const {mainEmpty} = this.props;
     let litext = '';
-    const domNode = document.getElementById('root');
-    return ReactDom.createPortal(
-      <div className={this.getClass()} contenteditable="false" id="searchBox" style={this.getStyle()}>
-        <ul>
-          {this.props.data&&this.props.data.map((it)=>{
-            litext = it.showType==1?it.name:it.name+'('+it.retrievalName+')';
-            return <li onClick={(e)=>this.handleSelect(e,it)} title={litext}>{litext}</li>
-          })}
-        </ul>
-      </div>
-    ,domNode)
+    if(mainEmpty){
+      return <div className={this.getClass()} contenteditable="false" id="searchBox" style={this.getStyle()}>
+          <ul>
+            {this.props.data&&this.props.data.map((it)=>{
+              litext = it.showType==1?it.name:it.name+'('+it.retrievalName+')';
+              return <li onClick={(e)=>this.handleSelect(e,it)} title={litext}>{litext}</li>
+            })}
+          </ul>
+        </div>
+    }else{
+      
+      const domNode = document.getElementById('root');
+      return ReactDom.createPortal(
+        <div className={this.getClass()} contenteditable="false" id="searchBox" style={this.getStyle()}>
+          <ul>
+            {this.props.data&&this.props.data.map((it)=>{
+              litext = it.showType==1?it.name:it.name+'('+it.retrievalName+')';
+              return <li onClick={(e)=>this.handleSelect(e,it)} title={litext}>{litext}</li>
+            })}
+          </ul>
+        </div>
+      ,domNode)
+    }
+    
   }
 }
 

+ 1 - 0
src/containers/MainSuit.js

@@ -30,6 +30,7 @@ function mapStateToProps(state) {//console.log(11,state);
     span:state.mainSuit.span,
     addModuleName:state.mainSuit.addModuleName,//添加病情变化模板名称
     editClear:state.mainSuit.editClear,
+    clearAction:state.mainSuit.clearAction,//清除
     mainIds:state.mainSuit.mainIds,//选中症状的id,搜索去重用
     isRead:state.homePage.isRead,
     commSymHide:state.homePage.commSymHide,

+ 1 - 1
src/store/actions/checkBody.js

@@ -232,7 +232,7 @@ export function insertLabelData(state,action){
   let res = Object.assign({},state);
   const text = Object.assign({},JSON.parse(config.textLabel));
   const searchStr = res.searchStr;
-  const {index,data,isReplace,span,searchInEnd}=action;
+  const {index,data,isReplace,span,searchInEnd}=action;console.log("查体",data);
   const showText = res.saveText[index];
   const spreadLabels = data.tagType==4?fullfillText(data.questionMapping).newArr:[data];
   let reg = searchInEnd?new RegExp(searchStr+"$"):new RegExp("^"+searchStr);

+ 5 - 7
src/store/actions/mainSuit.js

@@ -98,7 +98,7 @@ export const insertMain = (state,action) => {
   if(items.length>1){
     for(let i=1; i<items.length; i++){
       items[i].name = '、'+items[i].name;
-      items[i].value = items[i].value?'、'+items[i].value:items[i].name;
+      items[i].value = '、'+items[i].value;
     } 
   }
   let obj = [];
@@ -111,14 +111,13 @@ export const insertMain = (state,action) => {
         inserIndx = i;
       }
     })
-  // data.splice(inserIndx-1,1,...obj);
-  // 防止没有flag的情况下报错,找不到flag就插到最后
-  inserIndx?data.splice(inserIndx-1,1,...obj):data.splice(-1,0,...obj);
+  data.splice(inserIndx-1,1,...obj);
   // data[inserIndx-1] = text;//替换空标签
   res.data = data;
   res.saveText = [];//将手动输入的值清掉
   // res.saveText[inserIndx] = text.name;
   res.saveText = fullfillText(res.data).saveText;
+  // res.mainIds.push(id);
   res.mainIds = res.mainIds.concat(id);
   res.editClear = false;//主诉框编辑状态
   res.update=Math.random();
@@ -310,7 +309,7 @@ export const insertSearch = (state,action)=>{
       }
     })
     // flag=1前是文本标签就替换,否则插入
-    const iftext = inserIndx?moduleData[inserIndx-1].tagType:null;
+    const iftext = moduleData[inserIndx-1].tagType;
     if(iftext==config.tagType){
        moduleData.splice(inserIndx-1,1,{id:id,name:searchData,value:searchData,tagType:config.tagType,exist:1});
      }else{
@@ -586,8 +585,7 @@ export const saveFreeVal = (state,action)=>{
   }else{
     res.saveText = [];
   }*/
-  // res.update = Math.random();
-  // console.log(666,action,res);
+  res.update = Math.random();
   return res;
 }
 

+ 1 - 1
src/utils/tools.js

@@ -239,7 +239,7 @@ const getAllDataStringList =(baseList) =>{           //获取所有模块文本
 const pushAllDataList =(whichSign,action,reData,type) =>{           //回读清空所有的数据
     if(action == 'clear'){     //清空
       const block = Object.assign(JSON.parse(config.textLabel),{full:true});//空白时保留一个自由文本标签
-      store.dispatch({type: CLEAR_MAIN_SUIT,data:[],saveText:[],selecteds:[],editClear:true,mainIds:[]});
+      store.dispatch({type: CLEAR_MAIN_SUIT,data:[],saveText:[],selecteds:[],editClear:true,mainIds:[],clearAction:true});
         store.dispatch({type: CLEAR_CURRENT_ILL,data:[],saveText:[],selecteds:[],editClear:true,symptomIds:[]});
         store.dispatch({type: CLEAROTHERHISTORY,data:[block],isEmpty:true,saveText:[],selecteds:[],editClear:true,yjs_1:'',yjs_2:'',yjs_3:'',yjs_4:''});
         store.dispatch({type: CLEARCHECKBODY,data:[block],isEmpty:true,saveText:[],selecteds:[]});