feat(avatar): add user token accounting
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
<div class="token-info">
|
||||
<span class="token-label">Token 余额</span>
|
||||
<span class="token-amount">{{ tokenBalance.toLocaleString() }}</span>
|
||||
<span class="token-used">累计使用 {{ tokenConsumed.toLocaleString() }}</span>
|
||||
</div>
|
||||
<button class="recharge-btn" @click="goToRecharge">充值</button>
|
||||
</div>
|
||||
@@ -55,6 +56,7 @@
|
||||
<div class="avatar-details">
|
||||
<div class="avatar-name-row"><h2 class="avatar-name">{{ a.displayName || a.name }}</h2><span class="avatar-status"><i class="status-dot" :class="a.status"></i>{{ statusText(a.status) }}</span></div>
|
||||
<p class="avatar-desc">{{ a.description || '暂无描述' }}</p>
|
||||
<span class="avatar-token-usage">累计使用 {{ avatarTokenUsage(a.id).toLocaleString() }} Token</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="avatar-actions">
|
||||
@@ -95,7 +97,9 @@ const me = computed(() => userStore.user)
|
||||
|
||||
// 状态(来自 store / 后端)
|
||||
const tokenBalance = computed(() => avatarStore.tokenBalance)
|
||||
const tokenConsumed = computed(() => avatarStore.tokenConsumed)
|
||||
const avatars = computed(() => avatarStore.avatars)
|
||||
const avatarTokenUsage = (id: string) => avatarStore.tokenUsageByAvatar[id] || 0
|
||||
|
||||
const shareToast = ref('')
|
||||
|
||||
@@ -174,6 +178,7 @@ onMounted(() => {
|
||||
userStore.loadFromStorage()
|
||||
avatarStore.loadAvatars()
|
||||
avatarStore.loadTokenBalance()
|
||||
avatarStore.loadTokenUsage()
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -316,6 +321,12 @@ onMounted(() => {
|
||||
color: #F97316;
|
||||
}
|
||||
|
||||
.token-used {
|
||||
margin-top: 3px;
|
||||
color: #A0A5B4;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.recharge-btn {
|
||||
padding: 8px 16px;
|
||||
background: #F97316;
|
||||
@@ -440,6 +451,13 @@ onMounted(() => {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.avatar-token-usage {
|
||||
display: inline-block;
|
||||
margin-top: 5px;
|
||||
color: #A0A5B4;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.avatar-status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
|
||||
Reference in New Issue
Block a user