diff --git a/.gitignore b/.gitignore index b87bd9f..a136a55 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ node_modules /dist /dev-dist +/data # local env files .env.local diff --git a/.trae/specs/ui-improvements-spec/checklist.md b/.trae/specs/ui-improvements-spec/checklist.md new file mode 100644 index 0000000..ba4fb13 --- /dev/null +++ b/.trae/specs/ui-improvements-spec/checklist.md @@ -0,0 +1,10 @@ +- [x] Announcement Settings Dialog Markdown toolbar wraps correctly +- [x] Announcement Settings Dialog Preview works +- [x] Announcement Widget is hidden when no announcements exist +- [x] Clicking Announcement Widget opens detail popup +- [x] "Self Correction" tag in Homework Grid is Green +- [x] "Add Item" button in Homework Edit Dialog is White and distinct +- [x] Metadata buttons in Homework Edit Dialog match Preset chips size/shape +- [x] Refresh button in Floating Toolbar does not stick in loading state +- [x] "Save Success" green notification appears after saving Homework +- [x] "Save Success" green notification appears after saving Announcement diff --git a/.trae/specs/ui-improvements-spec/spec.md b/.trae/specs/ui-improvements-spec/spec.md new file mode 100644 index 0000000..0530228 --- /dev/null +++ b/.trae/specs/ui-improvements-spec/spec.md @@ -0,0 +1,55 @@ +# UI and Functional Improvements Spec + +## Why +User reported several UI inconsistencies, visual bugs, and missing feedback mechanisms that affect the usability and aesthetic quality of the application. Specifically, the announcement feature needs polish, font colors need adjustment for dark mode, and feedback for save operations is missing. + +## What Changes + +### Announcement Feature +- **Settings Dialog (`AnnouncementSettingsDialog.vue`)**: + - Fix Markdown toolbar layout to prevent conflicts/overflow (use `flex-wrap`). + - Fix Preview functionality (ensure `parseMarkdown` works). + - Add "Save Success" feedback when adding/modifying announcements. +- **Widget (`AnnouncementWidget.vue`)**: + - **Hide the widget completely** when there are no active/upcoming announcements (User requirement: "only shows when there are announcements"). + - Make the widget clickable to open a detail popup of the current announcement. +- **Detail Popup (`AnnouncementOverlay.vue` or new)**: + - Ensure manually clicking the widget opens the detail view. + +### Homework UI +- **Homework Grid (`HomeworkGrid.vue`)**: + - Change "Self Correction" (自批) tag color from Orange/Warning to **Green/Success**. +- **Homework Edit Dialog (`HomeworkEditDialog.vue`)**: + - **Add Item Button**: Change style to be more obvious (White background, black text). + - **Metadata Buttons** (Submission Time, Self Correction): Adjust height and border-radius to match the "Preset" chips on the left for visual consistency. + +### General UI +- **Font Colors**: + - Change gray text to **White** in key locations (e.g., Homework Edit dialog controls, Announcement widget text) for better contrast in dark mode. +- **Floating Toolbar**: + - Fix the "Refresh" button loading state (it appears stuck). +- **Feedback**: + - Implement a "Save Success" (green) notification (Snackbar/Toast) that triggers after successful save operations (Homework save, Announcement save, etc.). + +## Impact +- **Affected Components**: `AnnouncementSettingsDialog`, `AnnouncementWidget`, `HomeworkGrid`, `HomeworkEditDialog`, `FloatingToolbar`, `index.vue`. +- **User Experience**: Improved visual consistency, better feedback on actions, and cleaner interface when no announcements are present. + +## ADDED Requirements +### Requirement: Save Feedback +The system SHALL display a green "Save Success" notification (Snackbar) when: +- A homework entry is saved (auto-save or manual). +- An announcement is added or modified. +- Attendance is saved. + +### Requirement: Announcement Widget Behavior +- **WHEN** there are no active announcements, **THEN** the widget on the main board SHALL be hidden. +- **WHEN** the widget is visible and clicked, **THEN** it SHALL open the announcement detail popup. + +## MODIFIED Requirements +### Requirement: Visual Styles +- **Self Correction Tag**: SHALL be Green. +- **Add Item Button**: SHALL be White (filled). +- **Metadata Buttons**: SHALL match Preset Chips in size and shape. +- **Refresh Button**: SHALL NOT show loading state indefinitely. + diff --git a/.trae/specs/ui-improvements-spec/tasks.md b/.trae/specs/ui-improvements-spec/tasks.md new file mode 100644 index 0000000..b3c8b68 --- /dev/null +++ b/.trae/specs/ui-improvements-spec/tasks.md @@ -0,0 +1,27 @@ +# Tasks + +- [x] Task 1: Update Announcement System + - [x] SubTask 1.1: Fix `AnnouncementSettingsDialog.vue`: + - Fix Markdown toolbar layout (flex-wrap). + - Ensure Preview works (check `parseMarkdown` usage). + - Add "Save Success" notification trigger on save. + - [x] SubTask 1.2: Update `AnnouncementWidget.vue`: + - Add logic to hide component if `notifications` is empty. + - Add click handler to open detail popup (emit event or call method). + - [x] SubTask 1.3: Update `index.vue` to handle widget click and show detail popup. + +- [x] Task 2: Update Homework UI + - [x] SubTask 2.1: Update `HomeworkGrid.vue`: + - Change "Self Correction" chip color to `success`. + - [x] SubTask 2.2: Update `HomeworkEditDialog.vue`: + - Style "Add Item" button (color="white", variant="flat"). + - Style "Submission Time" and "Self Correction" buttons to match `v-chip` style (height, rounded). + - Ensure text colors are white where appropriate. + +- [x] Task 3: Fix General UI & Feedback + - [x] SubTask 3.1: Fix `FloatingToolbar.vue` refresh button loading state (debug `loading` prop). + - [x] SubTask 3.2: Implement Global "Save Success" Snackbar in `index.vue` and expose method/event to trigger it from child components. + - [x] SubTask 3.3: specific font color adjustments (Grey to White) in `AttendanceSidebar` and `HomeworkGrid` as requested. + +# Task Dependencies +- Task 3.2 (Global Snackbar) should be done before Task 1.1 and 1.3 to ensure feedback works. diff --git a/CHWB.png b/CHWB.png new file mode 100644 index 0000000..7241cdc Binary files /dev/null and b/CHWB.png differ diff --git a/README.md b/README.md index 44a3d93..294becc 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,6 @@ 适用于班级大屏的作业板小工具 -请打开 [https://cs.houlangs.com](https://cs.houlang.cloud) 立刻使用 - ## 交流 QQ:[964979747](https://qm.qq.com/q/4RX45b1Oac) diff --git a/docker-server/.dockerignore b/docker-server/.dockerignore new file mode 100644 index 0000000..5a045a3 --- /dev/null +++ b/docker-server/.dockerignore @@ -0,0 +1,3 @@ +node_modules +data +.env diff --git a/docker-server/Dockerfile b/docker-server/Dockerfile new file mode 100644 index 0000000..07f1db5 --- /dev/null +++ b/docker-server/Dockerfile @@ -0,0 +1,22 @@ +FROM node:18-alpine + +WORKDIR /app + +# Copy package files and install production dependencies +COPY package*.json ./ +RUN npm install --production + +# Copy server code +COPY server.js ./ + +# Copy the pre-built frontend files +COPY dist ./dist + +# Create a data directory to store JSON files locally +RUN mkdir -p data + +# Expose port +EXPOSE 3001 + +# Start the server +CMD ["npm", "start"] diff --git a/docker-server/README.md b/docker-server/README.md new file mode 100644 index 0000000..8307e87 --- /dev/null +++ b/docker-server/README.md @@ -0,0 +1,43 @@ +# ClassHomeworkBoard - Docker 部署版本 + +这是一个专门为服务器部署设计的 Node.js 后端程序,它包含了 Express 服务器和构建好的前端静态文件。此版本去除了对 Windows 特有功能(如通过 `user32.dll` 抓取 PPT 和 WPS 窗口)的依赖,完美适配 Linux 和 Docker 环境。 + +## 包含内容 + +- `server.js`: 提供 `/api/local-file/*` 本地存储接口的 Express 后端。 +- `dist/`: 已经构建好的前端静态资源文件。 +- `Dockerfile`: 用于构建 Docker 镜像的配置文件。 +- `package.json`: 服务器的 npm 依赖配置文件。 + +## 如何使用 Docker 部署 + +1. **构建 Docker 镜像** + 在 `docker-server` 目录下运行以下命令: + ```bash + docker build -t classhomeworkboard . + ``` + +2. **运行 Docker 容器** + ```bash + docker run -d -p 3001:3001 -v chwb_data:/app/data --name chwb classhomeworkboard + ``` + > 这里的 `-v chwb_data:/app/data` 表示将容器内的 `/app/data`(存储 JSON 数据的文件夹)挂载到外部卷,防止数据随容器销毁而丢失。 + +3. **访问服务** + 打开浏览器,访问 `http://<服务器IP>:3001` 即可使用。 + +## 如果你需要更新前端代码 + +如果你在主项目中修改了 Vue 前端代码: +1. 在项目根目录运行 `npm run build`(或 `pnpm run build`)重新打包前端。 +2. 将打包后生成的 `dist` 文件夹覆盖到本目录的 `dist` 文件夹。 +3. 重新执行 Docker 镜像的构建与部署步骤。 + +## 本地(不使用 Docker)直接运行 + +如果你想直接在服务器的 Node 环境中运行: +```bash +npm install +npm start +``` +默认会在 3001 端口启动。 \ No newline at end of file diff --git a/docker-server/package.json b/docker-server/package.json new file mode 100644 index 0000000..3e4f89d --- /dev/null +++ b/docker-server/package.json @@ -0,0 +1,14 @@ +{ + "name": "classhomeworkboard-server", + "version": "1.0.0", + "description": "Dockerized server for ClassHomeworkBoard", + "main": "server.js", + "type": "module", + "scripts": { + "start": "node server.js" + }, + "dependencies": { + "express": "^4.18.2", + "cors": "^2.8.5" + } +} diff --git a/docker-server/server.js b/docker-server/server.js new file mode 100644 index 0000000..86edab8 --- /dev/null +++ b/docker-server/server.js @@ -0,0 +1,123 @@ +import express from 'express'; +import cors from 'cors'; +import path from 'path'; +import fs from 'fs'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const app = express(); +const port = process.env.PORT || 3001; + +// Middlewares +app.use(cors()); +app.use(express.json({ limit: '50mb' })); + +// Data Directory for JSON files +const dataDir = path.resolve(__dirname, 'data'); +if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); +} + +// ======================= +// API Routes +// ======================= + +// Mock PPT APIs (Windows GUI features are not supported on Linux/Docker) +app.get('/api/ppt/check', (req, res) => { + res.json({ success: true, hasPpt: false, ppts: [] }); +}); + +app.post('/api/ppt/control', (req, res) => { + res.json({ success: false, error: 'Not supported on server environment' }); +}); + +// Local File Storage APIs +app.post('/api/local-file/save', (req, res) => { + try { + const { key, data } = req.body; + if (!key || !data) throw new Error('Missing key or data'); + + // Sanitize key + const safeKey = String(key).replace(/[^a-zA-Z0-9_-]/g, '_'); + const filePath = path.join(dataDir, `${safeKey}.json`); + + fs.writeFileSync(filePath, JSON.stringify(data, null, 2)); + res.json({ success: true }); + } catch (e) { + res.status(500).json({ success: false, error: e.message }); + } +}); + +app.get('/api/local-file/load', (req, res) => { + try { + const key = req.query.key; + if (!key) { + return res.status(400).json({ success: false, error: 'Missing key' }); + } + + const safeKey = String(key).replace(/[^a-zA-Z0-9_-]/g, '_'); + const filePath = path.join(dataDir, `${safeKey}.json`); + + if (fs.existsSync(filePath)) { + const data = fs.readFileSync(filePath, 'utf-8'); + res.json({ success: true, data: JSON.parse(data) }); + } else { + res.status(404).json({ success: false, error: 'Not found' }); + } + } catch (e) { + res.status(500).json({ success: false, error: e.message }); + } +}); + +app.get('/api/local-file/keys', (req, res) => { + try { + const files = fs.readdirSync(dataDir); + const keys = files + .filter(f => f.endsWith('.json')) + .map(f => f.replace('.json', '')); + res.json({ success: true, keys }); + } catch (e) { + res.status(500).json({ success: false, error: e.message }); + } +}); + +// ======================= +// Static Files & SPA +// ======================= +const staticDir = path.resolve(__dirname, 'dist'); + +if (fs.existsSync(staticDir)) { + // Serve static files + app.use(express.static(staticDir, { + setHeaders: (res, path, stat) => { + // Prevent caching for sw.js and index.html + if (path.endsWith('sw.js') || path.endsWith('index.html')) { + res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate'); + res.setHeader('Pragma', 'no-cache'); + res.setHeader('Expires', '0'); + } else { + // Cache other static assets + res.setHeader('Cache-Control', 'public, max-age=3600'); + } + } + })); + + // Catch-all route for SPA fallback + app.get('*', (req, res) => { + res.sendFile(path.join(staticDir, 'index.html')); + }); +} else { + // Fallback if dist doesn't exist yet + app.get('*', (req, res) => { + res.send('

