index.js 10.6 KB
/*
import React, { Component } from 'react'
import { connect } from 'dva'
import { List, Calendar } from 'antd-mobile';
import enUS from 'antd-mobile/lib/calendar/locale/en_US';
import zhCN from 'antd-mobile/lib/calendar/locale/zh_CN';
import './date.css'
const extra = {
  '2017/07/15': { info: 'Disable', disable: true },
};

const now = new window.Date();
// extra[+new window.Date(now.getFullYear(), now.getMonth(), now.getDate() + 5)] = { info: 'Disable', disable: true };
// extra[+new window.Date(now.getFullYear(), now.getMonth(), now.getDate() + 6)] = { info: 'Disable', disable: true };
// extra[+new window.Date(now.getFullYear(), now.getMonth(), now.getDate() + 7)] = { info: 'Disable', disable: true };
// extra[+new window.Date(now.getFullYear(), now.getMonth(), now.getDate() + 8)] = { info: 'Disable', disable: true };

console.log(now);
Object.keys(extra).forEach((key) => {
  const info = extra[key];
  const date = new window.Date(key);
  if (!Number.isNaN(+date) && !extra[+date]) {
    extra[+date] = info;
  }
});

class Date extends Component {
  originbodyScrollY = document.getElementsByTagName('body')[0].style.overflowY;

  constructor(props) {
    super(props);
    this.state = {
      en: false,
      show: false,
      config: {},
    };
  }

  showDate=()=>{



    document.getElementsByTagName('body')[0].style.overflowY = 'hidden';
    this.setState({
      show: true,
      config:{type: 'one',pickTime: false},
    });


  }
  renderBtn(zh, en, config = {}) {
    config.locale = this.state.en ? enUS : zhCN;

    return (
      <List.Item arrow="horizontal"
                 style={{width:680}}
                 onClick={
                   ()=>{
                     this.showDate()
                   }
                 }
      >
        {this.state.en ? en : zh}
      </List.Item>
    );
  }

  changeLanguage = () => {
    this.setState({
      en: !this.state.en,
    });
  }

  onSelectHasDisableDate = (dates) => {
    console.warn('onSelectHasDisableDate', dates);
  }

  onConfirm = (startTime, endTime) => {
    document.getElementsByTagName('body')[0].style.overflowY = this.originbodyScrollY;

    this.setState({
      show: false,
      startTime,
      endTime,
    });


    let getMonth = startTime.getMonth()+1
    let selectDate = startTime.getFullYear() + '-'+ getMonth +'-'+startTime.getDate()



    this.props.handleDate(selectDate);


    // this.selectDate();

  }

  selectDate= ()=>{

  }

  onCancel = () => {
    document.getElementsByTagName('body')[0].style.overflowY = this.originbodyScrollY;
    this.setState({
      show: false,
      startTime: undefined,
      endTime: undefined,
    });
  }

  getDateExtra = date => extra[+date];




  componentDidMount() {
    this.props.onRef(this)

  }
  render() {
    return (
      <div style={{ display:'none'}}>
        <List className="calendar-list" style={{ backgroundColor: 'white',opacity:0,height:'0'}}>
          {/!*<List.Item className="item" extra={<Switch className="right" checked={!this.state.en} onChange={this.changeLanguage} />}>*!/}
            {/!*{this.state.en ? 'Chinese' : '中文'}*!/}
          {/!*</List.Item>*!/}
          {/!*{this.renderBtn('选择日期区间', 'Select Date Range')}*!/}
          {/!*{this.renderBtn('选择日期时间区间', 'Select DateTime Range', { pickTime: true })}*!/}
          {this.renderBtn('选择日期', 'Select Date',{type: 'one',pickTime: false},)}

          {/!*{this.renderBtn('选择日期', 'Select Date',{type: 'one',pickTime: false},)}*!/}

          {/!*{this.renderBtn('选择日期时间', 'Select DateTime', { type: 'one', pickTime: true })}*!/}
          {/!*{this.renderBtn('选择日期区间(快捷)', 'Select Date Range (Shortcut)', { showShortcut: true })}*!/}
          {/!*{this.renderBtn('选择日期时间区间(快捷)', 'Select DateTime Range (Shortcut)', { pickTime: true, showShortcut: true })}*!/}
          {/!*{this.renderBtn('大行距', 'XL row size', { rowSize: 'xl' })}*!/}
          {/!*{this.renderBtn('不无限滚动', 'infinite: false', { infinite: false })}*!/}
          {/!*{this.renderBtn('水平进入', 'Horizontal enter', { enterDirection: 'horizontal' })}*!/}
          {/!*{this.renderBtn('默认选择范围', 'Selected Date Range', { defaultValue: [new window.Date(+now - 86400000), new window.Date(+now - 345600000)] })}*!/}
          {/!*{this.renderBtn('onSelect API', 'onSelect API', {*!/}
            {/!*onSelect: (date, state) => {*!/}
              {/!*console.log('onSelect', date, state);*!/}
              {/!*return [date, new window.Date(+now - 604800000)];*!/}
            {/!*},*!/}
          {/!*})}*!/}
          {/!*{*!/}
            {/!*this.state.startTime &&*!/}
            {/!*<List.Item>Time1: {this.state.startTime.toLocaleString()}</List.Item>*!/}
          {/!*}*!/}

        </List>
        <Calendar
          // style={{width:'.68rem',height:'100%'}}
          {...this.state.config}
          visible={this.state.show}
          onCancel={this.onCancel}
          onConfirm={this.onConfirm}
          onSelectHasDisableDate={this.onSelectHasDisableDate}
          getDateExtra={this.getDateExtra}
          defaultDate={now}
          minDate={new window.Date(+now - 5184000000)}
          maxDate={new window.Date(+now + 31536000000)}

        />
      </div>
    );
  }
}

export default connect()(Date)

*/
import React, { Component } from 'react'
import { Menu, Icon } from 'antd'
import { connect } from 'dva'
import { List, Switch, Calendar } from 'antd-mobile';
import enUS from 'antd-mobile/lib/calendar/locale/en_US';
import zhCN from 'antd-mobile/lib/calendar/locale/zh_CN';
import './date.css'
import moment from 'moment';

