瀏覽代碼

模板保存弹窗和获取接口修改

luolei 5 年之前
父節點
當前提交
a944bcea3f

+ 4 - 2
src/common/components/ConfirmModal/index.jsx

@@ -69,6 +69,7 @@ const defaultProps = {
     cancelBg: '#fff',
     width: '300px',
     height: '200px',
+    borderBtm:'0'
 };
 
 class ConfirmModal extends Component {
@@ -123,7 +124,8 @@ class ConfirmModal extends Component {
             height, 
             closable, 
             noFooter,
-            icon
+            icon,
+            borderBtm
         } = this.props;
         const marginLeft = -parseInt(width)/2
         const marginTop = -parseInt(height)/2
@@ -131,7 +133,7 @@ class ConfirmModal extends Component {
             <NewPortal visible={visible}>
                 <div className={styles['modal-wrapper']} id='confirm'>
                     <div className={styles[['modal']]} style = {{width: width, marginLeft:marginLeft, minHeight:height, marginTop:marginTop}}>
-                        <div className={styles['modal-title']} style={{background: titleBg}}>
+                        <div className={styles['modal-title']} style={{background: titleBg,borderBottom:borderBtm}}>
                             {icon?<img src={icon} className={styles['icon']}/>:''}
                             {title ? title : ''} 
                             {closable ? <img onClick={this.closeModal} className={styles['modal-close']} src = {close}/> : false}

+ 5 - 4
src/common/components/ConfirmModal/index.less

@@ -8,15 +8,15 @@
     margin: auto;
     border-radius: 5px;
     background: #fff;
-    overflow: hidden;
+    // overflow: hidden;
 }
 
 .modal-title {
     width: 100%;
-    height: 50px;
-    line-height: 50px;
+    height: 46px;
+    line-height: 46px;
     padding: 0 10px;
-    background: #e5e5e5
+    background: #e5e5e5;
 }
 
 .icon{
@@ -27,6 +27,7 @@
 .modal-close {
     position: absolute;
     right: 0px;
+    top: 2px;
     width: 40px;
     height: 40px;
     cursor: pointer;

二進制
src/components/Operation/Search/imgs/clear.png


二進制
src/components/Operation/Search/imgs/search.png


+ 106 - 0
src/components/Operation/Search/index.jsx

@@ -0,0 +1,106 @@
+import React from 'react';
+import styles from './index.less';
+import clear from './imgs/clear.png';
+import search from './imgs/search.png';
+import config from '@config/index';
+import $ from 'jquery';
+/**
+ * 前提条件父元素有定位
+ * visible  搜索显示隐藏
+ * handleChangeValue  函数参数为输入框的value值
+ */
+class SearchList extends React.Component {
+    constructor(props) {
+        super(props);
+        this.state = {
+            val:'',
+            border:'',
+            show:false,
+            timer:null
+        }
+        this.textInput = React.createRef();
+        this.handleClearVal = this.handleClearVal.bind(this);
+        this.handleFocus = this.handleFocus.bind(this);
+        this.handleBlur = this.handleBlur.bind(this);
+    }
+    componentDidMount(){
+      this.props.handleChangeValue('');
+      this.textInput.current.focus();
+      const {windowHeight,pageTop,height,refreshScroller} = this.props;
+    }
+    handleClearVal(){
+        const { handleChangeValue } = this.props;
+        this.textInput.current.value = '';
+        this.textInput.current.focus();
+        this.setState({
+            val:'',
+            show:false
+        });
+        handleChangeValue('');
+    }
+    handleInput(e){
+      const { handleChangeValue } = this.props;
+        clearTimeout(this.state.timer);
+        let timer = setTimeout(()=>{
+            clearTimeout(this.state.timer);
+            if(e.target.value.trim() == ''){
+                this.setState({
+                    show:false
+                })
+                return  handleChangeValue('');
+            }
+            this.setState({
+                val:e.target.value,
+                show:true
+            })
+            handleChangeValue(e.target.value);
+        },config.delayTime);
+        this.setState({
+            timer
+        });
+    }
+    handleFocus(){
+      if(this.state.val.trim() != ''){
+        return;
+      }else{
+          this.setState({border:true})
+      }
+    }
+    handleBlur(){
+      this.setState({border:false,val:''})
+    }
+    componentWillReceiveProps(next){
+        console.log(next,this.props)
+        if(next.value&&(next.value != this.props.value)){
+            this.textInput.current.value = next.value;
+        }
+    }
+    render() {
+        const { children,visible } = this.props;
+        const { show } = this.state;
+        return (
+            <div id="searchOption" className={styles.search}>
+                <img style={{display:show?'block':'none'}} className={styles.clearVal} src={clear} onClick={this.handleClearVal} alt="清空" />
+                <input
+                    className={this.state.border ?`${styles.border}`:`${styles.borderNone}`}
+                    type="text"
+                    maxLength="30"
+                    ref={this.textInput}
+                    onFocus={this.handleFocus}
+                    onBlur={this.handleBlur}
+                    onInput={(e) => { 
+                        this.handleInput(e)
+                    }}
+                    onPropertyChange={(e) => {  // 兼容ie
+                        this.handleInput(e)
+                    }}
+                    placeholder="搜索"
+                />
+                <div className={styles.autoList}>
+                    {children}
+                </div>
+            </div>
+        )
+    }
+}
+export default SearchList;

+ 38 - 0
src/components/Operation/Search/index.less

@@ -0,0 +1,38 @@
+@import "~@less/variables.less";
+
+.search {
+    .contentZIndex1;
+    width: 240px;
+    box-sizing: border-box;
+    position: relative;
+    background-color: #fff;
+    display: inline-block !important;
+    margin-right: 20px;
+
+    input {
+        width: 100%;
+        height: 30px;
+        line-height: 30px;
+        padding: 0 30px 0 10px;
+        box-sizing: border-box;
+        border: 1px solid #ccc;
+    }
+    .border {
+        // border: 1px solid @blue;
+    }
+    .borderNone {
+        border: 1px solid #ccc;
+    }
+    img {
+        position: absolute;
+        top: 5px;
+    }
+    .clearVal{
+        cursor: pointer;
+        right: 5px;
+    }
+}
+
+.hide {
+    display: none;
+}

+ 69 - 24
src/components/Operation/index.jsx

@@ -7,9 +7,11 @@ import cancelTag from '@common/images/icon_back.png';
 import PrintPreviewContainer from '@containers/PrintPreviewContainer';
 import PreviewContainer from '@containers/PreviewContainer';
 import { ConfirmModal, Notify } from '@commonComp';
+import Search from './Search';
 import check_circle from './img/check-circle.png';
 import check_right from './img/check-right.png';
 import {getAllDataList,getAllDataStringList,isAllPartClear,isAllClear,filterDataArr,readyKeepHistory} from '@utils/tools';
+
 import {dragBox} from '@utils/drag';
 import store from '@store';
 import $ from 'jquery';
@@ -28,6 +30,8 @@ class Operation extends Component {
       zIndex:40,
       sex:'3',
       le:'',
+      deptId:'',//科室id
+      value:''
     }
     this.showPrint = this.showPrint.bind(this);
     this.closePrint = this.closePrint.bind(this);
@@ -37,6 +41,7 @@ class Operation extends Component {
     this.clearAll = this.clearAll.bind(this);
     this.saveHis = this.saveHis.bind(this);
     this.keypress = this.keypress.bind(this);
+    this.setDeptId = this.setDeptId.bind(this);
   }
 
   showPrint() {
@@ -87,7 +92,6 @@ class Operation extends Component {
         oKBg: '#3B9ED0',
         msg: <p className={style['msg']}>是否保存该病历?</p>
       })
-      
       this.props.diagShowTmp(true)
     }
   }
@@ -177,25 +181,33 @@ class Operation extends Component {
     return true;
   }
   changeTitle() {
+    const {handleChangeValue} = this.props;
     return <div className={style['box']}>
-      <input className={style['ipt']}
-        placeholder="请输入模板名称"
-        type="text"
-        maxLength='30'
-        onInput={(e) => {
-          this.handleInput(e)
-        }}
-        onPropertyChange={(e) => {  // 兼容ie
-          this.handleInput(e)
-        }}
-        onKeyPress={e => this.keypress(e)}
-      />
-      <div className={style['line']}></div>
+      {/* <div className={style.titleTip}></div> */}
       <div className={style['iptWrap']}>
-        <p>请选择模板性别归属(错误引用,显示可能有误)</p>
-        <span className={style['commonSex']} id="commonSex" onClick={this.changeRadio.bind(this,1)}><img src={check_right} alt=""/><i style={{color:'#000'}}>通用</i></span>
-        <span id="maleSex" onClick={this.changeRadio.bind(this,2)}><img src={check_circle} alt=""/><i>男</i></span>
-        <span id="femaleSex" onClick={this.changeRadio.bind(this,3)}><img src={check_circle} alt=""/><i>女</i></span>
+        <div className={style.name}>
+          <span>模版名称:</span>
+          <input className={style['ipt']}
+            placeholder="请输入模板名称"
+            type="text"
+            maxLength='30'
+            onInput={(e) => {
+              this.handleInput(e)
+            }}
+            onPropertyChange={(e) => {  // 兼容ie
+              this.handleInput(e)
+            }}
+            onKeyPress={e => this.keypress(e)}
+          />
+        </div>
+        <div className={style.male}>
+          <span>性别归属:</span>
+          <span className={style['commonSex']} id="commonSex" onClick={this.changeRadio.bind(this,1)}><img src={check_right} alt=""/><i style={{color:'#000'}}>通用</i></span>
+          <span id="maleSex" onClick={this.changeRadio.bind(this,2)}><img src={check_circle} alt=""/><i>男</i></span>
+          <span id="femaleSex" onClick={this.changeRadio.bind(this,3)}><img src={check_circle} alt=""/><i>女</i></span>
+          <span style={{paddingRight:0,color:'#777777'}}>(注:错误引用,显示可能有误)</span>
+        </div>
+        {/* <p>请选择模板性别归属(错误引用,显示可能有误)</p> */}
       </div>
     </div>
   }
@@ -227,8 +239,8 @@ class Operation extends Component {
     }
   }
   makeSure() {
-    const { save, clear, saveDataAll,diagShowTmp ,chronicMagItem,chronicDesease} = this.props;
-    const { type } = this.state;
+    const { save, clear, saveDataAll,diagShowTmp ,chronicMagItem,chronicDesease,admin} = this.props;
+    const { type,deptId,sex,title } = this.state;
     if (type == 1) {
       diagShowTmp(false)
       this.setState({ title: '' })
@@ -248,8 +260,15 @@ class Operation extends Component {
       if (this.state.title.trim() == '') {
         Notify.error('请输入模板名称')
         return;
+      }else if(admin&&deptId == ''){
+        Notify.error('请选择科室')
+        return;
+      }
+      if(admin){
+        saveDataAlls(title,sex,deptId);
+      }else{
+        saveDataAll(title,sex);
       }
-      saveDataAll(this.state.title,this.state.sex);
     }
   }
   closeDiagBox(){
@@ -263,6 +282,13 @@ class Operation extends Component {
       this.setState({ title: '' }) 
     }
   }
+  setDeptId(id,name){
+    this.props.handleClearValue()
+    this.setState({
+      deptId :id,
+      value:name
+    })
+  }
   componentWillReceiveProps(next){//监听滚动事件
     const that = this;
     if(next.winWidth <= 1024){
@@ -285,8 +311,8 @@ class Operation extends Component {
   render() {
     const { showPrint, closePrint, showPreview, closePreview } = this;
     const { visible, preVisible,diagShow } = this.props.print;
-    const {winWidth,cancelDelTag} = this.props;
-    const {zIndex,type,le} = this.state;
+    const {winWidth,cancelDelTag,departLis,handleChangeValue,admin} = this.props;
+    const {zIndex,type,le,value} = this.state;
     return <div className={style['container']} style={{left:le}}>
       <span className={style['button']} onClick={showPrint}><img src={printImg} /> 打印病历</span>
       <span className={style['preButton']} onClick={showPreview}><img src={preview} /> 预览</span>
@@ -304,12 +330,31 @@ class Operation extends Component {
         cancel={() => {this.closeDiagBox()}}
         okText={this.state.okText}
         height={type==3?228:200}
-        width={type==3?400:300}
+        width={type==3?545:300}
         okBorderColor={this.state.borderColor}
         okColor={this.state.okColor}
         oKBg={this.state.oKBg}
+        borderBtm={type==3?'1px solid #f5f5f5':null}
+        title={type==3?'保存病历模板':null}
       >
         {this.state.msg}
+        {
+          admin&&type==3?<div className={style.department}>
+              <span>科室归属:</span>
+              <Search handleChangeValue={handleChangeValue} value={value} visible={true}>
+                <ul className={style.departLis}>
+                  {
+                    departLis.map((item,idx)=>{
+                      return <li onClick={()=>this.setDeptId(item.id,item.conceptDeptName)}>
+                        {item.conceptDeptName}
+                      </li>
+                    })
+                  }
+                </ul>
+              </Search>
+              <span style={{paddingRight:0,color:'#777777'}}>(支持汉字关键字搜索)</span>
+          </div>:null
+        }
       </ConfirmModal>
     </div>;
   }

+ 57 - 17
src/components/Operation/index.less

@@ -117,10 +117,18 @@
     }
 }
 .iptWrap {
-  width: 320px;
+   padding: 0 15px;
   line-height: 18px;
-  margin: 10px auto;
-  text-align: center;
+  margin: 18px auto;
+  text-align: left;
+  .name {
+      text-align: left;
+      input {
+          border: 1px solid #CCCCCC;
+          padding: 5px 10px;
+          width: 240px;
+      }
+  }
   p {
     text-align: left;
     font-size: 12px;
@@ -130,7 +138,7 @@
   span {
     display: inline-block;
     cursor: pointer;
-    padding-right: 24px;
+    padding-right: 20px;
     font-size: 14px;
     i {
       color: #6b6969;
@@ -149,23 +157,55 @@
     padding-bottom: 50px;
 }
 .box {
-    padding-top: 10px;
     box-sizing: border-box;
-    height: 110px;
+    height: 88px;
 }
-.ipt {
-    font-size: 16px;
-    width: 320px;
-    height: 20px;
-    line-height: 18px;
-    display: block;
-    margin: 0 auto;
+
+.department {
+    position: relative;
     text-align: left;
+    padding: 0 0 30px 16px;
+    span {
+        padding-right: 20px;
+    }
+}
+.male {
+    padding: 15px 0;
 }
 .line {
-    width: 332px;
     height: 1px;
-    margin: 8px auto 0 auto;
-    background: #D8D8D8;
+    background-color: #979797;
+    position: relative;
+    top: -2px;
 }
-
+.titleTip {
+    position: absolute;
+    top:15px;
+    left: 20px;
+}
+.departLis {
+    position: absolute;
+    top: 29px;
+    left: 0;
+    max-height: 200px;
+    overflow: auto;
+    background-color: #fff;
+    width: 240px;
+    // box-shadow: 0 10px 20px 0 #989DA3;
+    border: 1px solid #dedede;
+    li {
+        height: 36px;
+        line-height: 36px;
+        padding: 0 30px;
+        padding-top: 0;
+        box-sizing: border-box;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        border: 1px solid transparent;
+        cursor: pointer;
+    }
+    li:hover {
+        border: 1px solid #3B9ED0;
+    }
+}

+ 4 - 0
src/components/PushContainer/index.jsx

@@ -222,6 +222,10 @@ class PushContainer extends Component {
         Notify.success('标题修改成功');
         return;
       }
+      if ((this.state.title).trim() == '') {
+        Notify.info('请输入模板名称');
+        return;
+      }
       let tempObj = {
         id: this.state.currId,
         title: this.state.title

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

@@ -26,7 +26,7 @@ class TemplateItems extends React.Component {
     }  
     componentDidMount(){
         const height = getWindowInnerHeight()-195;
-        this.$cont.current.style.height = height/2+"px";
+        this.$cont.current.style.height = height+"px";
         windowEventHandler('resize', ()=>{
             if(this.$cont.current){
                 const height = getWindowInnerHeight()-195;

+ 13 - 1
src/containers/OperationContainer.js

@@ -9,7 +9,8 @@ import {
     DIAG_SHOW
 } from "../store/types/print";
 import {saveMessage,clearMessages} from "../store/async-actions/print";
-import {saveTemplateDetail} from '@store/async-actions/tabTemplate';
+import {saveTemplateDetail,getDepartments,saveAdminTemplateDetail } from '@store/async-actions/tabTemplate';
+import {getDptLis} from '@store/actions/tabTemplate';
 import {saveClickNum,getInitModules} from '@store/async-actions/homePage';
 import {getOtherHisRecord} from '@store/async-actions/fetchModules';
 import {RECOVER_TAG_MAIN} from '@store/types/mainSuit';
@@ -27,13 +28,21 @@ function mapStateToProps(state) {
     return ({
         print,
         winWidth:homePage.windowWidth,
+        admin:homePage.admin,
         chronicMagItem: state.diagnosticList.chronicMagItem,//慢病疾病
         chronicDesease:state.mainSuit.chronicDesease,//主诉存的慢病
+        departLis:state.tabTemplate.departLis,
     });
 }
 
 function mapDispatchToProps(dispatch) {
     return {
+        handleClearValue:()=> {
+          dispatch(dispatch(getDptLis([])))
+        },
+        handleChangeValue:(val)=> {
+          val&&dispatch(getDepartments(val))
+        },
         showPrintPreview: () => {
             dispatch({
                 type: SHOW_PRINT_PREVIEW
@@ -66,6 +75,9 @@ function mapDispatchToProps(dispatch) {
                 dispatch(getInitModules);
             }
         },
+        saveDataAlls(val,sex,id){
+          dispatch(saveAdminTemplateDetail(val,sex,id))
+        },
         saveDataAll(val,sex){
           dispatch(saveTemplateDetail(val,sex))
         },

+ 10 - 0
src/store/actions/tabTemplate.js

@@ -10,6 +10,8 @@ import {
     SHOW_MESSAGE,
     KEEP_PUSH_DATA,
     ALL_CHECKED_SHOW,
+    GET_DPT_LIS,
+    INIT_ADMIN_ITEMS
 } from '@store/types/tabTemplate';
 
 export const delItems = (id) => ({ //删除模板
@@ -24,6 +26,10 @@ export const initItems = (state) => ({ //数据初始化
     type: INIT_ITEMS,
     state
 });
+export const initAdminItems = (state) => ({ //数据初始化
+    type: INIT_ADMIN_ITEMS,
+    state
+});
 export const checkItems = (id) => ({ //选中的模板
     type: CKECK_ITEMS,
     id
@@ -56,4 +62,8 @@ export const showMsg = (bool) => ({ //tip提示
 export const allCheckedShow = (bool) => ({ 
     type: ALL_CHECKED_SHOW,
     bool
+});
+export const getDptLis = (list) => ({ 
+    type: GET_DPT_LIS,
+    list
 });

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

@@ -5,7 +5,7 @@ import {getInfos} from '@store/actions/getInfoByUuid';
 import {getUrlArgObject,pushAllDataList,getAllDataList,storageLocal} from '@utils/tools';
 import {getInitModules,getCommonList} from '@store/async-actions/homePage.js';
 import store from '@store'
-import {ISREAD,MODI_LOADING,SETPRE,SETPREDATA} from "../types/homePage";
+import {ISREAD,MODI_LOADING,SETPRE,SETPREDATA,SETADMIN} from "../types/homePage";
 import { initItemList } from '@store/async-actions/tabTemplate';
 import config from '@config/index';
 import {Notify} from '@commonComp';
@@ -17,6 +17,7 @@ const api = {
     getPreMsg:'/api/prec/inquiryInfo/getInquiryDetail',
     getPreMsgLis:'/api/prec/inquiryInfo/hisInquirys',
     getDoctorConfig:'/doctorPageMode/getDoctorPageModes',       //获取医生设置
+    getAdminCheckout:'/sysSet/getAdminCheckout',     //获取管理员身份
 };
 
 //获取预问诊信息
@@ -47,6 +48,23 @@ export const getPreMsg = (dispatch, getState) => {
         }
     })
 }
+//获取管理员身份
+export const getAdminCheckout = (val1,val2,dispatch) => {
+    json(api.getAdminCheckout, {
+      "doctorId": val1,
+      "hospitalId": val2
+    }).then((res) => {
+        const data = res.data;
+        if (data.code == 0) {
+            dispatch({
+              type: SETADMIN,
+              admin:data.data
+            });
+        } else {
+            console.log(res)
+        }
+    })
+}
 //获取医院id
 export const initHospitalInfo = (dispatch, getState) => {
     let baseList = getState();
@@ -167,6 +185,7 @@ export async function getPatientMessage(dispatch, getState){
   let data1 = {},data2 = {};
   if(res1.data.code=='0'){
     data1 = res1.data.data;
+    getAdminCheckout(data1.doctorId,data1.hospitalId,dispatch)
     getDoctorConfig(data1.doctorId,dispatch);
   }
   if(res2.data.code=='0'){

+ 118 - 6
src/store/async-actions/tabTemplate.js

@@ -5,7 +5,9 @@ import {
   batchDelItems,
   changeTitle,
   keepPushData,
-  changeVisible
+  changeVisible,
+  getDptLis,
+  initAdminItems
 } from '@store/actions/tabTemplate';
 import {DIAG_SHOW} from "@store/types/print";
 import Notify from '@commonComp/Notify';
@@ -14,11 +16,21 @@ import {
   getAllDataList,
   getAllDataStringList,
   pushAllDataList,
+  getUrlArgObject,
   didPushParamChange
 } from '@utils/tools';
 import { billing } from '@store/async-actions/pushMessage';
 
-export const initItemList = (current,name) => { //初始化数据
+export const initItemList = (current,name) => {
+  let admin = store.getState().homePage.admin;
+  if(admin){
+    return initAdminItemList(current,name)
+  }else{
+    return initCommonItemList(current,name)
+  }
+}
+
+export const initCommonItemList = (current,name) => { //初始化数据
   let baseList = store.getState();
   let state = baseList.patInfo.message;
 
@@ -27,6 +39,7 @@ export const initItemList = (current,name) => { //初始化数据
       "doctorId": state.doctorId,
       "hospitalDeptId": state.hospitalDeptId,
       "hospitalId": state.hospitalId,
+      "hospitalCode": state.hospitalCode,
       "current": current,
       "sex":[1,2,3],
       "size": 9999,
@@ -42,6 +55,30 @@ export const initItemList = (current,name) => { //初始化数据
     })
   }
 };
+export const initAdminItemList = (current,name) => { //初始化数据
+  let baseList = store.getState();
+  let state = baseList.patInfo.message;
+  return (dispatch) => {
+    axios.json('/templateAdmin/getTemplatePageAlls', {
+      "doctorId": state.doctorId,
+      "hospitalDeptId": '',
+      "hospitalId": state.hospitalId,
+      "hospitalCode": state.hospitalCode,
+      "current": current,
+      "sex":[1,2,3],
+      "size": 9999,
+      "name":name||''
+    }).then((res) => {
+      const data = res.data;
+      if (data.code == 0) {
+        // data.data.flg = flg||false  //获取下一页,暂时不用
+        dispatch(initAdminItems(data.data));
+      } else {
+        Notify.error(data.msg)
+      }
+    })
+  }
+};
 
 export const saveTemplateDetail = (val,sex) => { //保存为模板
   let baseList = store.getState();
@@ -104,6 +141,67 @@ export const saveTemplateDetail = (val,sex) => { //保存为模板
     })
   }
 };
+export const saveAdminTemplateDetail = (val,sex,id) => { //保存为模板
+  let baseList = store.getState();
+  let jsonData = getAllDataList(baseList);
+  let jsonStr = getAllDataStringList(baseList);
+  const dConfig = baseList.typeConfig;
+  const readMode = dConfig.readMode;          //回读模式
+  let whichSign = readMode===-1||readMode===null?dConfig.mode:readMode;
+  const docConfigs = dConfig.readConfig===-1||!dConfig.readConfig?dConfig.typeConfig:dConfig.readConfig;
+  jsonData.docConfigs=docConfigs;     //保存当时的设置引用
+  let state = baseList.patInfo.message;
+  let preview = {
+    "chief": jsonStr.chief,
+    "present": jsonStr.present,
+    "other": jsonStr.other,
+    "vital": jsonStr.vital,
+    "lis": jsonStr.lis,
+    "pacs": jsonStr.pacs,
+    "diag": jsonStr.diag,
+    "advice": jsonStr.advice,
+  }
+  function getdata(idx){
+    let tmpObj = {
+      "doctorId": state.doctorId,
+      "hospitalDeptId": id,
+      "hospitalId": state.hospitalId,
+      "dataJson": JSON.stringify(jsonData),
+      "modeName": val,
+      "modeType": whichSign,
+      "preview": idx ? JSON.stringify(preview):preview,
+      "sex":sex
+    }
+    return tmpObj;
+  }
+  return (dispatch) => {
+    axios.json('/templateAdmin/saveTemplateAdmin', getdata()).then((res) => {
+      const data = res.data;
+      if (data.code == 0) {
+        Notify.success('模板保存成功');
+        dispatch(initItemList(1,""));
+        dispatch(keepPushData(getdata(1),'part'));
+        dispatch({
+          type: DIAG_SHOW,
+          data:false
+        });
+      } else {
+        if(data.msg == '该模板名存在'){         //存在不关闭弹窗
+          dispatch({
+            type: DIAG_SHOW,
+            data:true
+          });
+        }else{
+          dispatch({
+            type: DIAG_SHOW,
+            data:false
+          });
+        }
+        Notify.error(data.msg);
+      }
+    })
+  }
+};
 
 export const delItem = (id) => { //删除
   return (dispatch) => {
@@ -139,10 +237,6 @@ export const changeTitleAsync = (obj) => { //改标题
   let baseList = store.getState();
   let whichSign = baseList.typeConfig.mode;
   let state = baseList.patInfo.message;
-  if (obj.title.trim() == '') {
-    Notify.info('请输入模板名称');
-    return;
-  }
   return (dispatch) => {
     axios.json('/templateInfo/updateByIdUsNames', {
       "doctorId": state.doctorId,
@@ -182,4 +276,22 @@ export const setPageView = (id) => { //获取模板结构化数据
       }
     })
   }
+};
+
+export const getDepartments = (value) => { //获取模板结构化数据
+  return (dispatch) => {
+    axios.json('/doctorInfo/getHospitalDeptInfoAll', {
+      "deptInfoName": value,
+      "hospitalCode": getUrlArgObject('hospitalId'),
+      "thirdpartyName": ""
+    }).then((res) => {
+      let data = res.data;
+      if (data.code == 0) {
+        console.log(data)
+        dispatch(getDptLis(data.data))
+      } else {
+        Notify.error(data.msg);
+      }
+    })
+  }
 };

+ 6 - 2
src/store/reducers/homePage.js

@@ -1,5 +1,5 @@
 import {HIDE,RESET,SETINITDATA,SETDROPSHOW,SETADDITEMINIT,SETT0EDIT,SETREADDITEMS,SETPREDATA,
-  HIDEDROP,CLICKCOUNT,ISREAD,SETOTHERHISTORY,SETMINSCREEN,MODI_LOADING,GET_INSPECT_LIST,GET_ASSIST_LIST,SETALLMODULES,SETSYSTEMCONFIG,SETPRE} from '../types/homePage.js';
+  HIDEDROP,CLICKCOUNT,ISREAD,SETOTHERHISTORY,SETMINSCREEN,MODI_LOADING,GET_INSPECT_LIST,GET_ASSIST_LIST,SETALLMODULES,SETSYSTEMCONFIG,SETPRE,SETADMIN} from '../types/homePage.js';
 import {showDrop,setAddItemInit,setLabelToEdit,confirmHide,clickNum,getInspectList,getAssistList} from '../actions/homePage.js';
 
 const initState = {
@@ -20,7 +20,8 @@ const initState = {
   sysConfig:{},
   showPre:false,
   preData:{},
-  item:{}
+  item:{},
+  admin:false
 };
 
 export default function (state=initState,action) {
@@ -83,6 +84,9 @@ export default function (state=initState,action) {
       res.preData = action.preData;
       res.item = action.item;
       return res;
+    case SETADMIN:
+      res.admin = action.admin;
+      return res;
     default:
       return res;
   }

+ 26 - 1
src/store/reducers/tabTemplate.js

@@ -10,6 +10,8 @@ import {
   SHOW_MESSAGE,
   KEEP_PUSH_DATA,
   ALL_CHECKED_SHOW,
+  GET_DPT_LIS,
+  INIT_ADMIN_ITEMS,
 } from '../types/tabTemplate';
 
 
@@ -22,6 +24,7 @@ const initDataList = {
     type: ''
   },
   items: [],
+  adminItems:[],
   allChecked: false, //全选反选
   checkItems: [], //选中要删除的元素
   activeItem: {}, //引用的模板
@@ -29,8 +32,14 @@ const initDataList = {
   allCheckShow: false, //全选反选是否显示
   current:1,//当前页
   hasMore:true,//是否显示更多
+  departLis:[],//搜索的科室列表
 }
 export default (state = initDataList, action) => {
+  if (action.type === GET_DPT_LIS) {
+    const newState = Object.assign({}, state);
+    newState.departLis = action.list;
+    return newState;
+  }
   if (action.type === DEL_ITEMS) {
     const newState = Object.assign({}, state);
     let tempArr = newState.items;
@@ -65,7 +74,23 @@ export default (state = initDataList, action) => {
     // }else{
     //   newState.items = tmpItems.concat(action.state.records);
     // }
-    newState.items = action.state.records
+    newState.items = action.state.personalTemplate.records
+    newState.adminItems = action.state.adminTemplate.records
+    newState.current = action.state.current;
+    newState.hasMore = action.state.current<action.state.pages;
+    return newState;
+  }
+  if (action.type === INIT_ADMIN_ITEMS) {
+    const newState = Object.assign({}, state);
+    // let tmpItems = JSON.parse(JSON.stringify(newState.items))
+    // let tmpCurrent = JSON.parse(JSON.stringify(newState.current))
+    // console.log(action.state.flg,action.state.pages,tmpCurrent,45544)
+    // if(action.state.current == 1&&!action.state.flg){//进入页面会调取分页相关先去掉
+    //   newState.items = action.state.records
+    // }else{
+    //   newState.items = tmpItems.concat(action.state.records);
+    // }
+    newState.adminItems = action.state.records
     newState.current = action.state.current;
     newState.hasMore = action.state.current<action.state.pages;
     return newState;

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

@@ -18,3 +18,4 @@ export const SETALLMODULES = 'SETALLMODULES';    //储存所有模板数据
 export const SETSYSTEMCONFIG = 'SETSYSTEMCONFIG';   //设置配置数据
 export const SETPRE = 'SETPRE';   //设置预问诊引用弹窗
 export const SETPREDATA = 'SETPREDATA';   //设置预问诊数据暂存
+export const SETADMIN = 'SETADMIN';   //设置管理员身份

+ 2 - 0
src/store/types/tabTemplate.js

@@ -9,3 +9,5 @@ export const CHANGE_VISIBLE = 'CHANGE_VISIBLE';
 export const SHOW_MESSAGE = 'SHOW_MESSAGE';
 export const KEEP_PUSH_DATA = 'KEEP_PUSH_DATA';
 export const ALL_CHECKED_SHOW = 'ALL_CHECKED_SHOW';
+export const GET_DPT_LIS = 'GET_DPT_LIS';
+export const INIT_ADMIN_ITEMS = 'INIT_ADMIN_ITEMS';