index.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. import React from 'react';
  2. import { Tooltip } from 'antd';
  3. import './index.less';
  4. import Assets from '@src/components/Assets';
  5. import Module from '../Module';
  6. import ProgressButton from '../ProgressButton';
  7. import Button from '../Button';
  8. export default function Panel(props) {
  9. const { style, message, data = {}, col = 3, title, onClick } = props;
  10. return (
  11. <Module style={style} className="panel">
  12. <div className="header">
  13. <span>{title}</span>
  14. {message && (
  15. <Tooltip title={message} trigger="click">
  16. <Assets className="qa" name="QA" svg />
  17. </Tooltip>
  18. )}
  19. </div>
  20. <div className="body">
  21. <div className="chart-info">
  22. <div className="chart" />
  23. <div className="info">
  24. {(data.info || []).map(row => {
  25. return (
  26. <div className="item">
  27. <div className="title">{row.title}</div>
  28. <div className="data">
  29. <span className="text">{row.number}</span>
  30. {row.unit}
  31. </div>
  32. </div>
  33. );
  34. })}
  35. {(data.desc || []).length > 0 && (
  36. <div className="desc-wrapper">
  37. {(data.desc || []).map(row => {
  38. return <div className="desc">{row}</div>;
  39. })}
  40. </div>
  41. )}
  42. </div>
  43. </div>
  44. <div className={`list col-${col}`}>
  45. {(data.children || []).map(item => {
  46. return (
  47. <ProgressButton
  48. className="item"
  49. progress={item.progress}
  50. onClick={() => {
  51. if (onClick) onClick(item);
  52. }}
  53. >
  54. {item.title}
  55. </ProgressButton>
  56. );
  57. })}
  58. </div>
  59. </div>
  60. </Module>
  61. );
  62. }
  63. export function WaitPanel(props) {
  64. const { style, message, data = {}, col = 3, title, onClick } = props;
  65. return (
  66. <Module style={style} className="panel wait-panel">
  67. <div className="header">
  68. <span>{title}</span>
  69. {message && (
  70. <Tooltip title={message} trigger="click">
  71. <Assets className="qa" name="QA" svg />
  72. </Tooltip>
  73. )}
  74. </div>
  75. <div className="body">
  76. <div className="chart-info">
  77. <div className="info">
  78. <div className="text">您还未开通本月机经</div>
  79. {(data.desc || []).length > 0 && (
  80. <div className="desc-wrapper">
  81. {(data.desc || []).map(row => {
  82. return <div className="desc">{row}</div>;
  83. })}
  84. </div>
  85. )}
  86. {(data.info || []).map(row => {
  87. return (
  88. <div className="item">
  89. <div className="title">{row.title}</div>
  90. <div className="data">
  91. <span className="text">{row.number}</span>
  92. {row.unit}
  93. </div>
  94. </div>
  95. );
  96. })}
  97. </div>
  98. </div>
  99. <div className={`list col-${col}`}>
  100. {(data.children || []).map(item => {
  101. return (
  102. <ProgressButton
  103. className="item"
  104. progress={item.progress}
  105. onClick={() => {
  106. if (onClick) onClick(item);
  107. }}
  108. >
  109. {item.title}
  110. </ProgressButton>
  111. );
  112. })}
  113. </div>
  114. <Button size="lager" radius>
  115. 立即开通
  116. </Button>
  117. </div>
  118. </Module>
  119. );
  120. }
  121. export function BuyPanel(props) {
  122. const { style, message, title } = props;
  123. return (
  124. <Module style={style} className="panel buy-panel">
  125. <div className="header">
  126. <span>{title}</span>
  127. {message && (
  128. <Tooltip title={message} trigger="click">
  129. <Assets className="qa" name="QA" svg />
  130. </Tooltip>
  131. )}
  132. </div>
  133. <div className="body">
  134. <Assets name="banner" />
  135. <div className="text">您还未购买本月机经</div>
  136. <Button radius size="small" width={80}>
  137. 立即购买
  138. </Button>
  139. </div>
  140. </Module>
  141. );
  142. }
  143. export function SmallPanel(props) {
  144. const { style, title, lock, data = {} } = props;
  145. return (
  146. <Module style={style} className="panel small-panel">
  147. <div className="header">
  148. <span>{title}</span>
  149. {lock && <Assets name="lock" />}
  150. </div>
  151. <div className="body">
  152. <div className="chart-info">
  153. <div className="chart" />
  154. <div className="info">
  155. {(data.info || []).map(row => {
  156. return (
  157. <div className="item">
  158. <div className="title">{row.title}</div>
  159. <div className="data">
  160. <span className="text">{row.number}</span>
  161. {row.unit}
  162. </div>
  163. </div>
  164. );
  165. })}
  166. <div className="date">有效期至:2019-11-13</div>
  167. </div>
  168. </div>
  169. </div>
  170. </Module>
  171. );
  172. }
  173. export function SmallWaitPanel(props) {
  174. const { style, title } = props;
  175. return (
  176. <Module style={style} className="panel small-wait-panel">
  177. <div className="header">
  178. <span>{title}</span>
  179. <Assets name="lock" />
  180. </div>
  181. <div className="body">
  182. <div className="title">请于20190-07-05前开通</div>
  183. <div className="btn">
  184. <Button size="lager" width={120} radius>
  185. 立即开通
  186. </Button>
  187. </div>
  188. </div>
  189. </Module>
  190. );
  191. }
  192. export function SmallBuyPanel(props) {
  193. const { style, title } = props;
  194. return (
  195. <Module style={style} className="panel small-buy-panel">
  196. <div className="header">
  197. <span>{title}</span>
  198. <Assets name="lock" />
  199. </div>
  200. <div className="body">
  201. <Assets name="banner_1" />
  202. <Button radius size="small" width={80}>
  203. 立即购买
  204. </Button>
  205. </div>
  206. </Module>
  207. );
  208. }