diff --git a/src/App.vue b/src/App.vue index 84bf10b..0ed2064 100644 --- a/src/App.vue +++ b/src/App.vue @@ -17,11 +17,13 @@ import { getSetting } from "@/utils/settings"; import { useRouter, useRoute } from "vue-router"; import RateLimitModal from "@/components/RateLimitModal.vue"; import Clarity from "@microsoft/clarity"; +import { kvServerProvider } from '@/utils/providers/kvServerProvider'; + const theme = useTheme(); const router = useRouter(); const route = useRoute(); -onMounted(() => { +onMounted(async () => { // 应用保存的主题设置 const savedTheme = getSetting("theme.mode"); theme.global.name.value = savedTheme; @@ -29,6 +31,16 @@ onMounted(() => { // 检查存储提供者类型 checkProviderType(); Clarity.identify(getSetting("device.uuid"), getSetting("server.domain"), getSetting("server.provider"), getSetting("server.classNumber")); // only custom-id is required + + // 如果使用KV服务器,加载命名空间信息 + const provider = getSetting('server.provider'); + if (provider === 'kv-server' || provider === 'classworkscloud') { + try { + await kvServerProvider.loadNamespaceInfo(); + } catch (error) { + console.error('加载命名空间信息失败:', error); + } + } }); // 检查存储提供者类型,如果是已废弃的类型则重定向 diff --git a/src/axios/axios.js b/src/axios/axios.js index cdae19e..3cd2dd7 100644 --- a/src/axios/axios.js +++ b/src/axios/axios.js @@ -16,6 +16,13 @@ axiosInstance.interceptors.request.use( if (siteKey) { requestConfig.headers["x-site-key"] = siteKey; } + + // 自动添加命名空间密码 + const namespacePassword = getSetting("namespace.password"); + if (namespacePassword) { + requestConfig.headers["x-namespace-password"] = namespacePassword; + } + return requestConfig; }, (error) => { diff --git a/src/components/MigrationTool.vue b/src/components/MigrationTool.vue index 26b38c9..a10c655 100644 --- a/src/components/MigrationTool.vue +++ b/src/components/MigrationTool.vue @@ -681,7 +681,7 @@ export default { // 批量导入配置数据 const configResponse = await axios.post( - `${this.targetServerUrl}/${this.machineId}/import/batch-import`, + `${this.targetServerUrl}/${this.machineId}/_batchimport`, batchData, { headers: this.getRequestHeaders(), @@ -798,7 +798,7 @@ export default { // 批量导入配置数据 const configResponse = await axios.post( - `${this.targetServerUrl}/${this.machineId}/import/batch-import`, + `${this.targetServerUrl}/${this.machineId}/_batchimport`, batchData, { headers: this.getRequestHeaders(), @@ -890,7 +890,7 @@ export default { // 发送批量请求 if (Object.keys(batchPayload).length > 0) { const response = await axios.post( - `${this.targetServerUrl}/${this.machineId}/import/batch-import`, + `${this.targetServerUrl}/${this.machineId}/_batchimport`, batchPayload, { headers: this.getRequestHeaders(), diff --git a/src/components/NamespaceAccess.vue b/src/components/NamespaceAccess.vue new file mode 100644 index 0000000..67a0194 --- /dev/null +++ b/src/components/NamespaceAccess.vue @@ -0,0 +1,187 @@ + + + + + 只读 + + + 启用编辑 + + + + + + 输入访问密码 + + + + + + + 取消 + + + 确认 + + + + + + + + diff --git a/src/components/settings/cards/NamespaceSettingsCard.vue b/src/components/settings/cards/NamespaceSettingsCard.vue new file mode 100644 index 0000000..64822a7 --- /dev/null +++ b/src/components/settings/cards/NamespaceSettingsCard.vue @@ -0,0 +1,427 @@ + + + + + + + + + 命名空间标识符 + + + {{ namespaceInfo.uuid }} + + + + + + + + + + + + + 命名空间信息 + + + + + + + + + + + + + + + + + + + 保存更改 + + + + + + + + + + + + + + + + 访问密码 + + 设置访问密码以保护数据安全,留空表示无需密码 + + + + + + + + + + + + + + + + + + + 删除密码 + + + + + + + + 保存密码 + + + + + + + + + + + + + + + 确认删除密码 + + 删除密码后,任何人都可以访问和修改此命名空间的数据。确定要继续吗? + + + + + + 取消 + + + 确认删除 + + + + + + + {{ snackbarText }} + + 关闭 + + + + + + diff --git a/src/pages/index.vue b/src/pages/index.vue index 8096219..eda4a15 100644 --- a/src/pages/index.vue +++ b/src/pages/index.vue @@ -11,6 +11,7 @@ + import MessageLog from "@/components/MessageLog.vue"; import RandomPicker from "@/components/RandomPicker.vue"; // 导入随机点名组件 +import NamespaceAccess from "@/components/NamespaceAccess.vue"; import dataProvider from "@/utils/dataProvider"; import { getSetting, @@ -653,6 +655,7 @@ export default { components: { MessageLog, RandomPicker, // 注册随机点名组件 + NamespaceAccess, }, data() { return { diff --git a/src/pages/settings.vue b/src/pages/settings.vue index 524860b..f099515 100644 --- a/src/pages/settings.vue +++ b/src/pages/settings.vue @@ -11,52 +11,158 @@ 设置 - - - + + + + + {{ tab.title }} + + + + + + + + + Classworks + 是开源免费的软件,官方没有提供任何形式的付费支持服务,源代码仓库地址在 + https://github.com/ZeroCatDev/Classworks。如果您通过有偿协助等付费方式取得本应用,在遇到问题时请在与卖家约定的服务框架下,优先向卖家求助。如果卖家没有提供您预期的服务,请退款或通过其它形式积极维护您的合法权益。 + 请不要使用浏览器清除缓存功能,否则会导致配置丢失。恶意的操作可能导致您受到贵校教师的处理 + + 请不要使用包括但不限于360极速浏览器、360安全浏览器、夸克浏览器、QQ浏览器等浏览器使用 + Classworks + ,这些浏览器过时且存在严重的一致性问题。在Windows上,使用新版 + Microsoft Edge 浏览器是最推荐的选择。 + + + 上述浏览器商标为其所属公司所有,Classworks™ + 与上述浏览器所属公司暂无竞争关系。 + + 下载 Microsoft Edge(微软边缘浏览器) + + + + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + :loading="loading.namespace" + @saved="onSettingsSaved" + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + 启用开发者选项 - 启用后可以查看和修改开发者设置 + 启用后可以查看和修改开发者设置 - - - - - - - - - 显示调试配置 - 显示当前的调试配置信息 - - - - - - - - - - - - 刷新 - - - 复制 - - - - - - - - - - - + + + + + 所有设置 + + 浏览和修改所有可用设置 + + + + + + + - - - - - - - + - - - - - - - - 所有设置 - - - 浏览和修改所有可用设置 - - - - - - - - - + + + @@ -168,32 +207,32 @@
{{ namespaceInfo.uuid }}
+ 请不要使用包括但不限于360极速浏览器、360安全浏览器、夸克浏览器、QQ浏览器等浏览器使用 + Classworks + ,这些浏览器过时且存在严重的一致性问题。在Windows上,使用新版 + Microsoft Edge 浏览器是最推荐的选择。 +
+ 上述浏览器商标为其所属公司所有,Classworks™ + 与上述浏览器所属公司暂无竞争关系。 +