Переглянути джерело

治疗方案一般治疗到医嘱

zhangxc 6 роки тому
батько
коміт
a58f9222a1

+ 60 - 0
src/components/Advice/Textarea/index.jsx

@@ -0,0 +1,60 @@
+import React, { Component } from "react";
+import style from "./index.less";
+import config from '@config/index';
+import $ from 'jquery';
+
+class Textarea extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      timer:null,
+      val:'报告描述或意见'
+    };
+    this.textInput = React.createRef();
+    this.$dom = React.createRef();
+    this.$domW = React.createRef();
+    this.handleInput = this.handleInput.bind(this);
+  }
+  handleInput(e){
+    e.stopPropagation();
+    const {handleChangeAssistValue,idx,handlePush} = this.props;
+    const text = e.target.innerText || e.target.innerHTML;
+    const stimer = this.state.timer;
+    handleChangeAssistValue&&handleChangeAssistValue(text);
+   
+  }
+  shouldComponentUpdate(next){
+    if(JSON.stringify(next) == JSON.stringify(this.props)){
+      return false;
+    }
+    return true;
+  }
+  componentWillReceiveProps(next){
+    const isRead = this.props.isRead;
+    if(next.isRead != isRead||next.value!=this.props.value){      //value对比解决复诊不显示bug
+      this.$dom.current.innerText?(this.$dom.current.innerText = next.value||''):(this.$dom.current.innerHTML = next.value||'');
+    }
+  }
+  componentDidMount(){
+    const {value} = this.props;
+    if(value && value.trim()){
+      this.$dom.current.innerText?(this.$dom.current.innerText = value) : (this.$dom.current.innerHTML = value)
+    //   this.$dom.current.nextSibling.innerText?(this.$dom.current.nextSibling.innerText = ''):(this.$dom.current.nextSibling.innerHTML = '')
+    }
+  }
+ 
+  render() {
+    return (
+      <div>
+        <div 
+            style={{outline: 'none'}}
+            contenteditable={true}
+            ref={this.$dom}
+            onInput={this.handleInput}
+            onKeyUp={this.handleInput}
+        ></div>
+      </div>
+    );
+  }
+}
+export default Textarea;

+ 0 - 0
src/components/Advice/Textarea/index.less


+ 40 - 5
src/components/Advice/index.jsx

@@ -1,6 +1,7 @@
 import React,{Component} from 'react';
 import style from './index.less';
 import {ItemBox} from '@commonComp';
