# Conflicts:
#	pages/mine/coupon/my-coupon.vue
This commit is contained in:
PQZ 2025-04-24 18:51:54 +08:00
commit 88a583f2a8
4 changed files with 241 additions and 110 deletions

View File

@ -1,9 +1,9 @@
import request from '@/utils/request' import request from '@/utils/request'
// 微信登录授权获取code // 微信登录授权获取code
export function getCodeUrl(userType) { export function getCodeUrl(userType, url) {
return request({ return request({
'url': '/wxApi/getCodeUrl?userType=' + userType, 'url': '/wxApi/getCodeUrl?userType=' + userType + '&url=' + url,
'method': 'get' 'method': 'get'
}) })
} }

View File

@ -24,7 +24,16 @@
<text>¥</text>{{item.price}} <text>¥</text>{{item.price}}
</view> </view>
</view> </view>
<!-- 购买 -->
<!-- #ifdef H5 -->
<view class="button-dom" @click="toOrder()">购买</view> <view class="button-dom" @click="toOrder()">购买</view>
<!-- #endif -->
<!-- 调整h5 -->
<!-- #ifdef MP-WEIXIN -->
<view class="button-dom" @click="openVip()">购买</view>
<!-- #endif -->
</view> </view>
<view class="item-field" style="align-items: center;"> <view class="item-field" style="align-items: center;">
<view class="my-suggest-dom" @click="viewRichText()"> <view class="my-suggest-dom" @click="viewRichText()">
@ -39,7 +48,8 @@
<view class="item-box" v-for="(item,index) in byList"> <view class="item-box" v-for="(item,index) in byList">
<view class="top-title-box"> <view class="top-title-box">
<view class="order-no">订单编号{{item.orderNo}}</view> <view class="order-no">订单编号{{item.orderNo}}</view>
<view :class="['order-status',item.isPay==1?'payed':'no-pay']">{{item.isPay==1?'已支付':'未支付'}} <view :class="['order-status',item.isPay==1?'payed':'no-pay']">
{{item.isPay==1?'已支付':'未支付'}}
</view> </view>
</view> </view>
<view class="detail-item"> <view class="detail-item">
@ -66,11 +76,29 @@
<script> <script>
import navigationBarVue from '@/components/navigation/navigationBar.vue'; import navigationBarVue from '@/components/navigation/navigationBar.vue';
import {initCouponList} from '@/api/business/base.js' import {
import {saveOrder,getOrderList,getMemberCoupon} from '@/api/business/member.js' initCouponList
import {toast} from '@/utils/common.js' } from '@/api/business/base.js'
import {
saveOrder,
getOrderList,
prepayment
} from '@/api/business/member.js'
import {
toast
} from '@/utils/common.js'
import constant from '@/utils/constant'; import constant from '@/utils/constant';
import {getJSONData} from '@/utils/auth.js' import {
getJSONData
} from '@/utils/auth.js'
import {
getCodeUrl,
getWebAccessTokenAndOpenid,
gzhLogin
} from '@/api/wxApi'
import {
getToken
} from '@/utils/auth'
export default { export default {
components: { components: {
navigationBarVue navigationBarVue
@ -98,21 +126,76 @@
} }
}, },
onLoad(option) { onLoad(option) {
this.menuIndex = option.index this.menuIndex = option.index || 0
this.coupon = option.coupon || 0
this.initCoupon(); this.initCoupon();
this.initOrder() this.initOrder()
}, //urlsearch
onShow(){ if (location.search) {
this.initMyCoupon() let search = location.search.slice(1);
let arr = search.split("&");
let result = {};
arr.forEach(function(item) {
let itemArr = item.split('=');
result[itemArr[0]] = itemArr[1];
})
if (result.code) {
let that = this
getWebAccessTokenAndOpenid(result.code).then(res => {
that.$store.dispatch('GzhLogin', res).then(() => {
this.initCoupon();
this.initOrder()
that.loginSuccess()
}).catch((e) => {
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
})
} else {
this.toLogin()
}
}
}, },
methods: { methods: {
openVip() {
//
wx.openOfficialAccountProfile({
username: 'tonggaokuaijie', //
success: res => {},
fail: res => {}
})
},
//
loginSuccess(result) {
//
this.$store.dispatch('GetInfo').then(res => {
initMyCoupon(){
getMemberCoupon().then(res=>{
this.coupon = res.data
}) })
}, },
toLogin() {
/*#ifdef APP-PLUS*/
// App
console.log('Running on App-Plus');
/*#endif*/
/*#ifdef H5*/
// H5
if (!getToken()) {
//
getCodeUrl("01", "pages/mine/coupon/my-coupon").then(res => {
window.location.href = res.codeUrl;
})
}
/*#endif*/
/*#ifdef MP-WEIXIN*/
//
console.log('Running on WeChat Mini Program');
/*#endif*/
},
/** /**
* 菜单点击 * 菜单点击
* @param {Object} index * @param {Object} index
@ -125,14 +208,18 @@
/**查询卡券*/ /**查询卡券*/
initCoupon() { initCoupon() {
if (getToken()) {
this.dataList = [] this.dataList = []
initCouponList().then(res => { initCouponList().then(res => {
this.dataList = res.data this.dataList = res.data
}) })
}
}, },
/**初始化订单数据*/ /**初始化订单数据*/
initOrder() { initOrder() {
if (getToken()) {
this.queryParams.userId = getJSONData(constant.userInfo).userId this.queryParams.userId = getJSONData(constant.userInfo).userId
getOrderList(this.queryParams).then(res => { getOrderList(this.queryParams).then(res => {
this.isTriggered = false this.isTriggered = false
@ -145,10 +232,11 @@
this.total = res.data.total this.total = res.data.total
} }
}) })
}
}, },
/**生成订单*/ /**生成订单*/
toOrder(){ async toOrder() {
let data = { let data = {
userType: '01', userType: '01',
orderType: '02', orderType: '02',
@ -157,14 +245,16 @@
goodsPrice: this.dataList[this.couponIndex].price, goodsPrice: this.dataList[this.couponIndex].price,
goodsCycle: '04' goodsCycle: '04'
} }
let that = this
saveOrder(data).then(res => { saveOrder(data).then(res => {
if (res.code == 200) { if (res.code == 200) {
uni.showToast({ //
icon: 'success', let payData = {
duration: 2000, orderNo: res.data.orderNo
title: '保存成功' }
}); prepayment(payData).then(paymentData => {
uni.navigateBack() that.wxpay(paymentData)
})
} }
}).catch((e) => { }).catch((e) => {
uni.showToast({ uni.showToast({
@ -213,6 +303,56 @@
this.total = 0 this.total = 0
this.initOrder() this.initOrder()
}, },
// WeixinJSBridge
wxpay(data) {
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady(data), false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady(data));
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady(data));
}
} else {
this.onBridgeReady(data);
}
},
onBridgeReady(data) {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
//
"appId": data.appId, //
"timeStamp": data.timeStamp, //
"nonceStr": data.nonceStr, //
"package": data.packageVal, //prepay_id
"signType": data.signType, //RSA
"paySign": data.paySign //
},
function(res) {
//
if (res.err_msg == "get_brand_wcpay_request:ok") {
// 使,
//res.err_msgok
}
//
if (res.err_msg == "get_brand_wcpay_request:cancel") {
}
//
if (res.err_msg == "get_brand_wcpay_request:fail") {
}
/**
* 其它
* 1请检查预支付会话标识prepay_id是否已失效
* 2请求的appid与下单接口的appid是否一致
* */
if (res.err_msg == "调用支付JSAPI缺少参数total_fee") {
}
});
}
} }
} }
</script> </script>

