Selaa lähdekoodia

修复 部分 bug

XSXS 1 viikko sitten
vanhempi
commit
66094d92f9

+ 12 - 3
components/CommentSection/CommentSection.vue

@@ -89,8 +89,8 @@ export default {
 			tableTotal: 0,
 			tableData: [],
 			isLikeFalg: this.articleInfo.is_like,
-			userInfo: {}
-
+			userInfo: {},
+			lastClickTime: 0
 		}
 	},
 	created() {
@@ -234,8 +234,17 @@ export default {
 			})
 		},
 		likeFun({ params }, callback) {
+			const now = Date.now();
+			if (now - this.lastClickTime < 2000) {
+				uni.showToast({
+					title: '操作太频繁,请稍后再试',
+					icon: 'none'
+				});
+				return;
+			}
+			this.lastClickTime = now;
+			
 			uni.$emit('check_login', () => {
-
 				uni.request({
 					url: this.$apiHost + '/Article/zanComment',
 					data: {

+ 3 - 51
components/page-navbar/page-navbar.vue

@@ -30,8 +30,7 @@
 	.page-top {
 		// position: relative;
 		width: 750rpx;
-		height: calc(380rpx + var(--status-bar-height));
-		margin-bottom: -120rpx;
+	
 
 		.bg {
 			width: 750rpx;
@@ -39,60 +38,13 @@
 		}
 
 		::v-deep.uv-navbar__content {
-			height: 310rpx !important;
-			box-sizing: border-box;
-			padding-left: 24rpx;
-			display: flex;
-			justify-content: center;
-			flex-direction: column;
-			align-items: flex-start;
-			box-sizing: border-box;
-			padding-top: 20rpx;
-			padding-bottom: 14rpx;
-
-			.input-box {
-				width: 88rpx;
-				height: 56rpx;
-				background-color: #1f1f1f;
-				border-radius: 32rpx;
-				margin-right: 5rpx;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-			}
+		 
 
 			.uvicon-arrow-left {
 				display: none !important;
 			}
 
-			.left-top {
-				display: flex;
-				justify-content: flex-start;
-
-			}
-			
-			.weather {
-				font-size: 22rpx;
-			}
-
-			.search {
-				margin-top: 20rpx;
-				width: 490rpx;
-
-				.uv-input {
-					height: 72rpx;
-					border: 6rpx solid #000;
-					box-sizing: border-box;
-					padding-left: 4rpx;
-					box-sizing: border-box;
-
-					.uni-input-placeholder {
-						color: #999 !important;
-						font-size: 24rpx;
-						padding-left: 4rpx;
-					}
-				}
-			}
+		 
 		}
 	}
 </style>

+ 2 - 2
manifest.json

@@ -76,7 +76,7 @@
                     "weixin" : {
                         "__platform__" : [ "ios", "android" ],
                         "appid" : "wxfed977c88f539599",
-                        "UniversalLinks" : ""
+                        "UniversalLinks" : "https://e.zhichao.art/app/"
                     },
                     "alipay" : {
                         "__platform__" : [ "ios", "android" ]
@@ -100,7 +100,7 @@
                 "share" : {
                     "weixin" : {
                         "appid" : "wxfed977c88f539599",
-                        "UniversalLinks" : ""
+                        "UniversalLinks" : "https://e.zhichao.art/app/"
                     }
                 }
             },

+ 9 - 7
pages/crowdFunding/components/productSpecifications/productSpecifications.vue

@@ -174,7 +174,7 @@ export default {
 
       .sheet-support {
         font-size: 24rpx;
-        color: #b2b2b2;
+        color: #999;
       }
     }
 
@@ -221,7 +221,7 @@ export default {
 
         .product-time {
           font-size: 22rpx;
-          color: #b2b2b2;
+          color: #999;
           margin-bottom: 8rpx;
           margin-top: 0;
           text-align: left;
@@ -229,8 +229,8 @@ export default {
         }
 
         .product-detail {
-          font-size: 22rpx;
-          color: #b2b2b2;
+          font-size:26rpx;
+          color: #666;
           margin-top: 2rpx;
           line-height: 1.2;
           text-align: left;
@@ -263,7 +263,7 @@ export default {
         align-items: baseline;
 
         .spec-count {
-          color: #b2b2b2;
+          color: #999;
           font-size: 22rpx;
           font-weight: normal;
           margin-left: 12rpx;
@@ -271,11 +271,13 @@ export default {
       }
 
       .spec-list {
-        display: grid;
-        flex-direction: row;
+        display: flex;
+        flex-direction: row; 
+        flex-wrap: wrap;
         gap: 18rpx;
 
         .spec-item {
+          display: inline-block;
           padding: 12rpx 20rpx;
           border-radius: 12rpx;
           border-radius: 6rpx;

+ 15 - 7
pages/crowdFunding/crowdFunding.vue

@@ -17,16 +17,16 @@
         class="search-bar-container"
         @click="goPages('/pages/crowdFunding/Search')"
       >
-        <view class="search-input-wrapper">
+        <view class="search-input-wrapper"  >
           <image
             src="/static/crowdFunding/search.png"
-            class="search-icon"
-          ></image>
+            class="search-icon"  
+          ></image >
           <input
             type="text"
             placeholder="搜索你感兴趣的内容"
             class="search-input"
-            disabled
+               
           />
         </view>
       </view>
@@ -183,9 +183,17 @@ export default {
       uni.navigateBack();
     },
     goPages(url) {
-      uni.navigateTo({
-        url,
-      });
+      if (url === '/pages/crowdFunding/Search') {
+        uni.$emit("check_login", () => {
+          uni.navigateTo({
+            url: '/pages/crowdFunding/Search',
+          });
+        }); 
+      } else {
+        uni.navigateTo({
+          url,
+        });
+      }
     },
     switchTab(index) {
       this.currentTab = index;

+ 3 - 0
pages/crowdFunding/crowdfundingDetails.vue

@@ -512,6 +512,9 @@ export default {
 		this.projectId = options.id || null;
 		this.getDetail();
 	},
+	onShow() {
+		this.getDetail();
+	},
 	
 }
 </script>

+ 78 - 31
pages/crowdFunding/favorites.vue

@@ -1,35 +1,51 @@
 <template>
   <view class="favorites-page">
-    
+
     <!-- 列表 -->
-    <view class="fav-list"> 
-      <view class="fav-card" v-for="(item, idx) in list" :key="idx">
-        <image  @click="goPage('/pages/crowdFunding/crowdfundingDetails?id='+ item.id)" :src="item.main_image" class="fav-img"></image>
-
-        <view class="fav-content">
-          <view class="fav-header">
-            <image :src="item.creator_avatar" class="avatar"></image>
-            <text class="nickname"  @click="goPage('/pages/crowdFunding/crowdfundingDetails?id='+ item.id)">{{ item.creator_username }}</text>
-            <text class="tag"  @click="goPage('/pages/crowdFunding/crowdfundingDetails?id='+ item.id)">发起人</text>
-            <view style="position: relative;left: 0;top: 0;">
-              <image src="/static/crowdFunding/more.png" class="more-img" @click="toggleDropdown(idx)"></image>
-              <view class="dropdown-menu" v-if="currentDropdownIndex === idx">
-                <view class="dropdown-item" @tap="handleOption('cancelCollection', idx)">取消收藏</view>
+    <view class="fav-list">
+
+      <uv-swipe-action>
+        <uv-swipe-action-item v-for="(item, idx) in list" :key="idx" :options="[{
+          text: '取消收藏',
+          style: {
+            backgroundColor: '#f56c6c'
+          }
+        }]" @click="handleOption('cancelCollection', idx)">
+          <view class="fav-card">
+            <image @click="goPage('/pages/crowdFunding/crowdfundingDetails?id=' + item.id)" :src="item.main_image"
+              class="fav-img"></image>
+
+            <view class="fav-content">
+              <view class="fav-header">
+                <image :src="item.creator_avatar" class="avatar"></image>
+                <text class="nickname" @click="goPage('/pages/crowdFunding/crowdfundingDetails?id=' + item.id)">{{
+                  item.creator_username }}</text>
+                <view class="tag" @click="goPage('/pages/crowdFunding/crowdfundingDetails?id=' + item.id)">
+                  <image src="@/static/crowdFunding/authentication.png" mode="widthFix"></image> 发起人
+                </view>
+                <view style="position: relative;left: 0;top: 0;">
+                  <!-- <image src="/static/crowdFunding/more.png" class="more-img" @click="toggleDropdown(idx)"></image>
+                  <view class="dropdown-menu" v-if="currentDropdownIndex === idx">
+                    <view class="dropdown-item" @tap="handleOption('cancelCollection', idx)">取消收藏</view>
+                  </view> -->
+                </view>
+              </view>
+              <view class="fav-title two-omit" @click="goPage('/pages/crowdFunding/crowdfundingDetails?id=' + item.id)">
+                {{ item.title }}</view>
+              <view class="fav-bottom">
+                <text class="amount">已筹 ¥{{ item.current_amount }}</text>
+                <!-- <text class="favorite-time">收藏于{{ item.favorite_time }}</text> -->
               </view>
             </view>
           </view>
-          <view class="fav-title two-omit"  @click="goPage('/pages/crowdFunding/crowdfundingDetails?id='+ item.id)">{{ item.title }}</view>
-          <view class="fav-bottom">
-            <text class="amount">已筹 ¥{{ item.current_amount }}</text>
-            <!-- <text class="favorite-time">收藏于{{ item.favorite_time }}</text> -->
-          </view>
-        </view>
-      </view>
-
+        </uv-swipe-action-item>
+      </uv-swipe-action>
     </view>
     <view v-if="!isLoading && list.length === 0" class="no-data">
       <text>暂无数据</text>
     </view>
+
+
   </view>
 </template>
 
@@ -107,15 +123,16 @@ export default {
       this.currentDropdownIndex = this.currentDropdownIndex === idx ? null : idx;
 
     },
-	goPage(url) {
-    console.log(url,888);
-    
-		uni.navigateTo({
-			url,
-		});
-	},
+    goPage(url) {
+      console.log(url, 888);
+
+      uni.navigateTo({
+        url,
+      });
+    },
     // 处理下拉菜单选项点击
     handleOption(type, idx) {
+
       this.currentDropdownIndex = null;
       if (type === "cancelCollection") {
         const item = this.list[idx];
@@ -173,8 +190,7 @@ export default {
     .fav-card {
       display: flex;
       background: #fff;
-      border-radius: 18rpx;
-      margin: 0 24rpx 24rpx 24rpx;
+      // border-radius: 18rpx; 
       box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
       padding: 20rpx;
 
@@ -221,6 +237,13 @@ export default {
             padding: 2rpx 12rpx;
             margin-right: auto;
             margin-left: 4rpx;
+            display: inline-flex;
+            align-items: center;
+
+            image {
+              width: 28rpx;
+              height: 28rpx;
+            }
           }
 
           .more-img {
@@ -317,4 +340,28 @@ export default {
     padding: 80rpx 0 40rpx 0;
   }
 }
+
+::v-deep .uv-swipe-action {
+  margin: 0 24rpx 24rpx 24rpx;
+  border-radius: 18rpx;
+  overflow: hidden;
+
+  .uv-swipe-action-item__content {
+    background-color: #f2f6f2;
+  }
+
+  .uv-swipe-action-item__right {
+    border-top-right-radius: 32rpx;
+    border-bottom-right-radius: 32rpx;
+    top: 2rpx;
+    bottom: 2rpx;
+    right: 2rpx;
+  }
+}
+
+.uv-swipe-action-item {
+  border-radius: 18rpx;
+  overflow: hidden;
+  margin-bottom: 24rpx;
+}
 </style>

+ 2 - 2
pages/crowdFunding/orderConfirm.vue

@@ -269,13 +269,13 @@ export default {
           } else {
             uni.hideLoading();
             this.isSubmitting = false;
-            uni.showToast({ title: res.data.msg || '创建订单失败', icon: "error" });
+            uni.showToast({ title: res.data.str || '创建订单失败', icon: "none" });
           }
         },
         fail: (err) => {
           uni.hideLoading();
           this.isSubmitting = false;
-          uni.showToast({ title: '网络错误,请稍后重试', icon: "error" });
+          uni.showToast({ title: '网络错误,请稍后重试', icon: "none" });
         }
       });
     },

+ 13 - 3
pages/crowdFunding/orderDetail.vue

@@ -11,11 +11,17 @@
         </image>
       </view>
     </view>
-
+    <!-- status:0待支付,1已支付,2已发货/待收货,3已收货,5已完成,6退款中,8关闭(取消或退款后),9已完成 -->
     <!-- 状态栏 -->
     <view class="status-bar">
       <!-- <image v-if="statusIcon" :src="statusIcon" class="status-icon"/> -->
-      <image :src="'../../static/crowdFunding/fail.png'" class="status-icon" />
+       <!-- 失败 -->
+      <image v-if="status == 8" :src="'../../static/crowdFunding/fail.png'" class="status-icon" />
+      <!-- 成功 -->
+      <image v-else-if="status == 5 || status == 3 || status == 9" :src="'../../static/crowdFunding/success.png'" class="status-icon" />
+      <!-- 进行中 -->
+      <image v-else-if="status == 2 || status == 6" :src="'../../static/crowdFunding/loading.png'" class="status-icon" />
+
       <text class="status-title">{{ statusTitle }}</text>
     </view>
 
@@ -103,7 +109,8 @@
         <!-- <view class="btn scale-tap btn-comment" @click="commentOrder">去评价</view> -->
       </template>
       <template v-else-if="status == 8">
-        <view class="btn   btn-delete" style="background: #eee;">已关闭</view>
+        <!-- <view class="btn   btn-delete" style="background: #eee;">已关闭</view> -->
+		  <view class="btn scale-tap btn-delete" @click="deleteOrder">删除订单</view>
         <!-- <view class="btn scale-tap btn-comment" @click="commentOrder">去评价</view> -->
       </template>
       <template v-else>
@@ -256,6 +263,9 @@ export default {
           if (res.data && res.data.success == 'yes') {
             uni.showToast({ title: res.data.str, icon: 'none' });
             this.getOrderDetail(this.order.orderNo);
+            if (act == 'cancel') {
+              this.goBack();
+            }
           } else {
             uni.showToast({ title: res.data.message || '操作失败', icon: 'none' });
           }

+ 10 - 7
pages/crowdFunding/orderList.vue

@@ -60,7 +60,7 @@
             :key="order.id"
           >
             <view class="order-header">
-              <text class="project-title">{{ order.projectTitle }}</text>
+              <text class="project-title one-omit">{{ order.projectTitle }}</text>
               <text class="tag-initiator" v-if="order.isInitiator">发起人</text>
               <text
                 class="order-status"
@@ -135,12 +135,12 @@ export default {
       tabs: [
         { name: "全部", type: "all" },
         { name: "待支付", type: "waitPay" },
-        { name: "已付款", type: "paid" },
+        // { name: "已付款", type: "paid" },
         { name: "待发货", type: "waitSend" },
-        { name: "已发货", type: "waitReceive" },
+        { name: "待收货", type: "waitReceive" },
         { name: "交易完成", type: "finish" },
         { name: "退款中", type: "refund" },
-        { name: "支付失败", type: "payFail" },
+        { name: "已关闭", type: "payFail" },
       ],
       orderList: [],
       swiperHeight: 600, // 默认高度,后续可动态调整
@@ -166,6 +166,8 @@ export default {
     },
     switchTab(index) {
       this.currentTab = index;
+      // 切换标签时刷新数据
+      this.getdataList();
     },
     onSwiperChange(e) {
       this.currentTab = e.detail.current;
@@ -245,8 +247,8 @@ export default {
                 statusText = '待支付';
                 break;
               case 1:
-                statusType = 'paid';
-                statusText = '已付款待发货';
+                statusType = 'waitSend';
+                statusText = '待发货';
                 break;
               case 2:
                 statusType = 'waitReceive';
@@ -451,7 +453,7 @@ export default {
           font-size: 28rpx;
           font-weight: bold;
           color: #1f1f1f;
-          margin-right: 12rpx;
+          margin-right: 40rpx;
         }
 
         .tag-initiator {
@@ -466,6 +468,7 @@ export default {
         .order-status {
           font-size: 24rpx;
           margin-left: auto;
+          white-space: nowrap;
 
           &.status-waitPay {
             color: #888;

+ 466 - 0
pages/index/index copy.scss

@@ -0,0 +1,466 @@
+@font-face {
+  font-family: "CustomFont";
+  src: url("@/static/fonts/alibaba.otf") format("opentype");
+  font-weight: normal;
+  font-style: normal;
+}
+.page-top {
+  background: url("/static/home/home-top.png") 518rpx
+      calc(-10rpx + var(--status-bar-height)) / 212rpx 296rpx no-repeat,
+    url("/static/home/home-t.png") top center/100% auto no-repeat,
+    linear-gradient(to top, #d0ffa5, #acff5f);
+  // background: url("/static/make/make_bg.png") top center/100%  no-repeat;
+}
+.tab-nav {
+  display: flex;
+  justify-content: flex-start;
+  padding: 20rpx 20rpx;
+  // padding-top: 5rpx;
+  box-sizing: border-box;
+  background: #ffffff;
+
+  .tab-item {
+    padding: 15rpx 38rpx;
+    color: #1f1f1f;
+    font-size: 28rpx;
+    background: #f2f6f2;
+    margin-right: 20rpx;
+    border-radius: 30rpx;
+    position: relative;
+    left: 0;
+    top: 0;
+    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+    // box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
+    line-height: 1;
+    &:active {
+      transform: scale(0.95);
+      // box-shadow: 0 1rpx 4rpx rgba(0, 0, 0, 0.05);
+    }
+
+    .indicator-triangle {
+      position: absolute;
+      bottom: -10rpx;
+      left: 50%;
+      transform: translateX(-50%);
+      width: 0;
+      height: 0;
+      border-left: 10rpx solid transparent;
+      border-right: 10rpx solid transparent;
+      border-top: 10rpx solid #acf934;
+      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);
+      }
+    }
+  }
+}
+
+.hot-topics {
+  padding: 20rpx 28rpx;// background: #fff;
+  margin:0 20rpx;
+  margin-top: 0;
+  border-radius: 20rpx;
+  border: #000000 solid 2rpx;
+  background: url("../../static/home/hot-topice-bg.png") center/120% 100%
+    no-repeat;
+
+  .hot-topics-header {
+    margin-bottom: 20rpx;
+
+    .hot-topics-title {
+      width: 140rpx;
+      height: 34rpx;
+    }
+  }
+
+  .hot-topics-swiper {
+    height: 220rpx;
+    box-sizing: border-box;
+  }
+
+  .hot-topics-list {
+    // padding: 0 26rpx;
+    padding-bottom: 0;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+    justify-content: flex-start;
+    min-height: 220rpx;
+  }
+
+  .topic-item {
+    display: flex;
+    align-items: center;
+    padding: 10rpx 0;
+    justify-content: space-between;
+    width: 100%;
+    min-height: 50rpx;
+    margin-bottom: 10rpx;
+    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+
+    &:active {
+      transform: scale(0.98);
+    }
+
+    &:last-child {
+      margin-bottom: 0;
+    }
+    .hot-topics-left {
+      display: flex;
+      transition: all 0.3s ease;
+      align-items: center;
+      .topic-index {
+        width: 30rpx;
+        height: 30rpx;
+        font-weight: 700;
+        font-size: 24rpx;
+        display: inline-flex;
+        align-items: center;
+        justify-content: center;
+        color: #fff;
+        border-radius: 5rpx;
+        margin-right: 18rpx;
+        background: #c4c4c4;
+        transition: all 0.3s ease;
+        border-radius: 8rpx;
+        &.topic-index-img {
+          background: transparent;
+          color: transparent;
+          width: 36rpx;
+          height: 36rpx;
+          position: relative;
+          left: -2rpx;
+          top: 0;
+        }
+      }
+      .topic-content {
+        font-size: 28rpx;
+        max-width: 380rpx;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        transition: all 0.3s ease;
+      }
+    }
+    .topic-participants {
+      font-size: 24rpx;
+      color: #999;
+      transition: all 0.3s ease;
+    }
+    .hot-tag {
+      width: 46rpx;
+      height: 22rpx;
+      margin: auto;
+      margin-left: 10rpx;
+      transition: all 0.3s ease;
+    }
+  }
+
+  .indicator-dots {
+    display: flex;
+    justify-content: center;
+    margin-top: 20rpx;
+
+    .dot {
+      width: 8rpx; 
+      height: 8rpx;
+      border-radius: 6rpx;
+      background: #cecece;
+      margin: 0 6rpx;
+
+      &.active {
+       width: 20rpx;
+        
+        background: #1f1f1f;
+      }
+    }
+  }
+}
+
+.follow-list {
+  padding: 20rpx 0rpx;
+  background: #fff;
+  margin: 0rpx;
+  border-radius: 0rpx;
+
+  .works-list {
+    display: flex;
+    flex-wrap: wrap;
+    padding: 10rpx;
+
+    .work-item {
+      width: 48%;
+      margin: 1%;
+      margin-bottom: 20rpx;
+
+      .work-image {
+        width: 100%;
+        aspect-ratio: 1;
+        border-radius: 12rpx;
+      }
+
+      .work-title {
+        font-size: 28rpx;
+        color: #ffffff;
+        margin-top: 10rpx;
+        padding: 0 10rpx;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+      }
+    }
+  }
+
+  .no-data {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    padding: 60rpx 0;
+    background-color: #fff;
+    text {
+      color: #808080;
+      font-size: 28rpx;
+    }
+  }
+}
+
+.no-data {
+  text-align: center; 
+  padding: 40rpx 0;
+  color: #808080;
+  font-size: 28rpx;
+}
+
+.news-list {
+  padding: 20rpx 0rpx;
+  background: #fff;
+
+  .news-grid {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+
+    .news-item {
+      width: 48%;
+      margin-bottom: 30rpx;
+      background: #28292d;
+      border-radius: 12rpx;
+      overflow: hidden;
+
+      .news-image {
+        width: 100%;
+        aspect-ratio: 1;
+        height: auto;
+        border-radius: 12rpx 12rpx 0 0;
+      }
+
+      .news-title {
+        font-size: 28rpx;
+        color: #ffffff;
+        padding: 15rpx;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        height: 60rpx;
+        line-height: 60rpx;
+      }
+
+      .news-footer {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        padding: 0 15rpx 15rpx;
+
+        .news-author {
+          font-size: 24rpx;
+          color: #808080;
+          max-width: 60%;
+          white-space: nowrap;
+          overflow: hidden;
+          text-overflow: ellipsis;
+        }
+
+        .news-views {
+          display: flex;
+          align-items: center;
+          font-size: 24rpx;
+          color: #808080;
+
+          .view-icon {
+            width: 26rpx;
+            height: 18rpx;
+            margin-right: 6rpx;
+          }
+        }
+      }
+    }
+  }
+}
+
+.float-btn {
+  position: fixed;
+  right: 30rpx;
+  bottom: 145rpx;
+  width: 120rpx;
+  height: 120rpx;
+  border-radius: 50%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  z-index: 999;
+
+  .float-btn-icon {
+    width: 100%;
+    height: 100%;
+  }
+}
+
+.blankHeight {
+  // width: 500rpx;
+  // height: 500rpx;
+  width: 100%;
+  height: 144rpx;
+}
+.benner-box {
+  box-sizing: border-box;
+  padding: 20rpx;
+  background: #fff;
+  border-top-left-radius: 40rpx;
+  border-top-right-radius: 40rpx;
+  ::v-deep.uv-swiper {
+    border-radius: 20rpx !important;
+    overflow: hidden;
+    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+
+    &:active {
+      transform: scale(0.98);
+    }
+  }
+  .classModel {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    position: relative;
+    left: 0;
+    right: 0;
+    .benner-iconBom {
+      height: 18rpx;
+      width: 50rpx;
+      position: absolute;
+      top: calc(55% + 18rpx);
+      left: 50%;
+      transform: translateX(-50%);
+      z-index: 99;
+    }
+    .benner-icontop {
+      width: 45rpx;
+      height: 20rpx;
+      position: absolute;
+      top: 55%;
+      left: 50%;
+      transform: translateX(-50%);
+    }
+    .benner-box {
+      height: 256rpx;
+      width: 344rpx;
+      position: relative;
+    }
+
+    .benner-left-box {
+      background: url("../../static/home/benner-left.-bg.png") center/100% 99%
+        no-repeat;
+      .text1 {
+        color: rgba(255, 255, 255, 0.8);
+        color: 28rpx;
+        position: absolute;
+        left: 26rpx;
+        top: 88rpx;
+      }
+      .btn {
+        font-size: 24rpx;
+        background: #1f1f1f;
+        color: #acf934;
+        display: inline-block;
+        border-radius: 390rpx;
+        padding: 8rpx 24rpx;
+        padding-bottom: 10rpx;
+        position: absolute;
+        bottom: 38rpx;
+        left: 26rpx;
+      }
+    }
+    .benner-right-box {
+      background: url("../../static/home/benner-right-bg.png") center/100% 99%
+        no-repeat;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-evenly;
+      align-items: center;
+      height: 256rpx;
+      .text {
+        color: #999;
+        font-size: 20rpx;
+        position: absolute;
+        top: 56rpx;
+        left: 26rpx;
+      }
+      .guard {
+        position: relative;
+        left: 0;
+        top: 0;
+        width: 312rpx;
+        height: 104rpx;
+        background: url("../../static/home/benner-right-btnTop.png") center/100%
+          no-repeat;
+        margin-bottom: 10rpx;
+      }
+      .match {
+        position: relative;
+        left: 0;
+        top: 0;
+        width: 312rpx;
+        height: 104rpx;
+        background: url("../../static/home/benner-right-btnBom.png") center/100%
+          no-repeat;
+      }
+    }
+  }
+}
+.waterfall-list-container {
+  background: #fff;
+}
+.navCenter {
+  .topBox {
+    display: flex;
+    flex-direction: row;
+    justify-content: center;
+    align-items: center;
+  }
+}
+.lhSelectCity {
+  background-color: #fff;
+  position: fixed;
+  left: 0;
+  right: 0;
+  width: 100%;
+  height: 100vh;
+  padding: 0 25rpx;
+  padding-top: var(--status-bar-height);
+}
+.homePage {
+  ::v-deep.zp-scroll-view-super {
+    // padding-top: 22rpx;
+    border-top-left-radius: 40rpx;
+    border-top-right-radius: 40rpx;
+    background-color: #fff;
+  }
+}

+ 54 - 154
pages/index/index copy.vue

@@ -22,6 +22,7 @@
 			<template #top>
 				<page-navbar>
 					<template #navCenter>
+					<view>
 						<view class="top" style="display: flex">
 							<!-- 手动选择城市功能隐藏 -->
 							<!-- <view class="topBox" @click="lhSelectCityFun"> -->
@@ -34,17 +35,17 @@
                   ">
 									{{ currentCity }}
 								</text>
-								<!-- <image src="@/static/home/home-bom.png"
-									style="width: 36rpx; height: 36rpx;margin-left: 15rpx;margin-right: 30rpx;"></image> -->
+								<image src="@/static/icon/loacltion.png"
+									style="width: 36rpx; height: 36rpx;margin-left: 15rpx;margin-right: 30rpx;"></image>
 							</view>
-							<view class="weather">
+							<!-- <view class="weather">
 								<p>
 									{{ weather.weather }}<i :class="'qi-' + weather.icon"></i>️{{
 										weather.temp
 									}}
 								</p>
 								<p>{{ getDayOfWeek }}</p>
-							</view>
+							</view> -->
 						</view>
 						<view class="search" @click="goPage('/pages/index/Search')">
 							<uv-input placeholder="🔥 潮玩大作战 派对季重磅开启!" border="none"
@@ -61,6 +62,7 @@
 								</template>
 							</uv-input>
 						</view>
+					</view>
 					</template>
 				</page-navbar>
 			</template>
@@ -77,8 +79,10 @@
 
 					<template #classModel>
 						<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')" src="@/static/home/crowdFunding.png" class="benner-icontop scale-tap" mode=""></image>
+							<image @click="goPage('/pages/my/job')" src="@/static/home/task.png"
+								class="benner-iconBom scale-tap" mode=""></image>
+							<image @click="goPage('/pages/crowdFunding/crowdFunding')"
+								src="@/static/home/crowdFunding.png" class="benner-icontop scale-tap" mode=""></image>
 						</view>
 					</template>
 				</sortble>
@@ -96,7 +100,7 @@
 					<!-- 关注列表 -->
 					<swiper-item>
 						<view class="follow-list">
-							<block v-if="currentTab === 0 && followList.length > 0">
+							<block v-if="followList.length > 0">
 								<w-waterfall :data="followList">
 									<template v-slot:content="{ item, width }">
 										<card :item="formatItem(item)" :width="width"
@@ -106,34 +110,16 @@
 									</template>
 								</w-waterfall>
 							</block>
-							<view class="no-data"
-								v-else-if="currentTab === 0 && !isLoadingFollow && followList.length === 0">
+							<view class="no-data" v-else-if="!isLoadingFollow && followList.length === 0">
 								<text>暂无关注数据</text>
 							</view>
 						</view>
 					</swiper-item>
 
-					<!-- 推荐列表 -->
-					<swiper-item>
-						<view class="recommend-list">
-							<w-waterfall v-if="currentTab === 1 && recommendList.length > 0" :data="recommendList">
-								<template v-slot:content="{ item, width }">
-									<card :item="formatItem(item)" :width="width" :custom-style="{ background: '#fff' }"
-										textColor="#000" @imageLoad="onImageLoaded">
-									</card>
-								</template>
-							</w-waterfall>
-							<view class="no-data"
-								v-if="currentTab === 1 && recommendList.length === 0 && !isLoadingRecommend">
-								<text>暂无推荐数据</text>
-							</view>
-						</view>
-					</swiper-item>
-
 					<!-- 探索列表 -->
 					<swiper-item>
 						<view class="explore-list">
-							<view class="hot-topics" v-if="currentTab === 2">
+							<view class="hot-topics">
 								<view class="hot-topics-header">
 									<image class="hot-topics-title" src="@/static/home/hot-topics-title.png"
 										mode="aspectFit">
@@ -144,7 +130,7 @@
 									<swiper-item v-for="(page, pageIndex) in topicPages" :key="pageIndex">
 										<view class="hot-topics-list">
 											<view v-for="(topic, index) in page" :key="index" class="topic-item"
-												@click="goToArticleDetail(topic.id)">
+												@click="goToArticleDetail(topic.id, topic)">
 												<view class="hot-topics-left">
 													<image v-if="pageIndex * 4 + index == 0"
 														src="@/static/icon/icon-first.png"
@@ -176,7 +162,7 @@
 								</view>
 							</view>
 							<view class="news-list">
-								<w-waterfall v-if="currentTab === 2 && newsList.length > 0" :data="newsList">
+								<w-waterfall v-if="newsList.length > 0" :data="newsList">
 									<template v-slot:content="{ item, width }">
 										<card :item="formatItem(item)" :width="width"
 											goLink="/pages/index/articleDetail?id="
@@ -185,7 +171,7 @@
 									</template>
 								</w-waterfall>
 							</view>
-							<view class="no-data" v-if="currentTab === 2 && newsList.length === 0 && !isLoadingNews">
+							<view class="no-data" v-if="newsList.length === 0 && !isLoadingNews">
 								<text>暂无新闻数据</text>
 							</view>
 						</view>
@@ -197,7 +183,7 @@
 		<tabbar-vue :tabbars="tabbars" :currentIndex="0" ref="tabbar"></tabbar-vue>
 
 		<!-- 添加浮动按钮 -->
-		<view v-if="currentTab === 2" class="float-btn" @click="goToMake">
+		<view v-if="currentTab === 1" class="float-btn" @click="goToMake">
 			<image src="/static/home/release-btn.png" class="float-btn-icon"></image>
 		</view>
 
@@ -280,6 +266,10 @@ export default {
 			},
 			windowHeight: uni.getWindowInfo().windowHeight,
 			bannerList: [
+				{
+					image: "../../static/home/home-swper3.png",
+					url: "/pages/crowdFunding/crowdFunding",
+				},
 				{
 					image: "../../static/home/home-swper.png",
 					url: "/pages/makedetail/makeImgDetail",
@@ -292,24 +282,20 @@ export default {
 			cardList: [],
 			list: [], // 瀑布流全部数据
 			dataList: [],
-			tabs: ["关注", "推荐", "探索"],
+			tabs: ["关注", "探索"],
 			currentTab: 1,
 			currentTopicPage: 0,
 			followList: [], // 关注列表数据
-			recommendList: [], // 推荐列表数据
 			exploreList: [], // 探索列表数据
 			hotNewsList: [], // 热点新闻数据
 			newsList: [], // 新闻列表数据
 			followOffset: 0, // 关注列表偏移量
-			recommendOffset: 0, // 推荐列表偏移量
 			exploreOffset: 0, // 探索列表偏移量
 			newsOffset: 0, // 新闻列表偏移量
 			hasMoreFollow: true, // 是否有更多关注列表数据
-			hasMoreRecommend: true, // 是否有更多推荐列表数据
 			hasMoreExplore: true, // 是否有更多探索列表数据
 			hasMoreNews: true, // 是否有更多新闻列表数据
 			isLoadingFollow: false, // 是否正在加载关注列表
-			isLoadingRecommend: false, // 是否正在加载推荐列表
 			isLoadingExplore: false, // 是否正在加载探索列表
 			isLoadingNews: false, // 是否正在加载新闻列表
 			hotTopics: [],
@@ -360,8 +346,6 @@ export default {
 				case 0:
 					return this.followList;
 				case 1:
-					return this.recommendList; // 使用专门的推荐列表
-				case 2:
 					return this.exploreList;
 				default:
 					return [];
@@ -401,10 +385,10 @@ export default {
 			this.currentTab = 0;
 			this.queryList();
 		} else {
-			this.tabs = ["关注", "推荐", "探索"];
+			this.tabs = ["关注", "探索"];
 			// this.currentTab = 1;
 			// 如果数据为空,加载初始数据
-			if (this.recommendList.length === 0) {
+			if (this.followList.length === 0) {
 				this.initialLoad();
 			}
 		}
@@ -421,11 +405,6 @@ export default {
 				}
 				break;
 			case 1:
-				if (this.hasMoreRecommend && !this.isLoadingRecommend) {
-					this.loadRecommendList();
-				}
-				break;
-			case 2:
 				if (this.hasMoreNews && !this.isLoadingNews) {
 					this.loadNewsList();
 				}
@@ -435,24 +414,7 @@ export default {
 
 	// 下拉刷新数据
 	methods: {
-		swipeRight() {
-			let index = this.currentTab
-			index--
-			if (index < 0) {
-				index = this.tabs.length - 1
-			}
-			this.switchTab(index)
-			console.log('向右滑动')
-		},
-		swipeLeft() {
-			let index = this.currentTab
-			index++
-			if (index > this.tabs.length - 1) {
-				index = 0
-			}
-			this.switchTab(index)
-			console.log('向左滑动')
-		},
+
 		getWeather(city) {
 			uni.request({
 				url: this.$apiHost + "/Index/getAreaInfo",
@@ -504,13 +466,6 @@ export default {
 					this.loadFollowList();
 					break;
 				case 1:
-					// 重置推荐列表
-					this.recommendList = [];
-					this.recommendOffset = 0;
-					this.hasMoreRecommend = true;
-					this.loadRecommendList();
-					break;
-				case 2:
 					// 重置热点新闻和新闻列表
 					this.hotNewsList = [];
 					this.newsList = [];
@@ -530,10 +485,6 @@ export default {
 					this.loadFollowList();
 					break;
 				case 1:
-					// 重置推荐列表
-					this.loadRecommendList();
-					break;
-				case 2:
 					// 重置热点新闻和新闻列表
 					// 加载热点新闻和新闻列表
 					this.loadHotNews();
@@ -556,11 +507,6 @@ export default {
 					this.hasMoreFollow = true;
 					break;
 				case 1:
-					this.recommendList = [];
-					this.recommendOffset = 0;
-					this.hasMoreRecommend = true;
-					break;
-				case 2:
 					this.newsList = [];
 					this.hotTopics = [];
 					this.newsOffset = 0;
@@ -583,9 +529,6 @@ export default {
 					this.loadFollowList();
 					break;
 				case 1:
-					this.loadRecommendList();
-					break;
-				case 2:
 					this.loadHotNews();
 					this.loadNewsList();
 					break;
@@ -602,52 +545,39 @@ export default {
 			// offset设置为当前列表长度
 			this.followOffset = currentList.length;
 			console.log('请求关注列表数据,当前offset =', this.followOffset);
-
-			category
-		},
-		// 修改推荐列表加载方法
-		loadRecommendList() {
-			if (this.isLoadingRecommend) return;
-			this.isLoadingRecommend = true;
-
-			// 保存当前列表数据
-			const currentList = [...this.recommendList];
-
-			// offset设置为当前列表长度
-			this.recommendOffset = currentList.length;
-			console.log('请求推荐列表数据,当前offset =', this.recommendOffset);
-
 			uni.request({
 				url: this.$apiHost + "/Work/getlist",
 				data: {
 					uuid: getApp().globalData.uuid,
 					skey: getApp().globalData.skey,
-					type: "recommend",
-					offset: this.recommendOffset,
+					type: "attention",
+					offset: this.followOffset,
 				},
 				header: {
 					"content-type": "application/json",
 					sign: getApp().globalData.headerSign,
 				},
 				success: (res) => {
-					console.log("推荐列表数据:", res.data);
+					console.log("关注列表数据:", res.data);
 					if (res.data.success == "yes" && res.data.list && res.data.list.length > 0) {
 						// 追加新数据到列表
-						this.recommendList = [...currentList, ...res.data.list];
-						console.log('推荐列表加载成功,当前列表长度:', this.recommendList.length);
-						this.hasMoreRecommend = res.data.list.length >= 20;
+						this.followList = [...currentList, ...res.data.list];
+						console.log('关注列表加载成功,当前列表长度:', this.followList.length);
+						this.hasMoreFollow = res.data.list.length >= 20;
 					} else {
-						this.hasMoreRecommend = false;
-						this.showNoMoreDataToast("没有更多推荐内容了");
+						this.hasMoreFollow = false;
+						this.showNoMoreDataToast("没有更多关注内容了");
 					}
 
+					// 使用 nextTick 确保数据更新后再通知组件
 					this.$nextTick(() => {
 						if (this.$refs.paging) {
 							// 第一个参数需要是数组,将当前列表传入
-							this.$refs.paging.complete(this.recommendList);
+							this.$refs.paging.complete(this.followList);
 						}
 						// 数据加载完成后更新swiper高度
-						if (this.currentTab === 1) {
+						if (this.currentTab === 0) {
+							// 使用setTimeout确保数据渲染完成后再更新高度
 							setTimeout(() => {
 								this.updateSwiperHeight();
 							}, 300);
@@ -658,11 +588,11 @@ export default {
 					});
 				},
 				complete: () => {
-					this.isLoadingRecommend = false;
+					this.isLoadingFollow = false;
 				},
 				fail: (e) => {
-					console.log("请求推荐列表失败:", e);
-					this.isLoadingRecommend = false;
+					console.log("请求关注列表失败:", e);
+					this.isLoadingFollow = false;
 					if (this.$refs.paging) {
 						// 加载失败时提供空数组
 						this.$refs.paging.complete([]);
@@ -749,7 +679,7 @@ export default {
 							this.$refs.paging.complete(this.newsList);
 						}
 						// 数据加载完成后更新swiper高度
-						if (this.currentTab === 2) {
+						if (this.currentTab === 1) {
 							setTimeout(() => {
 								this.updateSwiperHeight();
 							}, 300);
@@ -779,6 +709,7 @@ export default {
 		formatItem(item) {
 			// console.log("item:", item);
 
+
 			let img = "";
 			if (item.images) {
 				img = item.images.split("|")[0];
@@ -799,10 +730,11 @@ export default {
 				desc: item.desc || "",
 				userID: item.userID || 0,
 				backgroundColor: "#f6f6f6",
+				type: item.type || "",
 			};
 		},
 
-		goToArticleDetail(id) {
+		goToArticleDetail(id, item) {
 			if (!id) {
 				uni.showToast({
 					title: "文章ID不存在",
@@ -810,14 +742,14 @@ export default {
 				});
 				return;
 			}
+
 			// uni.$emit("check_login", () => {
 			uni.navigateTo({
 				url: "/pages/index/articleDetail?id=" + id,
 			});
 			// });
 		},
-		goWo
-rk(item) {
+		goWork(item) {
 			console.log("skeylogin", "xxx");
 			uni.$emit("check_login", () => {
 				uni.navigateTo({
@@ -847,18 +779,15 @@ rk(item) {
 			console.log('下拉刷新开始');
 			// 重置所有数据
 			this.followList = [];
-			this.recommendList = [];
 			this.newsList = [];
 			this.hotTopics = [];
 
 			// 重置偏移量
 			this.followOffset = 0;
-			this.recommendOffset = 0;
 			this.newsOffset = 0;
 
 			// 重置加载状态
 			this.hasMoreFollow = true;
-			this.hasMoreRecommend = true;
 			this.hasMoreNews = true;
 
 			// 根据当前标签页加载数据
@@ -896,27 +825,6 @@ rk(item) {
 					}
 					break;
 				case 1:
-					if (this.hasMoreRecommend && !this.isLoadingRecommend) {
-						this.loadRecommendList();
-					} else if (!this.hasMoreRecommend && !this.isLoadingRecommend && this.recommendList.length > 0) {
-						this.showNoMoreDataToast("没有更多推荐内容了");
-						// 通知组件加载完毕且没有更多数据
-						this.$nextTick(() => {
-							if (this.$refs.paging) {
-								this.$refs.paging.complete(this.recommendList);
-							}
-						});
-					} else if (this.recommendList.length === 0 && !this.isLoadingRecommend) {
-						this.showNoMoreDataToast("暂无推荐内容");
-						// 通知组件加载完毕且没有数据
-						this.$nextTick(() => {
-							if (this.$refs.paging) {
-								this.$refs.paging.complete([]);
-							}
-						});
-					}
-					break;
-				case 2:
 					if (this.hasMoreNews && !this.isLoadingNews) {
 						this.loadNewsList();
 					} else if (!this.hasMoreNews && !this.isLoadingNews && this.newsList.length > 0) {
@@ -956,8 +864,6 @@ rk(item) {
 			// 根据当前选中的标签页查询内容高度
 			let selector = '.follow-list';
 			if (this.currentTab === 1) {
-				selector = '.recommend-list';
-			} else if (this.currentTab === 2) {
 				selector = '.explore-list';
 			}
 
@@ -983,13 +889,6 @@ rk(item) {
 					this.loadFollowList();
 					break;
 				case 1:
-					// 重置推荐列表
-					this.recommendList = [];
-					this.recommendOffset = 0;
-					this.hasMoreRecommend = true;
-					this.loadRecommendList();
-					break;
-				case 2:
 					// 重置热点新闻和新闻列表
 					this.hotNewsList = [];
 					this.newsList = [];
@@ -1081,20 +980,21 @@ rk(item) {
 }
 
 .follow-list,
-.recommend-list,
 .explore-list {
 	min-height: 300px;
 }
-.classModel-box{
+
+.classModel-box {
 	width: 100%;
- 
+
 	display: flex;
 	align-items: center;
 	justify-content: space-between;
-	image{
-		width:50%;
-		height:160rpx;
-	} 
+
+	image {
+		width: 50%;
+		height: 160rpx;
+	}
 }
 </style>
 <style>

+ 64 - 16
pages/index/index.scss

@@ -5,11 +5,11 @@
   font-style: normal;
 }
 .page-top {
-  background: url("/static/home/home-top.png") 518rpx
-      calc(-10rpx + var(--status-bar-height)) / 212rpx 296rpx no-repeat,
-    url("/static/home/home-t.png") top center/100% auto no-repeat,
-    linear-gradient(to top, #d0ffa5, #acff5f);
+  background: url("/static/home/sy_img_top1.png") top center/100% no-repeat;
+  height: calc(220rpx + var(--status-bar-height));
+  margin-bottom: -120rpx;
 }
+ 
 .tab-nav {
   display: flex;
   justify-content: flex-start;
@@ -63,8 +63,8 @@
 }
 
 .hot-topics {
-  padding: 20rpx 28rpx;// background: #fff;
-  margin:0 20rpx;
+  padding: 20rpx 28rpx; // background: #fff;
+  margin: 0 20rpx;
   margin-top: 0;
   border-radius: 20rpx;
   border: #000000 solid 2rpx;
@@ -169,15 +169,15 @@
     margin-top: 20rpx;
 
     .dot {
-      width: 8rpx; 
+      width: 8rpx;
       height: 8rpx;
       border-radius: 6rpx;
       background: #cecece;
       margin: 0 6rpx;
 
       &.active {
-       width: 20rpx;
-        
+        width: 20rpx;
+
         background: #1f1f1f;
       }
     }
@@ -233,7 +233,7 @@
 }
 
 .no-data {
-  text-align: center; 
+  text-align: center;
   padding: 40rpx 0;
   color: #808080;
   font-size: 28rpx;
@@ -438,12 +438,6 @@
   background: #fff;
 }
 .navCenter {
-  .topBox {
-    display: flex;
-    flex-direction: row;
-    justify-content: center;
-    align-items: center;
-  }
 }
 .lhSelectCity {
   background-color: #fff;
@@ -463,3 +457,57 @@
     background-color: #fff;
   }
 }
+.homePage {
+  ::v-deep.uv-navbar__content {
+    height: auto !important;
+    padding-top: 16rpx;
+    padding-bottom: 24rpx;
+  }
+  .hear-box {
+    display: flex;
+    align-items: center;
+    padding:0 30rpx;
+    box-sizing: border-box;
+    width: 100%;
+    .top {
+      display: flex;
+    }
+    .topBox {
+      display: flex;
+      flex-direction: row;
+      justify-content: center;
+      align-items: center;
+      text {
+        font-size: 30rpx;
+        font-weight: 600;
+        white-space: nowrap;
+      }
+      image {
+        width: 32rpx;
+        height: 32rpx;
+        margin-left: 4rpx;
+        margin-right: 20rpx;
+        flex-shrink: 0;
+      }
+    }
+    .search {
+      margin-top: 0rpx;
+      width: 574rpx;
+      flex: 1;
+
+      .uv-input {
+        height: 72rpx;
+        border: 6rpx solid #000;
+        box-sizing: border-box;
+        padding-left: 4rpx;
+        box-sizing: border-box;
+
+        .uni-input-placeholder {
+          color: #999 !important;
+          font-size: 24rpx;
+          padding-left: 4rpx;
+        }
+      }
+    }
+  }
+}

+ 46 - 56
pages/index/index.vue

@@ -22,45 +22,32 @@
 			<template #top>
 				<page-navbar>
 					<template #navCenter>
-						<view class="top" style="display: flex">
-							<!-- 手动选择城市功能隐藏 -->
-							<!-- <view class="topBox" @click="lhSelectCityFun"> -->
-							<view class="topBox">
-								<text style="
-                    margin-left: 10rpx;
-                    margin-right: 20rpx;
-                    font-size: 44rpx;
-                    font-weight: 600;
-                  ">
-									{{ currentCity }}
-								</text>
-								<!-- <image src="@/static/home/home-bom.png"
-									style="width: 36rpx; height: 36rpx;margin-left: 15rpx;margin-right: 30rpx;"></image> -->
+						<view class="hear-box">
+							<view class="top"> 
+								<view class="topBox">
+									<text>
+										{{ currentCity }}
+									</text>
+									<image src="@/static/icon/loacltion.png" />
+								</view>
+
 							</view>
-							<view class="weather">
-								<p>
-									{{ weather.weather }}<i :class="'qi-' + weather.icon"></i>️{{
-										weather.temp
-									}}
-								</p>
-								<p>{{ getDayOfWeek }}</p>
+							<view class="search" @click="goPage('/pages/index/Search')">
+								<uv-input placeholder="🔥 潮玩大作战 派对季重磅开启!" border="none"
+									:custom-style="{ background: '#fff', paddingLeft: '25rpx' }" shape="circle">
+									<image class="testImg" src="@/static/home/icon-hot.png"
+										style="width: 22rpx; height: 30rpx"></image>
+
+									<template #suffix>
+										<view class="input-box">
+											<image src="@/static/home/sy_icon_sousuo.png"
+												style="width: 32rpx; height: 32rpx">
+											</image>
+										</view>
+									</template>
+								</uv-input>
 							</view>
 						</view>
-						<view class="search" @click="goPage('/pages/index/Search')">
-							<uv-input placeholder="🔥 潮玩大作战 派对季重磅开启!" border="none"
-								:custom-style="{ background: '#fff', paddingLeft: '25rpx' }" shape="circle">
-								<image class="testImg" src="@/static/home/icon-hot.png"
-									style="width: 22rpx; height: 30rpx"></image>
-
-								<template #suffix>
-									<view class="input-box">
-										<image src="@/static/home/sy_icon_sousuo.png"
-											style="width: 32rpx; height: 32rpx">
-										</image>
-									</view>
-								</template>
-							</uv-input>
-						</view>
 					</template>
 				</page-navbar>
 			</template>
@@ -77,8 +64,10 @@
 
 					<template #classModel>
 						<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')" src="@/static/home/crowdFunding.png" class="benner-icontop scale-tap" mode=""></image>
+							<image @click="goPage('/pages/my/job')" src="@/static/home/task.png"
+								class="benner-iconBom scale-tap" mode=""></image>
+							<image @click="goPage('/pages/crowdFunding/crowdFunding')"
+								src="@/static/home/crowdFunding.png" class="benner-icontop scale-tap" mode=""></image>
 						</view>
 					</template>
 				</sortble>
@@ -96,7 +85,7 @@
 					<!-- 关注列表 -->
 					<swiper-item>
 						<view class="follow-list">
-							<block v-if=" followList.length > 0">
+							<block v-if="followList.length > 0">
 								<w-waterfall :data="followList">
 									<template v-slot:content="{ item, width }">
 										<card :item="formatItem(item)" :width="width"
@@ -106,8 +95,7 @@
 									</template>
 								</w-waterfall>
 							</block>
-							<view class="no-data"
-								v-else-if=" !isLoadingFollow && followList.length === 0">
+							<view class="no-data" v-else-if="!isLoadingFollow && followList.length === 0">
 								<text>暂无关注数据</text>
 							</view>
 						</view>
@@ -116,7 +104,7 @@
 					<!-- 探索列表 -->
 					<swiper-item>
 						<view class="explore-list">
-							<view class="hot-topics" >
+							<view class="hot-topics">
 								<view class="hot-topics-header">
 									<image class="hot-topics-title" src="@/static/home/hot-topics-title.png"
 										mode="aspectFit">
@@ -127,7 +115,7 @@
 									<swiper-item v-for="(page, pageIndex) in topicPages" :key="pageIndex">
 										<view class="hot-topics-list">
 											<view v-for="(topic, index) in page" :key="index" class="topic-item"
-												@click="goToArticleDetail(topic.id,topic)">
+												@click="goToArticleDetail(topic.id, topic)">
 												<view class="hot-topics-left">
 													<image v-if="pageIndex * 4 + index == 0"
 														src="@/static/icon/icon-first.png"
@@ -159,7 +147,7 @@
 								</view>
 							</view>
 							<view class="news-list">
-								<w-waterfall v-if=" newsList.length > 0" :data="newsList">
+								<w-waterfall v-if="newsList.length > 0" :data="newsList">
 									<template v-slot:content="{ item, width }">
 										<card :item="formatItem(item)" :width="width"
 											goLink="/pages/index/articleDetail?id="
@@ -168,7 +156,7 @@
 									</template>
 								</w-waterfall>
 							</view>
-							<view class="no-data" v-if=" newsList.length === 0 && !isLoadingNews">
+							<view class="no-data" v-if="newsList.length === 0 && !isLoadingNews">
 								<text>暂无新闻数据</text>
 							</view>
 						</view>
@@ -263,7 +251,7 @@ export default {
 			},
 			windowHeight: uni.getWindowInfo().windowHeight,
 			bannerList: [
-			{
+				{
 					image: "../../static/home/home-swper3.png",
 					url: "/pages/crowdFunding/crowdFunding",
 				},
@@ -411,7 +399,7 @@ export default {
 
 	// 下拉刷新数据
 	methods: {
- 
+
 		getWeather(city) {
 			uni.request({
 				url: this.$apiHost + "/Index/getAreaInfo",
@@ -541,7 +529,7 @@ export default {
 
 			// offset设置为当前列表长度
 			this.followOffset = currentList.length;
-			console.log('请求关注列表数据,当前offset =', this.followOffset); 
+			console.log('请求关注列表数据,当前offset =', this.followOffset);
 			uni.request({
 				url: this.$apiHost + "/Work/getlist",
 				data: {
@@ -731,7 +719,7 @@ export default {
 			};
 		},
 
-		goToArticleDetail(id,item) {
+		goToArticleDetail(id, item) {
 			if (!id) {
 				uni.showToast({
 					title: "文章ID不存在",
@@ -739,7 +727,7 @@ export default {
 				});
 				return;
 			}
-			
+
 			// uni.$emit("check_login", () => {
 			uni.navigateTo({
 				url: "/pages/index/articleDetail?id=" + id,
@@ -980,16 +968,18 @@ export default {
 .explore-list {
 	min-height: 300px;
 }
-.classModel-box{
+
+.classModel-box {
 	width: 100%;
- 
+
 	display: flex;
 	align-items: center;
 	justify-content: space-between;
-	image{
-		width:50%;
-		height:160rpx;
-	} 
+
+	image {
+		width: 50%;
+		height: 160rpx;
+	}
 }
 </style>
 <style>

+ 1 - 1
pages/make/index.vue

@@ -34,7 +34,7 @@
 
 		<tabbar-view :tabbars="tabbars" :currentIndex="1" ref="tabbar"></tabbar-view>
 		<!-- 新手引导组件 -->
-		<novice-guidance :step="step"></novice-guidance>
+		<!-- <novice-guidance :step="step"></novice-guidance> -->
 	</view>
 </template>
 

+ 2 - 2
pages/makedetail/intelligentLifeChart.scss

@@ -136,7 +136,7 @@ page {
         width: 112rpx;
         position: absolute;
         bottom: 0;
-        left: 20rpx;
+        left: 32rpx;
       }
   }
   // padding-top: 30rpx;
@@ -149,7 +149,7 @@ page {
     border: 2rpx solid rgba(255, 255, 255, 0.15);
     margin: 0 25rpx;
     align-items: center;
-    padding-left: 116rpx;
+    padding-left: 20rpx;
     padding-right: 22rpx;
     position: relative;
     left: 0;

+ 2 - 1
pages/makedetail/intelligentLifeChart.vue

@@ -451,8 +451,9 @@ export default {
 			}
 			this.$nextTick(() => {
 				this.recalculateHeights();
+				this.scrollToBottom();
 			});
-		});
+		});  
 
 		const systemInfo = uni.getSystemInfoSync();
 		this.statusBarHeight = systemInfo.statusBarHeight;

+ 1 - 0
pages/makedetail/intelligentMusicProduction.vue

@@ -867,6 +867,7 @@ export default {
 			}
 			this.$nextTick(() => {
 				this.recalculateHeights();
+				this.scrollToBottom();
 			});
 		});
 

+ 34 - 3
pages/makedetail/makeImgDetail.vue

@@ -150,7 +150,8 @@ export default {
 			descriptionLength: 0,
 			action: '',
 			environment: '',
-			image: '',
+			image: '', 
+			timer: null, // 添加定时器变量
 			selectedStyle: -1,
 			actionTags: ['跳舞', '唱歌', '喝咖啡', '看书', '运动'],
 			environmentTags: ['都市大道', '大树底下', '办公室', '厨房'],
@@ -226,7 +227,13 @@ export default {
 		this.getMyInfo();
 		if (e.id) {
 			this.getQueueDetail(e.id)
-		}
+			// 启动轮询
+			this.startPolling(e.id);
+		} 
+	},
+	onHide() {
+		// 组件卸载时清除定时器
+		this.clearPolling();
 	},
 	methods: {
 		doYouWantToEdit() {
@@ -399,7 +406,7 @@ export default {
 				success: (res) => {
 					console.log("查询单个结果:", res.data);
 					if (res.data.success == "yes") {
-						var { queuePosition, allPosition, progress, description, action, environment, environment, style } = res.data.data
+						var {id, queuePosition, allPosition, progress, description, action, environment, environment, style ,work_id} = res.data.data
 						that.queuePosition = queuePosition
 						that.allPosition = allPosition
 						that.progress = progress
@@ -408,6 +415,15 @@ export default {
 						that.action = action
 						that.environment = environment
 						that.selectedStyle = that.styleList.findIndex(item => item.name == style)
+						if (progress >=100 && work_id) { 
+							uni.showToast({
+								title: '生成完成',
+								icon: 'none'
+							});
+							setTimeout(function () {
+								that.goPage("/pages/makedetail/makeDetail?id="+id +'&&queueId'+work_id)  
+							}, 500);
+						}
 						if (queuePosition == allPosition) {
 							// 创作中逻辑
 							that.inQueue = true
@@ -431,6 +447,21 @@ export default {
 			uni.navigateTo({
 				url: page,
 			});
+		}, 
+		// 开始轮询
+		startPolling(queueId) {  
+			this.clearPolling(); // 先清除可能存在的定时器
+			this.timer = setInterval(() => {
+				this.getQueueDetail( queueId);
+			}, 5000); // 10秒轮询一次
+		},
+		
+		// 清除轮询
+		clearPolling() {
+			if (this.timer) {
+				clearInterval(this.timer);
+				this.timer = null;
+			}
 		},
 	}
 }

+ 38 - 6
pages/makedetail/makeMusicDetail.vue

@@ -43,7 +43,7 @@
 			<view class="section-title">创作预览</view>
 			<view class="preview-card">
 				<image src="@/static/makedetail/cz_icon_shengcheng.png" mode="aspectFit"></image>
-				<view class="text1">生成中0%</view>
+				<view class="text1">生成中{{queueProgress}}%</view>
 				<view class="text2">退出不影响继续生成</view>
 			</view>
 		</view>
@@ -169,7 +169,8 @@ export default {
 			queueMessage: '',
 			myinfo: {},
 			activeParentIndex: 0,
-
+			timer: null, // 添加定时器变量
+			queueProgress:0,
 			step: {
 				name: "makeMusicGuide",
 				guideList: [
@@ -212,9 +213,15 @@ export default {
 		this.getTags(); // Call getTags on load
 		if (e.id) {
 			this.getQueueDetail(e.id)
+			// 启动轮询
+			this.startPolling(e.id);
 		} 
 						
 	},
+	onHide() {
+		// 组件卸载时清除定时器
+		this.clearPolling();
+	},
 	computed: {
 		currentTags() {
 			// 确保 selectedTabObject 存在且有 children 属性
@@ -407,15 +414,16 @@ export default {
 				currentTabSelectedTags.push(tagName);
 			}
 		},
-		getQueueDetail(id) {
+		getQueueDetail(id) { 
 			if (!id) {
 				return
-			}
+			} 
 			let that = this
 			uni.request({
 				url: this.$apiHost + '/WorkAI/getQueueDetail',
 				data: {
 					uuid: getApp().globalData.uuid,
+					skey: getApp().globalData.skey,
 					id: id
 				},
 				header: {
@@ -426,10 +434,19 @@ export default {
 				success: (res) => {
 					console.log("查询单个结果:", res.data);
 					if (res.data.success == "yes") {
-						var { queuePosition, allPosition, song_name, lyrics, style } = res.data.data
+						var {id,work_id, queuePosition, allPosition, song_name, lyrics, style,progress } = res.data.data
 						that.songName = song_name
 						that.lyrics = lyrics
-
+						that.queueProgress = progress 
+						if (progress >=100 && work_id) { 
+							uni.showToast({
+								title: '生成完成',
+								icon: 'none'
+							});
+							setTimeout(function () {
+								that.goPage("/pages/makedetail/makeDetail?id="+id +'&&queueId'+work_id)  
+							}, 500);
+						}
 						// 根据新的tagOptions结构处理style
 						const styles = style.split(',');
 						that.selectedTags = {}; // 清空之前的选择
@@ -507,6 +524,21 @@ export default {
 				url: page,
 			});
 		},
+		// 开始轮询
+		startPolling(queueId) {  
+			this.clearPolling(); // 先清除可能存在的定时器
+			this.timer = setInterval(() => {
+				this.getQueueDetail( queueId);
+			}, 5000); // 10秒轮询一次
+		},
+		
+		// 清除轮询
+		clearPolling() {
+			if (this.timer) {
+				clearInterval(this.timer);
+				this.timer = null;
+			}
+		},
 	}
 }
 </script>

+ 1 - 1
pages/my/creativeExpert.vue

@@ -34,7 +34,7 @@
 				<view>
 					Lv{{ myinfo.my_level }}
 				</view>
-				<image v-if="myinfo.is_vip || true" src="../../static/me/creativeExpert _vip.png" mode="widthFix"
+				<image v-if="myinfo.is_vip" src="../../static/me/creativeExpert _vip.png" mode="widthFix"
 					class="creativeExpert_vip" />
 				<view>
 					Lv{{ myinfo.my_level + 1 }}

+ 43 - 12
pages/my/editInfo.vue

@@ -69,7 +69,7 @@
 				<view class="info_item" @click="openBackgroundImage">
 					<text class="label">背景图</text>
 					<view class="content">
-						<image class="backgroundImage" :src="bgImage" mode="widthFix"></image>
+						<image class="backgroundImage" :src="bgImage" mode="aspectFill"></image>
 						<image class="arrow" src="../../static/me/arrow_right_gray.png" mode="widthFix" />
 					</view>
 				</view>
@@ -168,9 +168,8 @@
 					<view class="content">
 						<view style="padding: 20rpx 0;">
 							<uv-swiper :list="bgList" height="80" indicator :autoplay="false" keyName="url"
-							:displayMultipleItems="2" next-margin="40"  
-							imgMode="aspectFit" :indicator="false" :current="currentBgIndex" @click="changeBgSwiper"
-
+								:displayMultipleItems="2" next-margin="40" imgMode="aspectFit" :indicator="false"
+								:current="currentBgIndex" @click="changeBgSwiper"
 								style="width: 100%;    overflow: hidden; background: transparent;" />
 						</view>
 						<view class="info_item" @click="chooseBgImage">
@@ -238,6 +237,7 @@ export default {
 				{ url: require('../../static/me/theme5.jpg') },
 			],
 			currentBgIndex: 0,
+			uploading: false,
 		}
 	},
 	onLoad() {
@@ -638,6 +638,14 @@ export default {
 				}
 
 				// 权限获取成功后,继续执行上传
+				if (this.uploading) {
+					return;
+				}
+				this.uploading = true;
+				uni.showLoading({
+					title: '上传中...',
+					mask: true
+				});
 				this.uploadBgImage(sourceType);
 			} catch (error) {
 				console.error('权限检查失败:', error);
@@ -664,6 +672,7 @@ export default {
 						// #ifdef APP-PLUS
 						filepath = res.tempFilePaths[0];
 						// #endif
+						console.log('filepath:', filepath);
 
 						const uploadTask = uni.uploadFile({
 							url: _self.$apiHost + '/Xweb/upload_img?skey=' + _self.skey,
@@ -673,8 +682,8 @@ export default {
 								let resdata = JSON.parse(uploadFileRes.data)
 								console.log('Success:', resdata);
 								if (resdata.success == 'yes') {
-									// _self.bgList.push({ url: resdata.url });
-									_self.closePropUp()
+									_self.bgImage = resdata.url;
+									_self.closePropUp();
 									uni.showToast({
 										title: '上传成功',
 										icon: 'success'
@@ -684,14 +693,19 @@ export default {
 										title: resdata.str || '上传失败',
 										icon: 'none'
 									});
-					}
-				},
+								}
+							},
 							fail: function (uploadFileFail) {
 								console.log('Error:', uploadFileFail.data);
 								uni.showToast({
 									title: '上传失败',
 									icon: 'none'
 								});
+							},
+							complete: () => {
+								console.log('Complete:');
+								uni.hideLoading();
+								this.uploading = false;
 							}
 						});
 					}
@@ -706,14 +720,22 @@ export default {
 			});
 		},
 		changeBgSwiper(index) {
+			if (this.uploading) {
+				return;
+			}
+			this.uploading = true;
+			uni.showLoading({
+				title: '上传中...',
+				mask: true
+			});
 			if (typeof index === 'number') {
 				this.currentBgIndex = index;
 				this.bgImage = this.bgList[index].url;
 				// 上传选中的背景图片
-				this.uploadBgImage(this.bgList[index].url);
+				this.uploadBgImage1(this.bgList[index].url);
 			}
 		},
-		uploadBgImage(filepath) {
+		uploadBgImage1(filepath) {
 			var _self = this;
 			const uploadTask = uni.uploadFile({
 				url: _self.$apiHost + '/Xweb/upload_img?skey=' + _self.skey,
@@ -742,6 +764,11 @@ export default {
 						title: '上传失败',
 						icon: 'none'
 					});
+				},
+				complete: () => {
+					console.log('Complete:');
+					uni.hideLoading();
+					this.uploading = false;
 				}
 			});
 		},
@@ -986,7 +1013,8 @@ page {
 		border-bottom: 1rpx solid #f5f5f5;
 		padding-right: 20rpx;
 		background: #fff;
-	border-radius: 12rpx;
+		border-radius: 12rpx;
+
 		&:last-child {
 			border-bottom: none;
 		}
@@ -1016,12 +1044,15 @@ page {
 			}
 		}
 	}
+
 	::v-deep .uv-popup__content {
 		background: #f2f6f2 !important;
 	}
-	::v-deep .uv-swiper__wrapper__item__wrapper__image{
+
+	::v-deep .uv-swiper__wrapper__item__wrapper__image {
 		border-radius: 20rpx !important;
 	}
+
 	.content {
 		padding: 0 32rpx;
 	}

+ 6 - 1
pages/my/my.scss

@@ -18,7 +18,7 @@ page {
   background-position: center;
   background-size: auto 100%;
   min-height: calc(800rpx + var(--status-bar-height)); 
-  margin-bottom:-80rpx ;
+  // margin-bottom:-80rpx ;
   .header-box {
     width: 100%;
     height: 100%; 
@@ -307,7 +307,11 @@ page {
     }
     .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;
@@ -319,6 +323,7 @@ page {
         font-weight: 400;
         padding: 6rpx 16rpx;
         margin-right: 10rpx;
+        margin-bottom: 10rpx;
         image {
           width: 30rpx;
         }

+ 25 - 8
pages/my/my.vue

@@ -6,7 +6,8 @@
 		</view>
 		<view class="topBody">
 			<!-- <view class="header" :class="{ 'header-isvip': !isRecharge }"> -->
-			<view class="header" :style="{ backgroundImage: `url(${bgImage || '../../static/me/theme3.jpg'})` }">
+			<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">
@@ -40,7 +41,7 @@
 						</view>
 
 
-						<view class="label-box">
+						<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">
@@ -339,6 +340,7 @@ export default {
 			title: "",
 			sel: 1,
 			firstLevelNavActive: 0,
+			labelBoxHeight: 0,
 			myinfo: {
 				avator: "../../static/logo.png",
 				nickname: "",
@@ -402,12 +404,15 @@ export default {
 	},
 	onShow() {
 		uni.$emit("check_login", () => { });
-		// this.loadData();
 		this.offset = 0;
 		this.hasMore = true;
 		this.worksList = [];
 		this.loadInfo();
 
+		// 使用nextTick确保DOM已更新
+		this.$nextTick(() => {
+			this.getLabelBoxHeight();
+		});
 
 		// 检查全局变量,如果需要切换到生成中标签
 		if (getApp().globalData.needSwitchToGenerating) {
@@ -458,21 +463,21 @@ export default {
 			});
 
 		},
-		initiateFundraising() { 
+		initiateFundraising() {
 			if (this.myinfo.my_level < 3) {
 				this.$refs["DialogBox"]
 					.confirm({
 						title: "提示",
-						content: "您当前的等级为1级,需要达到3级才能发起募集",
+						content: "您当前的等级为" + this.myinfo.my_level + "级,需要达到3级才能发起募集",
 						DialogType: "inquiry",
 						btn1: "取消",
 						btn2: "去查看等级",
 						animation: 0,
 					})
 					.then((res) => {
-						 this.goPage('/pages/my/creativeExpert')
-						
-					},(res)=>{ 
+						this.goPage('/pages/my/creativeExpert')
+
+					}, (res) => {
 					});
 				return;
 			}
@@ -843,6 +848,18 @@ export default {
 				return (num / 1000000000).toFixed(1) + 'B';
 			}
 		},
+		// 获取label-box高度的方法
+		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);
+		},
 	},
 };
 </script>

+ 10 - 5
pages/vip/index.vue

@@ -198,11 +198,11 @@ export default {
 				icon: '../../static/vip/hy_icon_quanyi01.png',
 				desc: '创作加速,更快生成'
 			},
-			{
-				name: '专属星源礼包',
-				icon: '../../static/vip/hy_icon_quanyi02.png',
-				desc: '每日登录领更多星源'
-			},
+			// {
+			// 	name: '专属星源礼包',
+			// 	icon: '../../static/vip/hy_icon_quanyi02.png',
+			// 	desc: '每日登录领更多星源'
+			// },
 			{
 				name: '数据安全增强',
 				icon: '../../static/vip/hy_icon_quanyi03.png',
@@ -212,6 +212,11 @@ export default {
 				name: '深度思考升级',
 				icon: '../../static/vip/hy_icon_quanyi04.png',
 				desc: '深度思考,提升50%'
+			},
+			{
+				name: '成长加成',
+				icon: '../../static/vip/hy_icon_quanyi05.png',
+				desc: '设计达人等级加速'
 			},
 				// {
 				// 	name: 'VIP专属通道',

BIN
static/home/sy_img_top1.png


BIN
static/icon/loacltion.png


BIN
static/me/creativeExpert-text.png


BIN
static/vip/hy_icon_quanyi05.png