|
|
- <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>
|