jwyu 2 jaren geleden
bovenliggende
commit
4b012d15b3

+ 7 - 0
api/common.js

@@ -60,4 +60,11 @@ export const apiGetSceneToParams=params=>{
  */
 export const apiGetTagTree = params=>{
     return httpGet('/public/get_variety_tag_tree',params)
+}
+
+/**
+ * 获取用户已绑定权限
+ */
+export const apiUserBindPermission=()=>{
+    return httpGet('/company/permission/bind',{})
 }

+ 24 - 0
api/roadVideo.js

@@ -0,0 +1,24 @@
+// 路演视频模块
+
+import { httpGet, httpPost } from "@/utils/request.js";
+
+/**
+ * 视频列表
+ * @param page_index
+ * @param page_size
+ * @param keywords
+ * @param video_id
+ * @param chart_permission_id
+ */
+export const apiRoadVideoList=params=>{
+    return httpGet('/road/video/list',params)
+}
+
+/**
+ * 视频播放埋点
+ * @param video_id
+ * @param source_agent 来源平台:1:小程序、2:小程序(pc)、3:公众号、4:官网web(pc)
+ */
+export const apiVideoPlayLog=params=>{
+    return httpPost('/road/video/play_log',{...params,source_agent:1})
+}

+ 1 - 1
api/user.js

@@ -48,7 +48,7 @@ export const apiUserLogin=params=>{
  * @param company_name 公司名
  * @param permission 选择的权限
  * @param real_name 姓名
- * @param source 来源:我的1、活动2、图库3、研报4、问答社区5、价格驱动6、沙盘推演7、语音播报8、视频社区9
+ * @param source 来源:我的1、活动2、图库3、研报4、问答社区5、价格驱动6、沙盘推演7、语音播报8、视频社区9、视频路演10
  * @param source_agent 来源平台:1:小程序、2:小程序(pc)、3:公众号、4:官网web(pc)
  * @param from_page 来源页面: '活动列表'、'活动详情'等
  */

+ 2 - 2
components/dragButton/dragButton.vue

@@ -54,7 +54,7 @@
 			if (sys.windowTop) {
 				this.windowHeight += sys.windowTop;
 			}
-			console.log(sys)
+			// console.log(sys)
 			
 			const query = uni.createSelectorQuery().in(this);
 			query.select('#_drag_button').boundingClientRect(data => {
@@ -131,7 +131,7 @@
 		// border-radius: 50%;
 		// font-size: $uni-font-size-sm;
 		position: fixed;
-		z-index: 999999;
+		z-index: 99;
 		
 		&.transition {
 			transition: left .3s ease,top .3s ease;

+ 13 - 0
pages.json

@@ -79,6 +79,19 @@
 				"navigationBarTitleText": "语音播报",
 				"enablePullDownRefresh": true
 			}
+		},
+		{
+			"path": "pages/roadShowVideo/videoList",
+			"style": {
+				"navigationBarTitleText": "路演视频",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/roadShowVideo/videoSearch",
+			"style": {
+				"navigationBarTitleText": "路演视频"
+			}
 		}
 	],
 	"subPackages":[

+ 25 - 23
pages/report/report.vue

@@ -12,18 +12,18 @@
       </view>
     </view>
 	
-	<!-- card -->
-	<view class="tab-card">
-		<view 
-			class="card-item" 
-			v-for="(tab,index) in tabCards" 
-			:key="index" 
-			@click="linkPage(tab)"
-		>
-			<image :src="tab.icon+'?t='+new Date().getDay()" mode="aspectFill" class="card-ico"/>
-			<view class="title">{{tab.tab}}</view>
-		</view>
-	</view>
+    <!-- card -->
+    <view class="tab-card">
+      <view 
+        class="card-item" 
+        v-for="(tab,index) in tabCards" 
+        :key="index" 
+        @click="linkPage(tab)"
+      >
+        <image :src="tab.icon+'?t='+new Date().getDay()" mode="aspectFill" class="card-ico"/>
+        <view class="title">{{tab.tab}}</view>
+      </view>
+    </view>
 	
     <!-- 分类 -->
     <view class="type-wrap">
@@ -117,20 +117,20 @@ export default {
       pageSize:20,
       finished:false,
 	  
-		tabPathMap: new Map([
-			['report','/pages-report/classify'],
-			['chart','/pages/chart/chart'],
-			['buy','/pages/buy/buy'],
-			['sandbox','/pages-sandTable/sandTable'],
-      ['activity','/pages/activity/activity']
-		]),
-		tabCards: []
+      tabPathMap: new Map([
+        ['report','/pages-report/classify'],
+        ['chart','/pages/chart/chart'],
+        ['road','/pages/roadShowVideo/videoList'],
+        ['sandbox','/pages-sandTable/sandTable'],
+        ['activity','/pages/activity/activity']
+      ]),
+      tabCards: []
     }
   },
   onLoad(){ 
     this.initNavBar()
     this.getTopAuthList()
-	 this.getTopTab();
+	  this.getTopTab();
   },
   onShow() {
     uni.getSystemInfo({
@@ -552,9 +552,11 @@ movable-area{
 		// margin-right: 40rpx;
 		// &:last-child { margin-right: 0; }
 		.card-ico {
-			width: 100rpx;
-			height: 100rpx;
+			width: 60rpx;
+			height: 60rpx;
 			display: block;
+      margin-left: auto;
+      margin-right: auto;
 		}
 		.title {
 			text-align: center;

+ 99 - 0
pages/roadShowVideo/components/noAuth.vue

@@ -0,0 +1,99 @@
+<template>
+  <view class="voice-no-auth">
+        <image class="img" :src="globalImgUrls.activityNoAuth" mode="widthFix"></image>
+		<view style="margin-bottom:15px">您暂无权限查看线上路演</view>
+		<view v-if="info.type==='contact'" style="margin-bottom:15px">若想查看可以联系对口销售</view>
+		<view v-else style="margin-bottom:15px">若想查看可以申请开通</view>
+		<view v-if="info.type==='contact'">
+			{{info.name||''}}:<text @click="handleCall" style="color:#E3B377">{{info.mobile||''}}</text>
+		</view>
+		<view class="global-btn-yellow-change btn" @click="handleApply" v-else style="margin-top:30px">立即申请</view>
+  </view>
+</template>
+
+<script>
+import {apiApplyPermission} from '@/api/user'
+export default {    
+    props: {
+        info:null
+    },
+    watch:{
+        info(){
+            this.handleAutoApply()
+        }
+    },
+    
+    methods: {
+        handleCall(){
+
+            uni.makePhoneCall({
+                phoneNumber: this.info.mobile,
+                success: (result) => {},
+                fail: (error) => {}
+            })
+        },
+
+        handleAutoApply(){
+            if(this.info.type=='contact'&&!this.info.customer_info.has_apply){
+                if(this.info.customer_info.status=='冻结'||(this.info.customer_info.status=='试用'&&this.info.customer_info.is_suspend==1)){
+                    apiApplyPermission({
+                        company_name:this.info.customer_info.company_name,
+                        real_name:this.info.customer_info.name,
+                        source:10,
+                        from_page:'线上路演'
+                    }).then(res=>{
+                        if(res.code===200){
+                            console.log('主动申请成功');
+                        }
+                    }) 
+                }
+            }
+        },
+
+        async handleApply(){
+            await this.checkUserIsBind()
+            const {customer_info}=this.info
+            if(customer_info.has_apply){
+                uni.showToast({
+                  title:'您已提交过申请,请耐心等待',
+                  icon:'none'
+                })
+            }else{
+                if (!customer_info.status || customer_info.status != '流失') {
+                    uni.navigateTo({
+                        url: "/pages-applyPermission/applyPermission?source=10&from_page=线上路演"
+                    })
+                }else{
+                    apiApplyPermission({
+                        company_name:customer_info.company_name,
+                        real_name:customer_info.name,
+                        source:10,
+                        from_page:'线上路演'
+                    }).then(res=>{
+                        uni.navigateTo({url:'/pages-applyPermission/applyResult'})
+                    })
+                }
+            }
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.voice-no-auth{
+    padding: 34rpx;
+    text-align: center;
+    font-size: $global-font-size-lg;
+    .img{
+        width: 100%;
+        margin-bottom: 50rpx;
+    }
+    .btn{
+        width: 380rpx;
+        line-height: 70rpx;
+        margin-left: auto;
+        margin-right: auto;
+        margin-top: 40rpx;
+    }
+}
+</style>

+ 438 - 0
pages/roadShowVideo/videoList.vue

@@ -0,0 +1,438 @@
+<template>
+    <view class="video-list-page" v-if="isAuth">
+        <van-sticky style="background: #fff">
+            <view class="flex search-wrap">
+                <view @click="goSearchPage" style="flex:1;margin-right:30rpx" >
+                    <searchBox 
+                        placeholder="关键字搜索" 
+                        :hasRightBtn="false" 
+                        :disabled="true"
+                    ></searchBox>
+                </view>
+                <view class="flex" @click="showFilter=true">
+                    <image style="width:50rpx;height:50rpx" src="@/static/filter-icon.png" mode="aspectFill"/>
+                    <text style="color:#E3B377;font-size:32rpx">筛选</text>
+                </view>
+            </view>
+        </van-sticky>
+        <view class="empty-box" v-if="list.length==0&&finished">
+            <image
+                :src="globalImgUrls.activityNoAuth"
+                mode="widthFix"
+            />
+            <view>暂无数据</view>
+        </view>
+        <view class="list-wrap">
+            <view class="item" v-for="item in list" :key="item.road_video_id">
+                <view class="title-box">
+                    <text class="tag">{{item.chart_permission_name}}</text>
+                    <text class="title">{{item.title}}</text>
+                </view>
+                <button 
+                    class="share-btn" 
+                    open-type="share" 
+                    :data-item="item">
+                    <image class="share-img" src="@/static/share-icon.png" mode="aspectFill"/>
+                </button>
+                <video
+                    autoplay
+                    object-fit="contain"
+                    show-mute-btn
+                    :poster="item.cover_img_url"
+                    :src="item.video_url"
+                    enable-play-gesture
+                    :id="item.road_video_id"
+                    @ended="handleVideoEnd"
+                    v-if="item.road_video_id==curVideoId"
+                ></video>
+                <image @click="handelClickPlay(item)" v-else class="poster" :src="item.cover_img_url" mode="aspectFill" lazy-load/>
+                <view class="time">发布时间:{{item.publish_time}}</view>
+                <view class="user-name">{{item.admin_real_name}}</view>
+            </view>
+        </view>
+
+        <!-- 筛选 -->
+        <van-popup 
+            :show="showFilter" 
+            position="bottom" 
+            :safe-area-inset-bottom="true" 
+            round 
+            @close="showFilter=false"
+        >
+            <view class="filter-wrap">
+                <view class="flex top">
+                    <text style="color:#000">全部筛选</text>
+                    <text style="color:#E3B377" @click="showFilter=false">取消</text>
+                </view>
+                <view class="list-box">
+                    <van-collapse accordion @change="change" :value="active" :border="false">
+                        <van-collapse-item 
+                            :title="item.ClassifyName" 
+                            :name='item.ClassifyName' 
+                            :border="false"
+                            v-for="item in options"
+                            :key="item.ClassifyName"
+                        >
+                            <van-row gutter="5">
+                                <van-col 
+                                    :span="_item.PermissionName.length>7?16:8" 
+                                    v-for="_item in item.Items" 
+                                    :key="_item.PermissionId"
+                                >
+                                    <text 
+                                        :class="['list-item',_item.PermissionId==selectPerId&&'list-item-active']" 
+                                        @click="handleSelectPerItem(_item)"
+                                    >{{_item.PermissionName}}</text>
+                                </van-col>
+                            </van-row>
+                        </van-collapse-item>
+                    </van-collapse>
+                </view>
+            </view>
+        </van-popup>
+
+        <!-- 跳转去提问悬浮按钮 -->
+        <dragButton :existTabBar="true">
+            <navigator url="/pages-question/hasQuestion">
+                <view class="to-question-fixed-box">
+                    <image src="@/static/toquestion-icon.png" mode="widthFix" />
+                    <text>我要提问</text>
+                </view>
+            </navigator>
+        </dragButton>
+    </view>
+    <noAuth :info="noAuthData" v-else/>
+</template>
+<script>
+import {apiRoadVideoList,apiVideoPlayLog} from '@/api/roadVideo'
+import {apiGetSceneToParams,apiUserBindPermission} from '@/api/common'
+import noAuth from './components/noAuth.vue'
+import dragButton from '@/components/dragButton/dragButton.vue'
+export default {
+    components:{
+        noAuth,
+        dragButton
+    },
+    data() {
+        return {
+            showFilter:false,
+            active:'',
+            options:[],
+            selectPerId:0,
+
+            videoId:0,
+            page:1,
+            pageSize:10,
+            finished:false,
+            list:[],
+
+            curVideoId:0,
+            curVideoIns:null,
+
+            isAuth:true,
+            noAuthData:null,
+        }
+    },
+    onLoad(options){
+        this.init(options)
+        this.getPermissionList()
+    },
+    onShow(){
+        //无权限时刷新列表
+        if(!this.isAuth){
+            this.getList()
+        }
+    },
+    onHide(){
+        this.showFilter=false
+        this.curVideoId=0
+    },
+    onShareAppMessage({from,target}) {
+        console.log(from,target);
+        let path='/pages/roadShowVideo/videoList?videoId=0'
+        let title='FICC路演视频'
+        let imageUrl=''
+        if(from=='button'){
+            title=`${target.dataset.item.chart_permission_name}:${target.dataset.item.title}`
+            path=`/pages/roadShowVideo/videoList?videoId=${target.dataset.item.road_video_id}`
+            imageUrl=target.dataset.item.cover_img_url
+        }
+        return {
+            title:title,
+            path:path,
+            imageUrl:imageUrl
+        }
+    },
+    onPullDownRefresh(){
+        this.videoId=0
+        this.selectPerId=0
+        this.page=1
+        this.list=[]
+        this.finished=false
+        this.getList()
+        setTimeout(() => {
+            uni.stopPullDownRefresh()
+        }, 1500)
+    },
+    onReachBottom() {
+        if(this.finished) return
+        this.page++
+        this.getList()
+    },
+    methods: {
+        async init(options){
+            if(options.scene){
+                const resScene=await apiGetSceneToParams({scene_key:options.scene})
+                if(resScene.code===200){
+                    const obj=JSON.parse(resScene.data)
+                    this.videoId=obj.videoId||0
+                }
+            }else{
+                this.videoId=options.videoId||0
+            }
+            this.getList()
+        },
+
+        goSearchPage(){
+            uni.navigateTo({
+                url: '/pages/roadShowVideo/videoSearch',
+            });
+        },
+
+        change(e){
+            this.active=e.detail
+        },
+
+        //点击分类某项
+        handleSelectPerItem(item){
+            if(this.selectPerId==item.PermissionId){
+                this.selectPerId=0
+            }else{
+                this.selectPerId=item.PermissionId
+            }
+            
+            this.videoId=0//重置掉分享进入的状态
+            this.curVideoId=0
+            this.page=1
+            this.list=[]
+            this.finished=false
+            this.getList()
+            this.showFilter=false
+        },
+
+        async getList(){
+            const res=await apiRoadVideoList({
+                page_index:Number(this.page),
+                page_size:Number(this.pageSize),
+                video_id:Number(this.videoId),
+                chart_permission_id:Number(this.selectPerId)
+            })
+            if(res.code===200){
+                let arr=res.data.list||[]
+                this.list=[...this.list,...arr]
+                if(res.data.paging.is_end){
+                    this.finished=true
+                }
+                this.isAuth=true
+            }else if(res.code===403){
+                //无权限用户
+                this.isAuth=false
+                this.noAuthData=res.data
+            }
+        },
+
+        //获取筛选项
+        async getPermissionList(){
+            const res=await apiUserBindPermission()
+            if(res.code===200){
+                const result = res.data.permission_list||[];
+                this.options = result.map(item=>{
+                    let obj = {};
+                    obj.ClassifyName = item.classify_name;
+                    obj.Items = item.list.map(_item=>{
+                        return {PermissionId:_item.chart_permission_id,PermissionName:_item.chart_permission_name};
+                    })
+                    return obj;
+                })
+            }
+        },
+
+        handelClickPlay(item){
+            this.curVideoId=item.road_video_id
+            setTimeout(() => {
+                this.curVideoIns=uni.createVideoContext(this.curVideoId.toString())
+            }, 300);
+            // 记录播放
+            apiVideoPlayLog({video_id:Number(item.road_video_id)}).then(res=>{
+                if(res.code===200){
+                    console.log('视频埋点成功');
+                }
+            })
+        },
+
+        //视频播放结束
+        handleVideoEnd(){
+            // 此处因为如果不调用退出全屏方法 安卓和ios页面均会表现异常,安卓横屏不恢复竖屏,ios底部tabbar渲染异常
+            this.curVideoIns.exitFullScreen()
+            setTimeout(() => {
+                this.curVideoId=0
+                this.curVideoIns=null
+            }, 200);
+        }
+    },
+}
+</script>
+
+<style lang='scss'>
+.search-wrap .van-search{
+    padding: 0 !important;
+}
+
+.video-list-page{
+    .filter-wrap{
+        .van-cell__title, .van-cell__value{
+            flex: none !important;
+        }
+        .van-cell:after{
+            border: none !important;
+        }
+        .van-cell__title{
+            font-size: 14px;
+        }
+        .van-hairline--top:after{
+            border-top-width: 0 !important;
+        }
+    }
+}
+</style>
+<style lang="scss" scoped>
+.video-list-page{
+    .search-wrap {
+        background-color: #fff;
+        padding: 30rpx 34rpx;
+        align-items: center;
+        .menu-icon{
+            width: 52rpx;
+            height: 40rpx;
+            display: block;
+            flex-shrink: 0;
+            margin-left: 30rpx;
+        }
+    } 
+    
+    .list-wrap{
+        .item{
+            border-top: 10rpx solid #f9f9f9;
+            padding: 30rpx 34rpx;
+            position: relative;
+            .title-box{
+                padding-right: 40rpx;
+            }
+            .share-btn{
+                position: absolute;
+                top: 34rpx;
+                right: 34rpx;
+                background-color: transparent;
+                width: 36rpx;
+                height: 36rpx;
+                line-height: 1;
+                padding: 0;
+                &::after{
+                    border: none;
+                }
+            }
+            .share-img{
+                width: 32.5rpx;
+                height: 32rpx;
+            }
+            .tag{
+                color: #E4B478;
+                background-color: #333;
+                padding: 5rpx 20rpx;
+                border-radius: 20rpx;
+                font-size: 24rpx;
+                margin-right: 26rpx;
+            }
+            .title{
+                font-size: 32rpx;
+                color: #000;
+            }
+            video{
+                width: 100%;
+                height: 400rpx;
+                margin: 30rpx 0 20rpx 0;
+                border-radius: 20rpx;
+            }
+            .poster{
+                width: 100%;
+                height: 400rpx;
+                margin: 30rpx 0 20rpx 0;
+                border-radius: 20rpx;
+                position: relative;
+                &::after{
+                    content:'';
+                    display: block;
+                    position: absolute;
+                    width: 120rpx;
+                    height: 120rpx;
+                    top: 50%;
+                    left: 50%;
+                    transform: translate(-50%,-50%);
+                    background-image: url('@/static/video-play-btn.png');
+                    background-size: cover;
+                }
+            }
+            .time{
+                font-size: 28rpx;
+                color: #999;
+                display: inline-block;
+            }
+            .user-name{
+                float: right;
+                font-size: 28rpx;
+                color: #999;
+            }
+        }
+    }
+
+    .empty-box{
+        text-align: center;
+        font-size: 32rpx;
+        color: #999;
+        padding-top: 150rpx;
+        image{
+            width: 80vw;
+            margin-bottom: 57rpx;
+        }
+    }
+}
+
+.filter-wrap{
+    background-color: #fff;
+    padding-top: 53rpx;
+    padding-bottom: 100rpx;
+    .top{
+        font-size: 32rpx;
+        justify-content: space-between;
+        margin-bottom: 40rpx;
+        padding: 0 34rpx;
+    }
+    .list-box{
+        min-height: 30vh;
+        max-height: 60vh;
+        .list-item{
+            display: block;
+            margin: 10rpx;
+            height: 76rpx;
+            line-height: 76rpx;
+            color: #000;
+            background: #F6F6F6;
+            border-radius: 4px 4px 4px 4px;
+            text-align: center;
+        }
+        .list-item-active{
+            background-color: #FAEEDE;
+        }
+    }
+}
+</style>

+ 260 - 0
pages/roadShowVideo/videoSearch.vue

@@ -0,0 +1,260 @@
+<template>
+    <view class="video-search-page">
+        <van-sticky style="background: #fff">
+            <view style="padding:30rpx 34rpx">
+            <searchBox 
+                :focus="focus" 
+                placeholder="关键字搜索" 
+                @change="onChange"
+                @search="onSearch"
+            ></searchBox>
+            </view>
+        </van-sticky>
+        <view class="empty-box" v-if="list.length==0&&finished">
+            <image
+                :src="globalImgUrls.activityNoAuth"
+                mode="widthFix"
+            />
+            <view>暂无数据,试试别的搜索词吧~</view>
+        </view>
+        <view class="list-wrap">
+            <view class="item" v-for="item in list" :key="item.road_video_id">
+                <view class="title-box">
+                    <text class="tag">{{item.chart_permission_name}}</text>
+                    <text class="title">{{item.title}}</text>
+                </view>
+                <button 
+                    class="share-btn" 
+                    open-type="share" 
+                    :data-item="item">
+                    <image class="share-img" src="@/static/share-icon.png" mode="aspectFill"/>
+                </button>
+                <video
+                    autoplay
+                    object-fit="contain"
+                    show-mute-btn
+                    :poster="item.cover_img_url"
+                    :src="item.video_url"
+                    enable-play-gesture
+                    :id="item.road_video_id"
+                    @ended="handleVideoEnd"
+                    v-if="item.road_video_id==curVideoId"
+                ></video>
+                <image @click="handelClickPlay(item)" v-else class="poster" :src="item.cover_img_url" mode="aspectFill" lazy-load/>
+                <view class="time">发布时间:{{item.publish_time}}</view>
+                <view class="user-name">{{item.admin_real_name}}</view>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+import searchBox from '@/components/searchBox/searchBox.vue'
+import {apiRoadVideoList,apiVideoPlayLog} from '@/api/roadVideo'
+export default {
+    components: {
+        searchBox
+    },
+    data() {
+        return {
+            searchVal:'',
+            focus:true,
+            list:[],
+            finished:false,
+            page:1,
+            pageSize:10,
+
+            curVideoId:0,
+            curVideoIns:null
+        }
+    },
+    onReachBottom() {
+        if(this.finished) return
+        this.page++
+        this.getList()
+    },
+    onShareAppMessage({from,target}) {
+        console.log(from,target);
+        let path='/pages/roadShowVideo/videoList?videoId=0'
+        let title='FICC路演视频'
+        let imageUrl=''
+        if(from=='button'){
+            title=`${target.dataset.item.chart_permission_name}:${target.dataset.item.title}`
+            path=`/pages/roadShowVideo/videoList?videoId=${target.dataset.item.road_video_id}`
+            imageUrl=target.dataset.item.cover_img_url
+        }
+        return {
+            title:title,
+            path:path,
+            imageUrl:imageUrl
+        }
+    },
+    methods: {
+        onChange(e){
+            this.searchVal=e
+        },
+
+        async onSearch(){
+            this.finished=false
+            this.page=1
+            this.list=[]
+            if(!this.searchVal){
+                this.finished=true
+                return
+            }
+            this.getList()
+        },
+
+        async getList(){
+            this.curVideoId=0
+            const res=await apiRoadVideoList({
+                page_index:Number(this.page),
+                page_size:Number(this.pageSize),
+                keywords:this.searchVal
+            })
+            if(res.code===200){
+                let arr=res.data.list||[]
+                this.list=[...this.list,...arr]
+                if(res.data.paging.is_end){
+                    this.finished=true
+                }
+            }
+        },
+
+        handelClickPlay(item){
+            this.curVideoId=item.road_video_id
+            setTimeout(() => {
+                this.curVideoIns=uni.createVideoContext(this.curVideoId.toString())
+            }, 300);
+            // 记录播放
+            apiVideoPlayLog({video_id:Number(item.road_video_id)}).then(res=>{
+                if(res.code===200){
+                    console.log('视频埋点成功');
+                }
+            })
+        },
+
+        //视频播放结束
+        handleVideoEnd(){
+            // 此处因为如果不调用退出全屏方法 安卓和ios页面均会表现异常,安卓横屏不恢复竖屏,ios底部tabbar渲染异常
+            this.curVideoIns.exitFullScreen()
+            setTimeout(() => {
+                this.curVideoId=0
+                this.curVideoIns=null
+            }, 200);
+        }
+    },
+}
+</script>
+
+<style>
+.van-sticky-wrap--fixed{
+  background-color: #fff;
+}
+page{
+    padding-bottom: 0;
+}
+</style>
+
+<style lang="scss" scoped>
+.video-search-page{
+    .search-wrap {
+        background-color: #fff;
+        padding: 30rpx 34rpx;
+        align-items: center;
+        .menu-icon{
+            width: 52rpx;
+            height: 40rpx;
+            display: block;
+            flex-shrink: 0;
+            margin-left: 30rpx;
+        }
+    } 
+    
+    .list-wrap{
+        .item{
+            border-top: 10rpx solid #f9f9f9;
+            padding: 30rpx 34rpx;
+            position: relative;
+            .title-box{
+                padding-right: 40rpx;
+            }
+            .share-btn{
+                position: absolute;
+                top: 34rpx;
+                right: 34rpx;
+                background-color: transparent;
+                width: 32rpx;
+                height: 32rpx;
+                line-height: 1;
+                padding: 0;
+                &::after{
+                    border: none;
+                }
+            }
+            .share-img{
+                width: 32rpx;
+                height: 32rpx;
+            }
+            .tag{
+                color: #E4B478;
+                background-color: #333;
+                padding: 5rpx 20rpx;
+                border-radius: 20rpx;
+                font-size: 24rpx;
+                margin-right: 26rpx;
+            }
+            .title{
+                font-size: 32rpx;
+                color: #000;
+            }
+            video{
+                width: 100%;
+                height: 400rpx;
+                margin: 30rpx 0 20rpx 0;
+                border-radius: 20rpx;
+            }
+            .poster{
+                width: 100%;
+                height: 400rpx;
+                margin: 30rpx 0 20rpx 0;
+                border-radius: 20rpx;
+                position: relative;
+                &::after{
+                    content:'';
+                    display: block;
+                    position: absolute;
+                    width: 120rpx;
+                    height: 120rpx;
+                    top: 50%;
+                    left: 50%;
+                    transform: translate(-50%,-50%);
+                    background-image: url('@/static/video-play-btn.png');
+                    background-size: cover;
+                }
+            }
+            .time{
+                font-size: 28rpx;
+                color: #999;
+                display: inline-block;
+            }
+            .user-name{
+                float: right;
+                font-size: 28rpx;
+                color: #999;
+            }
+        }
+    }
+
+    .empty-box{
+        text-align: center;
+        font-size: 32rpx;
+        color: #999;
+        padding-top: 150rpx;
+        image{
+            width: 80vw;
+            margin-bottom: 57rpx;
+        }
+    }
+}
+</style>