Quellcode durchsuchen

增加密码加密相关方法,完成用户注册、用户登录一部分

littleblue55 vor 1 Woche
Ursprung
Commit
6979489851

+ 26 - 1
api/user.js

@@ -3,7 +3,32 @@ import request from '@/utils/request'
 // 登录方法
 export function usernameLogin(data) {
 	return request({
-		'url': '/login',
+		'url': '/user/login',
+		headers: {
+			isToken: false
+		},
+		'method': 'post',
+		'data': data
+	})
+}
+
+
+// 注册 
+export function register (data) {
+	return request({
+		'url': '/user/register',
+		headers: {
+			isToken: false
+		},
+		'method': 'post',
+		'data': data
+	})
+}
+
+// 发送手机验证码
+export function smsSend (data) {
+	return request({
+		'url': '/user/sms/send',
 		headers: {
 			isToken: false
 		},

+ 3 - 0
package.json

@@ -11,5 +11,8 @@
   "devDependencies": {
     "sass": "^1.83.1",
     "sass-loader": "^16.0.4"
+  },
+  "dependencies": {
+    "crypto-js": "^4.2.0"
   }
 }

+ 20 - 20
pages/forget/forget.vue

@@ -2,20 +2,20 @@
 	<view class="container">
 		<u-form :model="forgetForm" ref="forgetForm" label-width="160"
 			:label-style="{ color: '#000', fontSize: '30rpx'}">
-			<u-form-item label="手机号" prop="shouJiHao" :border-bottom="false">
-				<u-input height="80" placeholder="请输入手机号" border-color="#d0d0d0" v-model="forgetForm.shouJiHao"
+			<u-form-item label="手机号" prop="phone" :border-bottom="false">
+				<u-input height="80" placeholder="请输入手机号" border-color="#d0d0d0" v-model="forgetForm.phone"
 					:border="true" class="form-item-input" type="number" />
 			</u-form-item>
-			<u-form-item label="验证码" prop="yanZhengMa" :border-bottom="false">
+			<u-form-item label="验证码" prop="captcha" :border-bottom="false">
 				<view class="code-form-item">
-					<u-input height="80" placeholder="请输入验证码" border-color="#d0d0d0" v-model="forgetForm.yanZhengMa"
+					<u-input height="80" placeholder="请输入验证码" border-color="#d0d0d0" v-model="forgetForm.captcha"
 						:border="true" class="form-item-input code-input">
 					</u-input>
 					<u-button size="mini" type="primary" class="code-button" @click="getCode">{{ tips }}</u-button>
 				</view>
 			</u-form-item>
-			<u-form-item label="新密码" prop="xinMiMa" :border-bottom="false">
-				<u-input height="80" placeholder="请输入新密码" border-color="#d0d0d0" v-model="forgetForm.xinMiMa"
+			<u-form-item label="新密码" prop="newPwd" :border-bottom="false">
+				<u-input height="80" placeholder="请输入新密码" border-color="#d0d0d0" v-model="forgetForm.newPwd"
 					:border="true" class="form-item-input" type="password" />
 			</u-form-item>
 			<view class="form-button" @click="submit">
@@ -51,32 +51,32 @@
 			return {
 				// ----验证码 start -----
 				shuzijiaoduimaForm: {
-					shuZiJiaoDuiMa: '',
-					shuZiJiaoDuiMaUuid: ''
+					numberCaptcha: '',
+					numberCaptchaUuid: ''
 				},
-				shuzijiaoduimaSrc: 'https://imgconvert.csdnimg.cn/aHR0cDovL3RjLnhpYW55dWNvZGVyLmNuL2Jsb2cyMDIwMDEwNDIwMzUwNy5wbmc?x-oss-process=image/format,png',
+				numberCaptchaSrc: 'https://imgconvert.csdnimg.cn/aHR0cDovL3RjLnhpYW55dWNvZGVyLmNuL2Jsb2cyMDIwMDEwNDIwMzUwNy5wbmc?x-oss-process=image/format,png',
 				show: false,
 				tips: '',
 				seconds: 60,
 				// ----验证码 end -----
 				forgetForm: {
-					shouJiHao: '', //手机号
-					yanZhengMa: "", //验证码
-					yanZhengMaUuid: "",
-					xinMiMa: '', // 新密码
+					phone: '', //手机号
+					captcha: "", //验证码
+					captchaUuid: "",
+					newPwd: '', // 新密码
 				},
 				rules: {
-					yanZhengMa: [{
+					captcha: [{
 						required: true,
 						message: '请输入验证码',
 						trigger: ['blur']
 					}],
-					xinMiMa: [{
+					newPwd: [{
 						required: true,
 						message: '请输入新密码',
 						trigger: ['blur']
 					}],
-					shouJiHao: [{
+					phone: [{
 						required: true,
 						message: '请输入手机号码',
 						trigger: ['blur']
@@ -111,8 +111,8 @@
 				this.tips = text;
 			},
 			getCode() {
-				let { shouJiHao } = this.forgetForm
-				if(!/^1[3-9]\d{9}$/.test(shouJiHao)){
+				let { phone } = this.forgetForm
+				if(!/^1[3-9]\d{9}$/.test(phone)){
 					msg("请输入正确的手机号");
 					return;
 				}
@@ -168,8 +168,8 @@
 				// }
 				// // 发送手机验证码
 				// const codeRes = await getCodeApi();
-				// if(codeRes && codeRes.yanZhengMaUuid){
-				// 	this.forgetForm.yanZhengMaUuid = codeRes.yanZhengMaUuid
+				// if(codeRes && codeRes.captchaUuid){
+				// 	this.forgetForm.captchaUuid = codeRes.captchaUuid
 				// 	this.closePopup();
 				// 	this.$refs.uCode1.start()
 				// }

+ 1 - 1
pages/goOnEdu/course/courseDetail/component/courseComment/courseComment.vue

@@ -6,7 +6,7 @@
 			</view>
 			<view class="comment-list-right">
 				<view style="margin-bottom: 15rpx;">
-					<text class="comment-list-username">{{ comment.userName }}</text>
+					<text class="comment-list-username">{{ comment.username }}</text>
 					<text class="comment-list-moment">{{ formatTime(comment.commentTime) }}</text>
 				</view>
 				<view>{{ comment.content }}</view>

+ 16 - 16
pages/goOnEdu/course/courseDetail/courseDetail.vue

@@ -71,50 +71,50 @@
 	const commentList = ref([
 		{
 			commentId: "01",
-			userName: "用户名123",
-			avatar: "",
+			username: "用户名123",
+			iocn: "",
 			content:"评论内容评论内容评容,大赛冠军的",
 			commentTime: "2023-10-10 19:00:00"
 		},
 		{
 			commentId: "02",
-			userName: "用户名567",
-			avatar: "",
+			username: "用户名567",
+			iocn: "",
 			content:"hajdkhd dhasjhd 等哈十九点按时鉴定会撒低级,撒谎客户端喝酒侃大山哈吉斯肯定会大会开始觉得暗黑界的是客户,大赛冠军的",
 			commentTime: "2023-10-11 19:00:00"
 		},
 		{
 			commentId: "03",
-			userName: "用户名567",
-			avatar: "",
+			username: "用户名567",
+			iocn: "",
 			content:"hajdkhd dhasjhd ,,大赛冠军的",
 			commentTime: "2023-10-12 19:00:00"
 		},
 		{
 			commentId: "04",
-			userName: "用户名567",
-			avatar: "",
+			username: "用户名567",
+			iocn: "",
 			content:"hajdkhd dhasjhd 等哈十九点按时鉴定会撒低级,撒谎客户端喝酒侃大山哈吉斯肯定会大会开始觉得暗黑界的是客户,大赛冠军的",
 			commentTime: "2023-10-13 19:00:00"
 		},
 		{
 			commentId: "05",
-			userName: "用户名567",
-			avatar: "",
+			username: "用户名567",
+			iocn: "",
 			content:"hajdkhd dhasjhd 等哈十九点按时鉴定会撒低级,撒谎客户端喝酒侃大山哈吉斯肯定会大会开始觉得暗黑界的是客户,大赛冠军的",
 			commentTime: "2023-10-14 19:00:00"
 		},
 		{
 			commentId: "06",
-			userName: "用户名567",
-			avatar: "",
+			username: "用户名567",
+			iocn: "",
 			content:"hajdkhd dhasjhd 等哈十九点按时鉴定会撒低级,撒谎客户端喝酒侃大山哈吉斯肯定会大会开始觉得暗黑界的是客户,大赛冠军的",
 			commentTime: "2025-01-17 12:00:00"
 		},
 		{
 			commentId: "07",
-			userName: "用户名567",
-			avatar: "",
+			username: "用户名567",
+			iocn: "",
 			content:"hajdkhd dhasjhd 等哈十九点按时鉴定会撒低级,撒谎客户端喝酒侃大山哈吉斯肯定会大会开始觉得暗黑界的是客户,大赛冠军的",
 			commentTime: "2025-01-17 15:30:00"
 		}
@@ -156,8 +156,8 @@
 		// 发送给后端
 		commentList.value.push({
 			commentId: "0"+commentList.value.length,
-			userName: "890567",
-			avatar: "",
+			username: "890567",
+			iocn: "",
 			content: comment.value,
 			commentTime: formatDate(new Date())
 		})

+ 2 - 1
pages/index/index.vue

@@ -90,7 +90,7 @@
 	// 顶部导航栏高度
 	const navBarHeight = ref(0)
 	// 是否登录
-	const isLogin = ref(true)
+	const isLogin = authStore.isAuthenticated;
 
 	const loginModal = ref(false)
 	// 是否为会员,从缓存里拿取用户信息
@@ -267,6 +267,7 @@
 		})
 	})
 	onLoad(() => {
+		console.log(isLogin);
 		uni.setTabBarBadge({ //显示数字
 			index: 1, //tabbar下标
 			text: '999' //数字

+ 70 - 64
pages/login/login.vue

@@ -2,7 +2,8 @@
 	<view class="app-login-page">
 		<view class="app-login">
 			<view class="app-icon mb-30">
-				<image src="https://sylwt.top/api/visitor/resources/image?name=/ydl/menber-center/login-icon.png" mode="aspectFit" style="height: 40px;"></image>
+				<image src="https://sylwt.top/api/visitor/resources/image?name=/ydl/menber-center/login-icon.png"
+					mode="aspectFit" style="height: 40px;"></image>
 			</view>
 			<view class="app-title mb-30">
 				欢迎使用会员中心系统小程序
@@ -11,16 +12,16 @@
 				<view class="loginType">
 					<text :class="[loginType=='phone'? 'loginType-text-active': 'loginType-text']"
 						@click="loginType = 'phone'">手机登录</text>
-					<text :class="[loginType=='userName'? 'loginType-text-active': 'loginType-text']"
-						@click="loginType = 'userName'">账号登录</text>
+					<text :class="[loginType=='username'? 'loginType-text-active': 'loginType-text']"
+						@click="loginType = 'username'">账号登录</text>
 				</view>
 				<view class="phone-form" v-if="loginType=='phone'">、
 					<view class="form-item">
-						<u-input height="80" placeholder="请输入手机号" border-color="#d0d0d0" v-model="phoneForm.shouJiHao"
+						<u-input height="80" placeholder="请输入手机号" border-color="#d0d0d0" v-model="phoneForm.phone"
 							:border="true" class="form-item-input" type="number" @confirm="phoneLoginHandle" />
 					</view>
 					<view class="form-item">
-						<u-input height="80" placeholder="请输入验证码" border-color="#d0d0d0" v-model="phoneForm.yanZhengMa"
+						<u-input height="80" placeholder="请输入验证码" border-color="#d0d0d0" v-model="phoneForm.captcha"
 							:border="true" class="form-item-input" @confirm="phoneLoginHandle" />
 						<text class="form-item-text" @click="getCode">{{tips}}</text>
 						<!-- <text class="form-item-text" v-if="!isCounting" @click="requestVerificationCode">
@@ -32,13 +33,13 @@
 						立即登录
 					</view>
 				</view>
-				<view class="phone-form" v-if="loginType=='userName'">、
+				<view class="phone-form" v-if="loginType=='username'">、
 					<view class="form-item">
-						<u-input height="80" placeholder="请输入账号" border-color="#d0d0d0" v-model="userNameForm.zhangHao"
+						<u-input height="80" placeholder="请输入账号" border-color="#d0d0d0" v-model="userNameForm.username"
 							:border="true" class="form-item-input" @confirm="userNameLoginHandle" />
 					</view>
 					<view class="form-item">
-						<u-input height="80" placeholder="请输入密码" border-color="#d0d0d0" v-model="userNameForm.miMa"
+						<u-input height="80" placeholder="请输入密码" border-color="#d0d0d0" v-model="userNameForm.password"
 							:border="true" class="form-item-input" @confirm="userNameLoginHandle" />
 					</view>
 					<view class="form-button" @click="userNameLoginHandle">
@@ -60,11 +61,13 @@
 			<view class="app-icon mb-30">
 				<u-button v-if="canIUseGetUserProfile" @click="getUserProfile" class="custom-button"
 					style="width: 40px;" plain :hair-line="false">
-					<image src="https://sylwt.top/api/visitor/resources/image?name=/ydl/menber-center/weixin.png" mode="aspectFit" style="width: 40px;height: 40px;" />
+					<image src="https://sylwt.top/api/visitor/resources/image?name=/ydl/menber-center/weixin.png"
+						mode="aspectFit" style="width: 40px;height: 40px;" />
 				</u-button>
 				<u-button v-else open-type="getPhoneNumber" @getuserinfo="decryptPhoneNumber" class="custom-button"
 					style="width: 40px;" plain :hair-line="false">
-					<image src="https://sylwt.top/api/visitor/resources/image?name=/ydl/menber-center/weixin.png" mode="aspectFit" style="width: 40px;height: 40px;" />
+					<image src="https://sylwt.top/api/visitor/resources/image?name=/ydl/menber-center/weixin.png"
+						mode="aspectFit" style="width: 40px;height: 40px;" />
 				</u-button>
 				<!-- <button type="default" open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber">获取手机号</button> -->
 				<!-- <image src="https://sylwt.top/api/visitor/resources/image?name=/ydl/menber-center/weixin.png" mode="aspectFit" style="height: 40px;"></image> -->
@@ -76,9 +79,9 @@
 				<text class="popup-title">请输入验证码</text>
 				<view class="popup-content">
 					<u-input height="80" placeholder="请输入验证码" border-color="#d0d0d0"
-						v-model="shuzijiaoduimaForm.shuzijiaoduima" :border="true" class="form-item-input"
+						v-model="numberCaptchaForm.numberCaptcha" :border="true" class="form-item-input"
 						style="flex-grow: 1;" @confirm="submitCode" />
-					<image :src="shuzijiaoduimaSrc" mode="aspectFit"
+					<image :src="numberCaptchaSrc" mode="aspectFit"
 						style="height:40px;margin-left:20rpx;width: 180rpx;flex: 0 0 auto;"></image>
 				</view>
 				<view class="popup-btn">
@@ -102,11 +105,15 @@
 		usernameLogin
 	} from "@/api/user.js"
 	import {
-		msg
+		msg,
+		msgSuccess
 	} from "@/utils/common.js"
 	import {
 		useAuthStore
 	} from '@/store/authStore'
+	import {
+		encryptAESCBC
+	} from "@/utils/crypto.js"
 	export default {
 		data() {
 			return {
@@ -114,26 +121,26 @@
 				loginCode: '',
 				userBookModal: false,
 				// ----验证码 start -----
-				shuzijiaoduimaForm: {
-					shuzijiaoduima: '',
-					shuzijiaoduimaUuid: ''
+				numberCaptchaForm: {
+					numberCaptcha: '',
+					numberCaptchaUuid: ''
 				},
-				shuzijiaoduimaSrc: 'https://imgconvert.csdnimg.cn/aHR0cDovL3RjLnhpYW55dWNvZGVyLmNuL2Jsb2cyMDIwMDEwNDIwMzUwNy5wbmc?x-oss-process=image/format,png',
+				numberCaptchaSrc: 'https://imgconvert.csdnimg.cn/aHR0cDovL3RjLnhpYW55dWNvZGVyLmNuL2Jsb2cyMDIwMDEwNDIwMzUwNy5wbmc?x-oss-process=image/format,png',
 				show: false,
 				tips: '',
 				seconds: 60,
 				// ----验证码 end -----
 				loginType: "phone",
 				phoneForm: {
-					shouJiHao: '15312341234',
-					yanZhengMa: '123456',
-					yanZhengMaUuid: ''
+					phone: '15312341234',
+					captcha: '123456',
+					captchaUuid: ''
 				},
 				userNameForm: {
-					zhangHao: 'zhangsan',
-					miMa: "12345678"
+					username: "",
+					password: ""
 				},
-				userBook: false,
+				userBook: false, //协议
 			}
 		},
 		methods: {
@@ -150,7 +157,7 @@
 				this.userBook = true;
 				const loginTypeHandler = {
 					phone: this.phoneLoginHandle,
-					userName: this.userNameLoginHandle
+					username: this.userNameLoginHandle
 				};
 				// 调用相应的登录处理函数
 				(loginTypeHandler[this.loginType] || (() => {})).call(this);
@@ -158,17 +165,17 @@
 			// 手机登录
 			async phoneLoginHandle() {
 				const {
-					shouJiHao,
-					yanZhengMa
+					phone,
+					captcha
 				} = this.phoneForm;
 
 				// 手机号正则验证
-				if (!/^1[3-9]\d{9}$/.test(shouJiHao)) {
+				if (!/^1[3-9]\d{9}$/.test(phone)) {
 					msg("请输入正确的手机号");
 					return;
 				}
 				// 验证码存在性检查
-				if (!yanZhengMa) {
+				if (!captcha) {
 					msg("请输入验证码");
 					return;
 				}
@@ -194,35 +201,33 @@
 			},
 			// 账号登录
 			async userNameLoginHandle() {
-				if (!this.userNameForm.zhangHao) {
+				if (!this.userNameForm.username) {
 					msg("请输入账号")
 					return;
 				}
-				if (!this.userNameForm.miMa) {
+				if (!this.userNameForm.password) {
 					msg("请输入密码")
 					return;
 				}
-				// usernameLogin(this.userNameForm).then(res=>{
-				// 	console.log(res,45699)
-				// })
 				let checkUserBook = await this.checkUserBook()
-				if (!this.checkUserBook()) return;
-				console.log(this.userNameForm)
-				// 联调
-				// 1.登录 发送请求
-				// 2.保存 token
-				// 3.获取个人信息,保存个人新
-				msg("登录成功");
-				setTimeout(() => {
-					this.useAuthStore.setAuthToken("test")
-					uni.setStorageSync("userinfo", {
-						userId: "2121",
-						isMember: true
-					})
-					uni.switchTab({
-						url: "/pages/index/index"
-					})
-				}, 1000)
+				if (!this.checkUserBook()) {
+					return;
+				};
+				const form = {
+					...this.userNameForm
+				}
+				form.password = encryptAESCBC(form.password);
+				usernameLogin(form).then(res => {
+					if (res?.token) {
+						msgSuccess("登录成功!")
+						this.useAuthStore.setAuthToken(res.token)
+						setTimeout(() => {
+							uni.switchTab({
+								url: "/pages/index/index"
+							})
+						}, 1000)
+					}
+				})
 			},
 			toPage(url) {
 				uni.navigateTo({
@@ -235,9 +240,9 @@
 			},
 			getCode() {
 				let {
-					shouJiHao
+					phone
 				} = this.phoneForm
-				if (!/^1[3-9]\d{9}$/.test(shouJiHao)) {
+				if (!/^1[3-9]\d{9}$/.test(phone)) {
 					msg("请输入正确的手机号");
 					return;
 				}
@@ -264,7 +269,7 @@
 				setTimeout(() => {
 					uni.hideLoading();
 					msg('获取成功');
-					// 显示模拟态,把获取过来的数字校对码的uuid赋给 shuzijiaoduimaForm.shuzijiaoduimaUuid
+					// 显示模拟态,把获取过来的数字校对码的uuid赋给 numberCaptchaForm.numberCaptchaUuid
 					this.show = true;
 				}, 1500);
 				// 联调
@@ -273,10 +278,10 @@
 			},
 			closePopup() {
 				this.show = false;
-				this.shuzijiaoduimaForm.shuzijiaoduima = ''; // 清空输入框
+				this.numberCaptchaForm.numberCaptcha = ''; // 清空输入框
 			},
 			async submitCode() {
-				if (this.shuzijiaoduimaForm.shuzijiaoduima.length !== 4) {
+				if (this.numberCaptchaForm.numberCaptcha.length !== 4) {
 					uni.showToast({
 						title: '请输入4位验证码',
 						icon: 'none'
@@ -286,7 +291,7 @@
 				console.log("联调:验证数字验证码是否正确")
 				console.log("联调:发送手机验证码")
 				// 联调 检验是否正确
-				// const checkRes = await checkShuzijiaoduima();
+				// const checkRes = await checknumberCaptcha();
 				// if(!checkRes){
 				// 	uni.showToast({
 				// 		title: '验证码输入错误',
@@ -296,8 +301,8 @@
 				// }
 				// // 发送手机验证码
 				// const codeRes = await getCodeApi();
-				// if(codeRes && codeRes.yanZhengMaUuid){
-				// 	this.phoneForm.yanZhengMaUuid = codeRes.yanZhengMaUuid
+				// if(codeRes && codeRes.captchaUuid){
+				// 	this.phoneForm.captchaUuid = codeRes.captchaUuid
 				// 	this.closePopup();
 				// 	this.$refs.uCode1.start()
 				// }
@@ -315,9 +320,9 @@
 			// 加载验证码图片
 			async loadImage() {
 				// 联调
-				// const img = await loadShuzijiaoduima();
-				// this.shuzijiaoduimaForm.shuzijiaoduimaUuid = img.shuzijiaoduimaUuid
-				// this.shuzijiaoduimaSrc = img.shuzijiaoduimaSrc
+				// const img = await loadnumberCaptcha();
+				// this.numberCaptchaForm.numberCaptchaUuid = img.numberCaptchaUuid
+				// this.numberCaptchaSrc = img.numberCaptchaSrc
 				console.log("加载图片")
 			},
 			// --------验证码 end---------
@@ -394,9 +399,10 @@
 			padding: 0 !important;
 			border-radius: 50rpx;
 		}
-		.u-btn--default{
+
+		.u-btn--default {
 			border: none !important;
-			background-color: transparent !important;	
+			background-color: transparent !important;
 		}
 	}
 </style>
@@ -526,4 +532,4 @@
 			}
 		}
 	}
-</style>
+</style>

+ 55 - 33
pages/register/register.vue

@@ -2,28 +2,28 @@
 	<view class="container">
 		<u-form :model="registerForm" ref="registerForm" label-width="160"
 			:label-style="{ color: '#000', fontSize: '30rpx'}">
-			<u-form-item label="账号" prop="zhangHao" required :border-bottom="false">
-				<u-input height="80" placeholder="请输入账号" border-color="#d0d0d0" v-model="registerForm.zhangHao"
+			<u-form-item label="账号" prop="username" required :border-bottom="false">
+				<u-input height="80" placeholder="请输入账号" border-color="#d0d0d0" v-model="registerForm.username"
 					:border="true" class="form-item-input" />
 			</u-form-item>
-			<u-form-item label="密码" prop="miMa" required :border-bottom="false">
-				<u-input height="80" placeholder="请输入密码" border-color="#d0d0d0" v-model="registerForm.miMa"
+			<u-form-item label="密码" prop="password" required :border-bottom="false">
+				<u-input height="80" placeholder="请输入密码" border-color="#d0d0d0" v-model="registerForm.password"
 					:border="true" class="form-item-input" type="password" />
 			</u-form-item>
-			<u-form-item label="确认密码" prop="queRenMiMa" required :border-bottom="false">
-				<u-input height="80" placeholder="请确认密码" border-color="#d0d0d0" v-model="registerForm.queRenMiMa"
+			<u-form-item label="确认密码" prop="checkPwd" required :border-bottom="false">
+				<u-input height="80" placeholder="请确认密码" border-color="#d0d0d0" v-model="registerForm.checkPwd"
 					:border="true" class="form-item-input" type="password" />
 			</u-form-item>
-			<u-form-item label="手机号码" prop="shouJiHaoMa" required :border-bottom="false">
-				<u-input height="80" placeholder="请输入手机号" border-color="#d0d0d0" v-model="registerForm.shouJiHaoMa"
+			<u-form-item label="手机号码" prop="phone" required :border-bottom="false">
+				<u-input height="80" placeholder="请输入手机号" border-color="#d0d0d0" v-model="registerForm.phone"
 					:border="true" class="form-item-input" type="number" />
 			</u-form-item>
-			<u-form-item label="身份证" prop="shenFenZheng" :border-bottom="false">
-				<u-input height="80" placeholder="请输入身份证" border-color="#d0d0d0" v-model="registerForm.shenFenZheng"
+			<u-form-item label="身份证" prop="userCode" :border-bottom="false">
+				<u-input height="80" placeholder="请输入身份证" border-color="#d0d0d0" v-model="registerForm.userCode"
 					:border="true" class="form-item-input" />
 			</u-form-item>
-			<u-form-item label="性别" prop="xingBie" required :border-bottom="false">
-				<u-radio-group v-model="registerForm.xingBie">
+			<u-form-item label="性别" prop="sex" required :border-bottom="false">
+				<u-radio-group v-model="registerForm.sex">
 					<u-radio v-for="(item, index) in radioList1" :key="index" :name="item.name"
 						:disabled="item.disabled">
 						{{ item.text }}
@@ -40,42 +40,45 @@
 
 <script>
 	import {
-		msg
+		msg, msgSuccess
 	} from "@/utils/common.js"
+	import { encryptAESCBC } from "@/utils/crypto.js"
+	import { register } from "@/api/user.js"
+	import { useAuthStore } from '@/store/authStore.js'
 	export default {
 		data() {
 			return {
 				registerForm: {
-					zhangHao: '', //账号
-					miMa: "", //密码
-					queRenMiMa: '', // 确认密码
-					shouJiHaoMa: '', // 手机号码
-					shenFenZheng: '', // 身份证
-					xingBie: '' // 性别
+					username: '', //账号
+					password: "", //密码
+					checkPwd: '', // 确认密码
+					phone: '', // 手机号码
+					userCode: '', // 身份证
+					sex: '' // 性别
 				},
 				radioList1: [{
-						name: '',
+						name: '1',
 						text: '男',
 						disabled: false
 					},
 					{
-						name: '',
+						name: '2',
 						text: '女',
 						disabled: false
 					}
 				],
 				rules: {
-					zhangHao: [{
+					username: [{
 						required: true,
 						message: '请输入账号',
 						trigger: ['blur']
 					}],
-					miMa: [{
+					password: [{
 						required: true,
 						message: '请输入密码',
 						trigger: ['blur']
 					}],
-					queRenMiMa: [{
+					checkPwd: [{
 						required: true,
 						message: '请确认密码',
 						trigger: ['blur']
@@ -85,7 +88,7 @@
 						trigger: ['blur'],
 						validator: this.validateConfirmPassword
 					}],
-					shouJiHaoMa: [{
+					phone: [{
 						required: true,
 						message: '请输入手机号码',
 						trigger: ['blur']
@@ -94,7 +97,7 @@
 						message: '请输入正确的手机号',
 						trigger: ['blur']
 					}],
-					shenFenZheng: [{
+					userCode: [{
 						pattern: /^(?:\d{15}|\d{17}[\dXx])$/,
 						transform(value) {
 							return String(value);
@@ -102,7 +105,7 @@
 						message: '请输入正确的身份证',
 						trigger: ['blur']
 					}],
-					xingBie: [{
+					sex: [{
 						required: true,
 						message: '请选择性别',
 						trigger: ['change']
@@ -112,7 +115,7 @@
 		},
 		methods: {
 			validateConfirmPassword(rule, value, callback) {
-				if (value !== this.registerForm.miMa) {
+				if (value !== this.registerForm.password) {
 					callback(new Error('密码与确认密码不一致'));
 				} else {
 					callback(); // 校验通过
@@ -121,10 +124,24 @@
 			submit() {
 				const that = this;
 				that.$refs.registerForm.validate((valid) => {
-					console.log(valid, that.registerForm.xingBie, 456);
-					if (valid) {
-						msg("数据验证成功")
-					}
+					const form = {...this.registerForm};
+					form.password = encryptAESCBC(form.password);
+					form.checkPwd = encryptAESCBC(form.checkPwd);
+					register(form).then(res=>{
+						if(res?.token){
+							this.useAuthStore.setAuthToken(res.token);
+							this.useAuthStore.setUserInfo({
+								userId,
+								zhangHao
+							})
+							msgSuccess("注册成功");
+							setTimeout(()=>{
+								uni.switchTab({
+									url:"/pages/index/index"
+								})
+							},1000)
+						}
+					})
 				})
 			},
 			// 提示
@@ -145,7 +162,12 @@
 		onLoad() {},
 		onReady() {
 			this.$refs.registerForm.setRules(this.rules);
-		}
+		},
+		computed: {
+			useAuthStore() {
+				return useAuthStore(); // 获取 store 实例
+			}
+		},
 	}
 </script>
 <style lang="scss">

+ 10 - 0
store/authStore.js

@@ -1,8 +1,10 @@
 import { defineStore } from 'pinia'
 import { getToken,setToken,removeToken } from '@/utils/auth.js'
+
 export const useAuthStore = defineStore('auth', {
 	state: () => ({
 		token: null,
+		userInfo: null
 	}),
 	actions: {
 		setAuthToken(newToken) {
@@ -19,6 +21,14 @@ export const useAuthStore = defineStore('auth', {
 			if (savedToken) {
 				this.token = savedToken
 			}
+		},
+		setUserInfo(data) {
+		  this.userInfo = data
+		  uni.setStorageSync('USER_INFO', data)
+		},
+		// 初始化时从Storage加载
+		loadUserInfo() {
+		  this.userInfo = uni.getStorageSync('USER_INFO') || null
 		}
 	},
 	getters: {

+ 0 - 1
utils/auth.js

@@ -1,5 +1,4 @@
 import { authorityKey } from '@/config/index.js'
-
 // token
 export function getToken() {
   return uni.getStorageSync(authorityKey)

+ 2 - 2
utils/baseurl.js

@@ -2,8 +2,8 @@ let BASE_URL = ''
 let FILE_URL = ''
 // baseurl  联调时改url
 if (process.env.NODE_ENV == 'development') {
-	BASE_URL = 'http://127.0.0.1:4523/m1/5748650-5431576-default';
-	FILE_URL = '';
+	BASE_URL = 'https://www.gzrea.org.cn:8443/wxmp/api';
+	FILE_URL = 'https://www.gzrea.org.cn:8443/wxmp/api';
 }else{
 	BASE_URL = '';
 	FILE_URL = '';

+ 60 - 0
utils/crypto.js

@@ -0,0 +1,60 @@
+import CryptoJS from 'crypto-js'
+
+// 配置参数
+const MODE_CBC = "CBC"
+const PADDING_MODE = "PKCS7Padding"
+const DEFAULT_IV = "@ZiyiTechProduct"
+const AES_DEFAULT_KEY = "ZiyiTechPro#2025"
+
+// AES-CBC 加密(输出Hex字符串)
+export function encryptAESCBC(data) {
+    const key = CryptoJS.enc.Utf8.parse(AES_DEFAULT_KEY)
+    const iv = CryptoJS.enc.Utf8.parse(DEFAULT_IV)
+
+    // 统一将输入转为字符串
+    const plaintext = typeof data === 'object' 
+        ? JSON.stringify(data) 
+        : String(data)
+
+    // 加密并输出Hex字符串
+    const encrypted = CryptoJS.AES.encrypt(
+        plaintext,
+        key, 
+        {
+            iv: iv,
+            mode: CryptoJS.mode.CBC,
+            padding: CryptoJS.pad.Pkcs7
+        }
+    ).ciphertext.toString(CryptoJS.enc.Hex) // 直接提取二进制密文转为Hex
+
+    return encrypted
+}
+
+// AES-CBC 解密(处理Hex字符串输入)
+export function decryptAESCBC(encryptedHex) {
+    const key = CryptoJS.enc.Utf8.parse(AES_DEFAULT_KEY)
+    const iv = CryptoJS.enc.Utf8.parse(DEFAULT_IV)
+
+    // 将Hex字符串解析为CryptoJS的密文对象
+    const ciphertext = CryptoJS.enc.Hex.parse(encryptedHex)
+    const encryptedData = { ciphertext: ciphertext }
+
+    // 解密
+    const decrypted = CryptoJS.AES.decrypt(
+        encryptedData,
+        key, 
+        {
+            iv: iv,
+            mode: CryptoJS.mode.CBC,
+            padding: CryptoJS.pad.Pkcs7
+        }
+    )
+
+    // 统一输出为字符串(自动处理JSON或普通字符串)
+    const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8)
+    try {
+        return JSON.parse(decryptedStr)
+    } catch {
+        return decryptedStr
+    }
+}