首页已经修改密码的编写

This commit is contained in:
夕阳微笑1 2025-01-10 10:50:02 +08:00
parent 7183a5dd6b
commit 7d5b4773f1
7 changed files with 182 additions and 25 deletions

View File

@ -12,6 +12,7 @@ import { baseUrlHost } from '../baseUrlHost';
* @method updateUser * @method updateUser
* @method getuserListAll * @method getuserListAll
* @method getUserDetail * @method getUserDetail
* @method updatepwd
*/ */
export function userApi() { export function userApi() {
@ -55,5 +56,12 @@ export function userApi() {
method: 'get', method: 'get',
}); });
}, },
updatepwd: (id:Number,data:object) => {
return request({
url: baseUrlHost + `/acUser/${id}/pwdreset`,
method: 'post',
data
})
}
}; };
} }

View File

@ -129,9 +129,10 @@ export default {
dropdownDefault: 'default', dropdownDefault: 'default',
dropdownSmall: 'small', dropdownSmall: 'small',
dropdown1: 'home page', dropdown1: 'home page',
dropdown2: 'Personal Center', dropdown2:'updatepwd',
dropdown3: '404', // dropdown2: 'Personal Center',
dropdown4: '401', // dropdown3: '404',
// dropdown4: '401',
dropdown5: 'Log out', dropdown5: 'Log out',
dropdown6: 'Code warehouse', dropdown6: 'Code warehouse',
searchPlaceholder: 'Menu search: support Chinese, routing path', searchPlaceholder: 'Menu search: support Chinese, routing path',

View File

@ -132,9 +132,10 @@ export default {
dropdownDefault: '默认', dropdownDefault: '默认',
dropdownSmall: '小型', dropdownSmall: '小型',
dropdown1: '首页', dropdown1: '首页',
dropdown2: '个人中心', // dropdown2: '个人中心',
dropdown3: '404', // dropdown3: '404',
dropdown4: '401', // dropdown4: '401',
dropdown2:'修改密码',
dropdown5: '退出登录', dropdown5: '退出登录',
dropdown6: '代码仓库', dropdown6: '代码仓库',
searchPlaceholder: '菜单搜索:支持中文、路由路径', searchPlaceholder: '菜单搜索:支持中文、路由路径',

View File

@ -129,9 +129,10 @@ export default {
dropdownDefault: '默認', dropdownDefault: '默認',
dropdownSmall: '小型', dropdownSmall: '小型',
dropdown1: '首頁', dropdown1: '首頁',
dropdown2: '個人中心', dropdown2:'修改密碼',
dropdown3: '404', // dropdown2: '個人中心',
dropdown4: '401', // dropdown3: '404',
// dropdown4: '401',
dropdown5: '登出', dropdown5: '登出',
dropdown6: '程式碼倉庫', dropdown6: '程式碼倉庫',
searchPlaceholder: '選單蒐索:支援中文、路由路徑', searchPlaceholder: '選單蒐索:支援中文、路由路徑',

View File

@ -73,15 +73,38 @@
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item command="/home">{{ $t('message.user.dropdown1') }}</el-dropdown-item> <el-dropdown-item command="/home">{{ $t('message.user.dropdown1') }}</el-dropdown-item>
<!-- <el-dropdown-item command="wareHouse">{{ $t('message.user.dropdown6') }}</el-dropdown-item> <!-- <el-dropdown-item command="wareHouse">{{ $t('message.user.dropdown6') }}</el-dropdown-item> -->
<el-dropdown-item command="/personal">{{ $t('message.user.dropdown2') }}</el-dropdown-item> <!-- <el-dropdown-item>
<el-dropdown-item command="/404">{{ $t('message.user.dropdown3') }}</el-dropdown-item> <el-button text style="height: 20px; ">
修改密码
</el-button>
</el-dropdown-item> -->
<el-dropdown-item command="updatepwd">{{ $t('message.user.dropdown2') }}</el-dropdown-item>
<!-- <el-dropdown-item command="/404">{{ $t('message.user.dropdown3') }}</el-dropdown-item>
<el-dropdown-item command="/401">{{ $t('message.user.dropdown4') }}</el-dropdown-item> --> <el-dropdown-item command="/401">{{ $t('message.user.dropdown4') }}</el-dropdown-item> -->
<el-dropdown-item divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item> <el-dropdown-item divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<Search ref="searchRef" /> <Search ref="searchRef" />
<div class="system-menu-dialog-container">
<el-dialog :title="state.dialog.title" v-model="state.dialog.isShowDialog" width="400px">
<el-form ref="userDialogFormRef" :rules="state.rules" :model="state.userDetailList" size="default" label-width="120px" v-loading="state.dialog.loading">
<el-form-item label="旧密码:" prop="old">
<el-input v-model="state.userDetailList.old"></el-input>
</el-form-item>
<el-form-item label="新密码:" prop="pwd">
<el-input v-model="state.userDetailList.pwd" placeholder="请输入新密码" clearable />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button plain @click="handleSure" type="primary" size="default"> </el-button>
<el-button plain @click="onCancel" size="default"> </el-button>
</span>
</template>
</el-dialog>
</div>
</div> </div>
</template> </template>
@ -98,6 +121,7 @@ import other from '/@/utils/other';
import mittBus from '/@/utils/mitt'; import mittBus from '/@/utils/mitt';
import { Session, Local } from '/@/utils/storage'; import { Session, Local } from '/@/utils/storage';
import { useLoginApi } from '/@/api/login'; import { useLoginApi } from '/@/api/login';
import { userApi } from '/@/api/user'
// //
const UserNews = defineAsyncComponent(() => import('/@/layout/navBars/topBar/userNews.vue')); const UserNews = defineAsyncComponent(() => import('/@/layout/navBars/topBar/userNews.vue'));
@ -106,6 +130,8 @@ const Search = defineAsyncComponent(() => import('/@/layout/navBars/topBar/searc
// api // api
const loginApi = useLoginApi(); const loginApi = useLoginApi();
const userapi = userApi();
// //
const userNewsRef = ref(); const userNewsRef = ref();
const userNewsBadgeRef = ref(); const userNewsBadgeRef = ref();
@ -120,8 +146,23 @@ const state = reactive({
isScreenfull: false, isScreenfull: false,
disabledI18n: 'zh-cn', disabledI18n: 'zh-cn',
disabledSize: 'large', disabledSize: 'large',
userDetailList:{
old:'',
pwd:'',
},
dialog:{
isShowDialog: false,
title: '修改密码',
loading: false,
},
rules:{
old:{ required: true, message: '旧密码不能为空', trigger: 'blur' },
pwd:{ required: true, message: '新密码不能为空', trigger: 'blur' }
}
}); });
const userDialogFormRef = ref();
// //
const layoutUserFlexNum = computed(() => { const layoutUserFlexNum = computed(() => {
let num: string | number = ''; let num: string | number = '';
@ -152,7 +193,8 @@ const onLayoutSetingClick = () => {
mittBus.emit('openSetingsDrawer'); mittBus.emit('openSetingsDrawer');
}; };
// //
const onHandleCommandClick = (path: string) => { const onHandleCommandClick = async(path: string) => {
if (path === 'logOut') { if (path === 'logOut') {
ElMessageBox({ ElMessageBox({
closeOnClickModal: false, closeOnClickModal: false,
@ -189,10 +231,73 @@ const onHandleCommandClick = (path: string) => {
.catch(() => {}); .catch(() => {});
} else if (path === 'wareHouse') { } else if (path === 'wareHouse') {
window.open('https://gitee.com/lyt-top/vue-next-admin'); window.open('https://gitee.com/lyt-top/vue-next-admin');
} else { } else if(path === 'updatepwd'){
state.dialog.isShowDialog = true;
state.userDetailList.pwd ='';
try{
const res = await userapi.getUserDetail(localStorage.getItem('userid'));
if(res?.success){
state.userDetailList.old = res.data.password;
// console.log(111111111,state.userDetailList.oldpwd)
}
}catch(error){
console.error(error);
}
}
else {
router.push(path); router.push(path);
} }
}; };
//
const closeDialog = () => {
state.dialog.isShowDialog = false;
};
//
const handleSure = () =>{
userDialogFormRef.value?.validate(async(valid:boolean) =>{
if(valid){
// console.log(111111111)
try{
const res = await userapi.updatepwd(localStorage.getItem('userid'),state.userDetailList);
if(res?.success){
ElMessage.success('修改成功!');
reset();
closeDialog();
ElMessageBox.alert('你已被登出,请重新登录', '提示', {})
.then(async () => {
// /token
console.log('清除缓存/token等');
Session.clear();
// 使 reload resetRoute()
window.location.reload();
window.location.href = import.meta.env.MODE === "development" ? '/' : '/pixelAdmin/'; //
})
.catch(() => {});
}
}catch(error){
console.error(error);
ElMessage.error('修改失败!');
}
}
})
};
//
const onCancel = () => {
closeDialog();
};
const reset = () =>{
state.userDetailList = {
old:'',
pwd:''
}
};
// //
const onSearchClick = () => { const onSearchClick = () => {
searchRef.value.openSearch(); searchRef.value.openSearch();

View File

@ -14,28 +14,28 @@
</div> </div>
<div class="personal-user-right"> <div class="personal-user-right">
<el-row> <el-row>
<el-col :span="24" class="personal-title mb18">{{ currentTime }}admin生活变的再糟糕也不妨碍我变得更好 </el-col> <el-col :span="24" class="personal-title mb18">{{ currentTime }}{{username}}生活变的再糟糕也不妨碍我变得更好 </el-col>
<el-col :span="24"> <el-col :span="24">
<el-row> <el-row>
<el-col :xs="24" :sm="8" class="personal-item mb6"> <el-col :xs="24" :sm="8" class="personal-item mb6">
<div class="personal-item-label">昵称</div> <div class="personal-item-label">昵称</div>
<div class="personal-item-value">小柒</div> <div class="personal-item-value">{{ username }}</div>
</el-col> </el-col>
<el-col :xs="24" :sm="16" class="personal-item mb6"> <el-col :xs="24" :sm="16" class="personal-item mb6">
<div class="personal-item-label">身份</div> <div class="personal-item-label">身份</div>
<div class="personal-item-value">超级管理</div> <div class="personal-item-value">{{ acgroup }}</div>
</el-col> </el-col>
</el-row> </el-row>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-row> <el-row>
<el-col :xs="24" :sm="8" class="personal-item mb6"> <!-- <el-col :xs="24" :sm="8" class="personal-item mb6">
<div class="personal-item-label">登录IP</div> <div class="personal-item-label">登录IP</div>
<div class="personal-item-value">192.168.1.1</div> <div class="personal-item-value">192.168.1.1</div>
</el-col> </el-col> -->
<el-col :xs="24" :sm="16" class="personal-item mb6"> <el-col :xs="24" :sm="16" class="personal-item mb6">
<div class="personal-item-label">登录时间</div> <div class="personal-item-label">创建时间</div>
<div class="personal-item-value">2021-02-05 18:47:26</div> <div class="personal-item-value">{{creatime}}</div>
</el-col> </el-col>
</el-row> </el-row>
</el-col> </el-col>
@ -193,17 +193,22 @@
</template> </template>
<script setup lang="ts" name="personal"> <script setup lang="ts" name="personal">
import { reactive, computed,ref } from 'vue'; import { reactive, computed,ref, onMounted } from 'vue';
import { formatAxis } from '/@/utils/formatTime'; import { formatAxis } from '/@/utils/formatTime';
import { newsInfoList, recommendList } from '../personal/mock'; import { newsInfoList, recommendList } from '../personal/mock';
import { userApi } from '/@/api/user';
import { ElMessage,TableColumnCtx } from 'element-plus';
const userapi = userApi();
// //
const state = reactive<PersonalState>({ const state = reactive({
newsInfoList, newsInfoList,
recommendList, recommendList,
personalForm: { personalForm: {
name: '', name: '',
email: '', mail: '',
autograph: '', autograph: '',
occupation: '', occupation: '',
phone: '', phone: '',
@ -219,6 +224,39 @@ const catchphraseDate = ref([
"良好的开端是成功的一半。" "良好的开端是成功的一半。"
]) ])
//
const username = ref('');
const creatime = ref('');
const acgroup = ref('');
//
const getuserDetail = async() =>{
try{
const res = await userapi.getUserDetail(localStorage.getItem('userid'));
// console.log(res);
if(res?.success){
username.value = res.data.username;
creatime.value = dateFormatter(res.data)
acgroup.value = res.data.acgroup;
if(acgroup.value == '1'){
acgroup.value = '管理员'
}else{
acgroup.value = '用户'
}
}
}catch(error){
console.error(error);
}
};
//
const dateFormatter = (row: any, column: TableColumnCtx<String>) => {
let date = new Date(row.createtime);
return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
};
const value = ref(new Date()) const value = ref(new Date())
// //
@ -226,7 +264,9 @@ const currentTime = computed(() => {
return formatAxis(new Date()); return formatAxis(new Date());
}); });
// //
onMounted(() => {
getuserDetail();
})
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">

View File

@ -106,6 +106,7 @@ const onSignIn = async () => {
// token // token
Session.set('token', res.data.token); Session.set('token', res.data.token);
localStorage.setItem('acgroup', JSON.stringify(res.data.user.acgroup)); localStorage.setItem('acgroup', JSON.stringify(res.data.user.acgroup));
localStorage.setItem('userid',JSON.stringify(res.data.user.id))
// usertype // usertype
// Cookies.set('userName', res.data.records.acgroup === 1 ? 'admin' : 'user'); // Cookies.set('userName', res.data.records.acgroup === 1 ? 'admin' : 'user');
Cookies.set('userName', 'admin'); Cookies.set('userName', 'admin');