Frontend not found!

Please build the Vue frontend (npm run build) and copy the dist folder into the docker-server directory before running.

'); + }); +} + +// Start Server +app.listen(port, () => { + console.log(`ClassHomeworkBoard Server running on port ${port}`); + console.log(`Data directory: ${dataDir}`); + console.log(`Static files directory: ${staticDir}`); +}); diff --git a/index.html b/index.html index 6fdc3cb..9380e8d 100644 --- a/index.html +++ b/index.html @@ -2,24 +2,20 @@ - - Classworks 作业板 + CHWB作业板 - - - @@ -28,7 +24,6 @@ - diff --git a/package.json b/package.json index db47c8a..d556994 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "classworks", + "name": "classhomeworkboard", "private": true, "type": "module", - "version": "0.0.0", + "version": "2.1.0", "scripts": { "dev": "vite --host", "build": "vite build", @@ -13,13 +13,13 @@ "dependencies": { "@fingerprintjs/fingerprintjs": "^5.0.1", "@mdi/font": "7.4.47", - "@microsoft/clarity": "^1.0.2", - "@sentry/vue": "^10.36.0", + "@vue-office/pptx": "^1.0.1", "@vueuse/core": "^14.1.0", "axios": "^1.13.2", "idb": "^8.0.3", "js-base64": "^3.7.8", "lucide-vue-next": "^0.555.0", + "markdown-it": "^14.1.1", "pinyin-pro": "^3.27.0", "ratelimit-header-parser": "^0.1.0", "roboto-fontface": "*", @@ -28,7 +28,8 @@ "uuid": "^13.0.0", "vue": "^3.5.25", "vue-sonner": "^2.0.9", - "vuetify": "^3.11.0" + "vuetify": "^3.11.0", + "xlsx": "^0.18.5" }, "devDependencies": { "@eslint/js": "^9.39.1", diff --git a/public/CHWB.png b/public/CHWB.png new file mode 100644 index 0000000..7241cdc Binary files /dev/null and b/public/CHWB.png differ diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index e0db255..0000000 Binary files a/public/favicon.ico and /dev/null differ diff --git a/public/pwa/image/favicon.ico b/public/pwa/image/favicon.ico deleted file mode 100644 index e0db255..0000000 Binary files a/public/pwa/image/favicon.ico and /dev/null differ diff --git a/public/pwa/image/logo.svg b/public/pwa/image/logo.svg deleted file mode 100644 index f11a8e5..0000000 --- a/public/pwa/image/logo.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/public/sounds/Teams Ping.mp3 b/public/sounds/Teams Ping.mp3 deleted file mode 100644 index 5f3e1c2..0000000 Binary files a/public/sounds/Teams Ping.mp3 and /dev/null differ diff --git a/public/sounds/Teams Remix.mp3 b/public/sounds/Teams Remix.mp3 deleted file mode 100644 index f50f267..0000000 Binary files a/public/sounds/Teams Remix.mp3 and /dev/null differ diff --git a/public/sounds/Teams bounce.mp3 b/public/sounds/Teams bounce.mp3 deleted file mode 100644 index 0b4e136..0000000 Binary files a/public/sounds/Teams bounce.mp3 and /dev/null differ diff --git a/public/sounds/Teams incoming-ringtone-level30.mp3 b/public/sounds/Teams incoming-ringtone-level30.mp3 deleted file mode 100644 index ce9c3b8..0000000 Binary files a/public/sounds/Teams incoming-ringtone-level30.mp3 and /dev/null differ diff --git a/public/sounds/Teams incoming-ringtone-level40.mp3 b/public/sounds/Teams incoming-ringtone-level40.mp3 deleted file mode 100644 index 41e1ef5..0000000 Binary files a/public/sounds/Teams incoming-ringtone-level40.mp3 and /dev/null differ diff --git a/public/sounds/Teams meetup_ring.mp3 b/public/sounds/Teams meetup_ring.mp3 deleted file mode 100644 index 16ff8f7..0000000 Binary files a/public/sounds/Teams meetup_ring.mp3 and /dev/null differ diff --git a/public/sounds/Teams screenshare_ring.mp3 b/public/sounds/Teams screenshare_ring.mp3 deleted file mode 100644 index 0e19996..0000000 Binary files a/public/sounds/Teams screenshare_ring.mp3 and /dev/null differ diff --git a/public/sounds/Teams teams_meet_up_reminder.mp3 b/public/sounds/Teams teams_meet_up_reminder.mp3 deleted file mode 100644 index 0e19996..0000000 Binary files a/public/sounds/Teams teams_meet_up_reminder.mp3 and /dev/null differ diff --git a/public/sounds/Teams teams_notification.mp3 b/public/sounds/Teams teams_notification.mp3 deleted file mode 100644 index f4a0a3f..0000000 Binary files a/public/sounds/Teams teams_notification.mp3 and /dev/null differ diff --git a/public/sounds/Teams 优先处理.mp3 b/public/sounds/Teams 优先处理.mp3 deleted file mode 100644 index 910efd0..0000000 Binary files a/public/sounds/Teams 优先处理.mp3 and /dev/null differ diff --git a/public/sounds/Teams 共鸣.mp3 b/public/sounds/Teams 共鸣.mp3 deleted file mode 100644 index 7f46f4e..0000000 Binary files a/public/sounds/Teams 共鸣.mp3 and /dev/null differ diff --git a/public/sounds/Teams 召唤.mp3 b/public/sounds/Teams 召唤.mp3 deleted file mode 100644 index 0b4aae2..0000000 Binary files a/public/sounds/Teams 召唤.mp3 and /dev/null differ diff --git a/public/sounds/Teams 叮铃.mp3 b/public/sounds/Teams 叮铃.mp3 deleted file mode 100644 index a099399..0000000 Binary files a/public/sounds/Teams 叮铃.mp3 and /dev/null differ diff --git a/public/sounds/Teams 增强.mp3 b/public/sounds/Teams 增强.mp3 deleted file mode 100644 index 03f7249..0000000 Binary files a/public/sounds/Teams 增强.mp3 and /dev/null differ diff --git a/public/sounds/Teams 尤里卡.mp3 b/public/sounds/Teams 尤里卡.mp3 deleted file mode 100644 index fb5cdb8..0000000 Binary files a/public/sounds/Teams 尤里卡.mp3 and /dev/null differ diff --git a/public/sounds/Teams 弹拨.mp3 b/public/sounds/Teams 弹拨.mp3 deleted file mode 100644 index a31cd6c..0000000 Binary files a/public/sounds/Teams 弹拨.mp3 and /dev/null differ diff --git a/public/sounds/Teams 提醒.mp3 b/public/sounds/Teams 提醒.mp3 deleted file mode 100644 index fce78c9..0000000 Binary files a/public/sounds/Teams 提醒.mp3 and /dev/null differ diff --git a/public/sounds/Teams 摇摆.mp3 b/public/sounds/Teams 摇摆.mp3 deleted file mode 100644 index 65fd935..0000000 Binary files a/public/sounds/Teams 摇摆.mp3 and /dev/null differ diff --git a/public/sounds/Teams 时空.mp3 b/public/sounds/Teams 时空.mp3 deleted file mode 100644 index bcf62e7..0000000 Binary files a/public/sounds/Teams 时空.mp3 and /dev/null differ diff --git a/public/sounds/Teams 气泡(大声).mp3 b/public/sounds/Teams 气泡(大声).mp3 deleted file mode 100644 index 212db3a..0000000 Binary files a/public/sounds/Teams 气泡(大声).mp3 and /dev/null differ diff --git a/public/sounds/Teams 气泡.mp3 b/public/sounds/Teams 气泡.mp3 deleted file mode 100644 index 92896fe..0000000 Binary files a/public/sounds/Teams 气泡.mp3 and /dev/null differ diff --git a/public/sounds/Teams 波普.mp3 b/public/sounds/Teams 波普.mp3 deleted file mode 100644 index ee69f22..0000000 Binary files a/public/sounds/Teams 波普.mp3 and /dev/null differ diff --git a/public/sounds/Teams 波纹.mp3 b/public/sounds/Teams 波纹.mp3 deleted file mode 100644 index 966701b..0000000 Binary files a/public/sounds/Teams 波纹.mp3 and /dev/null differ diff --git a/public/sounds/Teams 滴水.mp3 b/public/sounds/Teams 滴水.mp3 deleted file mode 100644 index e61ad75..0000000 Binary files a/public/sounds/Teams 滴水.mp3 and /dev/null differ diff --git a/public/sounds/Teams 点击.mp3 b/public/sounds/Teams 点击.mp3 deleted file mode 100644 index fadcfa5..0000000 Binary files a/public/sounds/Teams 点击.mp3 and /dev/null differ diff --git a/public/sounds/Teams 蜂鸣声.mp3 b/public/sounds/Teams 蜂鸣声.mp3 deleted file mode 100644 index 765e504..0000000 Binary files a/public/sounds/Teams 蜂鸣声.mp3 and /dev/null differ diff --git a/public/sounds/Teams 警报.mp3 b/public/sounds/Teams 警报.mp3 deleted file mode 100644 index c5da548..0000000 Binary files a/public/sounds/Teams 警报.mp3 and /dev/null differ diff --git a/public/sounds/Teams 赋予希望.mp3 b/public/sounds/Teams 赋予希望.mp3 deleted file mode 100644 index 7562489..0000000 Binary files a/public/sounds/Teams 赋予希望.mp3 and /dev/null differ diff --git a/public/sounds/Teams 轻弹.mp3 b/public/sounds/Teams 轻弹.mp3 deleted file mode 100644 index f509a4e..0000000 Binary files a/public/sounds/Teams 轻弹.mp3 and /dev/null differ diff --git a/public/sounds/Teams 进阶.mp3 b/public/sounds/Teams 进阶.mp3 deleted file mode 100644 index 9c1d68e..0000000 Binary files a/public/sounds/Teams 进阶.mp3 and /dev/null differ diff --git a/public/sounds/Teams 重复振铃.mp3 b/public/sounds/Teams 重复振铃.mp3 deleted file mode 100644 index 7cd5fcf..0000000 Binary files a/public/sounds/Teams 重复振铃.mp3 and /dev/null differ diff --git a/public/sounds/Teams 颤振.mp3 b/public/sounds/Teams 颤振.mp3 deleted file mode 100644 index 9ff2793..0000000 Binary files a/public/sounds/Teams 颤振.mp3 and /dev/null differ diff --git a/public/sounds/Teams 高分.mp3 b/public/sounds/Teams 高分.mp3 deleted file mode 100644 index 53d2891..0000000 Binary files a/public/sounds/Teams 高分.mp3 and /dev/null differ diff --git a/public/sounds/Teams 默认.mp3 b/public/sounds/Teams 默认.mp3 deleted file mode 100644 index 639c092..0000000 Binary files a/public/sounds/Teams 默认.mp3 and /dev/null differ diff --git a/public/sounds/Teams 默认通话铃.mp3 b/public/sounds/Teams 默认通话铃.mp3 deleted file mode 100644 index 36d569f..0000000 Binary files a/public/sounds/Teams 默认通话铃.mp3 and /dev/null differ diff --git a/public/sounds/universfield-new-notification-024-370048.mp3 b/public/sounds/universfield-new-notification-024-370048.mp3 new file mode 100644 index 0000000..dc8ee33 Binary files /dev/null and b/public/sounds/universfield-new-notification-024-370048.mp3 differ diff --git a/scripts/generate-sound-list.js b/scripts/generate-sound-list.js index a4507bb..45e6efc 100644 --- a/scripts/generate-sound-list.js +++ b/scripts/generate-sound-list.js @@ -34,6 +34,7 @@ function getSoundFiles() { // 生成文件内容 function generateSoundList() { const soundFiles = getSoundFiles(); + const defaultSound = 'universfield-new-notification-024-370048.mp3'; const fileContent = `/** * 自动生成的音频文件列表 @@ -45,10 +46,10 @@ function generateSoundList() { export const soundFiles = ${JSON.stringify(soundFiles, null, 2)}; // 默认的单次通知铃声 -export const defaultSingleSound = 'Teams 默认.mp3'; +export const defaultSingleSound = '${defaultSound}'; // 默认的持续通知铃声 -export const defaultUrgentSound = 'Teams 默认通话铃.mp3'; +export const defaultUrgentSound = '${defaultSound}'; // 获取音频文件的完整路径 export function getSoundPath(filename) { diff --git a/src/App.vue b/src/App.vue index cd7b1bb..6118c99 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,8 +2,14 @@ - - + + diff --git a/src/assets/cslogo.png b/src/assets/cslogo.png deleted file mode 100644 index 94c3996..0000000 Binary files a/src/assets/cslogo.png and /dev/null differ diff --git a/src/assets/favicon.ico b/src/assets/favicon.ico deleted file mode 100644 index 8fe5a93..0000000 Binary files a/src/assets/favicon.ico and /dev/null differ diff --git a/src/assets/logo.png b/src/assets/logo.png deleted file mode 100644 index a5f23ae..0000000 Binary files a/src/assets/logo.png and /dev/null differ diff --git a/src/assets/logo.svg b/src/assets/logo.svg deleted file mode 100644 index df5fbd0..0000000 --- a/src/assets/logo.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/components/AppHeader.vue b/src/components/AppHeader.vue index 6a62425..7e625f6 100644 --- a/src/components/AppHeader.vue +++ b/src/components/AppHeader.vue @@ -1,7 +1,7 @@