|
|
@@ -54,12 +54,45 @@
|
|
|
</button>
|
|
|
<text class="cancel-link" @click="onCancelOrder">取消订单</text>
|
|
|
</view>
|
|
|
+
|
|
|
+ <!-- Post-payment Upgrade Card -->
|
|
|
+ <view v-if="showUpgradeCard" class="upgrade-card">
|
|
|
+ <view class="upgrade-card-header">
|
|
|
+ <text class="upgrade-card-icon">🎉</text>
|
|
|
+ <text class="upgrade-card-title">支付成功!开通家庭会员更划算</text>
|
|
|
+ </view>
|
|
|
+ <view class="upgrade-card-body">
|
|
|
+ <view class="upgrade-benefit-row">
|
|
|
+ <text class="upgrade-benefit-icon">✓</text>
|
|
|
+ <text class="upgrade-benefit-text">全场商品享受会员专享价</text>
|
|
|
+ </view>
|
|
|
+ <view class="upgrade-benefit-row">
|
|
|
+ <text class="upgrade-benefit-icon">✓</text>
|
|
|
+ <text class="upgrade-benefit-text">不限次一对一成长咨询服务</text>
|
|
|
+ </view>
|
|
|
+ <view class="upgrade-benefit-row">
|
|
|
+ <text class="upgrade-benefit-icon">✓</text>
|
|
|
+ <text class="upgrade-benefit-text">专属家庭成长计划与测评报告</text>
|
|
|
+ </view>
|
|
|
+ <view class="upgrade-price-row">
|
|
|
+ <text class="upgrade-price-label">仅需</text>
|
|
|
+ <text class="upgrade-price-value">{{ formatPriceWithSymbol(familyYearlyPrice * 100) }}</text>
|
|
|
+ <text class="upgrade-price-unit">/年</text>
|
|
|
+ <text class="upgrade-price-original" v-if="familyYearlyPrice > 0">{{ formatPriceWithSymbol((familyYearlyPrice * 1.5 * 100).toFixed(0)) }}</text>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="upgrade-card-action">
|
|
|
+ <button class="upgrade-btn" @click="goUpgrade">立即开通</button>
|
|
|
+ <text class="upgrade-skip" @click="showUpgradeCard = false">暂不开通</text>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
</scroll-view>
|
|
|
</view>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import config from '@/config.js'
|
|
|
+import { getMyMembership } from '@/utils/api.js'
|
|
|
|
|
|
export default {
|
|
|
data() {
|
|
|
@@ -71,7 +104,9 @@ export default {
|
|
|
loading: false,
|
|
|
timer: null,
|
|
|
pointsUsed: 0,
|
|
|
- pointsUsed: 0
|
|
|
+ isMember: false,
|
|
|
+ showUpgradeCard: false,
|
|
|
+ familyYearlyPrice: '365'
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
@@ -82,6 +117,8 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
onLoad(options) {
|
|
|
+ this.checkMemberStatus()
|
|
|
+ this.checkMembershipLevels()
|
|
|
if (options.orderNo) {
|
|
|
this.orderNo = options.orderNo
|
|
|
}
|
|
|
@@ -100,6 +137,44 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ checkMemberStatus() {
|
|
|
+ var that = this
|
|
|
+ getMyMembership().then(function(res) {
|
|
|
+ if (res.data && res.data.memberLevel) {
|
|
|
+ that.isMember = res.data.memberLevel !== 'FREE'
|
|
|
+ }
|
|
|
+ }).catch(function() {})
|
|
|
+ },
|
|
|
+ checkMembershipLevels() {
|
|
|
+ var that = this
|
|
|
+ uni.request({
|
|
|
+ url: config.api('/api/membership/levels'),
|
|
|
+ method: 'POST',
|
|
|
+ header: { 'Authorization': 'Bearer ' + uni.getStorageSync('token') },
|
|
|
+ success: function(res) {
|
|
|
+ if (res.data && res.data.code === 200 && res.data.data) {
|
|
|
+ var levels = res.data.data
|
|
|
+ for (var i = 0; i < levels.length; i++) {
|
|
|
+ if (levels[i].levelCode === 'FAMILY' && levels[i].priceYearly > 0) {
|
|
|
+ that.familyYearlyPrice = (levels[i].priceYearly / 100).toFixed(0)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handlePaymentSuccess() {
|
|
|
+ var that = this
|
|
|
+ if (!this.isMember) {
|
|
|
+ setTimeout(function() {
|
|
|
+ that.showUpgradeCard = true
|
|
|
+ }, 2000)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ goUpgrade() {
|
|
|
+ uni.navigateTo({ url: '/pages/membership/upgrade' })
|
|
|
+ },
|
|
|
startCountdown() {
|
|
|
var that = this
|
|
|
this.timer = setInterval(function() {
|
|
|
@@ -145,6 +220,7 @@ export default {
|
|
|
success: function(payRes) {
|
|
|
if (payRes.data && payRes.data.code === 200) {
|
|
|
uni.showToast({ title: '支付成功', icon: 'success' })
|
|
|
+ that.handlePaymentSuccess()
|
|
|
setTimeout(function() {
|
|
|
uni.redirectTo({
|
|
|
url: '/pages/shop/order-list/order-list?tab=paid'
|
|
|
@@ -178,6 +254,7 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
uni.showToast({ title: '支付成功', icon: 'success' })
|
|
|
+ that.handlePaymentSuccess()
|
|
|
setTimeout(function() {
|
|
|
uni.redirectTo({
|
|
|
url: '/pages/shop/order-list/order-list?tab=paid'
|
|
|
@@ -371,4 +448,111 @@ export default {
|
|
|
.points-value {
|
|
|
color: #F97316;
|
|
|
}
|
|
|
+
|
|
|
+ /* Upgrade Card */
|
|
|
+ .upgrade-card {
|
|
|
+ margin: 30rpx 20rpx;
|
|
|
+ background: linear-gradient(135deg, #FFF7ED, #FFEDD5);
|
|
|
+ border-radius: 20rpx;
|
|
|
+ padding: 30rpx;
|
|
|
+ border: 2rpx solid #FED7AA;
|
|
|
+ animation: fadeInUp 0.5s ease;
|
|
|
+ }
|
|
|
+ .upgrade-card-header {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 20rpx;
|
|
|
+ }
|
|
|
+ .upgrade-card-icon {
|
|
|
+ font-size: 40rpx;
|
|
|
+ margin-right: 12rpx;
|
|
|
+ }
|
|
|
+ .upgrade-card-title {
|
|
|
+ font-size: 30rpx;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #333;
|
|
|
+ }
|
|
|
+ .upgrade-card-body {
|
|
|
+ margin-bottom: 24rpx;
|
|
|
+ }
|
|
|
+ .upgrade-benefit-row {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 8rpx 0;
|
|
|
+ }
|
|
|
+ .upgrade-benefit-icon {
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #22C55E;
|
|
|
+ margin-right: 12rpx;
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+ .upgrade-benefit-text {
|
|
|
+ font-size: 26rpx;
|
|
|
+ color: #666;
|
|
|
+ }
|
|
|
+ .upgrade-price-row {
|
|
|
+ display: flex;
|
|
|
+ align-items: baseline;
|
|
|
+ margin-top: 16rpx;
|
|
|
+ padding-top: 16rpx;
|
|
|
+ border-top: 1rpx solid #FED7AA;
|
|
|
+ }
|
|
|
+ .upgrade-price-label {
|
|
|
+ font-size: 26rpx;
|
|
|
+ color: #999;
|
|
|
+ margin-right: 8rpx;
|
|
|
+ }
|
|
|
+ .upgrade-price-value {
|
|
|
+ font-size: 48rpx;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #F97316;
|
|
|
+ }
|
|
|
+ .upgrade-price-unit {
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #999;
|
|
|
+ margin-left: 6rpx;
|
|
|
+ }
|
|
|
+ .upgrade-price-original {
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #ccc;
|
|
|
+ text-decoration: line-through;
|
|
|
+ margin-left: 12rpx;
|
|
|
+ }
|
|
|
+ .upgrade-card-action {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ .upgrade-btn {
|
|
|
+ width: 100%;
|
|
|
+ height: 80rpx;
|
|
|
+ line-height: 80rpx;
|
|
|
+ background: linear-gradient(135deg, #F97316, #FB923C);
|
|
|
+ color: #fff;
|
|
|
+ font-size: 30rpx;
|
|
|
+ font-weight: bold;
|
|
|
+ border-radius: 40rpx;
|
|
|
+ border: none;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ .upgrade-btn::after {
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+ .upgrade-skip {
|
|
|
+ margin-top: 16rpx;
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #999;
|
|
|
+ padding: 8rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ @keyframes fadeInUp {
|
|
|
+ from {
|
|
|
+ opacity: 0;
|
|
|
+ transform: translateY(30rpx);
|
|
|
+ }
|
|
|
+ to {
|
|
|
+ opacity: 1;
|
|
|
+ transform: translateY(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
</style>
|