From d3cb786edbc65ccc6cdf2d87e4b852036f21f8f9 Mon Sep 17 00:00:00 2001 From: Marcus <1922576605@qq.com> Date: Fri, 22 May 2026 16:27:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E6=95=B4=E4=BD=93?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 4 +- app/app.vue | 4 +- app/components/Table/CellCompare.vue | 2 +- app/components/Table/NewTablePagination.vue | 13 +- app/components/Table/TableCom.vue | 39 +-- app/components/dashboard/QaRecordDetail.vue | 63 +++++ app/components/dashboard/QaRecordsTable.vue | 150 ++++++++++ app/components/dashboard/StatsOverview.vue | 120 ++++++++ app/components/docs/ApiDocsContent.vue | 132 +++++++++ app/components/home/AnswerForm.vue | 108 ++++++++ app/components/home/AnswerResult.vue | 80 ++++++ app/components/home/OcsConfigCard.vue | 75 +++++ app/components/layout/AppFooter.vue | 10 + app/components/layout/AppHeader.vue | 72 +++++ app/components/ui/alert/Alert.vue | 21 ++ app/components/ui/alert/AlertAction.vue | 17 ++ app/components/ui/alert/AlertDescription.vue | 17 ++ app/components/ui/alert/AlertTitle.vue | 17 ++ app/components/ui/alert/index.ts | 21 ++ app/components/ui/badge/Badge.vue | 27 ++ app/components/ui/badge/index.ts | 24 ++ app/components/ui/card/Card.vue | 21 ++ app/components/ui/card/CardAction.vue | 17 ++ app/components/ui/card/CardContent.vue | 17 ++ app/components/ui/card/CardDescription.vue | 17 ++ app/components/ui/card/CardFooter.vue | 17 ++ app/components/ui/card/CardHeader.vue | 17 ++ app/components/ui/card/CardTitle.vue | 17 ++ app/components/ui/card/index.ts | 7 + app/components/ui/dialog/Dialog.vue | 19 ++ app/components/ui/dialog/DialogClose.vue | 15 + app/components/ui/dialog/DialogContent.vue | 53 ++++ .../ui/dialog/DialogDescription.vue | 23 ++ app/components/ui/dialog/DialogFooter.vue | 27 ++ app/components/ui/dialog/DialogHeader.vue | 17 ++ app/components/ui/dialog/DialogOverlay.vue | 21 ++ .../ui/dialog/DialogScrollContent.vue | 60 ++++ app/components/ui/dialog/DialogTitle.vue | 23 ++ app/components/ui/dialog/DialogTrigger.vue | 15 + app/components/ui/dialog/index.ts | 10 + app/components/ui/input/Input.vue | 31 +++ app/components/ui/input/index.ts | 1 + app/components/ui/label/Label.vue | 26 ++ app/components/ui/label/index.ts | 1 + app/components/ui/select/Select.vue | 19 ++ app/components/ui/select/SelectContent.vue | 58 ++++ app/components/ui/select/SelectGroup.vue | 21 ++ app/components/ui/select/SelectItem.vue | 45 +++ app/components/ui/select/SelectItemText.vue | 15 + app/components/ui/select/SelectLabel.vue | 17 ++ .../ui/select/SelectScrollDownButton.vue | 27 ++ .../ui/select/SelectScrollUpButton.vue | 27 ++ app/components/ui/select/SelectSeparator.vue | 19 ++ app/components/ui/select/SelectTrigger.vue | 34 +++ app/components/ui/select/SelectValue.vue | 15 + app/components/ui/select/index.ts | 11 + app/components/ui/skeleton/Skeleton.vue | 17 ++ app/components/ui/skeleton/index.ts | 1 + app/components/ui/textarea/Textarea.vue | 28 ++ app/components/ui/textarea/index.ts | 1 + app/interfaces/answer.ts | 99 +++++++ app/interfaces/index.ts | 2 + app/layouts/default.vue | 15 + app/pages/dashboard.vue | 33 +++ app/pages/docs.vue | 12 + app/pages/index.vue | 20 ++ app/services/answer_service.ts | 55 ++++ app/services/base_service.ts | 49 ++++ app/services/index.ts | 2 + app/stores/answer.ts | 256 ++++++++++++++++++ server/api/records.get.ts | 44 +++ server/utils/runtimeState.ts | 9 + 72 files changed, 2410 insertions(+), 29 deletions(-) create mode 100644 app/components/dashboard/QaRecordDetail.vue create mode 100644 app/components/dashboard/QaRecordsTable.vue create mode 100644 app/components/dashboard/StatsOverview.vue create mode 100644 app/components/docs/ApiDocsContent.vue create mode 100644 app/components/home/AnswerForm.vue create mode 100644 app/components/home/AnswerResult.vue create mode 100644 app/components/home/OcsConfigCard.vue create mode 100644 app/components/layout/AppFooter.vue create mode 100644 app/components/layout/AppHeader.vue create mode 100644 app/components/ui/alert/Alert.vue create mode 100644 app/components/ui/alert/AlertAction.vue create mode 100644 app/components/ui/alert/AlertDescription.vue create mode 100644 app/components/ui/alert/AlertTitle.vue create mode 100644 app/components/ui/alert/index.ts create mode 100644 app/components/ui/badge/Badge.vue create mode 100644 app/components/ui/badge/index.ts create mode 100644 app/components/ui/card/Card.vue create mode 100644 app/components/ui/card/CardAction.vue create mode 100644 app/components/ui/card/CardContent.vue create mode 100644 app/components/ui/card/CardDescription.vue create mode 100644 app/components/ui/card/CardFooter.vue create mode 100644 app/components/ui/card/CardHeader.vue create mode 100644 app/components/ui/card/CardTitle.vue create mode 100644 app/components/ui/card/index.ts create mode 100644 app/components/ui/dialog/Dialog.vue create mode 100644 app/components/ui/dialog/DialogClose.vue create mode 100644 app/components/ui/dialog/DialogContent.vue create mode 100644 app/components/ui/dialog/DialogDescription.vue create mode 100644 app/components/ui/dialog/DialogFooter.vue create mode 100644 app/components/ui/dialog/DialogHeader.vue create mode 100644 app/components/ui/dialog/DialogOverlay.vue create mode 100644 app/components/ui/dialog/DialogScrollContent.vue create mode 100644 app/components/ui/dialog/DialogTitle.vue create mode 100644 app/components/ui/dialog/DialogTrigger.vue create mode 100644 app/components/ui/dialog/index.ts create mode 100644 app/components/ui/input/Input.vue create mode 100644 app/components/ui/input/index.ts create mode 100644 app/components/ui/label/Label.vue create mode 100644 app/components/ui/label/index.ts create mode 100644 app/components/ui/select/Select.vue create mode 100644 app/components/ui/select/SelectContent.vue create mode 100644 app/components/ui/select/SelectGroup.vue create mode 100644 app/components/ui/select/SelectItem.vue create mode 100644 app/components/ui/select/SelectItemText.vue create mode 100644 app/components/ui/select/SelectLabel.vue create mode 100644 app/components/ui/select/SelectScrollDownButton.vue create mode 100644 app/components/ui/select/SelectScrollUpButton.vue create mode 100644 app/components/ui/select/SelectSeparator.vue create mode 100644 app/components/ui/select/SelectTrigger.vue create mode 100644 app/components/ui/select/SelectValue.vue create mode 100644 app/components/ui/select/index.ts create mode 100644 app/components/ui/skeleton/Skeleton.vue create mode 100644 app/components/ui/skeleton/index.ts create mode 100644 app/components/ui/textarea/Textarea.vue create mode 100644 app/components/ui/textarea/index.ts create mode 100644 app/interfaces/answer.ts create mode 100644 app/interfaces/index.ts create mode 100644 app/layouts/default.vue create mode 100644 app/pages/dashboard.vue create mode 100644 app/pages/docs.vue create mode 100644 app/pages/index.vue create mode 100644 app/services/answer_service.ts create mode 100644 app/services/base_service.ts create mode 100644 app/services/index.ts create mode 100644 app/stores/answer.ts create mode 100644 server/api/records.get.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 5a96859..9482083 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,7 @@ { "cSpell.words": [ - "heroicons" + "heroicons", + "lucide", + "pinia" ] } \ No newline at end of file diff --git a/app/app.vue b/app/app.vue index 2b1be09..f8eacfa 100644 --- a/app/app.vue +++ b/app/app.vue @@ -1,5 +1,5 @@ diff --git a/app/components/Table/CellCompare.vue b/app/components/Table/CellCompare.vue index 9475b83..4c7b933 100644 --- a/app/components/Table/CellCompare.vue +++ b/app/components/Table/CellCompare.vue @@ -71,7 +71,7 @@ watch(
diff --git a/app/components/Table/NewTablePagination.vue b/app/components/Table/NewTablePagination.vue index 810ed8a..386f1c2 100644 --- a/app/components/Table/NewTablePagination.vue +++ b/app/components/Table/NewTablePagination.vue @@ -2,6 +2,7 @@ import { ChevronLeftIcon, ChevronRightIcon } from "@heroicons/vue/24/outline"; import { MoreHorizontal } from "lucide-vue-next"; +import { Button } from "@/components/ui/button"; import { Pagination, PaginationContent, @@ -40,7 +41,7 @@ const pageCount = computed(() => Math.ceil(props.total / props.pageSize)); @update:page="(val: number) => emits('update:page', val)" > - + - + diff --git a/app/components/Table/TableCom.vue b/app/components/Table/TableCom.vue index 7070610..0782f16 100644 --- a/app/components/Table/TableCom.vue +++ b/app/components/Table/TableCom.vue @@ -3,21 +3,22 @@ import { PlayIcon } from "@heroicons/vue/24/solid"; import { ChevronUpDownIcon } from "@/assets/Icons"; -import { cn } from "@/lib/utils"; -import { useSortableTable } from "@/utils"; - -import type { TableColumn, TableProps } from "./type"; - +import { Skeleton } from "@/components/ui/skeleton"; import { Table, TableBody, TableCell, + TableEmpty, TableFooter, TableHead, TableHeader, - TableEmpty, TableRow } from "@/components/ui/table"; +import { cn } from "@/lib/utils"; +import { useSortableTable } from "@/utils"; + +import NewTablePagination from "./NewTablePagination.vue"; +import type { TableColumn, TableProps } from "./type"; const props = defineProps>(); @@ -271,12 +272,12 @@ onMounted(() => { :class="[ cn( 'before:absolute before:top-0 before:bottom-0 before:left-0 before:w-2', - 'before:bg-linear-to-r before:from-blue-600/5 before:to-transparent', + 'before:bg-linear-to-r before:from-border before:to-transparent', 'before:pointer-events-none before:z-10 before:transition-opacity', 'before:shadow-[inset_5px_0_4px_-3px_rgba(37,99,235,0.05)]', 'after:absolute after:top-0 after:bottom-0 after:right-0 after:w-2', - 'after:bg-linear-to-l after:from-blue-600/5 after:to-transparent', + 'after:bg-linear-to-l after:from-border after:to-transparent', 'after:pointer-events-none after:z-10 after:transition-opacity', 'after:shadow-[inset_-5px_0_4px_-3px_rgba(37,99,235,0.05)]', { @@ -294,13 +295,13 @@ onMounted(() => { ref="tableEl" :class="[ cn( - 'relative bg-[#FCFDFF] text-xs 2xl:text-sm rounded-lg overflow-hidden', + 'relative bg-card text-xs 2xl:text-sm rounded-2xl overflow-hidden', props.class ) ]" > - - + + { { - +