page.tsx 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. "use client";
  2. import { useState, useEffect } from "react";
  3. import { useGlobalContext } from "@/providers/GlobalProvider";
  4. import { RiCloseFill } from 'react-icons/ri';
  5. interface Package {
  6. id: number;
  7. name: string;
  8. description: string;
  9. price: string;
  10. image: string;
  11. days: number;
  12. basePoints: number;
  13. seniorPoints: number;
  14. }
  15. const packages: Package[] = [
  16. {
  17. id: 1,
  18. name: "入门体验会员",
  19. description:
  20. "套餐包含500积分通用AI模型(AI3.5Turbo等模型)、100积分增强AI模型(AI4o大模型)、30积分高级绘画额度",
  21. price: "19.99",
  22. image:
  23. "http://ai3666.oss-cn-beijing.aliyuncs.com/ai/2024-11-14/%C3%A7%C2%A8%C2%BF%C3%A5%C2%AE%C2%9A%C3%A8%C2%AE%C2%BE%C3%A8%C2%AE%C2%A1-1.jpg",
  24. days: 30,
  25. basePoints: 100,
  26. seniorPoints: 100,
  27. },
  28. {
  29. id: 2,
  30. name: "季度高级会员",
  31. description:
  32. "套餐包含800积分通用AI模型(AI3.5Turbo等模型)、1000积分增强AI模型(AI4o大模型)、300积分高级绘画额度",
  33. price: "99.00",
  34. image:
  35. "http://ai3666.oss-cn-beijing.aliyuncs.com/ai/2024-11-14/%C3%A7%C2%A8%C2%BF%C3%A5%C2%AE%C2%9A%C3%A8%C2%AE%C2%BE%C3%A8%C2%AE%C2%A1-2.jpg",
  36. days: 120,
  37. basePoints: 800,
  38. seniorPoints: 1000,
  39. },
  40. {
  41. id: 3,
  42. name: "年度畅享会员",
  43. description:
  44. "套餐包含3000积分通用AI模型(AI3.5Turbo等模型)、3000积分增强AI模型(AI4o大模型)、300积分高级绘画额度",
  45. price: "365.00",
  46. image:
  47. "http://ai3666.oss-cn-beijing.aliyuncs.com/ai/2024-11-14/%C3%A7%C2%A8%C2%BF%C3%A5%C2%AE%C2%9A%C3%A8%C2%AE%C2%BE%C3%A8%C2%AE%C2%A1-3.jpg",
  48. days: 365,
  49. basePoints: 3000,
  50. seniorPoints: 3000,
  51. },
  52. ];
  53. export default function VipBoxPage() {
  54. const { changeMenuIndex } = useGlobalContext();
  55. const [showBuyBox, setShowBuyBox] = useState(false);
  56. const closeBuyBox = () => {
  57. setShowBuyBox(false);
  58. }
  59. useEffect(() => {
  60. }, []);
  61. return (
  62. <>
  63. <section className="text-gray-600 body-font mt-6 md:mt-0">
  64. <div className="w-full md:container md:px-5 md:py-24 mx-auto">
  65. <div className="flex flex-col text-center w-full">
  66. <h1 className="sm:text-4xl text-3xl font-medium title-font mb-2 text-gray-900 dark:text-white">
  67. 会员套餐
  68. </h1>
  69. <p className="lg:w-2/3 mx-auto leading-relaxed text-base text-gray-500">
  70. 尽情探索,欢迎光临我们的在线商店、感谢您选择我们、让我们一同开启愉悦的购物之旅!
  71. </p>
  72. </div>
  73. <div className="px-4 py-8 sm:px-6 sm:py-12 lg:px-8 lg:py-16">
  74. <div className="grid grid-cols-1 gap-2 md:grid-cols-2 md:gap-4 xl:grid-cols-3 xl:gap-8">
  75. {packages.map((pkg) => (
  76. <div
  77. className="rounded-2xl border border-gray-200 shadow-sm dark:border-gray-500"
  78. key={pkg.id}
  79. >
  80. <div className="p-6 sm:px-8">
  81. <img
  82. className="lg:h-48 md:h-36 w-full object-cover object-center rounded-2xl"
  83. src={pkg.image}
  84. alt={pkg.name}
  85. />
  86. <h2 className="mt-2 text-lg font-medium text-gray-900 dark:text-white">
  87. {pkg.name}
  88. </h2>
  89. <p className="mt-2 text-gray-700 dark:text-gray-500">
  90. {pkg.description}
  91. </p>
  92. <p className="mt-2 sm:mt-4">
  93. <strong className="text-3xl font-bold text-gray-900 sm:text-4xl dark:text-gray-300">
  94. {pkg.days}
  95. </strong>
  96. <span className="text-sm font-medium text-gray-700 dark:text-gray-500 ml-1">
  97. </span>
  98. </p>
  99. <button className="mt-4 block w-full rounded px-12 py-3 text-center text-sm font-medium text-white global-bg-color focus:outline-none focus:ring sm:mt-6 transition ease-in-out hover:-translate-y-1" onClick={() => setShowBuyBox(true)}>
  100. ¥{pkg.price}
  101. </button>
  102. </div>
  103. <div className="px-6 pb-6 sm:px-8 sm:pb-8">
  104. <ul className="space-y-2 text-gray-700 dark:text-gray-500">
  105. <li className="flex justify-between">
  106. <span>基础模型额度</span>
  107. <span>{pkg.basePoints} 积分 </span>
  108. </li>
  109. <li className="flex justify-between">
  110. <span>高级模型额度</span>
  111. <span>{pkg.seniorPoints} 积分 </span>
  112. </li>
  113. </ul>
  114. </div>
  115. </div>
  116. ))}
  117. </div>
  118. </div>
  119. </div>
  120. </section>
  121. {showBuyBox && (
  122. <div className="pay-box">
  123. <div className="pay-mask"></div>
  124. <div className="pay-div p-7 bg-white dark:bg-gray-900 text-base rounded w-11/12 lg:w-full max-w-screen-lg">
  125. <RiCloseFill className="absolute right-2.5 top-2.5 w-8 h-8 cursor-pointer transform duration-500 ease-in-out hover:scale-125 text-gray-500" onClick={closeBuyBox}></RiCloseFill>
  126. <h2 className="text-xl global-txt-color">会员套餐支付</h2>
  127. <div className="py-10 grid grid-cols-1 md:grid-cols-2 md:gap-8">
  128. <div className="">
  129. <div className="flex">
  130. <div className="w-20 text-nowrap text-left h-6 leading-8 shrink-0">
  131. 需要支付:
  132. </div>
  133. <div className="h-6 text-red-700 text-2xl">¥19.90</div>
  134. </div>
  135. <div className="mt-4 flex ">
  136. <div className="w-20 text-nowrap text-left shrink-0">套餐名称:</div>
  137. <div className="text-left">入门体验会员</div>
  138. </div>
  139. <div className="mt-4 flex">
  140. <div className="w-20 text-nowrap text-left shrink-0">套餐描述:</div>
  141. <div className="text-left w-5/6">
  142. 套餐包含500积分通用AI模型(AI3.5Turbo等模型)、100积分增强AI模型(AI4o大模型)、30积分高级绘画额度
  143. </div>
  144. </div>
  145. </div>
  146. <div className="text-center py-4 md:py-0 mt-5 md:mt-0 border-t md:border-t-0">
  147. <div>
  148. 请在 <span className="text-red-700">00:03:34</span>{" "}
  149. 时间内完成支付!
  150. </div>
  151. <div className="w-full pt-3">
  152. <div className="relative w-72 mx-auto p-3 border rounded">
  153. <img
  154. src="/temp/wxpay.png"
  155. className="w-12 bg-white p-1 div-center"
  156. />
  157. <img src="/temp/qrcode.png" />
  158. </div>
  159. </div>
  160. <div className="mt-2">打开微信扫码支付</div>
  161. </div>
  162. </div>
  163. </div>
  164. </div>
  165. )}
  166. </>
  167. );
  168. }