const extra = {
  '2017/07/15': { info: 'Disable', disable: true },
};

const now = new window.Date();
// extra[+new window.Date(now.getFullYear(), now.getMonth(), now.getDate() + 5)] = { info: 'Disable', disable: true };
// extra[+new window.Date(now.getFullYear(), now.getMonth(), now.getDate() + 6)] = { info: 'Disable', disable: true };
// extra[+new window.Date(now.getFullYear(), now.getMonth(), now.getDate() + 7)] = { info: 'Disable', disable: true };
// extra[+new window.Date(now.getFullYear(), now.getMonth(), now.getDate() + 8)] = { info: 'Disable', disable: true };

console.log(now);
Object.keys(extra).forEach((key) => {
  const info = extra[key];
  const date = new window.Date(key);
  if (!Number.isNaN(+date) && !extra[+date]) {
    extra[+date] = info;
  }
});

class Date extends Component {
  originbodyScrollY = document.getElementsByTagName('body')[0].style.overflowY;

  constructor(props) {
    super(props);
    this.state = {
      en: false,
      show: false,
      config: {},
    };
  }

  // showDate=()=>{
  //
  //
  //
  //   document.getElementsByTagName('body')[0].style.overflowY = 'hidden';
  //   this.setState({
  //     show: true,
  //     config:{type: 'one',pickTime: false},
  //   });
  //
  //
  // }
  renderBtn(zh, en, config = {}) {
    config.locale = this.state.en ? enUS : zhCN;

    return (
      <List.Item arrow="horizontal"
                 style={{width:680}}
                 onClick={
                   ()=>{
                     this.showDate()
                   }
                 }
      >
        {this.state.en ? en : zh}
      </List.Item>
    );
  }

