|
|
@ -16,6 +16,9 @@ type ProfileGet = { |
|
|
bioVisibility: string |
|
|
bioVisibility: string |
|
|
socialLinks: { label: string; url: string; visibility: string; icon?: string }[] |
|
|
socialLinks: { label: string; url: string; visibility: string; icon?: string }[] |
|
|
publicSlug: string | null |
|
|
publicSlug: string | null |
|
|
|
|
|
discoverVisible: boolean |
|
|
|
|
|
discoverLocation: string | null |
|
|
|
|
|
discoverShowLocation: boolean |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -30,6 +33,9 @@ const state = reactive({ |
|
|
bioMarkdown: '', |
|
|
bioMarkdown: '', |
|
|
bioVisibility: 'private', |
|
|
bioVisibility: 'private', |
|
|
publicSlug: '', |
|
|
publicSlug: '', |
|
|
|
|
|
discoverVisible: false, |
|
|
|
|
|
discoverLocation: '', |
|
|
|
|
|
discoverShowLocation: false, |
|
|
linksJson: '[]', |
|
|
linksJson: '[]', |
|
|
publicHomeHeaderTitle: '', |
|
|
publicHomeHeaderTitle: '', |
|
|
publicHomeHeaderIconUrl: '', |
|
|
publicHomeHeaderIconUrl: '', |
|
|
@ -152,6 +158,9 @@ async function load() { |
|
|
state.bioMarkdown = p.bioMarkdown ?? '' |
|
|
state.bioMarkdown = p.bioMarkdown ?? '' |
|
|
state.bioVisibility = p.bioVisibility |
|
|
state.bioVisibility = p.bioVisibility |
|
|
state.publicSlug = p.publicSlug ?? '' |
|
|
state.publicSlug = p.publicSlug ?? '' |
|
|
|
|
|
state.discoverVisible = Boolean(p.discoverVisible) |
|
|
|
|
|
state.discoverLocation = p.discoverLocation ?? '' |
|
|
|
|
|
state.discoverShowLocation = Boolean(p.discoverShowLocation) |
|
|
state.linksJson = JSON.stringify(p.socialLinks ?? [], null, 2) |
|
|
state.linksJson = JSON.stringify(p.socialLinks ?? [], null, 2) |
|
|
state.publicHomeHeaderTitle = typeof cfg.publicHomeHeaderTitle === 'string' ? cfg.publicHomeHeaderTitle : '' |
|
|
state.publicHomeHeaderTitle = typeof cfg.publicHomeHeaderTitle === 'string' ? cfg.publicHomeHeaderTitle : '' |
|
|
state.publicHomeHeaderIconUrl = |
|
|
state.publicHomeHeaderIconUrl = |
|
|
@ -183,6 +192,9 @@ async function save() { |
|
|
bioMarkdown: state.bioMarkdown || null, |
|
|
bioMarkdown: state.bioMarkdown || null, |
|
|
bioVisibility: state.bioVisibility, |
|
|
bioVisibility: state.bioVisibility, |
|
|
publicSlug: state.publicSlug || null, |
|
|
publicSlug: state.publicSlug || null, |
|
|
|
|
|
discoverVisible: state.discoverVisible, |
|
|
|
|
|
discoverLocation: state.discoverLocation.trim() || null, |
|
|
|
|
|
discoverShowLocation: state.discoverShowLocation, |
|
|
socialLinks: links, |
|
|
socialLinks: links, |
|
|
}, |
|
|
}, |
|
|
}) |
|
|
}) |
|
|
@ -237,6 +249,32 @@ async function save() { |
|
|
<UFormField label="公开主页 slug(/@slug)" name="publicSlug"> |
|
|
<UFormField label="公开主页 slug(/@slug)" name="publicSlug"> |
|
|
<UInput v-model="state.publicSlug" placeholder="例如 my-id" /> |
|
|
<UInput v-model="state.publicSlug" placeholder="例如 my-id" /> |
|
|
</UFormField> |
|
|
</UFormField> |
|
|
|
|
|
<UAlert |
|
|
|
|
|
v-if="state.discoverVisible && !state.publicSlug.trim()" |
|
|
|
|
|
color="warning" |
|
|
|
|
|
variant="subtle" |
|
|
|
|
|
title="尚未设置公开主页 slug" |
|
|
|
|
|
description="保存「出现在发现页」后,仍需填写上方的 slug 才会真正出现在发现列表中。" |
|
|
|
|
|
class="rounded-lg" |
|
|
|
|
|
/> |
|
|
|
|
|
<div class="space-y-4 rounded-lg border border-default bg-elevated/20 p-4"> |
|
|
|
|
|
<h2 class="text-sm font-semibold text-highlighted"> |
|
|
|
|
|
发现与展示 |
|
|
|
|
|
</h2> |
|
|
|
|
|
<UCheckbox v-model="state.discoverVisible" label="出现在发现页" /> |
|
|
|
|
|
<UFormField |
|
|
|
|
|
label="地址或地区(展示文案)" |
|
|
|
|
|
name="discoverLocation" |
|
|
|
|
|
description="将显示在你的发现卡片上(若下方选项开启)。无需门牌号等精确信息。" |
|
|
|
|
|
> |
|
|
|
|
|
<UInput v-model="state.discoverLocation" maxlength="200" placeholder="例如:上海" /> |
|
|
|
|
|
</UFormField> |
|
|
|
|
|
<UCheckbox |
|
|
|
|
|
v-model="state.discoverShowLocation" |
|
|
|
|
|
:disabled="!state.discoverVisible" |
|
|
|
|
|
label="在发现卡片上显示上述地址" |
|
|
|
|
|
/> |
|
|
|
|
|
</div> |
|
|
<UFormField label="昵称" name="nickname"> |
|
|
<UFormField label="昵称" name="nickname"> |
|
|
<UInput v-model="state.nickname" /> |
|
|
<UInput v-model="state.nickname" /> |
|
|
</UFormField> |
|
|
</UFormField> |
|
|
|