From be3ffb945cf3f0f2233a067f1b06028137108d69 Mon Sep 17 00:00:00 2001 From: SunWuyuan Date: Sun, 11 May 2025 16:23:41 +0800 Subject: [PATCH] Refactor RandomPicker.vue for improved readability and maintainability. Enhance template formatting by standardizing indentation and spacing, and update button properties for consistency. Add a new button for navigating to the list page in index.vue, and adjust date handling in settings and index pages for better date management. Update dataProvider and settings utility functions for improved response handling and configuration management. --- src/components/RandomPicker.vue | 268 +++++++++----- src/pages/index.vue | 54 ++- src/pages/list/[id].vue | 581 ++++++++++++++++++++++++++++++ src/pages/list/index.vue | 243 +++++++++++++ src/pages/settings.vue | 21 +- src/utils/dataProvider.js | 6 +- src/utils/providers/kvProvider.js | 4 +- src/utils/settings.js | 7 +- 8 files changed, 1060 insertions(+), 124 deletions(-) create mode 100644 src/pages/list/[id].vue create mode 100644 src/pages/list/index.vue diff --git a/src/components/RandomPicker.vue b/src/components/RandomPicker.vue index d76fbea..f02ab36 100644 --- a/src/components/RandomPicker.vue +++ b/src/components/RandomPicker.vue @@ -1,6 +1,11 @@ \ No newline at end of file + diff --git a/src/pages/index.vue b/src/pages/index.vue index e345364..8096219 100644 --- a/src/pages/index.vue +++ b/src/pages/index.vue @@ -149,6 +149,16 @@ > 随机点名 + + 列表 + student.name ); return; @@ -1390,6 +1419,7 @@ export default { if (this.state.dateString !== formattedDate) { this.state.dateString = formattedDate; this.state.selectedDate = formattedDate; + this.state.selectedDateObj = selectedDate; this.state.isToday = formattedDate === this.formatDate(this.getToday()); diff --git a/src/pages/list/[id].vue b/src/pages/list/[id].vue new file mode 100644 index 0000000..b51ec22 --- /dev/null +++ b/src/pages/list/[id].vue @@ -0,0 +1,581 @@ + + + + + diff --git a/src/pages/list/index.vue b/src/pages/list/index.vue new file mode 100644 index 0000000..e810f7d --- /dev/null +++ b/src/pages/list/index.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/src/pages/settings.vue b/src/pages/settings.vue index 75e3445..524860b 100644 --- a/src/pages/settings.vue +++ b/src/pages/settings.vue @@ -383,9 +383,9 @@ export default { // Try to get student list from the dedicated key const response = await dataProvider.loadData('classworks-list-main'); - if (response.success && Array.isArray(response.data)) { + if (response.success!=false && Array.isArray(response)) { // Transform the data into a simple list of names - this.studentData.list = response.data.map(student => student.name); + this.studentData.list = response.map(student => student.name); this.studentData.text = this.studentData.list.join('\n'); this.lastSavedData = [...this.studentData.list]; this.hasUnsavedChanges = false; @@ -394,21 +394,6 @@ export default { } catch (error) { console.warn('Failed to load student list from dedicated key, falling back to config', error); } - - // Fall back to retrieving from config if the dedicated key is not available - const response = await kvProvider.local.loadConfig(); - - if (response.success && response.data && Array.isArray(response.data.studentList)) { - this.studentData.list = response.data.studentList; - this.studentData.text = response.data.studentList.join('\n'); - this.lastSavedData = [...response.data.studentList]; - this.hasUnsavedChanges = false; - } else { - // If no student list is found anywhere, initialize with empty list - this.studentData.list = []; - this.studentData.text = ''; - this.lastSavedData = []; - } } catch (error) { console.error('加载学生列表失败:', error); this.studentsError = error.message || '加载失败,请检查设置'; @@ -436,7 +421,7 @@ export default { // Save the student list to the dedicated key const response = await dataProvider.saveData("classworks-list-main", formattedStudentList); - if (!response.success) { + if (response.success==false) { throw new Error(response.error?.message || "保存失败"); } diff --git a/src/utils/dataProvider.js b/src/utils/dataProvider.js index 3b25d2e..a75b74b 100644 --- a/src/utils/dataProvider.js +++ b/src/utils/dataProvider.js @@ -1,11 +1,7 @@ import { kvProvider } from "./providers/kvProvider"; import { getSetting } from "./settings"; -export const formatResponse = (data, message = null) => ({ - success: true, - data, - message, -}); +export const formatResponse = (data, message = null) => (data); export const formatError = (message, code = "UNKNOWN_ERROR") => ({ success: false, diff --git a/src/utils/providers/kvProvider.js b/src/utils/providers/kvProvider.js index f1aa5b7..9cbfa0c 100644 --- a/src/utils/providers/kvProvider.js +++ b/src/utils/providers/kvProvider.js @@ -62,7 +62,7 @@ export const kvProvider = { const db = await initDB(); await db.put("kv", JSON.stringify(data), key); - return formatResponse(null, "保存成功"); + return formatResponse(true, "保存成功"); } catch (error) { return formatError("保存本地数据失败:" + error); } @@ -100,7 +100,7 @@ export const kvProvider = { await axios.post(`${serverUrl}/${machineId}/${key}`, data, { headers: getHeaders(), }); - return formatResponse(null, "保存成功"); + return formatResponse(true); } catch (error) { return formatError( error.response?.data?.message || "保存失败", diff --git a/src/utils/settings.js b/src/utils/settings.js index a279f6b..163f4c8 100644 --- a/src/utils/settings.js +++ b/src/utils/settings.js @@ -146,7 +146,12 @@ const settingsDefinitions = { description: "是否显示防烧屏忽悠卡片", icon: "mdi-monitor-shimmer", }, - + "display.showListCard": { + type: "boolean", + default: true, + description: "是否显示列表卡片", + icon: "mdi-list-box", + }, // 服务器设置(合并了数据提供者设置) "server.domain": { type: "string",