Files
OCS_service/app/components/home/AnswerResult.vue
T
2026-05-22 16:27:35 +08:00

81 lines
2.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- app/components/home/AnswerResult.vue - 答题结果展示只展示安全业务文案 -->
<script lang="ts" setup>
import { AlertCircle, CheckCircle2, Loader2 } from "lucide-vue-next";
import { storeToRefs } from "pinia";
import {
Alert,
AlertDescription,
AlertTitle
} from "@/components/ui/alert";
import { Badge } from "@/components/ui/badge";
import {
Card,
CardAction,
CardContent,
CardHeader,
CardTitle
} from "@/components/ui/card";
import { Skeleton } from "@/components/ui/skeleton";
import { useAnswerStore } from "@/stores/answer";
const answerStore = useAnswerStore();
const { answerResult, searchErrorMessage, searchLoading } = storeToRefs(answerStore);
</script>
<template>
<Card>
<CardHeader>
<CardTitle>查询结果</CardTitle>
<CardAction>
<Badge variant="secondary">OCS JSON</Badge>
</CardAction>
</CardHeader>
<CardContent>
<div v-if="searchLoading" class="grid min-h-32 gap-3">
<div class="flex items-center gap-2 text-sm text-muted-foreground">
<Loader2 class="size-4 animate-spin" />
<span>正在获取答案</span>
</div>
<Skeleton class="h-5 w-2/3" />
<Skeleton class="h-20 w-full" />
</div>
<Alert v-else-if="searchErrorMessage" variant="destructive" class="min-h-32">
<AlertCircle class="size-4" />
<AlertTitle>查询失败</AlertTitle>
<AlertDescription>{{ searchErrorMessage }}</AlertDescription>
</Alert>
<div v-else-if="answerResult" class="grid gap-4">
<div class="flex items-center gap-2 text-sm font-medium text-foreground">
<CheckCircle2 class="size-4" />
<span>已返回答案</span>
</div>
<div class="grid gap-2 rounded-2xl border bg-muted/40 p-4">
<span class="text-xs font-medium text-muted-foreground">题目</span>
<p class="whitespace-pre-wrap text-sm leading-6 text-foreground">
{{ answerResult.question }}
</p>
</div>
<div class="grid gap-2 rounded-2xl border bg-muted/40 p-4">
<span class="text-xs font-medium text-muted-foreground">答案</span>
<p class="whitespace-pre-wrap text-base font-semibold leading-7 text-foreground">
{{ answerResult.answer }}
</p>
</div>
</div>
<div
v-else
class="flex min-h-32 items-center justify-center rounded-2xl border border-dashed text-sm text-muted-foreground"
>
等待题目提交
</div>
</CardContent>
</Card>
</template>