合并代码

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
})
//
util.getUserinfo().then(rs => {
// im
util.loginTencent(userinfo)
//
util.getUserinfo()
})
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -43,6 +43,8 @@
})
//
const paddingHeight = ref(0)
//
const userinfo = computed(() => uni.$store.state.userinfo || {})
onMounted(() => {
//
@ -52,7 +54,11 @@
})
onBeforeUnmount(() => {
uni.offKeyboardHeightChange()
try {
uni.offKeyboardHeightChange(() => {});
} catch (error) {
console.error('Error onBeforeUnmount', error);
}
})
//
@ -67,8 +73,9 @@
function getList() {
//
api.video.getcomment({
query: {
data: {
videoId: detail.id,
parentId: 0,
pageSize: listProperty.pageSize,
pageNume: listProperty.pageNum,
}
@ -111,13 +118,19 @@
}
//
api.video.comment({
query: {
partentId: reply.id ? reply.id : 0,
videoId: detail.videoId,
context: content.value,
api.video.savecomment({
data: {
// id
parentId: reply.id ? reply.id : 0,
// id
videoId: detail.id,
//
content: content.value,
// id
userId: userinfo.value.id,
}
}).then(rs => {
console.log('saveComment', rs)
if (rs.code == 200) {
proxy.$refs.comment.close()
detail.comment++
@ -295,18 +308,20 @@
<view class="item mtb20" v-for="(item,index) in listProperty.data" :key="index">
<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="df fdr">
<view class="f1">
<text class="c666 f24" @click="toUser(item)">{{item.userNickname}}</text>
<rich-text class="mt5 c333 f28" :nodes="item.context"></rich-text>
<text class="c666 f24" @click="toUser(item)">{{item.nickName}}</text>
<text class="mt5 c333 f28">{{item.content}}</text>
</view>
<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>
</view>
</view>
@ -322,20 +337,26 @@
<template v-if="item.num != 0">
<!-- 子评论 -->
<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="df fdr">
<view class="f1">
<text class="c333 f24" @click="toUser(secItem)">{{secItem.userNickname}}</text>
<rich-text class="mt5 c333 f28" :nodes="secItem.context"></rich-text>
<text class="c333 f24"
@click="toUser(secItem)">{{secItem.userNickname}}</text>
<rich-text class="mt5 c333 f28"
:nodes="secItem.context"></rich-text>
</view>
<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>
</view>
</view>
@ -343,7 +364,8 @@
<!-- 发布时间和回复 -->
<view class="df fdr mt10">
<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 File

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

View File

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

View File

@ -115,7 +115,7 @@
<!-- 视频菜单 -->
<view class="list">
<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 File

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

View File

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

View File

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

View File

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

View File

@ -66,7 +66,7 @@
}
])
//
const tabIndex = ref(0)
const tabIndex = ref(2)
// tab
const tabCurrent = computed(() => {
let result = tabList[tabIndex.value]
@ -137,7 +137,7 @@
uni.navigateTo({
url: util.setUrl('/pages/mine/collectsVideo', {
collectId: item.id,
collectName: item.collectName,
collectName: item.folderName,
})
})
}
@ -307,23 +307,6 @@
<!-- 收藏列表按钮 -->
<collectList ref="collectRef" @handleItem="handleCollectsItem" />
</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 File

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

View File

@ -13,7 +13,6 @@
} from 'vue'
import NewsAudio from '@/static/audio.png'
import JyCommodityInformation from '@/components/public/jy-commodity-information'
import resEnvlope from '../red-envelope'
const props = defineProps({
item: {
type: Object,
@ -142,7 +141,7 @@
<view class="redPacket br10" :class="{'disabled': 0}"
@click="handleOpenRedBag">
<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>
<!-- 分割线 -->

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([{
id: 2,
id: 0,
name: '普通红包',
}, {
id: 1,
@ -159,7 +159,7 @@
console.log('data', data)
//
//
api.news.sendRedPacket({
query: {
//
@ -182,12 +182,6 @@
//
function handleSend() {
//
const data = {
...form
}
//
proxy.$refs.payPwdRef.open()
}
@ -234,9 +228,9 @@
</view>
<view class="form-group rows mtb30 bfff">
<text>祝福语</text>
<text class="fs0">祝福语</text>
<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>
@ -274,4 +268,9 @@
color: #fff;
}
}
//
.textarea {
width: 100%;
}
</style>

View File

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