feat(ops-web): add operations console frontend

Vue 3 + Ant Design Vue SPA scaffold for the internal ops console. Ships
the auth, account list, and audit log views that consume the new ops-api
endpoints, plus the nginx/vite/typecheck plumbing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-28 11:33:17 +08:00
parent f63e800f21
commit f5254f6a27
20 changed files with 1830 additions and 7 deletions
+86
View File
@@ -0,0 +1,86 @@
import { QueryClient, VueQueryPlugin } from "@tanstack/vue-query";
import {
App as AntApp,
Avatar,
Badge,
Button,
Card,
ConfigProvider,
DatePicker,
Descriptions,
Drawer,
Dropdown,
Empty,
Form,
Input,
Layout,
Menu,
Modal,
Pagination,
Popconfirm,
Result,
Select,
Space,
Spin,
Table,
Tag,
Tooltip,
message,
} from "ant-design-vue";
import { createApp } from "vue";
import App from "./App.vue";
import { bindUnauthorizedHandler } from "@/lib/http";
import { router } from "@/router";
import { pinia } from "@/stores/pinia";
import "./styles.css";
import "ant-design-vue/dist/reset.css";
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 30000,
refetchOnWindowFocus: false,
retry: false,
},
},
});
const app = createApp(App);
bindUnauthorizedHandler(() => {
void router.replace({ name: "login" });
message.warning("登录已过期,请重新登录");
});
[
AntApp,
Avatar,
Badge,
Button,
Card,
ConfigProvider,
DatePicker,
Descriptions,
Drawer,
Dropdown,
Empty,
Form,
Input,
Layout,
Menu,
Modal,
Pagination,
Popconfirm,
Result,
Select,
Space,
Spin,
Table,
Tag,
Tooltip,
].forEach((component) => {
app.use(component);
});
app.use(pinia).use(router).use(VueQueryPlugin, { queryClient }).mount("#app");