Commit 57c2a360 by liucan

feat:修改网站标题、图标、用户默认头像

parent 2cc7a4bd
<!doctype html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> <link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue + TS</title> <title>fk互联网信息采集</title>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>
......
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
\ No newline at end of file
...@@ -18,7 +18,7 @@ export function getInfo() { ...@@ -18,7 +18,7 @@ export function getInfo() {
data: { data: {
roles: ['admin'], roles: ['admin'],
introduction: 'Admin', introduction: 'Admin',
avatar: 'user-avatar.gif', avatar: 'user-avatar.svg',
name: 'Admin' name: 'Admin'
} }
}) })
......
<svg t="1768557651273" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="24609" width="30" height="30"><path d="M983.04 709.12c-25.6 61.44-64 115.2-110.08 163.84-46.08 48.64-102.4 84.48-163.84 110.08-61.44 25.6-128 40.96-197.12 40.96s-135.68-12.8-197.12-40.96c-61.44-25.6-115.2-64-163.84-110.08-46.08-48.64-84.48-102.4-110.08-163.84-25.6-61.44-40.96-128-40.96-197.12s12.8-135.68 40.96-197.12c25.6-61.44 64-115.2 110.08-163.84 46.08-48.64 102.4-84.48 163.84-110.08S440.32 0 512 0c69.12 0 135.68 12.8 197.12 40.96 61.44 25.6 115.2 64 163.84 110.08 46.08 48.64 84.48 102.4 110.08 163.84 25.6 61.44 40.96 128 40.96 197.12s-12.8 135.68-40.96 197.12zM660.48 320c-15.36-28.16-35.84-51.2-61.44-66.56-25.6-17.92-53.76-25.6-87.04-25.6-33.28 0-61.44 7.68-87.04 25.6s-46.08 38.4-61.44 66.56c-15.36 28.16-23.04 58.88-23.04 92.16 0 35.84 7.68 69.12 23.04 97.28 15.36 28.16 35.84 51.2 61.44 66.56 25.6 15.36 53.76 25.6 87.04 25.6 30.72 0 61.44-7.68 87.04-23.04 25.6-15.36 46.08-38.4 61.44-66.56 15.36-28.16 23.04-61.44 23.04-97.28s-7.68-66.56-23.04-94.72zM739.84 742.4c-30.72-20.48-64-33.28-102.4-43.52-38.4-10.24-79.36-15.36-122.88-15.36-43.52 0-87.04 5.12-125.44 15.36-38.4 10.24-74.24 25.6-102.4 43.52-30.72 20.48-53.76 43.52-71.68 71.68 25.6 28.16 56.32 48.64 87.04 69.12 33.28 17.92 66.56 33.28 102.4 40.96 35.84 10.24 71.68 15.36 107.52 15.36 35.84 0 71.68-5.12 107.52-15.36 35.84-10.24 71.68-23.04 102.4-40.96 33.28-17.92 61.44-40.96 87.04-69.12-15.36-28.16-40.96-51.2-69.12-71.68z" p-id="24610" fill="#515151"></path></svg>
\ No newline at end of file
...@@ -6,12 +6,13 @@ import { useAppStore } from "@/store/app"; ...@@ -6,12 +6,13 @@ import { useAppStore } from "@/store/app";
import { storeToRefs } from "pinia"; import { storeToRefs } from "pinia";
import Breadcrumb from "@/components/Breadcrumb/index.vue"; import Breadcrumb from "@/components/Breadcrumb/index.vue";
import Hamburger from "@/components/Hamburger/index.vue"; import Hamburger from "@/components/Hamburger/index.vue";
import defaultUserAvatar from "@/assets/picture/user-avatar.svg";
const router = useRouter(); const router = useRouter();
const userStore = useUserStore(); const userStore = useUserStore();
const appStore = useAppStore(); const appStore = useAppStore();
const { sidebar } = storeToRefs(appStore); const { sidebar } = storeToRefs(appStore);
const avatar = computed(() => userStore.avatar || "user-avatar.gif"); const avatar = computed(() => userStore.avatar || defaultUserAvatar);
const toggleSideBar = () => { const toggleSideBar = () => {
appStore.toggleSidebar(); appStore.toggleSidebar();
...@@ -104,13 +105,13 @@ const logout = async () => { ...@@ -104,13 +105,13 @@ const logout = async () => {
margin-right: 30px; margin-right: 30px;
.avatar-wrapper { .avatar-wrapper {
margin-top: 5px; margin-top: 10px;
position: relative; position: relative;
.user-avatar { .user-avatar {
cursor: pointer; cursor: pointer;
width: 40px; width: 30px;
height: 40px; height: 30px;
border-radius: 10px; border-radius: 10px;
} }
......
import { defineStore } from 'pinia' import { defineStore } from "pinia";
import { getToken, setToken, removeToken } from '@/utils/auth' import { getToken, setToken, removeToken } from "@/utils/auth";
import { resetRouter } from '@/router' import { resetRouter } from "@/router";
import { useAppStore } from './app' import { useAppStore } from "./app";
import { login } from '@/api/user' import { login } from "@/api/user";
interface UserState { interface UserState {
token: string token: string;
name: string name: string;
avatar: string avatar: string;
} }
export const useUserStore = defineStore('user', { export const useUserStore = defineStore("user", {
state: (): UserState => ({ state: (): UserState => ({
token: getToken(), token: getToken(),
name: '', name: "",
avatar: 'user-avatar.gif' avatar: "",
}), }),
actions: { actions: {
// 用户登录 // 用户登录
async login(userInfo: {username: string, password: string}) { async login(userInfo: { username: string; password: string }) {
const { username, password } = userInfo const { username, password } = userInfo;
try { try {
const res = await login({ const res = await login({
username: username.trim(), username: username.trim(),
password: password password: password,
}) });
if (res.code === 0) { if (res.code === 0) {
const token = res.data.token const token = res.data.token;
this.token = token this.token = token;
setToken(token) setToken(token);
return Promise.resolve() return Promise.resolve();
} else { } else {
return Promise.reject(res.message) return Promise.reject(res.message);
} }
} catch (error) { } catch (error) {
return Promise.reject(error) return Promise.reject(error);
} }
}, },
// 获取用户信息 // 获取用户信息
async getInfo() { async getInfo() {
// 这里保留了 getInfo 方法,后续会根据实际需求修改 // 这里保留了 getInfo 方法,后续会根据实际需求修改
this.name = 'Admin' this.name = "Admin";
this.avatar = 'user-avatar.gif' this.avatar = "";
return { return {
name: this.name, name: this.name,
avatar: this.avatar, avatar: this.avatar,
roles: ['admin'] roles: ["admin"],
} };
}, },
// 用户登出 // 用户登出
async logout() { async logout() {
this.token = '' this.token = "";
this.name = '' this.name = "";
removeToken() removeToken();
resetRouter() resetRouter();
}, },
// 重置令牌 // 重置令牌
resetToken() { resetToken() {
this.token = '' this.token = "";
removeToken() removeToken();
}, },
// 侧边栏相关 // 侧边栏相关
toggleSidebar() { toggleSidebar() {
const appStore = useAppStore() const appStore = useAppStore();
appStore.toggleSidebar() appStore.toggleSidebar();
} },
} },
}) });
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<div class="table-content"> <div class="table-content">
<el-table <el-table
v-loading="!tableData" v-loading="!tableData"
element-loading-background="rgba(48, 65, 86, 0.3)" element-loading-background="rgba(48, 65, 86, 0.7)"
:data="tableData" :data="tableData"
style="width: 100%" style="width: 100%"
border border
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
:header-cell-style="{ textAlign: 'center' }" :header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"
v-loading="tableLoading" v-loading="tableLoading"
element-loading-background="rgba(48, 65, 86, 0.3)" element-loading-background="rgba(48, 65, 86, 0.7)"
> >
<el-table-column property="number" label="序号" width="55" type="index" /> <el-table-column property="number" label="序号" width="55" type="index" />
<el-table-column property="data.mission" label="目标名称" width="86" show-overflow-tooltip /> <el-table-column property="data.mission" label="目标名称" width="86" show-overflow-tooltip />
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<div class="table-content"> <div class="table-content">
<el-table <el-table
v-loading="tableLoading" v-loading="tableLoading"
element-loading-background="rgba(48, 65, 86, 0.3)" element-loading-background="rgba(48, 65, 86, 0.7)"
:row-style="{ height: '45px' }" :row-style="{ height: '45px' }"
:header-cell-style="{ textAlign: 'center' }" :header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
:header-cell-style="{ textAlign: 'center' }" :header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"
v-loading="tableLoading" v-loading="tableLoading"
element-loading-background="rgba(48, 65, 86, 0.3)" element-loading-background="rgba(48, 65, 86, 0.7)"
> >
<!-- <el-table-column type="selection" width="40" /> --> <!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" type="index" /> <el-table-column property="number" label="序号" width="55" type="index" />
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
:row-style="{ height: '45.5px' }" :row-style="{ height: '45.5px' }"
:header-cell-style="{ textAlign: 'center' }" :header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"
element-loading-background="rgba(48, 65, 86, 0.7)"
> >
<!-- <el-table-column type="selection" width="40" /> --> <!-- <el-table-column type="selection" width="40" /> -->
<el-table-column property="number" label="序号" width="55" type="index" /> <el-table-column property="number" label="序号" width="55" type="index" />
...@@ -58,7 +59,6 @@ ...@@ -58,7 +59,6 @@
<el-table-column property="SITE" label="目标站点" show-overflow-tooltip /> <el-table-column property="SITE" label="目标站点" show-overflow-tooltip />
<!-- <el-table-column property="failTime" label="失效时间" show-overflow-tooltip /> --> <!-- <el-table-column property="failTime" label="失效时间" show-overflow-tooltip /> -->
<el-table-column property="PERIOD" width="118" label="周期(min)" show-overflow-tooltip /> <el-table-column property="PERIOD" width="118" label="周期(min)" show-overflow-tooltip />
element-loading-background="rgba(48, 65, 86, 0.3)"
<el-table-column property="PERIAPSIS" label="近地点" show-overflow-tooltip /> <el-table-column property="PERIAPSIS" label="近地点" show-overflow-tooltip />
<el-table-column property="APOAPSIS" label="远地点" show-overflow-tooltip /> <el-table-column property="APOAPSIS" label="远地点" show-overflow-tooltip />
<!-- <el-table-column property="incl" label="INCL" show-overflow-tooltip /> --> <!-- <el-table-column property="incl" label="INCL" show-overflow-tooltip /> -->
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
:cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"
:row-style="{ height: '60px' }" :row-style="{ height: '60px' }"
v-loading="tableData.length == 0" v-loading="tableData.length == 0"
element-loading-background="rgba(48, 65, 86, 0.3)" element-loading-background="rgba(48, 65, 86, 0.7)"
> >
<el-table-column property="number" label="序号" type="index" width="80" /> <el-table-column property="number" label="序号" type="index" width="80" />
<el-table-column property="spider" label="爬虫代号" show-overflow-tooltip /> <el-table-column property="spider" label="爬虫代号" show-overflow-tooltip />
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
:row-style="{ height: '58px' }" :row-style="{ height: '58px' }"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
v-loading="tableLoading" v-loading="tableLoading"
element-loading-background="rgba(48, 65, 86, 0.3)" element-loading-background="rgba(48, 65, 86, 0.7)"
> >
<el-table-column type="selection" width="40" /> <el-table-column type="selection" width="40" />
<el-table-column property="number" label="序号" width="55" type="index" /> <el-table-column property="number" label="序号" width="55" type="index" />
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
</div> </div>
</div> </div>
</TableSearch> </TableSearch>
<div class="cardStyle" v-loading="isLoading" element-loading-background="rgba(48, 65, 86, 0.3)"> <div class="cardStyle" v-loading="isLoading" element-loading-background="rgba(48, 65, 86, 0.7)">
<div v-if="taskList.length === 0 && !isLoading" class="empty-tip">暂无任务数据</div> <div v-if="taskList.length === 0 && !isLoading" class="empty-tip">暂无任务数据</div>
<div class="taskCard p-2" v-for="task in taskList || []" :key="task?.id || task?.taskId"> <div class="taskCard p-2" v-for="task in taskList || []" :key="task?.id || task?.taskId">
<div class="header"> <div class="header">
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<div> <div>
<el-table <el-table
v-loading="tableLoading" v-loading="tableLoading"
element-loading-background="rgba(48, 65, 86, 0.3)" element-loading-background="rgba(48, 65, 86, 0.7)"
:data="tableData" :data="tableData"
style="width: 100%" style="width: 100%"
border border
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment