|                                                                                                                                                                                                                                                                          |  | <template>	<view class="instant-gift">		<navbar title="立即送礼" leftClick @leftClick="$utils.navigateBack" />				<!-- 主图片展示区 -->		<view class="main-image">			<image :src="selectedGift.image" mode="aspectFill"></image>		</view>				<!-- 礼品选择列表 -->		<scroll-view scroll-x class="gift-list">			<view 				class="gift-item" 				v-for="(item, index) in giftList" 				:key="index"				:class="{ active: selectedIndex === index }"				@click="selectGift(index)"			>				<image :src="item.image" mode="aspectFill"></image>				<text class="gift-name">{{item.title}}</text>			</view>		</scroll-view>				<!-- 祝福语区域 -->		<view class="blessing-area">			<view class="blessing-header">                <view class="blessing-title">送祝福给TA</view>                <view class="refresh-btn" @click="getRiceBlessingWords">                    <uv-icon name="reload" size="32" color="#666"></uv-icon>                    <text>换一个</text>                </view>            </view>			<view class="blessing-input">				<input type="text" v-model="blessing" :placeholder="giveTitle" />			</view>		</view>				<!-- 底部区域 -->		<view class="bottom-area">			<!-- <view class="countdown">距离礼包失效:{{countdownText}}</view> -->			<button class="send-btn" 			open-type="share"			@click="submit">立即送礼</button>		</view>	</view></template>
<script>	export default {		data() {			return {				selectedIndex: 0,				blessing: '',				countdown: 24 * 60 * 60, // 倒计时秒数
				countdownTimer: null,				giftList: [],                giveTitle : '',                id : 0,			}		},		computed: {			selectedGift() {				return this.giftList[this.selectedIndex]			},			countdownText() {				const hours = Math.floor(this.countdown / 3600)				const minutes = Math.floor((this.countdown % 3600) / 60)				const seconds = this.countdown % 60				return `${hours}时${minutes}分${seconds}秒`			}		},		onShareAppMessage(res) {		    return this.getShareData(res)		},		//2.分享到朋友圈
		onShareTimeline(res) {		    return this.getShareData(res)		},		methods: {			getShareData(res){				let o = {					title : `${this.configList.logo_name}用户${this.userInfo.nickName}挑选了1份礼物送给你,请收下这份心意`,					path : '/pages_order/order/receiveGift?id=' + this.id,					imageUrl : this.giftList[this.selectedIndex].image,				}				if(this.userInfo.id){					o.path += '&shareId=' + this.userInfo.id				}				return o			},			navigateBack() {				uni.navigateBack()			},			selectGift(index) {				this.selectedIndex = index			},            // 获取祝福背景图
            getRiceBlessing(){                this.$api('getRiceBlessing')                .then(res => {                   if(res.code == 200){                       this.giftList = res.result                   }               })            },            // 随机获取祝福语
            getRiceBlessingWords(){                this.$api('getRiceBlessingWords')                .then(res => {                   if(res.code == 200){                       this.giveTitle = res.result                   }               })            },			startCountdown() {				this.countdownTimer = setInterval(() => {					if (this.countdown > 0) {						this.countdown--					} else {						clearInterval(this.countdownTimer)					}				}, 1000)			},            submit(){                this.$api('updateOrderBlessing', {					orderId : this.id,                    giveTitle : this.blessing || this.giveTitle,                    giveImage : this.giftList[this.selectedIndex].image,                }).then(res => {                    if(res.code == 200){                        // 调用微信小程序转发功能
                                            }                })            },		},        onLoad(args){            this.id = args.id        },		mounted() {			// this.startCountdown()
            this.getRiceBlessing()            this.getRiceBlessingWords()		},		beforeDestroy() {			if (this.countdownTimer) {				clearInterval(this.countdownTimer)			}		}	}</script>
<style lang="scss" scoped>.instant-gift {	min-height: 100vh;	background: #fff;		.nav-header {		display: flex;		align-items: center;		height: 88rpx;		padding: 0 30rpx;				.back-icon, .more-icon {			width: 60rpx;			text-align: center;		}				.title {			flex: 1;			text-align: center;			font-size: 32rpx;			font-weight: 500;		}	}		.main-image {		width: 100%;		height: 400rpx;				image {			width: 100%;			height: 100%;		}	}		.gift-list {		padding: 30rpx;		white-space: nowrap;				.gift-item {			display: inline-block;			width: 200rpx;			margin-right: 20rpx;			text-align: center;			position: relative;			z-index: 1;            border: 4rpx solid transparent;            padding: 0 10rpx 10rpx 10rpx;						&.active {				position: relative;				z-index: 2;				border: 4rpx solid $uni-color;				border-radius: 12rpx;			}						image {				width: 100%;				height: 200rpx;				border-radius: 12rpx;			}						.gift-name {				display: block;				font-size: 28rpx;				margin-top: 10rpx;			}		}	}		.blessing-area {		padding: 30rpx;				.blessing-header {            display: flex;            justify-content: space-between;            align-items: center;            margin-bottom: 20rpx;                        .blessing-title {                font-size: 30rpx;                color: #666;            }                        .refresh-btn {                display: flex;                align-items: center;                color: #666;                font-size: 26rpx;                                text {                    margin-left: 6rpx;                }            }        }				.blessing-input {			background: #FFF5F5;			padding: 20rpx;			border-radius: 12rpx;			border: 2rpx solid #FFE0E0;						input {				width: 100%;				height: 60rpx;				color: #333;				font-size: 28rpx;			}		}	}		.bottom-area {		position: fixed;		left: 0;		bottom: 0;		width: 100%;        box-sizing: border-box;		padding: 20rpx 30rpx calc(30rpx + env(safe-area-inset-bottom)) 30rpx;		background: #fff;		box-shadow: 0 -2rpx 10rpx rgba(0,0,0,0.05);		z-index: 10;				.countdown {			text-align: center;			font-size: 28rpx;			color: #666;			margin-bottom: 20rpx;			font-weight: 500;		}				.send-btn {			width: calc(100%);			height: 88rpx;			line-height: 88rpx;			background: linear-gradient(to right, #FF4B4B, $uni-color);			color: #fff;			border-radius: 44rpx;			font-size: 32rpx;			font-weight: 500;		}	}}</style>
 |