20260711173006

This commit is contained in:
oneao committed 2026-07-11 17:30:09 +08:00
1 parent d080a2a48d
commit 446758b2fe
384 files changed
+153926 -5937

No files matched your search

+287
View File
@@ -0,0 +1,287 @@
<script setup>
import { ArrowDown } from "@element-plus/icons-vue";
import { useRouter } from "vue-router";
import { onMounted, ref } from "vue";
import axios from "@/utils/axios";
import updatePassword from "@/views/user-center/updatepassword.vue";
import { useTabStore, useUserStore } from "@/store";
const router = useRouter();
const userStore = useUserStore();
const tabStore = useTabStore();
const title = ref("G3服务平台");
let yjt_svg =
'<svg data-v-c361ffca="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="18px" height="18px" viewBox="0 0 48 48" class="iconify iconify--icon-park-outline"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="m19 12l12 12l-12 12"></path></svg>';
let grzx_svg =
'<svg data-v-c361ffca="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="18px" height="18px" viewBox="0 0 24 24" class="iconify iconify--tdesign"><g fill="none"><path d="M16.5 7.5a4.5 4.5 0 1 1-9 0a4.5 4.5 0 0 1 9 0M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2z"></path><path stroke="currentColor" stroke-linecap="square" stroke-width="2" d="M16.5 7.5a4.5 4.5 0 1 1-9 0a4.5 4.5 0 0 1 9 0ZM20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2z"></path></g></svg>';
let xgmm_svg =
'<svg data-v-c361ffca="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="18px" height="18px" viewBox="0 0 24 24" class="iconify iconify--mdi"><path fill="currentColor" d="M12 17a2 2 0 0 1-2-2c0-1.11.89-2 2-2a2 2 0 0 1 2 2a2 2 0 0 1-2 2m6 3V10H6v10zm0-12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V10c0-1.11.89-2 2-2h1V6a5 5 0 0 1 5-5a5 5 0 0 1 5 5v2zm-6-5a3 3 0 0 0-3 3v2h6V6a3 3 0 0 0-3-3"></path></svg>';
let logout_svg =
'<svg data-v-c361ffca="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="18px" height="18px" viewBox="0 0 24 24" class="iconify iconify--mdi"><path fill="currentColor" d="M14.08 15.59L16.67 13H7v-2h9.67l-2.59-2.59L15.5 7l5 5l-5 5zM19 3a2 2 0 0 1 2 2v4.67l-2-2V5H5v14h14v-2.67l2-2V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5c0-1.11.89-2 2-2z"></path></svg>';
// 跳转到个人中心
function goToProfile() {
router.push("/user-center");
}
const passwordDialogVisible = ref(false);
function handleUpdatePassword() {
passwordDialogVisible.value = true;
}
// 退出登录
function logout() {
tabStore.reset();
userStore.reset();
router.push("/login");
}
onMounted(async () => {
let searchsql = `select * from s_keyvalue where b_key='maincaption'`;
const response = await axios.get("/selectlistbysql", { params: { sql: searchsql } });
if (response.data?.success) {
const records = response.data.data.records || [];
if (records.length > 0) {
title.value = records[0].b_value;
}
}
});
</script>
<template>
<div class="g3-topbar">
<div />
<div class="g3-topbar-right">
<div class="company-name">
{{ title }}
</div>
<div class="topbar-divider" />
<el-dropdown placement="bottom-end">
<div class="user-card">
<img
class="avatar"
src="https://api.dicebear.com/9.x/initials/svg?seed=User&backgroundColor=e5e7eb&fontColor=6b7280"
/>
<div class="name">{{ userStore.userInfo.userid || "未登录" }}</div>
<el-icon :size="14">
<arrow-down />
</el-icon>
</div>
<template #dropdown>
<div class="user-dropdown">
<div class="user-info">
<img
class="avatar"
src="https://api.dicebear.com/9.x/initials/svg?seed=User&backgroundColor=e5e7eb&fontColor=6b7280"
/>
<div>
<div class="name">{{ userStore.userInfo.userid || "未登录" }}</div>
<div class="orgid">
<div>机构码:</div>
<div>{{ userStore.userInfo.orgid || "无机构码" }}</div>
</div>
</div>
</div>
<el-dropdown-menu>
<el-dropdown-item divided @click="goToProfile">
<div class="g3flex g3color">
<div>
<div class="g3grzx" v-html="grzx_svg"></div>
<div class="g3lable">个人中心</div>
</div>
<div class="g3yjtsvg" v-html="yjt_svg"></div>
</div>
</el-dropdown-item>
<el-dropdown-item @click="handleUpdatePassword">
<div class="g3flex g3color">
<div>
<div class="g3grzx" v-html="xgmm_svg"></div>
<div class="g3lable">修改密码</div>
</div>
<div class="g3yjtsvg" v-html="yjt_svg"></div>
</div>
</el-dropdown-item>
</el-dropdown-menu>
<div class="g3hr"></div>
<div class="g3logout">
<div @click="logout">
<div class="g3logoutsvg" v-html="logout_svg"></div>
<div class="g3lable">退出登录</div>
</div>
</div>
</div>
</template>
</el-dropdown>
</div>
</div>
<updatePassword v-model:visible="passwordDialogVisible" />
</template>
<style lang="css" scoped>
.g3-topbar {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 100%;
height: 48px;
flex-shrink: 0;
/* border-bottom: 1px solid var(--g3-layout-divider-color); */
padding: 0 10px;
border-radius: 0 0 6px 6px;
background-color: #fff;
}
.g3-topbar-right {
display: flex;
align-items: center;
justify-content: center;
padding: 0px 4px;
}
.company-name {
font-size: 14px;
font-weight: bold;
color: #333;
}
.topbar-divider {
width: 1px;
height: 16px;
background-color: var(--g3-layout-divider-color);
margin: 0px 12px;
}
.user-info {
display: flex;
align-items: center;
}
.user-info > div {
min-width: 157px;
}
.user-card {
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
outline: none;
box-shadow: none;
.name {
margin: 0 6px;
}
.avatar {
width: 32px;
height: 32px;
background-color: rgba(204, 204, 204, 1);
border-radius: 50%;
}
}
.user-dropdown {
padding: 8px 14px;
.avatar {
width: 34px;
height: 34px;
background-color: rgba(204, 204, 204, 1);
margin-right: 12px;
}
.name {
display: flex;
font-size: 16px;
font-weight: 500;
color: rgb(31, 34, 37);
margin-bottom: 3px;
}
.orgid {
display: flex;
align-items: center;
font-size: 12px;
color: rgb(118, 124, 130);
}
}
:deep(.el-dropdown-menu__item) {
padding: 12px 20px;
}
.g3flex {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
.g3flex > div {
display: flex;
align-items: center;
}
.g3grzx {
margin-right: 4px;
display: flex;
align-items: center;
}
:deep(.el-dropdown-menu__item:not(.is-disabled):focus),
:deep(.el-dropdown-menu__item:not(.is-disabled):hover) {
background-color: rgba(243, 243, 245, 1);
color: unset;
border-radius: 8px;
}
.g3color {
color: rgb(51, 54, 57);
}
.g3lable {
font-size: 14px;
font-family:
v-sans,
system-ui,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif,
"Apple Color Emoji",
"Segoe UI Emoji",
"Segoe UI Symbol";
}
.g3logout {
display: flex;
justify-content: center;
margin-top: 14px;
margin-bottom: 8px;
}
.g3logout > div {
display: flex;
align-items: center;
justify-content: center;
font-weight: 500;
padding: 0px 14px;
font-size: 14px;
height: 34px;
border-radius: 8px;
color: rgb(118, 124, 130);
background-color: rgba(46, 51, 56, 0.05);
cursor: pointer;
}
.g3logoutsvg {
display: flex;
align-items: center;
margin-right: 6px;
color: rgb(118, 124, 130);
}
.g3hr {
background-color: #ebeef5;
width: 100%;
height: 1px;
}
</style>