拿来即用修改密码功能

javascript 复制代码
<template>
	<div>
		<!-- 重置密码 -->
		<el-dialog
			title="修改密码"
			v-model="state.resetPwdDialogVisible"
			:showClose="state.firstLogin !== 1"
			width="550px"
			@close="onCancel"
			:close-on-click-modal="false"
		>
			<el-form :model="state.resetPwdForm" status-icon :rules="state.resetPwdRules" ref="pwdForm" label-width="100px">
				<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
					<el-form-item label="新密码" prop="pwd_new1">
						<el-input
							placeholder="请输入新密码"
							type="password"
							v-model="state.resetPwdForm.pwd_new1"
							autocomplete="new-password"
							show-password
							clearable
						>
						</el-input>
					</el-form-item>
				</el-col>
				<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
					<el-form-item label="确认新密码" prop="pwd_new2">
						<el-input
							placeholder="请再次输入新密码"
							type="password"
							v-model="state.resetPwdForm.pwd_new2"
							autocomplete="new-password"
							show-password
							clearable
						>
						</el-input>
					</el-form-item>
				</el-col>
			</el-form>
			<template #footer>
				<span class="dialog-footer">
					<el-button @click="onCancel" size="default">取消</el-button>
					<el-button v-throttle type="primary" @click="onSubmit" size="default">确定</el-button>
				</span>
			</template>
		</el-dialog>
	</div>
</template>

<script setup name="layoutBreadcrumbUser">
import { updatePwd } from '/@/api/login.js';

const pwdForm = ref(null);

const validatePass = (rule, value, callback) => {
	if (value === '') {
		callback(new Error('请输入密码'));
	} else {
		if (state.resetPwdForm.pwd_new2 !== '') {
			pwdForm.value.validateField('pwd_new2');
		}
		callback();
	}
};
const validatePass2 = (rule, value, callback) => {
	if (value === '') {
		callback(new Error('请再次输入密码'));
	} else if (value !== state.resetPwdForm.pwd_new1) {
		callback(new Error('两次输入密码不一致!'));
	} else {
		callback();
	}
};
const state = reactive({
	resetPwdDialogVisible: false, // 修改密码
	resetPwdForm: {
		pwd_new1: '',
		pwd_new2: '',
	},
	resetPwdRules: {
		pwd_new1: [
			{
				required: true,
				trigger: 'blur',
				message: '请输入6~20位不含有中文的密码',
				pattern: /^[^\u4e00-\u9fa5 ]{6,20}$/,
			},
			{ validator: validatePass, trigger: 'blur' },
		],
		pwd_new2: [
			{
				required: true,
				trigger: 'blur',
				message: '请输入6~20位不含有中文的密码',
				pattern: /^[^\u4e00-\u9fa5 ]{6,20}$/,
			},
			{ validator: validatePass2, trigger: 'blur' },
		],
	}
});

// 取消
const onCancel = () => {
	state.resetPwdDialogVisible = false;
	// 清除验证
	pwdForm.value.resetFields();
};

// 修改密码保存
const onSubmit = () => {
	if (!pwdForm) return;
	pwdForm.value.validate((valid) => {
		if (valid) {
			toSavePwd();
		} else {
			return false;
		}
	});
};

const toSavePwd = () => {
	updatePwd(state.resetPwdForm)
		.then((res) => {
			if (res.data.code === 1) {
				ElMessage.success('密码修改成功');
				state.resetPwdDialogVisible = false;
			}
		})
		.catch((error) => {
			return;
		});
};

// 页面加载时
onMounted(() => {});
</script>
相关推荐
暴走的小呆6 小时前
Vue 2 中 Object 的变化侦测:从 getter/setter 到 Dep、Watcher、Observer
vue.js
英勇无比的消炎药6 小时前
TinyVue v-auto-tip: 文本超长自动提示的优雅方案
vue.js
时光足迹9 小时前
腾讯云 TRTC UniApp SDK 从入门到上线
前端·vue.js·uni-app
时光足迹9 小时前
uni-app 里把加密视频嵌入页面播放?我分析了 4 种方案,只有 1 种接近完美
前端·vue.js·uni-app
时光足迹9 小时前
JPush UniApp UTS 插件完全参考手册:API、事件与厂商通道一网打尽
vue.js·ios·uni-app
时光足迹9 小时前
极光推送全攻略(下):uni-app 代码实现与 iOS 排查实战
vue.js·ios·uni-app
疯狂的魔鬼10 小时前
一个"懂分寸"的文本省略组件是怎样炼成的
前端·vue.js·设计
裕波11 小时前
AI 正在重写应用开发。Vue 与 Vite,给出新的答案。
javascript·vue.js
妙码生花11 小时前
现代前端的极致性能 icon 加载方案(死磕成功版)
前端·vue.js·typescript
用户21366100357214 小时前
Vue2脚手架工程化与Axios集成
前端·vue.js