From d6cdd2e0e4f3cd7e5bb676aeb57c7dade27e4cec Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 03 十一月 2025 17:36:21 +0800
Subject: [PATCH] 回款登记-添加回款状态字段(回款完成,未完成)
---
src/layout/components/Navbar.vue | 169 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 132 insertions(+), 37 deletions(-)
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 9e86bfe..1f0d385 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -1,31 +1,33 @@
<template>
<div class="navbar">
- <hamburger id="hamburger-container" :is-active="getters.sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!$store.state.settings.topNav" />
- <top-nav id="topmenu-container" class="topmenu-container" v-if="$store.state.settings.topNav" />
-
+ <div>
+ <hamburger id="hamburger-container" :is-active="appStore.sidebar.opened" class="hamburger-container"
+ @toggleClick="toggleSideBar" />
+ <breadcrumb v-if="!settingsStore.topNav" id="breadcrumb-container" class="breadcrumb-container" />
+ </div>
+ <!-- <top-nav v-if="settingsStore.topNav" id="topmenu-container" class="topmenu-container" />-->
+ <div class="center-menu">
+ <span class="label">{{ userStore.currentFactoryName }}</span>
+ <el-dropdown @command="handleFactoryChange" class="right-menu-item hover-effect" trigger="click">
+ <div>
+ <el-icon size="20">
+ <Switch />
+ </el-icon>
+ </div>
+ <template #dropdown>
+ <el-dropdown-menu>
+ <el-dropdown-item v-for="item in factoryList" :key="item.deptId" :command="item">
+ {{ item.deptName }}
+ </el-dropdown-item>
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+ </div>
<div class="right-menu">
- <template v-if="getters.device !== 'mobile'">
- <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" />
- </el-tooltip>
-
- <el-tooltip content="鏂囨。鍦板潃" effect="dark" placement="bottom">
- <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
- </el-tooltip>
-
- <screenfull id="screenfull" class="right-menu-item hover-effect" />
-
- <el-tooltip content="甯冨眬澶у皬" effect="dark" placement="bottom">
- <size-select id="size-select" class="right-menu-item hover-effect" />
- </el-tooltip>
- </template>
<div class="avatar-container">
- <el-dropdown class="right-menu-item hover-effect" trigger="click">
+ <el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper">
- <img :src="getters.avatar" class="user-avatar" />
+ <img :src="userStore.avatar" class="user-avatar" />
<el-icon><caret-bottom /></el-icon>
</div>
<template #dropdown>
@@ -33,10 +35,10 @@
<router-link to="/user/profile">
<el-dropdown-item>涓汉涓績</el-dropdown-item>
</router-link>
- <el-dropdown-item @click="setLayout">
+ <el-dropdown-item command="setLayout" v-if="settingsStore.showSettings">
<span>甯冨眬璁剧疆</span>
</el-dropdown-item>
- <el-dropdown-item divided @click="logout">
+ <el-dropdown-item divided command="logout">
<span>閫�鍑虹櫥褰�</span>
</el-dropdown-item>
</el-dropdown-menu>
@@ -57,12 +59,36 @@
import HeaderSearch from '@/components/HeaderSearch'
import RuoYiGit from '@/components/RuoYi/Git'
import RuoYiDoc from '@/components/RuoYi/Doc'
+import useAppStore from '@/store/modules/app'
+import useUserStore from '@/store/modules/user'
+import useSettingsStore from '@/store/modules/settings'
+import { userLoginFacotryList } from "@/api/system/user.js"
+import Cookies from "js-cookie";
+import { decrypt } from "@/utils/jsencrypt"
-const store = useStore();
-const getters = computed(() => store.getters);
-
+const appStore = useAppStore()
+const userStore = useUserStore()
+const settingsStore = useSettingsStore()
+const factoryList = ref([])
function toggleSideBar() {
- store.dispatch('app/toggleSideBar')
+ appStore.toggleSideBar()
+}
+// const redirect = ref(undefined)
+// watch(route, (newRoute) => {
+// redirect.value = newRoute.query && newRoute.query.redirect
+// }, { immediate: true })
+
+function handleCommand(command) {
+ switch (command) {
+ case "setLayout":
+ setLayout()
+ break
+ case "logout":
+ logout()
+ break
+ default:
+ break
+ }
}
function logout() {
@@ -71,16 +97,56 @@
cancelButtonText: '鍙栨秷',
type: 'warning'
}).then(() => {
- store.dispatch('LogOut').then(() => {
- location.href = '/index';
+ userStore.logOut().then(() => {
+ location.href = '/index'
})
- }).catch(() => { });
+ }).catch(() => { })
}
const emits = defineEmits(['setLayout'])
function setLayout() {
- emits('setLayout');
+ emits('setLayout')
}
+
+function toggleTheme() {
+ settingsStore.toggleTheme()
+}
+
+function getUserLoginFacotryList() {
+ if (userStore.id) {
+ userLoginFacotryList({ userId: userStore.id }).then(res => {
+ console.log('res', res)
+ factoryList.value = res.data
+ })
+ } else {
+ factoryList.value = []
+ }
+}
+
+function handleFactoryChange(command) {
+ console.log('command', command)
+ handleLogin(command.deptId);
+}
+
+function handleLogin(currentFatoryId) {
+ const loginForm = {
+ username: Cookies.get("username"),
+ password: Cookies.get("password") === undefined ? null : decrypt(Cookies.get("password")),
+ currentFatoryId: currentFatoryId
+ }
+ userStore.loginCheckFactory(loginForm).then(res => {
+ forceReload();
+ }).catch((err) => {
+ console.log(err)
+ })
+}
+function forceReload() {
+ const currentUrl = window.location.origin + window.location.pathname;
+ const timestamp = new Date().getTime();
+ window.location.href = `${currentUrl}?reload=${timestamp}`;
+}
+
+getUserLoginFacotryList();
</script>
<style lang='scss' scoped>
@@ -88,8 +154,24 @@
height: 50px;
overflow: hidden;
position: relative;
- background: #fff;
+ background: var(--navbar-bg);
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
+
+ .center-menu {
+ line-height: 50px;
+ position: absolute;
+ left: 50%;
+ transform: translateX(-50%);
+ display: flex;
+ align-items: center;
+
+ .label {
+ font-weight: bold;
+ font-size: 18px;
+ color: #333333;
+ margin-right: 10px;
+ }
+ }
.hamburger-container {
line-height: 46px;
@@ -133,7 +215,7 @@
padding: 0 8px;
height: 100%;
font-size: 18px;
- color: #5a5e66;
+ color: var(--navbar-text);
vertical-align: text-bottom;
&.hover-effect {
@@ -142,6 +224,19 @@
&:hover {
background: rgba(0, 0, 0, 0.025);
+ }
+ }
+
+ &.theme-switch-wrapper {
+ display: flex;
+ align-items: center;
+
+ svg {
+ transition: transform 0.3s;
+
+ &:hover {
+ transform: scale(1.15);
+ }
}
}
}
@@ -157,14 +252,14 @@
cursor: pointer;
width: 40px;
height: 40px;
- border-radius: 10px;
+ border-radius: 50px;
}
i {
cursor: pointer;
position: absolute;
right: -20px;
- top: 25px;
+ top: 14px;
font-size: 12px;
}
}
--
Gitblit v1.9.3