绿满眶商城微信小程序-uniapp
peng
2025-07-03 0d64f3e54a56c2e69ff154c91a799adb17b070bd
pages/kitchen/KitchenVideo.vue
@@ -1,5 +1,15 @@
<template>
  <view class="video-container">
     <view class="choosePlatType" :style="{top: menueButton + 'px'}">
        <view class="platTypeItem" v-for="item in choosePlat" :key="item.type" @click="chooseType=item.type">
           <view class="platTypeItenName">
            {{item.name}}
         </view>
         <view class="platTypeItemChoose" v-if="chooseType===item.type" >
         </view>
        </view>
     </view>
    <!-- 视频加载 -->
    <zero-loading v-show="videoLoading" type="circle" color="#0ebd57" text=""></zero-loading>
    <view class="showLeft" @click="showDrawer('showLeft')" v-if="!showLeft" :style="{top: buttonHeight+'px'}">
@@ -134,29 +144,33 @@
        <!-- 右侧互动按钮 -->
        <view class="action-buttons" v-if="false">
          <view class="avatar-container">
            <image class="avatar" @click="jumpToHomePage(item.authorId)" :src="item.authorAvatar" mode="aspectFill"></image>
            <!-- 关注图标 - 使用绝对定位 -->
            <view v-if="!item.subscribeThisAuthor" class="follow-icon" @click="subscribeAuth(index, item.authorId)">
              <text class="iconfont">&#xe629;</text>
            </view>
          </view>
          <view class="action-item" @click="toggleCollect(item, index)">
            <text class="iconfont" v-if="item.collected">&#xe605;</text>
            <text class="iconfont" v-else>&#xe601;</text>
            <text style="font-size: 10px;font-weight: lighter;">{{item.collectNum}}</text>
          </view>
         <view class="avatar-container">
            <image class="avatar" @click="jumpToHomePage(item.authorId)" :src="item.authorAvatar" mode="aspectFill"></image>
            <!-- 关注图标 - 使用绝对定位 -->
            <view v-if="!item.subscribeThisAuthor" class="follow-icon" @click="subscribeAuth(index, item.authorId)">
             <text class="iconfont">&#xe629;</text>
            </view>
         </view>
           <view class="action-item" @click="toggleThumbsUp(item, index)">
                 <text class="iconfont" v-if="item.thumbsUp">&#xe605;</text>
                 <text class="iconfont" v-else>&#xe601;</text>
                 <text style="font-size: 10px;font-weight: lighter;">{{item.thumbsUpNum}}</text>
           </view>
          <view class="action-item" @click="showComments(item)">
            <text class="iconfont">&#xe7f7;</text>
            <text style="font-size: 10px;font-weight: lighter;">{{item.commentNum}}</text>
          </view>
          <view class="action-item">
            <button open-type="share" class="custom-share-btn" :data-obj="item">
              <text class="iconfont">&#xe602;</text>
            </button>
          </view>
        </view>
             <text class="iconfont">&#xe7f7;</text>
             <text style="font-size: 10px;font-weight: lighter;">{{item.commentNum}}</text>
           </view>
        <view class="action-item" @click="toggleCollect(item, index)">
          <text class="iconfont" v-if="item.collected">&#xeb9d;</text>
          <text class="iconfont" v-else>&#xe603;</text>
          <text style="font-size: 10px;font-weight: lighter;">{{item.collectNum}}</text>
         </view>
        <view class="action-item">
           <button open-type="share" class="custom-share-btn" :data-obj="item">
            <text class="iconfont">&#xe602;</text>
           </button>
        </view>
         </view>
      </swiper-item>
    </swiper>
@@ -238,7 +252,7 @@
        </view>
      </view>
    </uni-popup>
    <uni-drawer ref="showLeft" mode="left" width="120" :cus-style="true" height="80vh"
    <uni-drawer v-if="leftHeight" ref="showLeft" mode="left" width="120" :cus-style="true" :height="`${leftHeight}px`"
                @change="change($event,'showLeft')" class="navigationLeft" :drawerTop="buttonHeight">
      <scroll-view class="typeNavigation" :scroll-y="true" :show-scrollbar="false">
        <view class="typeNavigationItem" :class="{typeNavigationItemCheck:currentCategort ==item.id}"
