Commit f2913405 authored by jyx's avatar jyx

代码优化

parent 8543445a
<template> <template>
<view style="background: white;"> <view style="background: white;height: 100%;">
<scroll-view scroll-y="true" <z-paging class="flex-1">
:style="'height: '+(windowHeight -120)+'px;margin-top:'+(titleBarHeight +statusBarHeight)+'px;'"> <scroll-view scroll-y="true" v-if="dataList.length>0" :style="'height: '+(windowHeight -120)+'px;'">
<view class="flex space" style="display:flex; flex-wrap:wrap;"> <view class="flex space" style="display:flex; flex-wrap:wrap;">
<block v-for="(value,key) in dataList" :key="key"> <block v-for="(value,key) in dataList" :key="key">
<view class="mt-10" <view class="mt-10"
style="width:31%; position: relative; border-radius:20rpx;margin-bottom: 10rpx;margin-left: 14rpx;" style="width:31%; position: relative; border-radius:20rpx;margin-bottom: 10rpx;margin-left: 14rpx;"
@click.stop="click(value)" @longpress.stop="longClick(key)"> @click.stop="click(value)" @longpress.stop="longClick(key)">
<image class="integral-mall-goods" mode="aspectFill" :src="value.coverImage"></image> <image class="integral-mall-goods" mode="aspectFill" :src="value.coverImage"></image>
<view class="text" style="font-size: 26rpx;color: black;height: 36rpx;margin-left: 5rpx;"> <view class="text" style="font-size: 26rpx;color: black;height: 36rpx;margin-left: 5rpx;">
{{value.title}} {{value.title}}
</view> </view>
<view class="text" style="font-size: 22rpx;color: gray;height: 30rpx;margin-left: 5rpx;"> <view class="text" style="font-size: 22rpx;color: gray;height: 30rpx;margin-left: 5rpx;">
{{value.vedioDesc}} {{value.vedioDesc}}
</view> </view>
<view v-if="isEditStyle" @click.stop="cbClick(key)" style="position: absolute;background: #000000; opacity: 0.6;width: 92%;height: 96%;top: 0;border-radius:20rpx; <view v-if="isEditStyle" @click.stop="cbClick(key)" style="position: absolute;background: #000000; opacity: 0.6;width: 92%;height: 96%;top: 0;border-radius:20rpx;
padding-left: 20rpx;padding-top: 20rpx;"> padding-left: 20rpx;padding-top: 20rpx;">
<image v-if="value.isChecked" src="@/static/ic_selected.png" <image v-if="value.isChecked" src="@/static/ic_selected.png"
style="width: 50rpx;height: 50rpx;" /> style="width: 50rpx;height: 50rpx;" />
<image v-if="!value.isChecked" src="@/static/ic_unselected.png" <image v-if="!value.isChecked" src="@/static/ic_unselected.png"
style="width: 50rpx;height: 50rpx;" /> style="width: 50rpx;height: 50rpx;" />
</view>
</view> </view>
</view> </block>
</block> </view>
</scroll-view>
<view v-if="dataList.length<=0"
style="position: absolute;left: 50%;width: 240rpx;margin-left: -120rpx;top: 600rpx;text-align: center;">
<text style="color: gray;">暂无在追剧</text>
<view @click="goRecommend" class="button" style="margin-top: 20rpx;color: white;">去剧场</view>
</view> </view>
</scroll-view>
<view v-if="dataList.length<=0" <view v-if="dataList.length>=0" @click="clickEdit" class="editBar">
style="position: absolute;left: 50%;width: 240rpx;margin-left: -120rpx;top: 600rpx;text-align: center;"> <image style="width: 50rpx;height: 50rpx;"
<text style="color: gray;">暂无在追剧</text> :src="!isEditStyle?'../../static/video/edit.png':'../../static/video/close.png'"></image>
<view @click="goRecommend" class="button" style="margin-top: 20rpx;color: white;">去剧场</view> </view>
</view> </z-paging>
</view> </view>
</template> </template>
<script> <script>
...@@ -58,7 +65,7 @@ ...@@ -58,7 +65,7 @@
watch: { watch: {
isEditStyle: { isEditStyle: {
handler(newValue, oldValue) { handler(newValue, oldValue) {
this.$emit("showEditBarR", newValue) this.$emit("showEditBarH", newValue)
} }
}, },
}, },
...@@ -68,6 +75,12 @@ ...@@ -68,6 +75,12 @@
this.windowHeight = uni.getSystemInfoSync().windowHeight this.windowHeight = uni.getSystemInfoSync().windowHeight
this.loadData() this.loadData()
}, },
hide() {
},
clickEdit() {
this.isEditStyle = !this.isEditStyle
},
loadData() { loadData() {
// 收藏记录 // 收藏记录
this.post({ this.post({
...@@ -78,9 +91,9 @@ ...@@ -78,9 +91,9 @@
}) => { }) => {
this.dataList = data.list; this.dataList = data.list;
if (this.dataList.length > 0) { if (this.dataList.length > 0) {
this.$emit("showEditR", true) this.$emit("showEdit", true)
} else { } else {
this.$emit("showEditR", false) this.$emit("showEdit", false)
} }
} }
}); });
...@@ -95,7 +108,7 @@ ...@@ -95,7 +108,7 @@
this.$emit("goRecommend") this.$emit("goRecommend")
}, },
click(detail) { click(detail) {
navigateTo(`/pagesC/ttvideo/ttVideoDetail?data=` + encodeURIComponent(JSON.stringify(detail)) + navigateTo(`/pagesC/ttvideo/ttVideoDetail?data=` + encodeURIComponent(JSON.stringify(detail)) +
'&tt_album_id=' + detail.douyinAlbumId + '&tt_episode_id=' + detail.douyinEpisodeId); '&tt_album_id=' + detail.douyinAlbumId + '&tt_episode_id=' + detail.douyinEpisodeId);
}, },
longClick(key) { longClick(key) {
...@@ -171,4 +184,18 @@ ...@@ -171,4 +184,18 @@
margin-left: 10rpx; margin-left: 10rpx;
// position: absolute; // position: absolute;
} }
.editBar {
position: absolute;
bottom: 80rpx;
right: 60rpx;
width: 80rpx;
height: 80rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 80rpx;
background-color: aqua;
box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.1);
}
</style> </style>
\ No newline at end of file
...@@ -13,6 +13,17 @@ ...@@ -13,6 +13,17 @@
</view> </view>
<z-paging class="flex-1" ref="paging" v-model="dataList" @query="queryList"> <z-paging class="flex-1" ref="paging" v-model="dataList" @query="queryList">
<view class="search-wrap">
<!-- <image style="width: 80rpx; height: 80rpx" src="@/static/index/ic_quit_white.png"></image> -->
<view class="search-bar" @click="goSearchPage">
<image style="width: 40rpx; height: 40rpx" src="@/static/search.png"></image>
<text style="margin-left: 30rpx">{{
bannerList.length > 0 ? bannerList[0].title : ''
}}</text>
</view>
</view>
<view class="content"> <view class="content">
<swiper class="banner" :style="'margin-top:'+statusBarHeight+'px;'" :indicator-dots="true" <swiper class="banner" :style="'margin-top:'+statusBarHeight+'px;'" :indicator-dots="true"
:autoplay="true" :interval="2000" :duration="500"> :autoplay="true" :interval="2000" :duration="500">
...@@ -370,6 +381,9 @@ ...@@ -370,6 +381,9 @@
}) => {} }) => {}
}); });
}, },
goSearchPage() {
navigateTo(`/pagesA/search/search`)
},
showFirstDialog() { showFirstDialog() {
let that = this; let that = this;
let loadEpisode_id = uni.getStorageSync('tt_episode_id') || ''; let loadEpisode_id = uni.getStorageSync('tt_episode_id') || '';
...@@ -415,10 +429,29 @@ ...@@ -415,10 +429,29 @@
position: relative; position: relative;
} }
.search-wrap {
height: 80rpx;
margin: 10rpx 15rpx;
display: flex;
flex-direction: row;
}
.search-bar {
width: 100%;
margin-left: 20rpx;
margin-right: 20rpx;
border-radius: 10rpx;
background-color: lightgray;
display: flex;
flex-direction: row;
align-items: center;
padding: 0 20rpx;
}
.show-mask { .show-mask {
width: 100%; width: 100%;
height: 100%; height: 100%;
background: rgba(0, 0, 0, 0.6); background: rgba(0, 0, 0, 0.6);
position: absolute; position: absolute;
z-index: 999; z-index: 999;
color: white; color: white;
......
...@@ -171,7 +171,8 @@ ...@@ -171,7 +171,8 @@
}, },
handleDotRecord() { handleDotRecord() {
// 看点记录 // 看点记录
navigateTo(`/pagesD/dotRecord/dotRecord`) // navigateTo(`/pagesD/dotRecord/dotRecord`)
navigateTo(`/pagesA/task/task`)
}, },
handleUseDotRecord() { handleUseDotRecord() {
// 看点消费记录 // 看点消费记录
......
...@@ -85,6 +85,13 @@ ...@@ -85,6 +85,13 @@
this.windowHeight = uni.getSystemInfoSync().windowHeight this.windowHeight = uni.getSystemInfoSync().windowHeight
}, },
methods: { methods: {
hide() {
try {
this.$refs.recommendVideo.stop();
} catch {
}
},
reShare() { reShare() {
var href = '' var href = ''
// #ifdef H5 // #ifdef H5
......
...@@ -25,21 +25,6 @@ ...@@ -25,21 +25,6 @@
"navigationBarBackgroundColor": "#ffffff", "navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "#000000" "navigationBarTextStyle": "#000000"
} }
}, {
"path": "pages/index/index",
"style": {
"navigationStyle": "default",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "#000000"
}
},
{
"path": "pages/my/my",
"style": {
"navigationStyle": "default",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "#000000"
}
}, { }, {
"path": "pages/brower/brower", "path": "pages/brower/brower",
"style": { "style": {
...@@ -47,27 +32,6 @@ ...@@ -47,27 +32,6 @@
"navigationBarBackgroundColor": "#ffffff", "navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black" "navigationBarTextStyle": "black"
} }
}, {
"path": "pages/recommend/recommend",
"style": {
"navigationStyle": "default",
"navigationBarBackgroundColor": "#000000",
"navigationBarTextStyle": "#ffffff"
}
}, {
"path": "pages/recommend/follow",
"style": {
"navigationStyle": "default",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "#000000"
}
}, {
"path": "pages/recommend/recommendVideo",
"style": {
"navigationStyle": "default",
"navigationBarBackgroundColor": "#000000",
"navigationBarTextStyle": "#ffffff"
}
} }
], ],
// 分包配置 // 分包配置
...@@ -80,12 +44,26 @@ ...@@ -80,12 +44,26 @@
"navigationBarBackgroundColor": "#ffffff", "navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black" "navigationBarTextStyle": "black"
} }
}, {
"path": "search/search",
"style": {
"navigationStyle": "default",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black"
}
}, {
"path": "task/task",
"style": {
"navigationStyle": "default",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black"
}
}] }]
}, { }, {
"root": "pagesC", "root": "pagesC",
"pages": [{ "pages": [{
"path": "ttvideo/ttVideoDetail", "path": "ttvideo/ttVideoDetail",
"style": { "style": {
"backgroundColor": "#000000", "backgroundColor": "#000000",
"navigationStyle": "default", "navigationStyle": "default",
"navigationBarBackgroundColor": "#000000", "navigationBarBackgroundColor": "#000000",
...@@ -139,14 +117,6 @@ ...@@ -139,14 +117,6 @@
"pages/home": { "pages/home": {
"network": "all", //在指定网络下预下载,可选值为:all(不限网络)、wifi(仅wifi下预下载) "network": "all", //在指定网络下预下载,可选值为:all(不限网络)、wifi(仅wifi下预下载)
"packages": ["pagesA", "pagesC", "pagesD"] //进入页面后预下载分包 "packages": ["pagesA", "pagesC", "pagesD"] //进入页面后预下载分包
},
"pages/recommend/recommend": {
"network": "all", //在指定网络下预下载,可选值为:all(不限网络)、wifi(仅wifi下预下载)
"packages": ["pagesC"] //进入页面后预下载分包
},
"pages/my/my": {
"network": "all", //在指定网络下预下载,可选值为:all(不限网络)、wifi(仅wifi下预下载)
"packages": ["pagesD"] //进入页面后预下载分包
} }
}, },
"globalStyle": { "globalStyle": {
......
...@@ -2,9 +2,10 @@ ...@@ -2,9 +2,10 @@
<view class="body"> <view class="body">
<view style="height: 92%;"> <view style="height: 92%;">
<indexPage v-show="currentPage==0" ref="index" /> <indexPage v-show="currentPage==0" ref="index" />
<recommendPage v-on:showEditBarH="showEditBarH" v-on:changeBottomBarColor="changeBottomBarColor" <recommendPage v-show="currentPage==1" ref="recommend" />
v-show="currentPage==1" ref="recommend" /> <followPage v-on:showEditBarH="showEditBarH" v-on:goRecommend="goRecommend" v-show="currentPage==2"
<userPage v-show="currentPage==2" ref="user" /> ref="follow" />
<userPage v-show="currentPage==3" ref="user" />
</view> </view>
<view v-if="!isShowBlackBar" class="tabs-bar"> <view v-if="!isShowBlackBar" class="tabs-bar">
<view :class="currentPage==0?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'" <view :class="currentPage==0?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'"
...@@ -29,7 +30,16 @@ ...@@ -29,7 +30,16 @@
<view :class="currentPage == 2?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'" <view :class="currentPage == 2?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'"
@click="tabChange(2)"> @click="tabChange(2)">
<view style="margin: 16rpx 0 11rpx;"> <view style="margin: 16rpx 0 11rpx;">
<image v-if="currentPage==2" class="tabs-image" src="/static/tab/my_selected.png" mode="heightFix"> <image v-if="currentPage==2" class="tabs-image" src="/static/tab/promote_selected.png"
mode="heightFix"></image>
<image v-else class="tabs-image" src="/static/tab/promote_unselected.png" mode="heightFix"></image>
</view>
看过
</view>
<view :class="currentPage == 3?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'"
@click="tabChange(3)">
<view style="margin: 16rpx 0 11rpx;">
<image v-if="currentPage==3" class="tabs-image" src="/static/tab/my_selected.png" mode="heightFix">
</image> </image>
<image v-else class="tabs-image" src="/static/tab/my_unselected.png" mode="heightFix"></image> <image v-else class="tabs-image" src="/static/tab/my_unselected.png" mode="heightFix"></image>
</view> </view>
...@@ -86,14 +96,9 @@ ...@@ -86,14 +96,9 @@
} from '@/utils/fun.js'; } from '@/utils/fun.js';
import common from '@/mixins/common'; import common from '@/mixins/common';
const app = getApp(); const app = getApp();
// 首页
// import indexPage from "@/pages/index/index.vue";
// import recommendPage from "@/pages/recommend/recommend.vue";
// import userPage from "@/pages/my/my.vue";
import indexPage from "@/components/home/index.vue"; import indexPage from "@/components/home/index.vue";
import recommendPage from "@/components/home/recommend.vue"; import recommendPage from "@/components/home/recommendVideo.vue";
import followPage from "@/components/home/follow.vue";
import userPage from "@/components/home/my.vue"; import userPage from "@/components/home/my.vue";
export default { export default {
...@@ -102,6 +107,7 @@ ...@@ -102,6 +107,7 @@
components: { components: {
indexPage, indexPage,
recommendPage, recommendPage,
followPage,
userPage userPage
}, },
data() { data() {
...@@ -117,13 +123,13 @@ ...@@ -117,13 +123,13 @@
let index = options.index ?? '' let index = options.index ?? ''
if (index != '' && index != undefined) { if (index != '' && index != undefined) {
this.currentPage = index this.currentPage = index
} }
// #ifdef MP-TOUTIAO // #ifdef MP-TOUTIAO
tt.setNavigationBarColor({ tt.setNavigationBarColor({
frontColor: '#000000', frontColor: '#000000',
backgroundColor: '#ffffff' backgroundColor: '#ffffff'
}) })
// #endif // #endif
if (wx.setVisualEffectOnCapture) { if (wx.setVisualEffectOnCapture) {
...@@ -133,15 +139,15 @@ ...@@ -133,15 +139,15 @@
}, },
}) })
} }
}, },
onShow() { onShow() {
try { try {
// 在子组件重写show()代替onShow() // 在子组件重写show()代替onShow()
if (this.currentPage == 0) { if (this.currentPage == 0) {
this.$refs.index.show(); this.$refs.index.show();
} else if (this.currentPage == 1) { } else if (this.currentPage == 1) {
// this.$refs.recommend.show(); // this.$refs.recommend.show();
} else if (this.currentPage == 2) { } else if (this.currentPage == 2) {
...@@ -164,38 +170,29 @@ ...@@ -164,38 +170,29 @@
}, },
loadComponentData() { loadComponentData() {
if (this.currentPage == 0) { if (this.currentPage == 0) {
this.changeBottomBarColor(false)
this.$refs.index.show(); this.$refs.index.show();
this.$refs.recommend.hide(); this.$refs.recommend.hide();
this.$refs.follow.hide();
this.$refs.user.hide(); this.$refs.user.hide();
} else if (this.currentPage == 1) { } else if (this.currentPage == 1) {
this.$refs.recommend.show(); this.$refs.recommend.show();
this.$refs.follow.hide();
this.$refs.index.hide(); this.$refs.index.hide();
this.$refs.user.hide(); this.$refs.user.hide();
} else if (this.currentPage == 2) { } else if (this.currentPage == 2) {
this.changeBottomBarColor(false) this.$refs.follow.show();
this.$refs.index.hide();
this.$refs.recommend.hide();
this.$refs.user.hide();
} else if (this.currentPage == 2) {
this.$refs.user.show(); this.$refs.user.show();
this.$refs.index.hide(); this.$refs.index.hide();
this.$refs.recommend.hide(); this.$refs.recommend.hide();
this.$refs.follow.hide();
} }
}, },
changeBottomBarColor(b) { goRecommend() {
this.isShowBlackBar = b this.currentPage = 1
// #ifdef MP-TOUTIAO
if(b){
tt.setNavigationBarColor({
frontColor: '#ffffff',
backgroundColor: '#000000'
})
}else{
tt.setNavigationBarColor({
frontColor: '#000000',
backgroundColor: '#ffffff'
})
}
// #endif
}, },
showEditBarH(b) { showEditBarH(b) {
this.showEditBar = b this.showEditBar = b
...@@ -203,14 +200,14 @@ ...@@ -203,14 +200,14 @@
}, },
fullChoice() { fullChoice() {
this.isFullChoice = !this.isFullChoice this.isFullChoice = !this.isFullChoice
this.$refs.recommend.fullChoice(); this.$refs.follow.fullChoice();
}, },
noChoice() { noChoice() {
this.isFullChoice = !this.isFullChoice this.isFullChoice = !this.isFullChoice
this.$refs.recommend.noChoice(); this.$refs.follow.noChoice();
}, },
deleteCollect() { deleteCollect() {
this.$refs.recommend.deleteCollect(); this.$refs.follow.deleteCollect();
} }
} }
} }
...@@ -218,7 +215,7 @@ ...@@ -218,7 +215,7 @@
<style lang="scss"> <style lang="scss">
.body { .body {
height: 100%; height: 100%;
background-color: white; background-color: white;
} }
......
<template>
<view class="body">
<z-paging class="flex-1" ref="paging" v-model="dataList" @query="queryList">
<view class="content">
<swiper class="banner" :style="'margin-top:'+statusBarHeight+'px;'" :indicator-dots="true"
:autoplay="true" :interval="2000" :duration="500">
<swiper-item v-for="banner in bannerList" :key="banner.vedioId" @click="handleBanner(banner)">
<image class="banner-img" :src="banner.tabImage" mode="aspectFill"></image>
</swiper-item>
</swiper>
<view
style="display: flex;flex-direction: column;background-color:white;border-radius:10rpx;margin-top: 20rpx;">
<view style="font-size: 30rpx;font-weight: 777;margin-left: 12rpx;margin-top: 18rpx;">排行榜</view>
<scroll-view scroll-x="true" style="white-space: nowrap; margin-top: 18rpx;">
<block v-for="(item, index) in topList" :key="item.vedioId">
<view @click="handleTop(item)"
style="display:inline-block;background-color:white;border-radius:10rpx;width: 200rpx;margin: 5rpx 10rpx 15rpx 10rpx;">
<view style="position: relative;">
<view style="position: relative;">
<view style="position: absolute;z-index: 10;margin-left: 20rpx;">
<view style="position: relative;">
<view style="
position: absolute;
z-index: 10;
width: 50rpx;
text-align: center;
margin-top: 8rpx;
font-size: 24rpx;
color: white;">
{{index+1}}
</view>
<image v-if="index==0"
style="width: 50rpx;height: 50rpx;display: flex;align-items: right;margin-right: 10rpx;"
src="../../static/index/y43.png"></image>
<image v-else-if="index==1"
style="width: 50rpx;height: 50rpx;display: flex;align-items: right;margin-right: 10rpx;"
src="../../static/index/y42.png"></image>
<image v-else-if="index==2"
style="width: 50rpx;height: 50rpx;display: flex;align-items: right;margin-right: 10rpx;"
src="../../static/index/y41.png"></image>
<image v-else
style="width: 50rpx;height: 50rpx;display: flex;align-items: right;margin-right: 10rpx;"
src="../../static/index/y4.png"></image>
</view>
</view>
<image style="border-radius:10rpx; width: 200rpx;height: 260rpx;"
:src="item.coverImage" mode="aspectFill"></image>
</view>
<view style="
position: absolute;
bottom: 10rpx;
background-color: black;
width: 100%;
opacity: 0.5;
">
<view style="display: flex;align-items: center;margin-left: 10rpx;">
<image
style="width: 20rpx;height: 20rpx;display: flex;align-items: right;margin-right: 10rpx;"
src="../../static/index/ic_index_play.png"></image>
<view style="font-size: 22rpx;color: white;">{{item.showNum}}</view>
</view>
</view>
</view>
<view style="font-size: 26rpx;margin-top: 10rpx;">{{item.title}}</view>
<view style="font-size: 22rpx;margin-top: 10rpx;"
v-if="item.orderTags!=null&&item.orderTags.length>0">
<scroll-view scroll-x="true">
<block v-for="t in item.orderTags" :key="item.orderTags">
<view style="display:inline-block;margin-right: 4rpx;">{{t}} </view>
</block>
</scroll-view>
</view>
</view>
</block>
</scroll-view>
</view>
<view
style="font-size: 30rpx;font-weight: 777;margin-top: 20rpx;margin-bottom: 10rpx;margin-left: 4rpx;">
推荐</view>
<view style="column-count: 2;column-gap: 20rpx;margin-top: 20rpx;">
<view class="item-wrap" v-for="(item, i) in dataList" :key="i" v-if="i % 2 == 0"
@click="handleInfo(item)">
<view style="position: relative;">
<image class="img" :src="item.coverImage" mode="aspectFill"></image>
<view style="
position: absolute;
bottom: 10rpx;
width: 95%;
padding: 10rpx;
background-color: black;
opacity: 0.5;
">
<view style="display: flex;flex-direction: row;justify-content:space-between;">
<view style="display: flex;align-items: center;">
<image
style="width: 20rpx;height: 20rpx;display: flex;align-items: right;margin-right: 10rpx;"
src="../../static/index/ic_index_play.png"></image>
<view style="font-size: 22rpx;color: white;">{{item.showNum}}</view>
</view>
<view style="font-size: 22rpx;color: white;font-weight: 777;">{{item.vedioTotal}}
</view>
</view>
</view>
</view>
<view style="font-size: 30rpx;margin-top: 10rpx;margin-left: 12rpx;">{{item.title}}</view>
<!-- <view style="font-size: 22rpx;margin-top: 10rpx;margin-left: 12rpx;">{{item.vedioDesc}}</view> -->
</view>
<view class="item-wrap" v-for="(item, i) in dataList" :key="i" v-if="i % 2 == 1"
@click="handleInfo(item)">
<view style="position: relative;">
<image class="img" :src="item.coverImage" mode="aspectFill"></image>
<view style="
position: absolute;
bottom: 10rpx;
width: 95%;
padding: 10rpx;
background-color: black;
opacity: 0.5;
">
<view style="display: flex;flex-direction: row;justify-content:space-between;">
<view style="display: flex;align-items: center;">
<image
style="width: 20rpx;height: 20rpx;display: flex;align-items: right;margin-right: 10rpx;"
src="../../static/index/ic_index_play.png"></image>
<view style="font-size: 22rpx;color: white;">{{item.showNum}}</view>
</view>
<view style="font-size: 22rpx;color: white;font-weight: 777;">{{item.vedioTotal}}
</view>
</view>
</view>
</view>
<view style="font-size: 30rpx;margin-top: 10rpx;margin-left: 12rpx;">{{item.title}}</view>
<!-- <view style="font-size: 22rpx;margin-top: 10rpx;margin-left: 12rpx;">{{item.vedioDesc}}</view> -->
</view>
</view>
</view>
</z-paging>
<view v-if="newRecordBean!=null"
style="width: 97%;height: 150rpx;margin: 10rpx;opacity: 0.8;background-color: black;z-index: 20;position: absolute;bottom: 0;border-radius:10rpx;">
<view style="display: flex;margin-left: 10rpx;">
<view style="flex-grow: 2;display: flex;align-items: center;">
<image style="border-radius:10rpx; width: 100rpx;height: 130rpx;margin-top: 10rpx;"
:src="newRecordBean.coverImage" mode="aspectFill"></image>
<view style="margin: 20rpx;">
<view style="font-size: 30rpx; color: white;">{{newRecordBean.title}}</view>
<view style="font-size: 24rpx;margin-top: 6rpx;color: white;">上次观看至第{{newRecordBean.seeIndex}}
</view>
<view style="font-size: 22rpx;"
v-if="newRecordBean.orderTags!=null&&newRecordBean.orderTags.length>0">
<scroll-view scroll-x="true">
<block v-for="t in newRecordBean.orderTags" :key="newRecordBean.orderTags">
<view style="display:inline-block;margin-right: 4rpx;">{{t}} </view>
</block>
</scroll-view>
</view>
</view>
</view>
<view style="display: flex;flex-direction: column;align-items: flex-end;">
<image @click="handleBottomClose()"
style="width: 30rpx;height: 30rpx;display: flex;align-items: right;margin: 10rpx;"
src="../../static/index/ic_quit_white.png" mode="aspectFill"></image>
<view @click="handleBottomPlay(newRecordBean)" style="
width: 160rpx;
height: 50rpx;
line-height: 50rpx;
text-align: center;
background-color: red;
border-radius:30rpx;
color: white;
font-size: 24rpx;
margin-right: 20rpx;">
继续观看
</view>
</view>
</view>
</view>
<!-- <uni-popup type="center" ref="select">
<view>
<view style="font-size: 30rpx;font-weight: 777;color: white;">刚刚看的</view>
<view style="text-align: center;">
<view>
<video :id="recommendBean.vedioId" :loop="true" :enable-progress-gesture="false"
:show-loading="true" :show-fullscreen-btn="false"
style="width:100%; height:100%;background: #f56c6c;" :src="recommendBean.vedioUrl"
:poster="recommendBean.coverImage" play-btn-position="center" object-fit="contain" />
</view>
<view>123</view>
<view @click="handleVipPay"
style="width: 350rpx;height: 80rpx;background-color: #f2575b;border-radius:20rpx;color: white;font-size: 26rpx;justify-content: center;align-items: center;display: flex;">
立即试看
</view>
</view>
</view>
</uni-popup> -->
</view>
</template>
<script>
import common from '@/mixins/common';
import {
getToLocal
} from "@/utils/utils.js"
import {
navigateTo,
message,
alert,
loading
} from '@/utils/fun.js';
import {
openUrl
} from '@/utils/app+.js';
const app = getApp();
export default {
name: 'index',
mixins: [common],
data() {
return {
dataList: [],
bannerList: [],
newRecordBean: null,
topList: [],
statusBarHeight: app.globalData.statusBarHeight,
};
},
methods: {
show() {
// 匹配视频
this.showFirstDialog();
// 轮播图
this.post({
url: '/vedio/topTabs',
showLoading: false,
success: ({
data
}) => {
this.bannerList = data.list;
}
});
// 排行榜
this.post({
url: '/vedio/orders',
showLoading: false,
success: ({
data
}) => {
this.topList = data.list;
}
});
// 最近观看剧
this.post({
url: '/vedio/newest',
data: {},
showLoading: false,
success: ({
data
}) => {
if (data.vedio != null) {
this.newRecordBean = data.vedio;
}
}
});
if (this.$refs.paging != null) {
this.$refs.paging.refresh();
}
},
hide() {
},
queryList(page, size) {
// 推荐列表
this.post({
url: '/vedio/list',
data: {
page,
size
},
showLoading: false,
success: ({
data
}) => {
this.$refs.paging.complete(data.list);
}
});
},
handleBanner(item) {
navigateTo(`/pagesC/video/newVideoDetail?data=` + encodeURIComponent(JSON.stringify(item)));
},
handleInfo(item) {
navigateTo(`/pagesC/video/newVideoDetail?data=` + encodeURIComponent(JSON.stringify(item)));
},
handleTop(item) {
navigateTo(`/pagesC/video/newVideoDetail?data=` + encodeURIComponent(JSON.stringify(item)));
},
handleBottomPlay(item) {
navigateTo(`/pagesC/video/newVideoDetail?data=` + encodeURIComponent(JSON.stringify(item)));
},
handleBottomClose() {
this.newRecordBean = null;
this.post({
url: '/vedio/colseNewest',
data: {},
showLoading: false,
success: ({
data
}) => {}
});
},
showFirstDialog() {
let that = this;
// 匹配用户展示视频
let showFirstVedio = uni.getStorageSync('showFirstVedio') || '';
if (showFirstVedio == '') {
uni.setStorage({
key: 'showFirstVedio',
data: 'true'
});
setTimeout(() => {
that.post({
url: '/vedio/firstVedio',
data: {},
showLoading: false,
success: ({
data
}) => {
if (data.vedioMsg != null) {
navigateTo(`/pagesC/video/newVideoDetail?data=` +
encodeURIComponent(
JSON.stringify(data.vedioMsg)));
}
}
});
}, 800);
}
}
}
};
</script>
<style lang="scss">
.body {
background-color: whitesmoke;
position: relative;
}
.item-wrap {
width: 100%;
border-radius: 10rpx;
background-color: #fff;
break-inside: avoid;
margin-bottom: 20rpx;
height: 470rpx;
}
.img {
position: relative;
border-radius: 10rpx;
width: 100%;
height: 390rpx;
}
</style>
\ No newline at end of file
<template>
<view class="body">
<!-- <scroll-view :scroll-y="true"> -->
<z-paging style="height: 100%;">
<view
:style="'display: flex;flex-direction: row;align-items: center;margin: 20rpx;padding-left: 10rpx;margin-top:'+statusBarHeight+'px;'">
<image class="avatar" src="@/static/logo-about.png"></image>
<view>
<view style="font-size: 32rpx;color: black;margin-left: 20rpx;">用户ID:{{userBean.idcode}}</view>
</view>
<!-- <button text="微信用户一键登录" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">123123</button> -->
</view>
<view v-if="userBean.showVipInner && os === 'android' "
style="display: flex;flex-direction: row;background: #f5ca86;margin: 20rpx;padding: 40rpx;border-radius:20rpx;align-items: center;justify-content:space-between;">
<view style="display: flex;flex-direction: column;justify-content: center;">
<view style="font-size: 36rpx;color: #5b1500;font-weight: 777;">
{{userBean.expireTime<=0 ? '开通VIP会员' : 'VIP会员'}}
</view>
<view v-if="userBean.expireTime<=0" style="font-size: 30rpx;color: #5b1500;margin-top: 12rpx;">
解锁全部短剧
</view>
<view v-else style="font-size: 30rpx;color: #5b1500;margin-top: 12rpx;">
到期时间:{{userBean.expireTime*1000 | formatDate('yyyy-MM-dd')}}
</view>
<view v-if="userBean.expireTime<=0" @click="handleCoinPay"
style="width: 210rpx;height: 60rpx;background-color: #5b1500;border-radius:30rpx;color: white;font-size: 26rpx;justify-content: center;align-items: center;display: flex;padding-bottom: 4rpx;margin-top: 30rpx;">
立即开通
</view>
<view v-else style="width: 210rpx;height: 60rpx;padding-bottom: 4rpx;margin-top: 30rpx;">
</view>
</view>
<image style="border-radius:10rpx; width: 130rpx;height: 100rpx;margin-right: 20rpx;"
src="https://mints-pkg.oss-cn-beijing.aliyuncs.com/pkg/bg_my_vip.png" mode="scaleToFill"></image>
</view>
<view v-if="os === 'android' "
style="display: flex;height: 200rpx;margin: 20rpx;background: #f5ca86;border-radius: 20rpx;">
<view style="flex-grow: 2; margin-left: 20rpx;">
<view
style="width: 100%;height: 100%;display: flex;flex-direction: column;justify-content: center;">
<view style="display: flex;align-items: center;">
<image
style="width: 50rpx;height: 50rpx;display: flex;align-items: right;margin-right: 10rpx;"
src="https://mints-pkg.oss-cn-beijing.aliyuncs.com/pkg/img/ic_my_coin.png"></image>
<view style="font-size: 36rpx;font-weight: 777;">看点充值</view>
</view>
<view style="font-size: 28rpx;color: #5b1500;margin-top: 20rpx;">海量看点狂洒中,好剧等你来解锁</view>
</view>
</view>
<view style="width: 220rpx;">
<view
style="width: 100%;height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;">
<view style="font-size: 30rpx;color: #5b1500;margin-bottom: 20rpx;">{{userBean.point}}</view>
<view @click="handleCoinPay"
style="width: 160rpx;height: 60rpx;background-color: #5b1500;border-radius:30rpx;color: white;font-size: 26rpx;justify-content: center;align-items: center;display: flex;padding-bottom: 4rpx;">
去充值
</view>
</view>
</view>
</view>
<view class="infobg" style="margin: 20rpx;">
<view v-if="userBean.showVipInner && os === 'android' " class="item arrow" @click="handlePayRecord">
我的订单
<view class="item_bd ellipsis" style="margin-left: 58rpx;"></view>
</view>
<view v-if="os === 'android' " class="item arrow" @click="handleDotRecord">
看点记录
<view class="item_bd ellipsis" style="margin-left: 58rpx;"></view>
</view>
<view v-if="os === 'android' " class="item arrow" @click="handleUseDotRecord">
消费记录
<view class="item_bd ellipsis" style="margin-left: 58rpx;"></view>
</view>
<view class="item arrow" @click="handleWatchRecord">
观看记录
<view class="item_bd ellipsis" style="margin-left: 58rpx;"></view>
</view>
<view class="item arrow" @click="handlePhone">
联系客服
<view class="item_bd ellipsis" style="margin-left: 58rpx;"></view>
</view>
</view>
<view style="display: flex;justify-content: center;margin-top: 20rpx;font-size: 26rpx;color: gray;">
{{ versionName }}
</view>
</z-paging>
<!-- </scroll-view> -->
<coin-popup :show="showAnimate" @close="showAnimate = false" @paySuccess="paySuccess">
</coin-popup>
</view>
</template>
<script>
import common from '@/mixins/common';
import {
getToLocal
} from "@/utils/utils.js"
import {
navigateTo,
message,
alert,
loading
} from '@/utils/fun.js';
import {
openUrl
} from '@/utils/app+.js';
const app = getApp();
export default {
name: 'index',
mixins: [common],
data() {
return {
statusBarHeight: app.globalData.statusBarHeight,
userBean: {},
showAnimate: false,
windowHeight: 0,
os: 'android',
versionName: app.globalData.versionName,
corpid: '', // 企业ID
curl: '', // 客服链接
};
},
methods: {
show() {
this.os = wx.getSystemInfoSync().platform;
this.windowHeight = uni.getSystemInfoSync().windowHeight
// loadData() {
this.post({
url: '/user/baseMsg',
showLoading: false,
success: ({
data
}) => {
this.userBean = data;
}
});
},
hide() {
},
handleDotRecord() {
// 看点记录
navigateTo(`/pagesD/dotRecord/dotRecord`)
},
handleUseDotRecord() {
// 看点消费记录
navigateTo(`/pagesD/useDotRecord/useDotRecord`)
},
handleWatchRecord() {
navigateTo(`/pagesD/watchRecord/watchRecord`)
},
handleCoinPay() {
this.showAnimate = true;
},
handlePayRecord() {
navigateTo(`/pagesD/payRecord/payRecord`)
},
handleVipPay() {
navigateTo(`/pagesA/vipPay/vipPay`)
},
handlePhone() {
// if (this.corpid != '' && this.curl != '') {
// wx.openCustomerServiceChat({
// extInfo: {
// url: this.curl
// },
// corpId: this.corpid,
// success(res) {},
// fail(e) {
// console.log(e)
// }
// })
// } else {
// let that = this
// // 联系我们
// this.post({
// url: '/vedio/customerServiceNumbers',
// showLoading: false,
// success: ({
// data
// }) => {
// let datas = data.customerServiceNumbers.split(',')
// that.corpid = datas[0]
// that.curl = datas[1]
// wx.openCustomerServiceChat({
// extInfo: {
// url: that.curl
// },
// corpId: that.corpid,
// success(res) {},
// fail(e) {
// console.log(e)
// }
// })
// }
// });
// }
wx.makePhoneCall({
phoneNumber: '4000969950',
success: function(res) {
console.log('拨打电话成功!');
},
fail: function(res) {
console.log('拨打电话失败!');
}
})
},
paySuccess(largeType) {
// largeType=vip 开通vip
// largeType=point 购买看点
if(wx.getSystemInfoSync().platform=='ios'){
message.notify('支付成功');
}
this.post({
url: '/user/baseMsg',
showLoading: false,
success: ({
data
}) => {
this.userBean = data;
}
});
},
getPhoneNumber(e) {
console.log(e.detail.code) // 动态令牌
console.log(e.detail.errMsg) // 回调信息(成功失败都会返回)
console.log(e.detail.errno) // 错误码(失败时返回)
}
}
};
</script>
<style lang="scss">
@import '@/scss/uni.scss';
.body {
background-color: whitesmoke;
}
.avatar {
background-color: #d8d8d8;
width: 100rpx;
height: 100rpx;
border-radius: 50%;
overflow: hidden;
//box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1)
}
</style>
\ No newline at end of file
<template>
<view style="background: white;">
<scroll-view scroll-y="true"
:style="'height: '+(windowHeight -120)+'px;margin-top:'+(titleBarHeight +statusBarHeight)+'px;'">
<view class="flex space" style="display:flex; flex-wrap:wrap;">
<block v-for="(value,key) in dataList" :key="key">
<view class="mt-10"
style="width:31%; position: relative; border-radius:20rpx;margin-bottom: 10rpx;margin-left: 14rpx;"
@click.stop="click(value)" @longpress.stop="longClick(key)">
<image class="integral-mall-goods" mode="aspectFill" :src="value.coverImage"></image>
<view class="text" style="font-size: 26rpx;color: black;height: 36rpx;margin-left: 5rpx;">
{{value.title}}
</view>
<view class="text" style="font-size: 22rpx;color: gray;height: 30rpx;margin-left: 5rpx;">
{{value.vedioDesc}}
</view>
<view v-if="isEditStyle" @click.stop="cbClick(key)" style="position: absolute;background: #000000; opacity: 0.6;width: 92%;height: 96%;top: 0;border-radius:20rpx;
padding-left: 20rpx;padding-top: 20rpx;">
<image v-if="value.isChecked" src="@/static/ic_selected.png"
style="width: 50rpx;height: 50rpx;" />
<image v-if="!value.isChecked" src="@/static/ic_unselected.png"
style="width: 50rpx;height: 50rpx;" />
</view>
</view>
</block>
</view>
</scroll-view>
<view v-if="dataList.length<=0"
style="position: absolute;left: 50%;width: 240rpx;margin-left: -120rpx;top: 600rpx;text-align: center;">
<text style="color: gray;">暂无在追剧</text>
<view @click="goRecommend" class="button" style="margin-top: 20rpx;color: white;">去剧场</view>
</view>
</view>
</template>
<script>
import common from '@/mixins/common';
import {
navigateTo,
} from '@/utils/fun.js';
const app = getApp();
export default {
name: "follow",
mixins: [common],
data() {
return {
titleBarHeight: app.globalData.titleBarHeight,
statusBarHeight: app.globalData.statusBarHeight,
windowHeight: 0,
dataList: [],
isEditStyle: false
}
},
watch: {
isEditStyle: {
handler(newValue, oldValue) {
this.$emit("showEditBarR", newValue)
}
},
},
onLoad(e) {},
methods: {
show() {
this.windowHeight = uni.getSystemInfoSync().windowHeight
this.loadData()
},
loadData() {
// 收藏记录
this.post({
url: '/vedio/collectList',
showLoading: false,
success: ({
data
}) => {
this.dataList = data.list;
if (this.dataList.length > 0) {
this.$emit("showEditR", true)
} else {
this.$emit("showEditR", false)
}
}
});
},
changeEditStyle(b) {
this.isEditStyle = b
if (!this.isEditStyle) {
this.noChoice()
}
},
goRecommend() {
this.$emit("goRecommend")
},
click(detail) {
navigateTo(`/pagesC/video/ttVideoDetail?data=` + encodeURIComponent(JSON.stringify(detail)))
},
longClick(key) {
this.isEditStyle = true
this.dataList[key].isChecked = true
},
onChange(key) {
this.dataList[key].isChecked = !this.dataList[key].isChecked
},
cbClick(key) {
let newData = this.dataList[key]
newData.isChecked = !newData.isChecked
this.$set(this.dataList, key, newData)
},
fullChoice() {
for (let i = 0; i < this.dataList.length; i++) {
this.dataList[i].isChecked = true
}
this.$forceUpdate()
},
noChoice() {
for (let i = 0; i < this.dataList.length; i++) {
this.dataList[i].isChecked = false
}
this.$forceUpdate()
},
deleteCollect() {
let list = []
for (let i = 0; i < this.dataList.length; i++) {
if (this.dataList[i].isChecked) {
list.push(this.dataList[i].vedioId)
}
}
// 取消收藏
this.post({
url: '/vedio/cancelCollect',
data: {
list
},
showLoading: false,
success: ({
data
}) => {
this.isEditStyle = false
uni.showToast({
title: "删除成功"
})
this.loadData()
}
});
},
}
}
</script>
<style lang="scss" scoped>
.integral-mall-goods {
width: 100%;
height: 320rpx;
background: #F2F2F2;
border-radius: 16upx;
}
.text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.cb {
margin-top: 10rpx;
margin-left: 10rpx;
// position: absolute;
}
</style>
\ No newline at end of file
<template>
<view class="body">
<view class="tabContainer" :style="
'height:' +
titleBarHeight +
'px;line-height:' +
titleBarHeight +
'px;padding-top:' +
statusBarHeight +
'px;background-color:transparent'
">
<view v-if="(current==0 && showEdit)"
:style="'position: absolute;left: 20rpx;top:'+ (statusBarHeight + 10) + 'px'"
@click.stop="showEditBar = !showEditBar">
<image style="width: 50rpx;height: 50rpx;" mode="widthFix"
:src="showEditBar?'/static/video/close.png':'/static/video/edit.png'" />
</view>
<view v-show="showEditBar" style="width: 300rpx;background: white;z-index: 999;">
<view
style="font-size: 36rpx;text-align: center;align-items: center;height:100rpx;line-height: 100rpx;">
追剧
</view>
</view>
<view v-if="(!showEditBar && showTap)">
<u-tabs :list="tabs" :current="current" @change="handleChange" lineWidth="30" :scrollable="false"
:lineColor="current==0?'#f56c6c':'#ffffff'" :activeStyle="{
color: current==0?'#000000':'#ffffff',
fontWeight: 'bold',
transform: 'scale(1.05)'
}" :inactiveStyle="{
color: '#606266',
transform: 'scale(1)'
}" />
</view>
</view>
<swiper class="swiper" @change="swiperChange" :current="current" :disable-touch="showEditBar">
<swiper-item class="swiper-item">
<followPage v-on:showEditBarR="showEditBarR" v-on:goRecommend="goRecommend" v-on:showEditR="showEditR"
ref="follow" />
</swiper-item>
<swiper-item class="swiper-item">
<recommendVideoPage ref="recommendVideo" />
</swiper-item>
</swiper>
</view>
</template>
<script>
import common from '@/mixins/common';
import followPage from "@/pages/recommend/follow.vue"
import recommendVideoPage from "@/pages/recommend/recommendVideo.vue";
import {
navigateTo,
} from '@/utils/fun.js';
const app = getApp();
export default {
name: "recommend",
mixins: [common],
components: {
followPage,
recommendVideoPage
},
data() {
return {
current: 1,
tabIndex: 1,
tabs: [{
name: '追剧'
}, {
name: '推荐'
}],
showEditBar: false,
showEdit: false,
showTap: false,
titleBarHeight: app.globalData.titleBarHeight,
titleButtonWidth: app.globalData.titleButtonWidth,
statusBarHeight: app.globalData.statusBarHeight,
}
},
onLoad(e) {},
watch: {
showEditBar: {
handler(newValue, oldValue) {
this.$refs.follow.changeEditStyle(newValue);
}
},
},
methods: {
hide() {
this.$refs.recommendVideo.stop();
},
show() {
this.$nextTick(() => {
// 延迟渲染,否则位置错乱
this.showTap = true
})
if (this.current == 0) {
this.$refs.follow.show();
this.$refs.recommendVideo.stop();
this.$emit("changeBottomBarColor", false);
} else if (this.current == 1) {
this.$refs.recommendVideo.show();
this.$emit("changeBottomBarColor", true);
}
},
handleChange(event) {
this.current = event.index;
this.show()
},
swiperChange(event) {
this.current = event.detail.current
this.show()
},
showEditBarR(b) {
this.showEditBar = b
this.$emit("showEditBarH", b);
},
showEditR(b) {
this.showEdit = b
},
fullChoice() {
this.$refs.follow.fullChoice()
},
noChoice() {
this.$refs.follow.noChoice()
},
deleteCollect() {
this.$refs.follow.deleteCollect()
},
goRecommend() {
this.current = 1
},
}
}
</script>
<style lang="scss" scoped>
.body {
background: white;
width: 100%;
height: 100%;
}
.tabContainer {
width: 100%;
position: absolute;
z-index: 100;
display: flex;
align-items: center;
overflow: hidden;
justify-content: center;
}
.swiper {
height: 100%;
}
.recommendTitle {}
</style>
\ No newline at end of file
<template>
<view class="body">
<swiper class="swiper" circular @change="swiperChange" :current="current" :vertical="true" duration="300">
<swiper-item v-for="(list, index) in displaySwiperList" :key="index">
<view v-if="Math.abs(displayIndex-index)==0" style="height: 100%;" @click="tapVideoHover()">
<!-- <video v-if="Math.abs(displayIndex-index)==0" :id="''+list.vedioId" :controls="controls"
:autoplay="true" :isplay="true" play-btn-position="center" :loop="!isplay" @ended="ended"
@controlstoggle="controlstoggle" :show-fullscreen-btn="false" :poster="list.coverImage"
:show-loading="true" @click="tapVideoHover()" :enable-progress-gesture="false" class="tsvideo"
:src="list.recommendUrl" object-fit="cover" /> -->
<tt-video-player v-if="Math.abs(displayIndex-index)==0" :id="list.vedioId"
:album-id="list.douyinAlbumId" :episode-id="list.douyinEpisodeId" :cloud-type="1" version="1"
object-fit="contain" :controls="controls" :poster="data.coverImage" :loop="!isplay"
:autoplay="true" :enable-progress-gesture="false" :show-loading="true" @play="startPlay"
:show-fullscreen-btn="false" @controlstoggle="controlstoggle" @ended="ended" />
</view>
<view v-if="!isqp" class="userInfo flex">
<!-- 点赞 -->
<view class="flex" style="opacity: 0.9; margin-top: 10rpx;">
<image @click.stop="collect(list.vedioId,index)" v-if="list.collect==0"
src="@/static/home_collect_img_0.png" />
<image @click.stop="cancelCollect(list.vedioId,index)" v-if="list.collect==1"
src="@/static/home_collect_img_1.png" />
<text
style="margin-top: 110rpx;color: #FFFFFF;font-size: 26rpx; text-align: center;font-weight: bold;"
:class="{'likeNumActive':list.collect!=0}">{{list.hot}}</text>
</view>
<!-- 分享 -->
<view v-show="false" class="flex" style="opacity: 0.9; margin-top: 10rpx;">
<image src="@/static/video/share-fill.png" />
<text
style="margin-top: 110rpx; color: #FFFFFF;font-size: 26rpx; text-align: center; font-weight: bold;">分享</text>
<button open-type="share"
style="position: absolute;;background: none; width: 80rpx; height: 80rpx; right: 10rpx;"
@click.stop="reShare"></button>
</view>
</view>
<!-- 最底下的文字部分 -->
<view v-if="!isqp" class="contentcd flex" @click.stop="detail(list)">
<text class="userName">{{list.title}}</text>
<text class="words">{{'第'+list.recommendIndex+'集'}}</text>
<view class="wordss2">
<image src="@/static/video/layers.png" />
<text
class="wordss">{{'共'+list.vedioTotal+'集' + ((list.completeStatus==0)?' 已完结':' 更新中')}}</text>
<text class="wordsss">{{(list.completeStatus==0)?'下一集':'看全部'}}</text>
</view>
</view>
</swiper-item>
</swiper>
</view>
</template>
<script>
import common from '@/mixins/common';
import {
navigateTo,
} from '@/utils/fun.js';
let audo = uni.createInnerAudioContext()
export default {
name: "recommendVideo",
mixins: [common],
data() {
return {
controls: false, // 控制按钮
originList: [], // 源数据
displaySwiperList: [], // swiper需要的数据
displayIndex: 0, // 用于显示swiper的真正的下标数值只有:0,1,2。
originIndex: 0, // 记录源数据的下标
windowWidth: 0,
windowHeight: 0,
current: 0,
oid: 0,
isplay: true, // 是否自动播放下一个视频
playCount: 2, // 剩余多少视频加载视频列表
isqp: false, // 是否全屏
urls: "https://xjc.demo.hongcd.com/api/video/videoRecommend?page=1&uid=0",
isFirstLoad: true,
videoContext: null
}
},
onLoad(e) {
this.windowWidth = uni.getSystemInfoSync().windowWidth
this.windowHeight = uni.getSystemInfoSync().windowHeight
},
methods: {
reShare() {
var href = ''
// #ifdef H5
uni.setClipboardData({
data: href,
complete() {
uni.showToast({
title: "分享连接已复制到剪贴板"
})
}
})
// #endif
// #ifdef MP-WEIXIN
// #endif
// #ifdef APP-PLUS
uni.share({
provider: "weixin",
scene: "WXSenceTimeline",
type: 0,
href: href,
title: '分享标题',
summary: '分享总结',
imageUrl: '',
success: function(res) {
console.log("success:" + JSON.stringify(res));
},
fail: function(err) {
console.log("fail:" + JSON.stringify(err));
},
})
// #endif
},
show() {
if (this.isFirstLoad) {
this.isFirstLoad = false
this.queryList()
} else {
this.videoContext?.play()
}
},
stop() {
// audo.pause()
this.videoContext?.pause()
},
queryList() {
// 推荐
this.post({
url: '/vedio/autoList',
showLoading: false,
success: ({
data
}) => {
var msg = data.list
for (let i = 0; i < msg.length; i++) {
this.originList.push(msg[i])
}
this.initSwiperData();
}
});
},
tapVideoHover() {
if (this.controls) return
this.isqp = true
this.controls = true
},
startPlay() {
if (tt.canIUse('preloadResourceVideo')) {
this.preloadplaylet()
}
},
preloadplaylet() {
var preIndex = 0
if (this.displayIndex < 2) {
preIndex = this.displayIndex + 1
} else {
preIndex = 0
}
// 抖音预加载
tt.preloadResourceVideo({
albumId: this.displaySwiperList[preIndex].douyinAlbumId,
episodeId: this.displaySwiperList[preIndex].douyinEpisodeId,
cloudType: 1,
version: 1,
success: () => {
console.log("短剧预加载成功" + this.displaySwiperList[preIndex].douyinEpisodeId);
},
fail: (error) => {
console.log("短剧预加载失败", error);
},
});
},
ended() {
// 1.播放当前视频结束时触发,自动切换下一个视频
if (this.isplay) {
if (this.displayIndex < 2) {
this.current = this.displayIndex + 1
} else {
this.current = 0
}
console.log('显示swiper Index:', this.displayIndex)
}
},
/**
* 初始一个显示的swiper数据
* @originIndex 从源数据的哪个开始显示默认0,如从其他页面跳转进来,要显示第n个,这个参数就是他的下标
*/
initSwiperData(originIndex = this.originIndex) {
console.log('--------当前数据 Index:', originIndex)
const originListLength = this.originList.length; // 源数据长度
const displayList = [];
displayList[this.displayIndex] = this.originList[originIndex];
displayList[this.displayIndex - 1 == -1 ? 2 : this.displayIndex - 1] =
this.originList[
originIndex - 1 == -1 ? originListLength - 1 : originIndex - 1
];
displayList[this.displayIndex + 1 == 3 ? 0 : this.displayIndex + 1] =
this.originList[
originIndex + 1 == originListLength ? 0 : originIndex + 1
];
this.displaySwiperList = displayList;
if (this.oid >= this.originList.length) {
this.oid = 0
}
if (this.oid < 0) {
this.oid = this.originList.length - 1
}
console.log('++++++++++++上一条播放数据 Index:', this.oid)
// audo.pause()
this.videoContext = uni.createVideoContext("" + this.originList[this.oid].vedioId, this)
this.videoContext.pause()
this.videoContext.stop()
setTimeout(() => {
console.log('qqqqqq:', this.originList[originIndex].vedioId)
this.videoContext = uni.createVideoContext("" + this.originList[originIndex].vedioId, this)
this.videoContext.play()
}, 500)
var pCount = this.originList.length - this.playCount
if (originIndex == pCount) {
this.queryList()
}
},
/**
* swiper滑动时候
*/
swiperChange(event) {
const {
current
} = event.detail;
const originListLength = this.originList.length; // 源数据长度
// =============向后==========
if (this.displayIndex - current == 2 || this.displayIndex - current == -1) {
this.originIndex =
this.originIndex + 1 == originListLength ? 0 : this.originIndex + 1;
this.displayIndex = this.displayIndex + 1 == 3 ? 0 : this.displayIndex + 1;
//console.log('+++',this.originIndex)
this.oid = this.originIndex - 1
this.initSwiperData(this.originIndex);
}
// ======如果两者的差为-2或者1则是向前滑动============
else if (this.displayIndex - current == -2 || this.displayIndex - current == 1) {
this.originIndex = this.originIndex - 1 == -1 ? originListLength - 1 : this.originIndex - 1;
this.displayIndex = this.displayIndex - 1 == -1 ? 2 : this.displayIndex - 1;
//console.log('---',this.originIndex)
this.oid = this.originIndex + 1
this.initSwiperData(this.originIndex);
}
this.controls = false
this.isqp = false
},
controlstoggle(e) {
if (!this.controls) return
this.isqp = e.detail.show
},
detail(detail) {
navigateTo(`/pagesC/video/ttVideoDetail?data=` + encodeURIComponent(JSON.stringify(detail)) +
`&playNext=1`)
},
collect(vedioId, index) {
this.originList[index].collect = 1
// 收藏
this.post({
url: '/vedio/collect',
data: {
vedioId
},
showLoading: false,
success: ({
data
}) => {
uni.showToast({
title: "收藏成功"
})
}
});
},
cancelCollect(vedioId, index) {
this.originList[index].collect = 0
// 取消收藏
this.post({
url: '/vedio/cancelCollect',
data: {
vedioId
},
showLoading: false,
success: ({
data
}) => {
uni.showToast({
title: "取消收藏"
})
}
});
},
loginTips() {
uni.showModal({
title: '温馨提示',
content: '请先登录',
showCancel: true,
confirmText: "登录",
success: function(res) {
if (res.confirm) {
} else if (res.cancel) {
}
}
});
},
}
}
</script>
<style lang="scss" scoped>
.body {
background: #000000;
width: 100%;
height: 100%;
}
.swiper {
height: 100%;
}
.userInfo {
position: absolute;
z-index: 99;
bottom: 30%;
right: 10px;
width: 90rpx;
flex-direction: column;
image {
width: 70rpx;
height: 70rpx;
position: absolute;
right: 10rpx;
}
}
.likeIco,
.shareIco {
width: 60rpx;
height: 60rpx;
margin-top: 15px;
}
.likeNum,
.shareTex {
color: #ffffff;
font-size: 30rpx;
text-align: center;
margin: 5px;
}
.likeNumActive {
color: red;
}
.contentcd {
z-index: 99;
width: 100%;
position: absolute;
bottom: 0;
color: #ffffff;
flex-direction: column;
align-items: flex-start;
}
.userName {
font-size: 36rpx;
color: #ffffff;
margin-left: 10rpx;
}
.wordss {
font-size: 30rpx;
color: #ffffff;
margin-left: 10rpx;
}
.wordss2 {
width: 100%;
height: 80rpx;
opacity: 0.6;
background: black;
display: flex;
flex-direction: row;
align-items: center;
margin-top: 20rpx;
image {
margin-left: 10rpx;
width: 30rpx;
height: 30rpx;
}
.wordsss {
margin-right: 10rpx;
margin-left: auto;
font-size: 26rpx;
color: #ffffff;
padding: 4rpx 12rpx;
border-radius: 30rpx;
background: darkgrey;
}
}
.words {
margin-top: 20rpx;
margin-left: 10rpx;
font-size: 30rpx;
color: #ffffff;
}
.tsvideo {
width: 100%;
height: 100%;
animation: showDivAni 1s 1;
}
@keyframes showDivAni {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
</style>
\ No newline at end of file
<template>
<view class="container">
<view class="search-head">
<view class="search-bar">
<image style="width: 40rpx; height: 40rpx" src="@/static/search.png"></image>
<input class="inputkeyword" type="text" placeholder="请输入搜索剧集" onchange="showChangePrompt"
:value="keyword" />
<image v-if="keyword!=''" @click="clearWord" style="width: 36rpx; height: 36rpx"
src="@/static/search.png"></image>
</view>
<text class="searchbutton" @click="getsearch">搜索</text>
</view>
<z-paging class="item-list">
<view>
<view class="search-item-wrap" v-if="searchList.length>0 && !showEmpty">
<view class="search-item-top">
<text class="item-title">历史搜索</text>
<image @click="clearHistory" style="width: 40rpx; height: 40rpx"
src"@/static/video/ic_delete.png"></image>
</view>
<view class="search-item-bottom">
<block v-for="(item, index) in searchList" :key="index">
<text class="search-item" @click="clickHistory(item)">{{ item }}</text>
</block>
</view>
</view>
</view>
<view>
<view class="emptyView" if="showEmpty">
<text style="font-size: 30rpx;"> 暂无搜索结果 </text>
</view>
</view>
<view v-if="topList.length>0 && dataList.length==0" class="flex">
<text class="item-title">{{showEmpty ? '猜你喜欢' : '今日热门' }}</text>
<view class="item-list-column">
<block v-for="(item, index) in topList" :key="index">
<view class="product-item-column" @click="handleListItem(item)">
<image class="item-list-img3" :src="item.coverImage"></image>
<view class="item-list-bottom">
<view>
<image class="item-list-bottom-img" src="../../assets/images/ic_index_play.png">
</image>
<text
style="margin-left: 4rpx; color: white; font-size: 24rpx">{{ item.showNum }}</text>
</view>
<text style="margin-left: 4rpx; color: white; font-size: 24rpx">
{{ item.vedioTotal }}
</text>
</view>
<text style="font-size: 24rpx; color: black">{{ item.title }}</text>
</view>
</block>
</view>
</view>
<view class="item-content">
<view class="item-list-column">
<block v-for="(item, index) in dataList" :key="index">
<view class="pack-item" @click="handleListItem(item)">
<image class="images" :src="item.coverImage" />
<view class="pack-item-cloumn">
<text class="text">
{{ item.title }}
</text>
<text class="text3"> {{
item.vedioDesc == ''
? '已看' +
item.seeIndex +
'集/共' +
item.vedioTotal +
'集'
: item.vedioDesc
}}
</text>
<text class="text4">
{{ item.orderTagsStr }}
</text>
</view>
</view>
</block>
</view>
</view>
</z-paging>
</view>
</template>
<script>
import common from '@/mixins/common';
import {
navigateTo,
message,
alert,
loading
} from '@/utils/fun.js';
export default {
name: 'search',
mixins: [common],
data() {
return {
dataList: [],
topList: [],
searchList: [],
keyword: '',
showEmpty: false,
searchKey: 'SEARCH_HISTORY_WORDS'
}
},
mounted() {
this.getHistorySearchWords()
this.getOrders()
},
methods: {
toSearch() {
let that = this
this.post({
url: '/vedioV1/orders',
data: {
words: that.keyword
},
showLoading: false,
success: ({
data
}) => {
that.dataList = data.list
if (that.dataList.length == 0) {
that.showEmpty = true
}
},
fail: () => {
that.dataList = []
}
});
},
getOrders() {
let that = this
this.post({
url: '/vedioV1/orders',
showLoading: false,
success: ({
data
}) => {
that.topList = data.list
},
fail: () => {
that.topList = []
}
});
},
showChangePrompt(e) {
this.keyword = e.value
},
clickHistory(word) {
this.keyword = word
this.getsearch()
},
getsearch() {
if (this.keyword == '') {
message({
fail: '请输入搜索内容'
})
return
}
this.toSearch()
this.saveSearchWord(this.keyword)
},
clearWord() {
this.keyword = ''
this.dataList = []
this.showEmpty = false
},
handleListItem(item) {
navigateTo(`/pagesC/ttvideo/ttVideoDetail?data=` + encodeURIComponent(JSON.stringify(item)) +
'&tt_album_id=' + item.douyinAlbumId + '&tt_episode_id=' + item.douyinEpisodeId);
},
saveSearchWord(word) {
// 校验是否保存过,保存过不保存
for (var i = 0; i < this.searchList.length; i++) {
if (this.searchList[i] == word) return
}
// 保存搜索数据
let that = this
that.searchList.push(word)
uni.setStorage({
key: that.searchKey,
data: that.setArrToClipStr(that.searchList),
success: function(data) {
that.getHistorySearchWords()
},
fail: function() {}
})
},
getHistorySearchWords() {
let that = this
uni.getStorage({
key: that.searchKey,
success: function(data) {
if (data == '' || data == undefined) {
that.searchList = []
} else {
that.searchList = []
that.searchList = that.getArrfromClipStr(data)
}
},
fail: function() {
that.searchList = []
}
})
},
clearHistory() {
let that = this
uni.removeStorage({
key: that.searchKey,
success: function(data) {
that.searchList = []
},
fail: function(data, code) {
that.searchList = []
}
})
},
setArrToClipStr(strArr) {
let clipStr = ''
for (var i = 0; i < strArr.length; i++) {
clipStr += (strArr[i] + ',')
}
return clipStr
},
getArrfromClipStr(clipStr) {
let result = clipStr.split(',')
let resultArr = []
for (var i = 0; i < result.length; i++) {
if (result[i] == '') continue
resultArr.push(result[i])
}
return resultArr
}
}
}
</script>
<style lang="less">
.container {
background-color: #ffffff;
display: flex;
height: 100%;
flex-direction: column;
}
.item-list {
display: flex;
flex-direction: column;
background-color: aqua;
height: 92%;
flex: 1;
}
.pack-item {
margin-top: 10rpx;
width: 100%;
height: 260rpx;
position: relative;
margin-bottom: 10rpx;
margin-left: 14rpx;
margin-right: 14rpx;
display: flex;
flex-direction: row;
.images {
width: 180rpx;
height: 260rpx;
border-radius: 16rpx;
}
.pack-item-cloumn {
margin-left: 20rpx;
flex-direction: column;
.text {
margin-top: 20rpx;
font-size: 34rpx;
color: black;
font-weight: bold;
}
.text2 {
margin-top: 16rpx;
font-size: 24rpx;
color: #000000;
}
.text3 {
margin-top: 16rpx;
font-size: 24rpx;
color: #000000;
}
.text4 {
margin-top: 16rpx;
font-size: 22rpx;
color: gray;
}
}
}
.search-head {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 8%;
}
.search-bar {
border-radius: 60rpx;
margin: 10rpx 15rpx;
padding: 15rpx 30rpx;
width: 80%;
background-color: #f2f2f2;
display: flex;
flex-direction: row;
align-items: center;
}
.inputkeyword {
margin-left: 30rpx;
}
.searchbutton {
text-align: center;
color: #000000;
font-size: 30rpx;
width: 20%;
margin-right: 10rpx;
}
.emptyView {
width: 100%;
height: 200rpx;
display: flex;
justify-content: center;
align-items: center;
}
.item-list-column {
width: 100%;
margin: 10rpx;
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.item-list-bottom {
background-color: #808080;
width: 100%;
display: flex;
justify-content: space-between;
margin-top: 280rpx;
height: 40rpx;
border-radius: 10rpx;
align-content: center;
opacity: 0.7;
}
.item-list-bottom-img {
object-fit: fill;
height: 30rpx;
width: 30rpx;
margin-left: 4rpx;
margin-top: 4rpx;
}
.product-item-column {
width: 31%;
margin-left: 8rpx;
height: 390rpx;
display: flex;
flex-direction: column;
margin-bottom: 10rpx;
}
.item-list-img3 {
position: absolute;
width: 100%;
object-fit: cover;
height: 320rpx;
border-radius: 10rpx;
}
.item-title {
margin-left: 20rpx;
margin-top: 20rpx;
margin-bottom: 20rpx;
color: #000000;
font-size: 36rpx;
font-weight: 400;
}
.search-item-wrap {
display: flex;
flex-direction: column;
}
.search-item-top {
width: 100%;
padding-right: 20rpx;
display: flex;
flex-direction: row;
align-items: center;
flex-wrap: wrap;
justify-content: space-between;
}
.search-item-bottom {
display: flex;
flex-wrap: wrap;
}
.search-item {
border: 4rpx;
height: 60rpx;
margin: 8rpx 15rpx;
border-radius: 60rpx;
border: 0rpx solid #f8f8ff;
background-color: #f8f8ff;
padding: 10rpx 20rpx;
}
</style>
\ No newline at end of file
<template>
<view class="container">
<view class="item-content">
<view class="flex1 task-title-wrap">
<text class="task-title">签到任务</text>
<text class="task-label">领取看点免费看</text>
<text class="sign-rule" @click="showRule">规则</text>
</view>
<view class="task-line"></view>
<view class="task-wrap flex">
<view class="flex1" style="justify-content: space-between">
<block v-for="(item,key) in signList" :key="key">
<view class="flex">
<view class="item.compleled?'sign-item':'sign-item2'">
<image :src="item.compleled?signOkImg:signNoneImg"></image>
<text class="text1">{{ '+' + item.reward }}</text>
</view>
<text :style="item.text == '今天'?'color:#ffa500;':''">{{ item.text }}</text>
</view>
</block>
</view>
<text :class="signBtnStyle" @click="sign">{{ signData.buttonText }}</text>
</view>
</view>
<view class="item-content">
<block v-for="(item,key) in taskList" :key="key">
<view class="flex1 task-title-wrap">
<text class="task-title">{{ item.title }}</text>
<text v-if="item.title == '日常任务'" class="task-label">每日0点重置</text>
</view>
<view class="task-line"></view>
<view class="flex task-wrap">
<block v-for="(item2,key) in item.taskList" :key="key">
<view class="flex1"
style="width: 96%;justify-content: space-between;margin-top: 10rpx;margin-bottom: 20rpx;">
<view class="flex" style="width: 70%; align-items: flex-start">
<view class="flex1">
<text
style="color: #000000;font-size: 30rpx;font-weight: bold;margin-right: 10rpx;">{{ item2.title }}</text>
<image style="width: 36rpx; height: 36rpx; margin: 0 10rpx" :src="taskCoinImg">
</image>
<text
style=" color: #f84a57;font-size: 30rpx;font-weight: bold;">{{ '+' + item2.rewardPoint }}</text>
</view>
<view>
<text style="font-size: 24rpx">{{ item2.content }}</text>
</view>
<view class="flex1" v-if="item2.runingMax>0" style="margin-top: 10rpx">
<view style="width: 120rpx">
<progress style="stroke-width: 8rpx; color: #ffa500" type="horizontal"
:percent=" item2.runing / item2.runingMax * 100 " />
</view>
<text style="margin-left: 20rpx; font-size: 20rpx">{{
item2.runing +
'/' +
item2.runingMax +
' ' +
item2.runingMaxText
}}</text>
</view>
</view>
<text :class="(item2.status==0)?'task-btn':((item2.status==1)?'task-btn2':'task-btn3')"
@click="doTask(item2)">{{ item2.buttonText }}</text>
</view>
</block>
</view>
</block>
</view>
<!-- <reward-popup v-if="showRewardPopup" :dot="currentDot" @close="rewardClose"></reward-popup>
<signsuc-popup v-if="showSignPopup" :dot="currentDot" @close="signClose"></signsuc-popup> -->
</view>
</template>
<script>
import common from '@/mixins/common';
import {
message,
navigateBack,
navigateTo,
redirectTo
} from '@/utils/fun';
export default {
name: 'task',
mixins: [common],
data() {
return {
signData: '',
signList: [],
taskList: [],
showRewardPopup: false,
showSignPopup: false,
currentDot: '',
signBtnStyle: 'sign-btn',
signOkImg: 'https://mints-web.oss-cn-beijing.aliyuncs.com/images/ic_sign_receive.png',
signNoneImg: 'https://mints-web.oss-cn-beijing.aliyuncs.com/images/ic_sign_unreceive.png',
taskCoinImg: 'https://mints-web.oss-cn-beijing.aliyuncs.com/images/ic_sign_unreceive_little.png',
signRule: '1、每7天为一个签到周期,用户连续签满7天,完成一个签到周期,下次签到开始重新计算新的签到周期。\r\n2、用户每次签到均可获得相应的奖励连续签到7天可获得更高奖励。\r\n3、若途中漏签,则从第一天开始重新计算新的签到周期。\r\n4、签到及任务赠送看点的有效期均为5天,过期自动作废,请及时使用。'
}
},
mounted() {
// this.getSignList()
// this.getTaskList()
},
methods: {
getSignList() {
let that = this
getSignPageMsg()
.then((data) => {
let newData = JSON.parse(data)
that.signData = newData
that.signList = []
that.signList = newData.list
if (that.signData.buttonStatus == 0 || that.signData.buttonStatus == 1) {
that.signBtnStyle = "sign-btn"
} else {
that.signBtnStyle = "sign-btn2"
}
})
.catch((err) => {
$utils.showToast('网络出小差了~')
})
},
getTaskList() {
// 任务信息
let that = this
getTaskPageMsg()
.then((data) => {
let newData = JSON.parse(data)
that.taskList = newData.pageMsg
for (var i = 0; i < that.taskList.length; i++) {
for (var j = 0; j < that.taskList[i].taskList.length; j++) {
if (that.taskList[i].taskList[j].listCode == TaskConstant.openForHome &&
that.taskList[i].taskList[j].status == 0
) {
that.isFromForHome()
return
}
}
}
})
.catch((err) => {
$utils.showToast('网络出小差了~')
})
},
hasShortCut(taskId) {
let that = this
shortcut.hasInstalled({
success: function() {
$utils.showToast('桌面图标已创建!')
that.reportCompleteTask(taskId)
},
fail: function() {
that.createShortCut(taskId)
}
})
},
createShortCut(taskId) {
let that = this
// 创建桌面图标
shortcut.install({
success: function() {
$utils.showToast('创建桌面图标成功!')
that.reportCompleteTask(taskId)
},
fail: function(data, code) {
$utils.showToast('创建桌面图标失败!')
}
})
},
sign() {
let buttonStatus = this.signData.buttonStatus
if (this.signData == '' || this.signData.buttonStatus == 2) {
return
}
if (this.signData.buttonStatus == 0) {
let item = this.signList[this.signData.todayMsgIndexInWeek]
this.reportTaskPoint(item, true)
return
}
let rewardMoreType = this.signList[this.signData.todayMsgIndexInWeek].rewardMoreType
if (rewardMoreType == 1) {
// TODO 看广告
$utils.showToast('服务器繁忙,请稍后再试!')
} else if (ewardMoreType == 2) {
// 分享
this.myShare(this.signList[this.signData.todayMsgIndexInWeek])
}
},
reportTaskPoint(item, isSign) {
// 领取奖励
let that = this
addTaskPoint(item.taskId)
.then((data) => {
if (isSign) {
that.currentDot = item.reward
that.getSignList()
that.showSignPopup = true
} else {
that.currentDot = item.rewardPoint
that.getTaskList()
that.showRewardPopup = true
}
})
.catch((err) => {
console.log(err)
$utils.showToast('网络出小差了~')
})
},
reportCompleteTask(taskId) {
// 上报完成任务
let that = this
reportCompleteMsg(taskId)
.then((data) => {
that.getSignList()
that.getTaskList()
})
.catch((err) => {
$utils.showToast('网络出小差了~')
})
},
showRule() {
uni.showModal({
title: '签到规则',
content: this.signRule,
showCancel: false,
confirmColor: '#33dd44',
confirmText: '确定'
})
},
doTask(item) {
if (item.status == 2) {
// 已领取金币
return
} else if (item.status == 1) {
// 已完成任务,领取看点
this.reportTaskPoint(item, false)
} else {
// 去完成任务
if (
item.listCode == TaskConstant.seeVedioListPage
) {
this.reportCompleteTask(item.taskId)
router.push({
uri: '/pages/Home'
})
} else if (
item.listCode == TaskConstant.firstToHomePage ||
item.listCode == TaskConstant.seeVedio ||
item.listCode == TaskConstant.seeOneNewVedio ||
item.listCode == TaskConstant.compeleOneVedio ||
item.listCode == TaskConstant.compeleVedios ||
item.listCode == TaskConstant.completeSeeDays
) {
router.push({
uri: '/pages/Home'
})
} else if (
item.listCode == TaskConstant.firstPay ||
item.listCode == TaskConstant.payBack ||
item.listCode == TaskConstant.completePay
) {
router.push({
uri: '/pages/Vip'
})
} else if (
item.listCode == TaskConstant.saveToPhonePage
) {
this.hasShortCut(item.taskId)
} else if (
item.listCode == TaskConstant.openForHome
) {
router.push({
uri: '/pages/Home'
})
} else if (
item.listCode == TaskConstant.loginByMobie
) {
router.push({
uri: '/pages/Login'
})
} else if (
item.listCode == TaskConstant.seeAd
) {
// TODO 看广告
$utils.showToast('服务器繁忙,请稍后再试!')
} else {
$utils.showToast('服务器繁忙,请稍后再试!')
}
}
},
myShare(item) {
// TODO 分享
// let that = this
// share.share({
// type: 'text/html',
// data: '河狸刷剧',
// success: function(data) {
// that.signMoreReward(item)
// },
// fail: function(data, code) {
// console.log(`handling fail, code = ${code}`)
// }
// })
},
signMoreReward(item) {
// 签到-广告或者分享后领取更多
let that = this
addTaskPointMore(item.taskId)
.then((data) => {
that.currentDot = item.reward
that.getSignList()
that.showSignPopup = true
})
.catch((err) => {
$utils.showToast('网络出小差了~')
})
},
rewardClose() {
this.showRewardPopup = false
},
signClose() {
this.showSignPopup = false
},
isFromForHome() {
let that = this
if (app.getInfo().source.type == 'shortcut') {
if (that.taskList.length > 0) {
for (var i = 0; i < that.taskList.length; i++) {
for (var j = 0; j < that.taskList[i].taskList.length; j++) {
if (that.taskList[i].taskList[j].listCode == TaskConstant.openForHome &&
that.taskList[i].taskList[j].status == 0
) {
that.reportCompleteTask(that.taskList[i].taskList[j].taskId)
return
}
}
}
}
}
}
}
}
</script>
<style lang="less">
.container {
background: linear-gradient(#fcddba, #fff5ea);
flex: 1;
}
.item-content {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
margin-top: 30rpx;
}
.flex {
display: flex;
flex-direction: column;
align-items: center;
}
.flex1 {
display: flex;
flex-direction: row;
align-items: center;
}
.task-wrap {
width: 92%;
background-color: #ffffff;
border-radius: 12rpx;
margin-bottom: 30rpx;
}
.task-title-wrap {
width: 92%;
background-color: #ffffff;
border-radius: 12rpx;
height: 100rpx;
}
.task-line {
width: 85%;
height: 1rpx;
background: repeating-linear-gradient(to right,
transparent 15%,
#fcddba 20%,
transparent 25%);
/* background: linear-gradient(
to left,
transparent 0%,
transparent 50%,
#ffa500 50%,
#ffa500 100%
);
background-size: 10rpx 1rpx;
background-repeat: repeat-x; */
}
.task-title {
margin-left: 30rpx;
color: #fb4c39;
font-size: 32rpx;
font-weight: bold;
}
.task-label {
border-radius: 6rpx;
font-size: 20rpx;
height: 36rpx;
line-height: 36rpx;
background-color: #fef9ea;
border: 1rpx solid #fb3309;
color: #b67e17;
margin-left: 20rpx;
padding: 0 10rpx;
}
.sign-rule {
margin-left: auto;
background-color: #ffa500;
text-align: center;
font-size: 22rpx;
color: #ffffff;
padding-left: 26rpx;
padding-right: 20rpx;
height: 40rpx;
line-height: 40rpx;
border-top-left-radius: 40rpx;
border-bottom-left-radius: 40rpx;
}
.sign-btn {
color: #ffffff;
text-align: center;
border-radius: 80rpx;
font-size: 34rpx;
width: 90%;
height: 80rpx;
margin-top: 30rpx;
margin-bottom: 20rpx;
background: repeating-linear-gradient(to right, #fb6c3a, #fc473a);
}
.sign-btn2 {
color: #ffffff;
text-align: center;
border-radius: 80rpx;
font-size: 30rpx;
width: 90%;
height: 80rpx;
margin-top: 30rpx;
margin-bottom: 20rpx;
background-color: #dcdcdc;
}
.task-btn {
font-size: 26rpx;
color: #ffffff;
text-align: center;
border-radius: 70rpx;
background-color: #fb3309;
width: 180rpx;
height: 70rpx;
}
.task-btn2 {
color: #ffa500;
text-align: center;
font-size: 28rpx;
border: 1rpx solid #fb3309;
border-radius: 70rpx;
background-color: #ffffff;
width: 180rpx;
height: 70rpx;
}
.task-btn3 {
color: #808080;
text-align: center;
font-size: 28rpx;
border: 1rpx solid #808080;
border-radius: 70rpx;
background-color: #ffffff;
width: 180rpx;
height: 70rpx;
}
.sign-item {
padding: 10rpx 0;
width: 78rpx;
display: flex;
flex-direction: column;
align-items: center;
border-radius: 8rpx;
border: 1rpx solid #ffa500;
margin: 10rpx 0;
image {
width: 56rpx;
height: 56rpx;
}
.text1 {
margin-top: 4rpx;
color: #ffa500;
}
}
.sign-item2 {
padding: 10rpx 0;
width: 78rpx;
display: flex;
flex-direction: column;
align-items: center;
border-radius: 8rpx;
background-color: #fb3309;
border: 1rpx solid #fb3309;
margin: 10rpx 0;
image {
width: 56rpx;
height: 56rpx;
}
.text1 {
margin-top: 4rpx;
color: #ffa500;
}
}
</style>
\ No newline at end of file
TGYoypuXSpCliIAj
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment