index.js 4.34 KB
import React, { Component } from 'react';
import { connect } from 'dva';
import { Tabs, Toast, ActionSheet } from 'antd-mobile';
import shareHide from "../../utils/shareHide";
import Templates from './templates';
import MyList from './mylist';

import css from './css.less';
const isIPhone = new RegExp('\\biPhone\\b|\\biPod\\b', 'i').test(window.navigator.userAgent);
let wrapProps;
if (isIPhone) {
  wrapProps = {
    onTouchStart: e => e.preventDefault(),
  };
}
class Index extends Component{
  constructor(props) {
    super(props);
    this.state = {
      templates: [],
      mylist: [],
      isloading: false,
      userId:null,
    }
  }

  componentDidMount() {
    document.title = '邀请函';
    const _this = this;
    const userId = localStorage.id ? localStorage.id : null;
    Toast.loading('loading...', 1000);
    shareHide();
    this.setState({ userId })
    this.props.dispatch({
      type: 'Invitation/GetInvitationTmpsList',
      payload: {},
      callback(res) {
        _this.setState({ templates: res })
        Toast.hide();
      }
    })
    this.props.dispatch({
      type: 'Invitation/GetMyInvitList',
      payload: {
        createName: userId ? userId : ''
      },
      callback(res) {
        _this.setState({ mylist: res, isloading: true })
      }
    })


  }

  invitationEdit = (data) => {
    this.props.history.push({ pathname: "/invitation/addEdit" });
    data.specificLocation = JSON.parse(data.specificLocation);
    sessionStorage.setItem('invitationInfo', JSON.stringify(data));
  }
  invitationDel = (id) => {
    const BUTTONS = ['删除', '取消'];
    ActionSheet.showActionSheetWithOptions({
      options: BUTTONS,
      cancelButtonIndex: BUTTONS.length - 1,
      destructiveButtonIndex: BUTTONS.length - 2,
      // title: '删除',
      message: '确定删除此邀请函?',
      maskClosable: true,
      'data-seed': 'logId',
      wrapProps,
    },
      (buttonIndex) => {
        if (buttonIndex === 0) {
          const _this = this;
          _this.props.dispatch({
            type: 'Invitation/del',
            payload: {
              id
            },
            callback(res) {
              if (res.status === true) {
                _this.props.dispatch({
                  type: 'Invitation/GetMyInvitList',
                  payload: {
                    createName: _this.state.userId ? _this.state.userId : ''
                  },
                  callback(data) {
                    _this.setState({ mylist: data })
                  }
                })
              }
              Toast.info(res.message, 1);
            }
          })
        }
      });

  }

  invitationPrev = (id) => {
    this.props.history.push({ pathname: "/invitation/preview", search: 'isprev=2&id=' + id });
  }

  addInvitation = (itm) => {
    if (this.state.mylist.length >= 20) {
      Toast.fail('邀请函数量过多,请删除不需要的邀请函',2);
    } else {
      this.props.history.push({ pathname: "/invitation/addEdit" })
      sessionStorage.setItem('invitationInfo', JSON.stringify({ invitationId: itm.id, invitationPath: itm.invitationPath }))
    }
  }
  render() {
    let check = 0
    if(sessionStorage.getItem("key") == '我的'){
      check = 1
    }
    return <div className={css.invitationWrap} style={{ background: '#fff' }}>
      <Tabs
        tabs={[{ title: '所有模板', sub: '1' }, { title: '我的', sub: '2' }]}
         initialPage ={check}
        onChange={(t, i) => {
          let checkTab = t.title;
          sessionStorage.setItem( "key", checkTab);
          // if (i === 0 && this.state.clientList.length === 0) { this.getClientUnpassList(); } else if (this.state.cientListed.length === 0){
          //   this.getClientPassedList();
          // }

        }}
      >
        <div>
          <div className={css.splitline}></div>
          <Templates
            templates={this.state.templates}
            addInvitation={this.addInvitation}
          />
        </div>
        <div className={(this.state.isloading && this.state.mylist.length === 0 ? css.noInfo : '')}>
          <div className={css.splitline}></div>
          <MyList
            mylist={this.state.mylist}
            invitationPrev={this.invitationPrev}
            invitationEdit={this.invitationEdit}
            invitationDel={this.invitationDel}
          />
        </div>
      </Tabs>
    </div>
  }
}

export default connect()(Index);