index.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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 Tabs from '../Tabs';
  9. import { User } from '../../stores/user';
  10. export class CommentFalls extends Component {
  11. createLayout() {
  12. const msnry = new Masonry('.comment-falls', {
  13. itemSelector: '.grid-item',
  14. });
  15. msnry.layout();
  16. }
  17. render() {
  18. const { list = [] } = this.props;
  19. return (
  20. <div className="comment-falls">
  21. {list.map(row => {
  22. return (
  23. <div className="grid-item">
  24. <div className="item">
  25. <div className="item-header">
  26. <Assets className="avatar" src={row.user ? row.user.avatar : row.avatar} />
  27. <div className="name">{row.user ? row.user.nickname : row.nickname}</div>
  28. <div className="date">{formatDate(row.createTime, 'YYYY年MM月DD日')}</div>
  29. </div>
  30. <div className="item-body">{row.content}</div>
  31. </div>
  32. </div>
  33. );
  34. })}
  35. </div>
  36. );
  37. }
  38. }
  39. export class AnswerCarousel extends Component {
  40. constructor(props) {
  41. super(props);
  42. this.state = { index: 1 };
  43. }
  44. onNext() {
  45. const index = this.state.index + 1;
  46. const { list = [] } = this.props;
  47. if (index >= list.length - 1) return;
  48. this.setState({ index });
  49. }
  50. onPrev() {
  51. const index = this.state.index - 1;
  52. if (index < 1) return;
  53. this.setState({ index });
  54. }
  55. render() {
  56. const { onFaq, tabActive, tabs = [], onTabChange } = this.props;
  57. const { index } = this.state;
  58. const { list = [], hideBtn = false } = this.props;
  59. return (
  60. <div className="other-answer-carousel">
  61. <div className="body">
  62. {tabs.length > 0 && (
  63. <Tabs
  64. type="tag"
  65. theme="white"
  66. tabs={tabs}
  67. space={6}
  68. width={86}
  69. active={tabActive}
  70. onChange={key => onTabChange && onTabChange(key)}
  71. />
  72. )}
  73. {list.length > 0 && (
  74. <Carousel selectedIndex={index} cellSpacing={40} dots={false} slideWidth={'350px'}>
  75. {list.map(item => {
  76. return (
  77. <div className="item">
  78. <div className="item-block">
  79. <Assets name="question" />
  80. {item.content}
  81. </div>
  82. <div className="item-block">
  83. <Assets name="answer" />
  84. {item.answer}
  85. </div>
  86. </div>
  87. );
  88. })}
  89. </Carousel>
  90. )}
  91. {!tabs && <div className="fixed" />}
  92. <Assets name="footer_next_highlight_1" className="next c-p" onClick={() => this.onNext()} />
  93. <Assets name="footer_previous_highlight_1" className="prev c-p" onClick={() => this.onPrev()} />
  94. </div>
  95. {!hideBtn && (
  96. <Button size="lager" radius onClick={() => User.needLogin().then(() => onFaq())}>
  97. <Assets name="kf" className="m-r-5" />
  98. 立即咨询
  99. </Button>
  100. )}
  101. </div>
  102. );
  103. }
  104. }
  105. export class Consultation extends Component {
  106. render() {
  107. const { data = {} } = this.props;
  108. return (
  109. <div className="other-consultation">
  110. <div className="list">
  111. <div className="item">
  112. <Assets name="call" />
  113. </div>
  114. <div className="item">
  115. <Assets name="mail" />
  116. </div>
  117. <div className="item">
  118. <Assets name="wechat_1" />
  119. </div>
  120. </div>
  121. <div className="line" />
  122. <div className="list">
  123. <div className="item">
  124. <div className="t-1 t-s-16 m-b-10">电话咨询</div>
  125. <div className="t-1 t-s-16 t-w-b">{data.phone}</div>
  126. </div>
  127. <div className="item">
  128. <div className="t-1 t-s-16 m-b-10">邮件咨询</div>
  129. <div className="t-1 t-s-16 t-w-b">{data.email}</div>
  130. </div>
  131. <div className="item">
  132. <div className="t-1 t-s-16 m-b-10">微信咨询</div>
  133. <div className="t-1 t-s-16 t-w-b">
  134. <Popover content={<Assets src={data.wechatImage} />}>
  135. <span>
  136. <Assets className="m-l-1" name="erweima" />
  137. </span>
  138. </Popover>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. );
  144. }
  145. }
  146. export class Contact extends Component {
  147. render() {
  148. const { data = {} } = this.props;
  149. return (
  150. <div className="other-contact">
  151. <div className="body">
  152. <div className="step-list">
  153. <div className="step">
  154. <div className="title">工作机会</div>
  155. <Assets name="logo2" />
  156. </div>
  157. <div className="step" style={{ paddingLeft: 80 }}>
  158. <div className="title">联系我们</div>
  159. <div className="desc">
  160. <Assets name="white_tel" className="m-r-5" />
  161. {data.phone}
  162. </div>
  163. <div className="desc">
  164. <Assets name="white_mail" className="m-r-5" />
  165. {data.email}
  166. </div>
  167. <div className="desc">
  168. <Assets name="white_wechat" className="m-r-5" />
  169. {data.wechat}
  170. </div>
  171. </div>
  172. <div className="step" style={{ paddingLeft: 140 }}>
  173. <div className="title">关注我们</div>
  174. <div className="qrcode">
  175. <Assets src={data.wechatImage} />
  176. </div>
  177. </div>
  178. </div>
  179. </div>
  180. </div>
  181. );
  182. }
  183. }
  184. export class Comment extends Component {
  185. render() {
  186. const { data } = this.props;
  187. return (
  188. <div className="comment-item">
  189. <Assets className="avatar m-r-1" src={data.user ? data.user.avatar : data.avatar} />
  190. <div className="d-i-b">
  191. <div className="t-1 t-s-18">{data.user ? data.user.nickname : data.nickname}</div>
  192. <div className="t-3">{formatDate(data.createTime, 'YYYY-MM-DD')}</div>
  193. </div>
  194. <div className="t-1 t-s-18 m-t-1">{data.content}</div>
  195. </div>
  196. );
  197. }
  198. }