Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
U
uniapp_vedio
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
android
uniapp_vedio
Commits
bd11f709
Commit
bd11f709
authored
Nov 20, 2024
by
mengcuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
欧拉更新三件套
parent
f78295dd
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
528 additions
and
528 deletions
+528
-528
App.vue
vedio/App.vue
+1
-1
charge.vue
vedio/components/charge/charge.vue
+1
-1
coin-popup.vue
vedio/components/coin-popup/coin-popup.vue
+1
-1
index.vue
vedio/components/home/index.vue
+422
-422
kefu-popup.vue
vedio/components/kefu-popup/kefu-popup.vue
+2
-2
manifest.json
vedio/manifest.json
+2
-2
pages.json
vedio/pages.json
+97
-97
loading.vue
vedio/pages/loading.vue
+1
-1
logo-about.png
vedio/static/logo-about.png
+0
-0
adConstant.js
vedio/utils/adConstant.js
+1
-1
No files found.
vedio/App.vue
View file @
bd11f709
...
...
@@ -97,7 +97,7 @@
versionName
:
'1.1.0'
,
auth
:
false
,
// 三要素实名认证
userInfo
:
null
,
pkgName
:
'com.
mints.dybrightvide
o'
pkgName
:
'com.
duben.dyolvedi
o'
}
};
</
script
>
...
...
vedio/components/charge/charge.vue
View file @
bd11f709
...
...
@@ -89,7 +89,7 @@
<view
style=
"display: flex;flex-direction: column;align-items: center;"
>
<view
style=
"font-size: 29rpx;color: gray;margin-top: 16rpx;"
>
客服时间工作日 9:00-18:00
</view>
<button
class=
"button2"
open-type=
"im"
data-im-id=
"
du_movie
"
>
在线客服
</button>
<button
class=
"button2"
open-type=
"im"
data-im-id=
"
kaixinhaha7785
"
>
在线客服
</button>
</view>
</scroll-view>
</view>
...
...
vedio/components/coin-popup/coin-popup.vue
View file @
bd11f709
...
...
@@ -92,7 +92,7 @@
<view
style=
"display: flex;flex-direction: column;align-items: center;"
>
<view
style=
"font-size: 29rpx;color: gray;margin-top: 16rpx;"
>
客服时间工作日 9:00-18:00
</view>
<button
class=
"button2"
open-type=
"im"
data-im-id=
"
du_movie
"
>
在线客服
</button>
<button
class=
"button2"
open-type=
"im"
data-im-id=
"
kaixinhaha7785
"
>
在线客服
</button>
</view>
</scroll-view>
</view>
...
...
vedio/components/home/index.vue
View file @
bd11f709
<
template
>
<view
class=
"body"
>
<view
v-if=
"showMask"
class=
"show-mask flex-v"
@
click=
"showMask=false"
>
<view
class=
"mt-30"
style=
"width: 90%;text-align: right;"
>
<image
style=
"width: 30rpx;height: 30rpx;padding:6rpx;
border-radius: 40rpx;border: 2px solid darkgray;"
src=
"@/static/index/ic_quit_white.png"
/>
</view>
<text
class=
"mt-10"
style=
"font-size: 46rpx;"
>
如何继续看剧?
</text>
<text
class=
"m-10"
>
找到“
巨爽短剧” 小程序
</text>
<image
class=
"mt-30"
mode=
"widthFix"
:src=
"maskImage1"
></image>
<image
:src=
"maskImage2"
mode=
"widthFix"
></image>
</view>
<scroll-view
v-if=
"clientHeight != 0"
scroll-y=
"true"
:style=
"
{'height': clientHeight + 'px'}"
@scroll="onScroll">
<view
class=
"content"
>
<swiper
class=
"banner"
: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;height: 60rpx;"
>
{{
item
.
title
}}
</view>
<view
class=
"ellipsis"
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;height: 60rpx;"
>
{{
item
.
title
}}
</view>
</view>
</view>
<u-loadmore
:status=
"loadStatus"
@
loadmore=
"loadMore"
></u-loadmore>
</view>
</scroll-view>
<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;margin: 10rpx;"
src=
"../../static/index/ic_quit_white.png"
mode=
"aspectFill"
></image>
<view
@
click=
"handleBottomPlay(newRecordBean)"
style=
"width: 160rpx;height: 50rpx;margin-top: 8rpx;line-height: 50rpx;color: white;text-align: center;background-color: red;border-radius:30rpx;margin-right: 20rpx;"
>
继续观看
</view>
</view>
</view>
</view>
</view>
</
template
>
<
script
>
import
common
from
'@/mixins/common'
;
import
{
getToLocal
}
from
"@/utils/utils.js"
import
{
gotoVideoPlayerPage
}
from
'@/common/page-route.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
:
[],
showMask
:
false
,
maskImage1
:
'https://mints-web.oss-cn-beijing.aliyuncs.com/images/bg_find1.png'
,
maskImage2
:
'https://mints-web.oss-cn-beijing.aliyuncs.com/images/bg_find2.png'
,
clientHeight
:
0
,
page
:
1
,
size
:
10
,
loadStatus
:
'loadmore'
};
},
mounted
()
{
let
that
=
this
uni
.
getSystemInfo
({
success
:
(
res
=>
{
this
.
clientHeight
=
res
.
windowHeight
-
50
;
})
});
// 匹配视频
this
.
showFirstDialog
();
},
methods
:
{
onScroll
(
event
)
{
// 获取scrollview已滚动的高度
const
scrollTop
=
event
.
detail
.
scrollTop
;
// 获取内容的总高度
const
contentHeight
=
event
.
detail
.
scrollHeight
;
// 判断是否滑动到底部(已滚动的高度 + 视图高度 >= 内容高度)
if
((
scrollTop
+
this
.
clientHeight
+
50
)
>=
contentHeight
)
{
this
.
loadMore
()
}
},
showMaskFuc
()
{
let
showFollowMask
=
uni
.
getStorageSync
(
'show-follow-mask'
)
||
''
;
if
(
showFollowMask
==
'1'
)
{
this
.
showMask
=
true
uni
.
setStorage
({
key
:
'show-follow-mask'
,
data
:
'2'
});
}
},
show
()
{
this
.
showMaskFuc
()
// 轮播图
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
;
}
}
});
this
.
page
=
1
this
.
size
=
10
this
.
loadList
()
},
hide
()
{},
loadList
()
{
// 推荐列表
this
.
post
({
url
:
'/vedio/list'
,
data
:
{
page
:
this
.
page
,
size
:
this
.
size
},
showLoading
:
false
,
success
:
({
data
})
=>
{
this
.
loadStatus
=
data
.
list
.
size
<
this
.
size
?
'nomore'
:
'loadmore'
;
if
(
data
.
list
.
size
<=
10
)
{
this
.
dataList
=
[...
this
.
dataList
,
...
data
.
list
];
return
}
if
(
this
.
page
==
1
)
{
this
.
dataList
=
data
.
list
}
else
{
this
.
dataList
=
[...
this
.
dataList
,
...
data
.
list
];
}
}
});
},
loadMore
()
{
if
(
this
.
loadStatus
===
'loading'
||
this
.
loadStatus
===
'nomore'
)
return
;
this
.
loadStatus
=
'loading'
this
.
page
=
++
this
.
page
this
.
loadList
()
},
handleBanner
(
item
)
{
gotoVideoPlayerPage
(
item
)
},
handleInfo
(
item
)
{
gotoVideoPlayerPage
(
item
)
},
handleTop
(
item
)
{
gotoVideoPlayerPage
(
item
)
},
handleBottomPlay
(
item
)
{
gotoVideoPlayerPage
(
item
)
},
handleBottomClose
()
{
this
.
newRecordBean
=
null
;
this
.
post
({
url
:
'/vedio/colseNewest'
,
data
:
{},
showLoading
:
false
,
success
:
({
data
})
=>
{}
});
},
showFirstDialog
()
{
let
that
=
this
;
let
loadEpisode_id
=
uni
.
getStorageSync
(
'tt_episode_id'
)
||
''
;
let
loadAlbum_id
=
uni
.
getStorageSync
(
'tt_album_id'
)
||
''
;
setTimeout
(()
=>
{
that
.
post
({
url
:
'/vedio/firstVedio/douyin'
,
data
:
{
episode_id
:
loadEpisode_id
,
album_id
:
loadAlbum_id
},
showLoading
:
false
,
success
:
({
data
})
=>
{
if
(
data
.
vedioMsg
!=
null
)
{
gotoVideoPlayerPage
(
data
.
vedioMsg
)
// 重置短视频挂载id
uni
.
setStorage
({
key
:
'tt_album_id'
,
data
:
''
});
uni
.
setStorage
({
key
:
'tt_episode_id'
,
data
:
''
});
}
}
});
},
800
);
}
}
};
</
script
>
<
style
lang=
"scss"
>
.body
{
background-color
:
whitesmoke
;
position
:
relative
;
}
.show-mask
{
width
:
100%
;
height
:
100%
;
background
:
rgba
(
0
,
0
,
0
,
0
.6
);
position
:
absolute
;
z-index
:
999
;
color
:
white
;
align-items
:
center
;
image
{
width
:
90%
;
}
}
.item-wrap
{
width
:
100%
;
border-radius
:
10rpx
;
background-color
:
#fff
;
break-inside
:
avoid
;
margin-bottom
:
20rpx
;
height
:
500rpx
;
}
.img
{
position
:
relative
;
border-radius
:
10rpx
;
width
:
100%
;
height
:
390rpx
;
}
<
template
>
<view
class=
"body"
>
<view
v-if=
"showMask"
class=
"show-mask flex-v"
@
click=
"showMask=false"
>
<view
class=
"mt-30"
style=
"width: 90%;text-align: right;"
>
<image
style=
"width: 30rpx;height: 30rpx;padding:6rpx;
border-radius: 40rpx;border: 2px solid darkgray;"
src=
"@/static/index/ic_quit_white.png"
/>
</view>
<text
class=
"mt-10"
style=
"font-size: 46rpx;"
>
如何继续看剧?
</text>
<text
class=
"m-10"
>
找到“
欧拉短剧” 小程序
</text>
<image
class=
"mt-30"
mode=
"widthFix"
:src=
"maskImage1"
></image>
<image
:src=
"maskImage2"
mode=
"widthFix"
></image>
</view>
<scroll-view
v-if=
"clientHeight != 0"
scroll-y=
"true"
:style=
"
{'height': clientHeight + 'px'}"
@scroll="onScroll">
<view
class=
"content"
>
<swiper
class=
"banner"
: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;height: 60rpx;"
>
{{
item
.
title
}}
</view>
<view
class=
"ellipsis"
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;height: 60rpx;"
>
{{
item
.
title
}}
</view>
</view>
</view>
<u-loadmore
:status=
"loadStatus"
@
loadmore=
"loadMore"
></u-loadmore>
</view>
</scroll-view>
<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;margin: 10rpx;"
src=
"../../static/index/ic_quit_white.png"
mode=
"aspectFill"
></image>
<view
@
click=
"handleBottomPlay(newRecordBean)"
style=
"width: 160rpx;height: 50rpx;margin-top: 8rpx;line-height: 50rpx;color: white;text-align: center;background-color: red;border-radius:30rpx;margin-right: 20rpx;"
>
继续观看
</view>
</view>
</view>
</view>
</view>
</
template
>
<
script
>
import
common
from
'@/mixins/common'
;
import
{
getToLocal
}
from
"@/utils/utils.js"
import
{
gotoVideoPlayerPage
}
from
'@/common/page-route.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
:
[],
showMask
:
false
,
maskImage1
:
'https://mints-web.oss-cn-beijing.aliyuncs.com/images/bg_find1.png'
,
maskImage2
:
'https://mints-web.oss-cn-beijing.aliyuncs.com/images/bg_find2.png'
,
clientHeight
:
0
,
page
:
1
,
size
:
10
,
loadStatus
:
'loadmore'
};
},
mounted
()
{
let
that
=
this
uni
.
getSystemInfo
({
success
:
(
res
=>
{
this
.
clientHeight
=
res
.
windowHeight
-
50
;
})
});
// 匹配视频
this
.
showFirstDialog
();
},
methods
:
{
onScroll
(
event
)
{
// 获取scrollview已滚动的高度
const
scrollTop
=
event
.
detail
.
scrollTop
;
// 获取内容的总高度
const
contentHeight
=
event
.
detail
.
scrollHeight
;
// 判断是否滑动到底部(已滚动的高度 + 视图高度 >= 内容高度)
if
((
scrollTop
+
this
.
clientHeight
+
50
)
>=
contentHeight
)
{
this
.
loadMore
()
}
},
showMaskFuc
()
{
let
showFollowMask
=
uni
.
getStorageSync
(
'show-follow-mask'
)
||
''
;
if
(
showFollowMask
==
'1'
)
{
this
.
showMask
=
true
uni
.
setStorage
({
key
:
'show-follow-mask'
,
data
:
'2'
});
}
},
show
()
{
this
.
showMaskFuc
()
// 轮播图
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
;
}
}
});
this
.
page
=
1
this
.
size
=
10
this
.
loadList
()
},
hide
()
{},
loadList
()
{
// 推荐列表
this
.
post
({
url
:
'/vedio/list'
,
data
:
{
page
:
this
.
page
,
size
:
this
.
size
},
showLoading
:
false
,
success
:
({
data
})
=>
{
this
.
loadStatus
=
data
.
list
.
size
<
this
.
size
?
'nomore'
:
'loadmore'
;
if
(
data
.
list
.
size
<=
10
)
{
this
.
dataList
=
[...
this
.
dataList
,
...
data
.
list
];
return
}
if
(
this
.
page
==
1
)
{
this
.
dataList
=
data
.
list
}
else
{
this
.
dataList
=
[...
this
.
dataList
,
...
data
.
list
];
}
}
});
},
loadMore
()
{
if
(
this
.
loadStatus
===
'loading'
||
this
.
loadStatus
===
'nomore'
)
return
;
this
.
loadStatus
=
'loading'
this
.
page
=
++
this
.
page
this
.
loadList
()
},
handleBanner
(
item
)
{
gotoVideoPlayerPage
(
item
)
},
handleInfo
(
item
)
{
gotoVideoPlayerPage
(
item
)
},
handleTop
(
item
)
{
gotoVideoPlayerPage
(
item
)
},
handleBottomPlay
(
item
)
{
gotoVideoPlayerPage
(
item
)
},
handleBottomClose
()
{
this
.
newRecordBean
=
null
;
this
.
post
({
url
:
'/vedio/colseNewest'
,
data
:
{},
showLoading
:
false
,
success
:
({
data
})
=>
{}
});
},
showFirstDialog
()
{
let
that
=
this
;
let
loadEpisode_id
=
uni
.
getStorageSync
(
'tt_episode_id'
)
||
''
;
let
loadAlbum_id
=
uni
.
getStorageSync
(
'tt_album_id'
)
||
''
;
setTimeout
(()
=>
{
that
.
post
({
url
:
'/vedio/firstVedio/douyin'
,
data
:
{
episode_id
:
loadEpisode_id
,
album_id
:
loadAlbum_id
},
showLoading
:
false
,
success
:
({
data
})
=>
{
if
(
data
.
vedioMsg
!=
null
)
{
gotoVideoPlayerPage
(
data
.
vedioMsg
)
// 重置短视频挂载id
uni
.
setStorage
({
key
:
'tt_album_id'
,
data
:
''
});
uni
.
setStorage
({
key
:
'tt_episode_id'
,
data
:
''
});
}
}
});
},
800
);
}
}
};
</
script
>
<
style
lang=
"scss"
>
.body
{
background-color
:
whitesmoke
;
position
:
relative
;
}
.show-mask
{
width
:
100%
;
height
:
100%
;
background
:
rgba
(
0
,
0
,
0
,
0
.6
);
position
:
absolute
;
z-index
:
999
;
color
:
white
;
align-items
:
center
;
image
{
width
:
90%
;
}
}
.item-wrap
{
width
:
100%
;
border-radius
:
10rpx
;
background-color
:
#fff
;
break-inside
:
avoid
;
margin-bottom
:
20rpx
;
height
:
500rpx
;
}
.img
{
position
:
relative
;
border-radius
:
10rpx
;
width
:
100%
;
height
:
390rpx
;
}
</
style
>
\ No newline at end of file
vedio/components/kefu-popup/kefu-popup.vue
View file @
bd11f709
...
...
@@ -7,7 +7,7 @@
<view
class=
"content"
>
<text
style=
"font-size: 40rpx;margin-bottom: 15rpx;"
>
客服时间: 工作日9:00-18:00
</text>
<text
class=
"button1"
@
click=
"handleBtn1"
>
客服电话
</text>
<button
class=
"button2"
open-type=
"im"
data-im-id=
"
du_movie
"
>
在线客服
</button>
<button
class=
"button2"
open-type=
"im"
data-im-id=
"
kaixinhaha7785
"
>
在线客服
</button>
</view>
</view>
</uni-popup>
...
...
@@ -29,7 +29,7 @@
},
data
()
{
return
{
imId
:
"
dy1d1fub8mqd
"
imId
:
"
kaixinhaha7785
"
};
},
methods
:
{
...
...
vedio/manifest.json
View file @
bd11f709
{
"name"
:
"短剧"
,
"appid"
:
"__UNI__
D23E760
"
,
"appid"
:
"__UNI__
076053C
"
,
"description"
:
""
,
"versionName"
:
"1.0.0"
,
"versionCode"
:
1000
,
...
...
@@ -164,7 +164,7 @@
"uniStatistics"
:
{
"enable"
:
false
},
"appid"
:
"tt
de5ea8e3416e3308
01"
"appid"
:
"tt
ae10d8ad3126cfa7
01"
},
"uniStatistics"
:
{
"enable"
:
false
,
...
...
vedio/pages.json
View file @
bd11f709
{
"easycom"
:
{
"^u-(.*)"
:
"@/uni_modules/uview-ui/components/u-$1/u-$1.vue"
,
"autoscan"
:
true
,
"custom"
:
{
"^n-(.*)"
:
"@/nPro/$1/$1.vue"
,
//
匹配nPro内的vue文件
"^nx-(.*)"
:
"@/nProX/$1/$1.vue"
//
匹配nProX内的vue文件
}
},
"pages"
:
[
//
#ifndef
APP-PLUS
{
"path"
:
"pages/loading"
},
//
#endif
{
"path"
:
"pages/home"
,
"style"
:
{
"navigationBarTitleText"
:
"
巨爽短剧"
}
},
{
"path"
:
"pages/brower/brower"
}
],
//
分包配置
"subPackages"
:
[{
"root"
:
"pagesA"
,
"pages"
:
[{
"path"
:
"vipPay/vipPay"
}]
},
{
"root"
:
"pagesC"
,
"pages"
:
[{
"path"
:
"ttvideo/ttVideoDetail"
,
"usingComponents"
:
{
"tt-video-player"
:
"ext://industry/video-player"
}
},
{
"path"
:
"playlet/index"
,
"style"
:
{
"extends"
:
"ext://industry/playlet-plugin"
,
"isPageExtension"
:
true
}
}]
},
{
"root"
:
"pagesD"
,
"pages"
:
[{
"path"
:
"watchRecord/watchRecord"
,
"style"
:
{
"navigationBarTitleText"
:
"观看记录"
}
},
{
"path"
:
"payRecord/payRecord"
,
"style"
:
{
"navigationBarTitleText"
:
"我的订单"
}
},
{
"path"
:
"dotRecord/dotRecord"
,
"style"
:
{
"navigationBarTitleText"
:
"看点记录"
}
},
{
"path"
:
"useDotRecord/useDotRecord"
,
"style"
:
{
"navigationBarTitleText"
:
"消费记录"
}
}]
}
],
//
分包预载配置
"preloadRule"
:
{
//
当我们进入了pages/home页面以后就会预下载pagesA分包
"pages/home"
:
{
"network"
:
"all"
,
//在指定网络下预下载,可选值为:all(不限网络)、wifi(仅wifi下预下载)
"packages"
:
[
"pagesA"
,
"pagesC"
,
"pagesD"
]
//进入页面后预下载分包
}
},
"globalStyle"
:
{
"navigationStyle"
:
"default"
,
"navigationBarBackgroundColor"
:
"#ffffff"
,
"navigationBarTextStyle"
:
"black"
,
"backgroundColor"
:
"#f5f5f5"
,
"app-plus"
:
{
"bounce"
:
"none"
,
"scrollIndicator"
:
"none"
}
},
"condition"
:
{
//模式配置,仅开发期间生效
"current"
:
0
,
//当前激活的模式(list
的索引项)
"list"
:
[{
"name"
:
""
,
//模式名称
"path"
:
""
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
}]
}
{
"easycom"
:
{
"^u-(.*)"
:
"@/uni_modules/uview-ui/components/u-$1/u-$1.vue"
,
"autoscan"
:
true
,
"custom"
:
{
"^n-(.*)"
:
"@/nPro/$1/$1.vue"
,
//
匹配nPro内的vue文件
"^nx-(.*)"
:
"@/nProX/$1/$1.vue"
//
匹配nProX内的vue文件
}
},
"pages"
:
[
//
#ifndef
APP-PLUS
{
"path"
:
"pages/loading"
},
//
#endif
{
"path"
:
"pages/home"
,
"style"
:
{
"navigationBarTitleText"
:
"
欧拉短剧"
}
},
{
"path"
:
"pages/brower/brower"
}
],
//
分包配置
"subPackages"
:
[{
"root"
:
"pagesA"
,
"pages"
:
[{
"path"
:
"vipPay/vipPay"
}]
},
{
"root"
:
"pagesC"
,
"pages"
:
[{
"path"
:
"ttvideo/ttVideoDetail"
,
"usingComponents"
:
{
"tt-video-player"
:
"ext://industry/video-player"
}
},
{
"path"
:
"playlet/index"
,
"style"
:
{
"extends"
:
"ext://industry/playlet-plugin"
,
"isPageExtension"
:
true
}
}]
},
{
"root"
:
"pagesD"
,
"pages"
:
[{
"path"
:
"watchRecord/watchRecord"
,
"style"
:
{
"navigationBarTitleText"
:
"观看记录"
}
},
{
"path"
:
"payRecord/payRecord"
,
"style"
:
{
"navigationBarTitleText"
:
"我的订单"
}
},
{
"path"
:
"dotRecord/dotRecord"
,
"style"
:
{
"navigationBarTitleText"
:
"看点记录"
}
},
{
"path"
:
"useDotRecord/useDotRecord"
,
"style"
:
{
"navigationBarTitleText"
:
"消费记录"
}
}]
}
],
//
分包预载配置
"preloadRule"
:
{
//
当我们进入了pages/home页面以后就会预下载pagesA分包
"pages/home"
:
{
"network"
:
"all"
,
//在指定网络下预下载,可选值为:all(不限网络)、wifi(仅wifi下预下载)
"packages"
:
[
"pagesA"
,
"pagesC"
,
"pagesD"
]
//进入页面后预下载分包
}
},
"globalStyle"
:
{
"navigationStyle"
:
"default"
,
"navigationBarBackgroundColor"
:
"#ffffff"
,
"navigationBarTextStyle"
:
"black"
,
"backgroundColor"
:
"#f5f5f5"
,
"app-plus"
:
{
"bounce"
:
"none"
,
"scrollIndicator"
:
"none"
}
},
"condition"
:
{
//模式配置,仅开发期间生效
"current"
:
0
,
//当前激活的模式(list
的索引项)
"list"
:
[{
"name"
:
""
,
//模式名称
"path"
:
""
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
}]
}
}
\ No newline at end of file
vedio/pages/loading.vue
View file @
bd11f709
...
...
@@ -42,7 +42,7 @@
this
.
tips1
=
options
.
tips1
// #ifdef MP-TOUTIAO
this
.
appName
=
'
巨爽
短剧'
this
.
appName
=
'
欧拉
短剧'
// #endif
// #ifdef MP-WEIXIN
...
...
vedio/static/logo-about.png
View replaced file @
f78295dd
View file @
bd11f709
6.28 KB
|
W:
|
H:
15.7 KB
|
W:
|
H:
2-up
Swipe
Onion skin
vedio/utils/adConstant.js
View file @
bd11f709
export
const
EXPRESS_ID
=
'q1031ievmv1z3j28gs'
export
const
REWARD_ID
=
'm1qtdoeeqq9txgahk4'
\ No newline at end of file
export
const
REWARD_ID
=
'9kpbeoj3tjp5rpgmpe'
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment