Browse Source

设置项配置

zhouna 5 years ago
parent
commit
cf1bbca45d

+ 32 - 17
src/components/Banner/ModeChange/index.jsx

@@ -2,8 +2,11 @@ import React, { Component } from "react";
 import style from "./index.less";
 import ReactDom from "react-dom";
 import close from '@images/icon_close.png';
-import sopen from '@images/btn-open.png'
-import sclose from '@images/btn-closed.png'
+import sopen from '@images/btn-open.png';
+import sclose from '@images/btn-closed.png';
+import radio_off from '@images/icon-radio-default.png';
+import radio_on from '@images/icon-radio-active.png';
+
 
 class ModeChange extends Component {
     constructor(props){
@@ -16,9 +19,13 @@ class ModeChange extends Component {
         return hideBtn?'':style['fade'];
     }
     render(){
-        const {closeConfigModal, changeType, confirmType, mode,hideBtn} = this.props;
+        const {closeConfigModal, changeType, confirmType, config0,config1,config2,config3,config4,hideBtn} = this.props;
         const domNode = document.getElementById('root');
-        const isOpen = +mode===0;
+        const isOpen = +config0===0;
+        const general = +config1===0;
+        const ohis = +config2===0;
+        const fontsize = +config3===0;
+        const color = +config4===0;
         return ReactDom.createPortal(<React.Fragment>
             <div className={style['modal']}>
               <div className={style['shade']} onClick={closeConfigModal}></div>
@@ -27,37 +34,45 @@ class ModeChange extends Component {
                 <div className={style["oper"]}>
                     <p className={this.getStyle()}>
                       <span>开启模板智能推送:</span>
-                      <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType(isOpen?'1':'0'):null}>
+                      <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType('config0',isOpen?'1':'0'):null}>
                         <img src={isOpen?sopen:sclose} alt=""/>
                         {isOpen?'开':'关'}
                         </a>
                     </p>
                   <p className={this.getStyle()}>
                     <span>开启一般情况默认值:</span>
-                    <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType(isOpen?'1':'0'):null}>
-                      <img src={isOpen?sopen:sclose} alt=""/>
-                      {isOpen?'开':'关'}
+                    <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType('config1',general?'1':'0'):null}>
+                      <img src={general?sopen:sclose} alt=""/>
+                      {general?'开':'关'}
                     </a>
                   </p>
                   <p className={this.getStyle()+" "+style['big-marb']}>
                     <span>开启开启其他史默认值:</span>
-                    <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType(isOpen?'1':'0'):null}>
-                      <img src={isOpen?sopen:sclose} alt=""/>
-                      {isOpen?'开':'关'}
+                    <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType('config2',ohis?'1':'0'):null}>
+                      <img src={ohis?sopen:sclose} alt=""/>
+                      {ohis?'开':'关'}
                     </a>
                   </p>
                   <p className={this.getStyle()}>
                     <span>默认字体大小:</span>
-                    <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType(isOpen?'1':'0'):null}>
-                      <img src={isOpen?sopen:sclose} alt=""/>
-                      {isOpen?'开':'关'}
+                    <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType('config3','0'):null}>
+                      <img src={fontsize?radio_on:radio_off} alt=""/>
+                      标准
+                    </a>
+                    <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType('config3','1'):null}>
+                      <img src={fontsize?radio_off:radio_on} alt=""/>
+                      增大
                     </a>
                   </p>
                   <p className={this.getStyle()}>
                     <span>默认字体颜色:</span>
-                    <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType(isOpen?'1':'0'):null}>
-                      <img src={isOpen?sopen:sclose} alt=""/>
-                      {isOpen?'开':'关'}
+                    <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType('config4','0'):null}>
+                      <img src={color?radio_on:radio_off} alt=""/>
+                      标准
+                    </a>
+                    <a className={style['switch']} href="javascript:void(0)" onClick={hideBtn?()=>changeType('config4','1'):null}>
+                      <img src={color?radio_off:radio_on} alt=""/>
+                      增黑
                     </a>
                   </p>
                 </div>

+ 2 - 1
src/components/Banner/ModeChange/index.less

