From 0dcc8c59124a5c8b37e4a5b216ce504919b78223 Mon Sep 17 00:00:00 2001 From: Megghy Date: Tue, 19 Dec 2023 21:27:47 +0800 Subject: [PATCH] fix IsAnonymous --- src/api/account.ts | 22 ++++-- src/api/api-models.ts | 1 + src/components/DynamicForm.vue | 51 +++++++++++- src/data/VTsuruTypes.ts | 29 ++++++- src/data/constants.ts | 3 +- src/views/manage/QuestionBoxManageView.vue | 4 +- src/views/manage/SettingsManageView.vue | 79 +++++++++++++------ .../indexTemplate/DefaultIndexTemplate.vue | 32 ++++++++ .../indexTemplate/SimpleIndexTemplate.vue | 18 +++-- 9 files changed, 192 insertions(+), 47 deletions(-) diff --git a/src/api/account.ts b/src/api/account.ts index 6f8b579..e11df27 100644 --- a/src/api/account.ts +++ b/src/api/account.ts @@ -93,22 +93,28 @@ export async function DelBiliBlackList(id: number): Promise> { id: id, }) } +export function downloadConfigDirect(name: string) { + return QueryGetAPI(VTSURU_API_URL + 'get-config', { + name: name, + }) +} export async function downloadConfig(name: string) { try { const resp = await QueryGetAPI(VTSURU_API_URL + 'get-config', { name: name, }) if (resp.code == 200) { - message.success('已获取配置文件') + console.log('已获取配置文件: ' + name) return JSON.parse(resp.data) as T } else if (resp.code == 404) { - message.error(`未找到名为 ${name} 的配置文件`) + console.error(`未找到名为 ${name} 的配置文件`) } else { - message.error('获取失败: ' + resp.message) + console.error(`无法获取配置文件 [${name}]: ` + resp.message) } } catch (err) { - message.error(`获取配置文件失败: ` + err) + console.error(`无法获取配置文件 [${name}]: ` + err) } + return null } export async function uploadConfig(name: string, data: unknown) { try { @@ -117,11 +123,13 @@ export async function uploadConfig(name: string, data: unknown) { json: JSON.stringify(data), }) if (resp.code == 200) { - message.success('已保存至服务器') + console.log('已保存配置文件至服务器:' + name) + return true } else { - message.error('保存失败: ' + resp.message) + console.error('保存失败: ' + resp.message) } } catch (err) { - message.error(`保存配置文件失败: ` + err) + console.error(`保存配置文件失败: ` + err) } + return false } diff --git a/src/api/api-models.ts b/src/api/api-models.ts index 4eda8c8..070067d 100644 --- a/src/api/api-models.ts +++ b/src/api/api-models.ts @@ -234,6 +234,7 @@ export interface QAInfo { isPublic: boolean isFavorite: boolean sendAt: number + isAnonymous: boolean } export interface LotteryUserInfo { name: string diff --git a/src/components/DynamicForm.vue b/src/components/DynamicForm.vue index c1a698f..6f9c245 100644 --- a/src/components/DynamicForm.vue +++ b/src/components/DynamicForm.vue @@ -1,13 +1,56 @@ diff --git a/src/data/VTsuruTypes.ts b/src/data/VTsuruTypes.ts index 046fe2b..3a065af 100644 --- a/src/data/VTsuruTypes.ts +++ b/src/data/VTsuruTypes.ts @@ -2,14 +2,37 @@ import { VNode } from 'vue' export type TemplateConfig = { name: string - items: (TemplateConfigItem | TemplateConfigImageItem)[] + items: (TemplateConfigStringItem | TemplateConfigNumberItem | TemplateConfigStringArrayItem | TemplateConfigNumberArrayItem | TemplateConfigImageItem | TemplateConfigRenderItem)[] onConfirm?: (arg0: T) => void } interface TemplateConfigBase { name: string } -export type TemplateConfigItem = TemplateConfigBase & { - type: 'default' + +type CommonProps = TemplateConfigBase +type DataAccessor = { + get: (config: T) => V + set: (config: T, value: V) => void +} + +// 扩展 CommonProps 以包含额外的共有属性 +export type TemplateConfigItemWithType = CommonProps & { data: DataAccessor } + +export type TemplateConfigStringItem = TemplateConfigItemWithType & { + type: 'string' +} +export type TemplateConfigStringArrayItem = TemplateConfigItemWithType & { + type: 'stringArray' +} +export type TemplateConfigNumberItem = TemplateConfigItemWithType & { + type: 'number' +} +export type TemplateConfigNumberArrayItem = TemplateConfigItemWithType & { + type: 'numberArray' +} + +export type TemplateConfigRenderItem = TemplateConfigBase & { + type: 'render' render: (arg0: T) => VNode } export type TemplateConfigImageItem = TemplateConfigBase & { diff --git a/src/data/constants.ts b/src/data/constants.ts index 5ea9a69..662d272 100644 --- a/src/data/constants.ts +++ b/src/data/constants.ts @@ -1,3 +1,4 @@ +import DefaultIndexTemplateVue from '@/views/view/indexTemplate/DefaultIndexTemplate.vue' import { computed, defineAsyncComponent, ref, watchEffect } from 'vue' const debugAPI = import.meta.env.VITE_DEBUG_API @@ -41,5 +42,5 @@ export const SongListTemplateMap = { simple: { name: '简单', compoent: defineAsyncComponent(() => import('@/views/view/songListTemplate/SimpleSongListTemplate.vue')) }, } as { [key: string]: { name: string; compoent: any } } export const IndexTemplateMap = { - '': { name: '默认', compoent: defineAsyncComponent(() => import('@/views/view/indexTemplate/DefaultIndexTemplate.vue')) }, + '': { name: '默认', compoent: DefaultIndexTemplateVue }, } as { [key: string]: { name: string; compoent: any } } diff --git a/src/views/manage/QuestionBoxManageView.vue b/src/views/manage/QuestionBoxManageView.vue index bb5e272..1fa215b 100644 --- a/src/views/manage/QuestionBoxManageView.vue +++ b/src/views/manage/QuestionBoxManageView.vue @@ -279,8 +279,8 @@ onMounted(() => { 未读 - - {{ item.sender?.name ?? '匿名用户' }} + + {{ item.isAnonymous ? '匿名用户' : item.sender?.name }} 已注册 公开 diff --git a/src/views/manage/SettingsManageView.vue b/src/views/manage/SettingsManageView.vue index a7792b0..1b72aad 100644 --- a/src/views/manage/SettingsManageView.vue +++ b/src/views/manage/SettingsManageView.vue @@ -1,16 +1,19 @@ + +