index.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. import React, { Component } from 'react';
  2. import './index.less';
  3. import { Popover } from 'antd';
  4. import { Carousel } from 'antd-mobile';
  5. import Assets from '@src/components/Assets';
  6. import { formatDate } from '@src/services/Tools';
  7. import Button from '../Button';
  8. import { User } from '../../stores/user';
  9. export class CommentFalls extends Component {
  10. createLayout() {
  11. const msnry = new Masonry('.comment-falls', {
  12. itemSelector: '.grid-item',
  13. });
  14. msnry.layout();
  15. }
  16. render() {
  17. const { list = [] } = this.props;
  18. return (
  19. <div className="comment-falls">
  20. {list.map(row => {
  21. return (
  22. <div className="grid-item">
  23. <div className="item">
  24. <div className="item-header">
  25. <Assets src={row.user ? row.user.avatar : row.avatar} />
  26. <div className="name">{row.user ? row.user.nickname : row.nickname}</div>
  27. <div className="date">{formatDate(row.createTime, 'yyyy年mm月dd日')}</div>
  28. </div>
  29. <div className="item-body">{row.content}</div>
  30. </div>
  31. </div>
  32. );
  33. })}
  34. </div>
  35. );
  36. }
  37. }
  38. export class AnswerCarousel extends Component {
  39. constructor(props) {
  40. super(props);
  41. this.state = { index: 1 };
  42. }
  43. onNext() {
  44. const index = this.state.index + 1;
  45. const { list = [] } = this.props;
  46. if (index >= list.length - 1) return;
  47. this.setState({ index });
  48. }
  49. onPrev() {
  50. const index = this.state.index - 1;
  51. if (index < 1) return;
  52. this.setState({ index });
  53. }
  54. render() {
  55. const { onFaq } = this.props;
  56. const { index } = this.state;
  57. const { list = [], hideBtn = false } = this.props;
  58. return (
  59. <div className="other-answer-carousel">
  60. <div className="body">
  61. {list.length > 0 && (
  62. <Carousel selectedIndex={index} cellSpacing={40} dots={false} slideWidth={'350px'}>
  63. {list.map(item => {
  64. return (
  65. <div className="item">
  66. <div className="item-block">
  67. <Assets name="question" />
  68. {item.content}
  69. </div>
  70. <div className="item-block">
  71. <Assets name="answer" />
  72. {item.answer}
  73. </div>
  74. </div>
  75. );
  76. })}
  77. </Carousel>
  78. )}
  79. <div className="fixed" />
  80. <Assets name="footer_next_highlight_1" className="next" onClick={() => this.onNext()} />
  81. <Assets name="footer_previous_highlight_1" className="prev" onClick={() => this.onPrev()} />
  82. </div>
  83. {!hideBtn && (
  84. <Button size="lager" radius onClick={() => User.needLogin().then(() => onFaq())}>
  85. <Assets name="kf" className="m-r-5" />立即咨询
  86. </Button>
  87. )
  88. }
  89. </div>
  90. );
  91. }
  92. }
  93. export class Consultation extends Component {
  94. render() {
  95. const { data = {} } = this.props;
  96. return (
  97. <div className="other-consultation">
  98. <div className="list">
  99. <div className="item">
  100. <Assets name="call" />
  101. </div>
  102. <div className="item">
  103. <Assets name="mail" />
  104. </div>
  105. <div className="item">
  106. <Assets name="wechat_1" />
  107. </div>
  108. </div>
  109. <div className="line" />
  110. <div className="list">
  111. <div className="item">
  112. <div className="t-1 t-s-16 m-b-10">电话咨询</div>
  113. <div className="t-1 t-s-16 t-w-b">{data.phone}</div>
  114. </div>
  115. <div className="item">
  116. <div className="t-1 t-s-16 m-b-10">邮件咨询</div>
  117. <div className="t-1 t-s-16 t-w-b">{data.email}</div>
  118. </div>
  119. <div className="item">
  120. <div className="t-1 t-s-16 m-b-10">微信咨询</div>
  121. <div className="t-1 t-s-16 t-w-b">
  122. <Popover content={<Assets name="qrcode" />}>
  123. <span>
  124. <Assets src={data.wechatImage} />
  125. </span>
  126. </Popover>
  127. </div>
  128. </div>
  129. </div>
  130. </div>
  131. );
  132. }
  133. }
  134. export class Contact extends Component {
  135. render() {
  136. const { data = {} } = this.props;
  137. return (
  138. <div className="other-contact">
  139. <div className="body">
  140. <div className="step-list">
  141. <div className="step">
  142. <div className="title">工作机会</div>
  143. <Assets name="logo2" />
  144. </div>
  145. <div className="step" style={{ paddingLeft: 80 }}>
  146. <div className="title">联系我们</div>
  147. <div className="desc">{data.phone}</div>
  148. <div className="desc">{data.email}</div>
  149. <div className="desc">{data.wechat}</div>
  150. </div>
  151. <div className="step" style={{ paddingLeft: 140 }}>
  152. <div className="title">关注我们</div>
  153. <div className="qrcode">
  154. <Assets src={data.wechatImage} />
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. );
  161. }
  162. }