feat.ts 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. import type { AppRouteModule } from '/@/router/types';
  2. import { getParentLayout, LAYOUT } from '/@/router/constant';
  3. import { t } from '/@/hooks/web/useI18n';
  4. const feat: AppRouteModule = {
  5. path: '/feat',
  6. name: 'FeatDemo',
  7. component: LAYOUT,
  8. redirect: '/feat/icon',
  9. meta: {
  10. icon: 'ion:git-compare-outline',
  11. title: t('routes.demo.feat.feat'),
  12. },
  13. children: [
  14. {
  15. path: 'icon',
  16. name: 'IconDemo',
  17. component: () => import('/@/views/demo/feat/icon/index.vue'),
  18. meta: {
  19. title: t('routes.demo.feat.icon'),
  20. },
  21. },
  22. {
  23. path: 'ws',
  24. name: 'WebSocket',
  25. component: () => import('/@/views/demo/feat/ws/index.vue'),
  26. meta: {
  27. title: t('routes.demo.feat.ws'),
  28. },
  29. },
  30. {
  31. path: 'print',
  32. name: 'Print',
  33. component: () => import('/@/views/demo/feat/print/index.vue'),
  34. meta: {
  35. title: t('routes.demo.feat.print'),
  36. },
  37. },
  38. {
  39. path: 'tabs',
  40. name: 'TabsDemo',
  41. component: () => import('/@/views/demo/feat/tabs/index.vue'),
  42. meta: {
  43. title: t('routes.demo.feat.tabs'),
  44. },
  45. },
  46. {
  47. path: 'breadcrumb',
  48. name: 'BreadcrumbDemo',
  49. redirect: '/feat/breadcrumb/flat',
  50. component: getParentLayout('BreadcrumbDemo'),
  51. meta: {
  52. title: t('routes.demo.feat.breadcrumb'),
  53. },
  54. children: [
  55. {
  56. path: 'flat',
  57. name: 'BreadcrumbFlatDemo',
  58. component: () => import('/@/views/demo/feat/breadcrumb/FlatList.vue'),
  59. meta: {
  60. title: t('routes.demo.feat.breadcrumbFlat'),
  61. },
  62. },
  63. {
  64. path: 'flatDetail',
  65. name: 'BreadcrumbFlatDetailDemo',
  66. component: () => import('/@/views/demo/feat/breadcrumb/FlatListDetail.vue'),
  67. meta: {
  68. title: t('routes.demo.feat.breadcrumbFlatDetail'),
  69. hideMenu: true,
  70. hideTab: true,
  71. currentActiveMenu: '/feat/breadcrumb/flat',
  72. },
  73. },
  74. {
  75. path: 'children',
  76. name: 'BreadcrumbChildrenDemo',
  77. component: getParentLayout('BreadcrumbChildrenDemo'),
  78. redirect: '/feat/breadcrumb/children',
  79. meta: {
  80. title: t('routes.demo.feat.breadcrumbFlat'),
  81. },
  82. children: [
  83. {
  84. path: '',
  85. name: 'BreadcrumbChildren',
  86. component: () => import('/@/views/demo/feat/breadcrumb/ChildrenList.vue'),
  87. meta: {
  88. title: t('routes.demo.feat.breadcrumbChildren'),
  89. // hideBreadcrumb: true,
  90. },
  91. },
  92. {
  93. path: 'childrenDetail',
  94. name: 'BreadcrumbChildrenDetailDemo',
  95. component: () => import('/@/views/demo/feat/breadcrumb/ChildrenListDetail.vue'),
  96. meta: {
  97. currentActiveMenu: '/feat/breadcrumb/children',
  98. title: t('routes.demo.feat.breadcrumbChildrenDetail'),
  99. hideTab: true,
  100. // hideMenu: true,
  101. },
  102. },
  103. ],
  104. },
  105. ],
  106. },
  107. {
  108. path: 'context-menu',
  109. name: 'ContextMenuDemo',
  110. component: () => import('/@/views/demo/feat/context-menu/index.vue'),
  111. meta: {
  112. title: t('routes.demo.feat.contextMenu'),
  113. },
  114. },
  115. {
  116. path: 'download',
  117. name: 'DownLoadDemo',
  118. component: () => import('/@/views/demo/feat/download/index.vue'),
  119. meta: {
  120. title: t('routes.demo.feat.download'),
  121. },
  122. },
  123. {
  124. path: 'click-out-side',
  125. name: 'ClickOutSideDemo',
  126. component: () => import('/@/views/demo/feat/click-out-side/index.vue'),
  127. meta: {
  128. title: t('routes.demo.feat.clickOutSide'),
  129. },
  130. },
  131. {
  132. path: 'img-preview',
  133. name: 'ImgPreview',
  134. component: () => import('/@/views/demo/feat/img-preview/index.vue'),
  135. meta: {
  136. title: t('routes.demo.feat.imgPreview'),
  137. },
  138. },
  139. {
  140. path: 'copy',
  141. name: 'CopyDemo',
  142. component: () => import('/@/views/demo/feat/copy/index.vue'),
  143. meta: {
  144. title: t('routes.demo.feat.copy'),
  145. },
  146. },
  147. {
  148. path: 'msg',
  149. name: 'MsgDemo',
  150. component: () => import('/@/views/demo/feat/msg/index.vue'),
  151. meta: {
  152. title: t('routes.demo.feat.msg'),
  153. },
  154. },
  155. {
  156. path: 'watermark',
  157. name: 'WatermarkDemo',
  158. component: () => import('/@/views/demo/feat/watermark/index.vue'),
  159. meta: {
  160. title: t('routes.demo.feat.watermark'),
  161. },
  162. },
  163. {
  164. path: 'ripple',
  165. name: 'RippleDemo',
  166. component: () => import('/@/views/demo/feat/ripple/index.vue'),
  167. meta: {
  168. title: t('routes.demo.feat.ripple'),
  169. },
  170. },
  171. {
  172. path: 'full-screen',
  173. name: 'FullScreenDemo',
  174. component: () => import('/@/views/demo/feat/full-screen/index.vue'),
  175. meta: {
  176. title: t('routes.demo.feat.fullScreen'),
  177. },
  178. },
  179. {
  180. path: 'error-log',
  181. name: 'ErrorLog',
  182. component: () => import('/@/views/sys/error-log/index.vue'),
  183. meta: {
  184. title: t('routes.demo.feat.errorLog'),
  185. },
  186. },
  187. {
  188. path: 'excel',
  189. name: 'Excel',
  190. redirect: '/feat/excel/customExport',
  191. component: getParentLayout('Excel'),
  192. meta: {
  193. // icon: 'mdi:microsoft-excel',
  194. title: t('routes.demo.excel.excel'),
  195. },
  196. children: [
  197. {
  198. path: 'customExport',
  199. name: 'CustomExport',
  200. component: () => import('/@/views/demo/excel/CustomExport.vue'),
  201. meta: {
  202. title: t('routes.demo.excel.customExport'),
  203. },
  204. },
  205. {
  206. path: 'jsonExport',
  207. name: 'JsonExport',
  208. component: () => import('/@/views/demo/excel/JsonExport.vue'),
  209. meta: {
  210. title: t('routes.demo.excel.jsonExport'),
  211. },
  212. },
  213. {
  214. path: 'arrayExport',
  215. name: 'ArrayExport',
  216. component: () => import('/@/views/demo/excel/ArrayExport.vue'),
  217. meta: {
  218. title: t('routes.demo.excel.arrayExport'),
  219. },
  220. },
  221. {
  222. path: 'importExcel',
  223. name: 'ImportExcel',
  224. component: () => import('/@/views/demo/excel/ImportExcel.vue'),
  225. meta: {
  226. title: t('routes.demo.excel.importExcel'),
  227. },
  228. },
  229. ],
  230. },
  231. {
  232. path: 'testTab/:id',
  233. name: 'TestTab',
  234. component: () => import('/@/views/demo/feat/tab-params/index.vue'),
  235. meta: {
  236. title: t('routes.demo.feat.tab'),
  237. carryParam: true,
  238. },
  239. },
  240. ],
  241. };
  242. export default feat;