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