mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-06 01:17:46 +08:00
fix: harden bulk wallet balance adjustment
This commit is contained in:
@@ -210,6 +210,11 @@ const targetRoleWarning = computed(() => {
|
||||
const executeButtonLabel = computed(() => legacyT(`确认${selectedActionLabel.value}(${impactCount.value})`))
|
||||
const lastResultLabel = computed(() => {
|
||||
if (!lastResult.value) return ''
|
||||
if (lastResult.value.interrupted) {
|
||||
return legacyT(
|
||||
`批量操作中断:成功 ${lastResult.value.success} 个,结果待确认 ${lastResult.value.uncertain_user_ids?.length ?? 0} 个,尚未执行 ${lastResult.value.unprocessed_user_ids?.length ?? 0} 个`,
|
||||
)
|
||||
}
|
||||
return legacyT(`成功 ${lastResult.value.success} 个,失败 ${lastResult.value.failed} 个`)
|
||||
})
|
||||
const lastResultFailuresLabel = computed(() => {
|
||||
@@ -320,6 +325,11 @@ async function executeBatchAction(): Promise<void> {
|
||||
try {
|
||||
const result = await usersStore.batchAction(request)
|
||||
lastResult.value = result
|
||||
if (result.interrupted) {
|
||||
warning(`${lastResultLabel.value};${legacyT('请核对余额后再重试,勿直接重试整批')}`)
|
||||
emit('completed', result)
|
||||
return
|
||||
}
|
||||
const message = legacyT(`批量操作完成:成功 ${result.success} 个,失败 ${result.failed} 个`)
|
||||
if (result.failed > 0) {
|
||||
warning(message)
|
||||
|
||||
@@ -7,11 +7,26 @@
|
||||
<span v-if="failuresLabel">
|
||||
{{ failuresLabel }}
|
||||
</span>
|
||||
<details v-if="result.interrupted" class="mt-2 border-t border-border/60 pt-2">
|
||||
<summary class="cursor-pointer select-none">{{ legacyT('查看批次中断详情') }}</summary>
|
||||
<div class="mt-2 max-h-32 space-y-1 overflow-auto break-all">
|
||||
<p>{{ legacyT('已完成用户 ID') }}:{{ userIds(result.completed_user_ids) }}</p>
|
||||
<p>{{ legacyT('结果待核对用户 ID') }}:{{ userIds(result.uncertain_user_ids) }}</p>
|
||||
<p>{{ legacyT('尚未执行用户 ID') }}:{{ userIds(result.unprocessed_user_ids) }}</p>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { UserBatchActionResponse } from '@/api/users'
|
||||
import { useI18n } from '@/i18n'
|
||||
|
||||
const { legacyT } = useI18n()
|
||||
|
||||
function userIds(ids?: string[]): string {
|
||||
return ids && ids.length > 0 ? ids.join(', ') : '-'
|
||||
}
|
||||
|
||||
defineProps<{
|
||||
result: UserBatchActionResponse | null
|
||||
|
||||
Reference in New Issue
Block a user