@@ -36,7 +36,8 @@
       }
       .explain{
         margin: 50px 30px;
-        opacity: .5;
+        /*opacity: .5;*/
+        color: #777;
         p{
           font-size: 12px;
           line-height: 20px;

+ 37 - 14
src/components/Banner/index.jsx

@@ -15,9 +15,14 @@ import ModeChange from './ModeChange'
 
 class Banner extends Component {
   constructor(props){
-    super(props)
+    super(props);
+    const conf = props.typeConfig;
     this.state = {
-      mode: props.typeConfig,
+      config0: conf[0],    //模式
+      config1:conf[1],   //一般情况默认
+      config2:conf[2],      //其他史默认
+      config3:conf[3],    //字体大小
+      config4:conf[4],       //字体颜色
       emergencyBox:false
     };
     this.showConfigModal = this.showConfigModal.bind(this);
@@ -25,32 +30,50 @@ class Banner extends Component {
     this.confirmType = this.confirmType.bind(this);
     this.showHisModal = this.showHisModal.bind(this);
     this.handleHisClose = this.handleHisClose.bind(this);
+    this.setInitConfig = this.setInitConfig.bind(this);
   }
 
   showConfigModal(){
-    this.setState({
-      mode:this.props.typeConfig,
-    });
+    this.setInitConfig();
     this.props.showConfigModal()
   }
 
-  changeType(typeConfig){
+  changeType(type,typeConfig){
     this.setState({
-      mode:typeConfig
+      [type]:typeConfig
     });
   }
 
   confirmType(){
     const {typeConfig,confirmType,clearCommS,closeConfigModal,readMode} = this.props;
-    const mode = this.state.mode;
     // 清空主诉常见症状
     clearCommS();
-    if(mode==typeConfig&&typeConfig==readMode){
+    /*if(mode==typeConfig&&typeConfig==readMode){
       closeConfigModal();
       return;
+    }*/
+    const configs= this.parseConf();
+    confirmType&&confirmType(configs);
+    closeConfigModal();
+  }
+  parseConf(){
+    let configs = Object.assign({},this.state);
+    delete configs.emergencyBox;
+    let obj = {};
+    for(let i in configs){
+      obj[i.replace('config','')] = configs[i];
     }
-    confirmType&&confirmType(mode);
-    closeConfigModal()
+    return obj;
+  }
+  setInitConfig(){
+    const conf = this.props.typeConfig;
+    this.setState({
+      config0: conf[0],
+      config1:conf[1],
+      config2:conf[2],
+      config3:conf[3],
+      config4:conf[0],
+    });
   }
   showHisModal(){
     const {getAllRecord} = this.props;
@@ -68,12 +91,12 @@ class Banner extends Component {
   handleHisClose(){
     this.setState({
       emergencyBox:false,
-    })
+    });
     dragBox('previewWrapper','previewStatic','del')    
   }
   render() {
     const {visible,ifShow,deptName, closeConfigModal,hasMain,hasCurrent,hasOther} = this.props;
-    const {mode,emergencyBox} = this.state;
+    const {emergencyBox} = this.state;
     const {showConfigModal, changeType, confirmType} = this;
     const domNode = document.getElementById('root');
     const disabled = !(hasMain||hasCurrent||hasOther);
@@ -92,7 +115,7 @@ class Banner extends Component {
           </div>
         </div>
         {visible&& <ModeChange
-          mode = {mode}
+          {...this.state}
           hideBtn={disabled}
           closeConfigModal = {closeConfigModal}
           changeType = {changeType}

+ 5 - 1
src/config/index.js

@@ -1,6 +1,10 @@
 export default {
     defaultValue:{      //默认配置
-      mode: 0     //0为半结构化模式,1为纯文本模式(主诉现病史其他史只自由文本输入)
+      0:0,     //0为半结构化模式,1为纯文本模式(主诉现病史其他史只自由文本输入)
+      1:0,    //一般情况默认值,1开启,2关闭
+      2:0,    //其他史默认值,1开启,2关闭
+      3:0,    //字体大小:1增大,0标准
+      4:0,    //字体颜色:1增黑,0标准
     },
     moduleCP:{//使用type
       '1':'mainSuit',          //主诉

+ 1 - 2
src/containers/TypeConfigContainer.js

@@ -4,7 +4,6 @@ import Banner from "../components/Banner";
 import { SHOW_CONFIG_MODAL, CLOSE_CONFIG_MODAL, CONFIRM_TYPE } from "../store/types/typeConfig";
 import {pushAllDataList} from '@utils/tools';
 import {saveMode,getOtherHisRecord} from '@store/async-actions/fetchModules';
-import config from "@config/index";
 import { allCheckedShow } from '@store/actions/tabTemplate';
 import {Notify} from '@commonComp';
 
@@ -22,7 +21,7 @@ function mapStateToProps(state) {
   const other = state.otherHistory;
   const typeConfig = state.typeConfig;
   return {
-    typeConfig:typeConfig.typeConfig||config.defaultValue.mode,
+    typeConfig:typeConfig.typeConfig,
     visible:typeConfig.visible,
     hasMain:ifHasData(main.data,main.saveText),
     hasCurrent:ifHasData(current.data,current.saveText),

+ 12 - 2
src/store/async-actions/fetchModules.js

@@ -223,14 +223,24 @@ export function setOtherHisModule(){
   }
 }
 
+//转换设置传参
+function parseConfigParam(configs){
+  let arr = [];
+  for(let key in configs){
+    arr.push({
+      modeClassify:key.replace("config",''),
+      modeValue:configs[key]
+    })
+  }
+  return arr;
+}
 //保存切换模式
 export function saveMode(mode){
   return (dispatch,getStore)=>{
     const {patInfo} = getStore();
     const param = {
       doctorId:patInfo.message.doctorId,
-      modeClassify:0,
-      modeValue:mode
+      doctorPageMode: parseConfigParam(mode)
     };
     return json(api.saveMode,param);
   }

+ 35 - 39
src/store/async-actions/patInfo.js

@@ -14,7 +14,8 @@ const api = {
     getPatInfo: '/patientInfo/getTopPatientInfo',
     getPatBaseInfo: '/patientInfo/getPatientInfo',
     getHospitalInfo:'/hospitalInfo/getHospitalInfo',
-    getPreMsg:'/api/prec/inquiryInfo/getInquiryDetail'
+    getPreMsg:'/api/prec/inquiryInfo/getInquiryDetail',
+    getDoctorConfig:'/doctorPageMode/getDoctorPageModes',       //获取医生设置
 };
 
 //获取预问诊信息
@@ -111,7 +112,39 @@ export const initHistoryDetails = (dispatch) => {
             }
         })
     }
+};
+//转换设置存值
+function parseDoctorCon(arr){
+  let obj = {};
+  let it;
+  if(!arr){
+    return null;
+  }
+  for(let i=0;i<arr.length;i++){
+    it = arr[i];
+    obj[it.modeClassify] = it.modeValue;
+  }
+  return obj;
 }
+
+//获取医生设置信息
+function getDoctorConfig(id,dispatch){
+  json(api.getDoctorConfig,{doctorId:id}).then((res)=>{
+    if(res.data.code==='0'){
+      const configs = parseDoctorCon(res.data.data);
+      if(!configs){
+        return ;
+      }
+      dispatch({
+        type:CONFIRM_TYPE,
+        confirmType:configs
+      })
+    }else{
+      Notify.info(res.data.msg);
+    }
+  });
+}
+
 //技术部需求,先获取第一个接口再去第二个
 export async function getPatientMessage(dispatch, getState){
   const state = getState();
@@ -132,6 +165,7 @@ export async function getPatientMessage(dispatch, getState){
   let data1 = {},data2 = {};
   if(res1.data.code=='0'){
     data1 = res1.data.data;
+    getDoctorConfig(data1.doctorId,dispatch);
   }
   if(res2.data.code=='0'){
     data2 = res2.data.data;
@@ -140,11 +174,6 @@ export async function getPatientMessage(dispatch, getState){
     type: GET_PATIENT_MESSAGE,
     data:Object.assign(data1,data2)
   });
-  //设置初始模式
-  dispatch({
-    type: CONFIRM_TYPE,
-    confirmType:data1.modeValue||config.defaultValue.mode
-  });
   localStorage.removeItem('deletedTags');
   dispatch(getInitModules);     //确保病人信息获取以后再获取模板等数据,否则参数为空
   dispatch(getCommonList(5));     //获取常用化验标签列表
@@ -153,36 +182,3 @@ export async function getPatientMessage(dispatch, getState){
   // initHospitalInfo(dispatch, getState) //不需要的
 }
 
-/*
-export const getPatientMessage = (dispatch, getState) => {
-  const state = getState();
-  const urlDatas = state.getInfoByUuid;
-  const params = {
-    hospitalCode:urlDatas.hospitalId,
-    hospitalDeptCode: urlDatas.deptNo,
-    doctorCode: urlDatas.doctorNo,
-    patientCode:urlDatas.patientNo,
-    recordId:urlDatas.recordId
-  };
-  // 获取医生,患者基本信息
-  Promise.all([json(api.getPatInfo, params),json(api.getPatBaseInfo, params)])
-    .then((data) => {
-      let data1 = {},data2={};
-      if(data[0].data.code=='0'){
-        data1 = data[0].data.data;
-      }
-      if(data[1].data.code=='0'){
-        data2 = data[1].data.data;
-      }
-      dispatch({
-        type: GET_PATIENT_MESSAGE,
-        data:Object.assign(data1,data2)
-      });
-      //设置初始模式
-      dispatch({
-        type: CONFIRM_TYPE,
-        confirmType:data1.modeValue
-      });
-      dispatch(getInitModules);     //确保病人信息获取以后再获取模板等数据,否则参数为空
-    })
-};*/

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

@@ -4,7 +4,7 @@ import config from '@config/index';
 
 const initState = {
   visible: false,
-  typeConfig: config.defaultValue.mode, // 0:智能推送模式, 1:纯文本模式,用于切换选中状态
+  typeConfig: config.defaultValue, // 0:智能推送模式, 1:纯文本模式,用于切换选中状态
   readMode:-1,  //回读回来的模式,-1即没有回读模式
 };
 export default function(state = initState, action) {