180 lines
3.8 KiB
TypeScript
180 lines
3.8 KiB
TypeScript
// 模拟后端动态生成路由
|
||
import { defineFakeRoute } from 'vite-plugin-fake-server/client';
|
||
import { bills, frame } from '@/router/enums';
|
||
|
||
/**
|
||
* roles:页面级别权限,这里模拟二种 "admin"、"common"
|
||
* admin:管理员角色
|
||
* common:普通角色
|
||
*/
|
||
|
||
const frameRouter = {
|
||
path: '/iframe',
|
||
meta: {
|
||
icon: 'ri:links-fill',
|
||
title: 'menus.pureExternalPage',
|
||
rank: frame,
|
||
},
|
||
children: [
|
||
{
|
||
path: '/iframe/embedded',
|
||
meta: {
|
||
title: 'menus.pureEmbeddedDoc',
|
||
},
|
||
children: [
|
||
{
|
||
path: '/iframe/colorhunt',
|
||
name: 'FrameColorHunt',
|
||
meta: {
|
||
title: 'menus.pureColorHuntDoc',
|
||
frameSrc: 'https://colorhunt.co/',
|
||
keepAlive: true,
|
||
roles: ['admin', 'common'],
|
||
},
|
||
},
|
||
{
|
||
path: '/iframe/uigradients',
|
||
name: 'FrameUiGradients',
|
||
meta: {
|
||
title: 'menus.pureUiGradients',
|
||
frameSrc: 'https://uigradients.com/',
|
||
keepAlive: true,
|
||
roles: ['admin', 'common'],
|
||
},
|
||
},
|
||
{
|
||
path: '/iframe/ep',
|
||
name: 'FrameEp',
|
||
meta: {
|
||
title: 'menus.pureEpDoc',
|
||
frameSrc: 'https://element-plus.org/zh-CN/',
|
||
keepAlive: true,
|
||
roles: ['admin', 'common'],
|
||
},
|
||
},
|
||
{
|
||
path: '/iframe/tailwindcss',
|
||
name: 'FrameTailwindcss',
|
||
meta: {
|
||
title: 'menus.pureTailwindcssDoc',
|
||
frameSrc: 'https://tailwindcss.com/docs/installation',
|
||
keepAlive: true,
|
||
roles: ['admin', 'common'],
|
||
},
|
||
},
|
||
{
|
||
path: '/iframe/vue3',
|
||
name: 'FrameVue',
|
||
meta: {
|
||
title: 'menus.pureVueDoc',
|
||
frameSrc: 'https://cn.vuejs.org/',
|
||
keepAlive: true,
|
||
roles: ['admin', 'common'],
|
||
},
|
||
},
|
||
{
|
||
path: '/iframe/vite',
|
||
name: 'FrameVite',
|
||
meta: {
|
||
title: 'menus.pureViteDoc',
|
||
frameSrc: 'https://cn.vitejs.dev/',
|
||
keepAlive: true,
|
||
roles: ['admin', 'common'],
|
||
},
|
||
},
|
||
{
|
||
path: '/iframe/pinia',
|
||
name: 'FramePinia',
|
||
meta: {
|
||
title: 'menus.purePiniaDoc',
|
||
frameSrc: 'https://pinia.vuejs.org/zh/index.html',
|
||
keepAlive: true,
|
||
roles: ['admin', 'common'],
|
||
},
|
||
},
|
||
{
|
||
path: '/iframe/vue-router',
|
||
name: 'FrameRouter',
|
||
meta: {
|
||
title: 'menus.pureRouterDoc',
|
||
frameSrc: 'https://router.vuejs.org/zh/',
|
||
keepAlive: true,
|
||
roles: ['admin', 'common'],
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
path: '/iframe/external',
|
||
meta: {
|
||
title: 'menus.pureExternalDoc',
|
||
},
|
||
children: [
|
||
{
|
||
path: '/external',
|
||
name: 'https://pure-admin.github.io/pure-admin-doc',
|
||
meta: {
|
||
title: 'menus.pureExternalLink',
|
||
roles: ['admin', 'common'],
|
||
},
|
||
},
|
||
{
|
||
path: '/pureUtilsLink',
|
||
name: 'https://pure-admin-utils.netlify.app/',
|
||
meta: {
|
||
title: 'menus.pureUtilsLink',
|
||
roles: ['admin', 'common'],
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
};
|
||
|
||
const bill = {
|
||
path: '/bill',
|
||
meta: { icon: 'ri:bookmark-2-line', title: 'menus.bills', rank: bills },
|
||
children: [
|
||
{
|
||
path: '/bill/record/index',
|
||
name: 'billRecord',
|
||
meta: {
|
||
title: 'menus.billRecord',
|
||
roles: ['admin', 'common'],
|
||
auths: ['permission:btn:add', 'permission:btn:edit', 'permission:btn:delete'],
|
||
},
|
||
},
|
||
{
|
||
path: '/bill/history/index',
|
||
name: 'billHistory',
|
||
meta: {
|
||
title: 'menus.billHistory',
|
||
roles: ['admin', 'common'],
|
||
auths: ['permission:btn:add', 'permission:btn:edit', 'permission:btn:delete'],
|
||
},
|
||
},
|
||
{
|
||
path: '/bill/count/index',
|
||
name: 'billCount',
|
||
meta: {
|
||
title: 'menus.billCount',
|
||
roles: ['admin', 'common'],
|
||
auths: ['permission:btn:add', 'permission:btn:edit', 'permission:btn:delete'],
|
||
},
|
||
},
|
||
],
|
||
};
|
||
|
||
export default defineFakeRoute([
|
||
{
|
||
url: '/get-async-routes',
|
||
method: 'get',
|
||
response: () => {
|
||
return {
|
||
success: true,
|
||
data: [frameRouter, bill],
|
||
};
|
||
},
|
||
},
|
||
]);
|