提交 6c5b0c54 authored 作者: lidongxu's avatar lidongxu

refactor(store/user.js, settings/index.vue, profile/index.vue): 导航菜单修改,侧边栏宽度修改,账号密码保存 token 多加一层取值

同标题
上级 556afe94
...@@ -21,7 +21,7 @@ $menuLightText: #303133; ...@@ -21,7 +21,7 @@ $menuLightText: #303133;
$menuLightActiveText: #409EFF; $menuLightActiveText: #409EFF;
// 基础变量 // 基础变量
$base-sidebar-width: 200px; $base-sidebar-width: 230px;
$sideBarWidth: 200px; $sideBarWidth: 200px;
// 菜单暗色变量 // 菜单暗色变量
......
<template> <template>
<div class="navbar"> <div class="navbar">
<hamburger id="hamburger-container" :is-active="appStore.sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> <hamburger id="hamburger-container"
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!settingsStore.topNav" /> :is-active="appStore.sidebar.opened"
<top-nav id="topmenu-container" class="topmenu-container" v-if="settingsStore.topNav" /> class="hamburger-container"
@toggleClick="toggleSideBar" />
<breadcrumb id="breadcrumb-container"
class="breadcrumb-container"
v-if="!settingsStore.topNav" />
<top-nav id="topmenu-container"
class="topmenu-container"
v-if="settingsStore.topNav" />
<div class="right-menu"> <div class="right-menu">
<template v-if="appStore.device !== 'mobile'"> <template v-if="appStore.device !== 'mobile'">
<header-search id="header-search" class="right-menu-item" /> <header-search id="header-search"
class="right-menu-item" />
<el-tooltip content="源码地址" effect="dark" placement="bottom">
<ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" /> <screenfull id="screenfull"
</el-tooltip> class="right-menu-item hover-effect" />
<el-tooltip content="文档地址" effect="dark" placement="bottom"> <el-tooltip content="主题模式"
<ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /> effect="dark"
</el-tooltip> placement="bottom">
<div class="right-menu-item hover-effect theme-switch-wrapper"
<screenfull id="screenfull" class="right-menu-item hover-effect" /> @click="toggleTheme">
<svg-icon v-if="settingsStore.isDark"
<el-tooltip content="主题模式" effect="dark" placement="bottom"> icon-class="sunny" />
<div class="right-menu-item hover-effect theme-switch-wrapper" @click="toggleTheme"> <svg-icon v-if="!settingsStore.isDark"
<svg-icon v-if="settingsStore.isDark" icon-class="sunny" /> icon-class="moon" />
<svg-icon v-if="!settingsStore.isDark" icon-class="moon" />
</div> </div>
</el-tooltip> </el-tooltip>
<el-tooltip content="布局大小" effect="dark" placement="bottom"> <el-tooltip content="布局大小"
<size-select id="size-select" class="right-menu-item hover-effect" /> effect="dark"
placement="bottom">
<size-select id="size-select"
class="right-menu-item hover-effect" />
</el-tooltip> </el-tooltip>
</template> </template>
<div class="avatar-container"> <div class="avatar-container">
<el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click"> <el-dropdown @command="handleCommand"
class="right-menu-item hover-effect"
trigger="click">
<div class="avatar-wrapper"> <div class="avatar-wrapper">
<img :src="userStore.avatar" class="user-avatar" /> <!-- <img :src="userStore.avatar" class="user-avatar" /> -->
<span class="user-name">{{ name }}</span>
<el-icon><caret-bottom /></el-icon> <el-icon><caret-bottom /></el-icon>
</div> </div>
<template #dropdown> <template #dropdown>
...@@ -40,10 +52,12 @@ ...@@ -40,10 +52,12 @@
<router-link to="/user/profile"> <router-link to="/user/profile">
<el-dropdown-item>个人中心</el-dropdown-item> <el-dropdown-item>个人中心</el-dropdown-item>
</router-link> </router-link>
<el-dropdown-item command="setLayout" v-if="settingsStore.showSettings"> <el-dropdown-item command="setLayout"
v-if="settingsStore.showSettings">
<span>布局设置</span> <span>布局设置</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item divided command="logout"> <el-dropdown-item divided
command="logout">
<span>退出登录</span> <span>退出登录</span>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
...@@ -72,6 +86,8 @@ const appStore = useAppStore() ...@@ -72,6 +86,8 @@ const appStore = useAppStore()
const userStore = useUserStore() const userStore = useUserStore()
const settingsStore = useSettingsStore() const settingsStore = useSettingsStore()
const name = userStore.name;
function toggleSideBar() { function toggleSideBar() {
appStore.toggleSideBar() appStore.toggleSideBar()
} }
...@@ -111,8 +127,9 @@ function toggleTheme() { ...@@ -111,8 +127,9 @@ function toggleTheme() {
} }
</script> </script>
<style lang='scss' scoped> <style lang='scss'
.navbar { scoped>
.navbar {
height: 50px; height: 50px;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
...@@ -190,8 +207,15 @@ function toggleTheme() { ...@@ -190,8 +207,15 @@ function toggleTheme() {
.avatar-container { .avatar-container {
margin-right: 40px; margin-right: 40px;
.el-dropdown {
display: flex;
align-items: center;
.user-name{
font-size: 16px;
}
.avatar-wrapper { .avatar-wrapper {
margin-top: 5px;
position: relative; position: relative;
.user-avatar { .user-avatar {
...@@ -211,5 +235,6 @@ function toggleTheme() { ...@@ -211,5 +235,6 @@ function toggleTheme() {
} }
} }
} }
} }
}
</style> </style>
...@@ -49,12 +49,12 @@ ...@@ -49,12 +49,12 @@
</span> </span>
</div> </div>
<div class="drawer-item"> <!-- <div class="drawer-item">
<span>固定 Header</span> <span>固定 Header</span>
<span class="comp-style"> <span class="comp-style">
<el-switch v-model="settingsStore.fixedHeader" class="drawer-switch" /> <el-switch v-model="settingsStore.fixedHeader" class="drawer-switch" />
</span> </span>
</div> </div> -->
<div class="drawer-item"> <div class="drawer-item">
<span>显示 Logo</span> <span>显示 Logo</span>
......
...@@ -25,8 +25,8 @@ export default defineStore( ...@@ -25,8 +25,8 @@ export default defineStore(
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (type === 'upass') { if (type === 'upass') {
login({ username, password }).then(res => { login({ username, password }).then(res => {
setToken(res.token) setToken(res.data.access_token)
this.token = res.token this.token = res.data.access_token
resolve() resolve()
}).catch(error => { }).catch(error => {
reject(error) reject(error)
...@@ -58,7 +58,7 @@ export default defineStore( ...@@ -58,7 +58,7 @@ export default defineStore(
this.roles = ['ROLE_DEFAULT'] this.roles = ['ROLE_DEFAULT']
} }
this.id = user.userId this.id = user.userId
this.name = user.userName this.name = user.nickName
this.avatar = avatar this.avatar = avatar
resolve(res) resolve(res)
}).catch(error => { }).catch(error => {
......
import { parseTime } from './ruoyi' import { parseTime } from './ruoyi'
export * from './jsencrypt.js' export * from './jsencrypt.js'
export * from './ruoyi'
/** /**
* 表格时间格式化 * 表格时间格式化
......
<template> <template>
<div class="app-container"> <div class="app-container">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="6" :xs="24"> <el-col :span="6"
:xs="24">
<el-card class="box-card"> <el-card class="box-card">
<template v-slot:header> <template v-slot:header>
<div class="clearfix"> <div class="clearfix">
...@@ -9,13 +10,13 @@ ...@@ -9,13 +10,13 @@
</div> </div>
</template> </template>
<div> <div>
<div class="text-center"> <!-- <div class="text-center">
<userAvatar /> <userAvatar />
</div> </div> -->
<ul class="list-group list-group-striped"> <ul class="list-group list-group-striped">
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="user" />用户名称 <svg-icon icon-class="user" />用户名称
<div class="pull-right">{{ state.user.userName }}</div> <div class="pull-right">{{ state.user.nickName }}</div>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="phone" />手机号码 <svg-icon icon-class="phone" />手机号码
...@@ -27,7 +28,8 @@ ...@@ -27,7 +28,8 @@
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="tree" />所属部门 <svg-icon icon-class="tree" />所属部门
<div class="pull-right" v-if="state.user.dept">{{ state.user.dept.deptName }} / {{ state.postGroup }}</div> <div class="pull-right"
v-if="state.user.dept">{{ state.user.dept.deptName }} / {{ state.postGroup }}</div>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="peoples" />所属角色 <svg-icon icon-class="peoples" />所属角色
...@@ -41,7 +43,8 @@ ...@@ -41,7 +43,8 @@
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
<el-col :span="18" :xs="24"> <el-col :span="18"
:xs="24">
<el-card> <el-card>
<template v-slot:header> <template v-slot:header>
<div class="clearfix"> <div class="clearfix">
...@@ -49,10 +52,12 @@ ...@@ -49,10 +52,12 @@
</div> </div>
</template> </template>
<el-tabs v-model="activeTab"> <el-tabs v-model="activeTab">
<el-tab-pane label="基本资料" name="userinfo"> <el-tab-pane label="基本资料"
name="userinfo">
<userInfo :user="state.user" /> <userInfo :user="state.user" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="修改密码" name="resetPwd"> <el-tab-pane label="修改密码"
name="resetPwd">
<resetPwd /> <resetPwd />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
...@@ -62,26 +67,27 @@ ...@@ -62,26 +67,27 @@
</div> </div>
</template> </template>
<script setup name="Profile"> <script setup
import userAvatar from "./userAvatar"; name="Profile">
import userInfo from "./userInfo"; import userAvatar from "./userAvatar";
import resetPwd from "./resetPwd"; import userInfo from "./userInfo";
import { getUserProfile } from "@/api/system/user"; import resetPwd from "./resetPwd";
import { getUserProfile } from "@/api/system/user";
const activeTab = ref("userinfo"); const activeTab = ref("userinfo");
const state = reactive({ const state = reactive({
user: {}, user: {},
roleGroup: {}, roleGroup: {},
postGroup: {} postGroup: {}
}); });
function getUser() { function getUser() {
getUserProfile().then(response => { getUserProfile().then(response => {
state.user = response.data; state.user = response.data;
state.roleGroup = response.roleGroup; state.roleGroup = response.roleGroup;
state.postGroup = response.postGroup; state.postGroup = response.postGroup;
}); });
}; };
getUser(); getUser();
</script> </script>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论