Browse Source

修复 完成 功能性 bug

XSXS 1 week ago
parent
commit
8198669245

+ 20 - 2
App.vue

@@ -261,12 +261,30 @@ export default {
     let that = this;
     uni.$on("check_login", function (callback) {
       let skeyLogin = uni.getStorageSync("is_login");
-      console.log("skeylogin", skeyLogin);
+ 
       // callback();
       if (skeyLogin == null || skeyLogin == undefined || skeyLogin == "") {
         uni.removeStorageSync("wapptoken");
-        uni.redirectTo({
+        var currentPage = getCurrentPages()[getCurrentPages().length - 1];
+        var redirectUrl = currentPage.route;
+        var options = currentPage.options;
+        var queryString = '';
+        
+        // 将options对象转换为查询字符串
+        if (options && Object.keys(options).length > 0) {
+          queryString = '?' + Object.keys(options)
+            .map(key => `${key}=${encodeURIComponent(options[key])}`)
+            .join('&');
+        }
+        
+        uni.navigateTo({
           url: "/pages/login/login",
+          success: function(res) { 
+            // 通过 eventChannel 向被打开页面传送数据
+            res.eventChannel.emit('acceptDataFromOpener', { 
+              redirectUrl: redirectUrl + queryString
+            });
+          }
         });
       } else if (typeof callback === "function") {
         callback(); // 登录状态有效时执行回调

+ 2 - 2
components/SharePopup/SharePopup.vue

@@ -81,9 +81,9 @@ export default {
     }
   },
   created() {
-    uni.$emit('check_login', () => {
+    // uni.$emit('check_login', () => {
       this.from_id = getApp().globalData.user_id
-    })
+    // })
   },
   methods: {
     handleClose() {

+ 1 - 2
components/card/card.vue

@@ -161,12 +161,11 @@ export default {
 			});
 		},
 		goWork(item) {
+			console.log("跳转");
 			var url = "/pages/index/workDetail?id=";
 			if (this.goLink) {
 				url = this.goLink;
 			}
-			console.log("goWork", this.goLink);
-			console.log(item, 888888888);
 			if (item.type == 'crowdfund') {
 				url = "/pages/crowdFunding/crowdfundingDetailsDesign?id="
 			}

+ 42 - 31
components/cc-comment/cc-comment.vue

@@ -40,7 +40,7 @@
 		</view>
 		<!-- 评论弹窗 -->
 		<uni-popup ref="cPopupRef" type="bottom" @change="popChange" style="z-index: 100;">
-			<view class="c_popup_box" >
+			<view class="c_popup_box">
 				<view class="reply_text">
 					<template v-if="Object.keys(replyTemp).length">
 						<span class="text_aid">回复给</span>
@@ -88,13 +88,13 @@
 import CommonComp from "./componets/common";
 import { getStorage, setStorage, removeStorage } from "@/common/util.js";
 
-import { mapState,mapMutations ,mapGetters} from 'vuex';
+import { mapState, mapMutations, mapGetters } from 'vuex';
 export default {
 	components: {
 		CommonComp
 	},
 	computed: {
-		...mapState('rightsManagement',['teenageMode'])
+		...mapState('rightsManagement', ['teenageMode'])
 	},
 	props: {
 		/** 登陆用户信息
@@ -119,7 +119,7 @@ export default {
 			type: Object,
 			default: () => { },
 		},
-		
+
 		/** 评论列表
 		 *    id: number // 评论id
 		 *    parent_id: number // 父级评论id
@@ -187,8 +187,8 @@ export default {
 			let map = {};
 
 			newData.forEach((item, i) => {
-				console.log(this.myInfo,this.userInfo,"---------");
-				
+				console.log(this.myInfo, this.userInfo, "---------");
+
 				item.owner = item.user_id === this.myInfo.user_id; // 是否为当前登陆用户
 				item.author = item.user_id === this.userInfo.user_id; // 是否为作者
 				map[item.id] = item;
@@ -268,33 +268,36 @@ export default {
 		},
 		// 发起新评论
 		newCommentFun() {
-			let isContentRecommendation
-			if (this.teenageMode != 1) {
-				isContentRecommendation = true;
-			} else {
-				isContentRecommendation = false;
-			}
+			uni.$emit('check_login', () => {
+				let isContentRecommendation
+				if (this.teenageMode != 1) {
+					isContentRecommendation = true;
+				} else {
+					isContentRecommendation = false;
+				}
 
-			if (!isContentRecommendation) {
-				uni.showToast({
-					title: '当前无法评论',
-					icon: 'none'
-				});
-				return;
-			}
+				if (!isContentRecommendation) {
+					uni.showToast({
+						title: '当前无法评论',
+						icon: 'none'
+					});
+					return;
+				}
 
-			if (this.isComment == 0) {
-				uni.showToast({
-					title: '暂无评论权限',
-					icon: 'none'
-				})
-				return
-			}
-			this.isNewComment = true;
-			this.$refs["cPopupRef"].open();
+				if (this.isComment == 0) {
+					uni.showToast({
+						title: '暂无评论权限',
+						icon: 'none'
+					})
+					return
+				}
+				this.isNewComment = true;
+				this.$refs["cPopupRef"].open();
+			})
 		},
 		// 评论弹窗
 		popChange(e) {
+			uni.$emit('check_login', () => {
 			// 关闭弹窗
 			if (!e.show) {
 				this.commentValue = ""; // 清空输入框值
@@ -303,6 +306,7 @@ export default {
 				this.showEmojiPanel = false; // 隐藏表情面板
 			}
 			this.focus = e.show;
+			})
 		},
 		// 切换表情面板显示状态
 		toggleEmojiPanel() {
@@ -324,6 +328,7 @@ export default {
 			item2,
 			index2
 		} = this.replyTemp) {
+			uni.$emit('check_login', () => {
 			let item = item2 || item1;
 			let params = {};
 			// 新评论
@@ -368,7 +373,7 @@ export default {
 					...params,
 					id: res.id,
 					user_name: res.user_name,
-					user_avatar:res.user_avatar
+					user_avatar: res.user_avatar
 				};
 				// 新评论
 				if (this.isNewComment) {
@@ -386,6 +391,7 @@ export default {
 				this.$emit("update:tableTotal", this.tableTotal + 1);
 				this.$refs["cPopupRef"].close();
 			});
+			})
 		},
 		//删除
 		deleteClick({
@@ -394,6 +400,7 @@ export default {
 			item2,
 			index2
 		}) {
+			uni.$emit('check_login', () => {
 			this.delTemp = JSON.parse(JSON.stringify({
 				item1,
 				index1,
@@ -412,6 +419,7 @@ export default {
 			}).catch(() => {
 				this.delCloseFun()
 			})
+			})
 		},
 		// 关闭删除弹窗
 		delCloseFun() {
@@ -541,7 +549,7 @@ export default {
 			);
 		},
 		handleKeydown(event) { // 新增方法
-			console.log(event.key, event.shiftKey); 
+			console.log(event.key, event.shiftKey);
 			if (event.key === 'Enter' && !event.shiftKey) {
 				event.preventDefault();
 				this.sendClick();
@@ -609,17 +617,20 @@ export default {
 		padding: 6rpx 0rpx 6rpx 0rpx;
 		margin-top: 10rpx;
 		margin-left: 96rpx;
+
 		// background-color: $uni-bg-color-grey;
-		::v-deep.user_avatar{
+		::v-deep.user_avatar {
 			width: 44rpx;
 			height: 44rpx;
 		}
+
 		.expand_reply,
 		.shrink_reply {
 			margin-top: 10rpx;
 			margin-left: 65rpx;
 			display: inline-flex;
 			align-items: center;
+
 			.txt {
 				font-weight: 500;
 				color: $uni-color-primary;

+ 20 - 5
pages/crowdFunding/crowdfundingDetails.vue

@@ -7,7 +7,7 @@
 			<view class="navbar-center one-omit" style="max-width: 70vw; " :style="{ opacity: navBgOpacity }">
 				{{ detail.title }}
 			</view>
-			<view class="navbar-right scale-tap" @click="showShare = true">
+			<view class="navbar-right scale-tap" @click="openShare()">
 				<image src="@/static/crowdFunding/share.png" mode="widthFix"></image>
 			</view>
 		</view>
@@ -125,7 +125,7 @@
 						</div>
 					</view>
 					<view class="initiator-service-btn  blick-btn-animation"
-						@click="goPage('/pages/crowdFunding/customerService?id=' + detail.creator_id + '&zc_id=' + detail.id)">
+						@click="goPages('/pages/crowdFunding/customerService?id=' + detail.creator_id + '&zc_id=' + detail.id)">
 						<image class="service-icon" src="@/static/crowdFunding/service.png" />
 						<text>客服</text>
 					</view>
@@ -233,6 +233,11 @@ export default {
 		}
 	},
 	methods: {
+		openShare() {
+			uni.$emit("check_login", () => {
+				this.showShare = true;
+			});
+		},
 		// 返回上一页
 		goBack() {
 			uni.navigateBack({
@@ -286,6 +291,13 @@ export default {
 				url: url
 			});
 		},
+		goPages(url) {
+			uni.$emit("check_login", () => {
+				uni.navigateTo({
+					url: url
+				});
+			});
+		},
 		onSpecConfirm(selectedSpec) {
 			uni.navigateTo({
 				url: '/pages/crowdFunding/orderConfirm',
@@ -296,9 +308,12 @@ export default {
 			});
 		},
 		specificationsOpen() {
-			this.$refs.specSheet.show();
+			uni.$emit("check_login", () => {
+				this.$refs.specSheet.show();
+			});
 		},
 		toggleFavorite() {
+			uni.$emit("check_login", () => {
 			if (!this.projectId) {
 
 				return;
@@ -329,8 +344,8 @@ export default {
 				fail: () => {
 					uni.showToast({ title: '网络错误', icon: 'none' });
 				}
-			});
-
+				});
+			})
 		},
 		getDetail() {
 			if (!this.projectId) return;

+ 8 - 1
pages/crowdFunding/crowdfundingDetailsDesign.vue

@@ -7,7 +7,7 @@
 			<view class="navbar-center one-omit" style="max-width: 70vw; " :style="{ opacity: navBgOpacity }">
 				{{ detail.title }}
 			</view>
-			<view class="navbar-right scale-tap" @click="showShare = true">
+			<view class="navbar-right scale-tap" @click="openShare()">
 				<image src="@/static/crowdFunding/share.png" mode="widthFix"></image>
 			</view>
 		</view>
@@ -223,6 +223,11 @@ export default {
 		}
 	},
 	methods: {
+		openShare() {
+			uni.$emit("check_login", () => {
+				this.showShare = true;
+			});
+		},
 		// 返回上一页
 		goBack() {
 			uni.navigateBack({
@@ -279,6 +284,7 @@ export default {
 			});
 		},
 		specificationsOpen() {
+			uni.$emit("check_login", () => {
 			uni.request({
 				url: this.$apiHost + '/Article/like',
 				data: {
@@ -318,6 +324,7 @@ export default {
 					}
 				}
 			});
+			})
 		},
 		toggleFavorite() {
 			if (!this.projectId) {

+ 1 - 1
pages/crowdFunding/discussionArea.vue

@@ -4,7 +4,7 @@
 
 
 		<!-- 项目卡片 -->
-		<view class="project-card">
+		<view class="project-card" @click="goPages('/pages/crowdFunding/crowdfundingDetails?id=' + articleInfo.id)">
 			<image class="project-img" :src="articleInfo.main_image" />
 			<view class="project-info">
 				<view class="project-title two-omit">{{ articleInfo.title }}</view>

+ 6 - 1
pages/crowdFunding/projectUpdateDetails.vue

@@ -7,7 +7,7 @@
       <view class="navbar-center one-omit" style="max-width: 70vw" :style="{ opacity: navBgOpacity }">
         {{ datails.title }}
       </view>
-      <view class="navbar-right scale-tap" @click="showShare = true">
+      <view class="navbar-right scale-tap" @click="openShare">
         <image src="@/static/crowdFunding/share.png" mode="widthFix"></image>
       </view>
     </view>
@@ -61,6 +61,11 @@ export default {
     this.getDetails()
   },
   methods: {
+    openShare() {
+      uni.$emit("check_login", () => {
+        this.showShare = true;
+      });
+    },
     goBack() {
       uni.navigateBack();
     },

+ 1 - 1
pages/index/index.scss

@@ -417,7 +417,7 @@
   }
 }
 .waterfall-list-container {
-  background: #fff;
+  background: #fff; 
 }
 .navCenter {
 }

+ 20 - 13
pages/index/index.vue

@@ -66,7 +66,7 @@
 						<view class="classModel-box">
 							<image @click="goPage('/pages/my/job')" src="@/static/home/task.png"
 								class="benner-iconBom scale-tap" mode=""></image>
-							<image @click="goPage('/pages/crowdFunding/crowdFunding')"
+							<image @click="goPages('/pages/crowdFunding/crowdFunding')"
 								src="@/static/home/crowdFunding.png" class="benner-icontop scale-tap" mode=""></image>
 						</view>
 					</template>
@@ -365,18 +365,18 @@ export default {
 		console.log('teenageMode', this.teenageMode);
 		console.log('iscontentRecommendation', this.iscontentRecommendation);
 		console.log('isContent', this.isContent);
-		if (!this.isContent) {
-			this.tabs = ["关注"];
-			this.currentTab = 0;
-			this.queryList();
-		} else {
-			this.tabs = ["关注", "探索"];
-			// this.currentTab = 1;
-			// 如果数据为空,加载初始数据
-			if (this.followList.length === 0) {
-				this.initialLoad();
-			}
-		}
+		// if (!this.isContent) {
+		// 	this.tabs = ["关注"];
+		// 	this.currentTab = 0;
+		// 	this.queryList();
+		// } else {
+		// 	this.tabs = ["关注", "探索"];
+		// 	// this.currentTab = 1;
+		// 	// 如果数据为空,加载初始数据
+		// 	if (this.followList.length === 0) {
+		// 		this.initialLoad();
+		// 	}
+		// }
 		uni.$emit('check_update');
 	},
 	// 修改触底加载方法
@@ -759,6 +759,13 @@ export default {
 				});
 			});
 		},
+		goPages(page) {
+			// uni.$emit("check_login", () => {
+				uni.navigateTo({
+					url: page,
+				});
+			// });
+		},
 		// 修改下拉刷新方法
 		onRefresh() {
 			console.log('下拉刷新开始');

+ 30 - 3
pages/login/login.vue

@@ -110,6 +110,8 @@ export default {
 			sel: 1,
 			is_agree: 0,
 			type: 'mobile',
+			redirectUrl: '',
+			callback: null,
 			myinfo: {
 				nickname: '',
 				join_name: '',
@@ -206,6 +208,12 @@ export default {
 		}
 	},
 	onLoad() {
+		// 获取页面传递的数据
+		const eventChannel = this.getOpenerEventChannel();
+		eventChannel.on('acceptDataFromOpener', (data) => {
+			this.redirectUrl = data.redirectUrl;
+		});
+
 		setTimeout(function () {
 			console.log(this.isSmsLogin, 'isSmsLogin'); 
 			uni.setNavigationBarColor({
@@ -466,6 +474,28 @@ export default {
 									uni.setStorageSync("avator", res.data.avator);
 								}
 
+								// 执行回调函数
+								if (this.redirectUrl) {
+									console.log("跳转到页面", this.redirectUrl);
+									var tabArray = ["pages/index/index", "pages/make/index", "pages/message/mailMessage", "pages/my/my"];
+									// 获取基础路由路径(不包含参数)
+									var baseUrl = this.redirectUrl.split('?')[0];
+									// 判断是否是tabbar页面
+									if (tabArray.includes(baseUrl)) {
+										uni.switchTab({
+											url: '/' + baseUrl
+										});
+									} else {
+										uni.redirectTo({
+											url: '/' + this.redirectUrl
+										});
+									}
+									return;
+								}
+
+								uni.switchTab({
+									url: "/pages/index/index",
+								});
 							},
 							complete: (com) => {
 								// uni.hideLoading();
@@ -474,9 +504,6 @@ export default {
 								console.log("----e:", e);
 							}
 						});
-						uni.switchTab({
-							url: "/pages/index/index",
-						});
 					} else if (res.data.success == "no") {
 						uni.showToast({
 							title: res.data.str,

+ 419 - 98
pages/my/userHomepage.vue

@@ -1,75 +1,117 @@
 <template>
   <view class="page">
     <view class="topBody">
-      <view class="header">
-        <view class="reserveASeat"></view>
-        <view class="card-box">
-          <view class="card-top">
-            <view class="top-box">
-              <view class="hello-box" @click="goBack">
-                <text class="fa fa-angle-left" style="color: #000; font-size: 55rpx;"></text>
-              </view>
+      <view class="header"
+        :style="{ backgroundImage: `url(${bgImage || '../../static/me/theme3.jpg'})`, marginBottom: labelBoxHeight < 45 ? '-80rpx' : '-40rpx' }">
+        <view class="header-box" :style="headerBoxStyle">
+          <view class="reserveASeat"></view>
+          <view class="benner-box">
+            <view class="setUp-box">
+              <view class="my-box">我的</view>
               <view class="settingBtn-box">
-                <image @click="clickShare()" src="@/static/me/wd_icon_fenxian.png" mode=""></image>
+
               </view>
             </view>
-            <view class="userinfo-box">
-              <view class="userinfo-left">
-                <CircleAvatar class="avator" :src="myinfo.avator"></CircleAvatar>
-              </view>
-              <view class="userinfo-right">
-                <view class="nickname">
-                  <text class="one-omit">{{ myinfo.nickname }}</text>
-                  <image src="../../static/icon/wd_icon_nan.png" mode="widthFix" v-if="myinfo.sex_id == 1"></image>
-                  <image src="../../static/icon/wd_icon_nv.png" mode="widthFix" v-else-if="myinfo.sex_id == 2"></image>
-                  <view class="level">Lv{{ myinfo.my_level }}</view>
-                </view>
-                <view class="label">
-                  <view v-for="(item, index) in aihao_tags" :key="index + item">
-                    {{ item }}
-                  </view>
-                </view>
+            <view class="profilePicture-box">
+              <CircleAvatar class="avator" @click="goPage('/pages/my/editInfo')" :src="myinfo.avator">
+              </CircleAvatar>
+              <view class="profilePicture-box-right" @click="goPage('/pages/my/creativeExpert')">
+                <view class="one-omit">{{ myinfo.nickname }}</view>
+                <image v-if="myinfo.my_level || myinfo.my_level == 0"
+                  :src="`../../static/icon/level_${myinfo.my_level}.png`" mode="widthFix" class="level-icon" />
               </view>
             </view>
-            <view class="intro_row">
+
+            <view class="intro_row" @click="goPage('/pages/my/editInfo')">
               <block v-if="myinfo.content == ''">
-                <text class="intro_text two-omit">简介</text>
+                <text class="intro_text two-omit">添加简介</text>
+                <image src="@/static/me/xiugai.png" mode="widthFix" class="add_icon">
+                </image>
               </block>
-              <uv-text v-else  :text="myinfo.content" class="intro_text two-omit">
-          
+              <uv-text color="#fff" v-else :text="formatText(myinfo.content)" class="intro_text two-omit">
               </uv-text>
             </view>
-            <view class="line"></view>
-            <view class="bom">
-              <view class="follow_info">
-                <view class="follow-box">
-                  <view class="num">{{ myinfo.num_attention }}</view>
-                  <view class="label">关注</view>
-                </view>
-                <view class="separator"></view>
-                <view class="follow-box">
-                  <view class="num">{{ myinfo.num_fans }}</view>
-                  <view class="label">粉丝</view>
+
+
+            <view class="label-box" id="labelBox">
+              <view class="label-item sex-item">
+
+                <image src="../../static/icon/wd_icon_nv.png" mode="widthFix" v-if="myinfo.sex_id == 2">
+                </image>
+                <image src="../../static/icon/wd_icon_nan.png" mode="widthFix" v-else></image>
+              </view>
+              <view class="label-item" v-for="(item, index) in aihao_tags" :key="index + item">
+                {{ item }}
+              </view>
+            </view>
+
+            <view class="follow_info">
+              <view class="follow-box">
+                <view class="num">{{ scientificCounting(myinfo.num_attention) }}</view>
+                <view class="label">关注</view>
+              </view>
+              <!-- <view class="separator"></view> -->
+              <view class="follow-box">
+                <view class="num">{{ scientificCounting(myinfo.num_fans) }}</view>
+                <view class="label">粉丝</view>
+              </view>
+              <!-- <view class="separator"></view> -->
+              <view class="follow-box">
+                <view class="num">{{ scientificCounting(myinfo.num_like) }}</view>
+                <view class="label">获赞</view>
+              </view>
+            </view>
+
+          </view>
+
+          <view class="card-box" v-if="false">
+            <view class="card-top">
+              <view class="top-box">
+                1
+              </view>
+              <view class="userinfo-box" @click="goPage('/pages/my/editInfo')">
+                <view class="userinfo-left">
+                  <CircleAvatar class="avator" :src="myinfo.avator"></CircleAvatar>
                 </view>
-                <view class="separator"></view>
-                <view class="follow-box">
-                  <view class="num">{{ myinfo.num_like }}</view>
-                  <view class="label">获赞</view>
+                <view class="userinfo-right">
+                  <view class="nickname">
+                    <text class="one-omit">{{ myinfo.nickname }}</text>
+
+                    <view class="level">Lv{{ myinfo.my_level }}</view>
+                  </view>
+                  <view class="label">
+
+                  </view>
                 </view>
               </view>
-              <view class="points-box">
-                <text class="followTheAuthor followTheAuthor1" v-if="!myinfo.is_attention"
-                  @click="followTheAuthor(1)">+关注</text>
-                <text class="followTheAuthor followTheAuthor0" v-else @click="followTheAuthor(0)">已关注</text>
+
+              <view class="line"></view>
+              <view class="bom">
+
+                <view class="points-box">
+                  <view class="points" @click="isRecharge ? goPage('/pages/vip/M_purchase') : ''">
+                    <image src="@/static/icon/wd_icon_coin.png" mode=""></image>
+                    <text>{{ myinfo.num_gmm | formatNumberToK }}</text>
+                    <image class="money-add" v-if="isRecharge" src="/static/icon/coin_add.png" mode="aspectFit"></image>
+                  </view>
+                  <view class="points" @click="isRecharge ? goPage('/pages/my/job?type=recharge') : ''">
+                    <image src="@/static/icon/coin_cd.png" mode=""></image>
+                    <text>{{ myinfo.num_gmd | formatNumberToK }}</text>
+                    <image class="money-add" v-if="isRecharge" src="/static/icon/coin_add.png" mode="aspectFit"></image>
+                  </view>
+                </view>
               </view>
             </view>
+            <!-- <view class="card-bom" v-if="isRecharge" @click="goPage('/pages/vip/index')"> -->
+
           </view>
         </view>
       </view>
 
-      <view class="myinfo"  >
+
+      <view class="myinfo">
         <!-- 作品列表 -->
-        <view class="numlist" >
+        <view class="numlist">
           <WorkItem v-for="(item, index) in worksList" :subtitle="true" :key="index" :item="item"
             @click="goWork(item)" />
           <view v-if="isDataLoaded && worksList.length === 0" class="empty-state">
@@ -88,8 +130,8 @@
     <DialogBox ref="DialogBox"></DialogBox>
 
     <!-- SharePopup组件 -->
-    <SharePopup :visible="showShare" :userId="userId" :share-title="shareTitle" :share-desc="shareDesc" :share-img="shareImg" view="userHomepage"
-      @close="showShare = false" />
+    <SharePopup :visible="showShare" :userId="userId" :share-title="shareTitle" :share-desc="shareDesc"
+      :share-img="shareImg" view="userHomepage" @close="showShare = false" />
   </view>
 </template>
 
@@ -112,7 +154,11 @@ export default {
   mixins: [tabbar],
   data() {
     return {
+      bgImage: '',
+      title: "",
+      sel: 1,
       firstLevelNavActive: 0,
+      labelBoxHeight: 0,
       myinfo: {
         avator: "../../static/logo.png",
         nickname: "",
@@ -137,6 +183,9 @@ export default {
       userId: 0,
       id: 0,
       isDataLoaded: false,
+      headerBoxStyle: {
+        background: 'linear-gradient(to bottom,transparent, rgba(0, 0, 0, .8))'
+      },
     };
   },
   onLoad(e) {
@@ -262,6 +311,9 @@ export default {
             this.aihao_tags = res.data.aihao.split(",");
           }
           this.myinfo = res.data;
+          if (res.data.bgimg) {
+            this.bgImage = res.data.bgimg;
+          }
         },
         complete: (com) => {
           // uni.hideLoading();
@@ -362,43 +414,85 @@ export default {
         url: "/pages/my/follow",
       });
     },
+    getLabelBoxHeight() {
+      setTimeout(() => {
+        const query = uni.createSelectorQuery();
+        query.select('#labelBox').boundingClientRect(data => {
+          if (data) {
+            this.labelBoxHeight = data.height;
+            console.log('label-box高度:', this.labelBoxHeight);
+          }
+        }).exec();
+      }, 100);
+    }, 
+    formatText(text) {
+      if (!text) return '';
+      return text.length > 20 ? text.substring(0, 20) + '...' : text;
+    }, 
+    scientificCounting(num) {
+      if (!num) {
+        return 0;
+      }
+      if (num < 1000) {
+        return num;
+      } else if (num < 1000000) {
+        return (num / 1000).toFixed(1) + 'k';
+      } else if (num < 1000000000) {
+        return (num / 1000000).toFixed(1) + 'M';
+      } else {
+        return (num / 1000000000).toFixed(1) + 'B';
+      }
+    },
   },
 };
 </script>
 
-<style scoped lang="scss"> 
- page {
+<style scoped lang="scss">
+page {
   background-color: #fff;
 }
+
 .page {
   background-color: #fff;
   width: 100%;
   min-height: 100vh;
 }
+
 .reserveASeat {
   width: 100%;
   height: calc(var(--status-bar-height));
 }
+
 .topBody {
   width: 750rpx;
   background: transparent;
 }
- 
+
 
 .header {
-  padding: 20rpx;
-  padding-top: 48rpx;
-  background: linear-gradient(225deg, #cdff9f 0%, #acff5f 30%, #d0ffa5 100%);
-  min-height: calc(520rpx + var(--status-bar-height));
-  margin-bottom: calc(-40rpx );
- 
+  background-position: center;
+  background-size: auto 100%;
+  min-height: calc(700rpx + var(--status-bar-height));
+
+  // margin-bottom:-80rpx ;
+  .header-box {
+    width: 100%;
+    height: 100%;
+    min-height: calc(700rpx + var(--status-bar-height));
+    padding: 20rpx;
+    padding-top: 48rpx;
+    background-position: center bottom;
+    background-size: 100% auto;
+  }
+
   .card-box {
     width: 100%;
-    min-height: 410rpx;
+    min-height: 490rpx;
     position: relative;
     left: 0;
     top: 0%;
     overflow: hidden;
+
     .card-top {
       height: 410rpx;
       width: 100%;
@@ -412,25 +506,27 @@ export default {
       padding-top: 16rpx;
       box-sizing: border-box;
       border-radius: 25rpx;
+
       .top-box {
         display: flex;
         justify-content: space-between;
         align-items: center;
         // padding-top: 8rpx;
-        background: url("../../static/me/car-top-bg-center.png") top center/
-          146rpx 50rpx no-repeat;
-          padding-right: 24rpx;
-          padding-left: 24rpx;
+        background: url("../../static/me/car-top-bg-center.png") top center/ 146rpx 50rpx no-repeat;
+        padding-right: 24rpx;
+        padding-left: 24rpx;
+
         .hello-box {
           font-family: "CustomFont" !important;
           font-size: 36rpx;
           font-weight: 700;
         }
+
         .settingBtn-box {
           width: 148rpx;
           display: flex;
           align-items: center;
-          justify-content: flex-end;
+          justify-content: space-between;
 
           image {
             width: 64rpx;
@@ -438,6 +534,7 @@ export default {
           }
         }
       }
+
       .userinfo-box {
         min-height: 120rpx;
         width: 100%;
@@ -445,11 +542,13 @@ export default {
         padding-right: 24rpx;
         padding-left: 24rpx;
         padding-top: 18rpx;
+
         .avator {
           width: 120rpx;
           height: 120rpx;
           margin-right: 16rpx;
         }
+
         .userinfo-right {
           .nickname {
             font-weight: bold;
@@ -460,17 +559,20 @@ export default {
             align-items: center;
             display: flex;
             padding-bottom: 12rpx;
-            > text {
+
+            >text {
               max-width: 380rpx;
               font-family: "PingFang SC-Bold";
               font-weight: 400;
               font-size: 36rpx;
             }
+
             image {
               width: 36rpx;
               margin-left: 8rpx;
               margin-right: 10rpx;
             }
+
             .level {
               font-weight: 400;
               font-size: 22rpx;
@@ -480,11 +582,13 @@ export default {
               padding: 2rpx 8rpx;
             }
           }
+
           .label {
             height: 40rpx;
             // height: 110rpx;
             overflow: hidden;
-            > view {
+
+            >view {
               color: #acf934;
               font-family: "PingFang SC-Medium";
               font-weight: 400;
@@ -499,49 +603,55 @@ export default {
           }
         }
       }
+
       .intro_row {
-        width: 100%; 
+        width: 100%;
         display: flex;
         align-items: center;
         padding-right: 24rpx;
         padding-left: 24rpx;
         padding-top: 12rpx;
         padding-bottom: 12rpx;
+
         .intro_text {
           color: #1f1f1f;
           font-size: 24rpx;
           font-family: "PingFang SC-Bold";
           font-weight: 400;
           padding-right: 0rpx;
-          ::v-deep.uv-text__value{
+
+          ::v-deep.uv-text__value {
             font-size: 26rpx !important;
           }
         }
+
         .add_icon {
           width: 28rpx;
           margin-left: 10rpx;
         }
       }
-      .line{
+
+      .line {
         width: 100%;
         height: 2rpx;
-        background-color: #F2F6F2;
-        margin:10rpx 0;
+        background-color: #f2f6f2;
+        margin: 10rpx 0;
         margin-bottom: 20rpx;
-        
-        
       }
+
       .bom {
         display: flex;
         align-items: center;
         justify-content: space-between;
         padding-right: 24rpx;
         padding-left: 24rpx;
+
         .follow_info {
           display: flex;
           align-items: center;
           justify-content: space-between;
           max-width: 300rpx;
+
           .follow-box {
             display: flex;
             flex-direction: column;
@@ -549,17 +659,20 @@ export default {
             justify-content: center;
             text-align: center;
           }
+
           .num {
             width: 100%;
             font-size: 36rpx;
             font-weight: bold;
             color: #333;
           }
+
           .label {
             width: 100%;
             font-size: 24rpx;
             color: #999;
           }
+
           .separator {
             width: 2rpx;
             height: 24rpx;
@@ -567,38 +680,238 @@ export default {
             margin: 0 30rpx;
           }
         }
-    
+
         .points-box {
           display: flex;
           justify-content: space-between;
 
-          .followTheAuthor {
-            padding: 6rpx 40rpx 8rpx 35rpx;
-            border-radius: 26rpx;
-            margin-right: 16rpx;
-            transition: all 0.6s;
-            border: 2rpx solid transparent;
+          .points {
+            display: flex;
+            align-items: center;
+            background: #f2f6f2;
+            border-radius: 30rpx;
+            padding: 6rpx 12rpx 6rpx 8rpx;
 
-            &.followTheAuthor1 {
-              color: #acf934;
-              background: #1f1f1f;
+            &:first-child {
+              margin-right: 18rpx;
+            }
+
+            image {
+              width: 40rpx;
+              height: 40rpx;
             }
 
-            &.followTheAuthor0 {
-              border: 2rpx solid #1f1f1f;
-              background: #fff;
+            text {
+              display: inline-block;
+              padding-left: 4rpx;
+              line-height: 0;
             }
           }
         }
-        
       }
 
       .follow_info {
         // display: none;
       }
-    } 
+    }
+  }
+
+  .benner-box {
+    .setUp-box {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+
+      .my-box {
+        font-family: "CustomFont" !important;
+        font-size: 36rpx;
+        font-weight: 700;
+        color: #fff;
+      }
+
+      .settingBtn-box {
+        width: 148rpx;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+
+        image {
+          width: 64rpx;
+          height: 64rpx;
+        }
+      }
+    }
+
+    .profilePicture-box {
+      display: flex;
+      align-items: center;
+      justify-content: flex-start;
+      padding-top: 60rpx;
+      padding-bottom: 28rpx;
+
+      .avator {
+        width: 156rpx;
+        height: 156rpx;
+        margin-right: 16rpx;
+      }
+
+      .one-omit {
+        max-width: 400rpx;
+        font-size: 40rpx;
+        font-family: "PingFang SC-Bold";
+        font-weight: 400;
+        color: #fff;
+      }
+
+      .profilePicture-box-right {
+        image {
+          width: 80rpx;
+          height: 38rpx;
+          margin-top: 10rpx;
+        }
+      }
+    }
+
+    .intro_row {
+      width: 100%;
+      display: flex;
+      align-items: center;
+      padding-right: 24rpx;
+      padding-left: 24rpx;
+      padding-top: 12rpx;
+      padding-bottom: 12rpx;
+      color: #fff;
+
+      .intro_text {
+        color: #fff;
+        font-size: 24rpx;
+        font-family: "PingFang SC-Bold";
+        font-weight: 400;
+        padding-right: 0rpx;
+
+        ::v-deep.uv-text__value {
+          font-size: 26rpx !important;
+        }
+      }
+
+      .add_icon {
+        width: 28rpx;
+        margin-left: 10rpx;
+      }
+    }
+
+    .label-box {
+      display: flex;
+      flex-wrap: wrap;
+      align-items: center;
+      // height: 55rpx;
+      width: 100%;
+
+      // overflow: hidden;
+      .label-item {
+        background: rgba(255, 255, 255, 0.1);
+        border-radius: 12rpx;
+        border: 2rpx solid rgba(255, 255, 255, 0.1);
+        display: inline-block;
+        color: #fff;
+        font-size: 24rpx;
+        font-family: "PingFang SC-Bold";
+        font-weight: 400;
+        padding: 6rpx 16rpx;
+        margin-right: 10rpx;
+        margin-bottom: 10rpx;
+
+        image {
+          width: 30rpx;
+        }
+
+        &.sex-item {
+          border-radius: 50%;
+          width: 40rpx;
+          height: 40rpx;
+          display: inline-flex;
+          align-items: center;
+          justify-content: center;
+          padding: 0;
+          margin-right: 0;
+          margin-bottom: 0;
+          margin-right: 10rpx;
+        }
+      }
+    }
+
+    .follow_info {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      max-width: 300rpx;
+      padding-bottom: 28rpx;
+      padding-top: 28rpx;
+
+      .follow-box {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        text-align: center;
+      }
+
+      .num {
+        width: 100%;
+        font-size: 36rpx;
+        font-weight: bold;
+        color: #fff;
+      }
+
+      .label {
+        width: 100%;
+        font-size: 24rpx;
+        color: rgba(255, 255, 255, 0.5);
+      }
+
+      .separator {
+        width: 2rpx;
+        height: 24rpx;
+        background-color: #e5e5e5;
+        margin: 0 30rpx;
+      }
+    }
+
+    .bom-box {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+
+      .bom-item {
+        width: 218rpx;
+        height: 96rpx;
+        border-radius: 16rpx;
+        border: 2rpx solid rgba(255, 255, 255, 0.1);
+        padding: 10rpx 18rpx;
+        background: url("../../static/me/box-bg-1.png") center center / 100% 100%;
+
+        &.bom-item2 {
+          background: url("../../static/me/box-bg-2.png") center center / 100% 100%;
+        }
+
+        &.bom-item3 {
+          background: url("../../static/me/box-bg-3.png") center center / 100% 100%;
+        }
+
+        .bom-item-title {
+          font-size: 24rpx;
+          color: #fff;
+        }
+
+        .bom-item-subtitle {
+          font-size: 20rpx;
+          color: rgba(255, 255, 255, 0.5);
+        }
+      }
+    }
   }
 }
+
 .thread {
   height: 210rpx;
   padding: 50rpx;
@@ -606,6 +919,7 @@ export default {
   color: #6e6a6a;
   padding-top: 80rpx;
 }
+
 .myinfo {
   width: 100%;
   display: flex;
@@ -617,6 +931,7 @@ export default {
   box-sizing: border-box;
   background: #fff;
   overflow: hidden;
+
   .line {
     width: 100%;
     height: 2rpx;
@@ -624,14 +939,17 @@ export default {
     margin-bottom: 8rpx;
     margin-top: 32rpx;
   }
+
   .subtitle {
     display: flex;
+
     .item {
       padding: 0 43rpx;
       font-weight: 400;
       font-size: 28rpx;
       color: #999999;
       font-family: "PingFang SC-Medium";
+
       &.active {
         font-family: "PingFang SC-Bold";
         font-weight: 400;
@@ -640,11 +958,13 @@ export default {
       }
     }
   }
+
   .tablist {
     display: flex;
     justify-content: flex-start;
     box-sizing: border-box;
     background: #ffffff;
+
     .item {
       padding: 15rpx 38rpx;
       color: #1f1f1f;
@@ -654,11 +974,11 @@ export default {
       border-radius: 30rpx;
       position: relative;
       left: 0;
-      top: 0; 
+      top: 0;
       line-height: 1;
       transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
       // box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
-      
+
       &:active {
         transform: scale(0.95);
         // box-shadow: 0 1rpx 4rpx rgba(0, 0, 0, 0.05);
@@ -677,11 +997,12 @@ export default {
         display: none;
         transition: all 0.3s ease;
       }
+
       &.active {
         background: #acf934;
         font-family: "CustomFont" !important;
         box-shadow: 0 4rpx 12rpx rgba(172, 249, 52, 0.3);
-        
+
         .indicator-triangle {
           display: block;
           transform: translateX(-50%) scale(1.2);
@@ -690,15 +1011,15 @@ export default {
     }
   }
 
- 
-  .numlist  {
+
+  .numlist {
     display: grid;
     grid-template-columns: repeat(2, 1fr);
     margin-top: 30rpx
   }
- 
+
 }
- 
+
 .empty-state {
   display: flex;
   flex-direction: column;