fengjiajia пре 2 недеља
родитељ
комит
f71be1ee78
57 измењених фајлова са 945 додато и 120 уклоњено
  1. 1 1
      manifest.json
  2. 7 0
      pages.json
  3. 1 1
      pages/find/index.vue
  4. 163 0
      pages/knowXetong/knowXetong.vue
  5. 113 4
      pages/login/index.vue
  6. 194 12
      pages/mine/index.vue
  7. BIN
      static/my/ctb.png
  8. BIN
      static/my/gys.png
  9. BIN
      static/my/hsz.png
  10. BIN
      static/my/kf.png
  11. BIN
      static/my/o.png
  12. BIN
      static/my/photo.png
  13. BIN
      static/my/rili.png
  14. BIN
      static/my/shop.png
  15. BIN
      static/my/svip.png
  16. BIN
      static/my/sz.png
  17. BIN
      static/my/tz.png
  18. BIN
      static/my/wdxz.png
  19. BIN
      static/my/yj.png
  20. BIN
      static/wechat.png
  21. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map
  22. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map
  23. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/about.js.map
  24. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/about/about.js.map
  25. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/knowXetong/knowXetong.js.map
  26. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map
  27. 1 1
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/index.js.map
  28. 1 0
      unpackage/dist/dev/mp-weixin/app.js
  29. 2 1
      unpackage/dist/dev/mp-weixin/app.json
  30. 4 2
      unpackage/dist/dev/mp-weixin/common/assets.js
  31. 1 1
      unpackage/dist/dev/mp-weixin/pages/find/index.wxml
  32. 1 1
      unpackage/dist/dev/mp-weixin/pages/index/index.js
  33. 44 0
      unpackage/dist/dev/mp-weixin/pages/knowXetong/knowXetong.js
  34. 4 0
      unpackage/dist/dev/mp-weixin/pages/knowXetong/knowXetong.json
  35. 1 0
      unpackage/dist/dev/mp-weixin/pages/knowXetong/knowXetong.wxml
  36. 79 0
      unpackage/dist/dev/mp-weixin/pages/knowXetong/knowXetong.wxss
  37. 178 86
      unpackage/dist/dev/mp-weixin/pages/login/index.js
  38. 0 0
      unpackage/dist/dev/mp-weixin/pages/login/index.wxml
  39. 61 3
      unpackage/dist/dev/mp-weixin/pages/mine/index.js
  40. 0 1
      unpackage/dist/dev/mp-weixin/pages/mine/index.wxml
  41. 79 0
      unpackage/dist/dev/mp-weixin/pages/mine/index.wxss
  42. 2 2
      unpackage/dist/dev/mp-weixin/project.config.json
  43. 2 1
      unpackage/dist/dev/mp-weixin/project.private.config.json
  44. BIN
      unpackage/dist/dev/mp-weixin/static/my/ctb.png
  45. BIN
      unpackage/dist/dev/mp-weixin/static/my/gys.png
  46. BIN
      unpackage/dist/dev/mp-weixin/static/my/hsz.png
  47. BIN
      unpackage/dist/dev/mp-weixin/static/my/kf.png
  48. BIN
      unpackage/dist/dev/mp-weixin/static/my/o.png
  49. BIN
      unpackage/dist/dev/mp-weixin/static/my/photo.png
  50. BIN
      unpackage/dist/dev/mp-weixin/static/my/rili.png
  51. BIN
      unpackage/dist/dev/mp-weixin/static/my/shop.png
  52. BIN
      unpackage/dist/dev/mp-weixin/static/my/svip.png
  53. BIN
      unpackage/dist/dev/mp-weixin/static/my/sz.png
  54. BIN
      unpackage/dist/dev/mp-weixin/static/my/tz.png
  55. BIN
      unpackage/dist/dev/mp-weixin/static/my/wdxz.png
  56. BIN
      unpackage/dist/dev/mp-weixin/static/my/yj.png
  57. BIN
      unpackage/dist/dev/mp-weixin/static/wechat.png

+ 1 - 1
manifest.json

@@ -50,7 +50,7 @@
     "quickapp" : {},
     /* 小程序特有相关 */
     "mp-weixin" : {
-        "appid" : "",
+        "appid" : "wx97b71d70f5b2d51f",
         "setting" : {
             "urlCheck" : false
         },

+ 7 - 0
pages.json

@@ -54,6 +54,13 @@
 			"style":{
 				"navigationBarTitleText": "我的"
 			}
+		},
+		{
+			"path" : "pages/knowXetong/knowXetong",
+			"style" : 
+			{
+				"navigationBarTitleText" : ""
+			}
 		}
 	],
 	"globalStyle": {

+ 1 - 1
pages/find/index.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		
+		hello
 	</view>
 </template>
 

+ 163 - 0
pages/knowXetong/knowXetong.vue

@@ -0,0 +1,163 @@
+<template>
+	<view class="about-container">
+		<!-- 顶部导航栏 -->
+		<view class="nav-bar">
+			<image class="back-arrow" src="/static/my/back.png" @click="goBack"></image>
+			<text class="nav-title">了解小鹅通</text>
+		</view>
+		<!-- logo和版本信息 -->
+		<view class="about-header">
+			<image class="about-logo" src="/static/logo.png"></image>
+			<view class="about-title">小鹅通</view>
+			<view class="about-version">Version 5.10.2</view>
+			<view class="about-id">b_u_cvj80rjq943h407qktbg</view>
+		</view>
+		<!-- 列表内容 -->
+		<view class="about-list">
+			<view class="about-item" @click="openUrl('https://xiaoek-tech.com')">
+				<text>小鹅通官网</text>
+				<text class="about-right">xiaoek-tech.com</text>
+			</view>
+			<view class="about-item" @click="checkUpdate">
+				<text>版本更新</text>
+				<view class="about-dot"></view>
+			</view>
+			<view class="about-item" @click="fuwuxieyi">
+				<text>服务协议</text>
+			</view>
+			<view class="about-item" @click="yinsizhengce">
+				<text>隐私政策</text>
+			</view>
+		
+			<view class="about-item">
+				<text>热线电话</text>
+				<text class="about-right">周一至周日9:00-19:00</text>
+			</view>
+			<view class="about-item">
+				<text>互联网违法和不良信息举报电话</text>
+				<text class="about-right">400-102-6665</text>
+			</view>
+			<view class="about-item">
+				<text>互联网不良信息举报邮箱</text>
+				<text class="about-right">xiaoeks@xiaoek-tech.com</text>
+			</view>
+		
+		</view>
+	</view>
+</template>
+
+<script>
+
+
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			goBack() {
+				uni.navigateBack();
+			},
+			openUrl(url) {
+				uni.setClipboardData({
+					data: url,
+					success: () => {
+						uni.showToast({ title: '链接已复制', icon: 'none' });
+					}
+				});
+			},
+			checkUpdate() {
+				uni.showToast({ title: '已是最新版本', icon: 'none' });
+			},
+			fuwuxieyi() {
+				 uni.navigateTo({ url: '/pages/protocol/service' });
+			},
+			yinsizhengce() {
+				 uni.navigateTo({ url: '/pages/protocol/privacy' });
+			},
+		
+		}
+	}
+</script>
+
+<style>
+	.about-container {
+		background: #fff;
+		min-height: 100vh;
+	}
+	.nav-bar {
+		position: relative;
+		height: 100rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		border-bottom: 1rpx solid #f0f0f0;
+	}
+	.back-arrow {
+		position: absolute;
+		left: 30rpx;
+		width: 40rpx;
+		height: 40rpx;
+		top: 50%;
+		transform: translateY(-50%);
+	}
+	.nav-title {
+		font-size: 34rpx;
+		font-weight: bold;
+	}
+	.about-header {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		margin: 40rpx 0 30rpx 0;
+	}
+	.about-logo {
+		width: 120rpx;
+		height: 120rpx;
+		margin-bottom: 20rpx;
+	}
+	.about-title {
+		font-size: 36rpx;
+		font-weight: bold;
+		margin-bottom: 10rpx;
+	}
+	.about-version {
+		color: #888;
+		font-size: 28rpx;
+		margin-bottom: 5rpx;
+	}
+	.about-id {
+		color: #bbb;
+		font-size: 22rpx;
+		margin-bottom: 20rpx;
+	}
+	.about-list {
+		background: #fff;
+		border-radius: 20rpx;
+		overflow: hidden;
+		margin: 0 20rpx;
+	}
+	.about-item {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 32rpx 0;
+		border-bottom: 1rpx solid #f0f0f0;
+		font-size: 30rpx;
+	}
+	.about-item:last-child {
+		border-bottom: none;
+	}
+	.about-right {
+		color: #bbb;
+		font-size: 26rpx;
+	}
+	.about-dot {
+		width: 16rpx;
+		height: 16rpx;
+		background: #ff3b30;
+		border-radius: 50%;
+		margin-left: 10rpx;
+	}
+</style>

