From ad876a6fea2df6e2a831d4c9d95cf724855610f4 Mon Sep 17 00:00:00 2001 From: Liuyi <candymxq888@outlook.com> Date: 星期六, 14 十二月 2024 16:43:35 +0800 Subject: [PATCH] 修复用户微信扫码进入小程序无法跳转及登录问题,修改会员卡解绑接口 --- unpackage/dist/dev/mp-weixin/pages/index/index.js | 6 ++- pages/scanWater/index.vue | 9 ++-- pages/wxScanWater/index.vue | 66 ++++++++++++++++++++++++++++----- pages/login/index.vue | 5 +- unpackage/dist/dev/mp-weixin/api/index.js | 6 +- unpackage/dist/dev/mp-weixin/project.private.config.json | 5 -- api/index.js | 4 ++ pages/index/index.vue | 10 +++- unpackage/dist/dev/mp-weixin/project.config.json | 2 9 files changed, 84 insertions(+), 29 deletions(-) diff --git a/api/index.js b/api/index.js index c14572e..2e58949 100644 --- a/api/index.js +++ b/api/index.js @@ -82,6 +82,10 @@ export function removeCardApi(cardNumber){ return request(`/waterCard/remove?cardNumber=${cardNumber}`,{},'GET') } +//会员卡解绑 +export function removeBindingApi(cardNumber){ + return request(`/waterCard/removeBinding?cardNumber=${cardNumber}`,{},'GET') +} //故障上报 export function infoBreakdownApi(data){ return request('/waterFacilityMalfunction/create',data,'POST') diff --git a/pages/index/index.vue b/pages/index/index.vue index 40cd85c..9abbe73 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -1,7 +1,7 @@ <script setup> import { onMounted, ref } from "vue"; import { BASE_URL } from '../../config/baseUrl'; - import { getVipInfoApi,getUserInfo,reportLossApi,removeCardApi,buyWaterApi } from '../../api/index.js' + import { getVipInfoApi,getUserInfo,reportLossApi,removeBindingApi,buyWaterApi } from '../../api/index.js' import { onShow,getCurrentPages } from '@dcloudio/uni-app' //状态栏高度 const topHeight = ref(0) @@ -66,7 +66,8 @@ cardInfo.value.userPhone = res.data.userInfo.userPhone cardInfo.value.id = res.data.userInfo.id await getVipInfo() - console.log('00000',cardInfo.value) + console.log('用户信息响应',res) + console.log('用户信息',cardInfo.value) uni.setStorageSync('userInfo',JSON.stringify(cardInfo.value)) } }) @@ -90,6 +91,7 @@ * 功能列表相关 */ const functionList = ref([ + //isUrl:1:页面跳转,2:弹窗功能,3:弹窗功能,4:未开发 {text:'余额记录',icon:'../../static/images/index/icon31.png',bgColor:'#16b387',url:'/pages/functionList/balanceRecord/index',isUrl:1}, {text:'消费记录',icon:'../../static/images/index/icon32.png',bgColor:'#329ae8',url:'/pages/functionList/paymentRecord/index',isUrl:1}, {text:'充值记录',icon:'../../static/images/index/icon33.png',bgColor:'#f0a50e',url:'/pages/functionList/rechargeRecord/index',isUrl:1}, @@ -156,13 +158,14 @@ } }else if(isUrl == 3){ if(cardInfo.value.waterCardNumber){ + //判断是否是分享卡:分享卡不许注销 if(!isShareCard.value){ uni.showModal({ title: '会员卡注销', content: '确认注销会员卡?', success: async function(res) { if (res.confirm) { - await removeCardApi(cardInfo.value.waterCardNumber).then(async(res) =>{ + await removeBindingApi(cardInfo.value.waterCardNumber).then(async(res) =>{ if(res.code == 200){ uni.showToast({ title: '已注销', @@ -365,6 +368,7 @@ </block> </view> </view> + <!-- <view @click="navTo('/pages/wxScanWater/index')">测试扫码取水</view> --> <!-- 积分商城 --> <view class="advertisement-box" @click="navTo('/pagesPoints/pointsMall/index')"> <view class="point-advert"> diff --git a/pages/login/index.vue b/pages/login/index.vue index 80a0138..a913541 100644 --- a/pages/login/index.vue +++ b/pages/login/index.vue @@ -40,7 +40,8 @@ }else{ uni.showToast({ title:'登录失败', - icon:'none' + icon:'none', + }) } }) @@ -86,7 +87,7 @@ <image class="top-bg" :src="baseUrl + '/upload' + '/qingYuan/images/20241126/2f56a2a7ecfd2544dec5978d2687383e.png'" mode="widthFix"></image> <view class="top--title"> <image class="logo" src="../../static/images/login/logo.png "></image> - <view class="text">清源直饮水运维平台</view> + <view class="text">慧物通直饮水</view> </view> </view> <view class="login-text"> diff --git a/pages/scanWater/index.vue b/pages/scanWater/index.vue index ab6ba91..7453896 100644 --- a/pages/scanWater/index.vue +++ b/pages/scanWater/index.vue @@ -136,9 +136,9 @@ const facilityCode = ref() onLoad((option) =>{ facilityCode.value = option.facilityCode - console.log('小程序扫码取水','option.facilityCode',option.facilityCode,'facilityCode',facilityCode.value) + console.log('小程序扫码取水','option.facilityCode',option.facilityCode,'设备SN',facilityCode.value) }) - //设置水价及支付方式 + //设置水价,设置支付方式,用户未绑定会员卡不显示余额支付选项 async function getWaterPrice(){ await getPriceBySnApi(facilityCode.value).then((res) =>{ moneyList.value.forEach((item,index) =>{ @@ -146,9 +146,10 @@ item.volume = ((index + 1) * res.data.yield).toFixed(1) }) choosedMoney.value = res.data.price - console.log('水价设置回调',res,'传参',facilityCode.value) + console.log('水价设置回调',res,'传参',facilityCode.value,'水价列表',choosedMoney.value) }) - let waterCardNumber = JSON.parse(uni.getStorageSync('userInfo')).waterCardNumber + let waterCardNumber = (uni.getStorageSync('userInfo') && JSON.parse(uni.getStorageSync('userInfo')).waterCardNumber ) + console.log('用户水卡信息',uni.getStorageSync('userInfo')) if(!waterCardNumber){ payList.value.splice(1,1) } diff --git a/pages/wxScanWater/index.vue b/pages/wxScanWater/index.vue index a67a521..fe0bab7 100644 --- a/pages/wxScanWater/index.vue +++ b/pages/wxScanWater/index.vue @@ -1,6 +1,6 @@ <script setup> import{ ref ,onMounted} from 'vue' - import { wxPayApi,buyWaterApi,getPriceBySnApi,getVipInfoApi } from '../../api/index.js' + import { wxPayApi,buyWaterApi,getPriceBySnApi,getVipInfoApi,wxLoginApi } from '../../api/index.js' import { onLoad } from "@dcloudio/uni-app" //选中金额 const choosedMoney = ref(1) @@ -37,15 +37,16 @@ cardNumber:'', cardBalance:'', }) + //获取用户会员卡信息,判断是否有余额 async function setPayMethod(){ await getVipInfoApi().then((res) =>{ - console.log('获取会员卡返回响应-微信扫码取水页',res) + console.log('会员卡信息响应-微信扫码取水',res) if(res.code == 200 && res.data.id){ cardInfo.value.cardNumber = res.data.cardNumber cardInfo.value.cardBalance = res.data.balance }else{ - console.log('未绑定会员卡') payList.value.splice(1,1) + console.log('未绑定会员卡','支付方式',payList.value) } }) } @@ -157,11 +158,12 @@ }) } } - const facilityCode = ref() + const facilityCode = ref('') onLoad((query) =>{ let url = decodeURIComponent(query.q) + // let url = 'https://www.huiwuyuntong.com/miniapp/paywater?facilitycode=1060003979' facilityCode.value = url.split('=')[1] - console.log('微信扫码取水','url',url,'facilityCode',facilityCode.value) + console.log('微信扫码取水','url',url,'设备SN',facilityCode.value) }) //设置水价 async function getWaterPrice(){ @@ -171,7 +173,7 @@ item.volume = ((index + 1) * res.data.yield).toFixed(1) }) choosedMoney.value = res.data.price - console.log('水价设置回调',res,'传参',facilityCode.value) + console.log('水价设置响应',res,'传参设备SN',facilityCode.value,'水价显示列表',choosedMoney.value) }) } function navTo(){ @@ -179,10 +181,54 @@ url:'/pages/index/index' }) } - onMounted(async() =>{ - await getWaterPrice() - await setPayMethod() - }) + + //用户通过微信外部扫描二维码进入页面,默认微信登录授权 + async function wxLogin() { + if (!uni.getStorageSync('openId') || !uni.getStorageSync('token')) { + try { + const res1 = await new Promise((resolve, reject) => { + wx.login({ + success: (result) => resolve(result), + fail: (error) => reject(error) + }); + }); + + uni.setStorageSync('code', res1.code); + + const res2 = await wxLoginApi({ code: res1.code }); + console.log('微信登录响应', res2); + + if (res2.code == 200) { + uni.setStorageSync('openId', res2.data.userId); + uni.setStorageSync('token', res2.data.token); + } else { + uni.showToast({ + title: '登录失败', + icon: 'none' + }); + throw new Error('登录失败'); // 抛出错误,以便在调用 wxLogin 的地方可以捕获 + } + } catch (error) { + uni.showToast({ + title: '微信登录失败,请退出重试!', + duration: 2000, + icon: 'fail' + }); + throw error; // 抛出错误,以便在调用 wxLogin 的地方可以捕获 + } + } + } + + onMounted(async () => { + try { + await wxLogin(); + await getWaterPrice(); + await setPayMethod(); + } catch (error) { + console.error('在登录或初始化过程中发生错误:', error); + // 可以在这里处理错误,比如显示错误消息给用户 + } + }); </script> <template> diff --git a/unpackage/dist/dev/mp-weixin/api/index.js b/unpackage/dist/dev/mp-weixin/api/index.js index c949921..6a7a607 100644 --- a/unpackage/dist/dev/mp-weixin/api/index.js +++ b/unpackage/dist/dev/mp-weixin/api/index.js @@ -57,8 +57,8 @@ function reportLossApi(cardNumber) { return util_request.request(`/waterCard/reportLoss?cardNumber=${cardNumber}`, {}, "GET"); } -function removeCardApi(cardNumber) { - return util_request.request(`/waterCard/remove?cardNumber=${cardNumber}`, {}, "GET"); +function removeBindingApi(cardNumber) { + return util_request.request(`/waterCard/removeBinding?cardNumber=${cardNumber}`, {}, "GET"); } function infoBreakdownApi(data) { return util_request.request("/waterFacilityMalfunction/create", data, "POST"); @@ -188,7 +188,7 @@ exports.pointsSearchApi = pointsSearchApi; exports.rechargeApi = rechargeApi; exports.rechargeChangeApi = rechargeChangeApi; -exports.removeCardApi = removeCardApi; +exports.removeBindingApi = removeBindingApi; exports.reportLossApi = reportLossApi; exports.searchAddress = searchAddress; exports.searchBreakdownApi = searchBreakdownApi; diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.js b/unpackage/dist/dev/mp-weixin/pages/index/index.js index 9c01150..c86f8c0 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/index/index.js @@ -60,7 +60,8 @@ cardInfo.value.userPhone = res.data.userInfo.userPhone; cardInfo.value.id = res.data.userInfo.id; await getVipInfo(); - console.log("00000", cardInfo.value); + console.log("用户信息响应", res); + console.log("用户信息", cardInfo.value); common_vendor.index.setStorageSync("userInfo", JSON.stringify(cardInfo.value)); } }); @@ -77,6 +78,7 @@ }); } const functionList = common_vendor.ref([ + //isUrl:1:页面跳转,2:弹窗功能,3:弹窗功能,4:未开发 { text: "余额记录", icon: "../../static/images/index/icon31.png", bgColor: "#16b387", url: "/pages/functionList/balanceRecord/index", isUrl: 1 }, { text: "消费记录", icon: "../../static/images/index/icon32.png", bgColor: "#329ae8", url: "/pages/functionList/paymentRecord/index", isUrl: 1 }, { text: "充值记录", icon: "../../static/images/index/icon33.png", bgColor: "#f0a50e", url: "/pages/functionList/rechargeRecord/index", isUrl: 1 }, @@ -147,7 +149,7 @@ content: "确认注销会员卡?", success: async function(res) { if (res.confirm) { - await api_index.removeCardApi(cardInfo.value.waterCardNumber).then(async (res2) => { + await api_index.removeBindingApi(cardInfo.value.waterCardNumber).then(async (res2) => { if (res2.code == 200) { common_vendor.index.showToast({ title: "已注销", diff --git a/unpackage/dist/dev/mp-weixin/project.config.json b/unpackage/dist/dev/mp-weixin/project.config.json index f0c0b72..e1facc3 100644 --- a/unpackage/dist/dev/mp-weixin/project.config.json +++ b/unpackage/dist/dev/mp-weixin/project.config.json @@ -18,7 +18,7 @@ } }, "compileType": "miniprogram", - "libVersion": "3.3.5", + "libVersion": "", "appid": "wxe86c40810c2c0e98", "projectname": "water-drinking-uniapp", "condition": {}, diff --git a/unpackage/dist/dev/mp-weixin/project.private.config.json b/unpackage/dist/dev/mp-weixin/project.private.config.json index 9f29cc0..09fb3cb 100644 --- a/unpackage/dist/dev/mp-weixin/project.private.config.json +++ b/unpackage/dist/dev/mp-weixin/project.private.config.json @@ -1,7 +1,4 @@ { "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", - "projectname": "water-drinking-uniapp", - 0、- "setting": { - "compileHotReLoad": true - } + "libVersion": "3.6.6" } \ No newline at end of file -- Gitblit v1.9.3