浏览代码

其他史查体提示优化,未获取到数据的情况优化

zhouna 6 年之前
父节点
当前提交
333360a864

+ 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();
     }
   }

+ 10 - 23
src/components/OtherHistory/index.jsx

@@ -47,18 +47,15 @@ class OtherHistory extends Component{
   }*/
   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;
+
+    console.log(this.props)
+    //无主诉提示在EditableSpan里
     //智能模式有主诉或者文本模式获取最近历史
-    setInitData();
+    if((+type===0&&hasMain&&isEmpty!=false)||+type===1){
+      setInitData();
+    }
+
   }
   handleClick(e){//让搜索框跟随鼠标点击移动
     //e.stopPropagation();
@@ -66,7 +63,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,16 +82,6 @@ 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;
@@ -110,7 +97,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

+ 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({