Jelajahi Sumber

merge from 'lcf'

zhangxc 6 tahun lalu
induk
melakukan
c54c73fe39

+ 1 - 0
src/common/components/DropList/index.jsx

@@ -38,6 +38,7 @@ class DropList extends Component{
     return <div className={this.getClass()} contentEditable='false'>
       <ul>
         {data&&data.map((it)=>{
+          /*return <li onClick={(e)=>this.handleSelect(e,it)} className={it.selected||(it.selected!==false&&+it.defaultSelect===1)?style['selected']:''}>{it.labelPrefix}{it.questionDetailList&&it.questionDetailList.length>0?it.questionDetailList[0].name:it.name}{it.labelSuffix}</li>*/
           return <li onClick={(e)=>this.handleSelect(e,it)} className={it.selected||(it.selected!==false&&+it.defaultSelect===1)?style['selected']:''}>{it.labelPrefix}{it.name}{it.labelSuffix}</li>
         })}
         <li onClick={(e)=>this.handleClear(e)} className='red'>清空选项</li>

+ 33 - 1
src/common/components/EditableSpan/index.jsx

@@ -23,11 +23,14 @@ class EditableSpan extends Component{
       clearTimer:null,
       oldText:props.value,
       labelVal:'',  //存放标签原有的值--主诉字数限制用
+      preVal:''
     };
     this.$span = React.createRef();
     this.handleFocus = this.handleFocus.bind(this);
     this.onChange = this.onChange.bind(this);
     this.handleBlur = this.handleBlur.bind(this);
+    this.handleKeydown = this.handleKeydown.bind(this);
+    this.handleKeyup = this.handleKeyup.bind(this);
   }
   handleFocus(e){
     e.stopPropagation();
@@ -99,6 +102,34 @@ class EditableSpan extends Component{
       clearTimer
     });
   }
+
+  handleKeydown(e){
+    let innerVal = e.target.innerText;
+    //禁止回车事件
+    if(e.keyCode==13){return false;}
+    //backspace事件
+    if(e.keyCode==8){
+      //用于对比backspace前后的值
+      this.setState({
+        preVal:innerVal
+      })
+    }
+
+  }
+  handleKeyup(e){
+     const {boxMark,handleKeydown,i,value} = this.props;
+     const {preVal} = this.state;
+    let innerVal = e.target.innerText;
+    if(e.keyCode==8){
+      if(innerVal !==preVal){return}
+      let data = innerVal.trim();
+      //判断是否为空、中英文:, 。、;,且不是第一位
+      if(i!==0 &&data==""||data==","||data==","||data==":"||data==":"||data=="."||data=="。"||data=="、"||data==";"||data==";"){
+        handleKeydown&&handleKeydown({boxMark,i});
+      }
+    }
+    
+  }
   /*shouldComponentUpdate(next){
     if(JSON.stringify(next) == JSON.stringify(this.props)){
       return false;
@@ -125,7 +156,8 @@ class EditableSpan extends Component{
                       onInput={this.onChange}
                       onFocus={this.handleFocus}
                       onBlur={this.handleBlur}
-                      onkeydown={handleEnter}></span>;
+                      onkeydown={this.handleKeydown}
+                      onkeyup={this.handleKeyup}></span>;
 
   }
 }

+ 4 - 4
src/common/components/ItemBox/index.jsx

@@ -19,8 +19,8 @@ class ItemBox extends Component {
     this.handleClick = this.handleClick.bind(this);
   }
   getBoxStyle(){
-    const {boxHeight,boxWidth,boxLineHeight,marginTop} = this.props;
-    return {width:boxWidth?boxWidth:undefined,height:boxHeight?boxHeight:undefined,lineHeight:boxLineHeight?boxLineHeight:'22px',marginTop:marginTop};
+    const {boxHeight,boxWidth,boxLineHeight,marginTop,backgroundColor} = this.props;
+    return {width:boxWidth?boxWidth:undefined,height:boxHeight?boxHeight:undefined,lineHeight:boxLineHeight?boxLineHeight:'22px',marginTop:marginTop,backgroundColor:backgroundColor?backgroundColor:''};
   }
 
   handleClick(e){
@@ -29,11 +29,11 @@ class ItemBox extends Component {
   }
 
   render(){
-    const {title,children,editable,className,handleFocus,onchange,fuzhen,border,handleBlur,titleTop} = this.props;
+    const {title,children,editable,className,handleFocus,onchange,fuzhen,border,handleBlur,titleTop,backgroundColor} = this.props;
     // console.log(title,editable)
     return <div className={style["box"]+" "+"clearfix"} >
       <div className={style["title"] + ' ' + className} style={{marginTop:titleTop?'22px':''}}>{title}</div>
-      <div className={`${style["content"]} ${border?style["border"]:''}`} contentEditable={editable} style={this.getBoxStyle()} onFocus={handleFocus} onInput={onchange} onClick={(e)=>{this.handleClick(e);}} onBlur={handleBlur}>
+      <div className={`${style["content"]} ${border?style["border"]:''} ${backgroundColor?style["noBorder"]:''}`} contentEditable={editable} style={this.getBoxStyle()} onFocus={handleFocus} onInput={onchange} onClick={(e)=>{this.handleClick(e);}} onBlur={handleBlur}>
         {fuzhen?children||fuzhen:children}
       </div>
     </div>

+ 4 - 0
src/common/components/ItemBox/index.less

@@ -22,8 +22,12 @@
     padding:5px;
     outline: none;
     border-bottom:1px @part-border-color dashed;
+    border-radius: 4px;
   }
   .border {
       border:1px @part-border-color dashed !important;
   }
+  .noBorder{
+    border: none;
+  }
 }

+ 2 - 0
src/components/AddAssistCheck/index.jsx

@@ -3,6 +3,7 @@ import { SearchOption, Calendar } from '@commonComp';
 import styles from './index.less';
 import $ from 'jquery';
 import Textarea from './Textarea';
+import more from '@common/images/addItem1.png';
 
 class AddAssistCheck extends React.Component {
     constructor(props) {
@@ -120,6 +121,7 @@ class AddAssistCheck extends React.Component {
             <div className={styles.wrapper}>
                 {this.getAssistLabel()}
                 <div id="searchWrapAssist" style={{position:"relative"}}>
+                    <img src={more} style={{verticalAlign:'middle',marginRight:'2px'}}/>
                     <span className={`${styles.staticTag}`} onClick={(e) => this.handleSearchShow(e)} id="assistCheck">添加辅检项目</span>
                     <SearchOption handleChangeValue={handleChangeValue} visible={this.state.show}>
                         {this.getSearchList(list)}

+ 4 - 3
src/components/AddAssistCheck/index.less

@@ -2,17 +2,18 @@
 
 .staticTag {
     cursor: pointer;
-    color: #767676;
+    // color: #767676;
+    color: @blue;
     /*padding-top: 6px;*/
     box-sizing: border-box;
     display: inline-block;
     position: relative;