+ 113 - 4
pages/login/index.vue

@@ -9,10 +9,10 @@
       </view>
     </view>
     <view class="phone-area">
-      <text class="phone">199****4261</text>
-      <text class="carrier">号码认证由中国电信提供</text>
+      <!-- <text class="phone">199****4261</text>
+      <text class="carrier">号码认证由中国电信提供</text> -->
     </view>
-    <button class="main-btn login-btn" :disabled="!agreed" @tap="handleLogin">一键登录</button>
+   <!-- <button class="main-btn login-btn" :disabled="!agreed" @tap="handleLogin">一键登录</button> -->
     <button class="main-btn wechat-btn" :disabled="!agreed" @tap="socialLogin('wechat')">
       <image class="wechat-icon" src="/static/wechat.png" /> 微信登录
     </button>
@@ -120,6 +120,7 @@ let regCodeTimer = null
 function handleLogin() {
   if (!agreed.value) {
     uni.showToast({ title: '请先同意协议', icon: 'none' })
+	
     return
   }
   // 登录逻辑
@@ -132,7 +133,115 @@ function openProtocol(type) {
   uni.navigateTo({ url: urls[type] })
 }
 function socialLogin(type) {
-  // 微信、QQ等登录逻辑
+  if (!agreed.value) {
+    uni.showToast({
+      title: '请先同意服务协议和隐私政策',
+      icon: 'none'
+    });
+    return;
+  }
+
+  if (type === 'wechat') {
+    uni.login({
+      provider: 'weixin',
+      success: async (loginRes) => {
+        console.log('uni.login result:', loginRes);
+        if (loginRes.code) {
+          try {
+            const userInfoRes = await uni.getUserProfile({
+              desc: '用于完善用户资料'
+            }).catch(err => {
+              console.error('getUserProfile error:', err);
+              uni.showToast({
+                title: '已取消授权',
+                icon: 'none'
+              });
+              throw err;
+            });
+
+            console.log('userInfoRes:', userInfoRes);
+
+            if (!userInfoRes || !userInfoRes.userInfo) {
+              uni.showToast({
+                title: '未获取到用户信息',
+                icon: 'none'
+              });
+              return;
+            }
+
+            const wxLoginDto = {
+              avatarUrl: userInfoRes.userInfo.avatarUrl,
+              gender: userInfoRes.userInfo.gender,
+              nickName: userInfoRes.userInfo.nickName
+            };
+
+            // 构造请求体,只传有值的字段
+            const requestData = {
+              code: loginRes.code,
+              wxLoginDto
+            };
+            if (userInfoRes.encryptedData) requestData.encryptedData = userInfoRes.encryptedData;
+            if (userInfoRes.iv) requestData.iv = userInfoRes.iv;
+
+            console.log('requestData:', requestData);
+
+            uni.request({
+              url: 'http://localhost:9500/wechat/login',
+              method: 'POST',
+              data: requestData,
+              success: (res) => {
+                console.log('后端返回:', res);
+                if (res.statusCode === 200 && res.data.code === 200) {
+                  if (res.data.token) {
+                    uni.setStorageSync('token', res.data.token);
+                  }
+                  uni.setStorageSync('isLoggedIn', true);
+                  uni.setStorageSync('userInfo', wxLoginDto);
+
+                  uni.showToast({
+                    title: '登录成功',
+                    icon: 'success',
+                    duration: 1500
+                  });
+
+                  uni.reLaunch({
+                    url: '/pages/index/index'
+                  });
+                } else {
+                  uni.showToast({
+                    title: res.data.msg || '登录失败,请重试',
+                    icon: 'none'
+                  });
+                }
+              },
+              fail: (err) => {
+                console.error('uni.request error:', err);
+                uni.showToast({
+                  title: '网络错误,请稍后重试',
+                  icon: 'none'
+                });
+              }
+            });
+          } catch (err) {
+            // 这里已经有 toast,无需重复
+            console.error('catch error:', err);
+          }
+        } else {
+          uni.showToast({
+            title: '微信登录失败',
+            icon: 'none'
+          });
+        }
+      },
+      fail: (err) => {
+        console.error('uni.login error:', err);
+        uni.showToast({
+          title: '微信登录失败,请重试',
+          icon: 'none'
+        });
+      }
+    });
+  }
 }
 function openRegister() {
   showLoginPopup.value = false

+ 194 - 12
pages/mine/index.vue

@@ -1,22 +1,204 @@
 <template>
-	<view>
-		
-	</view>
+  <view class="container">
+    <!-- 头部信息 -->
+    <view class="header">
+      <image class="avatar" :src="avatarUrl" mode="aspectFill"></image>
+      <view class="user-info">
+        <text class="phone">{{ phone }}</text>
+        <navigator class="personal-info" href="/pages/personalInfo">个人信息 ></navigator>
+      </view>
+    </view>
+    <!-- 我的学习模块 -->
+    <view class="my-study">
+      <view class="section-title">我的学习</view>
+      <view class="function-icons">
+        <view class="icon-item" @click="goToCalendar">
+          <image class="icon" :src="calendarIcon" mode="aspectFill"></image>
+          <text class="icon-text">日历</text>
+        </view>
+        <view class="icon-item" @click="goToDownload">
+          <image class="icon" :src="downloadIcon" mode="aspectFill"></image>
+          <text class="icon-text">我的下载</text>
+        </view>
+        <view class="icon-item" @click="goToWrongBook">
+          <image class="icon" :src="wrongBookIcon" mode="aspectFill"></image>
+          <text class="icon-text">错题本</text>
+        </view>
+        <view class="icon-item" @click="goToSuperMember">
+          <image class="icon" :src="superMemberIcon" mode="aspectFill"></image>
+          <text class="icon-text">超级会员</text>
+        </view>
+        <view class="icon-item" @click="goToSubscribeStore">
+          <image class="icon" :src="subscribeStoreIcon" mode="aspectFill"></image>
+          <text class="icon-text">订阅店铺</text>
+        </view>
+      </view>
+    </view>
+    <!-- 其他功能列表 -->
+    <view class="function-list">
+      <navigator class="function-item" href="/pages/storeBackend">
+        <image class="function-icon" :src="storeBackendIcon" mode="aspectFill"></image>
+        <text class="function-text">商家店铺后台</text>
+       
+      </navigator>
+      <navigator class="function-item" href="/pages/recycleBin">
+        <image class="function-icon" :src="recycleBinIcon" mode="aspectFill"></image>
+        <text class="function-text">回收站</text>
+       
+      </navigator>
+      <navigator class="function-item" href="/pages/notificationSettings">
+        <image class="function-icon" :src="notificationIcon" mode="aspectFill"></image>
+        <text class="function-text">通知设置</text>
+      
+      </navigator>
+      <navigator class="function-item" href="/pages/feedback">
+        <image class="function-icon" :src="feedbackIcon" mode="aspectFill"></image>
+        <text class="function-text">意见反馈</text>
+     
+      </navigator>
+      <navigator class="function-item" href="/pages/onlineCustomerService">
+        <image class="function-icon" :src="customerServiceIcon" mode="aspectFill"></image>
+        <text class="function-text">在线客服</text>
+      
+      </navigator>
+      <navigator class="function-item" href="/pages/knowXetong" @click="goToKnowXetong">
+        <image class="function-icon" :src="knowXetongIcon" mode="aspectFill"></image>
+        <text class="function-text" >了解小鹅通</text>
+     
+      </navigator>
+      <navigator class="function-item" href="/pages/settings">
+        <image class="function-icon" :src="settingsIcon" mode="aspectFill"></image>
+        <text class="function-text">设置</text>
+       
+      </navigator>
+    </view>
+  </view>
 </template>
 
 <script>
 	export default {
-		data() {
-			return {
-				
-			}
-		},
-		methods: {
-			
-		}
-	}
+	  data() {
+	    return {
+	      // 头像地址,需替换为真实路径
+	      avatarUrl: '/static/my/photo.png',
+	      phone: '19931034261',
+	      // 各图标地址,需替换为真实路径
+	      calendarIcon: '/static/my/rili.png',
+	      downloadIcon: '/static/my/wdxz.png',
+	      wrongBookIcon: '/static/my/ctb.png',
+	      superMemberIcon: '/static/my/svip.png',
+	      subscribeStoreIcon: '/static/my/shop.png',
+	      storeBackendIcon: '/static/my/gys.png',
+	      recycleBinIcon: '/static/my/hsz.png',
+	      notificationIcon: '/static/my/tz.png',
+	      feedbackIcon: '/static/my/yj.png',
+	      customerServiceIcon: '/static/my/kf.png',
+	      knowXetongIcon: '/static/logo.png',
+	      settingsIcon: '/static/my/sz.png',
+	      arrowIcon: '/static/my/o.png'
+	    };
+	  },
+	  methods: {
+	    goToCalendar() {
+	      uni.navigateTo({ url: '/pages/calendar' });
+	    },
+	    goToDownload() {
+	      uni.navigateTo({ url: '/pages/download' });
+	    },
+	    goToWrongBook() {
+	      uni.navigateTo({ url: '/pages/wrongBook' });
+	    },
+	    goToSuperMember() {
+	      uni.navigateTo({ url: '/pages/superMember' });
+	    },
+	    goToSubscribeStore() {
+	      uni.navigateTo({ url: '/pages/subscribeStore' });
+	    },
+		goToKnowXetong() {
+          uni.navigateTo({ url: '/pages/knowXetong/knowXetong' });
+	    }
+	  }
+	};
 </script>
 
 <style>
+.container {
+  background-color: #f5f7fa;
+  padding: 20rpx;
+}
+.header {
+  display: flex;
+  align-items: center;
+  margin-bottom: 20rpx;
+}
+.avatar {
+  width: 80rpx;
+  height: 80rpx;
+  border-radius: 50%;
+  margin-right: 20rpx;
+}
+.user-info {
+  display: flex;
+  flex-direction: column;
+}
+.phone {
+  font-size: 32rpx;
+  font-weight: bold;
+}
+.personal-info {
+  font-size: 28rpx;
+  color: #999;
+}
+.my-study {
+  background-color: #fff;
+  border-radius: 20rpx;
+  padding: 30rpx;
+  margin-bottom: 25rpx;
+}
+.section-title {
+  font-size: 32rpx;
+  font-weight: bold;
+  margin-bottom: 10rpx;
+}
+.function-icons {
+  display: flex;
+  justify-content: space-between;
+}
+.icon-item {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+.icon {
+  width: 60rpx;
+  height: 60rpx;
+  margin-bottom: 10rpx;
+}
+.icon-text {
+  font-size: 28rpx;
+}
+.function-list {
+  background-color: #fff;
+  border-radius: 10rpx;
+  padding: 30rpx;
+}
+.function-item {
+  display: flex;
+  align-items: left;
+/*  justify-content: space-between; */
+  padding: 25rpx 0;
+  border-bottom: 1rpx solid #eee;
+  text-align: left; /* 让子元素内文本靠左对齐 */
+}
+
+.function-icon {
+  width: 40rpx;
+  height: 40rpx;
+  margin-right: 20rpx;
+}
+.function-text {
+  text-align: left;
+  font-size: 32rpx;
+}
 
 </style>

BIN
static/my/ctb.png


BIN
static/my/gys.png


BIN
static/my/hsz.png




BIN
static/my/photo.png


BIN
static/my/rili.png


BIN
static/my/shop.png


BIN
static/my/svip.png




BIN
static/my/wdxz.png



BIN
static/wechat.png


+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map

@@ -1 +1 @@
-{"version":3,"file":"app.js","sources":["App.vue"],"sourcesContent":["<script>\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t},\r\n\t\tonShow: function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t/*每个页面公共css */\r\n</style>\n"],"names":["uni"],"mappings":";;;;;;;;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,YAAY;AAAA,EACxB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,UAAU;AAAA,EACtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACvB;AACD;;;;;;;;;"}
+{"version":3,"file":"app.js","sources":["App.vue"],"sourcesContent":["<script>\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t},\r\n\t\tonShow: function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t/*每个页面公共css */\r\n</style>\n"],"names":["uni"],"mappings":";;;;;;;;;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,YAAY;AAAA,EACxB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,UAAU;AAAA,EACtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACvB;AACD;;;;;;;;;"}

+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map

@@ -1 +1 @@
-{"version":3,"file":"assets.js","sources":["static/logo.png","../../../../../static/wechat.png","static/phone.png","static/qq.png"],"sourcesContent":["export default \"__VITE_ASSET__23f9f735__\"","export default \"/static/wechat.png\"","export default \"__VITE_ASSET__cb1050ae__\"","export default \"__VITE_ASSET__6e492841__\""],"names":[],"mappings":";AAAA,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;"}
+{"version":3,"file":"assets.js","sources":["static/logo.png","static/wechat.png","static/phone.png","static/qq.png","../../../../../static/my/back.png"],"sourcesContent":["export default \"__VITE_ASSET__23f9f735__\"","export default \"__VITE_ASSET__f4886b07__\"","export default \"__VITE_ASSET__cb1050ae__\"","export default \"__VITE_ASSET__6e492841__\"","export default \"/static/my/back.png\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;;"}

+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/about.js.map

@@ -0,0 +1 @@
+{"version":3,"file":"about.js","sources":["../../../../../HBuilder/HBuilderX.4.55.2025030718/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvYWJvdXQudnVl"],"sourcesContent":["import MiniProgramPage from 'D:/zhentao/项目/code/小鹅通/XiaoETongApp/pages/about.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}

+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/about/about.js.map

@@ -0,0 +1 @@
+{"version":3,"file":"about.js","sources":["../../../../../HBuilder/HBuilderX.4.55.2025030718/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvYWJvdXQvYWJvdXQudnVl"],"sourcesContent":["import MiniProgramPage from 'D:/zhentao/项目/code/小鹅通/XiaoETongApp/pages/about/about.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}

+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/knowXetong/knowXetong.js.map

@@ -0,0 +1 @@
+{"version":3,"file":"knowXetong.js","sources":["../../../../../HBuilder/HBuilderX.4.55.2025030718/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMva25vd1hldG9uZy9rbm93WGV0b25nLnZ1ZQ"],"sourcesContent":["import MiniProgramPage from 'D:/zhentao/项目/code/小鹅通/XiaoETongApp/pages/knowXetong/knowXetong.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}

+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map

@@ -1 +1 @@
-{"version":3,"file":"index.js","sources":["../../../../../HBuilder/HBuilderX.4.55.2025030718/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbG9naW4vaW5kZXgudnVl"],"sourcesContent":["import MiniProgramPage from 'D:/zhentao/项目/code/小鹅通/XiaoETongApp/pages/login/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}
+{"version":3,"file":"index.js","sources":["../../../../../HBuilder/HBuilderX.4.55.2025030718/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbG9naW4vaW5kZXgudnVl"],"sourcesContent":["import MiniProgramPage from 'D:/zhentao/项目/code/小鹅通/XiaoETongApp/pages/login/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}

+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/index.js.map

@@ -1 +1 @@
-{"version":3,"file":"index.js","sources":["../../../../../HBuilder/HBuilderX.4.55.2025030718/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbWluZS9pbmRleC52dWU"],"sourcesContent":["import MiniProgramPage from 'D:/zhentao/项目/code/小鹅通/XiaoETongApp/pages/mine/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}
+{"version":3,"file":"index.js","sources":["../../../../../HBuilder/HBuilderX.4.55.2025030718/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbWluZS9pbmRleC52dWU"],"sourcesContent":["import MiniProgramPage from 'D:/zhentao/项目/code/小鹅通/XiaoETongApp/pages/mine/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}

+ 1 - 0
unpackage/dist/dev/mp-weixin/app.js

@@ -9,6 +9,7 @@ if (!Math) {
   "./pages/find/index.js";
   "./pages/message/index.js";
   "./pages/mine/index.js";
+  "./pages/knowXetong/knowXetong.js";
 }
 const _sfc_main = {
   onLaunch: function() {

+ 2 - 1
unpackage/dist/dev/mp-weixin/app.json

@@ -6,7 +6,8 @@
     "pages/protocol/privacy",
     "pages/find/index",
     "pages/message/index",
-    "pages/mine/index"
+    "pages/mine/index",
+    "pages/knowXetong/knowXetong"
   ],
   "window": {
     "navigationBarTextStyle": "black",

+ 4 - 2
unpackage/dist/dev/mp-weixin/common/assets.js

@@ -1,10 +1,12 @@
 "use strict";
-const _imports_0 = "/static/logo.png";
+const _imports_1$1 = "/static/logo.png";
 const _imports_1 = "/static/wechat.png";
 const _imports_2 = "/static/phone.png";
 const _imports_3 = "/static/qq.png";
+const _imports_0 = "/static/my/back.png";
 exports._imports_0 = _imports_0;
-exports._imports_1 = _imports_1;
+exports._imports_1 = _imports_1$1;
+exports._imports_1$1 = _imports_1;
 exports._imports_2 = _imports_2;
 exports._imports_3 = _imports_3;
 //# sourceMappingURL=../../.sourcemap/mp-weixin/common/assets.js.map

+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/find/index.wxml

@@ -1 +1 @@
-<view></view>
+<view> hello </view>

+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/index/index.js

@@ -13,7 +13,7 @@ const _sfc_main = {
 };
 function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
   return {
-    a: common_assets._imports_0,
+    a: common_assets._imports_1,
     b: common_vendor.t($data.title)
   };
 }

+ 44 - 0
unpackage/dist/dev/mp-weixin/pages/knowXetong/knowXetong.js

@@ -0,0 +1,44 @@
+"use strict";
+const common_vendor = require("../../common/vendor.js");
+const common_assets = require("../../common/assets.js");
+const _sfc_main = {
+  data() {
+    return {};
+  },
+  methods: {
+    goBack() {
+      common_vendor.index.navigateBack();
+    },
+    openUrl(url) {
+      common_vendor.index.setClipboardData({
+        data: url,
+        success: () => {
+          common_vendor.index.showToast({ title: "链接已复制", icon: "none" });
+        }
+      });
+    },
+    checkUpdate() {
+      common_vendor.index.showToast({ title: "已是最新版本", icon: "none" });
+    },
+    fuwuxieyi() {
+      common_vendor.index.navigateTo({ url: "/pages/protocol/service" });
+    },
+    yinsizhengce() {
+      common_vendor.index.navigateTo({ url: "/pages/protocol/privacy" });
+    }
+  }
+};
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+  return {
+    a: common_assets._imports_0,
+    b: common_vendor.o((...args) => $options.goBack && $options.goBack(...args)),
+    c: common_assets._imports_1,
+    d: common_vendor.o(($event) => $options.openUrl("https://xiaoek-tech.com")),
+    e: common_vendor.o((...args) => $options.checkUpdate && $options.checkUpdate(...args)),
+    f: common_vendor.o((...args) => $options.fuwuxieyi && $options.fuwuxieyi(...args)),
+    g: common_vendor.o((...args) => $options.yinsizhengce && $options.yinsizhengce(...args))
+  };
+}
+const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
+wx.createPage(MiniProgramPage);
+//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/knowXetong/knowXetong.js.map

+ 4 - 0
unpackage/dist/dev/mp-weixin/pages/knowXetong/knowXetong.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "",
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/pages/knowXetong/knowXetong.wxml

@@ -0,0 +1 @@
+<view class="about-container"><view class="nav-bar"><image class="back-arrow" src="{{a}}" bindtap="{{b}}"></image><text class="nav-title">了解小鹅通</text></view><view class="about-header"><image class="about-logo" src="{{c}}"></image><view class="about-title">小鹅通</view><view class="about-version">Version 5.10.2</view><view class="about-id">b_u_cvj80rjq943h407qktbg</view></view><view class="about-list"><view class="about-item" bindtap="{{d}}"><text>小鹅通官网</text><text class="about-right">xiaoek-tech.com</text></view><view class="about-item" bindtap="{{e}}"><text>版本更新</text><view class="about-dot"></view></view><view class="about-item" bindtap="{{f}}"><text>服务协议</text></view><view class="about-item" bindtap="{{g}}"><text>隐私政策</text></view><view class="about-item"><text>热线电话</text><text class="about-right">周一至周日9:00-19:00</text></view><view class="about-item"><text>互联网违法和不良信息举报电话</text><text class="about-right">400-102-6665</text></view><view class="about-item"><text>互联网不良信息举报邮箱</text><text class="about-right">xiaoeks@xiaoek-tech.com</text></view></view></view>

+ 79 - 0
unpackage/dist/dev/mp-weixin/pages/knowXetong/knowXetong.wxss

@@ -0,0 +1,79 @@
+
+.about-container {
+		background: #fff;
+		min-height: 100vh;
+}
+.nav-bar {
+		position: relative;
+		height: 100rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		border-bottom: 1rpx solid #f0f0f0;
+}
+.back-arrow {
+		position: absolute;
+		left: 30rpx;
+		width: 40rpx;
+		height: 40rpx;
+		top: 50%;
+		transform: translateY(-50%);
+}
+.nav-title {
+		font-size: 34rpx;
+		font-weight: bold;
+}
+.about-header {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		margin: 40rpx 0 30rpx 0;
+}
+.about-logo {
+		width: 120rpx;
+		height: 120rpx;
+		margin-bottom: 20rpx;
+}
+.about-title {
+		font-size: 36rpx;
+		font-weight: bold;
+		margin-bottom: 10rpx;
+}
+.about-version {
+		color: #888;
+		font-size: 28rpx;
+		margin-bottom: 5rpx;
+}
+.about-id {
+		color: #bbb;
+		font-size: 22rpx;
+		margin-bottom: 20rpx;
+}
+.about-list {
+		background: #fff;
+		border-radius: 20rpx;
+		overflow: hidden;
+		margin: 0 20rpx;
+}
+.about-item {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 32rpx 0;
+		border-bottom: 1rpx solid #f0f0f0;
+		font-size: 30rpx;
+}
+.about-item:last-child {
+		border-bottom: none;
+}
+.about-right {
+		color: #bbb;
+		font-size: 26rpx;
+}
+.about-dot {
+		width: 16rpx;
+		height: 16rpx;
+		background: #ff3b30;
+		border-radius: 50%;
+		margin-left: 10rpx;
+}

+ 178 - 86
unpackage/dist/dev/mp-weixin/pages/login/index.js

@@ -20,12 +20,6 @@ const _sfc_main = {
     const regCodeCountdown = common_vendor.ref(0);
     let loginCodeTimer = null;
     let regCodeTimer = null;
-    function handleLogin() {
-      if (!agreed.value) {
-        common_vendor.index.showToast({ title: "请先同意协议", icon: "none" });
-        return;
-      }
-    }
     function openProtocol(type) {
       const urls = {
         service: "/pages/protocol/service",
@@ -34,6 +28,106 @@ const _sfc_main = {
       common_vendor.index.navigateTo({ url: urls[type] });
     }
     function socialLogin(type) {
+      if (!agreed.value) {
+        common_vendor.index.showToast({
+          title: "请先同意服务协议和隐私政策",
+          icon: "none"
+        });
+        return;
+      }
+      if (type === "wechat") {
+        common_vendor.index.login({
+          provider: "weixin",
+          success: async (loginRes) => {
+            common_vendor.index.__f__("log", "at pages/login/index.vue:148", "uni.login result:", loginRes);
+            if (loginRes.code) {
+              try {
+                const userInfoRes = await common_vendor.index.getUserProfile({
+                  desc: "用于完善用户资料"
+                }).catch((err) => {
+                  common_vendor.index.__f__("error", "at pages/login/index.vue:154", "getUserProfile error:", err);
+                  common_vendor.index.showToast({
+                    title: "已取消授权",
+                    icon: "none"
+                  });
+                  throw err;
+                });
+                common_vendor.index.__f__("log", "at pages/login/index.vue:162", "userInfoRes:", userInfoRes);
+                if (!userInfoRes || !userInfoRes.userInfo) {
+                  common_vendor.index.showToast({
+                    title: "未获取到用户信息",
+                    icon: "none"
+                  });
+                  return;
+                }
+                const wxLoginDto = {
+                  avatarUrl: userInfoRes.userInfo.avatarUrl,
+                  gender: userInfoRes.userInfo.gender,
+                  nickName: userInfoRes.userInfo.nickName
+                };
+                const requestData = {
+                  code: loginRes.code,
+                  wxLoginDto
+                };
+                if (userInfoRes.encryptedData)
+                  requestData.encryptedData = userInfoRes.encryptedData;
+                if (userInfoRes.iv)
+                  requestData.iv = userInfoRes.iv;
+                common_vendor.index.__f__("log", "at pages/login/index.vue:186", "requestData:", requestData);
+                common_vendor.index.request({
+                  url: "http://localhost:9500/wechat/login",
+                  method: "POST",
+                  data: requestData,
+                  success: (res) => {
+                    common_vendor.index.__f__("log", "at pages/login/index.vue:193", "后端返回:", res);
+                    if (res.statusCode === 200 && res.data.code === 200) {
+                      if (res.data.token) {
+                        common_vendor.index.setStorageSync("token", res.data.token);
+                      }
+                      common_vendor.index.setStorageSync("isLoggedIn", true);
+                      common_vendor.index.setStorageSync("userInfo", wxLoginDto);
+                      common_vendor.index.showToast({
+                        title: "登录成功",
+                        icon: "success",
+                        duration: 1500
+                      });
+                      common_vendor.index.reLaunch({
+                        url: "/pages/index/index"
+                      });
+                    } else {
+                      common_vendor.index.showToast({
+                        title: res.data.msg || "登录失败,请重试",
+                        icon: "none"
+                      });
+                    }
+                  },
+                  fail: (err) => {
+                    common_vendor.index.__f__("error", "at pages/login/index.vue:218", "uni.request error:", err);
+                    common_vendor.index.showToast({
+                      title: "网络错误,请稍后重试",
+                      icon: "none"
+                    });
+                  }
+                });
+              } catch (err) {
+                common_vendor.index.__f__("error", "at pages/login/index.vue:227", "catch error:", err);
+              }
+            } else {
+              common_vendor.index.showToast({
+                title: "微信登录失败",
+                icon: "none"
+              });
+            }
+          },
+          fail: (err) => {
+            common_vendor.index.__f__("error", "at pages/login/index.vue:237", "uni.login error:", err);
+            common_vendor.index.showToast({
+              title: "微信登录失败,请重试",
+              icon: "none"
+            });
+          }
+        });
+      }
     }
     function openRegister() {
       showLoginPopup.value = false;
@@ -55,13 +149,13 @@ const _sfc_main = {
           loginCodeTimer = null;
         }
       }, 1e3);
-      common_vendor.index.__f__("log", "at pages/login/index.vue:159", "开始获取验证码...");
+      common_vendor.index.__f__("log", "at pages/login/index.vue:268", "开始获取验证码...");
       common_vendor.index.request({
         url: "http://localhost:9500/user/code",
         method: "POST",
         data: { phone: loginPhone.value },
         success(res) {
-          common_vendor.index.__f__("log", "at pages/login/index.vue:165", "验证码响应:", res.data);
+          common_vendor.index.__f__("log", "at pages/login/index.vue:274", "验证码响应:", res.data);
           if (res.statusCode === 200) {
             common_vendor.index.showToast({ title: "验证码已发送", icon: "none" });
           } else {
@@ -69,7 +163,7 @@ const _sfc_main = {
           }
         },
         fail(err) {
-          common_vendor.index.__f__("error", "at pages/login/index.vue:173", "获取验证码失败:", err);
+          common_vendor.index.__f__("error", "at pages/login/index.vue:282", "获取验证码失败:", err);
           common_vendor.index.showToast({ title: "网络错误", icon: "none" });
         }
       });
@@ -90,13 +184,13 @@ const _sfc_main = {
           regCodeTimer = null;
         }
       }, 1e3);
-      common_vendor.index.__f__("log", "at pages/login/index.vue:196", "开始获取注册验证码...");
+      common_vendor.index.__f__("log", "at pages/login/index.vue:305", "开始获取注册验证码...");
       common_vendor.index.request({
         url: "http://localhost:9500/user/code",
         method: "POST",
         data: { phone: regPhone.value },
         success(res) {
-          common_vendor.index.__f__("log", "at pages/login/index.vue:202", "验证码响应:", res.data);
+          common_vendor.index.__f__("log", "at pages/login/index.vue:311", "验证码响应:", res.data);
           if (res.statusCode === 200) {
             common_vendor.index.showToast({ title: "验证码已发送", icon: "none" });
           } else {
@@ -104,7 +198,7 @@ const _sfc_main = {
           }
         },
         fail(err) {
-          common_vendor.index.__f__("error", "at pages/login/index.vue:210", "获取验证码失败:", err);
+          common_vendor.index.__f__("error", "at pages/login/index.vue:319", "获取验证码失败:", err);
           common_vendor.index.showToast({ title: "网络错误", icon: "none" });
         }
       });
@@ -119,7 +213,7 @@ const _sfc_main = {
           common_vendor.index.showToast({ title: "请输入验证码", icon: "none" });
           return;
         }
-        common_vendor.index.__f__("log", "at pages/login/index.vue:226", "开始登录请求...");
+        common_vendor.index.__f__("log", "at pages/login/index.vue:335", "开始登录请求...");
         common_vendor.index.request({
           url: "http://localhost:9500/user/login",
           method: "POST",
@@ -128,8 +222,8 @@ const _sfc_main = {
             code: loginCode.value
           },
           success(res) {
-            common_vendor.index.__f__("log", "at pages/login/index.vue:235", "登录响应数据:", res.data);
-            common_vendor.index.__f__("log", "at pages/login/index.vue:236", "响应状态码:", res.statusCode);
+            common_vendor.index.__f__("log", "at pages/login/index.vue:344", "登录响应数据:", res.data);
+            common_vendor.index.__f__("log", "at pages/login/index.vue:345", "响应状态码:", res.statusCode);
             if (res.statusCode === 200) {
               common_vendor.index.setStorageSync("userPhone", loginPhone.value);
               common_vendor.index.setStorageSync("isLoggedIn", true);
@@ -139,22 +233,22 @@ const _sfc_main = {
                 icon: "success",
                 duration: 1500
               });
-              common_vendor.index.__f__("log", "at pages/login/index.vue:255", "开始跳转到首页...");
+              common_vendor.index.__f__("log", "at pages/login/index.vue:364", "开始跳转到首页...");
               common_vendor.index.reLaunch({
                 url: "/pages/index/index",
                 success: () => {
-                  common_vendor.index.__f__("log", "at pages/login/index.vue:259", "跳转成功");
+                  common_vendor.index.__f__("log", "at pages/login/index.vue:368", "跳转成功");
                 },
                 fail: (err) => {
-                  common_vendor.index.__f__("error", "at pages/login/index.vue:262", "reLaunch 跳转失败:", err);
-                  common_vendor.index.__f__("log", "at pages/login/index.vue:264", "尝试使用 switchTab 跳转...");
+                  common_vendor.index.__f__("error", "at pages/login/index.vue:371", "reLaunch 跳转失败:", err);
+                  common_vendor.index.__f__("log", "at pages/login/index.vue:373", "尝试使用 switchTab 跳转...");
                   common_vendor.index.switchTab({
                     url: "/pages/index/index",
                     success: () => {
-                      common_vendor.index.__f__("log", "at pages/login/index.vue:268", "switchTab 跳转成功");
+                      common_vendor.index.__f__("log", "at pages/login/index.vue:377", "switchTab 跳转成功");
                     },
                     fail: (err2) => {
-                      common_vendor.index.__f__("error", "at pages/login/index.vue:271", "switchTab 跳转失败:", err2);
+                      common_vendor.index.__f__("error", "at pages/login/index.vue:380", "switchTab 跳转失败:", err2);
                       common_vendor.index.showToast({
                         title: "页面跳转失败,请重试",
                         icon: "none"
@@ -164,7 +258,7 @@ const _sfc_main = {
                 }
               });
             } else {
-              common_vendor.index.__f__("log", "at pages/login/index.vue:281", "登录失败,状态码:", res.statusCode);
+              common_vendor.index.__f__("log", "at pages/login/index.vue:390", "登录失败,状态码:", res.statusCode);
               common_vendor.index.showToast({
                 title: res.data.msg || "登录失败,请重试",
                 icon: "none"
@@ -172,7 +266,7 @@ const _sfc_main = {
             }
           },
           fail(err) {
-            common_vendor.index.__f__("error", "at pages/login/index.vue:289", "登录请求失败:", err);
+            common_vendor.index.__f__("error", "at pages/login/index.vue:398", "登录请求失败:", err);
             common_vendor.index.showToast({ title: "网络错误", icon: "none" });
           }
         });
@@ -185,7 +279,7 @@ const _sfc_main = {
           common_vendor.index.showToast({ title: "请输入密码", icon: "none" });
           return;
         }
-        common_vendor.index.__f__("log", "at pages/login/index.vue:303", "开始登录请求...");
+        common_vendor.index.__f__("log", "at pages/login/index.vue:412", "开始登录请求...");
         common_vendor.index.request({
           url: "http://localhost:9500/user/loginup",
           method: "POST",
@@ -194,8 +288,8 @@ const _sfc_main = {
             password: loginPassword.value
           },
           success(res) {
-            common_vendor.index.__f__("log", "at pages/login/index.vue:312", "登录响应数据:", res.data);
-            common_vendor.index.__f__("log", "at pages/login/index.vue:313", "响应状态码:", res.statusCode);
+            common_vendor.index.__f__("log", "at pages/login/index.vue:421", "登录响应数据:", res.data);
+            common_vendor.index.__f__("log", "at pages/login/index.vue:422", "响应状态码:", res.statusCode);
             if (res.statusCode === 200 && res.data.code === 200) {
               common_vendor.index.setStorageSync("userPhone", loginAccount.value);
               common_vendor.index.setStorageSync("isLoggedIn", true);
@@ -205,22 +299,22 @@ const _sfc_main = {
                 icon: "success",
                 duration: 1500
               });
-              common_vendor.index.__f__("log", "at pages/login/index.vue:332", "开始跳转到首页...");
+              common_vendor.index.__f__("log", "at pages/login/index.vue:441", "开始跳转到首页...");
               common_vendor.index.reLaunch({
                 url: "/pages/index/index",
                 success: () => {
-                  common_vendor.index.__f__("log", "at pages/login/index.vue:336", "跳转成功");
+                  common_vendor.index.__f__("log", "at pages/login/index.vue:445", "跳转成功");
                 },
                 fail: (err) => {
-                  common_vendor.index.__f__("error", "at pages/login/index.vue:339", "reLaunch 跳转失败:", err);
-                  common_vendor.index.__f__("log", "at pages/login/index.vue:341", "尝试使用 switchTab 跳转...");
+                  common_vendor.index.__f__("error", "at pages/login/index.vue:448", "reLaunch 跳转失败:", err);
+                  common_vendor.index.__f__("log", "at pages/login/index.vue:450", "尝试使用 switchTab 跳转...");
                   common_vendor.index.switchTab({
                     url: "/pages/index/index",
                     success: () => {
-                      common_vendor.index.__f__("log", "at pages/login/index.vue:345", "switchTab 跳转成功");
+                      common_vendor.index.__f__("log", "at pages/login/index.vue:454", "switchTab 跳转成功");
                     },
                     fail: (err2) => {
-                      common_vendor.index.__f__("error", "at pages/login/index.vue:348", "switchTab 跳转失败:", err2);
+                      common_vendor.index.__f__("error", "at pages/login/index.vue:457", "switchTab 跳转失败:", err2);
                       common_vendor.index.showToast({
                         title: "页面跳转失败,请重试",
                         icon: "none"
@@ -230,8 +324,8 @@ const _sfc_main = {
                 }
               });
             } else {
-              common_vendor.index.__f__("log", "at pages/login/index.vue:358", "登录失败,状态码:", res.statusCode);
-              common_vendor.index.__f__("log", "at pages/login/index.vue:359", "登录失败,错误信息:", res.data.msg);
+              common_vendor.index.__f__("log", "at pages/login/index.vue:467", "登录失败,状态码:", res.statusCode);
+              common_vendor.index.__f__("log", "at pages/login/index.vue:468", "登录失败,错误信息:", res.data.msg);
               common_vendor.index.showToast({
                 title: res.data.msg || "账号或密码错误",
                 icon: "none",
@@ -240,7 +334,7 @@ const _sfc_main = {
             }
           },
           fail(err) {
-            common_vendor.index.__f__("error", "at pages/login/index.vue:368", "登录请求失败:", err);
+            common_vendor.index.__f__("error", "at pages/login/index.vue:477", "登录请求失败:", err);
             common_vendor.index.showToast({
               title: "网络错误,请稍后重试",
               icon: "none",
@@ -267,7 +361,7 @@ const _sfc_main = {
         common_vendor.index.showToast({ title: "请输入密码", icon: "none" });
         return;
       }
-      common_vendor.index.__f__("log", "at pages/login/index.vue:396", "开始注册请求...");
+      common_vendor.index.__f__("log", "at pages/login/index.vue:505", "开始注册请求...");
       common_vendor.index.request({
         url: "http://localhost:9500/user/register",
         method: "POST",
@@ -278,8 +372,8 @@ const _sfc_main = {
           password: regPassword.value
         },
         success(res) {
-          common_vendor.index.__f__("log", "at pages/login/index.vue:407", "注册响应数据:", res.data);
-          common_vendor.index.__f__("log", "at pages/login/index.vue:408", "响应状态码:", res.statusCode);
+          common_vendor.index.__f__("log", "at pages/login/index.vue:516", "注册响应数据:", res.data);
+          common_vendor.index.__f__("log", "at pages/login/index.vue:517", "响应状态码:", res.statusCode);
           if (res.statusCode === 200) {
             common_vendor.index.showToast({
               title: "注册成功",
@@ -293,7 +387,7 @@ const _sfc_main = {
               loginPhone.value = regPhone.value;
             }, 1500);
           } else {
-            common_vendor.index.__f__("log", "at pages/login/index.vue:429", "注册失败,状态码:", res.statusCode);
+            common_vendor.index.__f__("log", "at pages/login/index.vue:538", "注册失败,状态码:", res.statusCode);
             common_vendor.index.showToast({
               title: res.data.msg || "注册失败,请重试",
               icon: "none"
@@ -301,7 +395,7 @@ const _sfc_main = {
           }
         },
         fail(err) {
-          common_vendor.index.__f__("error", "at pages/login/index.vue:437", "注册请求失败:", err);
+          common_vendor.index.__f__("error", "at pages/login/index.vue:546", "注册请求失败:", err);
           common_vendor.index.showToast({ title: "网络错误", icon: "none" });
         }
       });
@@ -314,58 +408,56 @@ const _sfc_main = {
     });
     return (_ctx, _cache) => {
       return common_vendor.e({
-        a: common_assets._imports_0,
-        b: !agreed.value,
-        c: common_vendor.o(handleLogin),
-        d: common_assets._imports_1,
-        e: !agreed.value,
-        f: common_vendor.o(($event) => socialLogin()),
-        g: agreed.value,
-        h: common_vendor.o(($event) => agreed.value = !agreed.value),
-        i: common_vendor.o(($event) => openProtocol("service")),
-        j: common_vendor.o(($event) => openProtocol("privacy")),
-        k: common_assets._imports_2,
-        l: common_vendor.o(($event) => showLoginPopup.value = true),
-        m: common_assets._imports_3,
-        n: showLoginPopup.value
+        a: common_assets._imports_1,
+        b: common_assets._imports_1$1,
+        c: !agreed.value,
+        d: common_vendor.o(($event) => socialLogin("wechat")),
+        e: agreed.value,
+        f: common_vendor.o(($event) => agreed.value = !agreed.value),
+        g: common_vendor.o(($event) => openProtocol("service")),
+        h: common_vendor.o(($event) => openProtocol("privacy")),
+        i: common_assets._imports_2,
+        j: common_vendor.o(($event) => showLoginPopup.value = true),
+        k: common_assets._imports_3,
+        l: showLoginPopup.value
       }, showLoginPopup.value ? common_vendor.e({
-        o: common_vendor.o(($event) => showLoginPopup.value = false),
-        p: loginTab.value === "phone" ? 1 : "",
-        q: common_vendor.o(($event) => loginTab.value = "phone"),
-        r: loginTab.value === "account" ? 1 : "",
-        s: common_vendor.o(($event) => loginTab.value = "account"),
-        t: loginTab.value === "phone"
+        m: common_vendor.o(($event) => showLoginPopup.value = false),
+        n: loginTab.value === "phone" ? 1 : "",
+        o: common_vendor.o(($event) => loginTab.value = "phone"),
+        p: loginTab.value === "account" ? 1 : "",
+        q: common_vendor.o(($event) => loginTab.value = "account"),
+        r: loginTab.value === "phone"
       }, loginTab.value === "phone" ? {
-        v: loginPhone.value,
-        w: common_vendor.o(($event) => loginPhone.value = $event.detail.value),
-        x: loginCode.value,
-        y: common_vendor.o(($event) => loginCode.value = $event.detail.value),
-        z: common_vendor.t(loginCodeCountdown.value > 0 ? loginCodeCountdown.value + "s" : "获取验证码"),
-        A: loginCodeCountdown.value > 0,
-        B: common_vendor.o(getLoginCode)
+        s: loginPhone.value,
+        t: common_vendor.o(($event) => loginPhone.value = $event.detail.value),
+        v: loginCode.value,
+        w: common_vendor.o(($event) => loginCode.value = $event.detail.value),
+        x: common_vendor.t(loginCodeCountdown.value > 0 ? loginCodeCountdown.value + "s" : "获取验证码"),
+        y: loginCodeCountdown.value > 0,
+        z: common_vendor.o(getLoginCode)
       } : {
-        C: loginAccount.value,
-        D: common_vendor.o(($event) => loginAccount.value = $event.detail.value),
-        E: loginPassword.value,
-        F: common_vendor.o(($event) => loginPassword.value = $event.detail.value)
+        A: loginAccount.value,
+        B: common_vendor.o(($event) => loginAccount.value = $event.detail.value),
+        C: loginPassword.value,
+        D: common_vendor.o(($event) => loginPassword.value = $event.detail.value)
       }, {
-        G: common_vendor.o(handlePopupLogin),
-        H: common_vendor.o(openRegister)
+        E: common_vendor.o(handlePopupLogin),
+        F: common_vendor.o(openRegister)
       }) : {}, {
-        I: showRegisterPopup.value
+        G: showRegisterPopup.value
       }, showRegisterPopup.value ? {
-        J: common_vendor.o(($event) => showRegisterPopup.value = false),
-        K: regPhone.value,
-        L: common_vendor.o(($event) => regPhone.value = $event.detail.value),
-        M: regCode.value,
-        N: common_vendor.o(($event) => regCode.value = $event.detail.value),
-        O: common_vendor.t(regCodeCountdown.value > 0 ? regCodeCountdown.value + "s" : "获取验证码"),
-        P: common_vendor.o(getRegCode),
-        Q: regAccount.value,
-        R: common_vendor.o(($event) => regAccount.value = $event.detail.value),
-        S: regPassword.value,
-        T: common_vendor.o(($event) => regPassword.value = $event.detail.value),
-        U: common_vendor.o(handleRegister)
+        H: common_vendor.o(($event) => showRegisterPopup.value = false),
+        I: regPhone.value,
+        J: common_vendor.o(($event) => regPhone.value = $event.detail.value),
+        K: regCode.value,
+        L: common_vendor.o(($event) => regCode.value = $event.detail.value),
+        M: common_vendor.t(regCodeCountdown.value > 0 ? regCodeCountdown.value + "s" : "获取验证码"),
+        N: common_vendor.o(getRegCode),
+        O: regAccount.value,
+        P: common_vendor.o(($event) => regAccount.value = $event.detail.value),
+        Q: regPassword.value,
+        R: common_vendor.o(($event) => regPassword.value = $event.detail.value),
+        S: common_vendor.o(handleRegister)
       } : {});
     };
   }

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/login/index.wxml


+ 61 - 3
unpackage/dist/dev/mp-weixin/pages/mine/index.js

@@ -2,12 +2,70 @@
 const common_vendor = require("../../common/vendor.js");
 const _sfc_main = {
   data() {
-    return {};
+    return {
+      // 头像地址,需替换为真实路径
+      avatarUrl: "/static/my/photo.png",
+      phone: "19931034261",
+      // 各图标地址,需替换为真实路径
+      calendarIcon: "/static/my/rili.png",
+      downloadIcon: "/static/my/wdxz.png",
+      wrongBookIcon: "/static/my/ctb.png",
+      superMemberIcon: "/static/my/svip.png",
+      subscribeStoreIcon: "/static/my/shop.png",
+      storeBackendIcon: "/static/my/gys.png",
+      recycleBinIcon: "/static/my/hsz.png",
+      notificationIcon: "/static/my/tz.png",
+      feedbackIcon: "/static/my/yj.png",
+      customerServiceIcon: "/static/my/kf.png",
+      knowXetongIcon: "/static/logo.png",
+      settingsIcon: "/static/my/sz.png",
+      arrowIcon: "/static/my/o.png"
+    };
   },
-  methods: {}
+  methods: {
+    goToCalendar() {
+      common_vendor.index.navigateTo({ url: "/pages/calendar" });
+    },
+    goToDownload() {
+      common_vendor.index.navigateTo({ url: "/pages/download" });
+    },
+    goToWrongBook() {
+      common_vendor.index.navigateTo({ url: "/pages/wrongBook" });
+    },
+    goToSuperMember() {
+      common_vendor.index.navigateTo({ url: "/pages/superMember" });
+    },
+    goToSubscribeStore() {
+      common_vendor.index.navigateTo({ url: "/pages/subscribeStore" });
+    },
+    goToKnowXetong() {
+      common_vendor.index.navigateTo({ url: "/pages/knowXetong/knowXetong" });
+    }
+  }
 };
 function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
-  return {};
+  return {
+    a: $data.avatarUrl,
+    b: common_vendor.t($data.phone),
+    c: $data.calendarIcon,
+    d: common_vendor.o((...args) => $options.goToCalendar && $options.goToCalendar(...args)),
+    e: $data.downloadIcon,
+    f: common_vendor.o((...args) => $options.goToDownload && $options.goToDownload(...args)),
+    g: $data.wrongBookIcon,
+    h: common_vendor.o((...args) => $options.goToWrongBook && $options.goToWrongBook(...args)),
+    i: $data.superMemberIcon,
+    j: common_vendor.o((...args) => $options.goToSuperMember && $options.goToSuperMember(...args)),
+    k: $data.subscribeStoreIcon,
+    l: common_vendor.o((...args) => $options.goToSubscribeStore && $options.goToSubscribeStore(...args)),
+    m: $data.storeBackendIcon,
+    n: $data.recycleBinIcon,
+    o: $data.notificationIcon,
+    p: $data.feedbackIcon,
+    q: $data.customerServiceIcon,
+    r: $data.knowXetongIcon,
+    s: common_vendor.o((...args) => $options.goToKnowXetong && $options.goToKnowXetong(...args)),
+    t: $data.settingsIcon
+  };
 }
 const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
 wx.createPage(MiniProgramPage);

Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
unpackage/dist/dev/mp-weixin/pages/mine/index.wxml


+ 79 - 0
unpackage/dist/dev/mp-weixin/pages/mine/index.wxss

@@ -0,0 +1,79 @@
+
+.container {
+  background-color: #f5f7fa;
+  padding: 20rpx;
+}
+.header {
+  display: flex;
+  align-items: center;
+  margin-bottom: 20rpx;
+}
+.avatar {
+  width: 80rpx;
+  height: 80rpx;
+  border-radius: 50%;
+  margin-right: 20rpx;
+}
+.user-info {
+  display: flex;
+  flex-direction: column;
+}
+.phone {
+  font-size: 32rpx;
+  font-weight: bold;
+}
+.personal-info {
+  font-size: 28rpx;
+  color: #999;
+}
+.my-study {
+  background-color: #fff;
+  border-radius: 20rpx;
+  padding: 30rpx;
+  margin-bottom: 25rpx;
+}
+.section-title {
+  font-size: 32rpx;
+  font-weight: bold;
+  margin-bottom: 10rpx;
+}
+.function-icons {
+  display: flex;
+  justify-content: space-between;
+}
+.icon-item {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+.icon {
+  width: 60rpx;
+  height: 60rpx;
+  margin-bottom: 10rpx;
+}
+.icon-text {
+  font-size: 28rpx;
+}
+.function-list {
+  background-color: #fff;
+  border-radius: 10rpx;
+  padding: 30rpx;
+}
+.function-item {
+  display: flex;
+  align-items: left;
+/*  justify-content: space-between; */
+  padding: 25rpx 0;
+  border-bottom: 1rpx solid #eee;
+  text-align: left; /* 让子元素内文本靠左对齐 */
+}
+.function-icon {
+  width: 40rpx;
+  height: 40rpx;
+  margin-right: 20rpx;
+}
+.function-text {
+  text-align: left;
+  font-size: 32rpx;
+}
+

+ 2 - 2
unpackage/dist/dev/mp-weixin/project.config.json

@@ -18,8 +18,8 @@
         }
     },
     "compileType": "miniprogram",
-    "libVersion": "3.8.3",
-    "appid": "touristappid",
+    "libVersion": "",
+    "appid": "wx97b71d70f5b2d51f",
     "projectname": "XiaoETongApp",
     "condition": {},
     "editorSetting": {

+ 2 - 1
unpackage/dist/dev/mp-weixin/project.private.config.json

@@ -3,5 +3,6 @@
     "projectname": "XiaoETongApp",
     "setting": {
         "compileHotReLoad": true
-    }
+    },
+    "libVersion": "2.25.4"
 }

BIN
unpackage/dist/dev/mp-weixin/static/my/ctb.png


BIN
unpackage/dist/dev/mp-weixin/static/my/gys.png


BIN
unpackage/dist/dev/mp-weixin/static/my/hsz.png


BIN
unpackage/dist/dev/mp-weixin/static/my/kf.png


BIN
unpackage/dist/dev/mp-weixin/static/my/o.png


BIN
unpackage/dist/dev/mp-weixin/static/my/photo.png


BIN
unpackage/dist/dev/mp-weixin/static/my/rili.png


BIN
unpackage/dist/dev/mp-weixin/static/my/shop.png


BIN
unpackage/dist/dev/mp-weixin/static/my/svip.png


BIN
unpackage/dist/dev/mp-weixin/static/my/sz.png


BIN
unpackage/dist/dev/mp-weixin/static/my/tz.png


BIN
unpackage/dist/dev/mp-weixin/static/my/wdxz.png


BIN
unpackage/dist/dev/mp-weixin/static/my/yj.png


BIN
unpackage/dist/dev/mp-weixin/static/wechat.png


Неке датотеке нису приказане због велике количине промена