From ad10438f4b300f4168e067d2fcb9746967a60b7e Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 01 Nov 2023 18:10:05 +0800
Subject: [PATCH] 修改密码页面

---
 vue.config.js                      |    1 
 pages.json                         |   10 ++
 subPackage/user/password/index.vue |  183 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 193 insertions(+), 1 deletions(-)

diff --git a/pages.json b/pages.json
index 7146f3f..9877dad 100644
--- a/pages.json
+++ b/pages.json
@@ -44,6 +44,16 @@
 						"navigationBarBackgroundColor": "#4586fe",
 						"navigationBarTextStyle": "white"
 					}
+				},
+				//修改密码
+				{
+					"path": "password/index",
+					"style": {
+						"navigationBarTitleText": "修改密码",
+						"enablePullDownRefresh": false,
+						"navigationBarBackgroundColor": "#fff",
+						"navigationBarTextStyle": "black"
+					}
 				}
 			]
 		},
diff --git a/subPackage/user/password/index.vue b/subPackage/user/password/index.vue
new file mode 100644
index 0000000..1355f49
--- /dev/null
+++ b/subPackage/user/password/index.vue
@@ -0,0 +1,183 @@
+<template>
+	<view class="password">
+		<view class="form-card">
+			<!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
+			<u--form labelPosition="left" :model="model" :rules="rules" ref="uForm">
+				<u-form-item labelWidth='200rpx' label="原密码" prop="oldPassword" borderBottom ref="item1">
+					<u--input v-model="model.oldPassword" placeholder='请输入原密码' border="none"></u--input>
+				</u-form-item>
+				<u-form-item labelWidth='200rpx' label="新密码" prop="newPassword" borderBottom ref="item1">
+					<u--input v-model="model.newPassword" placeholder='请输入新密码' border="none"></u--input>
+				</u-form-item>
+				<u-form-item labelWidth='280rpx' label="请再次输入新密码" prop="newPassword1" ref="item1">
+					<u--input v-model="model.newPassword1" placeholder='请再次输入新密码' border="none"></u--input>
+				</u-form-item>
+			</u--form>
+		</view>
+		<button class="confirm_btn" @click="confirm">保存</button>
+	</view>
+</template>
+
+<script>
+	import {
+		updatePassword
+	} from "@/api/system/user"
+	import md5 from "../../../utils/md5.js"
+	var result = ""
+	export default {
+		data() {
+			var newPassword = (rule, value, callback) => {
+				if (value === '') {
+					callback(new Error('请输入密码'));
+				} else {
+					if (this.model.newPassword !== '') {
+						this.$refs.uForm.validateField('newPassword1');
+					}
+					callback();
+				}
+			};
+			var newPassword1 = (rule, value, callback) => {
+				if (value === '') {
+					callback(new Error('请再次输入密码'));
+				} else if (value !== this.model.newPassword) {
+					callback(new Error('两次输入密码不一致!'));
+				} else {
+					callback();
+				}
+			};
+			var checkPassWord = (rule, value, callback) => {
+				let level = []
+				if (!value) {
+					return callback('密码不能为空')
+				}
+				if (value.length < 8) {
+					return callback('密码不少于8位')
+				}
+				if (value.length > 16) {
+					return callback('密码不大于16位')
+				}
+				// 是数字
+				let isDigit = /^.*[0-9]+.*/;
+				// isLowerCase 小写字母
+				let isLowerCase = /^.*[a-z]+.*/;
+				// isUpperCase 大写字母
+				let isUpperCase = /^.*[A-Z]+.*/;
+				// 特殊字符
+				let regEx = /^.*[^a-zA-Z0-9]+.*/;
+				// 记录匹配的次数
+				let num = 0;
+				if (isDigit.test(value)) {
+					num = num + 1;
+				}
+				if (isLowerCase.test(value)) {
+					num = num + 1;
+				}
+				if (isUpperCase.test(value)) {
+					num = num + 1;
+				}
+				if (regEx.test(value)) {
+					num = num + 1;
+				}
+				if (num <= 2) {
+					return callback("密码强度不足,密码至少包含三种:(1)大写字母、(2)小写字母、(3)数字、(4)特殊符号");
+				}
+				return callback()
+			}
+			return {
+				showSex: false,
+				model: {
+					oldPassword: '',
+					newPassword: "",
+					newPassword1: '',
+				},
+				rules: {
+					'oldPassword': [{
+						type: 'string',
+						required: true,
+						message: '请输入原密码',
+						trigger: ['blur', 'change']
+					}],
+					"newPassword": [{
+							type: 'string',
+							required: true,
+							message: '请输入新密码',
+							trigger: ['blur', 'change']
+						}, {
+							validator: newPassword,
+							trigger: 'blur'
+						},
+						{
+							validator: checkPassWord,
+							trigger: 'blur'
+						},
+					],
+					"newPassword1": [{
+							type: 'string',
+							required: true,
+							message: '请输入新密码',
+							trigger: ['blur']
+						},
+						{
+							validator: newPassword1,
+							trigger: 'blur'
+						}
+					],
+				},
+				radio: '',
+				switchVal: false
+			};
+		},
+		methods: {
+
+			confirm() {
+				this.$refs.uForm.validate().then(async res => {
+					const obj = {
+						newPassword: md5(this.model.newPassword),
+						oldPassword: md5(this.model.oldPassword),
+						newPassword1: md5(this.model.newPassword1),
+					}
+					const data = await updatePassword(obj).catch(err => {
+						const {
+							data
+						} = err
+						return uni.$u.toast(data.msg || "验证失败")
+					})
+					if (data.code != 200) return uni.$u.toast(data.msg)
+					uni.$u.toast("修改成功")
+					setTimeout(() => {
+						this.$u.func.globalNavigator("", "navBack")
+					}, 1500)
+				})
+			}
+		},
+		onReady() {
+			//如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
+			this.$refs.uForm.setRules(this.rules)
+		},
+	};
+</script>
+
+<style lang="scss" scoped>
+	.password {
+		background-color: #e6edfa;
+		padding: 20rpx 0;
+		height: 100vh;
+
+		.form-card {
+			background-color: #fff;
+			border-radius: 16rpx;
+			margin: 0 20rpx;
+			padding: 0 20rpx;
+		}
+
+		.confirm_btn {
+			background: #1180ff;
+			color: #fff;
+			height: 72rpx;
+			line-height: 72rpx;
+			width: 90%;
+			margin-top: 200rpx;
+			border-radius: 20rpx;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/vue.config.js b/vue.config.js
index ae6adfe..cddb9a2 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -11,7 +11,6 @@
 
 	devServer: {
 		proxy: {
-
 			// 业务平台接口
 			"/api": {
 				target: "http://172.16.13.129:9528",

--
Gitblit v1.9.3