From 49ea5f1b2fc600a5c49d8f9aa4e0acd57e41b112 Mon Sep 17 00:00:00 2001 From: Sunwuyuan Date: Sun, 9 Nov 2025 14:30:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=E6=B8=90=E8=BF=9B?= =?UTF-8?q?=E5=BC=8F=E8=AE=BE=E5=A4=87=E6=B3=A8=E5=86=8C=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=B9=B6=E8=8E=B7=E5=8F=96=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E4=BB=A4=E7=89=8C=EF=BC=8C=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/axios/axios.js | 20 +- src/components/InitServiceChooser.vue | 81 +-- src/components/auth/FirstTimeGuide.vue | 557 ++++++++++++------ .../auth/ProgressiveRegisterPage.vue | 304 ++++++++++ .../settings/cards/CloudNamespaceInfoCard.vue | 194 ++++-- 5 files changed, 902 insertions(+), 254 deletions(-) create mode 100644 src/components/auth/ProgressiveRegisterPage.vue diff --git a/src/axios/axios.js b/src/axios/axios.js index 13f7160..b1044e5 100644 --- a/src/axios/axios.js +++ b/src/axios/axios.js @@ -17,16 +17,16 @@ axiosInstance.interceptors.request.use( // 只有在 kv-server 或 classworkscloud 模式下才添加请求头 if (provider === "kv-server" || provider === "classworkscloud") { - // 确保每次请求时都获取最新的 siteKey - const siteKey = getSetting("server.siteKey"); - if (siteKey) { - requestConfig.headers["x-site-key"] = Base64.encode(siteKey); - } - - // 自动添加命名空间密码 - const namespacePassword = getSetting("namespace.password"); - if (namespacePassword) { - requestConfig.headers["x-namespace-password"] = Base64.encode(namespacePassword); + // 优先使用新的 kvToken + const kvToken = getSetting("server.kvToken"); + if (kvToken) { + requestConfig.headers["x-app-token"] = kvToken; + } else { + // 向后兼容旧的 siteKey + const siteKey = getSetting("server.siteKey"); + if (siteKey) { + requestConfig.headers["x-site-key"] = Base64.encode(siteKey); + } } } diff --git a/src/components/InitServiceChooser.vue b/src/components/InitServiceChooser.vue index 25d1a49..8f85335 100644 --- a/src/components/InitServiceChooser.vue +++ b/src/components/InitServiceChooser.vue @@ -99,40 +99,41 @@ -
- - 使用本地模式 - - - 授权码式授权(弃用) - - - 输入 Token - - - 输入替代代码 - -
+ +
+ + 使用本地模式 + + + 授权码式授权(弃用) + + + 输入 Token + + + 输入替代代码 + +
- - -

- - mdi-information - - 工作流程 -

- - -
- 步骤 1: 在 Classworks 应用中编辑作业 -
-
- - -
- 步骤 2: 数据自动上传到 Classworks KV -
-
- - -
- 步骤 3: 其他设备从 Classworks KV 同步数据 -
-
- - -
- 步骤 4: 所有设备显示相同的作业内容 -
-
-
-
- - - - - - - mdi-devices - -
- 多设备访问 -
-

- 在教室、办公室、家中的任何设备上访问相同的数据 -

-
-
- - - - - mdi-sync - -
- 实时同步 -
-

- 修改后立即同步,所有设备保持数据一致 -

-
-
- - - - - mdi-shield-lock - -
- 安全可靠 -
-

- 通过密码和命名空间隔离,保护班级数据安全 -

-
-
-
@@ -386,6 +252,32 @@ + +
+
+

+ 自动注册设备 +

+

+ 通过引导式流程自动创建设备、获取令牌并完成初始化。适合首次体验或快速部署多终端。 +

+ + 自动注册 + +
+
+
+
+ 也可以手动前往 Classworks KV 控制台获取认证信息:
mdi-open-in-new +

请访问 {{ kvserverurl=='https://kv.houlang.cloud'? 'Classworks KV' : '自定义的 Classworks KV 实例 ' }} 控制台

@@ -409,33 +302,6 @@
- -
- - mdi-information - - 在控制台完成以下操作: -
-
- 1. 注册或登录账号 -
-
- 2. 创建班级空间 -
-
- 3. 获取命名空间和密码 -
-
- 4. 返回这里输入认证信息 -
-
+ + +
+
+ + + mdi-rocket-launch + + +

+ 渐进式注册 +

+

+ 您可以暂时不配置 Classworks KV +

+
+ + + + + + + + + +
+ + {{ statusIcon }} + +
+ {{ statusTitle }} +
+
+
+
+ 设备名称:{{ deviceInfo.deviceName }} +
+
+ 设备 UUID: + {{ deviceInfo.uuid }} +
+
+
+ {{ progressiveError }} +
+
+
+
+ + + + +
+ 过程日志 +
+
+
+ {{ log.time }} · {{ log.message }} +
+
+ 等待开始… +
+
+
+
+
+
+ +
+ + 开始创建 + + + + 重试 + + + + 正在执行… + + + + 应用令牌并关闭 + + + + 前往绑定账户 + +
+
@@ -528,7 +554,7 @@ diff --git a/src/components/auth/ProgressiveRegisterPage.vue b/src/components/auth/ProgressiveRegisterPage.vue new file mode 100644 index 0000000..5b44194 --- /dev/null +++ b/src/components/auth/ProgressiveRegisterPage.vue @@ -0,0 +1,304 @@ + + + + + diff --git a/src/components/settings/cards/CloudNamespaceInfoCard.vue b/src/components/settings/cards/CloudNamespaceInfoCard.vue index c0933e7..4185b71 100644 --- a/src/components/settings/cards/CloudNamespaceInfoCard.vue +++ b/src/components/settings/cards/CloudNamespaceInfoCard.vue @@ -4,54 +4,115 @@ + - mdi-cloud-check + + mdi-cloud-check + 设备信息 - -
+ +
+ + 设备未绑定账号 +
当前设备尚未绑定账号,部分功能可能受限。请前往绑定账号以获得完整体验。
+ + 前往绑定账号 + +
+
+ + +
- 此设备由贵校或贵单位管理,该管理员系此空间所有者,如有疑问请咨询他,对于恶意绑定、滥用行为请反馈。 + + 此设备由贵校或贵单位管理,该管理员系此空间所有者,如有疑问请咨询他,对于恶意绑定、滥用行为请反馈。 +
- - 设备信息 + + + 设备信息 +
- mdi-tag + + mdi-tag + 设备名称: - {{ namespaceInfo.device.name || "未命名设备" }} + {{ namespaceInfo.device.name || '未命名设备' }}
- mdi-identifier + + mdi-identifier + 设备 ID: {{ namespaceInfo.device.id }}
-
- mdi-uuid + +
+ + mdi-uuid + UUID: - {{ - namespaceInfo.device.uuid || "未知" - }} + {{ namespaceInfo.device.uuid }}
- mdi-calendar + + mdi-calendar + 创建时间: {{ formatDate(namespaceInfo.device.createdAt) }}
@@ -59,33 +120,54 @@ v-if="namespaceInfo.device.updatedAt" class="d-flex align-center" > - mdi-calendar-clock + + mdi-calendar-clock + 更新时间: {{ formatDate(namespaceInfo.device.updatedAt) }}
-
Classworks KV - 是厚浪云推出的文档形键值数据库,其是一个开放的云应用平台,为各种应用提供存储服务。此设备正在使用其服务,如果您希望管理设备信息,请前往 - Classworks KV - 的网站,如果您在服务推出前就在使用 Classworks,您的数据已被自动迁移。 -

Classworks KV 的全域管理员是 孙悟元
+
+ + + + Classworks KV 是厚浪云推出的文档形键值数据库,其是一个开放的云应用平台,为各种应用提供存储服务。此设备正在使用其服务,如果您希望管理设备信息,请前往 Classworks KV 的网站,如果您在服务推出前就在使用 Classworks,您的数据已被自动迁移。 +

+ Classworks KV 的全域管理员是 + + 孙悟元 + +
+ + 前往 Classworks KV
+ > + 前往 Classworks KV + + +
- + 未获取到设备信息

您尚未完成云端存储授权或连接失败,请点击下方按钮进行初始化。

@@ -102,17 +184,28 @@ 刷新设备信息 - + 重新初始化云端存储 - + 确认重新初始化 - + 警告 此操作将清除当前的云端存储配置(包括 Token),您需要重新进行授权。 @@ -120,8 +213,18 @@ - 取消 - 确认 + + 取消 + + + 确认 + @@ -190,6 +293,13 @@ export default { async reloadInfo() { await this.fetchNamespaceInfo(); }, + getBindAccountUrl() { + const uuid = this.namespaceInfo?.device?.uuid; + if (uuid) { + return `${this.defaultAuthServer}?uuid=${encodeURIComponent(uuid)}&tolinktoaccount=true`; + } + return this.defaultAuthServer; + }, confirmReinitialize() { // 删除 token 配置(设置为空字符串以触发 shouldShowInit) setSetting('server.kvToken', '');