+import Textarea from './Textarea';
 
 class Advice extends Component{
   constructor(props){
@@ -9,11 +10,26 @@ class Advice extends Component{
     this.treatInput = React.createRef();
     this.assayRef = React.createRef();
     this.checkRef = React.createRef();
+    this.adviceInputRef = React.createRef();
     this.handleTreatInput = this.handleTreatInput.bind(this);
     this.handleAssayInput = this.handleAssayInput.bind(this);
     this.handleCheckInput = this.handleCheckInput.bind(this);
+    this.handleComTreatInput = this.handleComTreatInput.bind(this);
+    this.handleAdviceInput = this.handleAdviceInput.bind(this);
   }
 
+  shouldComponentUpdate(next){
+    if(JSON.stringify(next) == JSON.stringify(this.props)){
+      return false;
+    }
+    return true;
+  }
+  componentWillReceiveProps(next){
+    const isRead = this.props.isRead;
+    // if(next.isRead != isRead||next.value!=this.props.value){      //value对比解决复诊不显示bug
+    //   this.adviceInputRef.current.innerText?(this.adviceInputRef.current.innerText = next.value||''):(this.adviceInputRef.current.innerHTML = next.value||'');
+    // }
+  }
   handleTreatInput(e, index, ii) {
     const {advice} = this.props.pushMessage;
     const changeInput = e.target.value //改变的同类药的值
@@ -33,10 +49,28 @@ class Advice extends Component{
     const { setChangeAdviceCheck } = this.props;
     setChangeAdviceCheck && setChangeAdviceCheck(changeInput)
   }
+  handleComTreatInput(text) {
+    const { comTreatChange } = this.props;
+    comTreatChange && comTreatChange(text)
+
+  }
+  handleAdviceInput(e) {
+    const { adviceInputChange } = this.props;
+    const text = e.target.innerText;
+    console.log(text)
+    adviceInputChange && adviceInputChange(text)
+
+  }
+  componentDidMount(){
+  
+    this.adviceInputRef.current.innerText?(this.adviceInputRef.current.innerText = '') : (this.adviceInputRef.current.innerHTML = '')
+  //   this.$dom.current.nextSibling.innerText?(this.$dom.current.nextSibling.innerText = ''):(this.$dom.current.nextSibling.innerHTML = '')
+  
+}
 
   render(){
     const {advice} = this.props.pushMessage;
-    let billing = ''
+    const {isRead} = this.props
 
     
 
@@ -61,16 +95,17 @@ class Advice extends Component{
             {advice.assay && <span className={style['treat-input']}> {advice.assay}</span>}
             {advice.check && <span className={style['treat-input']}> {advice.check}</span>}
         </div> */}
-        {advice.commontreatment && advice.commontreatment.length > 0 &&<div className={style['billing']} contentEditable={true} style = {{outline: 'none'}}>
+        {advice.commontreatment && advice.commontreatment.length > 0 &&<div className={style['billing']}  >
           {advice.commontreatment && advice.commontreatment.length > 0 && <h1>一般治疗</h1>}
-            {advice.commontreatment && <span  className={style['treat-input']}  >{advice.commontreatment} </span>}
+            {/* {advice.commontreatment && <div className={style['treat-input']}  onInput={this.handleComTreatInput}  contentEditable={true} style = {{outline: 'none'}}></div>} */}
+            {<Textarea value={advice.commontreatment} isRead={isRead} handleChangeAssistValue={this.handleComTreatInput} ></Textarea>}
         </div>}
         {advice.scheme && advice.scheme.length > 0 &&<div contentEditable='false' className={style['scheme']}>
           {advice.scheme && advice.scheme.length > 0  && <h1>治疗方案</h1>}
           {scheme}
         </div>}
-        <div contentEditable={true} style = {{outline: 'none'}}>
-          
+        <div className={style['billing']} ref={this.adviceInputRef} contentEditable={true} style = {{outline: 'none'}} onInput={this.handleAdviceInput} > 
+              
         </div>
       </ItemBox>
     </div>

+ 3 - 3
src/components/Advice/index.less

@@ -9,13 +9,13 @@
 .billing {
   padding: 0px 10px;
   h1{
-    margin: 10px 0px;
+    margin: 5px 0px;
   }
 }
 .scheme {
-  padding: 10px;
+  padding: 0px 10px;
   h1{
-    margin: 10px 0px;
+    margin: 5px 0px;
   }
   p{
     line-height: 18px;

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

@@ -27,7 +27,7 @@ class Treat extends Component {
         Notify.info('该功能即将上线,敬请期待。', 2000)
     }
     handleDetermine() {
-        const { title, treatment } = this.props
+        const { title, treatment, advice } = this.props
         const { addScheme } = this.props
         addScheme && addScheme(title, treatment);
         this.hideTreat()

+ 19 - 4
src/containers/AdviceContainer.js

@@ -1,10 +1,13 @@
 import React from 'react';
 import {connect} from 'react-redux';
 import Advice from '../components/Advice'
-import { SET_CHANGE_ADVICE_TREATMENT, SET_CHANGE_ADVICE_ASSAY, SET_CHANGE_ADVICE_CHECK } from '@store/types/pushMessage';
+import { SET_CHANGE_ADVICE_TREATMENT, SET_CHANGE_ADVICE_ASSAY, SET_CHANGE_ADVICE_CHECK, SET_COMMONTREATMENT ,SET_ADVICE_INPUT} from '@store/types/pushMessage';
 
-function mapStateToProps({pushMessage}) {
-    return ({pushMessage})
+function mapStateToProps(state) {
+    return ({
+        pushMessage: state.pushMessage,
+        isRead:state.homePage.isRead,
+    })
 }
 
 function mapDispatchToProps(dispatch) {
@@ -28,7 +31,19 @@ function mapDispatchToProps(dispatch) {
                 type: SET_CHANGE_ADVICE_CHECK,
                 changeInput:changeInput
             })
-        }
+        },
+        comTreatChange: (text) => {
+            dispatch({
+                type: SET_COMMONTREATMENT,
+                commontreatment: text,
+            })
+        },
+        adviceInputChange: (text) => {
+            dispatch({
+                type: SET_ADVICE_INPUT,
+                adviceInput: text,
+            })
+        },
     }
 }
 

+ 1 - 0
src/containers/Treat.js

@@ -18,6 +18,7 @@ function mapStateToProps(state){
         showDrug: treat.showDrugInfo,
         treatItem: treat.treatItem,
         drugInfoList: treat.drugInfoList,   //药品说明书列表(查询多个药品说明书)
+
     }
 }
  

+ 6 - 0
src/store/actions/pushMessage.js

@@ -236,4 +236,10 @@ export const setCommontreatment = (state, action) => {
 	const res = JSON.parse(JSON.stringify(state));
 	res.advice.commontreatment = action.commontreatment;
 	return res;
+}
+
+export const setAdviceInput = (state, action) => {
+	const res = JSON.parse(JSON.stringify(state));
+	res.advice.adviceInput = action.adviceInput;
+	return res;
 }

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

@@ -1,5 +1,5 @@
-import {CHANGE_ASSAY, CHANGE_CHECK, BILLING_ADVICE, ADD_SCHEME, SET_TIPS,  SET_TIPS_DETAILS, SET_CHANGE_ADVICE_TREATMENT, SET_CHANGE_ADVICE_ASSAY, SET_CHANGE_ADVICE_CHECK, ADD_BILLING,CLEAR_ALL_PUSH_MESSAGE,SHOW_TIPS_DETAILS, HIDE_TIPS_DETAILS, SET_COMMONTREATMENT, IS_FIRST_MAIN_DIAG } from '../types/pushMessage';
-import {changeAssay, changeCheck, setAdvice, addScheme, setTips, setTipsDetails, setChangeAdviceTreatment, setChangeAdviceAssay, setChangeAdviceCheck, addBilling, clearAllPushMessage, showTipsDetails, hideTipsDetails, setCommontreatment, isFirstMainDiag } from '../actions/pushMessage';
+import {CHANGE_ASSAY, CHANGE_CHECK, BILLING_ADVICE, ADD_SCHEME, SET_TIPS,  SET_TIPS_DETAILS, SET_CHANGE_ADVICE_TREATMENT, SET_CHANGE_ADVICE_ASSAY, SET_CHANGE_ADVICE_CHECK, ADD_BILLING,CLEAR_ALL_PUSH_MESSAGE,SHOW_TIPS_DETAILS, HIDE_TIPS_DETAILS, SET_COMMONTREATMENT, IS_FIRST_MAIN_DIAG, SET_ADVICE_INPUT } from '../types/pushMessage';
+import {changeAssay, changeCheck, setAdvice, addScheme, setTips, setTipsDetails, setChangeAdviceTreatment, setChangeAdviceAssay, setChangeAdviceCheck, addBilling, clearAllPushMessage, showTipsDetails, hideTipsDetails, setCommontreatment, isFirstMainDiag, setAdviceInput } from '../actions/pushMessage';
 
 const initState = {
   vigilant: [],
@@ -50,6 +50,8 @@ export default function(state = initState, action) {
       return setCommontreatment(state, action);
     case IS_FIRST_MAIN_DIAG:
       return isFirstMainDiag(state, action);
+    case SET_ADVICE_INPUT:
+      return setAdviceInput(state, action)
     default:
       return state;
   }

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

@@ -13,6 +13,7 @@ export const SET_CHANGE_ADVICE_CHECK = 'SET_CHANGE_ADVICE_CHECK';   //改变医
 export const CLEAR_ALL_PUSH_MESSAGE = 'CLEAR_ALL_PUSH_MESSAGE';   //清除所有推送信息
 export const SHOW_TIPS_DETAILS = 'SHOW_TIPS_DETAILS'; //显示提示详情页
 export const HIDE_TIPS_DETAILS = 'HIDE_TIPS_DETAILS'; //显示提示详情页
-export const SET_COMMONTREATMENT = 'SET_COMMONTREATMENT'
+export const SET_COMMONTREATMENT = 'SET_COMMONTREATMENT'    //设置常见治疗
+export const SET_ADVICE_INPUT = 'SET_ADVICE_INPUT'  //设置医嘱自由输入内容