index.ts 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960
  1. import config from '@/config/axios/config'
  2. import { MockMethod } from 'vite-plugin-mock'
  3. import Mock from 'mockjs'
  4. import { toAnyString } from '@/utils'
  5. const { code } = config
  6. const timeout = 1
  7. const adminList = [
  8. {
  9. path: '/dashboard',
  10. component: '#',
  11. redirect: '/dashboard/analysis',
  12. name: 'Dashboard',
  13. meta: {
  14. title: 'router.dashboard',
  15. icon: 'ant-design:dashboard-filled',
  16. alwaysShow: true
  17. },
  18. children: [
  19. {
  20. path: 'analysis',
  21. component: 'views/Dashboard/Analysis',
  22. name: 'Analysis',
  23. meta: {
  24. title: 'router.analysis',
  25. noCache: true
  26. }
  27. },
  28. {
  29. path: 'workplace',
  30. component: 'views/Dashboard/Workplace',
  31. name: 'Workplace',
  32. meta: {
  33. title: 'router.workplace',
  34. noCache: true
  35. }
  36. }
  37. ]
  38. },
  39. {
  40. path: '/manage',
  41. component: '#',
  42. redirect: '/manage/news-page',
  43. name: 'Manage',
  44. meta: {
  45. title: '模块管理',
  46. icon: 'ep:menu',
  47. alwaysShow: true
  48. },
  49. children: [
  50. {
  51. path: 'news-page',
  52. component: 'views/Manage/News/NewsPage',
  53. name: 'NewsPage',
  54. meta: {
  55. title: 'router.form',
  56. alwaysShow: true
  57. },
  58. children: [
  59. {
  60. path: 'default-form',
  61. component: 'views/Components/Form/DefaultForm',
  62. name: 'DefaultForm',
  63. meta: {
  64. title: 'router.defaultForm'
  65. }
  66. },
  67. {
  68. path: 'use-form',
  69. component: 'views/Components/Form/UseFormDemo',
  70. name: 'UseForm',
  71. meta: {
  72. title: 'UseForm'
  73. }
  74. }
  75. ]
  76. },
  77. {
  78. path: 'table',
  79. component: '##',
  80. redirect: '/components/table/default-table',
  81. name: 'TableDemo',
  82. meta: {
  83. title: 'router.table',
  84. alwaysShow: true
  85. },
  86. children: [
  87. {
  88. path: 'default-table',
  89. component: 'views/Components/Table/DefaultTable',
  90. name: 'DefaultTable',
  91. meta: {
  92. title: 'router.defaultTable'
  93. }
  94. },
  95. {
  96. path: 'use-table',
  97. component: 'views/Components/Table/UseTableDemo',
  98. name: 'UseTable',
  99. meta: {
  100. title: 'UseTable'
  101. }
  102. },
  103. {
  104. path: 'tree-table',
  105. component: 'views/Components/Table/TreeTable',
  106. name: 'TreeTable',
  107. meta: {
  108. title: 'TreeTable'
  109. }
  110. },
  111. {
  112. path: 'table-image-preview',
  113. component: 'views/Components/Table/TableImagePreview',
  114. name: 'TableImagePreview',
  115. meta: {
  116. title: 'router.PicturePreview'
  117. }
  118. }
  119. // {
  120. // path: 'ref-table',
  121. // component: 'views/Components/Table/RefTable',
  122. // name: 'RefTable',
  123. // meta: {
  124. // title: 'RefTable'
  125. // }
  126. // }
  127. ]
  128. },
  129. {
  130. path: 'editor-demo',
  131. component: '##',
  132. redirect: '/components/editor-demo/editor',
  133. name: 'EditorDemo',
  134. meta: {
  135. title: 'router.editor',
  136. alwaysShow: true
  137. },
  138. children: [
  139. {
  140. path: 'editor',
  141. component: 'views/Components/Editor/Editor',
  142. name: 'Editor',
  143. meta: {
  144. title: 'router.richText'
  145. }
  146. },
  147. {
  148. path: 'json-editor',
  149. component: 'views/Components/Editor/JsonEditor',
  150. name: 'JsonEditor',
  151. meta: {
  152. title: 'router.jsonEditor'
  153. }
  154. }
  155. ]
  156. },
  157. {
  158. path: 'search',
  159. component: 'views/Components/Search',
  160. name: 'Search',
  161. meta: {
  162. title: 'router.search'
  163. }
  164. },
  165. {
  166. path: 'news-add',
  167. component: 'views/Manage/News/NewsAdd',
  168. name: 'NewsAdd',
  169. meta: {
  170. title: '新增新闻',
  171. noTagsView: true,
  172. noCache: true,
  173. hidden: true,
  174. canTo: true,
  175. activeMenu: '/manage/news-page'
  176. }
  177. },
  178. {
  179. path: 'news-edit',
  180. component: 'views/Manage/News/NewsEdit',
  181. name: 'NewsEdit',
  182. meta: {
  183. title: '编辑新闻',
  184. noTagsView: true,
  185. noCache: true,
  186. hidden: true,
  187. canTo: true,
  188. activeMenu: '/manage/news-page'
  189. }
  190. },
  191. {
  192. path: 'useValidator',
  193. component: 'views/hooks/useValidator',
  194. name: 'UseValidator',
  195. meta: {
  196. title: 'useValidator'
  197. }
  198. }
  199. // {
  200. // path: 'useCrudSchemas',
  201. // component: 'views/hooks/useCrudSchemas',
  202. // name: 'UseCrudSchemas',
  203. // meta: {
  204. // title: 'useCrudSchemas'
  205. // }
  206. // }
  207. ]
  208. },
  209. {
  210. path: '/level',
  211. component: '#',
  212. redirect: '/level/menu1/menu1-1/menu1-1-1',
  213. name: 'Level',
  214. meta: {
  215. title: 'router.level',
  216. icon: 'carbon:skill-level-advanced'
  217. },
  218. children: [
  219. {
  220. path: 'menu1',
  221. name: 'Menu1',
  222. component: '##',
  223. redirect: '/level/menu1/menu1-1/menu1-1-1',
  224. meta: {
  225. title: 'router.menu1'
  226. },
  227. children: [
  228. {
  229. path: 'menu1-1',
  230. name: 'Menu11',
  231. component: '##',
  232. redirect: '/level/menu1/menu1-1/menu1-1-1',
  233. meta: {
  234. title: 'router.menu11',
  235. alwaysShow: true
  236. },
  237. children: [
  238. {
  239. path: 'menu1-1-1',
  240. name: 'Menu111',
  241. component: 'views/Level/Menu111',
  242. meta: {
  243. title: 'router.menu111'
  244. }
  245. }
  246. ]
  247. },
  248. {
  249. path: 'menu1-2',
  250. name: 'Menu12',
  251. component: 'views/Level/Menu12',
  252. meta: {
  253. title: 'router.menu12'
  254. }
  255. }
  256. ]
  257. },
  258. {
  259. path: 'news-detail',
  260. component: 'views/Manage/News/NewsDetail',
  261. name: 'NewsDetail',
  262. meta: {
  263. title: '新闻详情',
  264. noTagsView: true,
  265. noCache: true,
  266. hidden: true,
  267. canTo: true,
  268. activeMenu: '/manage/news-page'
  269. }
  270. },
  271. {
  272. path: 'product-page',
  273. component: 'views/Manage/Product/ProductPage',
  274. name: 'ProductPage',
  275. meta: {
  276. title: '产品管理'
  277. }
  278. },
  279. {
  280. path: 'product-add',
  281. component: 'views/Manage/Product/ProductAdd',
  282. name: 'ProductAdd',
  283. meta: {
  284. title: '新增产品',
  285. noTagsView: true,
  286. noCache: true,
  287. hidden: true,
  288. canTo: true,
  289. activeMenu: '/manage/product-page'
  290. }
  291. },
  292. {
  293. path: 'product-edit',
  294. component: 'views/Manage/Product/ProductEdit',
  295. name: 'ProductEdit',
  296. meta: {
  297. title: '编辑产品',
  298. noTagsView: true,
  299. noCache: true,
  300. hidden: true,
  301. canTo: true,
  302. activeMenu: '/manage/product-page'
  303. }
  304. },
  305. {
  306. path: 'product-detail',
  307. component: 'views/Manage/Product/ProductDetail',
  308. name: 'ProductDetail',
  309. meta: {
  310. title: '产品详情',
  311. noTagsView: true,
  312. noCache: true,
  313. hidden: true,
  314. canTo: true,
  315. activeMenu: '/manage/product-page'
  316. }
  317. }
  318. ]
  319. },
  320. {
  321. path: '/example',
  322. component: '#',
  323. redirect: '/example/example-page',
  324. name: 'Example',
  325. meta: {
  326. title: 'router.example',
  327. icon: 'ep:management',
  328. alwaysShow: true
  329. },
  330. children: [
  331. {
  332. path: 'example-page',
  333. component: 'views/Example/Page/ExamplePage',
  334. name: 'ExamplePage',
  335. meta: {
  336. title: 'router.examplePage'
  337. }
  338. },
  339. {
  340. path: 'example-add',
  341. component: 'views/Example/Page/ExampleAdd',
  342. name: 'ExampleAdd',
  343. meta: {
  344. title: 'router.exampleAdd',
  345. noTagsView: true,
  346. noCache: true,
  347. hidden: true,
  348. canTo: true,
  349. activeMenu: '/example/example-page'
  350. }
  351. },
  352. {
  353. path: 'example-edit',
  354. component: 'views/Example/Page/ExampleEdit',
  355. name: 'ExampleEdit',
  356. meta: {
  357. title: 'router.exampleEdit',
  358. noTagsView: true,
  359. noCache: true,
  360. hidden: true,
  361. canTo: true,
  362. activeMenu: '/example/example-page'
  363. }
  364. },
  365. {
  366. path: 'example-detail',
  367. component: 'views/Example/Page/ExampleDetail',
  368. name: 'ExampleDetail',
  369. meta: {
  370. title: 'router.exampleDetail',
  371. noTagsView: true,
  372. noCache: true,
  373. hidden: true,
  374. canTo: true,
  375. activeMenu: '/example/example-page'
  376. }
  377. }
  378. ]
  379. },
  380. {
  381. path: '/authorization',
  382. component: '#',
  383. redirect: '/authorization/user',
  384. name: 'Authorization',
  385. meta: {
  386. title: 'router.authorization',
  387. icon: 'eos-icons:role-binding',
  388. alwaysShow: true
  389. },
  390. children: [
  391. {
  392. path: 'department',
  393. component: 'views/Authorization/Department/Department',
  394. name: 'Department',
  395. meta: {
  396. title: 'router.department'
  397. }
  398. },
  399. {
  400. path: 'user',
  401. component: 'views/Authorization/User/User',
  402. name: 'User',
  403. meta: {
  404. title: 'router.user'
  405. }
  406. },
  407. {
  408. path: 'menu',
  409. component: 'views/Authorization/Menu/Menu',
  410. name: 'Menu',
  411. meta: {
  412. title: 'router.menuManagement'
  413. }
  414. },
  415. {
  416. path: 'role',
  417. component: 'views/Authorization/Role/Role',
  418. name: 'Role',
  419. meta: {
  420. title: 'router.role'
  421. }
  422. },
  423. {
  424. path: 'test',
  425. component: 'views/Authorization/Test/Test',
  426. name: 'Test',
  427. meta: {
  428. title: 'router.permission',
  429. permission: ['add', 'edit', 'delete']
  430. }
  431. }
  432. ]
  433. }
  434. ]
  435. const testList: string[] = [
  436. '/dashboard',
  437. '/dashboard/analysis',
  438. '/dashboard/workplace',
  439. 'external-link',
  440. 'https://element-plus-admin-doc.cn/',
  441. '/guide',
  442. '/guide/index',
  443. '/components',
  444. '/components/form',
  445. '/components/form/default-form',
  446. '/components/form/use-form',
  447. '/components/form/ref-form',
  448. '/components/table',
  449. '/components/table/default-table',
  450. '/components/table/use-table',
  451. '/components/table/tree-table',
  452. '/components/table/table-image-preview',
  453. '/components/table/ref-table',
  454. '/components/editor-demo',
  455. '/components/editor-demo/editor',
  456. '/components/editor-demo/json-editor',
  457. '/components/search',
  458. '/components/descriptions',
  459. '/components/image-viewer',
  460. '/components/dialog',
  461. '/components/icon',
  462. '/components/echart',
  463. '/components/count-to',
  464. '/components/qrcode',
  465. '/components/highlight',
  466. '/components/infotip',
  467. '/Components/InputPassword',
  468. '/Components/Sticky',
  469. 'function',
  470. '/function/multiple-tabs',
  471. '/function/multiple-tabs-demo/:id',
  472. '/hooks',
  473. '/hooks/useWatermark',
  474. '/hooks/useTagsView',
  475. '/hooks/useValidator',
  476. // '/hooks/useCrudSchemas',
  477. '/level',
  478. '/level/menu1',
  479. '/level/menu1/menu1-1',
  480. '/level/menu1/menu1-1/menu1-1-1',
  481. '/level/menu1/menu1-2',
  482. '/level/menu2',
  483. '/example',
  484. '/example/example-dialog',
  485. '/example/example-page',
  486. '/example/example-add',
  487. '/example/example-edit',
  488. '/example/example-detail',
  489. '/authorization',
  490. '/authorization/department',
  491. '/authorization/user',
  492. '/authorization/role',
  493. '/authorization/menu',
  494. '/authorization/test',
  495. '/error',
  496. '/error/404-demo',
  497. '/error/403-demo',
  498. '/error/500-demo'
  499. ]
  500. const List: any[] = []
  501. const roleNames = ['超级管理员', '管理员', '普通用户', '游客']
  502. const menus = [
  503. [
  504. {
  505. path: '/dashboard',
  506. component: '#',
  507. redirect: '/dashboard/analysis',
  508. name: 'Dashboard',
  509. status: Mock.Random.integer(0, 1),
  510. id: 1,
  511. meta: {
  512. title: '首页',
  513. icon: 'ant-design:dashboard-filled',
  514. alwaysShow: true
  515. },
  516. children: [
  517. {
  518. path: 'analysis',
  519. component: 'views/Dashboard/Analysis',
  520. name: 'Analysis',
  521. status: Mock.Random.integer(0, 1),
  522. id: 2,
  523. meta: {
  524. title: '分析页',
  525. noCache: true
  526. }
  527. },
  528. {
  529. path: 'workplace',
  530. component: 'views/Dashboard/Workplace',
  531. name: 'Workplace',
  532. status: Mock.Random.integer(0, 1),
  533. id: 3,
  534. meta: {
  535. title: '工作台',
  536. noCache: true
  537. }
  538. }
  539. ]
  540. },
  541. {
  542. path: '/external-link',
  543. component: '#',
  544. meta: {
  545. title: '文档',
  546. icon: 'clarity:document-solid'
  547. },
  548. name: 'ExternalLink',
  549. status: Mock.Random.integer(0, 1),
  550. id: 4,
  551. children: [
  552. {
  553. path: 'https://element-plus-admin-doc.cn/',
  554. name: 'DocumentLink',
  555. status: Mock.Random.integer(0, 1),
  556. id: 5,
  557. meta: {
  558. title: '文档'
  559. }
  560. }
  561. ]
  562. },
  563. {
  564. path: '/level',
  565. component: '#',
  566. redirect: '/level/menu1/menu1-1/menu1-1-1',
  567. name: 'Level',
  568. status: Mock.Random.integer(0, 1),
  569. id: 6,
  570. meta: {
  571. title: '菜单',
  572. icon: 'carbon:skill-level-advanced'
  573. },
  574. children: [
  575. {
  576. path: 'menu1',
  577. name: 'Menu1',
  578. component: '##',
  579. status: Mock.Random.integer(0, 1),
  580. id: 7,
  581. redirect: '/level/menu1/menu1-1/menu1-1-1',
  582. meta: {
  583. title: '菜单1'
  584. },
  585. children: [
  586. {
  587. path: 'menu1-1',
  588. name: 'Menu11',
  589. component: '##',
  590. status: Mock.Random.integer(0, 1),
  591. id: 8,
  592. redirect: '/level/menu1/menu1-1/menu1-1-1',
  593. meta: {
  594. title: '菜单1-1',
  595. alwaysShow: true
  596. },
  597. children: [
  598. {
  599. path: 'menu1-1-1',
  600. name: 'Menu111',
  601. component: 'views/Level/Menu111',
  602. status: Mock.Random.integer(0, 1),
  603. id: 9,
  604. permission: ['edit', 'add', 'delete'],
  605. meta: {
  606. title: '菜单1-1-1',
  607. permission: ['edit', 'add', 'delete']
  608. }
  609. }
  610. ]
  611. },
  612. {
  613. path: 'menu1-2',
  614. name: 'Menu12',
  615. component: 'views/Level/Menu12',
  616. status: Mock.Random.integer(0, 1),
  617. id: 10,
  618. permission: ['edit', 'add', 'delete'],
  619. meta: {
  620. title: '菜单1-2',
  621. permission: ['edit', 'add', 'delete']
  622. }
  623. }
  624. ]
  625. },
  626. {
  627. path: 'menu2',
  628. name: 'Menu2Demo',
  629. component: 'views/Level/Menu2',
  630. status: Mock.Random.integer(0, 1),
  631. id: 11,
  632. permission: ['edit', 'add', 'delete'],
  633. meta: {
  634. title: '菜单2',
  635. permission: ['edit', 'add', 'delete']
  636. }
  637. }
  638. ]
  639. },
  640. {
  641. path: '/example',
  642. component: '#',
  643. redirect: '/example/example-dialog',
  644. name: 'Example',
  645. status: Mock.Random.integer(0, 1),
  646. id: 12,
  647. meta: {
  648. title: '综合示例',
  649. icon: 'ep:management',
  650. alwaysShow: true
  651. },
  652. children: [
  653. {
  654. path: 'example-dialog',
  655. component: 'views/Example/Dialog/ExampleDialog',
  656. name: 'ExampleDialog',
  657. status: Mock.Random.integer(0, 1),
  658. id: 13,
  659. permission: ['edit', 'add', 'delete'],
  660. meta: {
  661. title: '综合示例-弹窗',
  662. permission: ['edit', 'add', 'delete']
  663. }
  664. },
  665. {
  666. path: 'example-page',
  667. component: 'views/Example/Page/ExamplePage',
  668. name: 'ExamplePage',
  669. status: Mock.Random.integer(0, 1),
  670. id: 14,
  671. permission: ['edit', 'add', 'delete'],
  672. meta: {
  673. title: '综合示例-页面',
  674. permission: ['edit', 'add', 'delete']
  675. }
  676. },
  677. {
  678. path: 'example-add',
  679. component: 'views/Example/Page/ExampleAdd',
  680. name: 'ExampleAdd',
  681. status: Mock.Random.integer(0, 1),
  682. id: 15,
  683. permission: ['edit', 'add', 'delete'],
  684. meta: {
  685. title: '综合示例-新增',
  686. noTagsView: true,
  687. noCache: true,
  688. hidden: true,
  689. canTo: true,
  690. activeMenu: '/example/example-page',
  691. permission: ['edit', 'add', 'delete']
  692. }
  693. },
  694. {
  695. path: 'example-edit',
  696. component: 'views/Example/Page/ExampleEdit',
  697. name: 'ExampleEdit',
  698. status: Mock.Random.integer(0, 1),
  699. id: 16,
  700. permission: ['edit', 'add', 'delete'],
  701. meta: {
  702. title: '综合示例-编辑',
  703. noTagsView: true,
  704. noCache: true,
  705. hidden: true,
  706. canTo: true,
  707. activeMenu: '/example/example-page',
  708. permission: ['edit', 'add', 'delete']
  709. }
  710. },
  711. {
  712. path: 'example-detail',
  713. component: 'views/Example/Page/ExampleDetail',
  714. name: 'ExampleDetail',
  715. status: Mock.Random.integer(0, 1),
  716. id: 17,
  717. permission: ['edit', 'add', 'delete'],
  718. meta: {
  719. title: '综合示例-详情',
  720. noTagsView: true,
  721. noCache: true,
  722. hidden: true,
  723. canTo: true,
  724. activeMenu: '/example/example-page',
  725. permission: ['edit', 'add', 'delete']
  726. }
  727. }
  728. ]
  729. }
  730. ],
  731. [
  732. {
  733. path: '/dashboard',
  734. component: '#',
  735. redirect: '/dashboard/analysis',
  736. name: 'Dashboard',
  737. status: Mock.Random.integer(0, 1),
  738. id: 1,
  739. meta: {
  740. title: '首页',
  741. icon: 'ant-design:dashboard-filled',
  742. alwaysShow: true
  743. },
  744. children: [
  745. {
  746. path: 'analysis',
  747. component: 'views/Dashboard/Analysis',
  748. name: 'Analysis',
  749. status: Mock.Random.integer(0, 1),
  750. id: 2,
  751. meta: {
  752. title: '分析页',
  753. noCache: true
  754. }
  755. },
  756. {
  757. path: 'workplace',
  758. component: 'views/Dashboard/Workplace',
  759. name: 'Workplace',
  760. status: Mock.Random.integer(0, 1),
  761. id: 3,
  762. meta: {
  763. title: '工作台',
  764. noCache: true
  765. }
  766. }
  767. ]
  768. }
  769. ],
  770. [
  771. {
  772. path: '/external-link',
  773. component: '#',
  774. meta: {
  775. title: '文档',
  776. icon: 'clarity:document-solid'
  777. },
  778. name: 'ExternalLink',
  779. status: Mock.Random.integer(0, 1),
  780. id: 4,
  781. children: [
  782. {
  783. path: 'https://element-plus-admin-doc.cn/',
  784. name: 'DocumentLink',
  785. status: Mock.Random.integer(0, 1),
  786. id: 5,
  787. meta: {
  788. title: '文档'
  789. }
  790. }
  791. ]
  792. },
  793. {
  794. path: '/level',
  795. component: '#',
  796. redirect: '/level/menu1/menu1-1/menu1-1-1',
  797. name: 'Level',
  798. status: Mock.Random.integer(0, 1),
  799. id: 6,
  800. meta: {
  801. title: '菜单',
  802. icon: 'carbon:skill-level-advanced'
  803. },
  804. children: [
  805. {
  806. path: 'menu1',
  807. name: 'Menu1',
  808. component: '##',
  809. status: Mock.Random.integer(0, 1),
  810. id: 7,
  811. redirect: '/level/menu1/menu1-1/menu1-1-1',
  812. meta: {
  813. title: '菜单1'
  814. },
  815. children: [
  816. {
  817. path: 'menu1-1',
  818. name: 'Menu11',
  819. component: '##',
  820. status: Mock.Random.integer(0, 1),
  821. id: 8,
  822. redirect: '/level/menu1/menu1-1/menu1-1-1',
  823. meta: {
  824. title: '菜单1-1',
  825. alwaysShow: true
  826. },
  827. children: [
  828. {
  829. path: 'menu1-1-1',
  830. name: 'Menu111',
  831. component: 'views/Level/Menu111',
  832. status: Mock.Random.integer(0, 1),
  833. id: 9,
  834. permission: ['edit', 'add', 'delete'],
  835. meta: {
  836. title: '菜单1-1-1',
  837. permission: ['edit', 'add', 'delete']
  838. }
  839. }
  840. ]
  841. },
  842. {
  843. path: 'menu1-2',
  844. name: 'Menu12',
  845. component: 'views/Level/Menu12',
  846. status: Mock.Random.integer(0, 1),
  847. id: 10,
  848. permission: ['edit', 'add', 'delete'],
  849. meta: {
  850. title: '菜单1-2',
  851. permission: ['edit', 'add', 'delete']
  852. }
  853. }
  854. ]
  855. },
  856. {
  857. path: 'menu2',
  858. name: 'Menu2Demo',
  859. component: 'views/Level/Menu2',
  860. status: Mock.Random.integer(0, 1),
  861. id: 11,
  862. permission: ['edit', 'add', 'delete'],
  863. meta: {
  864. title: '菜单2',
  865. permission: ['edit', 'add', 'delete']
  866. }
  867. }
  868. ]
  869. }
  870. ],
  871. [
  872. {
  873. path: '/example',
  874. component: '#',
  875. redirect: '/example/example-dialog',
  876. name: 'Example',
  877. status: Mock.Random.integer(0, 1),
  878. id: 12,
  879. meta: {
  880. title: '综合示例',
  881. icon: 'ep:management',
  882. alwaysShow: true
  883. },
  884. children: [
  885. {
  886. path: 'example-detail',
  887. component: 'views/Example/Page/ExampleDetail',
  888. name: 'ExampleDetail',
  889. status: Mock.Random.integer(0, 1),
  890. id: 17,
  891. permission: ['edit', 'add', 'delete'],
  892. meta: {
  893. title: '综合示例-详情',
  894. noTagsView: true,
  895. noCache: true,
  896. hidden: true,
  897. canTo: true,
  898. activeMenu: '/example/example-page',
  899. permission: ['edit', 'add', 'delete']
  900. }
  901. }
  902. ]
  903. }
  904. ]
  905. ]
  906. for (let i = 0; i < 4; i++) {
  907. List.push(
  908. Mock.mock({
  909. id: toAnyString(),
  910. // timestamp: +Mock.Random.date('T'),
  911. roleName: roleNames[i],
  912. role: '@first',
  913. status: Mock.Random.integer(0, 1),
  914. createTime: '@datetime',
  915. remark: '@cword(10, 15)',
  916. menu: menus[i]
  917. })
  918. )
  919. }
  920. export default [
  921. // 列表接口
  922. {
  923. url: '/role/list',
  924. method: 'get',
  925. timeout,
  926. response: ({ query }) => {
  927. const { roleName } = query
  928. return {
  929. data: {
  930. code: code,
  931. data: roleName === 'admin' ? adminList : testList
  932. }
  933. }
  934. }
  935. },
  936. {
  937. url: '/role/table',
  938. method: 'get',
  939. timeout,
  940. response: () => {
  941. return {
  942. data: {
  943. code: code,
  944. data: {
  945. list: List,
  946. total: 4
  947. }
  948. }
  949. }
  950. }
  951. }
  952. ] as MockMethod[]