发布通告功能

This commit is contained in:
13405411873 2025-04-24 18:33:21 +08:00
parent 2f03910ae4
commit 76e780612e
4 changed files with 241 additions and 103 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,28 @@
<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} from '@/api/business/member.js' initCouponList
import {toast} from '@/utils/common.js' } from '@/api/business/base.js'
import constant from '@/utils/constant'; import {
import {getJSONData} from '@/utils/auth.js' saveOrder,
getOrderList
} from '@/api/business/member.js'
import {
toast
} from '@/utils/common.js'
import constant from '@/utils/constant';
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
@ -80,14 +107,14 @@
globalConfig: getApp().globalData.config, globalConfig: getApp().globalData.config,
menus: ['通告券', '购买记录'], menus: ['通告券', '购买记录'],
menuIndex: 0, menuIndex: 0,
coupon:0, coupon: 0,
// //
couponIndex: 0, couponIndex: 0,
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
orderType:'02', orderType: '02',
userId:null, userId: null,
}, },
total: 0, total: 0,
// //
@ -98,12 +125,76 @@
} }
}, },
onLoad(option) { onLoad(option) {
this.menuIndex = option.index this.menuIndex = option.index || 0
this.coupon = option.coupon this.coupon = option.coupon || 0
this.initCoupon(); this.initCoupon();
this.initOrder() this.initOrder()
//urlsearch
if (location.search) {
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 => {
})
},
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
@ -114,57 +205,63 @@
}, },
/**查询卡券*/ /**查询卡券*/
initCoupon(){ initCoupon() {
this.dataList = [] if (getToken()) {
initCouponList().then(res=>{ this.dataList = []
this.dataList = res.data initCouponList().then(res => {
}) this.dataList = res.data
}, })
}
/**初始化订单数据*/ },
initOrder(){
this.queryParams.userId = getJSONData(constant.userInfo).userId
getOrderList(this.queryParams).then(res=>{
this.isTriggered = false
if (res.code == 200) {
if (this.queryParams.pageNum == 1) {
this.byList = res.data.records
} else {
this.byList = this.byList.concat(res.data.records)
}
this.total = res.data.total
}
})
},
/**生成订单*/ /**初始化订单数据*/
toOrder(){ initOrder() {
let data = { if (getToken()) {
userType:'01', this.queryParams.userId = getJSONData(constant.userInfo).userId
orderType:'02', getOrderList(this.queryParams).then(res => {
goodsId:this.dataList[this.couponIndex].id, this.isTriggered = false
goodsNum:this.dataList[this.couponIndex].couponNum, if (res.code == 200) {
goodsPrice:this.dataList[this.couponIndex].price, if (this.queryParams.pageNum == 1) {
goodsCycle:'04' this.byList = res.data.records
} } else {
saveOrder(data).then(res => { this.byList = this.byList.concat(res.data.records)
if (res.code == 200) { }
uni.showToast({ this.total = res.data.total
icon: 'success', }
duration: 2000, })
title: '保存成功' }
}); },
uni.navigateBack()
} /**生成订单*/
}).catch((e) => { async toOrder() {
uni.showToast({ let data = {
icon: 'error', userType: '01',
duration: 2000, orderType: '02',
title: e goodsId: this.dataList[this.couponIndex].id,
}); goodsNum: this.dataList[this.couponIndex].couponNum,
}) goodsPrice: this.dataList[this.couponIndex].price,
}, goodsCycle: '04'
}
saveOrder(data).then(res => {
if (res.code == 200) {
//
let payData = {
orderNo: res.data.orderNo
}
prepayment(payData).then(paymentData => {
that.wxpay(paymentData)
})
}
}).catch((e) => {
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
},
/** /**
* 选中的优惠券 * 选中的优惠券
@ -193,7 +290,7 @@
} }
//+1, //+1,
this.queryParams.pageNum++ this.queryParams.pageNum++
this.initOrder() this.initOrder()
}, },
/** /**
* 下拉刷新数据 * 下拉刷新数据
@ -202,8 +299,58 @@
this.isTriggered = true this.isTriggered = true
this.queryParams.pageNum = 1 this.queryParams.pageNum = 1
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,37 +182,37 @@
}, },
onLoad(options) { onLoad(options) {
//urlsearch
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];
})
let userTypeTemp = options.userType let userTypeTemp = options.userType
this.initData(userTypeTemp); this.initData(userTypeTemp);
if (result.code) { //urlsearch
userTypeTemp = result.state if (location.search) {
let that = this let search = location.search.slice(1);
getWebAccessTokenAndOpenid(result.code).then(res => { let arr = search.split("&");
that.$store.dispatch('GzhLogin', res).then(() => { let result = {};
that.initData(userTypeTemp); arr.forEach(function(item) {
that.loginSuccess() let itemArr = item.split('=');
}).catch((e) => { result[itemArr[0]] = itemArr[1];
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
}) })
} else { if (result.code) {
this.toLogin(userTypeTemp) userTypeTemp = result.state
let that = this
getWebAccessTokenAndOpenid(result.code).then(res => {
that.$store.dispatch('GzhLogin', res).then(() => {
that.initData(userTypeTemp);
that.loginSuccess()
}).catch((e) => {
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
})
} else {
this.toLogin(userTypeTemp)
}
} }
}, },
methods: { methods: {
openVip() { openVip() {
@ -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

@ -77,7 +77,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>