From 5ac4e273aaab2b068e28da5146f516da80a8852b Mon Sep 17 00:00:00 2001 From: hxr <1490493387@qq.com> Date: Sat, 18 Nov 2023 22:48:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20:recycle:=20=E5=AE=8C=E5=96=84=20ty?= =?UTF-8?q?pescript=20=E7=B1=BB=E5=9E=8B=EF=BC=8C=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mock/user.ts | 4 +- src/api/article.ts | 88 ------------------- src/api/auth/index.ts | 4 +- src/api/auth/types.ts | 8 +- .../icons/{verify-code.svg => captcha.svg} | 0 src/assets/icons/refresh.svg | 1 + src/lang/package/en.ts | 2 +- src/lang/package/zh-cn.ts | 2 +- src/layout/components/TagsView/index.vue | 8 +- src/layout/index.vue | 57 ++++++------ src/store/modules/tagsView.ts | 8 +- src/styles/sidebar.scss | 2 +- src/views/dashboard/index.vue | 6 +- src/views/login/index.vue | 17 ++-- vite.config.ts | 8 +- 15 files changed, 69 insertions(+), 146 deletions(-) delete mode 100644 src/api/article.ts rename src/assets/icons/{verify-code.svg => captcha.svg} (100%) create mode 100644 src/assets/icons/refresh.svg diff --git a/mock/user.ts b/mock/user.ts index 71d4468..690f8ea 100644 --- a/mock/user.ts +++ b/mock/user.ts @@ -18,8 +18,8 @@ export default [ return { code: "00000", data: { - verifyCodeKey: "534b8ef2b0a24121bec76391ddd159f9", - verifyCodeBase64: + captchaKey: "534b8ef2b0a24121bec76391ddd159f9", + captchaBase64: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAAkCAIAAADNSmkJAAAFKUlEQVR4Xu2ZXUwcVRiGV70wMWo08V5NvPXCrDbFaGpMaZW2hqQxaoiJTRsaMBCNSYtpa2JTKiFSelFa+Q/QZcMWqEhBlh+htbEpZhMrBQrlJ0hBywLLyrJ0WZbje3bqOvPNLHPWrDvdOE9ONmfe78zkzMs335wzWJhJQrBQweS/wTQ6QWgYHdoIOcecOe05O+t2WkutO+p2ZF3Ksg/YV9ZW6FATYajR3nveg60H9327r3O8c35lHgp+r05dPdJzBL73TPSQ8SaCKIxGLsPlop+K0JHrEkPuoT31e5qGmmjARACF0agYyGVNlyVm/pzZXrN9fHGcBkz0UBid+31u93i3XFFT80vN8cvHqWqih8Lo1NpUqS5vwh3vnd223VQ10UNh9NbyrcFQUK6oCawHUipSqGqiB83oBf+CXFGDMp1mS6OqiR4Ko7FexkpOrqhpHGw82nOUqiZ6KIzGrkRuorW0dJMmOy+hOCfYGzb2RBFv6HRO0gEJw/U7y+pgL1bwmTxexN6sZ31TdEwEhdG+gA+7EqyXpUO1uZH20cWL8hMTRt1N9tBXzCJrOIRoCPJpSO2RAp4HmtCdIfZ+2JWgEBN9LbR28seTGU0Zue1tMLp+YIAMSADzfvbkKX4/eb28j4YODiGin3heqmIlLja5hAUCu+nmGY3JWKvpMAlqNGgebsauBOvlqSX+JEx7p7EbTLen53XlzfmWUioqXikrc68Y8N2juJ/fyVsNChGHEE//rBANYWaZz+TRQqpLaBgNsPfDrgSpbS21YtV87IdjrlkX9JZbt5DOma2t9ITo5F+5glN22WwL/n+yDv00mw06orKxOqQ5+J04hhViwzAXETIcJDVm8uxZqktoGx2Nj9t43Wgaul/ERQiGQvtbWnDWgZYW9CXlQFjZ/7ciyHNn+Z2MexTimIeLz59TiIln0M1e+IbPpOAaDUnEYPTi6iqKxpbycs/qKo1tCslfKcffPn9enuMiPPY1vxO/ckeFQ4h46cdGqUWoidE/y54q5tPY5WDrGzQqIXot4BgchEE57e00IMCw2/1qZSVO/7SjA78o9INzcxsbrL+fnTnDDh9mmZn8F30oG1Hm+nABv5mQMopDS/h1HxtqTzWbABMe9sxpPoe9zezeOo1GELqWhPS8t46M0IAYHbdvR1aHbaOjbjfLz2eFhez6dba4yAfgF30o0BFVE8+Mjh/wFxPI+I5mAEHU6Ls+38vhTFwOBGhMDF8gkFpbC5ffsdv/uBs6dIj19dExEtARVXv9YNbop8NFY3aZ6gRRo+tu3IBHnzmdNCBMXldXJKPfL74WzWUJRE+coDUknqsOdZXQbAJYwluVTbOZI3Qt8GFzMwxyjo3RgBiN4fr+elXVpZGRLWXl6PdOTtJBSlBDUK/lnIrjOlrtqWYTQDJaF6FrTXu9sOa1ysrVoM5HVE1GFxZQcyJ/p+xzv6K/rbr6N6+XDpUBl0tKFIrbz78qWB6YnWFMCBld4XLBms+7df75ook/GNzb0GCV7U1Qfz9p64TyQWNjYD3qe9rj4SMJtQP3MyjSDPzWIRHPjH7X4YAvfXoPuyZf9Pbi3PcuXIh4mp3NllYC6XY79C+jl2o8PBipxjnBttn4MgMNnWgfcRJGPI2OL8hTj3LloIlmRicvBhiNykvecpqoa3RSY4DRcLAwyicuOepVR1JjgNFYHWONHL04czTX0UmNAUYD7Pr+xc4wqTHGaBb2OtZvHUmNYUazcA2J6etdUmOk0f8rTKMTxF91RG0D1SwYGwAAAABJRU5ErkJggg==", }, msg: "一切ok", diff --git a/src/api/article.ts b/src/api/article.ts deleted file mode 100644 index 2547a4b..0000000 --- a/src/api/article.ts +++ /dev/null @@ -1,88 +0,0 @@ -import request from "@/utils/request"; - -export interface ArticleQuery { - page?: number; - limit?: number; - sort?: string; - title?: string; - type?: string; - importance?: number; -} - -export interface ArticleDetail { - id: number; - timestamp: number; - title: string; - type: string; - status: string; - importance: number; - content?: string; - remark?: string; -} - -export interface ArticleCreate { - type: string; - timestamp: Date; - title: string; - status?: string; - importance?: number; - remark?: string; -} - -export interface ArticleUpdate { - id: number; - type?: string; - timestamp?: Date; - title?: string; - status?: string; - importance?: number; - remark?: string; -} - -export function fetchList(query: ArticleQuery) { - return request({ - url: "/api/v1/article/list", - method: "get", - params: query, - }); -} - -export function fetchArticle(id: number) { - return request({ - url: "/api/v1/article/detail", - method: "get", - params: { id }, - }); -} - -export function fetchPv(id: number) { - return request({ - url: "/api/v1/article/pv", - method: "get", - params: { id }, - }); -} - -export function createArticle(data: ArticleCreate) { - return request({ - url: "/api/v1/article/create", - method: "post", - data, - }); -} - -export function updateArticle(data: ArticleUpdate) { - return request({ - url: "/api/v1/article/update", - method: "post", - data, - }); -} - -export function deleteArticle(id: number) { - return request({ - url: "/api/v1/article/delete", - method: "post", - data: { id }, - }); -} diff --git a/src/api/auth/index.ts b/src/api/auth/index.ts index 9266375..645628e 100644 --- a/src/api/auth/index.ts +++ b/src/api/auth/index.ts @@ -12,8 +12,8 @@ export function loginApi(data: LoginData): AxiosPromise { const formData = new FormData(); formData.append("username", data.username); formData.append("password", data.password); - formData.append("verifyCodeKey", data.verifyCodeKey || ""); - formData.append("verifyCode", data.verifyCode || ""); + formData.append("captchaKey", data.captchaKey || ""); + formData.append("captchaCode", data.captchaCode || ""); return request({ url: "/api/v1/auth/login", method: "post", diff --git a/src/api/auth/types.ts b/src/api/auth/types.ts index f76e0f9..0da661e 100644 --- a/src/api/auth/types.ts +++ b/src/api/auth/types.ts @@ -14,12 +14,12 @@ export interface LoginData { /** * 验证码缓存key */ - verifyCodeKey?: string; + captchaKey?: string; /** * 验证码 */ - verifyCode?: string; + captchaCode?: string; } /** @@ -51,9 +51,9 @@ export interface CaptchaResult { /** * 验证码缓存key */ - verifyCodeKey: string; + captchaKey: string; /** * 验证码图片Base64字符串 */ - captchaImgBase64: string; + captchaBase64: string; } diff --git a/src/assets/icons/verify-code.svg b/src/assets/icons/captcha.svg similarity index 100% rename from src/assets/icons/verify-code.svg rename to src/assets/icons/captcha.svg diff --git a/src/assets/icons/refresh.svg b/src/assets/icons/refresh.svg new file mode 100644 index 0000000..4661eeb --- /dev/null +++ b/src/assets/icons/refresh.svg @@ -0,0 +1 @@ + diff --git a/src/lang/package/en.ts b/src/lang/package/en.ts index 8acf0bd..e7bbb53 100644 --- a/src/lang/package/en.ts +++ b/src/lang/package/en.ts @@ -9,7 +9,7 @@ export default { username: "Username", password: "Password", login: "Login", - verifyCode: "Verify Code", + captchaCode: "Verify Code", }, // 导航栏国际化 navbar: { diff --git a/src/lang/package/zh-cn.ts b/src/lang/package/zh-cn.ts index 1c5b543..ed90143 100644 --- a/src/lang/package/zh-cn.ts +++ b/src/lang/package/zh-cn.ts @@ -9,7 +9,7 @@ export default { username: "用户名", password: "密码", login: "登 录", - verifyCode: "验证码", + captchaCode: "验证码", }, // 导航栏国际化 navbar: { diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue index 090e9da..6d5f425 100644 --- a/src/layout/components/TagsView/index.vue +++ b/src/layout/components/TagsView/index.vue @@ -79,6 +79,7 @@ const tagsViewStore = useTagsViewStore(); const appStore = useAppStore(); const { visitedViews } = storeToRefs(tagsViewStore); +console.log("visitedViews", visitedViews); const settingsStore = useSettingsStore(); const layout = computed(() => settingsStore.layout); @@ -141,11 +142,14 @@ function filterAffixTags(routes: RouteRecordRaw[], basePath = "/") { let tags: TagView[] = []; routes.forEach(processRoute); + console.log("filterAffixTags", tags); + return tags; } function initTags() { const tags: TagView[] = filterAffixTags(permissionStore.routes); + console.log("initTags", tags); affixTags.value = tags; for (const tag of tags) { // Must have tag name @@ -156,6 +160,7 @@ function initTags() { } function addTags() { + console.log("addTags", visitedViews); if (route.meta.title) { tagsViewStore.addView({ name: route.name as string, @@ -169,13 +174,14 @@ function addTags() { } function moveToCurrentTag() { + console.log("moveToCurrentTag", visitedViews); // 使用 nextTick() 的目的是确保在更新 tagsView 组件之前,scrollPaneRef 对象已经滚动到了正确的位置。 nextTick(() => { for (const tag of visitedViews.value) { if (tag.path === route.path) { scrollPaneRef.value.moveToTarget(tag); // when query is different then update - route.query = { ...route.query, ...tag.query }; + // route.query = { ...route.query, ...tag.query }; if (tag.fullPath !== route.fullPath) { tagsViewStore.updateVisitedView({ name: route.name as string, diff --git a/src/layout/index.vue b/src/layout/index.vue index aa1aebd..affb973 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -80,31 +80,30 @@ function toggleSideBar() { @@ -126,7 +125,7 @@ function toggleSideBar() { } } -.drawer-bg { +.drawer__background { position: absolute; top: 0; z-index: 999; @@ -177,12 +176,12 @@ function toggleSideBar() { margin-left: 0; } - .mix-wrap { + .mix-wrapper { display: flex; height: 100%; padding-top: 50px; - .left-wrap { + .mix-wrapper__left { position: relative; height: 100%; @@ -190,7 +189,7 @@ function toggleSideBar() { height: 100%; } - .menu-action { + .toggle-sidebar { position: absolute; bottom: 0; display: flex; @@ -219,8 +218,8 @@ function toggleSideBar() { } .openSidebar { - .mix-wrap { - .left-wrap { + .mix-wrapper { + .mix-wrapper__left { width: $sideBarWidth; } diff --git a/src/store/modules/tagsView.ts b/src/store/modules/tagsView.ts index b80db63..b18646c 100644 --- a/src/store/modules/tagsView.ts +++ b/src/store/modules/tagsView.ts @@ -4,12 +4,15 @@ export const useTagsViewStore = defineStore("tagsView", () => { const visitedViews = ref([]); const cachedViews = ref([]); + console.log("first visitedViews", visitedViews, "cachedViews", cachedViews); + /** * 添加已访问视图到已访问视图列表中 */ function addVisitedView(view: TagView) { + console.log("addVisitedView", visitedViews, view); // 如果已经存在于已访问的视图列表中,则不再添加 - if (visitedViews.value.some((v) => v.path === view.path)) { + if (visitedViews.value.some((v) => v.fullPath === view.fullPath)) { return; } // 如果视图是固定的(affix),则在已访问的视图列表的开头添加 @@ -25,6 +28,7 @@ export const useTagsViewStore = defineStore("tagsView", () => { * 添加缓存视图到缓存视图列表中 */ function addCachedView(view: TagView) { + console.log("addCachedView", visitedViews, view); const viewName = view.name; // 如果缓存视图名称已经存在于缓存视图列表中,则不再添加 if (cachedViews.value.includes(viewName)) { @@ -86,6 +90,7 @@ export const useTagsViewStore = defineStore("tagsView", () => { } function updateVisitedView(view: TagView) { + console.log("updateVisitedView", visitedViews, view); for (let v of visitedViews.value) { if (v.path === view.path) { v = Object.assign(v, view); @@ -95,6 +100,7 @@ export const useTagsViewStore = defineStore("tagsView", () => { } function addView(view: TagView) { + console.log("addView", visitedViews, view); addVisitedView(view); addCachedView(view); } diff --git a/src/styles/sidebar.scss b/src/styles/sidebar.scss index d2c89b5..fa1e53f 100644 --- a/src/styles/sidebar.scss +++ b/src/styles/sidebar.scss @@ -85,7 +85,7 @@ } .hideSidebar { - .left-wrap { + .mix-wrapper__left { width: 54px; } diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index 1a89ee0..fbb4362 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -87,7 +87,7 @@ orderCount.value = 2000; @@ -96,7 +96,7 @@ orderCount.value = 2000; @@ -106,7 +106,7 @@ orderCount.value = 2000; diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 58fb60f..dadf82c 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -70,15 +70,15 @@ - + - + @@ -211,11 +211,11 @@ const loginRules = computed(() => { message: `${prefix}${t("login.password")}`, }, ], - verifyCode: [ + captchaCode: [ { required: true, trigger: "blur", - message: `${prefix}${t("login.verifyCode")}`, + message: `${prefix}${t("login.captchaCode")}`, }, ], }; @@ -234,9 +234,8 @@ function checkCapslock(e: any) { */ function getCaptcha() { getCaptchaApi().then(({ data }) => { - const { captchaImgBase64, verifyCodeKey } = data; - loginData.value.verifyCodeKey = verifyCodeKey; - captchaBase64.value = captchaImgBase64; + loginData.value.captchaKey = data.captchaKey; + captchaBase64.value = data.captchaBase64; }); } diff --git a/vite.config.ts b/vite.config.ts index 7a2aff8..e4cc699 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -80,8 +80,8 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => { }, vueTemplate: true, // 配置文件生成位置(false:关闭自动生成) - //dts: false, - dts: "src/types/auto-imports.d.ts", + dts: false, + // dts: "src/types/auto-imports.d.ts", }), Components({ @@ -94,8 +94,8 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => { // 指定自定义组件位置(默认:src/components) dirs: ["src/components", "src/**/components"], // 配置文件位置 (false:关闭自动生成) - // dts: false, - dts: "src/types/components.d.ts", + dts: false, + // dts: "src/types/components.d.ts", }), Icons({