Ver código fonte

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

zhouna 6 anos atrás
pai
commit
78fe295b3e

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

@@ -40,7 +40,15 @@ class EditableSpan extends Component{
   }
   handleFocus(e){
     e.stopPropagation();
-    const {setFocusIndex,i,boxMark}= this.props;
+    const {mainSaveText,full,setFocusIndex,i,boxMark,value}= this.props;
+    let mainText = filterDataArr(mainSaveText);//主诉字数
+    if(+boxMark==3||+boxMark==4){         //主诉为空,且第一次聚焦其他史查体时提示且不可输入
+      if(!mainText&&full&&(value===''||value===undefined)){
+        Notify.error("无法操作,请先输入主诉");
+        e.target.blur();
+        return ;
+      }
+    }
     let text = e.target.innerText;
     setFocusIndex&&setFocusIndex({i,boxMark,dom:this.$span});
     this.setState({
@@ -136,9 +144,6 @@ class EditableSpan extends Component{
     const ev = e||window.event;
     const target = ev.target||ev.srcElement;
     let innerVal = target.innerText;
-    /*if(this.props.full){
-      return false;
-    }*/
     //禁止回车事件
     if(ev.keyCode==13){return false;}
     //backspace事件

+ 1 - 0
src/common/components/EditableSpan/index.less

@@ -12,6 +12,7 @@
 }
 .full{
   width: 100%;
+  line-height: 100%;
 }
 .unselect{
   color: @placeholder-color;

+ 3 - 7
src/components/CheckBody/index.jsx

@@ -75,15 +75,11 @@ class CheckBody extends Component{
   }
   getData(){
     //第一次聚焦查体时,主诉有数据则调接口,主诉无数据则显示提示;其他时间查体模板数据不调接口
-    const {hasMain,saveText,data,isEmpty} = this.props;
-    const hasData = saveText.join("")||data.length>0;
+    const {hasMain,isEmpty} = this.props;
 
-    if(!hasMain&&isEmpty){          //无主诉且本身无数据时,点击提示(空白页、清空)
-      Notify.error("无法操作,请先输入主诉");
-      return ;
-    }
+    //无主诉提示在EditableSpan里
     //有主诉时且本身无数据,第一次点击获取数据,(不论获取成功与否)再点击不获取(直到刷新成空白页或清空)
-    if(hasMain&&isEmpty!=false&&!hasData){
+    if(hasMain&&isEmpty!=false){
       this.props.getInit();
     }
   }

+ 11 - 39
src/components/OtherHistory/index.jsx

@@ -4,7 +4,6 @@ import chooseType from '@containers/eleType.js';
 import SearchDrop from '@components/SearchDrop';
 import {filterDataArr,getPageCoordinate,windowEventHandler} from '@utils/tools'
 import $ from 'jquery';
-import style from './index.less';
 
 class OtherHistory extends Component{
   constructor(props){
@@ -21,11 +20,6 @@ class OtherHistory extends Component{
     this.handleSearchSelect = this.handleSearchSelect.bind(this);
     this.getData = this.getData.bind(this);
   }
-  toggleEditable(){
-    this.setState({
-      boxEditable:!this.state.boxEditable
-    })
-  }
   handleSearchSelect(obj){
     const {questionId,name} = obj;
     const {fetchModules,focusTextIndex,span,searchInEnd} = this.props;
@@ -39,26 +33,16 @@ class OtherHistory extends Component{
     });
     return list;
   }
-  /*handleInput(e){   console.log(221)  //主诉未填无法输入
-    const {type,hasMain} = this.props;
-    if(+type===0&&!hasMain){
-      e.target.innerText='';
-    }
-  }*/
   getData(){
     //第一次聚焦其他史时,主诉有数据则获取最近一次其他史记录(没有的话显示初始模板),主诉无数据则显示提示;其他时间其他史模板数据不调接口
-    const {hasMain,type,setInitData,data,saveText,changeEditClear} = this.props;
-    const hasData = saveText.join("")||data.length>0;
-    if(hasData){      //其他史已有数据不获取
-      return;
-    }
-    if(+type===0&&!hasMain){
-      document.activeElement.blur();        //修改第一次提示后不再提示bug
-      Notify.error("无法操作,请先输入主诉");
-      return;
-    }
+    const {hasMain,type,setInitData,isEmpty} = this.props;
+
+    //无主诉提示在EditableSpan里
     //智能模式有主诉或者文本模式获取最近历史
-    setInitData();
+    if((+type===0&&hasMain&&isEmpty!=false)||+type===1){
+      setInitData();
+    }
+
   }
   handleClick(e){//让搜索框跟随鼠标点击移动
     //e.stopPropagation();
@@ -66,7 +50,7 @@ class OtherHistory extends Component{
     //fetchPushInfos&&fetchPushInfos();
     //若使用e.target,因为是onClick事件中,值可能是itembox的而不是span因此会有bug
     const ele = document.activeElement;
-
+    this.getData();
     if(ele.toString().indexOf('HTMLSpanElement') == -1){     //点击的不是span无法聚焦就不再设置位置
       return;
     }
@@ -85,21 +69,9 @@ class OtherHistory extends Component{
       })
     },$("#addScrollEvent")[0])
   }
-  /*componentWillReceiveProps(next){
-    const isRead = this.props;
-    this.setState({
-      isRead:next.isRead !== isRead
-    });
-  }
-  componentDidMount(){
-    const {setInitData} = this.props;
-    setInitData&&setInitData();
-  }*/
   render(){
-    const {data,hasMain,searchData,totalHide,showArr,focusTextIndex,isRead,type,fetchPushInfos,handleInput,saveText,editClear} = this.props;
-    const {boxTop,boxLeft,boxMark} = this.state;
-    const hasData = saveText.join("")||data.length>0;
-    const show = showArr&&showArr[boxMark+focusTextIndex+'0'];
+    const {hasMain,searchData,totalHide,isRead,type,fetchPushInfos,handleInput,saveText} = this.props;
+    const {boxTop,boxLeft} = this.state;
     if(+type===1){      //文本模式
       return <Textarea title='其他史' boxMark='3'
                        isRead={isRead}
@@ -110,7 +82,7 @@ class OtherHistory extends Component{
                        hasMain={hasMain}/>;
     }
     return  <div>
-      <ItemBox title='其他史' editable={hasData?false:true} isRead={isRead} handleClick={this.handleClick} handleFocus={this.getData}>
+      <ItemBox title='其他史' isRead={isRead} handleClick={this.handleClick}>
         {this.getLabels()}
         {searchData && searchData.length>0?<SearchDrop data={searchData} show={!totalHide} left={boxLeft} top={boxTop} onSelect={this.handleSearchSelect}></SearchDrop>:''}
       </ItemBox>

+ 3 - 1
src/containers/OtherHistory.js

@@ -13,6 +13,7 @@ function mapStateToProps(state){
   const hasMain = filterDataArr(mainSuit.saveText);//||mainSuit.data.length;
   return {
     data: otherHistory.data,
+    isEmpty:otherHistory.isEmpty,
     //initData:state.homePage.initData.otherHis,
     update:otherHistory.update,   //用于触发更新
     showArr:homePage.showDrop,
@@ -44,7 +45,8 @@ function mapDispatchToProps(dispatch,store){
         dispatch({
           type:SETDATA,
           data:listObj.newArr,
-          save:listObj.saveText
+          save:listObj.saveText,
+          isEmpty:false
         });
         dispatch({
           type:ISREAD

+ 9 - 3
src/containers/eleType.js

@@ -124,7 +124,7 @@ function multCheckLabels(params,tagType){
 }
 
 export default function(params){
-  const data = params.item;
+  const data = params.item;console.log(params)
   switch (+data.tagType) {
     case 1:
     case 5:
@@ -139,9 +139,15 @@ export default function(params){
     case 6:
       return multCheckLabels(params,data.tagType);
     case 8:
-      // return <EditableSpan {...params} value={data.value||data.name} update={Math.random()}/>;
+      let isLast = false;
+      if(+params.boxMark===3||+params.boxMark === 4){
+        //其他史查体删到只剩最后一个自由文本标签时,该标签宽度100%,解决落关标文本
+        if(params.saveText.length==1&&+data.tagType===8){
+          isLast = true;
+        }
+      }
       // 删除后value为空,应展示空而不是name
-      return <EditableSpan {...params} value={data.value||data.value==''?data.value:data.name} full={data.full}/>;
+      return <EditableSpan {...params} value={data.value||data.value==''?data.value:data.name} full={data.full||isLast}/>;
     case 11://推送类型
       return multCheckLabels(params,data.tagType);
     default:

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

@@ -7,7 +7,7 @@ export function set(state,action){
   res.data = [...data];
   res.saveText = fullfillText(res.data).saveText;//存逗号
   res.update = Math.random();
-  res.isEmpty = false;
+  res.isEmpty = action.isEmpty;
   return res;
 }
 //多选标签选中确定处理

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

@@ -264,6 +264,7 @@ export function clearOtherHistory(state,action){       //清空数据
     res.saveText = action.saveText;
     res.selecteds = action.selecteds;
     res.editClear = action.editClear;
+    res.isEmpty = action.isEmpty;
     return res;
   }
 //文本模式下值保存

+ 1 - 1
src/store/async-actions/fetchModules.js

@@ -116,7 +116,7 @@ export function getInitData(){
         dispatch({
           type:SET,
           data:[block],
-          isEmpty:false
+          isEmpty:true
         });
         Notify.error(res.data.msg);
       }

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

@@ -6,9 +6,9 @@ import {set,setNumberValue,setRadioValue,setCheckBoxValue,addLabelItem,setCheckT
   changeNumLabelVal,confirm,multipleComfirn} from '../actions/checkBody.js';
 import config from '@config/index.js';
 
-//const block = Object.assign(JSON.parse(config.textLabel),{full:false});//空白时保留一个自由文本标签
+const block = Object.assign(JSON.parse(config.textLabel),{full:true});//空白时保留一个自由文本标签
 const initState = {
-                data:[],
+                data:[block],
                 saveText:[],    //saveText为生成的纯文本
                 searchData:[],
                 selecteds:[],

+ 4 - 1
src/store/reducers/otherHistory.js

@@ -1,8 +1,10 @@
 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,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';
+import config from '@config/index.js';
 
-const initState = {data:[],saveText:[],selecteds:[],focusIndex:'',editClear:true};/*mockData.OtherHis.moduleDetailDTOList;[
+const block = Object.assign(JSON.parse(config.textLabel),{full:true});//空白时保留一个自由文本标签
+const initState = {data:[block],isEmpty:true,saveText:[],selecteds:[],focusIndex:'',editClear:true};/*mockData.OtherHis.moduleDetailDTOList;[
     mockData.radioData,
     mockData.inputData,
     mockData.spreadData,
@@ -16,6 +18,7 @@ export default function(state=initState,action){//console.log(state)
     case SETDATA:
       res.data = action.data;
       res.saveText = action.save||[];
+      res.isEmpty = action.isEmpty;
       return res;
     case SETRADIO:
       return setRadioValue(state,action);

+ 4 - 3
src/utils/tools.js

@@ -229,10 +229,11 @@ const getAllDataStringList =(baseList) =>{           //获取所有模块文本
  */
 const pushAllDataList =(whichSign,action,reData,type) =>{           //回读清空所有的数据
     if(action == 'clear'){     //清空
-        store.dispatch({type: CLEAR_MAIN_SUIT,data:[],saveText:[],selecteds:[],editClear:true,mainIds:[]});
+      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_CURRENT_ILL,data:[],saveText:[],selecteds:[],editClear:true,symptomIds:[]});
-        store.dispatch({type: CLEAROTHERHISTORY,data:[],saveText:[],selecteds:[],editClear:true});
-        store.dispatch({type: CLEARCHECKBODY,data:[],isEmpty:true,saveText:[],selecteds:[]});
+        store.dispatch({type: CLEAROTHERHISTORY,data:[block],isEmpty:true,saveText:[],selecteds:[],editClear:true});
+        store.dispatch({type: CLEARCHECKBODY,data:[block],isEmpty:true,saveText:[],selecteds:[]});
         store.dispatch(clearAssistData([],''));
         store.dispatch(clearAllLabel([],[],''));
         store.dispatch({