View File

@ -182,7 +182,10 @@
}, },
onLoad(options) { onLoad(options) {
let userTypeTemp = options.userType
this.initData(userTypeTemp);
//urlsearch //urlsearch
if (location.search) {
let search = location.search.slice(1); let search = location.search.slice(1);
let arr = search.split("&"); let arr = search.split("&");
let result = {}; let result = {};
@ -190,9 +193,6 @@
let itemArr = item.split('='); let itemArr = item.split('=');
result[itemArr[0]] = itemArr[1]; result[itemArr[0]] = itemArr[1];
}) })
let userTypeTemp = options.userType
this.initData(userTypeTemp);
if (result.code) { if (result.code) {
userTypeTemp = result.state userTypeTemp = result.state
let that = this let that = this
@ -211,7 +211,7 @@
} else { } else {
this.toLogin(userTypeTemp) this.toLogin(userTypeTemp)
} }
}
}, },
methods: { methods: {
@ -223,13 +223,6 @@
fail: res => {} fail: res => {}
}) })
},
binderror() {
},
bindload() {
}, },
// //
loginSuccess(result) { loginSuccess(result) {
@ -243,17 +236,15 @@
// App // App
console.log('Running on App-Plus'); console.log('Running on App-Plus');
/*#endif*/ /*#endif*/
/*#ifdef H5*/ /*#ifdef H5*/
// H5 // H5
if (!getToken()) { if (!getToken()) {
// //
getCodeUrl(userType).then(res => { getCodeUrl(userType, "pages/mine/member/member-card").then(res => {
window.location.href = res.codeUrl; window.location.href = res.codeUrl;
}) })
} }
/*#endif*/ /*#endif*/
/*#ifdef MP-WEIXIN*/ /*#ifdef MP-WEIXIN*/
// //
console.log('Running on WeChat Mini Program'); console.log('Running on WeChat Mini Program');

View File

@ -76,7 +76,7 @@
<!-- 发布通告 --> <!-- 发布通告 -->
<view class="public-notice-box" v-if="'01'==localUserType"> <view class="public-notice-box" v-if="'01'==localUserType">
<view class="left-box"> <view class="left-box">
<view style="margin-bottom: 20rpx;">发布通告额度剩余{{userInfo.coupon}}</view> <view style="margin-bottom: 20rpx;">发布通告额度剩余{{userInfo.coupon||0}}</view>
<!-- <progress style="width: 90%;" border-radius="5" percent="40" activeColor="#FC1F3E"--> <!-- <progress style="width: 90%;" border-radius="5" percent="40" activeColor="#FC1F3E"-->
<!-- backgroundColor="#DEDEDE" stroke-width="8" />--> <!-- backgroundColor="#DEDEDE" stroke-width="8" />-->
</view> </view>