From d3886e2475bf102e2d7b29ad0d9cd11ef2eaee92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=AB=E5=9C=B0=E5=83=A7?= <357099073@qq.com> Date: Wed, 17 Jun 2026 21:44:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=80=9A=E7=9F=A5=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platform/components.d.ts | 3 +- platform/src/api/reminder.js | 53 ++ .../components/notificationSettings.vue | 765 ++++++++++++++++++ .../views/system/platformsettings/index.vue | 9 + .../views/tools/notebook/components/index.vue | 3 + platform/src/views/tools/notebook/test-api.js | 148 ---- .../tools/reminder/components/detail.vue | 148 ++++ .../views/tools/reminder/components/edit.vue | 272 +++++++ platform/src/views/tools/reminder/index.vue | 318 ++++++++ 9 files changed, 1569 insertions(+), 150 deletions(-) create mode 100644 platform/src/api/reminder.js create mode 100644 platform/src/views/system/platformsettings/components/notificationSettings.vue delete mode 100644 platform/src/views/tools/notebook/test-api.js create mode 100644 platform/src/views/tools/reminder/components/detail.vue create mode 100644 platform/src/views/tools/reminder/components/edit.vue create mode 100644 platform/src/views/tools/reminder/index.vue diff --git a/platform/components.d.ts b/platform/components.d.ts index 567e500..414b83d 100644 --- a/platform/components.d.ts +++ b/platform/components.d.ts @@ -18,7 +18,6 @@ declare module 'vue' { ElAvatar: typeof import('element-plus/es')['ElAvatar'] ElBacktop: typeof import('element-plus/es')['ElBacktop'] ElButton: typeof import('element-plus/es')['ElButton'] - ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] ElCard: typeof import('element-plus/es')['ElCard'] ElCascader: typeof import('element-plus/es')['ElCascader'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] @@ -40,7 +39,6 @@ declare module 'vue' { ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElHeader: typeof import('element-plus/es')['ElHeader'] ElIcon: typeof import('element-plus/es')['ElIcon'] - ElImage: typeof import('element-plus/es')['ElImage'] ElInput: typeof import('element-plus/es')['ElInput'] ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] ElLink: typeof import('element-plus/es')['ElLink'] @@ -56,6 +54,7 @@ declare module 'vue' { ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSkeleton: typeof import('element-plus/es')['ElSkeleton'] ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElTable: typeof import('element-plus/es')['ElTable'] diff --git a/platform/src/api/reminder.js b/platform/src/api/reminder.js new file mode 100644 index 0000000..30e3ce4 --- /dev/null +++ b/platform/src/api/reminder.js @@ -0,0 +1,53 @@ +import request from "@/utils/request"; + +/** 提醒列表 */ +export function getReminderList(params) { + return request({ + url: "/platform/reminder/list", + method: "get", + params, + }); +} + +/** 提醒详情 */ +export function getReminderDetail(id) { + return request({ + url: `/platform/reminder/${id}`, + method: "get", + }); +} + +/** 新增提醒 */ +export function createReminder(data) { + return request({ + url: "/platform/reminder", + method: "post", + data, + }); +} + +/** 更新提醒 */ +export function updateReminder(id, data) { + return request({ + url: `/platform/reminder/${id}`, + method: "post", + data, + }); +} + +/** 删除提醒 */ +export function deleteReminder(id) { + return request({ + url: `/platform/reminder/${id}`, + method: "delete", + }); +} + +/** 批量删除提醒 */ +export function batchDeleteReminder(ids) { + return request({ + url: "/platform/reminder/batchDelete", + method: "post", + data: { ids }, + }); +} diff --git a/platform/src/views/system/platformsettings/components/notificationSettings.vue b/platform/src/views/system/platformsettings/components/notificationSettings.vue new file mode 100644 index 0000000..53af57c --- /dev/null +++ b/platform/src/views/system/platformsettings/components/notificationSettings.vue @@ -0,0 +1,765 @@ + + + + + diff --git a/platform/src/views/system/platformsettings/index.vue b/platform/src/views/system/platformsettings/index.vue index dc4be92..b525496 100644 --- a/platform/src/views/system/platformsettings/index.vue +++ b/platform/src/views/system/platformsettings/index.vue @@ -23,6 +23,14 @@ v-if="activeTab === 'storage'" /> + + + + + @@ -32,6 +40,7 @@ import { ref } from "vue"; import platformSettings from "./components/platformSettings.vue"; import storageSettings from "./components/storageSettings.vue"; +import notificationSettings from "./components/notificationSettings.vue"; const activeTab = ref("platform"); diff --git a/platform/src/views/tools/notebook/components/index.vue b/platform/src/views/tools/notebook/components/index.vue index e69de29..74a5c51 100644 --- a/platform/src/views/tools/notebook/components/index.vue +++ b/platform/src/views/tools/notebook/components/index.vue @@ -0,0 +1,3 @@ + diff --git a/platform/src/views/tools/notebook/test-api.js b/platform/src/views/tools/notebook/test-api.js deleted file mode 100644 index 6f601bf..0000000 --- a/platform/src/views/tools/notebook/test-api.js +++ /dev/null @@ -1,148 +0,0 @@ -/** - * 记事本模块 API 测试脚本 - * 在浏览器控制台中运行此脚本测试 API - */ - -// 测试配置 -const API_BASE = '/platform/notebook'; - -// 辅助函数:发送请求 -async function request(url, options = {}) { - const token = localStorage.getItem('token'); - const headers = { - 'Content-Type': 'application/json', - 'Authorization': token ? `Bearer ${token}` : '', - ...options.headers, - }; - - try { - const response = await fetch(url, { ...options, headers }); - const data = await response.json(); - console.log(`✅ ${options.method || 'GET'} ${url}`, data); - return data; - } catch (error) { - console.error(`❌ ${options.method || 'GET'} ${url}`, error); - throw error; - } -} - -// 测试函数 -const NotebookTest = { - // 1. 创建笔记 - async create() { - return await request(`${API_BASE}/create`, { - method: 'POST', - body: JSON.stringify({ - title: '测试笔记 - ' + new Date().toLocaleString(), - content: '

这是一条测试笔记

内容包含富文本格式

', - }), - }); - }, - - // 2. 获取笔记列表 - async list(params = {}) { - const query = new URLSearchParams({ - page: params.page || 1, - pageSize: params.pageSize || 20, - keyword: params.keyword || '', - }).toString(); - return await request(`${API_BASE}/list?${query}`); - }, - - // 3. 获取笔记详情 - async detail(id) { - return await request(`${API_BASE}/detail/${id}`); - }, - - // 4. 更新笔记 - async update(id, data) { - return await request(`${API_BASE}/update/${id}`, { - method: 'POST', - body: JSON.stringify(data), - }); - }, - - // 5. 删除笔记 - async delete(id) { - return await request(`${API_BASE}/delete/${id}`, { - method: 'DELETE', - }); - }, - - // 完整测试流程 - async runFullTest() { - console.log('🚀 开始测试记事本模块 API...\n'); - - try { - // 1. 创建笔记 - console.log('📝 测试1: 创建笔记'); - const createResult = await this.create(); - if (createResult.code !== 200) { - throw new Error('创建笔记失败'); - } - const noteId = createResult.data.id; - console.log(`✅ 创建成功,笔记ID: ${noteId}\n`); - - // 2. 获取笔记列表 - console.log('📋 测试2: 获取笔记列表'); - const listResult = await this.list(); - if (listResult.code !== 200) { - throw new Error('获取列表失败'); - } - console.log(`✅ 获取成功,共 ${listResult.data.total} 条笔记\n`); - - // 3. 获取笔记详情 - console.log('🔍 测试3: 获取笔记详情'); - const detailResult = await this.detail(noteId); - if (detailResult.code !== 200) { - throw new Error('获取详情失败'); - } - console.log(`✅ 获取成功,标题: ${detailResult.data.title}\n`); - - // 4. 更新笔记 - console.log('✏️ 测试4: 更新笔记'); - const updateResult = await this.update(noteId, { - title: '更新后的标题 - ' + new Date().toLocaleString(), - content: '

这是更新后的内容

', - }); - if (updateResult.code !== 200) { - throw new Error('更新笔记失败'); - } - console.log(`✅ 更新成功\n`); - - // 5. 搜索笔记 - console.log('🔎 测试5: 搜索笔记'); - const searchResult = await this.list({ keyword: '更新' }); - if (searchResult.code !== 200) { - throw new Error('搜索失败'); - } - console.log(`✅ 搜索成功,找到 ${searchResult.data.total} 条匹配笔记\n`); - - // 6. 删除笔记 - console.log('🗑️ 测试6: 删除笔记'); - const deleteResult = await this.delete(noteId); - if (deleteResult.code !== 200) { - throw new Error('删除笔记失败'); - } - console.log(`✅ 删除成功\n`); - - console.log('🎉 所有测试通过!'); - return true; - } catch (error) { - console.error('❌ 测试失败:', error); - return false; - } - }, -}; - -// 导出到全局 -window.NotebookTest = NotebookTest; - -console.log('📚 记事本模块测试工具已加载'); -console.log('使用方法:'); -console.log(' NotebookTest.create() - 创建笔记'); -console.log(' NotebookTest.list() - 获取列表'); -console.log(' NotebookTest.detail(id) - 获取详情'); -console.log(' NotebookTest.update(id, data) - 更新笔记'); -console.log(' NotebookTest.delete(id) - 删除笔记'); -console.log(' NotebookTest.runFullTest() - 运行完整测试'); diff --git a/platform/src/views/tools/reminder/components/detail.vue b/platform/src/views/tools/reminder/components/detail.vue new file mode 100644 index 0000000..c93d2ab --- /dev/null +++ b/platform/src/views/tools/reminder/components/detail.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/platform/src/views/tools/reminder/components/edit.vue b/platform/src/views/tools/reminder/components/edit.vue new file mode 100644 index 0000000..4569f29 --- /dev/null +++ b/platform/src/views/tools/reminder/components/edit.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/platform/src/views/tools/reminder/index.vue b/platform/src/views/tools/reminder/index.vue new file mode 100644 index 0000000..076f9fd --- /dev/null +++ b/platform/src/views/tools/reminder/index.vue @@ -0,0 +1,318 @@ + + + + +