Compare commits

...

3 Commits

Author SHA1 Message Date
duanshuwen
90a3ff6f77 feat: 修复ts语法报错 2026-04-10 21:32:41 +08:00
duanshuwen
d2d6ecaa68 feat: 修改侧边菜单样式 2026-04-10 21:32:41 +08:00
duanshuwen
b0539c895a feat: add skills file 2026-04-10 21:32:41 +08:00
8 changed files with 52 additions and 12 deletions

9
.npmrc
View File

@@ -1,3 +1,8 @@
# registry=https://registry.npmmirror.com # registry=https://registry.npmmirror.com
electron_mirror=https://npmmirror.com/mirrors/electron/ # electron_mirror=https://npmmirror.com/mirrors/electron/
electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/ # electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
package-import-method=copy
shamefully-hoist=true
strict-peer-dependencies=false

View File

@@ -1,15 +1,15 @@
<template> <template>
<div class="w-[80px] h-full box-border flex flex-col items-center pb-[8px]"> <div class="w-[80px] h-full box-border flex flex-col items-center pb-[8px]">
<div :class="['flex flex-col gap-[16px]', { 'mt-auto mb-[8px] shrink-1': item.id === 4 }]" <div :class="['flex flex-col gap-[16px]', { 'mt-auto mb-[8px] shrink-1': item.id === 5 }]"
v-for="(item) in menus" :key="item.id"> v-for="(item) in menus" :key="item.id">
<div :class="['cursor-pointer flex flex-col items-center justify-center']" @click="handleClick(item)"> <div :class="['cursor-pointer flex flex-col items-center justify-center']" @click="handleClick(item)">
<div :class="['box-border rounded-[16px] p-[8px]', { 'bg-white': item.id === currentId }]"> <div :class="['box-border rounded-[16px] w-[48px] h-[48px] flex flex-col items-center justify-center hover:bg-white', { 'bg-white': item.id === currentId }]">
<component :is="item.icon" :color="item.id === currentId ? item.activeColor : item.color" <component :is="item.icon" :color="item.id === currentId ? item.activeColor : item.color"
:class="['w-[32px] h-[32px]']" /> :class="['w-[32px] h-[32px]]']" />
</div> </div>
<div <div
class="text-[14px] mt-[4px] mb-[8px]" class="text-[14px] mt-[4px] mb-[8px] hover:text-[#2B7FFF]"
:style="{ color: item.id === currentId ? item.activeColor : item.color }"> :style="{ color: item.id === currentId ? item.activeColor : item.color }">
{{ item.name }} {{ item.name }}
</div> </div>
@@ -24,7 +24,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, watch } from 'vue' import { ref, watch } from 'vue'
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from 'vue-router'
import { menus, type MenuItem } from '@constant/menus' import { menus, type MenuItem } from '../../constant/menus'
const currentId = ref(1) const currentId = ref(1)
const router = useRouter() const router = useRouter()

View File

@@ -1,4 +1,4 @@
import { RiHomeLine, RiFileEditLine, RiCpuLine, RiSettingsLine } from '@remixicon/vue' import { RiHomeLine, RiFileEditLine, RiCpuLine, RiSettingsLine, RiPuzzle2Line } from '@remixicon/vue'
// 菜单列表申明 // 菜单列表申明
export interface MenuItem { export interface MenuItem {
@@ -37,6 +37,14 @@ export const menus: MenuItem[] = [
}, },
{ {
id: 4, id: 4,
name: '技能',
icon: RiPuzzle2Line,
color: '#525866',
activeColor: '#2B7FFF',
url: '/skills',
},
{
id: 5,
name: '设置', name: '设置',
icon: RiSettingsLine, icon: RiSettingsLine,
color: '#525866', color: '#525866',

View File

@@ -3,6 +3,7 @@
<div class="flex items-center m-2"> <div class="flex items-center m-2">
<img class="w-10 h-10 rounded-md" src="@assets/images/login/white_logo.png" /> <img class="w-10 h-10 rounded-md" src="@assets/images/login/white_logo.png" />
<div class="font-bold text-gray-80">YINIAN</div> <div class="font-bold text-gray-80">YINIAN</div>
<RiSideBarLine class="ml-auto cursor-pointer" />
</div> </div>
<div <div
@@ -69,7 +70,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, defineEmits } from 'vue' import { ref, onMounted, defineEmits } from 'vue'
import { RiAddLine, RiArrowRightSLine, RiArrowDownSLine } from '@remixicon/vue' import { RiSideBarLine, RiArrowRightSLine, RiArrowDownSLine } from '@remixicon/vue'
import { getSessionList, deleteSession, updateSession } from '../../api/SessionsApi'; import { getSessionList, deleteSession, updateSession } from '../../api/SessionsApi';
const deleteDialogVisible = ref(false) const deleteDialogVisible = ref(false)

View File

@@ -1,6 +1,6 @@
<template> <template>
<layout> <layout>
<div class="bg-white box-border w-full h-full flex rounded-[8px]"> <div class="bg-white box-border w-full h-full flex rounded-[16px]">
<SystemConfig @change=onChange /> <SystemConfig @change=onChange />
<component :is="currentComponent" /> <component :is="currentComponent" />
</div> </div>

View File

@@ -0,0 +1,11 @@
<template>
<layout>
<div class="bg-white box-border w-full h-full flex rounded-[16px]">
</div>
</layout>
</template>
<script setup lang="ts"></script>
<style scoped lang="scss"></style>

View File

@@ -29,6 +29,12 @@ const routes = [
name: "Knowledge", name: "Knowledge",
meta: { requiresAuth: true }, meta: { requiresAuth: true },
}, },
{
path: "/skills",
component: () => import("@src/pages/skills/index.vue"),
name: "Skills",
meta: { requiresAuth: true },
},
{ {
path: "/setting", path: "/setting",
component: () => import("@src/pages/setting/index.vue"), component: () => import("@src/pages/setting/index.vue"),

View File

@@ -7,10 +7,19 @@
"compilerOptions": { "compilerOptions": {
"baseUrl": "./", "baseUrl": "./",
"paths": { "paths": {
"@assets/*": ["src/assets/*"], "@src/*": ["src/*"],
"@api/*": ["src/api/*"],
"@shared/*": ["src/shared/*"],
"@store/*": ["src/store/*"],
"@constant/*": ["src/constant/*"],
"@utils/*": ["src/utils/*"],
"@lib/*": ["src/lib/*"], "@lib/*": ["src/lib/*"],
"@electron/*": ["electron/*"],
"@service/*": ["electron/service/*"], "@service/*": ["electron/service/*"],
"@locales/*": ["src/i18n/locales/*"] "@locales/*": ["src/i18n/locales/*"],
"@hooks/*": ["src/hooks/*"],
"@components/*": ["src/components/*"],
"@assets/*": ["src/assets/*"]
} }
} }
} }