四零语境前端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

447 lines
11 KiB

1 month ago
  1. <template>
  2. <view class="promote-page">
  3. <uv-status-bar></uv-status-bar>
  4. <!-- 主要内容区域 -->
  5. <view class="content">
  6. <!-- 推广官图片 -->
  7. <view class="promote-image-container">
  8. <uv-icon name="arrow-left" size="20" color="black" @click="goBack"></uv-icon>
  9. <view :style="{flex: 1, justifyContent: 'center', display: 'flex'}">
  10. <image
  11. class="promote-image"
  12. src="/static/推广官.png"
  13. mode="widthFix"
  14. ></image>
  15. </view>
  16. </view>
  17. <!-- 推广标语图片 -->
  18. <view class="slogan-container">
  19. <image
  20. class="slogan-image"
  21. src="/static/推广标语.png"
  22. mode="widthFix"
  23. ></image>
  24. </view>
  25. </view>
  26. <!-- 外部大容器 -->
  27. <view class="main-container">
  28. <!-- 个人信息容器 -->
  29. <view class="profile-container">
  30. <image class="profile-avatar" src="/static/待上传头像.png" mode="aspectFill"></image>
  31. <view class="profile-info">
  32. <text class="profile-name">战斗世界</text>
  33. <text class="profile-id">ID: 5625354</text>
  34. </view>
  35. <view class="profile-stats">
  36. <view class="stat-item">
  37. <text class="stat-number">888</text>
  38. <text class="stat-label">推广人数</text>
  39. </view>
  40. <view class="stat-item">
  41. <text class="stat-number">341</text>
  42. <text class="stat-label">总佣金</text>
  43. </view>
  44. </view>
  45. </view>
  46. <!-- 功能按钮区域 -->
  47. <view class="function-buttons">
  48. <view class="function-item" @click="goTeam">
  49. <image class="function-icon" src="/static/团队图标.png" mode="aspectFit"></image>
  50. <text class="function-text">我的团队</text>
  51. </view>
  52. <view class="function-item">
  53. <image class="function-icon" src="/static/二维码图标.png" mode="aspectFit"></image>
  54. <text class="function-text">我的二维码</text>
  55. </view>
  56. <view class="function-item" @click="goCash">
  57. <image class="function-icon" src="/static/提现图标.png" mode="aspectFit"></image>
  58. <text class="function-text">提现</text>
  59. </view>
  60. </view>
  61. <!-- 余额显示 -->
  62. <view class="balance-section">
  63. <text class="balance-label">余额</text>
  64. <text class="balance-amount">¥88.32</text>
  65. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  66. </view>
  67. <!-- 转账记录容器 -->
  68. <view class="record-container">
  69. <view class="record-list">
  70. <view class="record-item" v-for="(item, index) in recordList" :key="index">
  71. <view class="record-avatar">
  72. <image class="avatar" :src="item.avatar" mode="aspectFill"></image>
  73. <text class="avatar-name">{{ item.avatarName }}</text>
  74. </view>
  75. <view class="record-info">
  76. <text class="record-title">{{ item.title }}</text>
  77. <text class="record-date">{{ item.date }}</text>
  78. </view>
  79. <view class="record-amount">
  80. <text class="amount">{{ item.amount }}</text>
  81. <text class="status" :class="item.statusClass">{{ item.status }}</text>
  82. </view>
  83. </view>
  84. </view>
  85. </view>
  86. </view>
  87. <!-- 底部固定按钮 -->
  88. <view class="bottom-button-container">
  89. <uv-button :custom-style="{
  90. height: '82rpx',
  91. borderRadius: '198rpx',
  92. background: '#06DADC',
  93. border: '2rpx solid #06DADC',
  94. lineHeight: '82rpx',
  95. fontSize: '36rpx'
  96. }" type="primary">分享</uv-button>
  97. <uv-safe-bottom></uv-safe-bottom>
  98. </view>
  99. </view>
  100. </template>
  101. <script>
  102. export default {
  103. data() {
  104. return {
  105. recordList: [
  106. {
  107. avatar: '/static/待上传头像.png',
  108. title: '分享提成获得奖励',
  109. date: '2025-03-18',
  110. amount: '+5',
  111. status: '已领取,微信打款',
  112. statusClass: 'status-received',
  113. avatarName: '战斗世界'
  114. },
  115. {
  116. avatar: '/static/待上传头像.png',
  117. title: '分享提成获得奖励',
  118. date: '2025-03-18',
  119. amount: '+5',
  120. status: '领取',
  121. statusClass: 'status-available',
  122. avatarName: '战斗世界'
  123. },
  124. {
  125. avatar: '/static/待上传头像.png',
  126. title: '分享提成获得奖励',
  127. date: '2025-03-18',
  128. amount: '+5',
  129. status: '已领取,线下打款',
  130. statusClass: 'status-received',
  131. avatarName: '战斗世界'
  132. },
  133. {
  134. avatar: '/static/待上传头像.png',
  135. title: '分享提成获得奖励',
  136. date: '2025-03-18',
  137. amount: '+5',
  138. status: '领取',
  139. statusClass: 'status-available',
  140. avatarName: '战斗世界'
  141. },
  142. {
  143. avatar: '/static/待上传头像.png',
  144. title: '分享提成获得奖励',
  145. date: '2025-03-18',
  146. amount: '+5',
  147. status: '领取',
  148. statusClass: 'status-available',
  149. avatarName: '战斗世界'
  150. }
  151. ]
  152. }
  153. },
  154. methods: {
  155. goBack() {
  156. uni.navigateBack()
  157. },
  158. goTeam() {
  159. uni.navigateTo({
  160. url: '/subPages/user/team'
  161. })
  162. },
  163. goCash() {
  164. uni.navigateTo({
  165. url: '/subPages/user/cash'
  166. })
  167. }
  168. }
  169. }
  170. </script>
  171. <style lang="scss" scoped>
  172. .promote-page {
  173. min-height: 100vh;
  174. background: linear-gradient(124deg, #22F2EB 0%, #24B0F6 30%);
  175. // background: linear-gradient(124deg, #22F2EB 0%, #24B0F6 100%);
  176. }
  177. .content {
  178. padding: 0rpx 40rpx 0;
  179. .promote-image-container {
  180. display: flex;
  181. justify-content: center;
  182. margin-bottom: 30rpx;
  183. align-items: center;
  184. .promote-image {
  185. margin: 0 auto;
  186. width: 168rpx;
  187. }
  188. }
  189. .slogan-container {
  190. display: flex;
  191. justify-content: center;
  192. margin-bottom: 80rpx;
  193. .slogan-image {
  194. width: 670rpx;
  195. }
  196. }
  197. }
  198. // 外部大容器
  199. .main-container {
  200. width: 100%;
  201. border-radius: 48rpx;
  202. border: 2rpx solid #06DADC12;
  203. box-sizing: border-box;
  204. padding: 40rpx;
  205. padding-bottom: 200rpx;
  206. background: linear-gradient(180deg, #DEFFFF 0%, #FBFEFF 22.65%, #F0FBFF 100%);
  207. // 个人信息容器
  208. .profile-container {
  209. background: #fff;
  210. margin-bottom: 30rpx;
  211. display: flex;
  212. align-items: center;
  213. border-radius: 48rpx;
  214. border-width: 2rpx;
  215. justify-content: space-between;
  216. background: linear-gradient(180deg, #DEFFFF 0%, #FBFEFF 22.65%, #F0FBFF 100%);
  217. // background: red;
  218. border: 2rpx solid #06DADC12;
  219. // padding-top: 32rpx;
  220. padding-right: 40rpx;
  221. // padding-bottom: 32rpx;
  222. padding-left: 40rpx;
  223. height: 200rpx;
  224. .profile-avatar {
  225. width: 128rpx;
  226. height: 128rpx;
  227. border-radius: 50%;
  228. margin-right: 24rpx;
  229. }
  230. .profile-info {
  231. flex: 1;
  232. .profile-name {
  233. display: block;
  234. font-size: 32rpx;
  235. font-weight: 600;
  236. color: #333;
  237. margin-bottom: 8rpx;
  238. }
  239. .profile-id {
  240. font-size: 24rpx;
  241. color: #999;
  242. }
  243. }
  244. .profile-stats {
  245. display: flex;
  246. .stat-item {
  247. text-align: center;
  248. margin-left: 60rpx;
  249. .stat-number {
  250. display: block;
  251. font-size: 32rpx;
  252. font-weight: bold;
  253. color: #333;
  254. margin-bottom: 8rpx;
  255. }
  256. .stat-label {
  257. font-size: 24rpx;
  258. color: #999;
  259. }
  260. }
  261. }
  262. }
  263. // 功能按钮区域
  264. .function-buttons {
  265. display: flex;
  266. justify-content: space-around;
  267. align-items: center;
  268. margin-bottom: 48rpx;
  269. .function-item {
  270. display: flex;
  271. // flex-direction: column;
  272. align-items: center;
  273. gap: 16rpx;
  274. border-right: 1px solid #06DADC;
  275. padding-right: 30rpx;
  276. &:nth-child(3) {
  277. border-right: none;
  278. }
  279. .function-icon {
  280. width: 46rpx;
  281. height: 46rpx;
  282. // margin-bottom: 16rpx;
  283. }
  284. .function-text {
  285. font-size: 24rpx;
  286. color: #181818;
  287. }
  288. }
  289. }
  290. // 余额显示
  291. .balance-section {
  292. display: flex;
  293. align-items: center;
  294. justify-content: space-between;
  295. margin-bottom: 40rpx;
  296. .balance-label {
  297. font-size: 32rpx;
  298. color: #191919;
  299. font-weight: 500;
  300. }
  301. .balance-amount {
  302. font-size: 32rpx;
  303. font-weight: 500;
  304. color: #191919;
  305. flex: 1;
  306. margin-left: 20rpx;
  307. }
  308. }
  309. // 转账记录容器
  310. .record-container {
  311. .record-list {
  312. border: 1px solid #F0F0F0;
  313. border-radius: 24rpx;
  314. // background: red;
  315. .record-item {
  316. height: 116rpx;
  317. background: #fff;
  318. // border-radius: 16rpx;
  319. padding: 16rpx 32rpx;
  320. // margin-bottom: 20rpx;
  321. display: flex;
  322. align-items: center;
  323. border-bottom: 2rpx solid #F1F1F1 ;
  324. // margin-right: 24rpx;
  325. // box-sizing: border-box;
  326. .record-avatar{
  327. display: flex;
  328. align-items: center;
  329. flex-direction: column;
  330. gap: 12rpx;
  331. .avatar-name {
  332. font-size: 24rpx;
  333. color: #999;
  334. }
  335. .avatar {
  336. width: 50rpx;
  337. height: 50rpx;
  338. border-radius: 50%;
  339. // margin-right: 24rpx;
  340. }
  341. }
  342. .record-info {
  343. flex: 3;
  344. text-align: center;
  345. .record-title {
  346. display: block;
  347. font-size: 28rpx;
  348. color: #333;
  349. margin-bottom: 8rpx;
  350. }
  351. .record-date {
  352. font-size: 26rpx;
  353. color: #A3A3A3;
  354. }
  355. }
  356. .record-amount {
  357. flex: 2;
  358. text-align: center;
  359. .amount {
  360. display: block;
  361. font-size: 28rpx;
  362. font-weight: bold;
  363. color: #333;
  364. margin-bottom: 8rpx;
  365. }
  366. .status {
  367. font-size: 26rpx;
  368. // padding: 8rpx 16rpx;
  369. border-radius: 20rpx;
  370. &.status-received {
  371. // background: #f0f0f0;
  372. color: #A3A3A3;
  373. }
  374. &.status-available {
  375. // background: #22F2EB;
  376. padding: 3rpx 16rpx;
  377. color: $primary-color;
  378. border: 2rpx solid $primary-color;
  379. }
  380. }
  381. }
  382. }
  383. }
  384. }
  385. }
  386. // 底部固定按钮
  387. .bottom-button-container {
  388. position: fixed;
  389. bottom: 0;
  390. left: 0;
  391. right: 0;
  392. padding: 30rpx 40rpx;
  393. background: rgba(255, 255, 255, 0.95);
  394. border-top: 1px solid #F1F1F1;
  395. // height: 143rpx;
  396. // backdrop-filter: blur(10rpx);
  397. }
  398. </style>