合并代码

This commit is contained in:
sx 2025-01-13 21:59:03 +08:00
parent b26bd82e07
commit 0c4aaade96
19 changed files with 199 additions and 635 deletions

View File

@ -31,10 +31,11 @@
value: userinfo value: userinfo
}) })
// im
util.loginTencent(userinfo)
// //
util.getUserinfo() util.getUserinfo().then(rs => {
// im
util.loginTencent(userinfo)
})
} }
} }

View File

@ -137,32 +137,19 @@ const video = {
getCollectList(param) { getCollectList(param) {
return util.request({ return util.request({
url: `/video/collection/getfavorite`, url: `/video/collection/getfavorite`,
query: param.query, data: param.data,
method: 'GET', method: 'POST',
}) })
}, },
/** /**
* 新建收藏夹 * 添加 / 修改 收藏夹
* @param {Object} param * @param {Object} param
*/ */
saveCollectList(param) { addfavorite(param) {
return util.request({ return util.request({
url: `/video/collection/addfavorite`, url: `/video/collection/addfavorite`,
query: param.query, data: param.data,
method: 'POST',
load: true,
})
},
/**
* 编辑收藏夹
* @param {Object} param
*/
updateCollectList(param) {
return util.request({
url: `/collect/updateCollectList`,
query: param.query,
method: 'POST', method: 'POST',
load: true, load: true,
}) })
@ -172,49 +159,49 @@ const video = {
* 删除收藏夹 * 删除收藏夹
* @param {Object} param * @param {Object} param
*/ */
deleteCollect(param) { deletefavorite(param) {
return util.request({ return util.request({
url: `/collect/deleteCollect`, url: `/video/collection/deletefavorite`,
query: param.query, query: param.query,
load: true, load: true,
method: 'POST', method: 'DELETE',
}) })
}, },
/** /**
* 我的收藏视频列表 * 查询收藏夹视频
* @param {Object} param * @param {Object} param
*/ */
getCollectVideoList(param) { getFavoriteVideo(param) {
return util.request({ return util.request({
url: `/collect/getCollectVideoList`, url: `/video/collection/getFavoriteVideo`,
query: param.query, query: param.query,
load: true, load: true,
method: 'POST', method: 'GET',
}) })
}, },
/** /**
* 收藏视频 * 收藏夹添加视频
* @param {Object} param * @param {Object} param
*/ */
collectVideo(param) { collectVideo(param) {
return util.request({ return util.request({
url: `/collect/collectVideo`, url: `/video/collection/addVideo`,
query: param.query, data: param.data,
method: 'POST', method: 'POST',
load: true, load: true,
}) })
}, },
/** /**
* 取消收藏 * 取消收藏夹中的视频
* @param {Object} param * @param {Object} param
*/ */
cancelCollect(param) { deleteVideo(param) {
return util.request({ return util.request({
url: `/collect/cancelCollect`, url: `/video/collection/deleteVideo`,
query: param.query, data: param.data,
method: 'POST', method: 'POST',
load: true, load: true,
}) })
@ -253,7 +240,7 @@ const video = {
url: `/video/comment/getcomment`, url: `/video/comment/getcomment`,
query: param.query, query: param.query,
data: param.data, data: param.data,
method: 'GET', method: 'POST',
}) })
}, },
@ -273,10 +260,10 @@ const video = {
* 发表评论 * 发表评论
* @param {Object} param * @param {Object} param
*/ */
comment(param) { savecomment(param) {
return util.request({ return util.request({
url: `/home/comment`, url: `/video/comment/savecomment`,
query: param.query, data: param.data,
method: 'POST', method: 'POST',
}) })
}, },

View File

@ -73,25 +73,25 @@
/** /**
* 收藏视频 * 收藏视频
* @param {Object} collects 收藏夹对象 * @param {Object} item 收藏夹对象
*/ */
function collectVideo(collects) { function collectVideo(item) {
// //
api.video.collectVideo({ api.video.collectVideo({
query: { data: {
// id // id
videoId: detail.value.videoId, videoId: detail.value.id,
// id // id
collectId: collects.id, folderId: item.id,
isPrivate: collects.isPrivate,
} }
}).then(rs => { }).then(rs => {
console.log('collect result', rs)
if (rs.code == 200) { if (rs.code == 200) {
proxy.$refs.collect.close() proxy.$refs.collect.close()
uni.$emit('updateVideo', {
detail.value.isCollect = true ...detail.value,
detail.value.collect++ ...rs.data,
uni.$emit('updateVideo', detail.value) })
// //
collectResult.value = true collectResult.value = true

View File

@ -17,16 +17,16 @@
const { const {
proxy proxy
} = getCurrentInstance() } = getCurrentInstance()
//
class Form { class Form {
//
collectName = ''
// 01
isPrivate = 0
//
pic = ''
// id // id
collectId = '' folderId = ''
//
folderName = ''
// 01
isLock = 0
//
photographUrl = ''
} }
// //
@ -35,10 +35,11 @@
const paddingHeight = ref(0) const paddingHeight = ref(0)
onMounted(() => { onMounted(() => {
// // #ifdef APP
uni.onKeyboardHeightChange((rs) => { uni.onKeyboardHeightChange((rs) => {
paddingHeight.value = rs.height paddingHeight.value = rs.height
}) })
// #endif
}) })
onBeforeUnmount(() => { onBeforeUnmount(() => {
@ -54,10 +55,10 @@
function open(value) { function open(value) {
// //
if (value) { if (value) {
form.collectName = value.collectName form.folderName = value.folderName
form.isPrivate = value.isPrivate form.isLock = value.isLock
form.collectId = value.id form.folderId = value.id
form.pic = value.formatPic form.photographUrl = value.photographUrl
} }
proxy.$refs.addCollectRef.open() proxy.$refs.addCollectRef.open()
} }
@ -70,44 +71,37 @@
// //
function upImage() { function upImage() {
util.upload_image({ util.upload_image({
value: form.pic,
type: 1, type: 1,
success: rs => { success: rs => {
// //
form.pic = rs.value form.photographUrl = rs.value
console.log('upload rs', rs, form)
} }
}) })
} }
// //
function handlePrivate() { function handlePrivate() {
form.isPrivate = form.isPrivate == 0 ? 1 : 0 form.isLock = form.isLock == 0 ? 1 : 0
} }
// //
function handleSubmit() { function handleSubmit() {
const data = { const data = {
...form, ...form,
} }
// //
if (!form.collectName) { if (!form.photographUrl) {
util.alert('请输入收藏夹名称')
return
}
if (!form.pic) {
util.alert('请上传封面图') util.alert('请上传封面图')
return return
} }
if (!form.folderName) {
// util.alert('请输入收藏夹名称')
data.pic = util.replace_url(data.pic) return
}
let requestApi = 'saveCollectList'
if (form.collectId) requestApi = 'updateCollectList'
// //
api.video[requestApi]({ api.video.addfavorite({
query: data, data: data,
}).then(rs => { }).then(rs => {
if (rs.code == 200) { if (rs.code == 200) {
// //
@ -147,23 +141,23 @@
<!-- 收藏夹信息 --> <!-- 收藏夹信息 -->
<view class="rows fdr mtb30"> <view class="rows fdr mtb30">
<view class="pic fmid wh80 beee br10" @click="upImage"> <view class="pic fmid wh80 beee br10" @click="upImage">
<image class="wh80 br10" :src="form.pic" mode="aspectFill" v-if="form.pic" /> <image class="wh80 br10" :src="form.photographUrl" mode="aspectFill" v-if="form.photographUrl" />
<uni-icons type="plusempty" size="40rpx" v-else /> <uni-icons type="plusempty" size="40rpx" v-else />
</view> </view>
<view class="edit f1 ml20"> <view class="edit f1 ml20">
<input type="text" :adjust-position="false" v-model="form.collectName" placeholder="输入收藏夹名称" /> <input type="text" :adjust-position="false" v-model="form.folderName" placeholder="输入收藏夹名称" />
</view> </view>
</view> </view>
<!-- 公开收藏夹 --> <!-- 公开收藏夹 -->
<view class="rows fdr mtb30"> <view class="rows fdr mtb30">
<view class="df fdr aic"> <view class="df fdr aic">
<text>是否公开收藏夹</text> <text>是否快捷收藏夹</text>
<image src="/static/lock.png" mode="aspectFit" class="wh24 ml10" /> <image src="/static/lock.png" mode="aspectFit" class="wh24 ml10" />
</view> </view>
<switch class="switch" :checked="form.isPrivate == 0" color="#F85050" @change="handlePrivate" /> <switch class="switch" :checked="form.isLock == 1" color="#F85050" @change="handlePrivate" />
</view> </view>
<view :style="{height: paddingHeight + 'px',}"></view> <view :style="{height: paddingHeight + 'px',}"></view>

View File

@ -96,7 +96,8 @@
function getList() { function getList() {
// //
api.video.getCollectList({ api.video.getCollectList({
query: { data: {
isLock: '',
pageNum: listProperty.pageNum, pageNum: listProperty.pageNum,
pageSize: listProperty.pageSize, pageSize: listProperty.pageSize,
} }
@ -116,7 +117,10 @@
listProperty.total = rs.total listProperty.total = rs.total
return return
} }
util.alert(rs.msg) util.alert({
content: rs.msg,
showCancel: false,
})
}).finally(() => { }).finally(() => {
// //
showLoad.value = false showLoad.value = false
@ -129,9 +133,9 @@
* @param {Number} index 删除的收藏夹 * @param {Number} index 删除的收藏夹
*/ */
function delectList(item, index) { function delectList(item, index) {
api.video.deleteCollect({ api.video.deletefavorite({
query: { query: {
jyCollectId: item.id, folderId: item.id,
} }
}).then(rs => { }).then(rs => {
if (rs.code === 200) { if (rs.code === 200) {
@ -155,6 +159,9 @@
// //
const index = ev.index const index = ev.index
const item = listProperty.data[target] const item = listProperty.data[target]
//
proxy.$refs.swipeActionRef.closeAll()
switch (index) { switch (index) {
case 0: case 0:
// //
@ -165,13 +172,12 @@
}) })
break break
case 1: case 1:
// setTimeout(() => {
proxy.$refs.collectAddRef.open(item) //
proxy.$refs.collectAddRef.open(item)
}, 200)
break break
} }
//
proxy.$refs.swipeActionRef.closeAll()
} }
/** /**
@ -202,12 +208,12 @@
@click="handleActionItem($event,index)"> @click="handleActionItem($event,index)">
<view class="item rows fdr mlr20 ptb20" @click.stop="handleItem(item)"> <view class="item rows fdr mlr20 ptb20" @click.stop="handleItem(item)">
<view class="poster"> <view class="poster">
<image class="wh80 br20" :src="item.formatPic" mode="aspectFill" /> <image class="wh80 br20" :src="item.photographUrl" mode="aspectFill" />
</view> </view>
<view class="oh pl20"> <view class="oh pl20">
<text class="c333 f28">{{item.collectName}}</text> <text class="c333 f28">{{item.folderName}}</text>
</view> </view>
<image class="wh24 ml10" src="/static/lock.png" mode="aspectFit" v-if="item.isPrivate == 1" /> <image class="wh24 ml10" src="/static/lock.png" mode="aspectFit" v-if="item.isLock == 1" />
<view class="f1"></view> <view class="f1"></view>
</view> </view>
</uni-swipe-action-item> </uni-swipe-action-item>

View File

@ -43,6 +43,8 @@
}) })
// //
const paddingHeight = ref(0) const paddingHeight = ref(0)
//
const userinfo = computed(() => uni.$store.state.userinfo || {})
onMounted(() => { onMounted(() => {
// //
@ -52,7 +54,11 @@
}) })
onBeforeUnmount(() => { onBeforeUnmount(() => {
uni.offKeyboardHeightChange() try {
uni.offKeyboardHeightChange(() => {});
} catch (error) {
console.error('Error onBeforeUnmount', error);
}
}) })
// //
@ -67,8 +73,9 @@
function getList() { function getList() {
// //
api.video.getcomment({ api.video.getcomment({
query: { data: {
videoId: detail.id, videoId: detail.id,
parentId: 0,
pageSize: listProperty.pageSize, pageSize: listProperty.pageSize,
pageNume: listProperty.pageNum, pageNume: listProperty.pageNum,
} }
@ -111,13 +118,19 @@
} }
// //
api.video.comment({ api.video.savecomment({
query: { data: {
partentId: reply.id ? reply.id : 0, // id
videoId: detail.videoId, parentId: reply.id ? reply.id : 0,
context: content.value, // id
videoId: detail.id,
//
content: content.value,
// id
userId: userinfo.value.id,
} }
}).then(rs => { }).then(rs => {
console.log('saveComment', rs)
if (rs.code == 200) { if (rs.code == 200) {
proxy.$refs.comment.close() proxy.$refs.comment.close()
detail.comment++ detail.comment++
@ -295,18 +308,20 @@
<view class="item mtb20" v-for="(item,index) in listProperty.data" :key="index"> <view class="item mtb20" v-for="(item,index) in listProperty.data" :key="index">
<view class="df fdr"> <view class="df fdr">
<!-- 头像 --> <!-- 头像 -->
<image class="wh70 cir" :src="item.formatUserPortrait" mode="aspectFill" @click="toUser(item)" /> <image class="wh70 cir" :src="item.headPortrait" mode="aspectFill"
@click="toUser(item)" />
<view class="col ml20 f1"> <view class="col ml20 f1">
<!-- 用户信息和点赞 --> <!-- 用户信息和点赞 -->
<view class="df fdr"> <view class="df fdr">
<view class="f1"> <view class="f1">
<text class="c666 f24" @click="toUser(item)">{{item.userNickname}}</text> <text class="c666 f24" @click="toUser(item)">{{item.nickName}}</text>
<rich-text class="mt5 c333 f28" :nodes="item.context"></rich-text> <text class="mt5 c333 f28">{{item.content}}</text>
</view> </view>
<view class="like oh aic pl20" @click="handleLike(item)"> <view class="like oh aic pl20" @click="handleLike(item)">
<uni-icons type="heart-filled" :color="item.isLike ? '#F84259' : '#b3b3b3'" size="32rpx" /> <uni-icons type="heart-filled" :color="item.isLike ? '#F84259' : '#b3b3b3'"
size="32rpx" />
<text class="c333 f24">{{item.likes}}</text> <text class="c333 f24">{{item.likes}}</text>
</view> </view>
</view> </view>
@ -322,20 +337,26 @@
<template v-if="item.num != 0"> <template v-if="item.num != 0">
<!-- 子评论 --> <!-- 子评论 -->
<view class="child" v-if="item.childShow"> <view class="child" v-if="item.childShow">
<view class="df fdr mt15" v-for="(secItem,secIndex) in item.child" :key="secItem.id"> <view class="df fdr mt15" v-for="(secItem,secIndex) in item.child"
:key="secItem.id">
<!-- 头像 --> <!-- 头像 -->
<image class="wh40 cir" :src="secItem.formatUserPortrait" mode="aspectFill" @click="toUser(secItem)" /> <image class="wh40 cir" :src="secItem.formatUserPortrait"
mode="aspectFill" @click="toUser(secItem)" />
<view class="col pl20 f1"> <view class="col pl20 f1">
<!-- 用户信息和点赞 --> <!-- 用户信息和点赞 -->
<view class="df fdr"> <view class="df fdr">
<view class="f1"> <view class="f1">
<text class="c333 f24" @click="toUser(secItem)">{{secItem.userNickname}}</text> <text class="c333 f24"
<rich-text class="mt5 c333 f28" :nodes="secItem.context"></rich-text> @click="toUser(secItem)">{{secItem.userNickname}}</text>
<rich-text class="mt5 c333 f28"
:nodes="secItem.context"></rich-text>
</view> </view>
<view class="like oh aic pl20" @click="handleLike(secItem)"> <view class="like oh aic pl20" @click="handleLike(secItem)">
<uni-icons type="heart-filled" :color="secItem.isLike ? '#F84259' : '#b3b3b3'" size="32rpx" /> <uni-icons type="heart-filled"
:color="secItem.isLike ? '#F84259' : '#b3b3b3'"
size="32rpx" />
<text class="c333 f24">{{secItem.likes}}</text> <text class="c333 f24">{{secItem.likes}}</text>
</view> </view>
</view> </view>
@ -343,7 +364,8 @@
<!-- 发布时间和回复 --> <!-- 发布时间和回复 -->
<view class="df fdr mt10"> <view class="df fdr mt10">
<text class="c999 f24">{{secItem.createTime}}</text> <text class="c999 f24">{{secItem.createTime}}</text>
<text class="ml100 c666 f24" @click="handleReply(secItem)" v-if="0">回复</text> <text class="ml100 c666 f24" @click="handleReply(secItem)"
v-if="0">回复</text>
</view> </view>
</view> </view>

View File

@ -80,12 +80,11 @@
// //
function getList() { function getList() {
return
// //
api.video.getCollectList({ api.video.getCollectList({
query: { data: {
// //
isPrivate: 1, isLock: 1,
// //
pageNum: listProperty.pageNum, pageNum: listProperty.pageNum,
pageSize: listProperty.pageSize, pageSize: listProperty.pageSize,
@ -137,12 +136,11 @@
function handleCollect(item) { function handleCollect(item) {
// //
api.video.collectVideo({ api.video.collectVideo({
query: { data: {
// id // id
videoId: detail.value.videoId, videoId: detail.value.id,
// id // id
collectId: item.id, collectId: item.id,
isPrivate: item.isPrivate,
} }
}).then(rs => { }).then(rs => {
if (rs.code == 200) { if (rs.code == 200) {
@ -177,7 +175,7 @@
<view class="list fdr plr15"> <view class="list fdr plr15">
<view class="item wh70 br20" v-for="(item, index) in listProperty.data" :key="index" <view class="item wh70 br20" v-for="(item, index) in listProperty.data" :key="index"
@click="handleCollect(item)"> @click="handleCollect(item)">
<image class="wh70 br20" :src="item.formatPic" mode="aspectFill" /> <image class="wh70 br20" :src="item.photographUrl" mode="aspectFill" />
</view> </view>
<view class="item create fmid ml15 wh70 br20" @click="$refs.collectAddRef.open()"> <view class="item create fmid ml15 wh70 br20" @click="$refs.collectAddRef.open()">
<uni-icons type="plusempty" color="#fff" size="40rpx" /> <uni-icons type="plusempty" color="#fff" size="40rpx" />

View File

@ -259,7 +259,6 @@
const changedTouches = ev.changedTouches[0] const changedTouches = ev.changedTouches[0]
let x = getNumber(props.width) - getNumber(changedTouches.screenX) + getNumber(changedTouches.pageX) let x = getNumber(props.width) - getNumber(changedTouches.screenX) + getNumber(changedTouches.pageX)
let y = getNumber(changedTouches.screenY) - getNumber(changedTouches.pageY) let y = getNumber(changedTouches.screenY) - getNumber(changedTouches.pageY)
emit('showFastCollect', { emit('showFastCollect', {
item: props.item, item: props.item,
position: { position: {
@ -323,16 +322,17 @@
} }
// //
api.video.cancelCollect({ api.video.deleteVideo({
query: { data: {
// id // id
videoId: detail.videoId, videoId: detail.id,
}, },
}).then(rs => { }).then(rs => {
if (rs.code == 200) { if (rs.code == 200) {
detail.isCollect = false uni.$emit('updateVideo', {
detail.collect-- ...detail,
uni.$emit('updateVideo', detail) ...rs.data,
})
return return
} }
// //

View File

@ -115,7 +115,7 @@
<!-- 视频菜单 --> <!-- 视频菜单 -->
<view class="list"> <view class="list">
<view class="item pr" v-for="(item,index) in list" :key="index" @click="handleVideo(item)"> <view class="item pr" v-for="(item,index) in list" :key="index" @click="handleVideo(item)">
<image :src="item.format_imageUrl" mode="aspectFill" /> <image :src="item.coverUrl" mode="aspectFill" />
<view class="window pfull"></view> <view class="window pfull"></view>

View File

@ -53,6 +53,7 @@
// //
function getList() { function getList() {
return
// //
api.video.myLikeVideoList({ api.video.myLikeVideoList({
query: { query: {

View File

@ -48,6 +48,7 @@
// //
function getList() { function getList() {
return
// //
api.video.myVideoList({ api.video.myVideoList({
query: { query: {

View File

@ -129,9 +129,7 @@
return uni.$store.state.task return uni.$store.state.task
}) })
// 用户信息 // 用户信息
const userinfo = computed(() => { const userinfo = computed(() => uni.$store.state.userinfo || {})
return uni.$store.state.userinfo || {}
})
// 当前tab选中 // 当前tab选中
const tabCurrent = computed(() => { const tabCurrent = computed(() => {
return tab[tabIndex.value] return tab[tabIndex.value]
@ -286,7 +284,7 @@
pageSize: recList.pageSize, pageSize: recList.pageSize,
} }
}).then(rs => { }).then(rs => {
console.log('getRecList then rs', rs) // console.log('getRecList then rs', rs)
// 设置列表 // 设置列表
setList(rs, recList) setList(rs, recList)
}).catch(rs => { }).catch(rs => {
@ -304,7 +302,8 @@
// 总数 // 总数
obj.total = rs.total obj.total = rs.total
// 重新排序 // 重新排序
const list = rs.rows.sort(() => Math.random() - Math.random()) // const list = rs.rows.sort(() => Math.random() - Math.random())
const list = rs.rows
// 第一页清空数据 // 第一页清空数据
if (obj.pageNum == 1) obj.data.length = 0 if (obj.pageNum == 1) obj.data.length = 0
// 合并 // 合并
@ -313,7 +312,7 @@
item.readSecond = 0 item.readSecond = 0
return item return item
})) }))
console.log('result', obj.data, rs) // console.log('result', obj.data, rs)
// 如果有多的视频 并且当前数据为一条 // 如果有多的视频 并且当前数据为一条
// if (obj.total > 1 && obj.data.length <= 1) getMoreRecList() // if (obj.total > 1 && obj.data.length <= 1) getMoreRecList()
@ -364,17 +363,20 @@
const taskValue = task.value const taskValue = task.value
console.log('browseLog result', rs, taskValue) console.log('browseLog result', rs, taskValue)
// 如果原来任务是优先任务 当前任务是有效读秒 // 如果不是第一次统计
if (taskValue.taskType == 0 && result.taskType == 1) { if (taskValue.viewingDuration != 0) {
// 优先任务完成 播放烟花动画 // 如果原来任务是优先任务 当前任务是有效读秒
console.log('优先任务完成 播放烟花动画') if (taskValue.taskType == 0 && result.taskType == 1) {
handleCompleteMode('complete1') // 优先任务完成 播放烟花动画
} console.log('优先任务完成 播放烟花动画')
// 如果原来任务任务是有效读秒 并且新返回的数据小于当前的任务进度 handleCompleteMode('complete1')
else if (result.taskType == 1 && (result.viewingDuration < taskValue }
.viewingDuration)) { // 如果原来任务任务是有效读秒 并且新返回的数据小于当前的任务进度
console.log('有效读秒完成 播放任务完成动画') else if (result.taskType == 1 && (result.viewingDuration < taskValue
handleCompleteMode('complete2') .viewingDuration)) {
console.log('有效读秒完成 播放任务完成动画')
handleCompleteMode('complete2')
}
} }
// //
@ -557,6 +559,14 @@
proxy.$refs.collectRef.open(item) proxy.$refs.collectRef.open(item)
} }
/**
* 打开快速收藏弹窗
* @param {Object} ev 视频对象和节点位置信息
*/
function handleShowFastCollect(ev) {
proxy.$refs.fastCollectRef.open(ev)
}
/** /**
* 打开分享给好友弹窗 * 打开分享给好友弹窗
* @param {Object} item 当前列表项 * @param {Object} item 当前列表项
@ -603,12 +613,7 @@
isDelFlag: param.isDelFlag, isDelFlag: param.isDelFlag,
} }
}).then(rs => { }).then(rs => {
console.log('request', rs)
if (rs.code == 200) { if (rs.code == 200) {
console.log('item', {
...item,
...rs.data,
})
uni.$emit('updateVideo', { uni.$emit('updateVideo', {
...item, ...item,
...rs.data, ...rs.data,
@ -724,7 +729,7 @@
@showTime="handleShowTime" @showComment="handleShowCommentAlt" @showTime="handleShowTime" @showComment="handleShowCommentAlt"
@showCollect="handleShowCollectAlt" @showShareFirend="handleShowShareFirend" @showCollect="handleShowCollectAlt" @showShareFirend="handleShowShareFirend"
@onPlay="handleVideoOnPlay" @onPause="handleVideoOnPause" @like="videoLike" @onPlay="handleVideoOnPlay" @onPause="handleVideoOnPause" @like="videoLike"
@longtap="$refs.moreMenuRef.open(secItem)" /> @longtap="$refs.moreMenuRef.open(secItem)"@showFastCollect="handleShowFastCollect" />
</template> </template>
</cell> </cell>
</list> </list>

View File

@ -74,12 +74,10 @@
// //
function getList() { function getList() {
// //
api.video.getCollectVideoList({ api.video.getFavoriteVideo({
query: { query: {
// id // id
collectId: collectId.value, folderId: collectId.value,
// id
userId: userId.value || '',
pageSize: list.pageSize, pageSize: list.pageSize,
pageNum: list.pageNum, pageNum: list.pageNum,
}, },

View File

@ -66,7 +66,7 @@
} }
]) ])
// //
const tabIndex = ref(0) const tabIndex = ref(2)
// tab // tab
const tabCurrent = computed(() => { const tabCurrent = computed(() => {
let result = tabList[tabIndex.value] let result = tabList[tabIndex.value]
@ -137,7 +137,7 @@
uni.navigateTo({ uni.navigateTo({
url: util.setUrl('/pages/mine/collectsVideo', { url: util.setUrl('/pages/mine/collectsVideo', {
collectId: item.id, collectId: item.id,
collectName: item.collectName, collectName: item.folderName,
}) })
}) })
} }
@ -307,23 +307,6 @@
<!-- 收藏列表按钮 --> <!-- 收藏列表按钮 -->
<collectList ref="collectRef" @handleItem="handleCollectsItem" /> <collectList ref="collectRef" @handleItem="handleCollectsItem" />
</view> </view>
<!-- 历史 -->
<view class="history" v-show="tabIndex === 3" v-if="0">
<view class="list">
<view class="item pr" v-for="(item, index) in 9" :key="index">
<image src="https://bkimg.cdn.bcebos.com/pic/d833c895d143ad4bd113ee65b4554dafa40f4bfba845"
mode="aspectFill" />
<view class="window pfull"></view>
<view class="amount pa l0 r0 b0 df ptb10 plr10">
<image class="wh24" src="/static/amount.png" mode="aspectFit" />
<view class="txt f1 ml10 cfff f20">6541</view>
</view>
</view>
</view>
</view>
</view> </view>
</view> </view>

View File

@ -140,6 +140,7 @@
// //
function addListener() { function addListener() {
let onMessageReceived = function(event) { let onMessageReceived = function(event) {
console.log('TencentCloudChat.EVENT.MESSAGE_RECEIVED', event)
setTimeout(() => { setTimeout(() => {
// //
getHistory({ getHistory({
@ -359,6 +360,11 @@
redPacketId: redPacket.id, redPacketId: redPacket.id,
// id // id
userId: userinfo.value.id, userId: userinfo.value.id,
//
sendType: {
'C2C': '1',
'GROUP': '2',
} [msg.type],
} }
}).then(rs => { }).then(rs => {
if (rs.code == 200) { if (rs.code == 200) {
@ -522,7 +528,7 @@
</view> </view>
<view class="ml15 f32">{{redPacket.fromName}}的红包</view> <view class="ml15 f32">{{redPacket.fromName}}的红包</view>
</view> </view>
<view class="app_name mt15 tac f40">{{ redPacket.blessing }}</view> <view class="app_name mt15 mlr30 tac f40">{{ redPacket.blessing }}</view>
<!-- --> <!-- -->
<view class="cfff f32 tac mt50" v-if="redPacket.isStale == 1">红包已过期</view> <view class="cfff f32 tac mt50" v-if="redPacket.isStale == 1">红包已过期</view>
<view class="cfff f32 tac mt50" v-else-if="redPacket.remainingCount == 0">来晚啦红包已被抢完</view> <view class="cfff f32 tac mt50" v-else-if="redPacket.remainingCount == 0">来晚啦红包已被抢完</view>

View File

@ -13,7 +13,6 @@
} from 'vue' } from 'vue'
import NewsAudio from '@/static/audio.png' import NewsAudio from '@/static/audio.png'
import JyCommodityInformation from '@/components/public/jy-commodity-information' import JyCommodityInformation from '@/components/public/jy-commodity-information'
import resEnvlope from '../red-envelope'
const props = defineProps({ const props = defineProps({
item: { item: {
type: Object, type: Object,
@ -142,7 +141,7 @@
<view class="redPacket br10" :class="{'disabled': 0}" <view class="redPacket br10" :class="{'disabled': 0}"
@click="handleOpenRedBag"> @click="handleOpenRedBag">
<view class="df aic"> <view class="df aic">
<image class="img mr10" src="/static/image/red-envelope.png" /> <image class="img fs0 mr10" src="/static/image/red-envelope.png" />
<view class="red-packet-text cfff">{{ formatData.data.blessing }}</view> <view class="red-packet-text cfff">{{ formatData.data.blessing }}</view>
</view> </view>
<!-- 分割线 --> <!-- 分割线 -->

View File

@ -1,436 +0,0 @@
<!-- 活动红包 -->
<template>
<view class="red-bag">
<!-- 红包 -->
<view class="message-content" @click="openCover">
<view class="df aic">
<image class="img mr10" src="/static/image/red-envelope.png" />
<view class="red-packet-text">{{ dataItem.payload.data.name }}</view>
</view>
<!-- 分割线 -->
<view class="line"></view>
<view class="f20" style="color:#FBD3A4">{{ dataItem.payload.data.type == 1 ? '积分红包' : '余额红包' }}</view>
</view>
</view>
</template>
<script>
import api from '@/api/index'
import {
mapState
} from 'vuex';
export default {
inject: ['util'],
props: {
dataItem: {
type: Object,
default: () => {
{}
}
},
},
data() {
// console.log('====================================');
// console.log(this.dataItem);
// console.log('====================================');
let {
userName,
userPortrait
} = uni.getStorageSync('toUser') || {
userName: null,
userPortrait: null
};
return {
status: 'success',
openTime: undefined,
defConfig: {
userImg: userPortrait,
userName: userName,
coverTitle: '恭喜发财',
openTitle: '恭喜您获得',
openTips: '已存入钱包,可直接提现',
btnText: '查看我的钱包'
}, //
rbagmodelshow: false, //
openrbagmodelshow: false, //
openbrnanimation: {}, //
digitalData: [], //
redValue: null
}
},
computed: {
//
config() {
const result = Object.assign(this.defConfig)
return result
}
},
methods: {
openCover() {
//
if (this.dataItem.from == this.userinfo.userId) {
this.util.checkLink(`pages/news/red-envelope/index?bagId=${this.dataItem.ext.id}`)
} else {
this.rbagmodelshow = true
}
},
// =>
openBtn() {
let duration = 1000
let animation = uni.createAnimation({
duration,
timingFunction: 'ease'
})
this.openbrnanimation = animation
animation.rotateY(360).step()
this.openbrnanimation = animation.export()
setTimeout(() => {
this.rbagmodelshow = false
this.openbrnanimation = undefined
//
this.$nextTick(() => {
api.news.grabred({
id: this.dataItem.ext.id
}).then(res => {
console.log(res);
if (res.code == 500) {
//
this.status = 'error'
this.defConfig.coverTitle = '恭喜发财';
this.defConfig.openTitle = '恭喜您获得';
this.defConfig.openTips = res.msg;
this.defConfig.btnText = '领取记录'
this.openrbagmodelshow = true
}
if (res.code == 200) {
let money = null
this.redValue = res.data
switch (res.data.type) {
//
case 1:
money = res.data.score
break;
//
case 2:
money = res.data.balance
break;
default:
break;
}
this.status = 'success'
this.rbagmodelshow = false
this.openrbagmodelshow = true
this.openbrnanimation = {}
this.setMoney(money)
}
})
})
}, duration)
},
//
onConfirm() {
this.util.checkLink(`pages/news/red-envelope/index?bagId=${this.dataItem.ext.id}`)
this.onClose()
},
//
onClose() {
this.rbagmodelshow = false
this.openrbagmodelshow = false
this.$emit('onClose') //
},
//
setMoney(money) {
const digitalArr = String(money).split('')
const dataList = []
digitalArr.forEach((num) => {
const obj = {
num: isNaN(num) ? num : Number(num),
style: ''
}
dataList.push(obj)
})
this.digitalData = dataList
},
}
}
</script>
<style lang="scss" scoped>
@keyframes bagAni {
0% {
transform: rotate(6deg);
}
100% {
transform: rotate(36deg);
}
}
.message-content {
width: 360rpx;
padding: 24rpx;
background: rgb(248, 162, 60);
color: #FCFEFD;
border-radius: 10rpx;
.img {
width: 50rpx;
height: 60rpx;
margin-right: 10rpx;
}
.line {
width: 100%;
height: 1px;
background: #EF9B45;
margin: 10rpx 0;
display: inline-block;
}
}
.red-bag {
.bag-btn {
position: fixed;
left: -46rpx;
top: 360rpx;
width: 150rpx;
height: 100rpx;
z-index: 999;
animation-name: bagAni;
animation-duration: 1.1s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
//
.rbag-model {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100vh;
background-color: rgba(0, 0, 0, 0.3);
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
.rbag-con {
position: relative;
width: 80%;
height: 840rpx;
background-color: #da4d44;
border-radius: 14rpx;
box-shadow: 0rpx 0rpx 10rpx rgba(0, 0, 0, 0.2);
.rbag-box {
position: relative;
width: 100%;
height: 100%;
border-radius: 14rpx;
overflow: hidden;
}
.rbag_top {
position: absolute;
left: -20%;
top: 0;
width: 140%;
height: 540rpx;
background-color: #e0534a;
border-radius: 0 0 50% 50%;
box-shadow: 0 0 14rpx rgba(0, 0, 0, 0.4);
z-index: 1001;
.rbag_top_info {
margin-top: 60rpx;
.rbag_logo {
width: 160rpx;
height: 160rpx;
border-radius: 50%;
display: block;
margin: 0 auto;
overflow: hidden;
}
.app_name {
font-size: 38rpx;
color: #f6ac96;
text-align: center;
margin-top: 18rpx;
letter-spacing: 1rpx;
}
.rbag_tips {
font-size: 50rpx;
color: #edddd3;
text-align: center;
margin-top: 34rpx;
letter-spacing: 1rpx;
}
}
}
.open_rbag_btn {
position: absolute;
top: 450rpx;
left: 0;
right: 0;
width: 180rpx;
height: 180rpx;
line-height: 180rpx;
border-radius: 50%;
margin: 0 auto;
text-align: center;
background-color: #ffd287;
font-size: 55rpx;
color: #fef5e8;
box-shadow: 2rpx 2rpx 6rpx rgba(0, 0, 0, 0.2);
z-index: 1002;
}
.hide_btn {
position: absolute;
bottom: -110rpx;
left: 0;
right: 0;
width: 90rpx;
height: 90rpx;
margin: 0 auto;
}
}
}
//
.open_rbag_model {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100vh;
background-color: rgba(0, 0, 0, 0.3);
z-index: 1000;
.rbag_conbg {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 80%;
height: 840rpx;
margin: auto;
z-index: 1001;
}
.open_rbag_con {
z-index: 1002;
.open_title {
height: 120rpx;
line-height: 120rpx;
text-align: center;
font-size: 38rpx;
letter-spacing: 2rpx;
color: #e46965;
}
.rbag_detail {
margin-top: 90rpx;
.open_money {
text-align: center;
font-size: 80rpx;
color: #c95948;
font-weight: bold;
display: flex;
justify-content: center;
.danwei {
font-size: 30rpx;
margin-left: 16rpx;
margin-top: 24rpx;
}
}
.open_tips {
text-align: center;
font-size: 30rpx;
color: #d26762;
margin-top: 30rpx;
}
}
.lookbag_box {
margin-top: 300rpx;
display: flex;
justify-content: center;
.lookbag_btn {
width: 70%;
height: 90rpx;
line-height: 90rpx;
text-align: center;
font-size: 32rpx;
color: #c95948;
letter-spacing: 2rpx;
background-color: #ffd356;
border-radius: 50rpx;
box-shadow: 0rpx 0rpx 4rpx rgba(0, 0, 0, 0.2);
}
}
.hide_btn {
position: absolute;
bottom: -110rpx;
left: 0;
right: 0;
width: 80rpx;
height: 80rpx;
line-height: 80rpx;
text-align: center;
margin: 0 auto;
}
}
}
}
.digital-scroll {
font-size: 28rpx;
font-weight: bold;
display: flex;
align-items: center;
.digital {
display: flex;
justify-content: center;
width: 0.7em; // 0.7em
height: 1em;
line-height: 1em;
overflow: hidden;
.scroll-num {
//
writing-mode: vertical-rl;
text-orientation: upright;
.tra-num {
transition: all 1s;
}
}
}
.digitalStr {
width: auto;
line-height: 1em;
}
}
</style>

View File

@ -44,7 +44,7 @@
// //
const typeList = reactive([{ const typeList = reactive([{
id: 2, id: 0,
name: '普通红包', name: '普通红包',
}, { }, {
id: 1, id: 1,
@ -159,7 +159,7 @@
console.log('data', data) console.log('data', data)
// //
api.news.sendRedPacket({ api.news.sendRedPacket({
query: { query: {
// //
@ -182,12 +182,6 @@
// //
function handleSend() { function handleSend() {
//
const data = {
...form
}
// //
proxy.$refs.payPwdRef.open() proxy.$refs.payPwdRef.open()
} }
@ -234,9 +228,9 @@
</view> </view>
<view class="form-group rows mtb30 bfff"> <view class="form-group rows mtb30 bfff">
<text>祝福语</text> <text class="fs0">祝福语</text>
<view class="f1 tar"> <view class="f1 tar">
<input class="f34" type="text" v-model="form.name" :placeholder="greeting" /> <textarea class="textarea f34" maxlength="100" auto-height="auto" v-model="form.blessing" :placeholder="greeting" />
</view> </view>
</view> </view>
@ -274,4 +268,9 @@
color: #fff; color: #fff;
} }
} }
//
.textarea {
width: 100%;
}
</style> </style>

View File

@ -11,38 +11,38 @@ export default defineConfig({
proxy: { proxy: {
"/system": { "/system": {
// target: "http://192.168.0.189:8080", // target: "http://192.168.0.189:8080",
// target: "http://192.168.0.102:8080", target: "http://192.168.0.102:8080",
target: "http://192.168.0.129:8080", // target: "http://192.168.0.129:8080",
changeOrigin: true, changeOrigin: true,
}, },
"/shopify": { "/shopify": {
// target: "http://192.168.0.189:8080", // target: "http://192.168.0.189:8080",
// target: "http://192.168.0.102:8080", target: "http://192.168.0.102:8080",
target: "http://192.168.0.129:8080", // target: "http://192.168.0.129:8080",
changeOrigin: true, changeOrigin: true,
}, },
"/user": { "/user": {
// target: "http://192.168.0.189:8080", // target: "http://192.168.0.189:8080",
// target: "http://192.168.0.102:8080", target: "http://192.168.0.102:8080",
target: "http://192.168.0.129:8080", // target: "http://192.168.0.129:8080",
changeOrigin: true, changeOrigin: true,
}, },
"/coreplay": { "/coreplay": {
// target: "http://192.168.0.189:8080", // target: "http://192.168.0.189:8080",
// target: "http://192.168.0.102:8080", target: "http://192.168.0.102:8080",
target: "http://192.168.0.129:8080", // target: "http://192.168.0.129:8080",
changeOrigin: true, changeOrigin: true,
}, },
"/file": { "/file": {
// target: "http://192.168.0.189:8080", // target: "http://192.168.0.189:8080",
// target: "http://192.168.0.102:8080", target: "http://192.168.0.102:8080",
target: "http://192.168.0.129:8080", // target: "http://192.168.0.129:8080",
changeOrigin: true, changeOrigin: true,
}, },
"/video": { "/video": {
// target: "http://192.168.0.189:8080", // target: "http://192.168.0.189:8080",
// target: "http://192.168.0.102:8080", target: "http://192.168.0.102:8080",
target: "http://192.168.0.129:8080", // target: "http://192.168.0.129:8080",
changeOrigin: true, changeOrigin: true,
}, },
} }