feat:新增pure-admin前端

This commit is contained in:
chenchun
2024-08-23 14:31:00 +08:00
parent 556d32729a
commit 4bc2cebd60
579 changed files with 85268 additions and 0 deletions

View File

@@ -0,0 +1,215 @@
import { $t } from "@/plugins/i18n";
import { able } from "@/router/enums";
export default {
path: "/able",
redirect: "/able/watermark",
meta: {
icon: "ri:ubuntu-fill",
title: $t("menus.pureAble"),
rank: able
},
children: [
{
path: "/able/mqtt-client",
name: "MqttClient",
component: () => import("@/views/able/mqtt-client.vue"),
meta: {
title: $t("menus.pureMqtt"),
extraIcon: "IF-pure-iconfont-new svg"
}
},
{
path: "/able/verify",
name: "Verify",
component: () => import("@/views/able/verify.vue"),
meta: {
title: $t("menus.pureVerify")
}
},
{
path: "/able/watermark",
name: "WaterMark",
component: () => import("@/views/able/watermark.vue"),
meta: {
title: $t("menus.pureWatermark")
}
},
{
path: "/able/print",
name: "Print",
component: () => import("@/views/able/print/index.vue"),
meta: {
title: $t("menus.purePrint")
}
},
{
path: "/able/download",
name: "Download",
component: () => import("@/views/able/download.vue"),
meta: {
title: $t("menus.pureDownload")
}
},
{
path: "/able/excel",
name: "Excel",
component: () => import("@/views/able/excel.vue"),
meta: {
title: $t("menus.pureExcel")
}
},
{
path: "/components/ripple",
name: "Ripple",
component: () => import("@/views/able/ripple.vue"),
meta: {
title: $t("menus.pureRipple")
}
},
{
path: "/able/debounce",
name: "Debounce",
component: () => import("@/views/able/debounce.vue"),
meta: {
title: $t("menus.pureDebounce")
}
},
{
path: "/able/directives",
name: "Directives",
component: () => import("@/views/able/directives.vue"),
meta: {
title: $t("menus.pureOptimize")
}
},
{
path: "/able/draggable",
name: "Draggable",
component: () => import("@/views/able/draggable.vue"),
meta: {
title: $t("menus.pureDraggable"),
transition: {
enterTransition: "animate__zoomIn",
leaveTransition: "animate__zoomOut"
}
}
},
{
path: "/able/pdf",
name: "Pdf",
component: () => import("@/views/able/pdf.vue"),
meta: {
title: $t("menus.purePdf")
}
},
{
path: "/able/barcode",
name: "BarCode",
component: () => import("@/views/able/barcode.vue"),
meta: {
title: $t("menus.pureBarcode")
}
},
{
path: "/able/qrcode",
name: "QrCode",
component: () => import("@/views/able/qrcode.vue"),
meta: {
title: $t("menus.pureQrcode")
}
},
{
path: "/able/map",
name: "MapPage",
component: () => import("@/views/able/map.vue"),
meta: {
title: $t("menus.pureMap"),
keepAlive: true,
transition: {
name: "fade"
}
}
},
{
path: "/able/wavesurfer",
name: "Wavesurfer",
component: () => import("@/views/able/wavesurfer/index.vue"),
meta: {
title: $t("menus.pureWavesurfer")
}
},
{
path: "/able/video",
name: "VideoPage",
component: () => import("@/views/able/video.vue"),
meta: {
title: $t("menus.pureVideo")
}
},
{
path: "/able/video-frame",
name: "VideoFrame",
component: () => import("@/views/able/video-frame/index.vue"),
meta: {
title: $t("menus.pureVideoFrame")
}
},
{
path: "/able/danmaku",
name: "Danmaku",
component: () => import("@/views/able/danmaku/index.vue"),
meta: {
title: $t("menus.pureDanmaku")
}
},
{
path: "/able/infinite-scroll",
name: "InfiniteScroll",
component: () => import("@/views/able/infinite-scroll.vue"),
meta: {
title: $t("menus.pureInfiniteScroll")
}
},
{
path: "/able/menu-tree",
name: "MenuTree",
component: () => import("@/views/able/menu-tree.vue"),
meta: {
title: $t("menus.pureMenuTree")
}
},
{
path: "/able/line-tree",
name: "LineTree",
component: () => import("@/views/able/line-tree.vue"),
meta: {
title: $t("menus.pureLineTree")
}
},
{
path: "/able/typeit",
name: "Typeit",
component: () => import("@/views/able/typeit.vue"),
meta: {
title: $t("menus.pureTypeit")
}
},
{
path: "/able/sensitive",
name: "Sensitive",
component: () => import("@/views/able/sensitive.vue"),
meta: {
title: $t("menus.pureSensitive")
}
},
{
path: "/able/pinyin",
name: "Pinyin",
component: () => import("@/views/able/pinyin.vue"),
meta: {
title: $t("menus.purePinyin")
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,22 @@
import { $t } from "@/plugins/i18n";
import { about } from "@/router/enums";
export default {
path: "/about",
redirect: "/about/index",
meta: {
icon: "ri:file-info-line",
title: $t("menus.pureAbout"),
rank: about
},
children: [
{
path: "/about/index",
name: "About",
component: () => import("@/views/about/index.vue"),
meta: {
title: $t("menus.pureAbout")
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,25 @@
import { $t } from "@/plugins/i18n";
import { board } from "@/router/enums";
const IFrame = () => import("@/layout/frame.vue");
export default {
path: "/board",
redirect: "/board/index",
meta: {
icon: "ri:artboard-line",
title: $t("menus.pureBoard"),
rank: board
},
children: [
{
path: "/board/index",
name: "FrameBoard",
component: IFrame,
meta: {
title: $t("menus.pureBoard"),
keepAlive: true,
frameSrc: "https://songlh.top/paint-board/"
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,265 @@
import { $t } from "@/plugins/i18n";
import { components } from "@/router/enums";
export default {
path: "/components",
redirect: "/components/dialog",
meta: {
icon: "ep:menu",
title: $t("menus.pureComponents"),
rank: components
},
children: [
{
path: "/components/dialog",
name: "DialogPage",
component: () => import("@/views/components/dialog/index.vue"),
meta: {
title: $t("menus.pureDialog")
}
},
{
path: "/components/message",
name: "Message",
component: () => import("@/views/components/message.vue"),
meta: {
title: $t("menus.pureMessage")
}
},
{
path: "/components/upload",
name: "PureUpload",
component: () => import("@/views/components/upload/index.vue"),
meta: {
title: $t("menus.pureUpload")
}
},
{
path: "/components/check-card",
name: "CheckCard",
component: () => import("@/views/components/check-card.vue"),
meta: {
title: $t("menus.pureCheckCard"),
extraIcon: "IF-pure-iconfont-new svg"
}
},
{
path: "/components/date-picker",
name: "DatePicker",
component: () => import("@/views/components/date-picker.vue"),
meta: {
title: $t("menus.pureDatePicker")
}
},
{
path: "/components/datetime-picker",
name: "DateTimePicker",
component: () => import("@/views/components/datetime-picker.vue"),
meta: {
title: $t("menus.pureDateTimePicker")
}
},
{
path: "/components/time-picker",
name: "TimePicker",
component: () => import("@/views/components/time-picker.vue"),
meta: {
title: $t("menus.pureTimePicker")
}
},
{
path: "/components/icon-select",
name: "IconSelect",
component: () => import("@/views/components/icon-select.vue"),
meta: {
title: $t("menus.pureIconSelect")
}
},
{
path: "/components/animatecss",
name: "AnimateCss",
component: () => import("@/views/components/animatecss.vue"),
meta: {
title: $t("menus.pureAnimatecss")
}
},
{
path: "/components/cropping",
name: "Cropping",
component: () => import("@/views/components/cropping/index.vue"),
meta: {
title: $t("menus.pureCropping")
}
},
{
path: "/components/segmented",
name: "Segmented",
component: () => import("@/views/components/segmented.vue"),
meta: {
title: $t("menus.pureSegmented")
}
},
{
path: "/components/text",
name: "PureText",
component: () => import("@/views/components/text.vue"),
meta: {
title: $t("menus.pureText"),
extraIcon: "IF-pure-iconfont-new svg"
}
},
{
path: "/components/el-button",
name: "PureButton",
component: () => import("@/views/components/el-button.vue"),
meta: {
title: $t("menus.pureElButton")
}
},
{
path: "/components/check-button",
name: "CheckButton",
component: () => import("@/views/components/check-button.vue"),
meta: {
title: $t("menus.pureCheckButton"),
extraIcon: "IF-pure-iconfont-new svg"
}
},
{
path: "/components/button",
name: "ButtonPage",
component: () => import("@/views/components/button.vue"),
meta: {
title: $t("menus.pureButton")
}
},
{
path: "/components/progress",
name: "PureProgress",
component: () => import("@/views/components/progress.vue"),
meta: {
title: $t("menus.pureProgress")
}
},
{
path: "/components/tag",
name: "PureTag",
component: () => import("@/views/components/tag.vue"),
meta: {
title: $t("menus.pureTag")
}
},
{
path: "/components/statistic",
name: "Statistic",
component: () => import("@/views/components/statistic.vue"),
meta: {
title: $t("menus.pureStatistic")
}
},
{
path: "/components/collapse",
name: "Collapse",
component: () => import("@/views/components/collapse.vue"),
meta: {
title: $t("menus.pureCollapse")
}
},
{
path: "/components/cascader",
name: "Cascader",
component: () => import("@/views/components/cascader.vue"),
meta: {
title: $t("menus.pureCascader")
}
},
{
path: "/components/color-picker",
name: "ColorPicker",
component: () => import("@/views/components/color-picker.vue"),
meta: {
title: $t("menus.pureColorPicker")
}
},
{
path: "/components/selector",
name: "Selector",
component: () => import("@/views/components/selector.vue"),
meta: {
title: $t("menus.pureSelector")
}
},
{
path: "/components/waterfall",
name: "Waterfall",
component: () => import("@/views/components/waterfall/index.vue"),
meta: {
title: $t("menus.pureWaterfall")
}
},
{
path: "/components/split-pane",
name: "SplitPane",
component: () => import("@/views/components/split-pane.vue"),
meta: {
title: $t("menus.pureSplitPane")
}
},
{
path: "/components/swiper",
name: "Swiper",
component: () => import("@/views/components/swiper.vue"),
meta: {
title: $t("menus.pureSwiper")
}
},
{
path: "/components/timeline",
name: "TimeLine",
component: () => import("@/views/components/timeline.vue"),
meta: {
title: $t("menus.pureTimeline")
}
},
{
path: "/components/count-to",
name: "CountTo",
component: () => import("@/views/components/count-to.vue"),
meta: {
title: $t("menus.pureCountTo")
}
},
{
path: "/components/contextmenu",
name: "ContextMenu",
component: () => import("@/views/components/contextmenu/index.vue"),
meta: {
title: $t("menus.pureContextmenu")
}
},
{
path: "/components/json-editor",
name: "JsonEditor",
component: () => import("@/views/components/json-editor.vue"),
meta: {
title: $t("menus.pureJsonEditor")
}
},
{
path: "/components/seamless-scroll",
name: "SeamlessScroll",
component: () => import("@/views/components/seamless-scroll.vue"),
meta: {
title: $t("menus.pureSeamless")
}
},
{
path: "/components/virtual-list",
name: "VirtualList",
component: () => import("@/views/components/virtual-list/index.vue"),
meta: {
title: $t("menus.pureVirtualList")
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,23 @@
import { $t } from "@/plugins/i18n";
import { editor } from "@/router/enums";
export default {
path: "/editor",
redirect: "/editor/index",
meta: {
icon: "ep:edit",
title: $t("menus.pureEditor"),
rank: editor
},
children: [
{
path: "/editor/index",
name: "Editor",
component: () => import("@/views/editor/index.vue"),
meta: {
title: $t("menus.pureEditor"),
keepAlive: true
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,39 @@
import { $t } from "@/plugins/i18n";
import { error } from "@/router/enums";
export default {
path: "/error",
redirect: "/error/403",
meta: {
icon: "ri:information-line",
// showLink: false,
title: $t("menus.pureAbnormal"),
rank: error
},
children: [
{
path: "/error/403",
name: "403",
component: () => import("@/views/error/403.vue"),
meta: {
title: $t("menus.pureFourZeroOne")
}
},
{
path: "/error/404",
name: "404",
component: () => import("@/views/error/404.vue"),
meta: {
title: $t("menus.pureFourZeroFour")
}
},
{
path: "/error/500",
name: "500",
component: () => import("@/views/error/500.vue"),
meta: {
title: $t("menus.pureFive")
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,22 @@
import { $t } from "@/plugins/i18n";
import { flowchart } from "@/router/enums";
export default {
path: "/flow-chart",
redirect: "/flow-chart/index",
meta: {
icon: "ep:set-up",
title: $t("menus.pureFlowChart"),
rank: flowchart
},
children: [
{
path: "/flow-chart/index",
name: "FlowChart",
component: () => import("@/views/flow-chart/index.vue"),
meta: {
title: $t("menus.pureFlowChart")
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,23 @@
import { $t } from "@/plugins/i18n";
import { form } from "@/router/enums";
export default {
path: "/form",
redirect: "/form/index",
meta: {
icon: "ri:edit-box-line",
title: $t("menus.pureSchemaForm"),
rank: form
},
children: [
{
path: "/form/index",
name: "SchemaForm",
component: () => import("@/views/schema-form/index.vue"),
meta: {
title: $t("menus.pureSchemaForm"),
extraIcon: "IF-pure-iconfont-new svg"
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,27 @@
import { $t } from "@/plugins/i18n";
import { formdesign } from "@/router/enums";
const IFrame = () => import("@/layout/frame.vue");
export default {
path: "/form-design",
redirect: "/form-design/index",
meta: {
icon: "ri:terminal-window-line",
title: $t("menus.pureFormDesign"),
rank: formdesign
},
children: [
{
path: "/form-design/index",
name: "FormDesign",
component: IFrame,
meta: {
title: $t("menus.pureFormDesign"),
keepAlive: true,
frameSrc:
"https://haixin-fang.github.io/vue-form-design/playground/index.html",
frameLoading: false
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,23 @@
import { $t } from "@/plugins/i18n";
import { ganttastic } from "@/router/enums";
export default {
path: "/ganttastic",
redirect: "/ganttastic/index",
meta: {
icon: "ri:bar-chart-horizontal-line",
title: $t("menus.pureGanttastic"),
rank: ganttastic
},
children: [
{
path: "/ganttastic/index",
name: "Ganttastic",
component: () => import("@/views/ganttastic/index.vue"),
meta: {
title: $t("menus.pureGanttastic"),
extraIcon: "IF-pure-iconfont-new svg"
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,22 @@
import { $t } from "@/plugins/i18n";
import { guide } from "@/router/enums";
export default {
path: "/guide",
redirect: "/guide/index",
meta: {
icon: "ep:guide",
title: $t("menus.pureGuide"),
rank: guide
},
children: [
{
path: "/guide/index",
name: "Guide",
component: () => import("@/views/guide/index.vue"),
meta: {
title: $t("menus.pureGuide")
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,27 @@
import { $t } from "@/plugins/i18n";
import { home } from "@/router/enums";
const { VITE_HIDE_HOME } = import.meta.env;
const Layout = () => import("@/layout/index.vue");
export default {
path: "/",
name: "Home",
component: Layout,
redirect: "/welcome",
meta: {
icon: "ep:home-filled",
title: $t("menus.pureHome"),
rank: home
},
children: [
{
path: "/welcome",
name: "Welcome",
component: () => import("@/views/welcome/index.vue"),
meta: {
title: $t("menus.pureHome"),
showLink: VITE_HIDE_HOME === "true" ? false : true
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,24 @@
import { $t } from "@/plugins/i18n";
import { list } from "@/router/enums";
export default {
path: "/list",
redirect: "/list/card",
meta: {
icon: "ri:list-check",
title: $t("menus.pureList"),
rank: list
},
children: [
{
path: "/list/card",
name: "CardList",
component: () => import("@/views/list/card/index.vue"),
meta: {
icon: "ri:bank-card-line",
title: $t("menus.pureCardList"),
showParent: true
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,22 @@
import { $t } from "@/plugins/i18n";
import { menuoverflow } from "@/router/enums";
export default {
path: "/menuoverflow",
redirect: "/menuoverflow/index",
meta: {
title: $t("menus.pureMenuOverflow"),
rank: menuoverflow
},
children: [
{
path: "/menuoverflow/index",
name: "MenuOverflow",
component: () => import("@/views/menuoverflow/index.vue"),
meta: {
title: $t("menus.pureChildMenuOverflow"),
showParent: true
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,25 @@
import { $t } from "@/plugins/i18n";
import { mind } from "@/router/enums";
const IFrame = () => import("@/layout/frame.vue");
export default {
path: "/mind-map",
redirect: "/mind-map/index",
meta: {
icon: "ri:mind-map",
title: $t("menus.pureMindMap"),
rank: mind
},
children: [
{
path: "/mind-map/index",
name: "FrameMindMap",
component: IFrame,
meta: {
title: $t("menus.pureMindMap"),
keepAlive: true,
frameSrc: "https://wanglin2.github.io/mind-map/#/"
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,81 @@
import { $t } from "@/plugins/i18n";
import { nested } from "@/router/enums";
export default {
path: "/nested",
redirect: "/nested/menu1/menu1-1",
meta: {
title: $t("menus.pureMenus"),
icon: "ep:histogram",
rank: nested
},
children: [
{
path: "/nested/menu1",
meta: {
title: $t("menus.pureMenu1"),
keepAlive: true
},
redirect: "/nested/menu1/menu1-1",
children: [
{
path: "/nested/menu1/menu1-1",
component: () => import("@/views/nested/menu1/menu1-1/index.vue"),
name: "Menu1-1",
meta: {
title: $t("menus.pureMenu1-1"),
keepAlive: true
}
},
{
path: "/nested/menu1/menu1-2",
redirect: "/nested/menu1/menu1-2/menu1-2-1",
meta: {
title: $t("menus.pureMenu1-2"),
keepAlive: true
},
children: [
{
path: "/nested/menu1/menu1-2/menu1-2-1",
component: () =>
import("@/views/nested/menu1/menu1-2/menu1-2-1/index.vue"),
name: "Menu1-2-1",
meta: {
title: $t("menus.pureMenu1-2-1"),
keepAlive: true
}
},
{
path: "/nested/menu1/menu1-2/menu1-2-2",
component: () =>
import("@/views/nested/menu1/menu1-2/menu1-2-2/index.vue"),
name: "Menu1-2-2",
meta: {
title: $t("menus.pureMenu1-2-2"),
keepAlive: true
}
}
]
},
{
path: "/nested/menu1/menu1-3",
component: () => import("@/views/nested/menu1/menu1-3/index.vue"),
name: "Menu1-3",
meta: {
title: $t("menus.pureMenu1-3"),
keepAlive: true
}
}
]
},
{
path: "/nested/menu2",
name: "Menu2",
component: () => import("@/views/nested/menu2/index.vue"),
meta: {
title: $t("menus.pureMenu2"),
keepAlive: true
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,25 @@
import { ppt } from "@/router/enums";
const IFrame = () => import("@/layout/frame.vue");
export default {
path: "/ppt",
redirect: "/ppt/index",
meta: {
icon: "ri:file-ppt-2-line",
title: "PPT",
rank: ppt
},
children: [
{
path: "/ppt/index",
name: "FramePpt",
component: IFrame,
meta: {
title: "PPT",
keepAlive: true,
frameSrc: "https://pipipi-pikachu.github.io/PPTist/",
frameLoading: false
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,52 @@
import { $t } from "@/plugins/i18n";
const Layout = () => import("@/layout/index.vue");
export default [
{
path: "/login",
name: "Login",
component: () => import("@/views/login/index.vue"),
meta: {
title: $t("menus.pureLogin"),
showLink: false,
rank: 101
}
},
{
path: "/redirect",
component: Layout,
meta: {
title: $t("status.pureLoad"),
showLink: false,
rank: 102
},
children: [
{
path: "/redirect/:path(.*)",
name: "Redirect",
component: () => import("@/layout/redirect.vue")
}
]
},
// 下面是一个无layout菜单的例子一个全屏空白页面因为这种情况极少发生所以只需要在前端配置即可配置路径src/router/modules/remaining.ts
{
path: "/empty",
name: "Empty",
component: () => import("@/views/empty/index.vue"),
meta: {
title: $t("menus.pureEmpty"),
showLink: false,
rank: 103
}
},
{
path: "/account-settings",
name: "AccountSettings",
component: () => import("@/views/account-settings/index.vue"),
meta: {
title: $t("buttons.pureAccountSettings"),
showLink: false,
rank: 104
}
}
] satisfies Array<RouteConfigsTable>;

View File

@@ -0,0 +1,30 @@
import { $t } from "@/plugins/i18n";
import { result } from "@/router/enums";
export default {
path: "/result",
redirect: "/result/success",
meta: {
icon: "ri:checkbox-circle-line",
title: $t("menus.pureResult"),
rank: result
},
children: [
{
path: "/result/success",
name: "Success",
component: () => import("@/views/result/success.vue"),
meta: {
title: $t("menus.pureSuccess")
}
},
{
path: "/result/fail",
name: "Fail",
component: () => import("@/views/result/fail.vue"),
meta: {
title: $t("menus.pureFail")
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,48 @@
import { $t } from "@/plugins/i18n";
import { table } from "@/router/enums";
export default {
path: "/table",
redirect: "/table/index",
meta: {
icon: "ri:table-line",
title: $t("menus.pureTable"),
rank: table
},
children: [
{
path: "/table/index",
name: "PureTable",
component: () => import("@/views/table/index.vue"),
meta: {
title: $t("menus.pureTableBase")
}
},
{
path: "/table/high",
name: "PureTableHigh",
component: () => import("@/views/table/high.vue"),
meta: {
title: $t("menus.pureTableHigh")
}
},
{
path: "/table/edit",
name: "PureTableEdit",
component: () => import("@/views/table/edit.vue"),
meta: {
title: $t("menus.pureTableEdit"),
extraIcon: "IF-pure-iconfont-new svg"
}
},
{
path: "/table/virtual",
name: "VxeTable",
component: () => import("@/views/table/virtual.vue"),
meta: {
title: $t("menus.pureVxeTable"),
extraIcon: "IF-pure-iconfont-new svg"
}
}
]
} satisfies RouteConfigsTable;

View File

@@ -0,0 +1,22 @@
import { vueflow } from "@/router/enums";
export default {
path: "/vue-flow",
redirect: "/vue-flow/index",
meta: {
icon: "ep:set-up",
title: "vue-flow",
rank: vueflow
},
children: [
{
path: "/vue-flow/index",
name: "VueFlow",
component: () => import("@/views/vue-flow/layouting/index.vue"),
meta: {
title: "vue-flow",
extraIcon: "IF-pure-iconfont-new svg"
}
}
]
} satisfies RouteConfigsTable;