Bläddra i källkod

查体数字组件双击编辑前后缀存值,血压类型标签双击编辑时不显示下拉框

zhouna 6 år sedan
förälder
incheckning
00f2e00fb0

+ 6 - 3
src/components/MultSpread/index.jsx

@@ -39,9 +39,12 @@ class MultSpread extends Component{
   }
   getLabels(){
     const {data,ikey,showArr,copyId} = this.props;
+    const {editable}= this.state;
+    let show = false;
     let inx = '';
     const list = data.map((it,i)=>{
       inx=ikey+''+i;
+      show = editable?false:showArr&&showArr[inx];
       switch (+it.controlType){
         case 0:
         case 1:
@@ -50,7 +53,7 @@ class MultSpread extends Component{
                             prefix={it.labelPrefix}
                             suffix={it.labelSuffix}
                             placeholder={it.name}
-                            show={showArr&&showArr[inx]}
+                            show={show}
                             value = {it.value}
                             ikey={inx}
                             id={it.id}
@@ -62,7 +65,7 @@ class MultSpread extends Component{
                                placeholder={it.name}
                                boxMark={ikey.substr(0,1)}
                                id={it.id}
-                               show={showArr&&showArr[inx]}
+                               show={show}
                                ikey={inx}
                                value={it.value}
                                hideTag={true}></NumberUnitDrop>;
@@ -78,7 +81,7 @@ class MultSpread extends Component{
           return <NumberDrop prefix={it.labelPrefix}
                              suffix={it.labelSuffix}
                              placeholder={it.name}
-                             show={showArr&&showArr[inx]}
+                             show={show}
                              ikey={inx}
                              id={it.id}
                              patId = {copyId}

+ 15 - 8
src/components/NumberDrop/index.jsx

@@ -23,6 +23,8 @@ class NumberDrop extends Component{
       isClosed:false
     };
     this.$span = React.createRef();
+    this.$pre = React.createRef();
+    this.$suf = React.createRef();
     this.select = this.select.bind(this);
     this.numInpBlur = this.numInpBlur.bind(this);
     this.handleSpanInp = this.handleSpanInp.bind(this);
@@ -81,8 +83,9 @@ class NumberDrop extends Component{
       numEditable:true,
       hasSelect:false
     });
+    const val = e.target.innerText.replace(/^\s*/,'');
     const {handleSelect,ikey,suffix,prefix,mainSaveText,placeholder} = this.props;
-    const text = e.target.innerText===placeholder?'':e.target.innerText;
+    const text = val===placeholder?'':val;
     e.target.innerText = '';      //避免出现重复输入值
     handleSelect&&handleSelect({ikey,text,suffix,prefix,mainSaveText});
   }
@@ -110,14 +113,17 @@ class NumberDrop extends Component{
     }
   }
   handleBlur(e){     //双击编辑blur
-    const {handleLabelChange,ikey,boxMark} = this.props;
+    const {handleLabelChange,ikey,boxMark,value} = this.props;
     //if(!this.state.editable) return;
     this.setState({
       editable: false
     });
     let totalVal = e.target.innerText;
-    let changeVal = this.props.value;
-    handleLabelChange && handleLabelChange({ikey,changeVal,type:boxMark,totalVal});
+    let changeVal = this.$span.current.innerText.replace(/^\s*/,'');//数字框值-修改后;去掉前空格避免多空格叠加
+    let prefix = this.$pre.current.innerText.replace(/^\s*/,''); //前缀值-修改后
+    let suffix = this.$suf.current.innerText.replace(/^\s*/,''); //后缀值-修改后
+    console.log('数字框:'+changeVal,";全部:"+totalVal,";前缀:"+prefix+";后缀:"+suffix);
+    handleLabelChange && handleLabelChange({ikey,changeVal,type:boxMark,totalVal,prefix,suffix});
   }
   getSpanClass(){       //将被替换的文字选中状态显示
     const {hasSelect} = this.state;
@@ -129,9 +135,10 @@ class NumberDrop extends Component{
     const {numEditable,editable,hasSelect} = this.state;
     return <div className={this.getClasses()}
                 onDoubleClick={this.changeToEdit}
-                onBlur={this.handleBlur} contentEditable={editable}
+                contentEditable={editable}
+                onBlur={this.handleBlur}
                 onkeydown={handleEnter}>
-      <span>&nbsp;{prefix}</span>
+      <span ref = {this.$pre}>&nbsp;{prefix}</span>
       <span onFocus={this.handleNumFocus}
             onClick={this.handleNumClick}
             contentEditable={numEditable}
@@ -140,8 +147,8 @@ class NumberDrop extends Component{
             onBlur={this.numInpBlur}
             onInput={this.handleSpanInp}
             className={this.getSpanClass()}
-            onkeydown={handleEnter}>{value||placeholder}</span>
-      <span>&nbsp;{suffix}</span>
+            onkeydown={handleEnter}>&nbsp;{value||placeholder}</span>
+      <span ref = {this.$suf}>&nbsp;{suffix}</span>
       <NumberPan handleSelect={(text)=>this.select(text)}
                  onClose={handleHide}
                  show={show} toClear={!hasSelect}/>

+ 2 - 2
src/containers/NumberDrop.js

@@ -109,11 +109,11 @@ function otherHisLabelEdit(dispatch,params){
 function checkBodyLabelEdit(dispatch,params){
   const index = params.ikey;
   let ikey = getLabelIndex(index);
-  const {changeVal,totalVal} = params;
+  //const {changeVal,totalVal} = params;
   dispatch({
     // type:CHANGECHECKTEXTLABEL,
     type:CHANGECHECKTEXTLABEL_NUMBER,
-    data:{changeVal:changeVal,ikey:ikey,totalVal}
+    data:Object.assign({},params,{ikey})
   })
 }
 function mapDispatchToProps(dispatch,store){

+ 14 - 10
src/store/actions/checkBody.js

@@ -38,7 +38,7 @@ export function setNumberValue(state,action){
 }
 
 //查体单选下拉选中
-export function setRadioValue(state,action){console.log(221)
+export function setRadioValue(state,action){
   let res = Object.assign({},state);
   const {ikey,id,text} = action;
   let labelInx = getLabelIndex(ikey);
@@ -177,23 +177,24 @@ export function insertLabelData(state,action){
 
 export const changeLabelVal = (state,action)=>{//双击标签输入改变值
   const res = Object.assign({},state);
-  const index = action.data.ikey;
-  const newVal = action.data.changeVal;     //下拉修改的内容
-  const totalVal = action.data.totalVal;    //包含前后缀修改的内容
+  const {changeVal,totalVal,ikey,prefix,suffix} = action.data;
+  const index = ikey;
+  const newVal = changeVal;     //下拉修改的内容
   let labText = totalVal?totalVal:newVal;
   let item = res.data[index];
   // if(newVal && newVal.trim()){
   if(labText && labText.trim()){
     if(item){
       item.value = newVal;
+      item.labelPrefix = prefix;
+      item.labelSuffix = suffix;
       // res.saveText[index] = totalVal;
       res.saveText[index] = labText;
     }
   }else{//删除完标签内容则删除该标签
     res.data.splice(index,1);
     res.saveText = fullfillText(res.data).saveText;
-  } 
-  
+  }
   res.update = Math.random();
   return res;
 }
@@ -201,14 +202,17 @@ export const changeLabelVal = (state,action)=>{//双击标签输入改变值
 // 数字键盘较特殊,有直接输入
 export const changeNumLabelVal = (state,action)=>{
   const res = Object.assign({},state);
-  const index = action.data.ikey;
-  const newVal = action.data.changeVal;
+  const {changeVal,totalVal,ikey,prefix,suffix} = action.data;
+  const index = ikey;
+  const newVal = changeVal;
   let item = res.data[index];
-  if(newVal.trim()){
+  if(totalVal.trim()){
     if(item){
       item.value = newVal;
+      item.labelPrefix = prefix;
+      item.labelSuffix = suffix;
     }
-    res.saveText[index] = newVal;
+    res.saveText[index] = totalVal;
   }else{//删除完标签内容则删除该标签
     res.data.splice(index,1);
     res.saveText = fullfillText(res.data).saveText;