Files
cashier/fuintUniapp/pages/prestore/buy.vue
砂糖 8015759c65 init
2026-02-07 18:01:13 +08:00

217 lines
6.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view v-show="!isLoading" class="container">
<!-- 卡券信息 -->
<view v-if="!isLoading" class="coupon-info m-top20">
<!-- 标题分享 -->
<view class="info-item info-item__name dis-flex flex-y-center">
<view class="coupon-name flex-box">
<text class="twolist-hidden">{{ couponInfo.name }}</text>
</view>
<!-- #ifdef MP-WEIXIN -->
<view class="coupon-share__line"></view>
<view class="coupon-share">
<button class="share-btn dis-flex flex-dir-column" open-type="share">
<text class="share__icon iconfont icon-fenxiang"></text>
<text class="f-24">分享</text>
</button>
</view>
<!-- #endif -->
</view>
<!-- 卡券预存规则 -->
<view class="store-rule">
<view class="title">预存规则</view>
<view v-for="(item, index) in storeRule" :key="index" class="item">
<text>预存{{ item.store }} 到账 {{ item.upStore }}</text>
</view>
</view>
<view class="info-item">
<text>已有<text class="number">{{ couponInfo.gotNum }}</text>人预存剩余<text class="number">{{ couponInfo.limitNum }}</text>名额</text>
</view>
<view class="info-item">
<text>有效期{{ couponInfo.effectiveDate }}</text>
</view>
</view>
<!-- 选择卡券规格 -->
<view class="coupon-choice m-top20 b-f" @click="onShowPopup()">
<view class="spec-list">
<view class="flex-box">
<text class="col-8">选择</text>
<text class="spec-name" key="index">预存金额数量</text>
</view>
<view class="f-26 col-9 t-r">
<text class="iconfont icon-xiangyoujiantou"></text>
</view>
</view>
</view>
<!-- 预存选项弹窗 -->
<Popup v-if="!isLoading" v-model="showPopup" :couponInfo="couponInfo" :storeRule="storeRule"/>
<!-- 卡券描述 -->
<view v-if="!isLoading" class="coupon-content m-top20">
<view class="item-title b-f">
<text>卡券描述</text>
</view>
<block v-if="couponInfo.description != ''">
<view class="coupon-content-detail b-f">
<jyf-parser :html="couponInfo.description"></jyf-parser>
</view>
</block>
<empty v-else tips="亲,暂无卡券描述" />
</view>
<!-- 底部选项卡 -->
<view class="footer-fixed">
<view class="footer-container">
<!-- 导航图标 -->
<view class="foo-item-fast">
<!-- 客服 (仅微信小程序端显示) -->
<!-- #ifdef MP-WEIXIN -->
<button class="btn-normal" open-type="contact">
<view class="fast-item">
<view class="fast-icon">
<text class="iconfont icon-kefu1"></text>
</view>
<view class="fast-text">
<text>客服</text>
</view>
</view>
</button>
<!-- #endif -->
</view>
<!-- 操作按钮 -->
<view class="foo-item-btn">
<view class="btn-wrapper">
<view class="btn-item btn-item-main" @click="onShowPopup()">
<text>立即预存</text>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import * as CouponApi from '@/api/coupon'
import jyfParser from '@/components/jyf-parser/jyf-parser'
import Shortcut from '@/components/shortcut'
import Popup from './components/Popup'
export default {
components: {
jyfParser,
Shortcut,
Popup
},
data() {
return {
// 正在加载
isLoading: true,
// 当前卡券ID
couponId: null,
// 卡券详情
couponInfo: null,
// 预存规则
storeRule: [],
// 显示/隐藏弹窗
showPopup: false
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
// 卡券ID
this.couponId = parseInt(options.couponId)
// 加载页面数据
this.onRefreshPage()
},
methods: {
// 刷新页面数据
onRefreshPage() {
const app = this
app.isLoading = true
Promise.all([app.getCouponDetail()])
.finally(() => app.isLoading = false)
},
// 获取卡券信息
getCouponDetail() {
const app = this
return new Promise((resolve, reject) => {
CouponApi.detail(app.couponId)
.then(result => {
app.couponInfo = result.data
let ruleItem = app.couponInfo.inRule.split(",");
ruleItem.forEach(function(item) {
let rule = item.split("_")
app.storeRule.push({"store": rule[0], "upStore": rule[1]})
})
resolve(result)
})
.catch(err => reject(err))
})
},
/**
* 显示/隐藏预存弹窗
*/
onShowPopup() {
this.showPopup = !this.showPopup
},
// 跳转到首页
onTargetHome(e) {
this.$navTo('pages/index/index')
}
},
/**
* 分享当前页面
*/
onShareAppMessage() {
const app = this
// 构建页面参数
const params = app.$getShareUrlParams({
couponId: app.couponId
})
return {
title: app.couponInfo.name,
path: `/pages/prestore/buy?${params}`
}
},
/**
* 分享到朋友圈
* 本接口为 Beta 版本,暂只在 Android 平台支持,详见分享到朋友圈 (Beta)
* https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share-timeline.html
*/
onShareTimeline() {
const app = this
// 构建页面参数
const params = app.$getShareUrlParams({
couponId: app.couponId,
})
return {
title: app.couponInfo.name,
path: `/pages/prestore/buy?${params}`
}
}
}
</script>
<style>
page {
background: #fafafa;
}
</style>
<style lang="scss" scoped>
@import "./buy.scss";
</style>