index.js 7.1 KB

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