@@ -262,7 +276,8 @@
  getVideoComments,
  addVideoComment,
  thubmsUpComment,
  cancelThubmsUpComment
  cancelThubmsUpComment,
  changeThumbsUp
} from "@/api/video.js";
import {
  changeCollect
@@ -275,6 +290,13 @@
  },
  data() {
    return {
      choosePlat:[
         {type:'platForm',name:'平台'},
         {type:'custom',name:'用户'}
      ],
      chooseType:'platForm',
     leftHeight:null,
     menueButton:0,
     buttonHeight:0,
      showLeft:false,
      currentCategort: '',
@@ -353,7 +375,7 @@
    }
  },
  onShow() {
    this.showDrawer('showLeft')
    // this.showDrawer('showLeft')
    this.loadVideos()
    // 如果视频按下暂停后切换页面再回到页面时,只算暂停时间(因为暂停时间和离开页面时间是重复的,只算一个)
    if (this.startHidenTime !== 0 && this.currentVideoIsPlaying) {
@@ -365,10 +387,18 @@
    this.startHidenTime = Date.now()
  },
  onLoad() {
   this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom
   // 获取状态栏高度
   const systemInfo = uni.getSystemInfoSync();
   this.buttonHeight = systemInfo.statusBarHeight;
     this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom
     // 获取状态栏高度
     const systemInfo = uni.getSystemInfoSync();
     console.log('systemInfo------------------------>',systemInfo.windowHeight)
     const menuButtonInfo =  uni.getMenuButtonBoundingClientRect()
     console.log('menuButtonInfo--------------------------->',menuButtonInfo)
     const {top,height} = menuButtonInfo
     this.buttonHeight = systemInfo.statusBarHeight+height;
     this.menueButton = top;
     console.log('systemInfo.safeAreaInsets.bottom>',systemInfo.safeAreaInsets.bottom)
     this.leftHeight = systemInfo.windowHeight - top -50 - systemInfo.safeAreaInsets.bottom -22;
     console.log('-------------leftHeight------------------------>',this.leftHeight)
   this.getKitchenTypeList();
   this.loadVideos();
  },
@@ -776,6 +806,28 @@
        }
      })
    },
   // 点赞/取消点赞
   toggleThumbsUp(item, index) {
     let data = {
        refId: item.id,
        thumbsUpType: 'video'
     }
     const beforeThumbsUp = item.thumbsUp
     const beforeThumbsUpNum = item.thumbsUpNum
     if(item.thumbsUp) {
        this.videoList[index].thumbsUp = false
        this.videoList[index].thumbsUpNum -= 1
     } else {
        this.videoList[index].thumbsUp = true
        this.videoList[index].thumbsUpNum += 1
     }
     changeThumbsUp(data).then(res => {
        if(res.data.code !== 200) {
           this.videoList[index].thumbsUp = beforeThumbsUp
           this.videoList[index].thumbsUpNum = beforeThumbsUpNum
        }
     })
   },
    // 单击屏幕:暂停或继续播放
    togglePlay(index) {
      console.log("单击视频", index);
@@ -927,7 +979,42 @@
::v-deep .custom-tabbar {
  border-top: none !important;
}
.choosePlatType{
   display: flex;
   align-items: center;
   justify-content: center;
   position: fixed;
   z-index: 9999;
   left: 0;
   right: 0;
}
.platTypeItem{
   width: 80rpx;
   display: flex;
   align-items: center;
   flex-direction: column;
   height: 60rpx;
}
.platTypeItem:nth-child(n+1){
   margin-left: 32rpx;
}
.platTypeItemChoose{
   margin-top: 15rpx;
   width: 40%;
   display: flex;
   align-items: center;
   justify-content: center;
   background-color: #fff;
   height: 4rpx;
   border-radius: 5rpx;
}
.platTypeItenName{
   color: #fff;
   font-weight: bold;
   font-size: 32rpx;
}
.video-container {
  position: relative;
  width: 100%;
@@ -943,7 +1030,7 @@
  background-color: #b6b6b6;
  opacity: 0.8;
  position: fixed;
  z-index: 999;
  z-index: 99999;
  height: 70rpx;
  width: 50rpx;
  border-radius: 0 50% 50% 0;
@@ -1423,4 +1510,16 @@
  background-color: lightpink !important;
}
.custom-share-btn {
  font-size: unset;
  background: none;
  padding: 0;
  margin: 0;
  line-height: normal;
  border: none;
}
.custom-share-btn::after {
  border: none;
}
</style>