diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a68fe5f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 2 +tab_width = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false +insert_final_newline = false \ No newline at end of file diff --git a/.npmrc b/.npmrc index 34862ff..12f6b11 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,3 @@ +# registry=https://registry.npmmirror.com electron_mirror=https://npmmirror.com/mirrors/electron/ electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/ diff --git a/src/assets/images/rate/dy.png b/src/assets/images/rate/dy.png new file mode 100644 index 0000000..690bb4d Binary files /dev/null and b/src/assets/images/rate/dy.png differ diff --git a/src/assets/images/rate/fz.png b/src/assets/images/rate/fz.png new file mode 100644 index 0000000..6354894 Binary files /dev/null and b/src/assets/images/rate/fz.png differ diff --git a/src/assets/images/rate/mt.png b/src/assets/images/rate/mt.png new file mode 100644 index 0000000..4964150 Binary files /dev/null and b/src/assets/images/rate/mt.png differ diff --git a/src/assets/images/rate/qne.png b/src/assets/images/rate/qne.png new file mode 100644 index 0000000..6a9326f Binary files /dev/null and b/src/assets/images/rate/qne.png differ diff --git a/src/assets/images/rate/xc.png b/src/assets/images/rate/xc.png new file mode 100644 index 0000000..ac77021 Binary files /dev/null and b/src/assets/images/rate/xc.png differ diff --git a/src/renderer/components/Menus/index.vue b/src/renderer/components/Menus/index.vue new file mode 100644 index 0000000..83857b1 --- /dev/null +++ b/src/renderer/components/Menus/index.vue @@ -0,0 +1,30 @@ + + + + + \ No newline at end of file diff --git a/src/renderer/components/TaskList/index.vue b/src/renderer/components/TaskList/index.vue new file mode 100644 index 0000000..5f1bff8 --- /dev/null +++ b/src/renderer/components/TaskList/index.vue @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/src/renderer/components/Versions.vue b/src/renderer/components/Versions/index.vue similarity index 100% rename from src/renderer/components/Versions.vue rename to src/renderer/components/Versions/index.vue diff --git a/src/renderer/constant/menus.ts b/src/renderer/constant/menus.ts new file mode 100644 index 0000000..84b63f6 --- /dev/null +++ b/src/renderer/constant/menus.ts @@ -0,0 +1,62 @@ +import { RiHomeLine, RiFileListLine, RiHotelLine, RiChatQuoteLine, RiBarChartBoxAiLine, RiMoreLine, RiSettingsLine } from '@remixicon/vue' + +// 菜单列表申明 +export interface MenuItem { + id: number + name: string + icon: any + color: string + activeColor: string +} + +export const menus: MenuItem[] = [ + { + id: 1, + name: '首页', + icon: RiHomeLine, + color: '#525866', + activeColor: '#2B7FFF', + }, + { + id: 2, + name: '订单', + icon: RiFileListLine, + color: '#525866', + activeColor: '#2B7FFF', + }, + { + id: 3, + name: '库存', + icon: RiHotelLine, + color: '#525866', + activeColor: '#2B7FFF', + }, + { + id: 4, + name: '评价', + icon: RiChatQuoteLine, + color: '#525866', + activeColor: '#2B7FFF', + }, + { + id: 5, + name: '数据看板', + icon: RiBarChartBoxAiLine, + color: '#525866', + activeColor: '#2B7FFF', + }, + { + id: 6, + name: '更多', + icon: RiMoreLine, + color: '#525866', + activeColor: '#2B7FFF', + }, + { + id: 7, + name: '设置', + icon: RiSettingsLine, + color: '#525866', + activeColor: '#2B7FFF', + }, +] \ No newline at end of file diff --git a/src/renderer/constant/rate.ts b/src/renderer/constant/rate.ts new file mode 100644 index 0000000..c3522a6 --- /dev/null +++ b/src/renderer/constant/rate.ts @@ -0,0 +1,52 @@ +import xc from '@assets/images/rate/xc.png' +import qne from '@assets/images/rate/qne.png' +import fz from '@assets/images/rate/fz.png' +import mt from '@assets/images/rate/mt.png' +import dy from '@assets/images/rate/dy.png' + +// 菜单列表申明 +interface Item { + id: number + name: string + icon: any + total: number, + score: number +} + +export const channels: Item[] = [ + { + id: 1, + name: '携程', + icon: xc, + total: 110, + score: 4.5 + }, + { + id: 2, + name: '去哪儿', + icon: qne, + total: 100, + score: 4.5 + }, + { + id: 3, + name: '飞猪', + icon: fz, + total: 90, + score: 4.5 + }, + { + id: 4, + name: '美团', + icon: mt, + total: 80, + score: 4.5 + }, + { + id: 5, + name: '抖音', + icon: dy, + total: 70, + score: 4.5 + } +] \ No newline at end of file diff --git a/src/renderer/env.d.ts b/src/renderer/env.d.ts index b8a9380..5eea330 100644 --- a/src/renderer/env.d.ts +++ b/src/renderer/env.d.ts @@ -1,2 +1,7 @@ declare module "@store/counter"; -declare module "@utils/request"; \ No newline at end of file +declare module "@utils/request"; +declare module "@assets/images/*"; +declare module "@constant/rate"; +declare module "@constant/menus"; +declare module "@remixicon/vue"; +declare module "vue-router"; \ No newline at end of file diff --git a/src/renderer/index.css b/src/renderer/index.css index 5308f18..e0461e9 100644 --- a/src/renderer/index.css +++ b/src/renderer/index.css @@ -6,3 +6,7 @@ body { margin: 0; padding: 0; } + +.bg { + background: linear-gradient( 180deg, #EFF6FF 0%, #F5F7FA 40%); +} \ No newline at end of file diff --git a/src/renderer/layout/index.vue b/src/renderer/layout/index.vue new file mode 100644 index 0000000..a9b72ae --- /dev/null +++ b/src/renderer/layout/index.vue @@ -0,0 +1,16 @@ + + + \ No newline at end of file diff --git a/src/renderer/main.ts b/src/renderer/main.ts index 8067493..99a7653 100644 --- a/src/renderer/main.ts +++ b/src/renderer/main.ts @@ -3,6 +3,7 @@ import { createApp } from "vue"; import { createPinia } from "pinia"; import router from "./router"; import App from "./App.vue"; +import Layout from "./layout/index.vue"; // 创建 Vue 应用实例 const app = createApp(App); @@ -10,6 +11,9 @@ const app = createApp(App); // 使用 Pinia 状态管理 app.use(createPinia()); +// 注册 Layout 组件 +app.component('Layout', Layout); + // 使用 Vue Router app.use(router); diff --git a/src/renderer/router/index.ts b/src/renderer/router/index.ts index cda5f5a..9eda7fc 100644 --- a/src/renderer/router/index.ts +++ b/src/renderer/router/index.ts @@ -12,6 +12,18 @@ const routes = [ component: () => import("@/views/browser/BrowserLayout.vue"), meta: { requiresAuth: true }, }, + { + path: "/home", + name: "Home", + component: () => import("@/views/home/index.vue"), + meta: { requiresAuth: true }, + }, + { + path: "/rate", + name: "Rate", + component: () => import("@/views/rate/index.vue"), + meta: { requiresAuth: true }, + }, { path: "/about", name: "About", @@ -24,16 +36,18 @@ const router = createRouter({ routes, }); -router.beforeEach((to, _from, next) => { +router.beforeEach((to: any, from: any, next: any) => { const token = localStorage.getItem("token"); if (to.meta && (to.meta as any).requiresAuth && !token) { next({ path: "/login" }); return; } - if (token && to.path !== "/browser") { - next({ path: "/browser" }); + + if (token && to.path !== "/rate") { + next({ path: "/rate" }); return; } + next(); }); diff --git a/src/renderer/styles/index.scss b/src/renderer/styles/index.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/renderer/views/home/index.vue b/src/renderer/views/home/index.vue index 9ef8b40..3a4110b 100644 --- a/src/renderer/views/home/index.vue +++ b/src/renderer/views/home/index.vue @@ -1,18 +1,13 @@ \ No newline at end of file diff --git a/src/renderer/views/rate/components/RateTitleSection/index.vue b/src/renderer/views/rate/components/RateTitleSection/index.vue new file mode 100644 index 0000000..b21ba7e --- /dev/null +++ b/src/renderer/views/rate/components/RateTitleSection/index.vue @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/src/renderer/views/rate/index.vue b/src/renderer/views/rate/index.vue new file mode 100644 index 0000000..5cd6fc3 --- /dev/null +++ b/src/renderer/views/rate/index.vue @@ -0,0 +1,14 @@ + + + + diff --git a/tsconfig.json b/tsconfig.json index cc65cea..8f5923e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,7 @@ "paths": { "@/*": ["./src/*"], "@store/*": ["src/renderer/store/*"], + "@constant/*": ["src/renderer/constant/*"], "@utils/*": ["src/renderer/utils/*"], "@api/*": ["src/renderer/api/*"], "@modules/*": ["src/electron/main/modules/*"], diff --git a/vite.renderer.config.ts b/vite.renderer.config.ts index ea6dd29..0234312 100644 --- a/vite.renderer.config.ts +++ b/vite.renderer.config.ts @@ -16,6 +16,7 @@ export default defineConfig({ "@": resolve(__dirname, "./src/renderer"), "@assets": resolve(__dirname, "./src/assets"), "@store": resolve(__dirname, "./src/renderer/store"), + "@constant": resolve(__dirname, "./src/renderer/constant"), "@utils": resolve(__dirname, "./src/renderer/utils"), "@api": resolve(__dirname, "./src/renderer/api"), },