Pārlūkot izejas kodu

Merge branch 'dev/new1' into dev/zhangxc1

zhangxc 6 gadi atpakaļ
vecāks
revīzija
d46dbe3c26

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

@@ -96,7 +96,8 @@ class EditableSpan extends Component{
       temp = newText.replace(searchPre,'');
       isEnd = !(newText.indexOf(searchPre)>0);
       search = temp.replace(/[(^\s*)|(\s*$)|(^\,*)|(\,*$)]/g,'');
-      if(!search&&searchPre){
+      // if(!search&&searchPre){
+      if(!temp&&searchPre){
         search = searchPre;
       }
       //console.log(labelVal,'旧:',searchPre,'新:',newText,'搜索:',search);

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

@@ -23,6 +23,7 @@
     padding:5px;
     outline: none;
     border-bottom:1px @part-border-color dashed;
+    word-break: break-all;
     textarea{
       width: 100%;
     }

BIN
src/common/images/loading.gif


+ 10 - 13
src/components/AddAssistCheck/Textarea/index.jsx

@@ -13,7 +13,6 @@ class Textarea extends Component {
     this.$dom = React.createRef();
     this.$domW = React.createRef();
     this.handleInput = this.handleInput.bind(this);
-    this.handleFocus = this.handleFocus.bind(this);
     this.handleBlur = this.handleBlur.bind(this);
   }
   handleInput(e){
@@ -28,9 +27,9 @@ class Textarea extends Component {
       clearTimeout(stimer);
     },config.delayPushTime);
     if(text.trim() != ''){
-      this.setState({val:''})
+      e.target.nextSibling.innerText = ''
     }else{
-      this.setState({val:'报告描述或意见'})
+      e.target.nextSibling.innerText = '报告描述或意见'
     }
     this.setState({
       timer
@@ -48,38 +47,36 @@ class Textarea extends Component {
       this.$dom.current.innerText = next.value||'';
     }
     if(next.value && next.value.trim() != ''){
-      $("#textareaWarring").html('')
+      this.$dom.current.nextSibling.innerText = ''
     }
   }
   componentDidMount(){
     const {value} = this.props;
     if(value){
       this.$dom.current.innerText = value||'';
-      this.setState({val:''})
+      this.$dom.current.nextSibling.innerText = '';
+    }else{
+      this.$dom.current.nextSibling.innerText = '报告描述或意见'
     }
   }
-  handleFocus(e){
-    this.setState({val:''})
-  }
   handleBlur(e){
-    let str = this.$dom.current.innerText
+    let str = e.target.innerText
     if(str.trim() == ''){
-      this.setState({val:'报告描述或意见'})
+      e.target.nextSibling.innerText = '报告描述或意见'
     }
   }
   render() {
-    const {val} = this.state;
+    const {idx} = this.props;
     return (
       <div className={style.textWap}>
         <div className={style.divTextarea}
             contenteditable={true}
             ref={this.$dom}
             onInput={this.handleInput}
-            onFocus={this.handleFocus}
             onBlur={this.handleBlur}
             onPropertyChange={this.handleInput}
         ></div>
-        <p className={style.textareaWarring} id="textareaWarring">{val}</p>
+        <p style={{position: "absolute",left: '0',top: '0',color: "#a5a3a3",zIndex: '5'}} className="textareaWarring"></p>
       </div>
     );
   }

+ 1 - 0
src/components/AddAssistCheck/Textarea/index.less

@@ -12,6 +12,7 @@
   font-family: inherit;
   position: relative;
   z-index: 10;
+  word-break: break-all;
 }
 .textWap {
   overflow: hidden;

+ 3 - 0
src/components/NumberDrop/index.jsx

@@ -81,6 +81,9 @@ class NumberDrop extends Component{
   }
   numInpBlur(e){        //数字框失焦,保存值到store中
     e.stopPropagation();
+    if(this.props.show){      //修改清空后第一次点击键盘不触发click事件bug
+      return;
+    }
     this.setState({
       hasSelect:false
     });

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

@@ -84,6 +84,7 @@ class Operation extends Component {
   keepHistory(){
     let baseList = store.getState();
     let jsonStr = getAllDataStringList(baseList);
+    console.log(jsonStr)
     if(filterDataArr(JSON.parse(jsonStr.chief)) == ''){
         Notify.info('主诉不能为空');
         return false;

+ 9 - 9
src/components/PreviewBody/index.jsx

@@ -150,7 +150,7 @@ class PreviewBody extends Component {
         </table>
         <table style={{ width: "100%", borderCollapse: 'collapse' }}>
           <tr style={{ verticalAlign: 'top', borderBottom: "1px solid #e2e4e6" }}>
-            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px' }}>主诉:</td>
+            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px',width:'70px' }}>主诉:</td>
             <td style={{ fontSize: '14px', padding: '9px 0px 8px 0px', lineHeight: '20px' }}>
               {
                 filterDataArr(JSON.parse(dataStr.chief))
@@ -158,7 +158,7 @@ class PreviewBody extends Component {
             </td>
           </tr>
           <tr style={{ verticalAlign: 'top', borderBottom: "1px solid #e2e4e6" }}>
-            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px' }}>现病史:</td>
+            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px',width:'70px' }}>现病史:</td>
             <td style={{ fontSize: '14px', padding: '9px 0px 8px 0px', lineHeight: '20px' }}>
               {
                 filterDataArr(JSON.parse(dataStr.present))
@@ -166,7 +166,7 @@ class PreviewBody extends Component {
             </td>
           </tr>
           <tr style={{ verticalAlign: 'top', borderBottom: "1px solid #e2e4e6" }}>
-            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px' }}>其他史:</td>
+            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px',width:'70px' }}>其他史:</td>
             <td style={{ fontSize: '14px', padding: '9px 0px 8px 0px', lineHeight: '20px' }}>
               {
                 filterDataArr(JSON.parse(dataStr.other))
@@ -174,7 +174,7 @@ class PreviewBody extends Component {
             </td>
           </tr>
           <tr style={{ verticalAlign: 'top', borderBottom: "1px solid #e2e4e6" }}>
-            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px' }}>查体:</td>
+            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px',width:'70px' }}>查体:</td>
             <td style={{ fontSize: '14px', padding: '9px 0px 8px 0px', lineHeight: '20px' }}>
               {
                 filterDataArr(JSON.parse(dataStr.vital))
@@ -182,7 +182,7 @@ class PreviewBody extends Component {
             </td>
           </tr>
           <tr style={{ verticalAlign: 'top', borderBottom: "1px solid #e2e4e6" }}>
-            <td style={{ width: 70, textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px' }}>化验:</td>
+            <td style={{ width: 70, textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px',width:'70px' }}>化验:</td>
             <td style={{ fontSize: '14px', padding: '4px 0px 8px 0px', lineHeight: '20px', maxWidth: '650px' }}>
               {
                 dataJson.lis.getExcelDataList && dataJson.lis.getExcelDataList.map((items) => {
@@ -231,17 +231,17 @@ class PreviewBody extends Component {
             </td>
           </tr>
           <tr style={{ verticalAlign: 'top', borderBottom: "1px solid #e2e4e6" }}>
-            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px' }}>辅检:</td>
+            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px',width:'70px' }}>辅检:</td>
             <td style={{ fontSize: '14px', padding: '9px 0px 8px 0px', lineHeight: '20px' }}>
               {
                 dataStr.pacs && dataStr.pacs != '' && dataStr.pacs.split(';').map((item) => {
-                  return <div style={{ fontSize: '14px' }}>{item}</div>
+                  return <div style={{ fontSize: '14px',wordBreak:"break-all" }}>{item}</div>
                 })
               }
             </td>
           </tr>
           <tr style={{ verticalAlign: 'top', borderBottom: "1px solid #e2e4e6" }}>
-            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px' }}>诊断:</td>
+            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px',width:'70px' }}>诊断:</td>
             <td style={{ fontSize: '14px', padding: '9px 0px 8px 0px', lineHeight: '20px' }}>
               {
                 dataStr.diag && dataStr.diag != '' && dataStr.diag.split(';').map((item) => {
@@ -251,7 +251,7 @@ class PreviewBody extends Component {
             </td>
           </tr>
           <tr style={{ verticalAlign: 'top', borderBottom: "1px solid #e2e4e6" }}>
-            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px' }}>医嘱:</td>
+            <td style={{ textAlign: 'right', padding: '9px 5px 8px 0px', fontSize: '14px',width:'70px' }}>医嘱:</td>
             <td style={{ fontSize: '14px', padding: '1px 0px 8px 0px', lineHeight: '20px' }}>
               {
                 dataJson.advice.assay && dataJson.advice.assay.length > 0 || dataJson.advice.check && dataJson.advice.check.length > 0 ? <p style={{ fontSize: '14px', marginBottom: "8px" }}><span>开单项目</span></p> : ''

+ 2 - 1
src/components/SearchDrop/index.jsx

@@ -47,6 +47,7 @@ class SearchDrop extends Component{
   }
 
   handleSelect(e,item){
+    // onClick事件换成onmouseup--点击清除后谷歌下搜索结果点击不上去的情况
     e.stopPropagation();
     const {onSelect,onShow} = this.props;
     onSelect&&onSelect(item);
@@ -60,7 +61,7 @@ class SearchDrop extends Component{
         <ul>
           {this.props.data&&this.props.data.map((it)=>{
             litext = it.showType==1?it.name:it.name+'('+it.retrievalName+')';
-            return <li onClick={(e)=>this.handleSelect(e,it)} title={litext}>{litext}</li>
+            return <li onmouseup={(e)=>this.handleSelect(e,it)} title={litext}>{litext}</li>
           })}
         </ul>
       </div>

+ 2 - 2
src/config/index.js

@@ -30,8 +30,8 @@ export default {
     delayTime:500,      //延迟搜索的时间
     delayPushTime:1000,    //延迟推送时间
     pushDelay:1000,
-    punctuationReg:/[^,,.。::"“?”;;、!!]/g,       //正则表达式,全局查找不是括号内标点的字符
-    punReg:/[,,.。::"“?”;;、!!]+/g,
+    punctuationReg:/[^,,.。::"“??”;;、!!]/g,       //正则表达式,全局查找不是括号内标点的字符
+    punReg:/[,,.。::"“??”;;、!!]+/g,
     currentText:"患者XX因XX诊断为(**),经XX治疗后,目前XX症状已缓解,仍有XX,各项指标情况:XX,辅助检查:XX。今来复诊,进一步治疗",
     timeUnit:{
       minute:"分",

+ 6 - 1
src/modules/HomePage/index.jsx

@@ -9,6 +9,7 @@ import style from './index.less';
 /*import {getInitModules} from '@store/async-actions/homePage.js';*/
 import { getUrlArgObject } from "@utils/tools";
 import $ from 'jquery';
+import loading from '@common/images/loading.gif';
 class HomePage extends Component {
     constructor() {
         super();
@@ -40,17 +41,21 @@ class HomePage extends Component {
 
     }
     render() {
+        const {flag} = this.props;
         return <div className={style['home-page']} onClick={this.props.hideAllDrop}>
             <BannerContainer />
             {/* <InfoTitle /> */}
             <BodyContainer></BodyContainer>
+            <div className={style['mask']} style={{display:flag?"block":"none"}}>
+                <img src={loading} className={style['load']}/>
+            </div>
         </div>;
     }
 }
 
 const mapStateToProps = function (state) {
   return {
-
+    flag:state.homePage.loadingFlag
   }
 };
 const mapDispatchToProps = function (dispatch) {

+ 19 - 0
src/modules/HomePage/index.less

@@ -0,0 +1,19 @@
+.mask {
+    position: fixed;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background: #000;
+    opacity: .4;
+    filter:alpha(opacity=40);
+    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=40);";
+    z-index: 9998;
+}
+.load{
+    position: absolute;
+    top: 50%;
+    left:50%;
+    margin-top: -64px;
+    margin-left: -64px;
+}

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

@@ -548,7 +548,7 @@ export const clearMainSuit = (state,action)=>{//回读和清除
   if(action.editClear){
     res.editClear = action.editClear;
   }
-  if(res.data.length>0){//回读
+  if(res.data.length > 0){//回读
     res.editClear = false;
   }
   return res;

+ 23 - 23
src/store/actions/patInfo.js

@@ -1,29 +1,29 @@
 export const updatePatientMessage=(state,action)=>{
     const res=Object.assign({},state);
     const mock = {
-      doctorCode: "YS001",
-      doctorId: 1,
-      doctorName: "付",
-      hospitalCode: "A001",
-      hospitalDeptCode: "D01",
-      hospitalDeptId: 1,
-      hospitalDeptName: "全科",
-      hospitalId: 1,
-      hospitalName: "浙二医院",
-      modeClassify: 0,
-      modeValue: 1,
-      patientAge: 25,
-      patientCode: "1600",
-      patientId: 1,
-      patientIdNo: "9696969",
-      patientName: "沈强",
-      patientSex: "女",
-      recordId: "44",
-      selfDeptId: 5,
-      systemTime: "2018-12-20 11:52",
-      idNo: "9696969",
-      name: "沈强",
-      sex: 2
+      // doctorCode: "YS001",
+      // doctorId: 1,
+      // doctorName: "付",
+      // hospitalCode: "A001",
+      // hospitalDeptCode: "D01",
+      // hospitalDeptId: 1,
+      // hospitalDeptName: "全科",
+      // hospitalId: 1,
+      // hospitalName: "浙二医院",
+      // modeClassify: 0,
+      // modeValue: 1,
+      // patientAge: 25,
+      // patientCode: "1600",
+      // patientId: 1,
+      // patientIdNo: "9696969",
+      // patientName: "沈强",
+      // patientSex: "女",
+      // recordId: "44",
+      // selfDeptId: 5,
+      // systemTime: "2018-12-20 11:52",
+      // idNo: "9696969",
+      // name: "沈强",
+      // sex: 2
     };
     res.message = action.data;
     if(!action.data.selfDeptId){

+ 24 - 6
src/store/async-actions/fetchModules.js

@@ -71,16 +71,34 @@ export const getOtherHisRecord = ()=>{
         const objStr = JSON.parse(data.otherStr||'[]');
         let arr = [];
         if((!obj||!obj.other||obj.other.length==0)&&!objStr[0]){        //无其他史历史记录用默认模板
+          if(mode=='1'){      //文本模式
+            dispatch({
+              type:SETOTHERHISTORY,
+              data:[],
+              selecteds:[],
+              save:[]
+            });
+          }
+
           //console.log('其他史最近数据无')
           //arr = state.homePage.initData.otherHis;
         }else{
           arr = obj.other;
-          dispatch({
-            type:SETOTHERHISTORY,
-            data:arr,
-            selecteds:obj.otherHistorySelecteds,
-            save:objStr
-          });
+          if(mode =='1'){     //文本模式
+            dispatch({
+              type:SETOTHERHISTORY,
+              data:[],
+              selecteds:[],
+              save:[objStr[0]]
+            });
+          }else{
+            dispatch({
+              type:SETOTHERHISTORY,
+              data:arr,
+              selecteds:obj.otherHistorySelecteds,
+              save:objStr
+            });
+          }
         }
       }
     });

+ 3 - 17
src/store/async-actions/homePage.js

@@ -1,5 +1,5 @@
 import {post,json} from '@utils/ajax.js';
-import {SETINITDATA} from '@store/types/homePage.js';
+import {SETINITDATA,MODI_LOADING} from '@store/types/homePage.js';
 import {SET_CURRENT} from '@store/types/currentIll';
 import {SET_MAINSUIT} from '@store/types/mainSuit';
 import config from '@config/index.js';
@@ -28,6 +28,7 @@ export const getInitModules= (dispatch,getStore)=>{
   const state = getStore();
   const {message} = state.patInfo;
   return json(api.getModules,{age:message.patientAge,sexType:message.sex}).then((res) => {
+      dispatch(initHistoryDetails(message));      //历史病历回读
       if (res.data.code == '0') {
         const newObj = modulesParseJson(res.data.data);
         const initData = newObj.json;
@@ -57,25 +58,10 @@ export const getInitModules= (dispatch,getStore)=>{
           saveEmpty:initSaveText.currentEmpty,
         });
         dispatch(getOtherHisRecord());          //获取其他史最近记录
-        initHis(dispatch)
-      }else{
-        initHis(dispatch)
       }
-    }).catch(()=>{
-        initHis(dispatch)
-    });
+    })
 };
 
-export const initHis = (dispatch)=> {
-    let timer = setInterval(()=>{
-        let baseDate = store.getState();
-        if(JSON.stringify(baseDate.patInfo.message) != '{}') {
-          dispatch(initHistoryDetails(baseDate.patInfo.message));
-          clearInterval(timer)
-        }
-    },500)
-}
-
 // 埋点事件,点击保存时调用
 export const saveClickNum = (dispatch,getState)=>{
   const state = getState();

+ 3 - 1
src/store/async-actions/patInfo.js

@@ -5,7 +5,7 @@ import {getInfos} from '@store/actions/getInfoByUuid';
 import {getUrlArgObject,pushAllDataList} from '@utils/tools';
 import {getInitModules} from '@store/async-actions/homePage.js';
 import store from '@store'
-import {ISREAD} from "../types/homePage";
+import {ISREAD,MODI_LOADING} from "../types/homePage";
 import { initItemList } from '@store/async-actions/tabTemplate';
 
 const api = {
@@ -60,7 +60,9 @@ export const initHistoryDetails = (dispatch) => {
                 }else{
                   dispatch(initItemList(baseList.typeConfig.typeConfig))
                 }
+                dispatch({type:MODI_LOADING});
             } else {
+                dispatch({type:MODI_LOADING});
                 console.log(res)
             }
         })

+ 7 - 3
src/store/reducers/homePage.js

@@ -1,5 +1,5 @@
 import {HIDE,RESET,SETINITDATA,SETDROPSHOW,SETADDITEMINIT,SETT0EDIT,SETREADDITEMS,
-  HIDEDROP,CLICKCOUNT,ISREAD,SETOTHERHISTORY,SETMINSCREEN} from '../types/homePage.js';
+  HIDEDROP,CLICKCOUNT,ISREAD,SETOTHERHISTORY,SETMINSCREEN,MODI_LOADING} from '../types/homePage.js';
 import {showDrop,setAddItemInit,setLabelToEdit,confirmHide,clickNum} from '../actions/homePage.js';
 
 const initState = {
@@ -9,7 +9,8 @@ const initState = {
   focusTextIndex:'',
   clickData:[],
   addItems:{},
-  commSymHide:false
+  commSymHide:false,
+  loadingFlag:true
 };
 
 export default function (state=initState,action) {
@@ -44,7 +45,7 @@ export default function (state=initState,action) {
     case SETOTHERHISTORY:
       res.initData.otherHis = action.data;
       res.initData.otherHisSave = action.save;
-      res.initData.otherSelecteds = action.selecteds;
+      res.initData.otherSelecteds = action.selecteds||[];
       res.initData.otherIsHis = action.otherIsHis!=undefined?action.otherIsHis:true;
       return res;
     /*case SETTEXTFOCUS:
@@ -55,6 +56,9 @@ export default function (state=initState,action) {
       res.windowWidth = action.obj.width;
       res.windowHeight = action.obj.height;
       return res;
+    case MODI_LOADING:
+      res.loadingFlag = false;
+      return res;
     default:
       return res;
   }

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

@@ -17,7 +17,7 @@ export default function(state=initState,action){//console.log(state)
   switch (action.type){
     case SETDATA:
       res.data = action.data;
-      res.selecteds = action.selecteds;
+      res.selecteds = action.selecteds||[];
       res.saveText = action.save||[];
       res.isEmpty = action.isEmpty;
       return res;

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

@@ -10,4 +10,5 @@ export const HIDEDROP = 'set_box_drop_hide';//点击确定隐藏
 export const CLICKCOUNT = 'click_count';//埋点
 export const ISREAD = 'is_history_or_template';     //是否回读或模板数据
 export const SETOTHERHISTORY = 'set_otherHis_history';    //其他史历史数据暂存
-export const SETMINSCREEN = 'SETMINSCREEN';    //1024标识
+export const SETMINSCREEN = 'SETMINSCREEN';    //1024标识
+export const MODI_LOADING = 'MODI_LOADING';    //1024标识

+ 2 - 2
src/utils/tools.js

@@ -314,7 +314,7 @@ const pushAllDataList =(whichSign,action,reData,type) =>{           //回读清
             }else{    //结构化历史病历回读
                 let dataJson = JSON.parse(reData.dataJson);
                 let dataJsonStr = reData.detailList;
-                // console.log(dataJson,dataJsonStr,'结构化历史病历回读')
+                console.log(dataJson.chief,dataJsonStr[0].content,'结构化历史病历回读')
                 // console.log(dataJson.mainSuitSelecteds,7887)
                 store.dispatch({
                     type: CLEAR_MAIN_SUIT,
@@ -501,7 +501,7 @@ function filterDataArr(arrTmp){   //数据处理
 
     return tmpArr.join('').replace(config.punReg,function(word){
       return word.substr(0,1);
-    }).replace(/^[,,.。::"“?”;;、!!]+/,'');      //去掉开头的标点符号,最后的标点保留第一个,中间连续的保留第一个
+    }).replace(/^[,,.。::"“??”;;、!!]+/,'');      //去掉开头的标点符号,最后的标点保留第一个,中间连续的保留第一个
 }
 // 取消默认行为
 function preventDefault(event) {