import React, { Component } from "react";
import { connect } from "react-redux";
import BannerContainer from '@containers/TypeConfigContainer';
//  引入组件
import BodyContainer from "@components/BodyContainer";
import {ConfirmModal} from '@commonComp';
import store from '@store';

import {HIDEDROP,SETMINSCREEN,SETSYSTEMCONFIG,SETPRE,SETREADDITEMS} from '@store/types/homePage.js';
import {billing} from '@store/async-actions/pushMessage';
import {CLEAR_SEARCH} from '@types/mainSuit';
import {CURRENT_CLEAR} from '@types/currentIll';
import {OTHERHIS_CLEAR} from '@types/otherHistory';
import {CHECKBODY_CLEAR} from '@types/checkBody';
import style from './index.less';
import {getInitModules,getChronic,getSystemConfig} from '@store/async-actions/homePage.js';
import {getPreMsg} from '@store/async-actions/patInfo.js';
import { getUrlArgObject,parseNameVal,pushAllDataList } from "@utils/tools";
import $ from 'jquery';
import loading from '@common/images/loading.gif';
class HomePage extends Component {
    constructor() {
        super();
        this.state={
            timer:null,
        };
        this.hidePops = this.hidePops.bind(this);
    }
    componentDidMount(){
        const {setWindow,getChronicList,getConfig,clearAddItems} = this.props;
        //清除已保存的血压标签数据
        clearAddItems();
        //获取配置
        getConfig();
        getChronicList&&getChronicList();//获取慢病列表
        // 获取并监听窗口宽度，用于有横向滚动条时患者信息和打印预览跟随滚动
        let width = $(window).width();
        let height = $(window).height();
        setWindow && setWindow({width,height});
        
        $(window).resize(function(){
            let reWidth = $(window).width(); 
            let reHeight = $(window).height();  
            setWindow && setWindow({width:reWidth,height:reHeight});
        })    
        //光标没落到元素上继续backspace防止页面回退
        $(window).on("keydown",(e)=>{   
            let ev = e || window.event;  
            if(ev.keyCode==8){
                const elem = ev.srcElement || ev.target;
                const nodeN = elem.nodeName;
                if(nodeN != "SPAN" && nodeN != "DIV" && nodeN != "INPUT" && nodeN != "TEXTAREA"){
                    return false;
                }
            } 
        })
    }
    hidePops(e){
        const {hideAllDrop,handleClear } = this.props;
    if(!this.isBar){    //onMousrdown的目标为滚动条时，标签填写单不关闭
      hideAllDrop();        //隐藏填写单
      handleClear&&handleClear();       //清空搜索结果
    }

    }
  setElem(e){
      //onMousedown的目标为滚动条时，标签填写单不关闭
    if(e.target.className=='scrollbar'){
      this.isBar = true;
    }else{
      this.isBar = false;
    }
  }
    render() {
        const {flag,showPre,noReferRecord,referRecord} = this.props;
        return <div className={style['home-page']}
                    onClick={this.hidePops} onmousedown={this.setElem.bind(this)}>
            <BannerContainer />
            {/* <InfoTitle /> */}
            <BodyContainer></BodyContainer>
          <ConfirmModal visible={showPre} okText='是' cancelText='否' confirm={referRecord}  cancel={noReferRecord} close={noReferRecord}>
              <div className={style['confirm-info']}>是否引用预问诊信息？</div>
          </ConfirmModal>
          {flag?<div className={style['mask']}>
                <img src={loading} className={style['load']}/>
            </div>:""}
        </div>;
    }
}

const mapStateToProps = function (state) {
  return {
    flag:state.homePage.loadingFlag,
    showPre:state.homePage.showPre
  }
};
const mapDispatchToProps = function (dispatch) {
  return {
    clearAddItems(){
      dispatch({
        type:SETREADDITEMS
      })
    },
    referRecord(){
        pushAllDataList(1,'push',store.getState().homePage.preData,'preIcss');
        dispatch(billing())
        dispatch({type:SETPRE,show:false});
      },
      noReferRecord(){
        dispatch({type:SETPRE,show:false});
      },
      handleClear(){//清空搜索结果
           dispatch({type:CLEAR_SEARCH});
           dispatch({type:CURRENT_CLEAR});
           dispatch({type:OTHERHIS_CLEAR});
           dispatch({type:CHECKBODY_CLEAR});
      },
        hideAllDrop(){
            dispatch({
              type:HIDEDROP
            });
        },
        /*getInit(){
            dispatch(getInitModules);
        }*/
        setWindow(obj){
            dispatch({
                type:SETMINSCREEN,
                obj:obj
            })
        },
        getChronicList(){
            dispatch(getChronic)
        },
        getConfig(){
          getSystemConfig().then((res)=>{
            if(res.data.code=='0'){
                dispatch({
                  type:SETSYSTEMCONFIG,
                  data: parseNameVal(res.data.data)
                })
            }else{

            }
          });
        }
    }
};

export default connect(mapStateToProps, mapDispatchToProps)(HomePage);