page.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. import React, { Component } from 'react';
  2. import './index.less';
  3. import { Icon, Radio } from 'antd';
  4. import Assets from '@src/components/Assets';
  5. import Page from '@src/containers/Page';
  6. import CheckboxItem from '../../../components/CheckboxItem';
  7. import Button from '../../../components/Button';
  8. export default class extends Page {
  9. renderView() {
  10. const { _list = [{}, {}, {}] } = this.state;
  11. return (
  12. <div style={{ paddingTop: 50 }}>
  13. <div className="content">
  14. <div className="t-1 m-b-2 f-w-b t-s-24">购物车</div>
  15. </div>
  16. <div className="content">
  17. <div className="m-b-1 t-8">您看中的课程已构成套餐,结算有优惠</div>
  18. </div>
  19. <div className="list content">
  20. {_list.map(item => {
  21. return <OrderItem data={item} />;
  22. })}
  23. </div>
  24. <div className="gift-list content">
  25. {_list.map(item => {
  26. return <GiftItem data={item} />;
  27. })}
  28. </div>
  29. <div className="footer">
  30. <div className="content">
  31. <div className="d-i-b m-t-1 m-r-2">
  32. <CheckboxItem className="v-a-m m-r-5" theme="white" checked />
  33. 全选
  34. </div>
  35. <div style={{ marginRight: 50 }} className="d-i-b m-t-1">
  36. <Button size="small" radius disabled={false}>
  37. 删除
  38. </Button>
  39. </div>
  40. <div style={{ marginTop: 15 }} className="d-i-b t-9 t-s-12 m-r-5">
  41. 优惠活动:
  42. </div>
  43. <div style={{ marginTop: 15 }} className="d-i-b t-s-12">
  44. <div>单项课程 2门9折,3门88折,4门及以上85折。</div>
  45. <div>1VS1私教 满30课时享95折优惠。</div>
  46. </div>
  47. <div className="f-r">
  48. <div className="d-i-b m-r-1 m-t-1">
  49. <div className="t-1 t-s-16 f-w-b">
  50. 实付<span className="m-l-5 t-7 t-s-20"> ¥ 15000</span>
  51. </div>
  52. <div className="t-1">
  53. 原价<span className="m-l-5 t-8 t-d-l-t">¥15200</span>
  54. <span className="m-l-5 t-8">(优惠活动-¥200)</span>
  55. </div>
  56. </div>
  57. <Button className="submit">立即付款</Button>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. );
  63. }
  64. }
  65. class GiftItem extends Component {
  66. render() {
  67. return (
  68. <div className="gift-item">
  69. {this.renderInfo()}
  70. {this.renderDetail()}
  71. </div>
  72. );
  73. }
  74. renderInfo() {
  75. return (
  76. <div className="gift-item-info">
  77. <Assets name="gift2" className="gift" width={20} height={20} />
  78. <div style={{ width: 360 }} className="d-i-b t-1 t-s-16">
  79. OG 20 套餐
  80. </div>
  81. <div style={{ width: 400 }} className="d-i-b t-8 t-s-12">
  82. 实付金额满20000元赠送
  83. </div>
  84. </div>
  85. );
  86. }
  87. renderDetail() {
  88. return (
  89. <div className="gift-item-detail l-h-20">
  90. <div className="select">
  91. <div style={{ width: 360 }} className="d-i-b t-1 t-s-12">
  92. <span className="d-i-b f-w-b m-r-5">请选择</span>
  93. </div>
  94. <div className="d-i-b t-1 t-s-12">可至「个人中心-课程」预约辅导时间。</div>
  95. </div>
  96. <div className="select-list m-b-5 l-h-16">
  97. <div>
  98. <div style={{ width: 360 }} className="d-i-b t-1 t-s-12">
  99. <span className="d-i-b m-r-5">
  100. <Radio className="m-r-5" /> OG 20 语法 SC
  101. </span>
  102. </div>
  103. <div className="d-i-b t-8 t-s-12">适合未参加过实战的考生</div>
  104. </div>
  105. <div>
  106. <div style={{ width: 360 }} className="d-i-b t-1 t-s-12">
  107. <span className="d-i-b m-r-5">
  108. <Radio className="m-r-5" /> OG 20 语法 SC
  109. </span>
  110. </div>
  111. <div className="d-i-b t-8 t-s-12">适合未参加过实战的考生</div>
  112. </div>
  113. </div>
  114. </div>
  115. );
  116. }
  117. }
  118. class OrderItem extends Component {
  119. constructor(props) {
  120. super(props);
  121. this.state = { open: false };
  122. }
  123. render() {
  124. return (
  125. <div className="order-item">
  126. {this.renderInfo()}
  127. {this.renderDetail()}
  128. </div>
  129. );
  130. }
  131. renderInfo() {
  132. return (
  133. <div className="order-item-info">
  134. <CheckboxItem theme="white" className="select" />
  135. <Icon className="close" type="close-circle" theme="filled" />
  136. <div style={{ width: 360 }} className="d-i-b t-1 t-s-16">
  137. OG 20 套餐
  138. </div>
  139. <div style={{ width: 400 }} className="d-i-b t-8 t-s-12">
  140. 实付金额满20000元赠送
  141. </div>
  142. <div style={{ width: 120 }} className="d-i-b t-8 t-s-12 p-r">
  143. 数量
  144. <input style={{ width: 32 }} className="m-l-5 t-c" />
  145. <Icon className="up" type="caret-up" />
  146. <Icon className="down" type="caret-down" />
  147. </div>
  148. <div className="d-i-b t-7 t-s-16"> ¥ 15000</div>
  149. </div>
  150. );
  151. }
  152. renderDetail() {
  153. const { open } = this.state;
  154. return (
  155. <div className="order-item-detail l-h-20">
  156. <div className="contain">
  157. <div style={{ width: 880 }} className="d-i-b t-1 t-s-12">
  158. <span className="d-i-b f-w-b m-r-5">
  159. 包含
  160. <Icon
  161. hidden={!open}
  162. className="t-10 c-p"
  163. type="caret-up"
  164. onClick={() => this.setState({ open: !open })}
  165. />
  166. <Icon
  167. hidden={open}
  168. className="t-10 c-p"
  169. type="caret-down"
  170. onClick={() => this.setState({ open: !open })}
  171. />
  172. </span>
  173. <span hidden={open} style={{ width: 300 }} className="d-i-b nowrap">
  174. OG 20 语法 SC +OG 20 语法 SC +OG 20 语法 SC +OG 20 语法 SC +
  175. </span>
  176. </div>
  177. <div className="d-i-b t-1 t-s-12 t-d-l-t"> ¥ 123022</div>
  178. </div>
  179. <div hidden={!open} className="contain-list m-b-5 l-h-16">
  180. <div>
  181. <div style={{ width: 360 }} className="d-i-b t-1 t-s-12">
  182. <span className="d-i-b m-r-5">OG 20 语法 SC</span>
  183. </div>
  184. <div className="d-i-b t-8 t-s-12">
  185. <span className="m-r-2">开通有效期: 3个月</span>
  186. <span className="m-l-2">使用有效期: 3个月</span>
  187. </div>
  188. </div>
  189. <div>
  190. <div style={{ width: 360 }} className="d-i-b t-1 t-s-12">
  191. <span className="d-i-b m-r-5">OG 20 语法 SC</span>
  192. </div>
  193. <div className="d-i-b t-8 t-s-12">
  194. <span className="m-r-2">开通有效期: 3个月</span>
  195. <span className="m-l-2">使用有效期: 3个月</span>
  196. </div>
  197. </div>
  198. <div>
  199. <div style={{ width: 360 }} className="d-i-b t-1 t-s-12">
  200. <span className="d-i-b m-r-5">OG 20 语法 SC</span>
  201. </div>
  202. <div className="d-i-b t-8 t-s-12">
  203. <span className="m-r-2">开通有效期: 3个月</span>
  204. <span className="m-l-2">使用有效期: 3个月</span>
  205. </div>
  206. </div>
  207. </div>
  208. <div className="service">
  209. <div className="d-i-b t-1 t-s-12">
  210. <span className="d-i-b f-w-b m-r-5">赠送服务</span>
  211. <span className="d-i-b">
  212. 机经券×1+VIP×3 月+模考×1
  213. <Icon className="m-l-5 close" type="exclamation-circle" theme="filled" />
  214. </span>
  215. </div>
  216. </div>
  217. </div>
  218. );
  219. }
  220. }