index.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import React, { Component } from 'react';
  2. import { CopyToClipboard } from 'react-copy-to-clipboard';
  3. import './index.less';
  4. import Assets from '@src/components/Assets';
  5. import { asyncSMessage } from '@src/services/AsyncTools';
  6. import { Icon } from 'antd';
  7. import Button from '../Button';
  8. import { Input } from '../Login';
  9. import { Main } from '../../stores/main';
  10. import { My } from '../../stores/my';
  11. import { PcUrl, H5Url } from '../../../Constant';
  12. export default class Invite extends Component {
  13. constructor(props) {
  14. super(props);
  15. this.state = { data: this.props.data || {}, qr: Main.qrCode(`${H5Url}/id/${(this.props.data || {}).inviteCode}`) };
  16. }
  17. changeData(field, value) {
  18. let { data } = this.state;
  19. data = data || {};
  20. data[field] = value;
  21. this.setState({ data, error: null });
  22. }
  23. send() {
  24. const { data } = this.state;
  25. if (!data.emails) return;
  26. My.inviteEmail(data.emails.replace(/;/g, ';').split(';'))
  27. .then(() => {
  28. data.emails = '';
  29. this.setState({ success: true, data });
  30. });
  31. }
  32. render() {
  33. const { data } = this.props;
  34. const { success, qr } = this.state;
  35. return (
  36. <div className="invite-block">
  37. <div className="title-block">
  38. <b>方法一:</b> 将邀请链接发送给好友
  39. </div>
  40. <div className="input-layout">
  41. <div className="input-block">
  42. <div className="t1">http://</div>
  43. <div className="t2">{PcUrl.replace('http://', '')}/id/{data.inviteCode}</div>
  44. </div>
  45. <CopyToClipboard
  46. text={`${PcUrl}/id/${data.inviteCode}`}
  47. onCopy={() => asyncSMessage('已复制')}>
  48. <Button radius>复制</Button>
  49. </CopyToClipboard>
  50. </div>
  51. <div className="title-block">
  52. <b>方法二:</b> 微信扫码分享
  53. </div>
  54. <div className="qrcode">
  55. <Assets src={qr} />
  56. </div>
  57. <div className="title-block">
  58. <b>方法三:</b> 向好友发送邀请邮件
  59. </div>
  60. <div className="input-layout">
  61. <div className="input-block">
  62. <Input
  63. placeholder="输入多个邮箱,用';'隔开"
  64. value={this.state.data.emails || ''}
  65. error={this.state.error}
  66. onChange={e => {
  67. this.changeData('emails', e.target.value);
  68. }}
  69. />
  70. {success && <div className="success">
  71. <Icon type="check" />邀请已发送
  72. </div>}
  73. </div>
  74. <Button radius onClick={() => {
  75. this.send();
  76. }}>发送</Button>
  77. </div>
  78. </div>
  79. );
  80. }
  81. }