route.ts 27 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028
  1. import { RouteRecordRaw } from 'vue-router';
  2. /**
  3. * 路由meta对象参数说明
  4. * meta: {
  5. * title: 菜单栏及 tagsView 栏、菜单搜索名称(国际化)
  6. * isLink: 是否超链接菜单,开启外链条件,`1、isLink:true 2、链接地址不为空`
  7. * isHide: 是否隐藏此路由
  8. * isKeepAlive: 是否缓存组件状态
  9. * isAffix: 是否固定在 tagsView 栏上
  10. * isIframe: 是否内嵌窗口,,开启条件,`1、isIframe:true 2、链接地址不为空`
  11. * roles: 当前路由权限标识,取角色管理。控制路由显示、隐藏。超级管理员:admin 普通角色:common
  12. * icon: 菜单、tagsView 图标,阿里:加 `iconfont xxx`,fontawesome:加 `fa xxx`
  13. * }
  14. */
  15. /**
  16. * 定义动态路由
  17. * @description 未开启 isRequestRoutes 为 true 时使用(前端控制路由),开启时第一个顶级 children 的路由将被替换成接口请求回来的路由数据
  18. * @description 各字段请查看 `/@/views/system/menu/component/addMenu.vue 下的 ruleForm`
  19. * @returns 返回路由菜单数据
  20. */
  21. export const dynamicRoutes: Array<RouteRecordRaw> = [
  22. {
  23. path: '/',
  24. name: '/',
  25. component: () => import('/@/layout/index.vue'),
  26. redirect: '/home',
  27. meta: {
  28. isKeepAlive: true,
  29. },
  30. children: [
  31. // {
  32. // path: '/home',
  33. // name: 'home',
  34. // component: () => import('/@/views/home/index.vue'),
  35. // meta: {
  36. // title: 'message.router.home',
  37. // isLink: '',
  38. // isHide: false,
  39. // isKeepAlive: true,
  40. // isAffix: true,
  41. // isIframe: false,
  42. // roles: ['admin', 'common'],
  43. // icon: 'iconfont icon-shouye',
  44. // },
  45. // },
  46. {
  47. path: '/personal',
  48. name: 'personal',
  49. component: () => import('/@/views/personal/index.vue'),
  50. meta: {
  51. title: 'message.router.personal',
  52. isLink: '',
  53. isHide: true,
  54. isKeepAlive: true,
  55. isAffix: false,
  56. isIframe: false,
  57. roles: ['admin', 'common'],
  58. icon: 'iconfont icon-gerenzhongxin',
  59. },
  60. },
  61. {
  62. path: '/404',
  63. name: 'notFound',
  64. component: () => import('/@/views/error/404.vue'),
  65. meta: {
  66. title: 'message.staticRoutes.notFound',
  67. isLink: '',
  68. isHide: true,
  69. isKeepAlive: true,
  70. isAffix: false,
  71. isIframe: false,
  72. },
  73. },
  74. {
  75. path: '/401',
  76. name: 'noPower',
  77. component: () => import('/@/views/error/401.vue'),
  78. meta: {
  79. title: 'message.staticRoutes.noPower',
  80. isLink: '',
  81. isHide: true,
  82. isKeepAlive: true,
  83. isAffix: false,
  84. isIframe: false,
  85. },
  86. },
  87. ],
  88. },
  89. ];
  90. export const demoRoutes: Array<RouteRecordRaw> = [
  91. {
  92. path: '/demo',
  93. name: 'demo',
  94. component: () => import('/@/layout/routerView/parent.vue'),
  95. redirect: '/demo/system/menu',
  96. meta: {
  97. title: '案例演示',
  98. isLink: '',
  99. isHide: true,
  100. isKeepAlive: true,
  101. isAffix: false,
  102. isIframe: false,
  103. roles: ['admin'],
  104. icon: 'iconfont icon-diannao',
  105. },
  106. children: [
  107. {
  108. path: '/demo/menu',
  109. name: 'menu',
  110. component: () => import('/@/layout/routerView/parent.vue'),
  111. redirect: '/menu/menu1',
  112. meta: {
  113. title: 'message.router.menu',
  114. isLink: '',
  115. isHide: false,
  116. isKeepAlive: true,
  117. isAffix: false,
  118. isIframe: false,
  119. roles: ['admin', 'common'],
  120. icon: 'iconfont icon-caidan',
  121. },
  122. children: [
  123. {
  124. path: '/demo/menu/menu1',
  125. name: 'menu1',
  126. component: () => import('/@/layout/routerView/parent.vue'),
  127. redirect: '/menu/menu1/menu11',
  128. meta: {
  129. title: 'message.router.menu1',
  130. isLink: '',
  131. isHide: false,
  132. isKeepAlive: true,
  133. isAffix: false,
  134. isIframe: false,
  135. roles: ['admin', 'common'],
  136. icon: 'iconfont icon-caidan',
  137. },
  138. children: [
  139. {
  140. path: '/demo/menu/menu1/menu11',
  141. name: 'menu11',
  142. component: () => import('/@/views/demo/menu/menu1/menu11/index.vue'),
  143. meta: {
  144. title: 'message.router.menu11',
  145. isLink: '',
  146. isHide: false,
  147. isKeepAlive: true,
  148. isAffix: false,
  149. isIframe: false,
  150. roles: ['admin', 'common'],
  151. icon: 'iconfont icon-caidan',
  152. },
  153. },
  154. {
  155. path: '/demo/menu/menu1/menu12',
  156. name: 'menu12',
  157. component: () => import('/@/layout/routerView/parent.vue'),
  158. redirect: '/menu/menu1/menu12/menu121',
  159. meta: {
  160. title: 'message.router.menu12',
  161. isLink: '',
  162. isHide: false,
  163. isKeepAlive: true,
  164. isAffix: false,
  165. isIframe: false,
  166. roles: ['admin', 'common'],
  167. icon: 'iconfont icon-caidan',
  168. },
  169. children: [
  170. {
  171. path: '/demo/menu/menu1/menu12/menu121',
  172. name: 'menu121',
  173. component: () => import('/@/views/demo/menu/menu1/menu12/menu121/index.vue'),
  174. meta: {
  175. title: 'message.router.menu121',
  176. isLink: '',
  177. isHide: false,
  178. isKeepAlive: true,
  179. isAffix: false,
  180. isIframe: false,
  181. roles: ['admin', 'common'],
  182. icon: 'iconfont icon-caidan',
  183. },
  184. },
  185. {
  186. path: '/demo/menu/menu1/menu12/menu122',
  187. name: 'menu122',
  188. component: () => import('/@/views/demo/menu/menu1/menu12/menu122/index.vue'),
  189. meta: {
  190. title: 'message.router.menu122',
  191. isLink: '',
  192. isHide: false,
  193. isKeepAlive: true,
  194. isAffix: false,
  195. isIframe: false,
  196. roles: ['admin', 'common'],
  197. icon: 'iconfont icon-caidan',
  198. },
  199. },
  200. ],
  201. },
  202. {
  203. path: '/demo/menu/menu1/menu13',
  204. name: 'menu13',
  205. component: () => import('/@/views/demo/menu/menu1/menu13/index.vue'),
  206. meta: {
  207. title: 'message.router.menu13',
  208. isLink: '',
  209. isHide: false,
  210. isKeepAlive: true,
  211. isAffix: false,
  212. isIframe: false,
  213. roles: ['admin', 'common'],
  214. icon: 'iconfont icon-caidan',
  215. },
  216. },
  217. ],
  218. },
  219. {
  220. path: '/demo/menu/menu2',
  221. name: 'menu2',
  222. component: () => import('/@/views/demo/menu/menu2/index.vue'),
  223. meta: {
  224. title: 'message.router.menu2',
  225. isLink: '',
  226. isHide: false,
  227. isKeepAlive: true,
  228. isAffix: false,
  229. isIframe: false,
  230. roles: ['admin', 'common'],
  231. icon: 'iconfont icon-caidan',
  232. },
  233. },
  234. ],
  235. },
  236. {
  237. path: '/demo/fun',
  238. name: 'funIndex',
  239. component: () => import('/@/layout/routerView/parent.vue'),
  240. redirect: '/fun/tagsView',
  241. meta: {
  242. title: 'message.router.funIndex',
  243. isLink: '',
  244. isHide: false,
  245. isKeepAlive: true,
  246. isAffix: false,
  247. isIframe: false,
  248. roles: ['admin', 'common'],
  249. icon: 'iconfont icon-crew_feature',
  250. },
  251. children: [
  252. {
  253. path: '/demo/fun/tagsView',
  254. name: 'funTagsView',
  255. component: () => import('/@/views/demo/fun/tagsView/index.vue'),
  256. meta: {
  257. title: 'message.router.funTagsView',
  258. isLink: '',
  259. isHide: false,
  260. isKeepAlive: true,
  261. isAffix: false,
  262. isIframe: false,
  263. roles: ['admin', 'common'],
  264. icon: 'ele-Pointer',
  265. },
  266. },
  267. {
  268. path: '/demo/fun/countup',
  269. name: 'funCountup',
  270. component: () => import('/@/views/demo/fun/countup/index.vue'),
  271. meta: {
  272. title: 'message.router.funCountup',
  273. isLink: '',
  274. isHide: false,
  275. isKeepAlive: true,
  276. isAffix: false,
  277. isIframe: false,
  278. roles: ['admin', 'common'],
  279. icon: 'ele-Odometer',
  280. },
  281. },
  282. {
  283. path: '/demo/fun/wangEditor',
  284. name: 'funWangEditor',
  285. component: () => import('/@/views/demo/fun/wangEditor/index.vue'),
  286. meta: {
  287. title: 'message.router.funWangEditor',
  288. isLink: '',
  289. isHide: false,
  290. isKeepAlive: true,
  291. isAffix: false,
  292. isIframe: false,
  293. roles: ['admin', 'common'],
  294. icon: 'iconfont icon-fuwenbenkuang',
  295. },
  296. },
  297. {
  298. path: '/demo/fun/cropper',
  299. name: 'funCropper',
  300. component: () => import('/@/views/demo/fun/cropper/index.vue'),
  301. meta: {
  302. title: 'message.router.funCropper',
  303. isLink: '',
  304. isHide: false,
  305. isKeepAlive: true,
  306. isAffix: false,
  307. isIframe: false,
  308. roles: ['admin', 'common'],
  309. icon: 'iconfont icon-caijian',
  310. },
  311. },
  312. {
  313. path: '/demo/fun/qrcode',
  314. name: 'funQrcode',
  315. component: () => import('/@/views/demo/fun/qrcode/index.vue'),
  316. meta: {
  317. title: 'message.router.funQrcode',
  318. isLink: '',
  319. isHide: false,
  320. isKeepAlive: true,
  321. isAffix: false,
  322. isIframe: false,
  323. roles: ['admin', 'common'],
  324. icon: 'iconfont icon-ico',
  325. },
  326. },
  327. {
  328. path: '/demo/fun/echartsMap',
  329. name: 'funEchartsMap',
  330. component: () => import('/@/views/demo/fun/echartsMap/index.vue'),
  331. meta: {
  332. title: 'message.router.funEchartsMap',
  333. isLink: '',
  334. isHide: false,
  335. isKeepAlive: true,
  336. isAffix: false,
  337. isIframe: false,
  338. roles: ['admin', 'common'],
  339. icon: 'iconfont icon-ditu',
  340. },
  341. },
  342. {
  343. path: '/demo/fun/printJs',
  344. name: 'funPrintJs',
  345. component: () => import('/@/views/demo/fun/printJs/index.vue'),
  346. meta: {
  347. title: 'message.router.funPrintJs',
  348. isLink: '',
  349. isHide: false,
  350. isKeepAlive: true,
  351. isAffix: false,
  352. isIframe: false,
  353. roles: ['admin', 'common'],
  354. icon: 'ele-Printer',
  355. },
  356. },
  357. {
  358. path: '/demo/fun/clipboard',
  359. name: 'funClipboard',
  360. component: () => import('/@/views/demo/fun/clipboard/index.vue'),
  361. meta: {
  362. title: 'message.router.funClipboard',
  363. isLink: '',
  364. isHide: false,
  365. isKeepAlive: true,
  366. isAffix: false,
  367. isIframe: false,
  368. roles: ['admin', 'common'],
  369. icon: 'ele-DocumentCopy',
  370. },
  371. },
  372. {
  373. path: '/demo/fun/gridLayout',
  374. name: 'funGridLayout',
  375. component: () => import('/@/views/demo/fun/gridLayout/index.vue'),
  376. meta: {
  377. title: 'message.router.funGridLayout',
  378. isLink: '',
  379. isHide: false,
  380. isKeepAlive: true,
  381. isAffix: false,
  382. isIframe: false,
  383. roles: ['admin', 'common'],
  384. icon: 'iconfont icon-tuodong',
  385. },
  386. },
  387. {
  388. path: '/demo/fun/splitpanes',
  389. name: 'funSplitpanes',
  390. component: () => import('/@/views/demo/fun/splitpanes/index.vue'),
  391. meta: {
  392. title: 'message.router.funSplitpanes',
  393. isLink: '',
  394. isHide: false,
  395. isKeepAlive: true,
  396. isAffix: false,
  397. isIframe: false,
  398. roles: ['admin', 'common'],
  399. icon: 'iconfont icon--chaifenlie',
  400. },
  401. },
  402. ],
  403. },
  404. {
  405. path: '/demo/pages',
  406. name: 'pagesIndex',
  407. component: () => import('/@/layout/routerView/parent.vue'),
  408. redirect: '/pages/filtering',
  409. meta: {
  410. title: 'message.router.pagesIndex',
  411. isLink: '',
  412. isHide: false,
  413. isKeepAlive: true,
  414. isAffix: false,
  415. isIframe: false,
  416. roles: ['admin', 'common'],
  417. icon: 'iconfont icon-fuzhiyemian',
  418. },
  419. children: [
  420. {
  421. path: '/demo/pages/filtering',
  422. name: 'pagesFiltering',
  423. component: () => import('/@/views/demo/pages/filtering/index.vue'),
  424. meta: {
  425. title: 'message.router.pagesFiltering',
  426. isLink: '',
  427. isHide: false,
  428. isKeepAlive: true,
  429. isAffix: false,
  430. isIframe: false,
  431. roles: ['admin', 'common'],
  432. icon: 'ele-Sell',
  433. },
  434. /**
  435. * 注意此处详情写法:
  436. * 1、嵌套进父级里时,面包屑显示为:首页/页面/过滤筛选组件/过滤筛选组件详情
  437. * 2、不嵌套进父级时,面包屑显示为:首页/页面/过滤筛选组件/过滤筛选组件详情
  438. * 3、想要父级不高亮,面包屑显示为:首页/页面/过滤筛选组件详情,设置路径为:/pages/filteringDetails
  439. */
  440. children: [
  441. {
  442. path: '/demo/pages/filtering/details',
  443. name: 'pagesFilteringDetails',
  444. component: () => import('/@/views/demo/pages/filtering/details.vue'),
  445. meta: {
  446. title: 'message.router.pagesFilteringDetails',
  447. isLink: '',
  448. isHide: true,
  449. isKeepAlive: false,
  450. isAffix: false,
  451. isIframe: false,
  452. roles: ['admin', 'common'],
  453. icon: 'ele-Sunny',
  454. },
  455. },
  456. ],
  457. },
  458. {
  459. path: '/demo/pages/filtering/details1',
  460. name: 'pagesFilteringDetails1',
  461. component: () => import('/@/views/demo/pages/filtering/details1.vue'),
  462. meta: {
  463. title: 'message.router.pagesFilteringDetails1',
  464. isLink: '',
  465. isHide: true,
  466. isKeepAlive: false,
  467. isAffix: false,
  468. isIframe: false,
  469. roles: ['admin', 'common'],
  470. icon: 'ele-Sunny',
  471. },
  472. },
  473. {
  474. path: '/demo/pages/iocnfont',
  475. name: 'pagesIocnfont',
  476. component: () => import('/@/views/demo/pages/iocnfont/index.vue'),
  477. meta: {
  478. title: 'message.router.pagesIocnfont',
  479. isLink: '',
  480. isHide: false,
  481. isKeepAlive: true,
  482. isAffix: false,
  483. isIframe: false,
  484. roles: ['admin', 'common'],
  485. icon: 'ele-Present',
  486. },
  487. },
  488. {
  489. path: '/demo/pages/element',
  490. name: 'pagesElement',
  491. component: () => import('/@/views/demo/pages/element/index.vue'),
  492. meta: {
  493. title: 'message.router.pagesElement',
  494. isLink: '',
  495. isHide: false,
  496. isKeepAlive: true,
  497. isAffix: false,
  498. isIframe: false,
  499. roles: ['admin', 'common'],
  500. icon: 'ele-Eleme',
  501. },
  502. },
  503. {
  504. path: '/demo/pages/awesome',
  505. name: 'pagesAwesome',
  506. component: () => import('/@/views/demo/pages/awesome/index.vue'),
  507. meta: {
  508. title: 'message.router.pagesAwesome',
  509. isLink: '',
  510. isHide: false,
  511. isKeepAlive: true,
  512. isAffix: false,
  513. isIframe: false,
  514. roles: ['admin', 'common'],
  515. icon: 'ele-SetUp',
  516. },
  517. },
  518. {
  519. path: '/demo/pages/formAdapt',
  520. name: 'pagesFormAdapt',
  521. component: () => import('/@/views/demo/pages/formAdapt/index.vue'),
  522. meta: {
  523. title: 'message.router.pagesFormAdapt',
  524. isLink: '',
  525. isHide: false,
  526. isKeepAlive: true,
  527. isAffix: false,
  528. isIframe: false,
  529. roles: ['admin', 'common'],
  530. icon: 'iconfont icon-biaodan',
  531. },
  532. },
  533. {
  534. path: '/demo/pages/tableRules',
  535. name: 'pagesTableRules',
  536. component: () => import('/@/views/demo/pages/tableRules/index.vue'),
  537. meta: {
  538. title: 'message.router.pagesTableRules',
  539. isLink: '',
  540. isHide: false,
  541. isKeepAlive: true,
  542. isAffix: false,
  543. isIframe: false,
  544. roles: ['admin', 'common'],
  545. icon: 'iconfont icon-jiliandongxuanzeqi',
  546. },
  547. },
  548. {
  549. path: '/demo/pages/formI18n',
  550. name: 'pagesFormI18n',
  551. component: () => import('/@/views/demo/pages/formI18n/index.vue'),
  552. meta: {
  553. title: 'message.router.pagesFormI18n',
  554. isLink: '',
  555. isHide: false,
  556. isKeepAlive: true,
  557. isAffix: false,
  558. isIframe: false,
  559. roles: ['admin', 'common'],
  560. icon: 'iconfont icon-diqiu',
  561. },
  562. },
  563. {
  564. path: '/demo/pages/formRules',
  565. name: 'pagesFormRules',
  566. component: () => import('/@/views/demo/pages/formRules/index.vue'),
  567. meta: {
  568. title: 'message.router.pagesFormRules',
  569. isLink: '',
  570. isHide: false,
  571. isKeepAlive: true,
  572. isAffix: false,
  573. isIframe: false,
  574. roles: ['admin', 'common'],
  575. icon: 'iconfont icon-shuxing',
  576. },
  577. },
  578. {
  579. path: '/demo/pages/listAdapt',
  580. name: 'pagesListAdapt',
  581. component: () => import('/@/views/demo/pages/listAdapt/index.vue'),
  582. meta: {
  583. title: 'message.router.pagesListAdapt',
  584. isLink: '',
  585. isHide: false,
  586. isKeepAlive: true,
  587. isAffix: false,
  588. isIframe: false,
  589. roles: ['admin', 'common'],
  590. icon: 'iconfont icon-chazhaobiaodanliebiao',
  591. },
  592. },
  593. {
  594. path: '/demo/pages/waterfall',
  595. name: 'pagesWaterfall',
  596. component: () => import('/@/views/demo/pages/waterfall/index.vue'),
  597. meta: {
  598. title: 'message.router.pagesWaterfall',
  599. isLink: '',
  600. isHide: false,
  601. isKeepAlive: true,
  602. isAffix: false,
  603. isIframe: false,
  604. roles: ['admin', 'common'],
  605. icon: 'iconfont icon-zidingyibuju',
  606. },
  607. },
  608. {
  609. path: '/demo/pages/steps',
  610. name: 'pagesSteps',
  611. component: () => import('/@/views/demo/pages/steps/index.vue'),
  612. meta: {
  613. title: 'message.router.pagesSteps',
  614. isLink: '',
  615. isHide: false,
  616. isKeepAlive: true,
  617. isAffix: false,
  618. isIframe: false,
  619. roles: ['admin', 'common'],
  620. icon: 'iconfont icon-step',
  621. },
  622. },
  623. {
  624. path: '/demo/pages/preview',
  625. name: 'pagesPreview',
  626. component: () => import('/@/views/demo/pages/preview/index.vue'),
  627. meta: {
  628. title: 'message.router.pagesPreview',
  629. isLink: '',
  630. isHide: false,
  631. isKeepAlive: true,
  632. isAffix: false,
  633. isIframe: false,
  634. roles: ['admin', 'common'],
  635. icon: 'iconfont icon-15tupianyulan',
  636. },
  637. },
  638. {
  639. path: '/demo/pages/waves',
  640. name: 'pagesWaves',
  641. component: () => import('/@/views/demo/pages/waves/index.vue'),
  642. meta: {
  643. title: 'message.router.pagesWaves',
  644. isLink: '',
  645. isHide: false,
  646. isKeepAlive: true,
  647. isAffix: false,
  648. isIframe: false,
  649. roles: ['admin', 'common'],
  650. icon: 'iconfont icon-bolangneng',
  651. },
  652. },
  653. {
  654. path: '/demo/pages/tree',
  655. name: 'pagesTree',
  656. component: () => import('/@/views/demo/pages/tree/index.vue'),
  657. meta: {
  658. title: 'message.router.pagesTree',
  659. isLink: '',
  660. isHide: false,
  661. isKeepAlive: true,
  662. isAffix: false,
  663. isIframe: false,
  664. roles: ['admin', 'common'],
  665. icon: 'iconfont icon-shuxingtu',
  666. },
  667. },
  668. {
  669. path: '/demo/pages/drag',
  670. name: 'pagesDrag',
  671. component: () => import('/@/views/demo/pages/drag/index.vue'),
  672. meta: {
  673. title: 'message.router.pagesDrag',
  674. isLink: '',
  675. isHide: false,
  676. isKeepAlive: true,
  677. isAffix: false,
  678. isIframe: false,
  679. roles: ['admin', 'common'],
  680. icon: 'ele-Pointer',
  681. },
  682. },
  683. {
  684. path: '/demo/pages/lazyImg',
  685. name: 'pagesLazyImg',
  686. component: () => import('/@/views/demo/pages/lazyImg/index.vue'),
  687. meta: {
  688. title: 'message.router.pagesLazyImg',
  689. isLink: '',
  690. isHide: false,
  691. isKeepAlive: true,
  692. isAffix: false,
  693. isIframe: false,
  694. roles: ['admin'],
  695. icon: 'ele-PictureFilled',
  696. },
  697. },
  698. {
  699. path: '/demo/pages/dynamicForm',
  700. name: 'pagesDynamicForm',
  701. component: () => import('/@/views/demo/pages/dynamicForm/index.vue'),
  702. meta: {
  703. title: 'message.router.pagesDynamicForm',
  704. isLink: '',
  705. isHide: false,
  706. isKeepAlive: true,
  707. isAffix: false,
  708. isIframe: false,
  709. roles: ['admin'],
  710. icon: 'iconfont icon-diannao',
  711. },
  712. },
  713. {
  714. path: '/demo/pages/workflow',
  715. name: 'pagesWorkflow',
  716. component: () => import('/@/views/demo/pages/workflow/index.vue'),
  717. meta: {
  718. title: 'message.router.pagesWorkflow',
  719. isLink: '',
  720. isHide: false,
  721. isKeepAlive: true,
  722. isAffix: false,
  723. isIframe: false,
  724. roles: ['admin'],
  725. icon: 'ele-Connection',
  726. },
  727. },
  728. ],
  729. },
  730. {
  731. path: '/demo/make',
  732. name: 'makeIndex',
  733. component: () => import('/@/layout/routerView/parent.vue'),
  734. redirect: '/make/selector',
  735. meta: {
  736. title: 'message.router.makeIndex',
  737. isLink: '',
  738. isHide: false,
  739. isKeepAlive: true,
  740. isAffix: false,
  741. isIframe: false,
  742. roles: ['admin'],
  743. icon: 'iconfont icon-siweidaotu',
  744. },
  745. children: [
  746. {
  747. path: '/demo/make/selector',
  748. name: 'makeSelector',
  749. component: () => import('/@/views/demo/make/selector/index.vue'),
  750. meta: {
  751. title: 'message.router.makeSelector',
  752. isLink: '',
  753. isHide: false,
  754. isKeepAlive: true,
  755. isAffix: false,
  756. isIframe: false,
  757. roles: ['admin', 'common'],
  758. icon: 'iconfont icon-xuanzeqi',
  759. },
  760. },
  761. {
  762. path: '/demo/make/noticeBar',
  763. name: 'makeNoticeBar',
  764. component: () => import('/@/views/demo/make/noticeBar/index.vue'),
  765. meta: {
  766. title: 'message.router.makeNoticeBar',
  767. isLink: '',
  768. isHide: false,
  769. isKeepAlive: true,
  770. isAffix: false,
  771. isIframe: false,
  772. roles: ['admin', 'common'],
  773. icon: 'ele-Bell',
  774. },
  775. },
  776. {
  777. path: '/demo/make/svgDemo',
  778. name: 'makeSvgDemo',
  779. component: () => import('/@/views/demo/make/svgDemo/index.vue'),
  780. meta: {
  781. title: 'message.router.makeSvgDemo',
  782. isLink: '',
  783. isHide: false,
  784. isKeepAlive: true,
  785. isAffix: false,
  786. isIframe: false,
  787. roles: ['admin', 'common'],
  788. icon: 'fa fa-thumbs-o-up',
  789. },
  790. },
  791. ],
  792. },
  793. {
  794. path: '/demo/params',
  795. name: 'paramsIndex',
  796. component: () => import('/@/layout/routerView/parent.vue'),
  797. redirect: '/params/common',
  798. meta: {
  799. title: 'message.router.paramsIndex',
  800. isLink: '',
  801. isHide: false,
  802. isKeepAlive: true,
  803. isAffix: false,
  804. isIframe: false,
  805. roles: ['admin'],
  806. icon: 'iconfont icon-zhongduancanshu',
  807. },
  808. children: [
  809. {
  810. path: '/demo/params/common',
  811. name: 'paramsCommon',
  812. component: () => import('/@/views/demo/params/common/index.vue'),
  813. meta: {
  814. title: 'message.router.paramsCommon',
  815. isLink: '',
  816. isHide: false,
  817. isKeepAlive: true,
  818. isAffix: false,
  819. isIframe: false,
  820. roles: ['admin'],
  821. icon: 'iconfont icon-putong',
  822. },
  823. },
  824. {
  825. path: '/demo/params/common/details',
  826. name: 'paramsCommonDetails',
  827. component: () => import('/@/views/demo/params/common/details.vue'),
  828. meta: {
  829. title: 'message.router.paramsCommonDetails',
  830. isLink: '',
  831. isHide: true,
  832. isKeepAlive: true,
  833. isAffix: false,
  834. isIframe: false,
  835. roles: ['admin'],
  836. icon: 'ele-Comment',
  837. },
  838. },
  839. {
  840. path: '/demo/params/dynamic',
  841. name: 'paramsDynamic',
  842. component: () => import('/@/views/demo/params/dynamic/index.vue'),
  843. meta: {
  844. title: 'message.router.paramsDynamic',
  845. isLink: '',
  846. isHide: false,
  847. isKeepAlive: true,
  848. isAffix: false,
  849. isIframe: false,
  850. roles: ['admin'],
  851. icon: 'iconfont icon-dongtai',
  852. },
  853. },
  854. {
  855. path: '/demo/params/dynamic/details/:t/:id',
  856. name: 'paramsDynamicDetails',
  857. component: () => import('/@/views/demo/params/dynamic/details.vue'),
  858. meta: {
  859. title: 'message.router.paramsDynamicDetails',
  860. isLink: '',
  861. isHide: true,
  862. isKeepAlive: true,
  863. isAffix: false,
  864. isIframe: false,
  865. roles: ['admin'],
  866. icon: 'ele-Lightning',
  867. },
  868. },
  869. ],
  870. },
  871. {
  872. path: '/demo/visualizing',
  873. name: 'visualizingIndex',
  874. component: () => import('/@/layout/routerView/parent.vue'),
  875. redirect: '/visualizing/visualizingLinkDemo1',
  876. meta: {
  877. title: 'message.router.visualizingIndex',
  878. isLink: '',
  879. isHide: false,
  880. isKeepAlive: true,
  881. isAffix: false,
  882. isIframe: false,
  883. roles: ['admin'],
  884. icon: 'ele-ChatLineRound',
  885. },
  886. children: [
  887. {
  888. path: '/demo/visualizing/visualizingLinkDemo1',
  889. name: 'visualizingLinkDemo1',
  890. component: () => import('/@/layout/routerView/link.vue'),
  891. meta: {
  892. title: 'message.router.visualizingLinkDemo1',
  893. isLink: `./#/visualizingDemo1`,
  894. isHide: false,
  895. isKeepAlive: false,
  896. isAffix: false,
  897. isIframe: false,
  898. roles: ['admin'],
  899. icon: 'iconfont icon-caozuo-wailian',
  900. },
  901. },
  902. {
  903. path: '/demo/visualizing/visualizingLinkDemo2',
  904. name: 'visualizingLinkDemo2',
  905. component: () => import('/@/layout/routerView/link.vue'),
  906. meta: {
  907. title: 'message.router.visualizingLinkDemo2',
  908. isLink: `./#/visualizingDemo2`,
  909. isHide: false,
  910. isKeepAlive: false,
  911. isAffix: false,
  912. isIframe: false,
  913. roles: ['admin'],
  914. icon: 'iconfont icon-caozuo-wailian',
  915. },
  916. },
  917. ],
  918. },
  919. {
  920. path: '/demo/chart',
  921. name: 'chartIndex',
  922. component: () => import('/@/views/demo/chart/index.vue'),
  923. meta: {
  924. title: 'message.router.chartIndex',
  925. isLink: '',
  926. isHide: false,
  927. isKeepAlive: true,
  928. isAffix: false,
  929. isIframe: false,
  930. roles: ['admin', 'common'],
  931. icon: 'iconfont icon-ico_shuju',
  932. },
  933. },
  934. {
  935. path: '/demo/tools',
  936. name: 'tools',
  937. component: () => import('/@/views/demo/tools/index.vue'),
  938. meta: {
  939. title: 'message.router.tools',
  940. isLink: '',
  941. isHide: false,
  942. isKeepAlive: true,
  943. isAffix: false,
  944. isIframe: false,
  945. roles: ['admin', 'common'],
  946. icon: 'iconfont icon-gongju',
  947. },
  948. },
  949. {
  950. path: '/demo/link',
  951. name: 'layoutLinkView',
  952. component: () => import('/@/layout/routerView/link.vue'),
  953. meta: {
  954. title: 'message.router.layoutLinkView',
  955. isLink: 'https://element-plus.gitee.io/#/zh-CN/component/installation',
  956. isHide: false,
  957. isKeepAlive: false,
  958. isAffix: false,
  959. isIframe: false,
  960. roles: ['admin'],
  961. icon: 'iconfont icon-caozuo-wailian',
  962. },
  963. },
  964. {
  965. path: '/demo/iframes',
  966. name: 'layoutIfameView',
  967. component: () => import('/@/layout/routerView/iframes.vue'),
  968. meta: {
  969. title: 'message.router.layoutIfameView',
  970. isLink: 'https://nodejs.org/zh-cn/',
  971. isHide: false,
  972. isKeepAlive: false,
  973. isAffix: false,
  974. isIframe: true,
  975. roles: ['admin'],
  976. icon: 'iconfont icon-neiqianshujuchucun',
  977. },
  978. },
  979. ],
  980. },
  981. ]
  982. /**
  983. * 定义静态路由
  984. * @description 前端控制直接改 dynamicRoutes 中的路由,后端控制不需要修改,请求接口路由数据时,会覆盖 dynamicRoutes 第一个顶级 children 的内容(全屏,不包含 layout 中的路由出口)
  985. * @returns 返回路由菜单数据
  986. */
  987. export const staticRoutes: Array<RouteRecordRaw> = [
  988. {
  989. path: '/login',
  990. name: 'login',
  991. component: () => import('/@/views/login/index.vue'),
  992. meta: {
  993. title: '登录',
  994. },
  995. },
  996. /**
  997. * 提示:写在这里的为全屏界面,不建议写在这里
  998. * 请写在 `dynamicRoutes` 路由数组中
  999. */
  1000. {
  1001. path: '/visualizingDemo1',
  1002. name: 'visualizingDemo1',
  1003. component: () => import('/@/views/demo/visualizing/demo1.vue'),
  1004. meta: {
  1005. title: 'message.router.visualizingLinkDemo1',
  1006. },
  1007. },
  1008. {
  1009. path: '/visualizingDemo2',
  1010. name: 'visualizingDemo2',
  1011. component: () => import('/@/views/demo/visualizing/demo2.vue'),
  1012. meta: {
  1013. title: 'message.router.visualizingLinkDemo2',
  1014. },
  1015. },
  1016. {
  1017. path: '/dbInit',
  1018. name: 'dbInit',
  1019. component: () => import('/@/views/dbInit/index.vue'),
  1020. meta: {
  1021. title: '系统初始化',
  1022. },
  1023. },
  1024. ];