浏览代码

Merge remote-tracking branch 'origin/groupType' into testedMerge

# Conflicts:
#	src/components/RadioInpDrop/index.jsx
#	src/utils/tools.js
zhouna 5 年之前
父节点
当前提交
7399d90ac5

+ 73 - 28
src/common/components/NumberUnitPan/index.jsx

@@ -15,16 +15,17 @@ class NumberUnitPan extends Component{
       value:''
     }
     this.handleSelect = this.handleSelect.bind(this);
+    this.getUnitTable = this.getUnitTable.bind(this);
   }
   handleSelect(e){
     e.stopPropagation();
     const {handleSelect,toClear} = this.props;
     const text = e.target.innerText || e.target.innerHTML;
     const preValue = this.state.value;
-    if(+text==0 && !preValue){//第一位不能是0
-      Notify.info("请输入正确时间");
-      return false;
-    }
+    // if(+text==0 && !preValue){//第一位不能是0
+    //   Notify.info("请输入正确时间");
+    //   return false;
+    // }
     const value = toClear?'':this.state.value;     //键盘输入替换已有的值
     this.setState({
       value: value+text
@@ -66,48 +67,40 @@ class NumberUnitPan extends Component{
       display:show?'table':'none'
     }
   }
-  componentWillReceiveProps(nextProps){
-    //重新选择的值替换 不追加
-     if(!nextProps.show){
-      this.setState({
-        value:''
-      });
-     }
-  }
-  render(){
-    const domNode = document.getElementById('root');
-    return <div className={style['panBox']} onBlur={(e)=>e.stopPropagation()} style={this.getStyle()}>
-        <table className={style['pan']} >
+  getUnitTable(){
+    const {unitType} = this.props;
+    if(unitType == 8){
+      return <table className={style['pan']} >
         <tr>
           <td><span onClick={this.handleSelect}>1</span></td>
           <td><span onClick={this.handleSelect}>2</span></td>
           <td><span onClick={this.handleSelect}>3</span></td>
-          <td><span onClick={this.handleSelect}>分钟</span></td>
-          <td><span onClick={this.handleSelect}></span></td>
-          <td><span onClick={this.handleSelect}>余</span></td>
+          <td><span onClick={this.handleSelect}>ml</span></td>
+          <td><span onClick={this.handleSelect}>qd</span></td>
+          <td><span onClick={this.handleClose.bind(this)} className={style.borderNone}>.</span></td>
         </tr>
         <tr>
           <td><span onClick={this.handleSelect}>4</span></td>
           <td><span onClick={this.handleSelect}>5</span></td>
           <td><span onClick={this.handleSelect}>6</span></td>
-          <td><span onClick={this.handleSelect}>小时</span></td>
-          <td><span onClick={this.handleSelect}></span></td>
-          <td><span onClick={this.handleSelect}>次</span></td> 
+          <td><span onClick={this.handleSelect}>mg</span></td>
+          <td><span onClick={this.handleSelect}>bid</span></td>
+          <td><span onClick={this.handleClose.bind(this)} className={style.borderNone}>.</span></td>
         </tr>
         <tr>
           <td><span onClick={this.handleSelect}>7</span></td>
           <td><span onClick={this.handleSelect}>8</span></td>
           <td><span onClick={this.handleSelect}>9</span></td>
-          <td><span onClick={this.handleSelect}></span></td>
-          <td><span onClick={this.handleSelect}></span></td>
-          <td><span onClick={this.handleSelect}>岁</span></td> 
+          <td><span onClick={this.handleSelect}>g</span></td>
+          <td><span onClick={this.handleSelect}>tid</span></td>
+          <td><span onClick={this.handleClose.bind(this)} className={style.borderNone}>.</span></td>
         </tr>
         <tr>
           <td><span onClick={this.handleSelect}>.</span></td>
           <td><span onClick={this.handleSelect}>0</span></td>
-          <td><span onClick={this.handleSelect}></span></td>
-          <td><span onClick={this.handleSelect}>/</span></td>
-          <td><span onClick={this.handleSelect}></span></td>
+          <td><span onClick={this.handleSelect}></span></td>
+          <td><span onClick={this.handleSelect}></span></td>
+          <td><span onClick={this.handleSelect}>qid</span></td>
           <td className={style['imgN']}><img src={backspace} onClick={this.handleBack.bind(this)} /></td>
         </tr>
         <tr>
@@ -115,6 +108,58 @@ class NumberUnitPan extends Component{
           <td colspan="3"><span onClick={this.handleClose.bind(this)} className={style['comf']}>确定</span></td>
         </tr>
       </table>
+    }
+    return <table className={style['pan']} >
+      <tr>
+        <td><span onClick={this.handleSelect}>1</span></td>
+        <td><span onClick={this.handleSelect}>2</span></td>
+        <td><span onClick={this.handleSelect}>3</span></td>
+        <td><span onClick={this.handleSelect}>分钟</span></td>
+        <td><span onClick={this.handleSelect}>周</span></td>
+        <td><span onClick={this.handleSelect}>余</span></td>
+      </tr>
+      <tr>
+        <td><span onClick={this.handleSelect}>4</span></td>
+        <td><span onClick={this.handleSelect}>5</span></td>
+        <td><span onClick={this.handleSelect}>6</span></td>
+        <td><span onClick={this.handleSelect}>小时</span></td>
+        <td><span onClick={this.handleSelect}>年</span></td>
+        <td><span onClick={this.handleSelect}>次</span></td>
+      </tr>
+      <tr>
+        <td><span onClick={this.handleSelect}>7</span></td>
+        <td><span onClick={this.handleSelect}>8</span></td>
+        <td><span onClick={this.handleSelect}>9</span></td>
+        <td><span onClick={this.handleSelect}>天</span></td>
+        <td><span onClick={this.handleSelect}>月</span></td>
+        <td><span onClick={this.handleSelect}>岁</span></td> 
+      </tr>
+      <tr>
+        <td><span onClick={this.handleSelect}>.</span></td>
+        <td><span onClick={this.handleSelect}>0</span></td>
+        <td><span onClick={this.handleSelect}>~</span></td>
+        <td><span onClick={this.handleSelect}>/</span></td>
+        <td><span onClick={this.handleSelect}>秒</span></td>
+        <td className={style['imgN']}><img src={backspace} onClick={this.handleBack.bind(this)} /></td>
+      </tr>
+      <tr>
+        <td colspan="3"><span onClick={this.handleClear.bind(this)} className={style['clearN']}>清空</span></td>
+        <td colspan="3"><span onClick={this.handleClose.bind(this)} className={style['comf']}>确定</span></td>
+      </tr>
+    </table>
+  }
+  componentWillReceiveProps(nextProps){
+    //重新选择的值替换 不追加
+     if(!nextProps.show){
+      this.setState({
+        value:''
+      });
+     }
+  }
+  render(){
+    const domNode = document.getElementById('root');
+    return <div className={style['panBox']} onBlur={(e)=>e.stopPropagation()} style={this.getStyle()}>
+        {this.getUnitTable()}
       </div>
   }
 }

+ 17 - 1
src/common/components/NumberUnitPan/index.less

@@ -5,9 +5,16 @@
 .pan{
   width: 280px;
   font-weight: normal;
+  tr {
+    overflow: hidden;
+    height:44px;
+    padding: 0;
+  }
   td{
-    width: 68px;
+    width: 49px;
     height:44px;
+    padding: 0;
+    overflow: hidden;
   }
   span{
     border:1px #fff solid;
@@ -17,7 +24,10 @@
     width: 100%;
     height: 100%;
     text-align: center;
+    height: 44px;
     line-height: 44px;
+    padding: 0;
+    margin: 0;
     color: #333;
     cursor: pointer;
   }
@@ -48,4 +58,10 @@
   .clearN:hover{
     border-color: #fff;
   }
+  .borderNone {
+    opacity: 0;
+  }
+  .borderNone:hover {
+    border: 1px solid transparent;
+  }
 }

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

@@ -96,7 +96,7 @@ class NumberUnitDrop extends Component{
   }
 
   render(){
-    const {placeholder,prefix,suffix,show,value,handleHide,select_start,i,boxMark} = this.props;
+    const {placeholder,prefix,suffix,show,value,handleHide,select_start,i,boxMark,unitType} = this.props;
     const {editable,hasSelect} = this.state;
     return <div className={this.getClasses()}
                 ref={this.$cont}
@@ -111,7 +111,7 @@ class NumberUnitDrop extends Component{
       <span ref = {this.$suf} className="prefixUnset">{suffix?' '+suffix:suffix}</span>
       <NumberUnitPan handleSelect={(obj)=>this.select(obj)}
                  onClose={handleHide}
-                 show={show} toClear={!hasSelect} value={value}/>
+                 show={show} toClear={!hasSelect} unitType={unitType} value={value}/>
     </div>
   }
 }

+ 6 - 7
src/components/RadioInpDrop/index.jsx

@@ -191,18 +191,17 @@ class InputComp extends Component{
     }
     this.over=false;
   }
-  componentDidMount(){
-    const {value} = this.props;
-    const inp = this.$inp.current;
-    inp.innerHTML = value
-  }
+  componentDidMount(){
+    const {value} = this.props;
+    const inp = this.$inp.current;
+    inp.innerHTML = value
+  }
   // componentWillReceiveProps(next){
   //   //超过限制时,再点开下拉被删除的输入文字又出现bug修改
   //   const inp = this.$inp.current;
   //   const value = next.value;
-  //   inp.innerHTML = '';
   //   setTimeout(function(){
-  //     inp.innerHTML = value;
+  //     inp.innerHTML = value
   //   });
   // }
   render(){

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

@@ -224,7 +224,7 @@ class SpreadDrop extends Component{
     const params = Object.assign({},this.state,{ikey,type,tagType,order,mainSaveText,copyType,value,mainData});
     delete params.tmpDom;       //避免上面deepClone selecteds报错
     handleConfirm&&handleConfirm(params);
-	this.btnClickFlag = true;
+	  this.btnClickFlag = true;
     //点确定后隐藏弹窗
     this.props.handleHide();
   }

+ 1 - 1
src/components/TemplateItems/index.less

@@ -138,4 +138,4 @@
     .manger {
         float: right;
     }
-}
+}

+ 11 - 3
src/containers/SpreadDrop.js

@@ -149,7 +149,7 @@ function mainSuitModule(dispatch,store,params){
 
 // 现病史
 function currentIll(dispatch,store,params){
-  const {nones,exists,withs,exclusion,excluName,ban,noneIds} = params;
+  const {nones,exists,withs,exclusion,excluName,ban,noneIds,tagType} = params;
   const index = params.ikey;
   let ikey = getLabelIndex(index);
   let existsId = exists && exists.length>0?getIds(exists):[];
@@ -157,6 +157,13 @@ function currentIll(dispatch,store,params){
   // const ids = (existsId.concat(withsId)).join(",");
   const ids = existsId.concat(withsId);
   let has = [],wes=[];
+  if(params.exclusion){//既往史
+    dispatch({
+      type: CURRENT_CONFIRM,
+      data:{exclusion,excluName,exists:has,withs:wes,nones:nones,ikey,ban,noneIds,tagType}
+    });
+    return ;
+  }
   //获取选中项目模板
   fetchModules(ids).then((res)=>{
     if(+res.data.code===0){
@@ -173,12 +180,13 @@ function currentIll(dispatch,store,params){
         });
         dispatch({
           type: CURRENT_CONFIRM,
-          data: {exists:has,withs:wes,nones:nones,ikey,ban,noneIds}
+          data: {exclusion,excluName,exists:has,withs:wes,nones:nones,ikey,ban,noneIds,tagType}
         });
       }else{
         dispatch({
           type: CURRENT_CONFIRM,
-          data: {exists,withs,nones,ikey,ban,noneIds}
+          data: {exclusion,excluName,exists:has,withs:wes,nones:nones,ikey,ban,noneIds,tagType}
+          // data: {exists,withs,nones,ikey,ban,noneIds}
         });
       }
       dispatch({    //自由文本标签数据更新

+ 17 - 0
src/containers/eleType.js

@@ -79,6 +79,7 @@ export function singleRadio(params){
                          show={showArr&&showArr[showInx]}
                          ikey={showInx}
                          value={data.value}
+                         unitType={data.controlType}
                          hideTag={hideTag}></NumberUnitDrop>;
     case 6:
       return <InlineTag prefix={data.labelPrefix}
@@ -113,6 +114,22 @@ export function singleRadio(params){
                          ikey={showInx}
                          value={data.value}
                          hideTag={hideTag}></NumberDrop>;
+    case 8://带单位数字键盘
+      return <NumberUnitDrop prefix={data.labelPrefix}
+                         suffix={data.labelSuffix}
+                         placeholder={data.name}
+                         mouseSelect={params.mouseSelected}
+                         i={i}
+                         isExtBlue={data.specFlag===4?true:false}
+                         formulaCode={data.formulaCode}
+                         boxMark={boxMark}
+                         id={data.id}
+                         isImports={boxMark==1 ?NumberUnitDropIsHigh: isHigh}
+                         show={showArr&&showArr[showInx]}
+                         ikey={showInx}
+                         unitType={data.controlType}
+                         value={data.value}
+                         hideTag={hideTag}></NumberUnitDrop>;
     case 11:
       return <RadioInpDrop data={data.questionDetailList}
                            vals={data.vals}

+ 31 - 7
src/store/actions/currentIll.js

@@ -338,9 +338,20 @@ export const confirm = (state,action) =>{
   let res = Object.assign({},state);
   let length1 = res.data.length;
   let arr = JSON.parse(JSON.stringify(res.data));
-  const {nones,exists,withs,ikey,exclusion,excluName,ban,noneIds} = action.data;
+  const {nones,exists,withs,ikey,exclusion,excluName,ban,noneIds,tagType} = action.data;
   let existConpId = [];
   let withConpId = [];
+
+  const items = [...exists||[],...withs||[]];//既往史清空选项
+  if((!exists||!withs||items.length==0)&&!nones&&!exclusion){       //取消无殊的选中,空白提交
+    arr[ikey].value = '';
+    arr[ikey].selecteds = {};
+  }
+  //既往史选中互斥项
+  if(exclusion){
+    arr[ikey].value = excluName;
+    arr[ikey].selecteds = action.data;
+  }
   exists.map((v,i)=>{
     existConpId.push(v.conceptId);
   })
@@ -350,32 +361,45 @@ export const confirm = (state,action) =>{
   res.symptomIds = res.symptomIds.concat(existConpId,withConpId,noneIds);//搜索去重
   // 伴 标签
   const banText = JSON.stringify(ban)=='{}'?'':{id:ban.id,name:ban.name,value:ban.name,tagType:config.tagType};
-
   // 处理主症状标签及尾巴展开symptomType=1
   if(exists && exists.length>0){
     let tempArr = [];
      for(let i=0;i<exists.length; i++){
-      tempArr.push(getLabel(exists[i].id,exists[i].questionMapping && exists[i].questionMapping.length==0?exists[i].name+',':exists[i].name),...(exists[i].questionMapping && exists[i].questionMapping.filter((item)=>{return item.symptomType==0||item.symptomType==1;})));
+      if(tagType == 6){
+        tempArr.push(...(exists[i].questionMapping && exists[i].questionMapping.filter((item)=>{return item.symptomType==0||item.symptomType==1;})));
+      }else{
+        tempArr.push(getLabel(exists[i].id,exists[i].questionMapping && exists[i].questionMapping.length==0?exists[i].name+',':exists[i].name),...(exists[i].questionMapping && exists[i].questionMapping.filter((item)=>{return item.symptomType==0||item.symptomType==1;})));
+      }
     }
     arr.splice(ikey,0,...formatContinueDots(tempArr));
   }
-  
   let length = arr.length - length1;
   let withsArr = JSON.parse(JSON.stringify(arr));
   // 伴 伴随症状标签及尾巴展开symptomType=2
   if(withs && withs.length>0){
     let tempArr = [];
     for(let i=0;i<withs.length; i++){
-      tempArr.push(banText,getLabel(withs[i].id,withs[i].questionMapping && withs[i].questionMapping.length==0?(withs[i].name+','):(withs[i].name)),...(withs[i].questionMapping&&withs[i].questionMapping.length>0?withs[i].questionMapping.filter((item)=>{return item.symptomType==0||item.symptomType==2;}):[]));
+      if(tagType == 6){
+        tempArr.push(banText,...(withs[i].questionMapping&&withs[i].questionMapping.length>0?withs[i].questionMapping.filter((item)=>{return item.symptomType==0||item.symptomType==2;}):[]));
+      }else{
+        tempArr.push(banText,getLabel(withs[i].id,withs[i].questionMapping && withs[i].questionMapping.length==0?(withs[i].name+','):(withs[i].name)),...(withs[i].questionMapping&&withs[i].questionMapping.length>0?withs[i].questionMapping.filter((item)=>{return item.symptomType==0||item.symptomType==2;}):[]));
+      }
     }
     withsArr.splice(parseInt(ikey)+length,0,...formatContinueDots(tempArr));
   }
-
   // 无 不用展开
+
   let lengthN = withsArr.length - length1;
   let noneArr = JSON.parse(JSON.stringify(withsArr));  
   if(nones.length>1){//只点无不上去
-    const nonesName = nones.slice(0,nones.length-1)+',';
+    let nonesName = ""
+    if(tagType == 6){
+      nonesName = nones
+      noneArr[ikey].value = '';
+      noneArr[ikey].selecteds = {};
+    }else{
+      nonesName = nones.slice(0,nones.length-1)+','
+    }
     const noneObj = Object.assign({},JSON.parse(config.textLabel),{name:nonesName,value:nonesName});
     const none = nones?noneObj:'';
     noneArr.splice(parseInt(ikey)+lengthN,0,none);