  changeLanguage = () => {
    this.setState({
      en: !this.state.en,
    });
  }

  onSelectHasDisableDate = (dates) => {
    console.warn('onSelectHasDisableDate', dates);
  }

  onConfirm = (startTime, endTime) => {
    document.getElementsByTagName('body')[0].style.overflowY = this.originbodyScrollY;

    this.setState({
      show: false,
      startTime,
      endTime,
    });

    let getMonth = startTime.getMonth()+1
    let selectDate = startTime.getFullYear() + '-'+ getMonth +'-'+startTime.getDate()

    this.props.handleDate(selectDate);


    // this.selectDate();

  }

  selectDate= ()=>{

  }

  onCancel = () => {
    document.getElementsByTagName('body')[0].style.overflowY = this.originbodyScrollY;
    this.setState({
      show: false,
      startTime: undefined,
      endTime: undefined,
    });
  }

  getDateExtra = date => extra[+date];




  componentDidMount() {
    this.props.onRef(this)

  }
  render() {
    console.log(this.state.startTime);
    return (
      <div style={{}}>
        <List className="calendar-list" style={{ backgroundColor: 'white',opacity:0 ,width:0,display:'none'}}>
          {/*<List.Item className="item" extra={<Switch className="right" checked={!this.state.en} onChange={this.changeLanguage} />}>*/}
          {/*{this.state.en ? 'Chinese' : '中文'}*/}
          {/*</List.Item>*/}
          {/*{this.renderBtn('选择日期区间', 'Select Date Range')}*/}
          {/*{this.renderBtn('选择日期时间区间', 'Select DateTime Range', { pickTime: true })}*/}
          {this.renderBtn('选择日期', 'Select Date',{type: 'one',pickTime: false},)}

          {this.renderBtn('选择日期', 'Select Date',{type: 'one',pickTime: false},)}

          {/*{this.renderBtn('选择日期时间', 'Select DateTime', { type: 'one', pickTime: true })}*/}
          {/*{this.renderBtn('选择日期区间(快捷)', 'Select Date Range (Shortcut)', { showShortcut: true })}*/}
          {/*{this.renderBtn('选择日期时间区间(快捷)', 'Select DateTime Range (Shortcut)', { pickTime: true, showShortcut: true })}*/}
          {/*{this.renderBtn('大行距', 'XL row size', { rowSize: 'xl' })}*/}
          {/*{this.renderBtn('不无限滚动', 'infinite: false', { infinite: false })}*/}
          {/*{this.renderBtn('水平进入', 'Horizontal enter', { enterDirection: 'horizontal' })}*/}
          {/*{this.renderBtn('默认选择范围', 'Selected Date Range', { defaultValue: [new window.Date(+now - 86400000), new window.Date(+now - 345600000)] })}*/}
          {/*{this.renderBtn('onSelect API', 'onSelect API', {*/}
          {/*onSelect: (date, state) => {*/}
          {/*console.log('onSelect', date, state);*/}
          {/*return [date, new window.Date(+now - 604800000)];*/}
          {/*},*/}
          {/*})}*/}
          {/*{*/}
          {/*this.state.startTime &&*/}
          {/*<List.Item>Time1: {this.state.startTime.toLocaleString()}</List.Item>*/}
          {/*}*/}

        </List>
        <Calendar
           style={{width:'.68rem',height:'100%'}}
          {...this.state.config}
          visible={this.state.show}
          onCancel={this.onCancel}
          onConfirm={this.onConfirm}
          onSelectHasDisableDate={this.onSelectHasDisableDate}
          getDateExtra={this.getDateExtra}
          defaultDate={now}
          minDate={new window.Date(+now - 5184000000)}
          maxDate={new window.Date(+now + 31536000000)}

        />
      </div>
    );
  }
}

export default connect()(Date)