From 8350b02d751e1e77b608748c344ff6120d40f17f Mon Sep 17 00:00:00 2001 From: chiguyong Date: Tue, 23 Jun 2026 23:50:28 +0800 Subject: [PATCH] feat(calendar): U10 frontend calendar views with 3 view modes and drawer --- .../server/frontend/package-lock.json | 65 ++++ src/agentkit/server/frontend/package.json | 4 + .../components/calendar/CalendarDrawer.vue | 94 ++++++ .../src/components/calendar/CalendarGrid.vue | 96 ++++++ .../src/components/calendar/CalendarPanel.vue | 299 ++++++++++++++++++ .../src/components/calendar/CardView.vue | 213 +++++++++++++ .../src/components/calendar/EventBadge.vue | 54 ++++ .../src/components/calendar/ListView.vue | 144 +++++++++ .../src/components/layout/AgentLayout.vue | 6 + .../components/layout/tabs/CalendarTab.vue | 7 + 10 files changed, 982 insertions(+) create mode 100644 src/agentkit/server/frontend/src/components/calendar/CalendarDrawer.vue create mode 100644 src/agentkit/server/frontend/src/components/calendar/CalendarGrid.vue create mode 100644 src/agentkit/server/frontend/src/components/calendar/CalendarPanel.vue create mode 100644 src/agentkit/server/frontend/src/components/calendar/CardView.vue create mode 100644 src/agentkit/server/frontend/src/components/calendar/EventBadge.vue create mode 100644 src/agentkit/server/frontend/src/components/calendar/ListView.vue create mode 100644 src/agentkit/server/frontend/src/components/layout/tabs/CalendarTab.vue diff --git a/src/agentkit/server/frontend/package-lock.json b/src/agentkit/server/frontend/package-lock.json index e740af0..3f609c9 100644 --- a/src/agentkit/server/frontend/package-lock.json +++ b/src/agentkit/server/frontend/package-lock.json @@ -9,6 +9,10 @@ "version": "0.1.0", "dependencies": { "@ant-design/icons-vue": "^7.0.0", + "@fullcalendar/daygrid": "^6.1.0", + "@fullcalendar/interaction": "^6.1.0", + "@fullcalendar/timegrid": "^6.1.0", + "@fullcalendar/vue3": "^6.1.0", "@tauri-apps/api": "^2", "@tauri-apps/plugin-shell": "^2", "@vue-flow/background": "^1.3.0", @@ -533,6 +537,56 @@ "node": ">=12" } }, + "node_modules/@fullcalendar/core": { + "version": "6.1.21", + "resolved": "https://registry.npmmirror.com/@fullcalendar/core/-/core-6.1.21.tgz", + "integrity": "sha512-t3u/+sqh3Iq7TWtUnVLcGDUE6OWZh0UD3c04bI/l7lSLAgAKr3kngBmhHiQD1QXpwC8ZN5iNqG7a7gOVixhSKQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "preact": "~10.12.1" + } + }, + "node_modules/@fullcalendar/daygrid": { + "version": "6.1.21", + "resolved": "https://registry.npmmirror.com/@fullcalendar/daygrid/-/daygrid-6.1.21.tgz", + "integrity": "sha512-QYb1y40RGYLlOxKpYWg8O+7njEnKnFG8Tt7qjnubJGR35s1phQg67E+81y2TyAbbm59p2JFOCXGDk9t6KDujIA==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.21" + } + }, + "node_modules/@fullcalendar/interaction": { + "version": "6.1.21", + "resolved": "https://registry.npmmirror.com/@fullcalendar/interaction/-/interaction-6.1.21.tgz", + "integrity": "sha512-WPYpqtljDWmU0Xm2cOtFrLlocgxv7cgkOppj34Q6OUUat8a6Cnd6kYo2JR+irP223PE5lBYHFNp1qh7SIpJc0w==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.21" + } + }, + "node_modules/@fullcalendar/timegrid": { + "version": "6.1.21", + "resolved": "https://registry.npmmirror.com/@fullcalendar/timegrid/-/timegrid-6.1.21.tgz", + "integrity": "sha512-2DnShx/jallGmb8QCkr6pAOu/zuPhJrP7+uTrAtSnbqsX7GF3lTxqSeNGkTQwsgF5g/ia8udhQ+JNYaE+TN1cQ==", + "license": "MIT", + "dependencies": { + "@fullcalendar/daygrid": "~6.1.21" + }, + "peerDependencies": { + "@fullcalendar/core": "~6.1.21" + } + }, + "node_modules/@fullcalendar/vue3": { + "version": "6.1.21", + "resolved": "https://registry.npmmirror.com/@fullcalendar/vue3/-/vue3-6.1.21.tgz", + "integrity": "sha512-OGt6WSC+/zz/ej6a0KfIBNl7BYuGchpZU49SsedYyv3WZWbghAE+D8YD6nhH1ia/I4p5Gcsv/nEXgEkT/I8aYQ==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.21", + "vue": "^3.0.11" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -2585,6 +2639,17 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/preact": { + "version": "10.12.1", + "resolved": "https://registry.npmmirror.com/preact/-/preact-10.12.1.tgz", + "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz", diff --git a/src/agentkit/server/frontend/package.json b/src/agentkit/server/frontend/package.json index 0003f31..49e0492 100644 --- a/src/agentkit/server/frontend/package.json +++ b/src/agentkit/server/frontend/package.json @@ -18,6 +18,10 @@ }, "dependencies": { "@ant-design/icons-vue": "^7.0.0", + "@fullcalendar/daygrid": "^6.1.0", + "@fullcalendar/interaction": "^6.1.0", + "@fullcalendar/timegrid": "^6.1.0", + "@fullcalendar/vue3": "^6.1.0", "@tauri-apps/api": "^2", "@tauri-apps/plugin-shell": "^2", "@vue-flow/background": "^1.3.0", diff --git a/src/agentkit/server/frontend/src/components/calendar/CalendarDrawer.vue b/src/agentkit/server/frontend/src/components/calendar/CalendarDrawer.vue new file mode 100644 index 0000000..10f0033 --- /dev/null +++ b/src/agentkit/server/frontend/src/components/calendar/CalendarDrawer.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/agentkit/server/frontend/src/components/calendar/CalendarGrid.vue b/src/agentkit/server/frontend/src/components/calendar/CalendarGrid.vue new file mode 100644 index 0000000..1555f52 --- /dev/null +++ b/src/agentkit/server/frontend/src/components/calendar/CalendarGrid.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/src/agentkit/server/frontend/src/components/calendar/CalendarPanel.vue b/src/agentkit/server/frontend/src/components/calendar/CalendarPanel.vue new file mode 100644 index 0000000..e2cf048 --- /dev/null +++ b/src/agentkit/server/frontend/src/components/calendar/CalendarPanel.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/src/agentkit/server/frontend/src/components/calendar/CardView.vue b/src/agentkit/server/frontend/src/components/calendar/CardView.vue new file mode 100644 index 0000000..e7addc3 --- /dev/null +++ b/src/agentkit/server/frontend/src/components/calendar/CardView.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/src/agentkit/server/frontend/src/components/calendar/EventBadge.vue b/src/agentkit/server/frontend/src/components/calendar/EventBadge.vue new file mode 100644 index 0000000..4bc2d01 --- /dev/null +++ b/src/agentkit/server/frontend/src/components/calendar/EventBadge.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/agentkit/server/frontend/src/components/calendar/ListView.vue b/src/agentkit/server/frontend/src/components/calendar/ListView.vue new file mode 100644 index 0000000..f4e4ce8 --- /dev/null +++ b/src/agentkit/server/frontend/src/components/calendar/ListView.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/src/agentkit/server/frontend/src/components/layout/AgentLayout.vue b/src/agentkit/server/frontend/src/components/layout/AgentLayout.vue index 1b83ed0..3fb6842 100644 --- a/src/agentkit/server/frontend/src/components/layout/AgentLayout.vue +++ b/src/agentkit/server/frontend/src/components/layout/AgentLayout.vue @@ -74,6 +74,9 @@ + @@ -104,6 +107,7 @@ import { AppstoreOutlined, SettingOutlined, DesktopOutlined, + CalendarOutlined, } from '@ant-design/icons-vue' import { useChatStore } from '@/stores/chat' import TopNav from './TopNav.vue' @@ -121,6 +125,7 @@ const KnowledgeBaseView = defineAsyncComponent(() => import('@/views/KnowledgeBa const EvolutionView = defineAsyncComponent(() => import('@/views/EvolutionView.vue')) const SkillsView = defineAsyncComponent(() => import('@/views/SkillsView.vue')) const SettingsView = defineAsyncComponent(() => import('@/views/SettingsView.vue')) +const CalendarTab = defineAsyncComponent(() => import('./tabs/CalendarTab.vue')) const route = useRoute() const chatStore = useChatStore() @@ -152,6 +157,7 @@ const topRightTabs: QuadrantTab[] = [ const bottomRightTabs: QuadrantTab[] = [ { key: 'monitor', label: '监控', icon: DashboardOutlined as Component }, { key: 'skills', label: '技能', icon: AppstoreOutlined as Component }, + { key: 'calendar', label: '日历', icon: CalendarOutlined as Component }, { key: 'settings', label: '设置', icon: SettingOutlined as Component }, ] diff --git a/src/agentkit/server/frontend/src/components/layout/tabs/CalendarTab.vue b/src/agentkit/server/frontend/src/components/layout/tabs/CalendarTab.vue new file mode 100644 index 0000000..3c8fa1c --- /dev/null +++ b/src/agentkit/server/frontend/src/components/layout/tabs/CalendarTab.vue @@ -0,0 +1,7 @@ + + +