-    &:before {
+    /* &:before {
         content: '\300C';
     }
     &:after {
         content: '\300D';
-    }
+    } */
 }
 .searchLi {
     height: 44px;

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

@@ -1,5 +1,5 @@
 import React from 'react';
-import { SearchOption, InspectCommon, Calendar ,Notify,ConfirmModal} from '@commonComp';
+import { SearchOption, InspectCommon, Calendar ,Notify,ConfirmModal,Add} from '@commonComp';
 import { deepClone } from '@utils/tools';
 import styles from './index.less';
 import date1 from './img/date1.png';
@@ -7,7 +7,7 @@ import date2 from './img/date2.png';
 import close from './img/close.png';
 import store from '@store';
 import $ from 'jquery';
-
+import more from '@common/images/addItem1.png';
 class Inspect extends React.Component {
     constructor(props) {
         super(props);
@@ -35,6 +35,7 @@ class Inspect extends React.Component {
         this.showDetails = this.showDetails.bind(this)
         this.delConfirm = this.delConfirm.bind(this)
         this.handleCancel = this.handleCancel.bind(this)
+        this.handleSearchShow = this.handleSearchShow.bind(this)
     }
     delConfirm(){//弹窗确定
         const{delPartItem,handleCloseExcel} = this.props;
@@ -104,7 +105,8 @@ class Inspect extends React.Component {
     handleSearchShow(e) {
         let tmpShow = this.state.show;
         this.setState({ show: !tmpShow })
-        e.stopPropagation();
+        console.trace(789,this.state.show);
+        // e.stopPropagation();
     }
     handleFillShow(e,idx) {
         let tmpShow = this.state.showFill;
@@ -374,6 +376,7 @@ class Inspect extends React.Component {
                     </ul>
                 </div>
                 <div style={{position:"relative"}}>
+                    <img src={more} style={{verticalAlign:'middle',marginRight:'2px'}}/>
                     <span id="searchWrap" className={`${styles.staticTag}`} onClick={(e) => this.handleSearchShow(e)}>添加化验项</span>
                     <SearchOption handleChangeValue={handleChangeValue} visible={this.state.show}>
                         {this.getSearchList(list)}

+ 4 - 3
src/components/AddInspect/index.less

@@ -52,16 +52,17 @@
 
 .staticTag {
     cursor: pointer;
-    color: #767676;
+    // color: #767676;
+    color: @blue;
     padding-top: 10px;
     display: inline-block;
     position: relative;
-    &:before {
+    /* &:before {
         content: '\300C';
     }
     &:after {
         content: '\300D';
-    }
+    } */
 }
 .labelWrap {
     .table {

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

@@ -69,7 +69,7 @@ class Advice extends Component{
     })
 
     return  <div className={`${'mainsuit-box'} ${style['main-suit']}`}>
-      <ItemBox title='医嘱' editable={false}>
+      <ItemBox title='医嘱' editable={false} border={true} marginTop="10px">
         <div className={style['billing']}>
           {advice.assay && advice.assay.length > 0 || advice.check && advice.check.length > 0 ? <h1>开单项目</h1> : ''}
             {advice.assay && <span className={style['treat-input']}> {advice.assay}</span>}

+ 13 - 5
src/components/CurrentIll/index.jsx

@@ -4,6 +4,7 @@ import {Button,InlineTag,ItemBox,Notify,Textarea} from '@commonComp';
 import TailInlineTag from '@commonComp/TailInlineTag';
 import chooseType from '@containers/eleType.js';
 import SearchDrop from '@components/SearchDrop';
+import {filterDataArr} from '@utils/tools'
 
 class CurrentIll extends Component{
   constructor(props){
@@ -33,23 +34,30 @@ class CurrentIll extends Component{
 
   handleFocus(e){
     // 判断主诉是否为空
-    const {mainData,mainText,setData,moduleNum,mainIds,data} = this.props;
+    const {mainData,mainText,setData,moduleNum,mainIds,data,changeEditIll,editClear} = this.props;
     const that = this;
-    if(mainData.length == 0 && !mainText[0]){
+    let mainFinallyText = filterDataArr(mainText);console.log(88,mainText,mainFinallyText);
+    // if(mainData.length == 0 && !mainText[0]){
+    if(!mainFinallyText){
       //弹窗提醒
       Notify.error("无法操作,请先输入主诉");
       this.setState({
         forbidInput:true
       })
     }else {
-      const {changeEditIll,editClear} = this.props;
       let useEmpty = mainData.length>0?false:true;
       let num = moduleNum.num;//主诉使用了几个模板
       // if(editClear && data.length==0){//第一次聚焦去设置现病史的data
       if(data.length==0){//第一次聚焦去设置现病史的data
         setData && setData({useEmpty,num,mainData,mainIds});//是否使用空模板 及数据处理
       }
-      const showTimer = setTimeout(function(){
+      this.setState({
+          showMoudle:true,
+          forbidInput:false,
+          boxEditable:false,
+        })
+      changeEditIll(false)
+      /*const showTimer = setTimeout(function(){
         that.setState({
           showMoudle:true,
           forbidInput:false,
@@ -57,7 +65,7 @@ class CurrentIll extends Component{
         })
         changeEditIll(false)
       },150)
-      clearTimeout(showTimer);
+      clearTimeout(showTimer);*/
     }
 
   }

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

@@ -5,7 +5,7 @@ import DiagnosticList from '@containers/DiagnosticList.js';
 // import TreatDrug from '@containers/TreatDrug.js'
 import DiagResultSearch from '@containers/DiagResultSearch'
 import $ from 'jquery';
-
+import more from '@common/images/addItem1.png';
 
 class Diagnosis extends Component {
     constructor(props) {
@@ -43,9 +43,12 @@ class Diagnosis extends Component {
         
         
         return (<div>
-            <ItemBox  id="diagnosis" title='诊断'  boxHeight='auto' titleTop='22px'>
+            <ItemBox  id="diagnosis" title='诊断'  boxHeight='auto' titleTop='22px' marginTop='9px' backgroundColor='#EAF7FD'>
                 <DiagnosticList></DiagnosticList>
-                <div><span id='addDiag' className={style['add-diag']} onClick={this.handleshowSearch}>添加诊断结果</span></div>
+                <div style={{marginLeft:'10px'}}>
+                    <img src={more} style={{verticalAlign:'middle',marginRight:'2px'}}/>
+                    <span id='addDiag' className={style['add-diag']} onClick={this.handleshowSearch}>添加诊断结果</span>
+                </div>
                 <DiagResultSearch></DiagResultSearch>
                 
             </ItemBox>

+ 7 - 4
src/components/Diagnosis/index.less

@@ -1,13 +1,16 @@
+@import "~@less/variables.less";
 .add-diag {
     height: 50px;
     line-height: 50px;
-    padding: 0 10px;
-    color: #767676;
+    // padding: 0 10px;
+    // margin-left: 10px;
+    // color: #767676;
+    color: @blue;
     cursor: pointer;
 }
-.add-diag:before{
+/* .add-diag:before{
     content: '「';
 }
 .add-diag:after{
     content: '」';
-}
+} */

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

@@ -83,7 +83,7 @@ class DiagnosticList extends Component {
                         return (<div draggable={true} className={style['diag-box'] + ' clearfix'}  key={item.id} >
                                     {index === 0 ? '' : <span className={style['diag-up']} onClick={() => {this.upDiagnostic(index)}}><img src={diagUp}/></span>}
                                     {list.length === 1 ? '' : index !== 0 ? '' : <span onClick={() => {this.downDiagnostic(index)}} className={style['diag-down']}><img src={diagDown}/></span>}
-                                    <span className={style['diag-number']}>{index === 0 ? '主' : index+1}</span>
+                                    <span className={style['diag-number']} style={{fontWeight:index === 0 ?'bold':'normal'}}>{index === 0 ? '主' : index+1}</span>
                                     <span className={style['diag-name']} onClick={()=>{this.handleClickDiag(item)}}>{item.name}<span></span></span> 
                                     {item.type === 1 ? <span className={style['diag-first']}>初诊</span> :<span className={style['diag-second']}> 复诊</span>}
                                     <span className={style['treat']} onClick={() =>{this.showTreat(item)}}>治疗方案</span>

+ 7 - 1
src/components/DiagnosticList/index.less

@@ -7,6 +7,7 @@
     line-height: 50px;
     border-bottom: 1px dotted #989DA3;
     position: relative;
+    background: #EAF7FD;
 }
 .diag-number {
     display: inline-block;
@@ -40,7 +41,10 @@
 }
 .diag-first {
     background: #EAF7FD;;
-    color: #000;
+    color: #3B9ED0;
+    border: 1px solid #3B9ED0;
+    border-radius: 4px;
+    line-height: 17px;
 }
 
 
@@ -49,6 +53,8 @@
     border-bottom: 1px solid #666;
     box-sizing: border-box;
     position: relative;
+    color:#000;
+    font-weight: bold;
 }
 
 .diag-up, .diag-down {

+ 1 - 0
src/components/RadioDrop/index.jsx

@@ -55,6 +55,7 @@ class RadioDrop extends Component{
       default:
         // text = item.labelPrefix+item.name+item.labelSuffix;
         text = item.name;
+        // text = item.questionDetailList&&item.questionDetailList.length>0?item.questionDetailList[0].name: item.name;
     }
     handleSelect&&handleSelect({ikey,id:item.id,text,mainSaveText});
   }

+ 6 - 4
src/containers/DiagnosticItem.js

@@ -3,6 +3,7 @@ import { connect } from 'react-redux';
 import DiagnosticItem from '@components/DiagnosticItem';
 import { ADD_DIAGNOSTIC, GET_DIAGNOSTIC_STR } from '@store/types/diagnosticList'; 
 import {  SHOW_SEARCH,  HIDE_SEARCH, SET_SEARCH_VALUE } from '@store/types/diagnosticSearch';
+import { addDiagnostic } from '@store/async-actions/treat';
 import { getSearchResult } from '@store/async-actions/diagnosticSearch';
 import { isAddMainSuit } from '@store/async-actions/diagnosticList';
 import {billing, getTips} from '../store/async-actions/pushMessage';
@@ -17,10 +18,11 @@ function mapStateToProps(state) {
 function mapDispatchToProps(dispatch) {
     return{
         addDiagnostic: (item) => {
-            dispatch({
-                type: ADD_DIAGNOSTIC,
-                item: item
-            });
+            dispatch(addDiagnostic(item))
+            // dispatch({
+            //     type: ADD_DIAGNOSTIC,
+            //     item: item
+            // });
             dispatch({
                 type: GET_DIAGNOSTIC_STR
             });

+ 28 - 6
src/containers/EditableSpan.js

@@ -1,14 +1,14 @@
 import {connect} from 'react-redux';
 import {EditableSpan} from '@commonComp';
-import {SETCHECKTEXT,SETSEARCHDATA,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR} from '@types/checkBody';
-import {SET_SEARCH,MAIN_FOCUS_INDEX,CLEAR_SEARCH,SETMAINTEXT} from '@types/mainSuit';
-import {SETOTHERTEXT,SETOTHERSEARCHDATA,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR} from '@types/otherHistory';
-import {SET_CURRENT_SEARCH,CURRENT_CLEAR,SETCURRENTTEXT,CURRENT_FOCUS_INDEX} from '@types/currentIll';
+import {SETCHECKTEXT,SETSEARCHDATA,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,DEL_CHECKBODY} from '@types/checkBody';
+import {SET_SEARCH,MAIN_FOCUS_INDEX,CLEAR_SEARCH,SETMAINTEXT,DEL_MAIN} from '@types/mainSuit';
+import {SETOTHERTEXT,SETOTHERSEARCHDATA,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,DEL_OTHERHIS} from '@types/otherHistory';
+import {SET_CURRENT_SEARCH,CURRENT_CLEAR,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,DEL_CURRENT} from '@types/currentIll';
 import {getSearch} from '@store/async-actions/fetchModules.js';
 import {billing} from '@store/async-actions/pushMessage';
 import {didPushParamChange} from '@utils/tools.js';
 import {SETTEXTFOCUS} from '@types/homePage';
-import {RESET,SETDROPSHOW} from "@store/types/homePage";
+import {RESET,SETDROPSHOW,ISREAD} from "@store/types/homePage";
 import config from '@config/index.js';
 
 function mapStateToProps(state){//console.log(state)
@@ -208,7 +208,29 @@ function mapDispatchToProps(dispatch,state) {
         default:
           break;
       }
-    }
+    },
+    handleKeydown(obj){//backspace删除
+      switch (+obj.boxMark){
+        case 1:
+          dispatch({type:DEL_MAIN,delIndex:obj.i});
+          break;
+        case 2:
+          dispatch({type:DEL_CURRENT,delIndex:obj.i});
+          break;
+        case 3:
+          dispatch({type:DEL_OTHERHIS,delIndex:obj.i});
+          break;
+        case 4:
+          dispatch({type:DEL_CHECKBODY,delIndex:obj.i});
+          break;
+        default:
+          break;
+      }
+      // 更新文本标签
+      dispatch({
+        type:ISREAD
+      })
+    },
   }
 }
 

+ 30 - 6
src/containers/SpreadDrop.js

@@ -362,8 +362,17 @@ function mapDispatchToProps(dispatch,store){
         const bigData = await getCommSymptomPush();
         let result = bigData.data;
         if(+result.code == 0){
-          let pushDataList = result.data.symptom;
-          if(pushDataList.length > 0){
+          // let pushDataList = result.data.symptom;
+          let bigDataList = result.data.symptom;
+          let pushDataList = [];
+          if(bigDataList.length>0){//剔除没有id
+            pushDataList = bigDataList.filter(function(item){
+              return item.id
+            });
+          }else{
+            pushDataList = bigDataList;
+          }
+          /*if(pushDataList.length > 0){
             if(obj.type == 1){// 主诉--添加症状
               dispatch({
                 type:GET_BIGDATAPUSH,
@@ -377,10 +386,25 @@ function mapDispatchToProps(dispatch,store){
                 info:obj
               })
             }
-          }else{//推送无数据显示空下拉--1.9
-            /*Notify.info("暂无推送");
-            return*/
-          }
+          }else{
+            Notify.info("暂无推送");
+            // return
+          }*/
+          //推送无数据显示空下拉并提示暂无推送--1.9/1.18
+          if(pushDataList.length == 0){Notify.info("暂无推送");}
+          if(obj.type == 1){// 主诉--添加症状
+              dispatch({
+                type:GET_BIGDATAPUSH,
+                data:pushDataList,
+                info:obj
+              })
+            }else if(obj.type == 2){// 现病史--添加其他症状
+              dispatch({
+                type:CURRENT_GET_BIGDATAPUSH,
+                data:pushDataList,
+                info:obj
+              })
+            }
         }else{
           console.log(result.msg);
           // 接口请求失败,不往下执行显示下拉

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

@@ -1,5 +1,5 @@
 import config from '@config/index.js';
-import {getLabelIndex} from '@common/js/func.js';
+import {getLabelIndex,fullfillText} from '@common/js/func.js';
 //设置查体数据
 export function set(state,action){
   let res = Object.assign({},state);
@@ -193,4 +193,19 @@ export function setInputLabel(state,action){
   res.saveText[i] = prefix+text+suffix;//console.log(res)
   res.update = Math.random();
   return res;
+}
+
+// backspace删除
+export function backspaceText(state,action){
+  let res = Object.assign({},state);
+  const {delIndex} = action;
+  const data = res.data;
+  if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
+    // 前一个是文本标签或者子模板 不做处理
+  }else{
+    data.splice(delIndex-1,2);
+  }
+  res.saveText = fullfillText(data).saveText;
+  res.update = Math.random();
+  return res;
 }

+ 35 - 9
src/store/actions/currentIll.js

@@ -73,10 +73,11 @@ export const setData = (state,action) =>{
     objToArr.push(mainLabelModule[m]);
   }
   // 过滤掉没有mapping的数据
-  let mainLabelModuleArr = objToArr.filter((item)=>{
+  let mainLabelModuleArr = objToArr;
+  /*let mainLabelModuleArr = objToArr.filter((item)=>{
     return item.questionMapping.length>0;
-  })
-  console.log(444,mainLabelModuleArr);
+  })*/
+  
   if (useEmpty) {
     res.data = res.emptyData;
   } else {
@@ -128,10 +129,9 @@ export const setData = (state,action) =>{
           mainLabelModuleArr.map((v,i)=>{
             if(mainCopy[k].id==v.id){
               ind++;
-              // newMainCopy.splice(k+1,0,...v.questionMapping);
               let items = v.questionMapping.filter((item)=>{
                               return item.symptomType==0||item.symptomType==1;
-                            })  
+                            })          
               lengArr[k] = items.length;  //每一个主诉尾巴长度        
               /*if(ind==1){
                 preLength = items.length;
@@ -150,7 +150,8 @@ export const setData = (state,action) =>{
       if(withs.length>0){
         let withInd = 0;
         let withInsertInd = 0;
-        let withPreLength = 0;
+        // let withPreLength = 0;
+        let withLengArr=[];
         for(let d=0; d <withs.length;d++){
           mainLabelModuleArr.map((v,i)=>{
             if(withs[d].id==v.id){
@@ -158,10 +159,14 @@ export const setData = (state,action) =>{
               let items = v.questionMapping.filter((item)=>{
                               return item.symptomType==0||item.symptomType==2;
                             })
-              if(withInd==1){
+              /*if(withInd==1){
                 withPreLength = items.length;
               }else{
                 withInsertInd += withPreLength;
+              }*/
+              withLengArr[d] = items.length;
+              if(withInd>1){
+                withInsertInd += withLengArr[d-1];
               }
               newWiths.splice(d+withInsertInd+1,0,...items);
             }
@@ -308,6 +313,11 @@ export function setRadioValue(state,action){
     });
   }else{
     item.questionMapping[subInx].value = text;
+    /*if(item.questionMapping[subInx].controlType==1){//例如:有无治疗-未经治疗
+      item.value = text;
+    }else{
+      item.questionMapping[subInx].value = text;
+    }*/
     let hasValue = false;
     const sub = item.questionMapping.map((it)=>{
       //添加选中状态
@@ -376,9 +386,10 @@ export const bigDataSymptom = (state,action) => {
   const index = action.info.ikey;
   let labelInx = getLabelIndex(index);
   // 添加症状 暂时剔除没有id、questionMapping字段的数据
-  let pushDataList = action.data.filter(function(item){
+  let pushDataList = action.data;
+  /*let pushDataList = action.data.filter(function(item){
     return item.id
-  });
+  });*/
   let dataList = inlineDatas[labelInx].questionMapping;
   for(let k=0; k<dataList.length; k++){
     if(dataList[k].controlType == 99){
@@ -487,4 +498,19 @@ export function setInputLabel(state,action){
   res.saveText[i] = prefix+text+suffix;
   res.update = Math.random();
   return res;
+}
+
+// backspace删除
+export function backspaceText(state,action){
+  let res = Object.assign({},state);
+  const {delIndex} = action;
+  const data = res.data;
+  if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
+    // 前一个是文本标签或者子模板 不做处理
+  }else{
+    data.splice(delIndex-1,2);
+  }
+  res.saveText = fullfillText(data).saveText;
+  res.update = Math.random();
+  return res;
 }

+ 0 - 1
src/store/actions/diagnosticList.js

@@ -7,7 +7,6 @@ export const addDiagnostic = (state, action) => {
 export const delDiagnostic = (state, action) => {
     const res = JSON.parse(JSON.stringify(state));
     res.diagnosticList = res.diagnosticList.filter(item => item.id !== action.id);
-    console.log('del',state,action.id)
     return res;
 }
 

+ 18 - 3
src/store/actions/mainSuit.js

@@ -53,16 +53,16 @@ export const getBigSymptom = (state,action) => {
   const index = action.info.ikey;
   let labelInx = getLabelIndex(index);
   // 添加症状 暂时剔除没有id、questionMapping字段的数据
-  let pushDataList = action.data.filter(function(item){
+  let pushDataList = action.data;
+  /*let pushDataList = action.data.filter(function(item){
     return item.id
-  });
+  });*/
   let dataList = inlineDatas[labelInx].questionMapping;
   for(let k=0; k<dataList.length; k++){
     if(dataList[k].controlType == 99){
       dataList[k].questionDetailList = pushDataList;
     }
   }
-  
   return res;
 }
 
@@ -448,4 +448,19 @@ export function setInputLabel(state,action){
   res.saveText[i] = prefix+text+suffix;//console.log(res)
   res.update = Math.random();
   return res;
+}
+
+// backspace删除
+export function backspaceText(state,action){
+  let res = Object.assign({},state);
+  const {delIndex} = action;
+  const data = res.data;
+  if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
+    // 前一个是文本标签或者子模板 不做处理
+  }else{
+    data.splice(delIndex-1,2);
+  }
+  res.saveText = fullfillText(data).saveText;
+  res.update = Math.random();
+  return res;
 }

+ 16 - 1
src/store/actions/otherHistory.js

@@ -226,4 +226,19 @@ export const otherEditClear = (state,action)=>{
     const res = Object.assign({},state);
     res.editClear = action.bool;
     return res;
-};
+};
+
+// backspace删除
+export function backspaceText(state,action){
+  let res = Object.assign({},state);
+  const {delIndex} = action;
+  const data = res.data;
+  if(data[delIndex-1].tagType==8 ||data[delIndex-1].flag&&data[delIndex-1].flag==3){
+    // 前一个是文本标签或者子模板 不做处理
+  }else{
+    data.splice(delIndex-1,2);
+  }
+  res.saveText = fullfillText(data).saveText;
+  res.update = Math.random();
+  return res;
+}

+ 56 - 1
src/store/async-actions/treat.js

@@ -1,5 +1,6 @@
 import { json } from "@utils/ajax";
 import { SET_TREAT } from '@store/types/diagnosticList';
+import { ADD_DIAGNOSTIC} from '@store/types/diagnosticList'; 
 import { SET_DRUG_INFO, SET_TREATMENT, SET_RECOMMEND_BASIC } from '@store/types/treat';
 import {getEMRParams} from  '@utils/tools';
 const api={
@@ -7,6 +8,60 @@ const api={
     textPush:'/api/icss/push/pushText'
 }
 
+export const addDiagnostic = (item) => {
+        console.log(item)
+        return (dispatch, getState) => {
+            const state = getState();
+            let url = api.push;
+            if(+state.typeConfig.confirmType===1){
+                url=api.textPush;
+            }
+            const emrData = getEMRParams();
+            const diagnosticList = state.diagnosticList.diagnosticList;
+            let diag = '';
+            if(diagnosticList) {
+                for (let i = 0; i < diagnosticList.length; i++ ) {
+                    if(i ===0 ) {
+                        diag = diag + diagnosticList[i].name;
+                    } else {
+                        diag = diag + ',' + diagnosticList[i].name;
+                    }
+                    
+                }
+            }
+            if (item.type === 1) {
+                diag = diag + ',' + item.name
+            } else {
+                diag = diag + ',' + item.name
+            }
+            const params = {
+                "age": emrData.age,
+                "featureType": "8",
+                "diag": diag,
+                "diseaseId":  item.id,
+                "lis": emrData.lis,
+                "other": emrData.other,
+                "pacs": emrData.pacs,
+                "sex": emrData.sex,
+                "symptom": emrData.current||emrData.main,
+                "vital": emrData.vital
+            };
+            
+            json(url, params).then((data) =>{
+                console.log(data)
+                item.treat = data.data.data.treat
+            
+                return dispatch({
+                    type: ADD_DIAGNOSTIC,
+                    item: item
+                })
+            }).catch((e) =>{
+                console.log(e)
+            })
+        }
+
+}
+
 export const getTreatResult = (item) =>{
     return (dispatch, getState) => {
         const state = getState();
@@ -40,6 +95,7 @@ export const getTreatResult = (item) =>{
                 
             }
         }
+        console.log(diag)
         const params = {
             "age": emrData.age,
             "featureType": "8",
@@ -146,7 +202,6 @@ export const getTreatResult = (item) =>{
     
 } 
 export const getInstroduce = (item)=>{
-    // const instroduce = '<p>药品说明1</p><p>药品说明2</p><p>药品说明3</p>'
 
     return (dispatch, getState) =>{
         const url = '/api/icss/introduceInfo/getByQuestionId';

+ 4 - 2
src/store/reducers/checkBody.js

@@ -1,6 +1,6 @@
 import {SET,SETNUMBER4,SETSELECTED4,SETCHECKBOX,ADDLABELITEM,SETCHECKTEXT,SETSEARCHDATA,
-  SELECTSEARCHDATA,CHANGECHECKTEXTLABEL,CLEARCHECKBODY,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,SETCHECKINPUT} from '../types/checkBody.js';
-import {set,setNumberValue,setRadioValue,setCheckBoxValue,addLabelItem,setCheckText,setSearchData,insertLabelData,changeLabelVal,clearCheckBody,setInputLabel} from '../actions/checkBody.js';
+  SELECTSEARCHDATA,CHANGECHECKTEXTLABEL,CLEARCHECKBODY,CHECK_FOCUS_INDEX,CHECKBODY_CLEAR,SETCHECKINPUT,DEL_CHECKBODY} from '../types/checkBody.js';
+import {set,setNumberValue,setRadioValue,setCheckBoxValue,addLabelItem,setCheckText,setSearchData,insertLabelData,changeLabelVal,clearCheckBody,setInputLabel,backspaceText} from '../actions/checkBody.js';
 import config from '@config/index.js';
 
 const block = Object.assign(JSON.parse(config.textLabel),{full:true});
@@ -41,6 +41,8 @@ export default function(state=initState,action){
       return res;
   case SETCHECKINPUT:
       return setInputLabel(state,action);
+  case DEL_CHECKBODY:
+      return backspaceText(state,action);
     default:
       return res;
   }

+ 4 - 2
src/store/reducers/currentIll.js

@@ -1,9 +1,9 @@
 // 现病史
 import {SET_CURRENT,CURRENT_CONFIRM,INSERT_PROCESS,SET_CURRENT_DATA,SET_LABEL_MODULE,SETMAINCHECKBOX,
   CURRENT_RADIO,CURRENT_NUMBER,CURRENT_TEXT_LABEL,CLEAR_CURRENT_ILL,SETTEXTMODEVALUE,CURRENT_GET_BIGDATAPUSH,CURRENT_CLEAR,
-  SET_CURRENT_SEARCH,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,SELECT_SEARCHDATA,CLEAR_CURRENT_EDIT,CURRENTADDLABELITEM,SETCURRENTINPUT} from '../types/currentIll';
+  SET_CURRENT_SEARCH,SETCURRENTTEXT,CURRENT_FOCUS_INDEX,SELECT_SEARCHDATA,CLEAR_CURRENT_EDIT,CURRENTADDLABELITEM,SETCURRENTINPUT,DEL_CURRENT} from '../types/currentIll';
 import {confirm,insertProcess,setData,setCheckBox,setRadioValue,setNumberValue,changeLabelVal,clearCurrentIll,
-  setTextModeValue,setModule,bigDataSymptom,setCheckText,insertLabelData,clearCurrentEdit,addLabelItem,setInputLabel} from '../actions/currentIll';
+  setTextModeValue,setModule,bigDataSymptom,setCheckText,insertLabelData,clearCurrentEdit,addLabelItem,setInputLabel,backspaceText} from '../actions/currentIll';
 
 const initState = {
   moduleData:[],
@@ -65,6 +65,8 @@ export default function(state=initState,action){
       return addLabelItem(state,action);
     case SETCURRENTINPUT:
       return setInputLabel(state,action);
+    case DEL_CURRENT:
+      return backspaceText(state,action);
     default:
       return state;
   }

+ 4 - 2
src/store/reducers/mainSuit.js

@@ -1,9 +1,9 @@
 import {COMM_SYMPTOMS,CLEAR_COMSYMPTOMS,SHOW_TAIL,INSERT_MAIN,
   SET_SEARCH,CLEAR_SEARCH,GET_BIGDATAPUSH,SET_MAINSUIT,MIX_CONFIRM,NUMBER_SELECT,
   RADIO_SELECT,COMM_CONFIRM,CHANGE_LABELVAL,SAVE_FREE,CLEAR_MAIN_SUIT,SET_DATA,
-  INSERT_SEARCH,MAIN_FOCUS_INDEX,SETTEXTMODEVALUE,SETMAINTEXT,MAINADDLABELITEM,SETMAININPUT} from '../types/mainSuit'
+  INSERT_SEARCH,MAIN_FOCUS_INDEX,SETTEXTMODEVALUE,SETMAINTEXT,MAINADDLABELITEM,SETMAININPUT,DEL_MAIN} from '../types/mainSuit'
 import {getCommSymptoms,handleTailClick,insertMain,setSearch,getBigSymptom,setMainMoudle,confirm,
-  setNumberValue,setRadioValue,commConfirm,changeLabelVal,saveFreeVal,clearMainSuit,insertSearch,setTextModeValue,setCheckText,changeEditClear,addLabelItem,setInputLabel} from '../actions/mainSuit'
+  setNumberValue,setRadioValue,commConfirm,changeLabelVal,saveFreeVal,clearMainSuit,insertSearch,setTextModeValue,setCheckText,changeEditClear,addLabelItem,setInputLabel,backspaceText} from '../actions/mainSuit'
 
 
 const initState = {
@@ -78,6 +78,8 @@ export default function(state=initState,action){
       return addLabelItem(state,action);
     case SETMAININPUT:
       return setInputLabel(state,action);
+    case DEL_MAIN:
+      return backspaceText(state,action);
     default:
       return 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} from '../types/otherHistory';
-import {confirm,setRadioValue,setNumberValue,setCheckBoxValue,setCheckText,setSearchData,insertLabelData,clearOtherHistory,changeTextLabel,setOtherInput,setTextModeValue,addLabelItem,otherEditClear} from '../actions/otherHistory';
+  SELECTOTHERSEARCHDATA,CLEAROTHERHISTORY,CHANGEOTHERTEXTLABEL,SETOTHERINPUT,SETTEXTMODEVALUE,OTHER_FOCUS_INDEX,OTHERHIS_CLEAR,OTHERADDLABELITEM,OTHEREDICLEAR,DEL_OTHERHIS} from '../types/otherHistory';
+import {confirm,setRadioValue,setNumberValue,setCheckBoxValue,setCheckText,setSearchData,insertLabelData,clearOtherHistory,changeTextLabel,setOtherInput,setTextModeValue,addLabelItem,otherEditClear,backspaceText} from '../actions/otherHistory';
 
 const initState = {data:[],saveText:[],selecteds:[],focusIndex:'',editClear:true};/*mockData.OtherHis.moduleDetailDTOList;[
     mockData.radioData,
@@ -48,7 +48,9 @@ export default function(state=initState,action){//console.log(state)
         res.searchData = [];
         return res;
     case OTHEREDICLEAR:
-        return otherEditClear(state,action);;
+        return otherEditClear(state,action);
+    case DEL_OTHERHIS:
+        return backspaceText(state,action);
     default:
       return res;
   }

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

@@ -11,4 +11,5 @@ export const CHANGECHECKTEXTLABEL = 'change_check_text';
 export const CLEARCHECKBODY = 'clear_check_body';
 export const CHECK_FOCUS_INDEX = 'check_focus_text_index';
 export const CHECKBODY_CLEAR = 'clear_search_check_body';
-export const SETCHECKINPUT = 'set_check_body_input_label';
+export const SETCHECKINPUT = 'set_check_body_input_label';
+export const DEL_CHECKBODY = 'DEL_CHECKBODY';//backspace

+ 1 - 0
src/store/types/currentIll.js

@@ -20,4 +20,5 @@ export const SELECT_SEARCHDATA = 'SELECT_SEARCHDATA' ;//选中搜索结果
 export const CLEAR_CURRENT_EDIT = 'CLEAR_CURRENT_EDIT' ;
 export const CURRENTADDLABELITEM = 'current_add_label_item';    //带加号的标签复制
 export const SETCURRENTINPUT = 'SET_CURRENT_ILL_INPUT_LABEL';     //文本输入标签存值
+export const DEL_CURRENT = 'DEL_CURRENT';     //backspace删除
 

+ 1 - 0
src/store/types/mainSuit.js

@@ -21,3 +21,4 @@ export const SETTEXTMODEVALUE = 'SET_TEXT_MODE_VALUE';  //文本模式下输入
 export const SETMAINTEXT = 'SETMAINTEXT';  //模板下输入值
 export const MAINADDLABELITEM = 'MAIN_ADD_LABEL_ITEM';      //带加号的标签复制
 export const SETMAININPUT = 'SET_MAIN_INPUT_LABEL';     //文本输入标签存值
+export const DEL_MAIN = 'DEL_MAIN';     //文本输入标签存值

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

@@ -15,4 +15,5 @@ export const SETTEXTMODEVALUE = 'SET_OTHER_TEXT_MODE_VALUE';  //文本模式下
 export const OTHER_FOCUS_INDEX = 'other_focus_text_index';
 export const OTHERHIS_CLEAR = 'OTHERHIS_CLEAR';  //清空搜索值
 export const OTHERADDLABELITEM = 'other_add_label_item';    //带加号的标签复制
-export const OTHEREDICLEAR = 'OTHEREDICLEAR';    //文本框是否可以编辑
+export const OTHEREDICLEAR = 'OTHEREDICLEAR';    //文本框是否可以编辑
+export const DEL_OTHERHIS = 'DEL_OTHERHIS';    //backspace

+ 3 - 3
src/utils/ajax.js

@@ -51,7 +51,7 @@ const post=(url,data)=>{
 
   return axios({
     method:'post',
-    url:url,
+    url:host+url,
     data
   });
 };
@@ -62,7 +62,7 @@ const json=(url,data)=>{
   return new Promise((resolve,reject)=>{
     $.ajax({
       method:'post',
-      url:'http://192.168.2.236:5050'+url,
+      url:host+url,
       data:JSON.stringify(data),
       contentType:"application/json; charset=UTF-8",
       success:function(res){
@@ -76,7 +76,7 @@ const json=(url,data)=>{
 };
 
 const get=(url)=>{
-  return axios.get(url).then(data=>data.data);
+  return axios.get(host+url).then(data=>data.data);
 };
 
 module.exports={

+ 2 - 1
src/utils/config.js

@@ -1,5 +1,6 @@
 // const host='http://192.168.3.100:5050';//王峰
-const host='http://192.168.2.236:5050';//后端接口访问地址
+const host='http://192.168.2.241:5050';//后端接口访问地址
+// const host='http://192.168.2.236:5050';//后端接口访问地址
 //const host='http://192.168.2.164:8080';
 // const host='http://192.168.3.117:8080'; //周铁刚
 // const newIcssVisitUrl = '223.93.170.82:13000';    //icss服务访问地址(跳转目的地),不能加http://