|
@@ -51,7 +51,7 @@
|
|
|
|
|
|
<!-- TODO 芋艿:订阅 -->
|
|
|
<!-- #ifdef MP -->
|
|
|
- <view class="subscribe-box ss-flex ss-m-t-44">
|
|
|
+ <view class="subscribe-box ss-flex ss-m-t-44" v-if="showSubscribeBtn">
|
|
|
<image class="subscribe-img" :src="sheep.$url.static('/static/img/shop/order/cargo.png')" />
|
|
|
<view class="subscribe-title ss-m-r-48 ss-m-l-16">获取实时发货信息与订单状态</view>
|
|
|
<view class="subscribe-start" @tap="subscribeMessage">立即订阅</view>
|
|
@@ -63,12 +63,13 @@
|
|
|
|
|
|
<script setup>
|
|
|
import { onLoad, onHide, onShow } from '@dcloudio/uni-app';
|
|
|
- import { reactive, computed } from 'vue';
|
|
|
+ import { reactive, computed, ref } from 'vue';
|
|
|
import { isEmpty } from 'lodash';
|
|
|
import sheep from '@/sheep';
|
|
|
import PayOrderApi from '@/sheep/api/pay/order';
|
|
|
- import { fen2yuan } from '../../sheep/hooks/useGoods';
|
|
|
+ import { fen2yuan } from '@/sheep/hooks/useGoods';
|
|
|
import OrderApi from '@/sheep/api/trade/order';
|
|
|
+ import { SubscribeTemplate } from '@/sheep/util/const';
|
|
|
|
|
|
const state = reactive({
|
|
|
id: 0, // 支付单号
|
|
@@ -111,7 +112,16 @@
|
|
|
// 非待支付,可能是已支付,可能是已退款
|
|
|
state.result = 'paid';
|
|
|
// #ifdef MP
|
|
|
- subscribeMessage();
|
|
|
+ uni.showModal({
|
|
|
+ title: '支付结果',
|
|
|
+ showCancel: false, // 不要取消按钮
|
|
|
+ content: "支付成功",
|
|
|
+ success: () => {
|
|
|
+ // 订阅只能由用户主动触发,只能包一层 showModal 诱导用户点击
|
|
|
+ autoSubscribeMessage();
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
// #endif
|
|
|
// 特殊:获得商品订单信息
|
|
|
if (state.orderType === 'goods') {
|
|
@@ -146,13 +156,33 @@
|
|
|
|
|
|
// TODO 芋艿:待测试
|
|
|
// #ifdef MP
|
|
|
+ const showSubscribeBtn = ref(false) // 默认隐藏
|
|
|
+ const SUBSCRIBE_BTN_STATUS_STORAGE_KEY = "subscribe_btn_status"
|
|
|
function subscribeMessage() {
|
|
|
- let event = ['order_dispatched'];
|
|
|
+ let event = [SubscribeTemplate.DELIVERY_ORDER];
|
|
|
if (state.tradeOrder.type === 3) {
|
|
|
- event.push('groupon_finish');
|
|
|
- event.push('groupon_fail');
|
|
|
+ // TODO puhui999: 待完善
|
|
|
+ event.push('拼团成功');
|
|
|
+ event.push('拼团失败');
|
|
|
}
|
|
|
- sheep.$platform.useProvider('wechat').subscribeMessage(event);
|
|
|
+ sheep.$platform.useProvider('wechat').subscribeMessage(event, () => {
|
|
|
+ // 订阅后记录一下订阅状态
|
|
|
+ uni.removeStorageSync(SUBSCRIBE_BTN_STATUS_STORAGE_KEY);
|
|
|
+ uni.setStorageSync(SUBSCRIBE_BTN_STATUS_STORAGE_KEY, '已订阅');
|
|
|
+ // 隐藏订阅按钮
|
|
|
+ showSubscribeBtn.value = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ async function autoSubscribeMessage() {
|
|
|
+ // 1. 校验是否手动订阅过
|
|
|
+ const subscribeBtnStatus = uni.getStorageSync(SUBSCRIBE_BTN_STATUS_STORAGE_KEY);
|
|
|
+ if (!subscribeBtnStatus) {
|
|
|
+ showSubscribeBtn.value = true;
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. 订阅消息
|
|
|
+ subscribeMessage()
|
|
|
}
|
|
|
// #endif
|
|
|
|