import { QueryClient, VueQueryPlugin } from "@tanstack/vue-query"; import { Alert, App as AntApp, Avatar, Badge, Button, Card, ConfigProvider, DatePicker, Descriptions, Drawer, Dropdown, Empty, Form, Input, Layout, Menu, Modal, Pagination, Popconfirm, Result, Select, Space, Spin, Switch, 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("登录已过期,请重新登录"); }); [ Alert, AntApp, Avatar, Badge, Button, Card, ConfigProvider, DatePicker, Descriptions, Drawer, Dropdown, Empty, Form, Input, Layout, Menu, Modal, Pagination, Popconfirm, Result, Select, Space, Spin, Switch, Table, Tag, Tooltip, ].forEach((component) => { app.use(component); }); app.use(pinia).use(router).use(VueQueryPlugin, { queryClient }).mount("#app");