remaining.ts 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972
  1. import { Layout } from '@/utils/routerHelper'
  2. const { t } = useI18n()
  3. /**
  4. * redirect: noredirect 当设置 noredirect 的时候该路由在面包屑导航中不可被点击
  5. * name:'router-name' 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
  6. * meta : {
  7. hidden: true 当设置 true 的时候该路由不会再侧边栏出现 如404,login等页面(默认 false)
  8. alwaysShow: true 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式,
  9. 只有一个时,会将那个子路由当做根路由显示在侧边栏,
  10. 若你想不管路由下面的 children 声明的个数都显示你的根路由,
  11. 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,
  12. 一直显示根路由(默认 false)
  13. title: 'title' 设置该路由在侧边栏和面包屑中展示的名字
  14. icon: 'svg-name' 设置该路由的图标
  15. noCache: true 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
  16. breadcrumb: false 如果设置为false,则不会在breadcrumb面包屑中显示(默认 true)
  17. affix: true 如果设置为true,则会一直固定在tag项中(默认 false)
  18. noTagsView: true 如果设置为true,则不会出现在tag中(默认 false)
  19. activeMenu: '/dashboard' 显示高亮的路由路径
  20. followAuth: '/dashboard' 跟随哪个路由进行权限过滤
  21. canTo: true 设置为true即使hidden为true,也依然可以进行路由跳转(默认 false)
  22. }
  23. **/
  24. const remainingRouter: AppRouteRecordRaw[] = [
  25. {
  26. path: '/redirect',
  27. component: Layout,
  28. name: 'Redirect',
  29. children: [
  30. {
  31. path: '/redirect/:path(.*)',
  32. name: 'Redirect',
  33. component: () => import('@/views/Redirect/Redirect.vue'),
  34. meta: {}
  35. }
  36. ],
  37. meta: {
  38. hidden: true,
  39. noTagsView: true
  40. }
  41. },
  42. {
  43. path: '/',
  44. component: Layout,
  45. redirect: '/index',
  46. name: 'Home',
  47. meta: {},
  48. children: [
  49. {
  50. path: 'index',
  51. component: () => import('@/views/Home/Index.vue'),
  52. name: 'Index',
  53. meta: {
  54. title: t('router.home'),
  55. icon: 'ep:home-filled',
  56. noCache: false,
  57. affix: true
  58. }
  59. }
  60. ]
  61. },
  62. {
  63. path: '/dingding',
  64. name: 'dingtalk',
  65. component: () => import('@/views/pms/dingding.vue'),
  66. meta:{
  67. hidden: true,
  68. }
  69. },
  70. {
  71. path: '/deviceattrstemplate',
  72. component: Layout,
  73. name: 'DeviceAttrsCenter',
  74. meta: {
  75. hidden: true,
  76. keepAlive: true
  77. },
  78. children: [
  79. {
  80. path: 'template/detail/:id/:templateName/:categoryName',
  81. component: () => import('@/views/pms/devicetemplate/detail/attrsModel/index.vue'),
  82. name: 'DeviceAttrTemplateModel',
  83. meta: {
  84. keepAlive: true,
  85. title: t('rem.DeviceAttrTemplateModel'),
  86. noCache: false,
  87. hidden: true,
  88. canTo: true,
  89. activeMenu: '/template/info'
  90. }
  91. },
  92. {
  93. path: 'templates',
  94. component: () => import('@/views/pms/devicetemplate/index.vue'),
  95. name: 'DeviceAttrsTemplate',
  96. meta: {
  97. keepAlive: true,
  98. title: t('rem.AttrTemplates'),
  99. noCache: false,
  100. hidden: true,
  101. canTo: true,
  102. activeMenu: '/templates'
  103. }
  104. }
  105. ]
  106. },
  107. {
  108. path: '/projectTaskAttrsTemplate',
  109. component: Layout,
  110. name: 'TaskAttrsTemplateCenter',
  111. meta: {
  112. hidden: true,
  113. keepAlive: true
  114. },
  115. children: [
  116. {
  117. path: 'template/attrs/:deptId/:templateName/:deptName',
  118. component: () => import('@/views/pms/iotprojecttasktemplate/detail/index.vue'),
  119. name: 'ProjectTaskTemplateAttrs',
  120. meta: {
  121. keepAlive: true,
  122. title: t('project.taskAttrDetail'),
  123. noCache: false,
  124. hidden: true,
  125. canTo: true,
  126. activeMenu: '/template/info'
  127. }
  128. },
  129. ]
  130. },
  131. {
  132. path: '/devicecategoryboms',
  133. component: Layout,
  134. name: 'DeviceCategoryBomCenter',
  135. meta: {
  136. hidden: true,
  137. keepAlive: true
  138. },
  139. children: [
  140. {
  141. path: 'boms',
  142. component: () => import('@/views/pms/bom/index.vue'),
  143. name: 'Bom',
  144. meta: {
  145. keepAlive: true,
  146. title: t('rem.AttrTemplates'),
  147. noCache: false,
  148. hidden: true,
  149. canTo: true,
  150. activeMenu: '/boms'
  151. }
  152. }
  153. ]
  154. },
  155. {
  156. path: '/devicetrends',
  157. component: Layout,
  158. name: 'DeviceTrendsCenter',
  159. meta: {
  160. hidden: true,
  161. keepAlive: true
  162. },
  163. children: [
  164. {
  165. path: 'devicepersons',
  166. component: () => import('@/views/pms/device/personlog/DevicePerson.vue'),
  167. name: 'IotDevicePerson',
  168. meta: {
  169. keepAlive: true,
  170. title: t('rem.EquipmentResponsiblePerson'),
  171. noCache: false,
  172. hidden: true,
  173. canTo: true,
  174. activeMenu: '/devicepersons'
  175. }
  176. },
  177. {
  178. path: 'allotlogs',
  179. component: () => import('@/views/pms/device/allotlog/DeviceAllot.vue'),
  180. name: 'IotDeviceAllot',
  181. meta: {
  182. keepAlive: true,
  183. title: t('rem.EquipmentAllocation'),
  184. noCache: false,
  185. hidden: true,
  186. canTo: true,
  187. activeMenu: '/allotlogs'
  188. }
  189. },
  190. {
  191. path: 'statuslogs',
  192. component: () => import('@/views/pms/device/statuslog/DeviceStatus.vue'),
  193. name: 'IotDeviceStatus',
  194. meta: {
  195. keepAlive: true,
  196. title: t('devicePerson.status'),
  197. noCache: false,
  198. hidden: true,
  199. canTo: true,
  200. activeMenu: '/statuslogs'
  201. }
  202. }
  203. ]
  204. },
  205. {
  206. path: '/materials',
  207. component: Layout,
  208. name: 'MaterialsCenter',
  209. meta: {
  210. hidden: true,
  211. keepAlive: true
  212. },
  213. children: [
  214. {
  215. path: 'materials',
  216. component: () => import('@/views/pms/material/index.vue'),
  217. name: 'Material',
  218. meta: {
  219. keepAlive: true,
  220. title: t('rem.MaterialManagement'),
  221. noCache: false,
  222. hidden: true,
  223. canTo: true,
  224. activeMenu: '/materials'
  225. }
  226. }
  227. ]
  228. },
  229. {
  230. path: '/modelattrstemplate',
  231. component: Layout,
  232. name: 'ModelAttrsCenter',
  233. meta: {
  234. hidden: true
  235. },
  236. children: [
  237. {
  238. path: 'template/detail/:id',
  239. component: () => import('@/views/pms/modeltemplate/detail/attrsModel/index.vue'),
  240. name: 'ModelAttrTemplate',
  241. meta: {
  242. title: t('rem.AttributeInformationDetails'),
  243. noCache: false,
  244. hidden: true,
  245. canTo: true,
  246. activeMenu: '/template/info'
  247. }
  248. }
  249. ]
  250. },
  251. {
  252. path: '/iotProjectInfo',
  253. component: Layout,
  254. name: 'IotProjectInfo',
  255. meta: {
  256. hidden: true
  257. },
  258. children: [
  259. {
  260. path: 'project/info/:type/:id?(\\d+)',
  261. component: () => import('@/views/pms/iotprojectinfo/IotProjectInfoForm.vue'),
  262. name: 'IotProjectInfo',
  263. meta: {
  264. title: t('rem.AddProjectInformation'),
  265. noCache: false,
  266. hidden: true,
  267. canTo: true,
  268. activeMenu: '/project/info'
  269. }
  270. }
  271. ]
  272. },
  273. {
  274. path: '/iotProjectTask',
  275. component: Layout,
  276. name: 'IotProjectTaskInfo',
  277. meta: {
  278. hidden: true
  279. },
  280. children: [
  281. {
  282. path: 'project/task/:type/:id?(\\d+)/:projectId?',
  283. component: () => import('@/views/pms/iotprojecttask/IotProjectTaskForm.vue'),
  284. name: 'IotProjectTaskInfo',
  285. meta: {
  286. title: t('action.edit'),
  287. noCache: false,
  288. hidden: true,
  289. canTo: true,
  290. activeMenu: '/project/task'
  291. }
  292. }
  293. ]
  294. },
  295. {
  296. path: '/iotProjectInfoDetail',
  297. component: Layout,
  298. name: 'IotProjectInfoDetail',
  299. meta: {
  300. hidden: true
  301. },
  302. children: [
  303. {
  304. path: 'project/info/detail/:id(\\d+)',
  305. component: () => import('@/views/pms/iotprojectinfo/IotProjectInfoDetail.vue'),
  306. name: 'IotProjectInfoDetail',
  307. meta: {
  308. title: t('rem.detail'),
  309. noCache: false,
  310. hidden: true,
  311. canTo: true,
  312. activeMenu: '/project/detail'
  313. }
  314. }
  315. ]
  316. },
  317. {
  318. path: '/FillOrderInfo2',
  319. component: Layout,
  320. name: 'FillOrderInfo2',
  321. meta: {
  322. hidden: true
  323. },
  324. children: [
  325. {
  326. path: 'template/detail/:deptId/:isFill/:createTime*',
  327. component: () => import('@/views/pms/iotopeationfill/StatisticsForm.vue' +
  328. ''),
  329. name: 'FillOrderInfo2',
  330. meta: {
  331. title: t('rem.FillInInformation'),
  332. noCache: false,
  333. hidden: true,
  334. canTo: true,
  335. activeMenu: '/template/info'
  336. }
  337. },
  338. ]
  339. },
  340. {
  341. path: '/FillOrderInfo',
  342. component: Layout,
  343. name: 'FillOrderInfo',
  344. meta: {
  345. hidden: true,
  346. keepAlive: true
  347. },
  348. children: [
  349. {
  350. path: 'template/detail/:id',
  351. component: () => import('@/views/pms/iotopeationfill/index1.vue'+''),
  352. name: 'FillOrderInfo',
  353. meta: {
  354. title: t('rem.FillInInformation'),
  355. noCache: false,
  356. hidden: true,
  357. canTo: true,
  358. keepAlive: true,
  359. activeMenu: '/template/info'
  360. }
  361. },
  362. ]
  363. },
  364. {
  365. path: '/IotOpeationFill1',
  366. component: Layout,
  367. name: 'IotOpeationFill1',
  368. meta: {
  369. hidden: true
  370. },
  371. children: [
  372. {
  373. path: 'template/detail',
  374. component: () => import('@/views/pms/iotopeationfill/index.vue'),
  375. name: 'IotOpeationFill1',
  376. meta: {
  377. title: t('rem.FillInInformation'),
  378. noCache: false,
  379. hidden: true,
  380. canTo: true,
  381. keepAlive: true,
  382. activeMenu: '/template/info'
  383. }
  384. },
  385. ]
  386. },
  387. {
  388. path: '/iotOperationPlan',
  389. component: Layout,
  390. name: 'iotOperationPlan',
  391. meta: {
  392. hidden: true
  393. },
  394. children: [
  395. {
  396. path: 'template/detail',
  397. component: () => import('@/views/pms/iotopeationfill/plan/index.vue'),
  398. name: 'iotOperationPlan',
  399. meta: {
  400. title: t('rem.FillInInformation'),
  401. noCache: false,
  402. hidden: true,
  403. canTo: true,
  404. keepAlive: true,
  405. activeMenu: '/template/info'
  406. }
  407. },
  408. {
  409. path: 'iotopeationfill/plan/add',
  410. component: () => import('@/views/pms/iotopeationfill/plan/IotOperationPlan.vue'),
  411. name: 'OperationPlanAdd',
  412. meta: {
  413. noCache: false,
  414. hidden: true,
  415. canTo: true,
  416. icon: 'ep:add',
  417. title: t('rem.OperationPlanAdd'),
  418. activeMenu: '/iotopeationfill/plan/add'
  419. }
  420. },
  421. {
  422. path: 'iotopeationfill/plan/add/:id(\\\\d+)',
  423. component: () => import('@/views/pms/iotopeationfill/plan/IotOperationPlan.vue'),
  424. name: 'OperationPlanEdit',
  425. meta: {
  426. noCache: false,
  427. hidden: true,
  428. canTo: true,
  429. icon: 'ep:add',
  430. title: t('rem.OperationPlanEdit'),
  431. activeMenu: '/iotopeationfill/plan/add'
  432. }
  433. },
  434. ]
  435. },
  436. {
  437. path: '/FillOrderInfoS',
  438. component: Layout,
  439. name: 'FillOrderInfoS',
  440. meta: {
  441. hidden: true,
  442. keepAlive: true
  443. },
  444. children: [
  445. {
  446. path: 'template/detail/:id/:deviceid/:status/:deptid/:createtime',
  447. component: () => import('@/views/pms/device/record/RecordInfo.vue'),
  448. name: 'FillOrderInfoDevice',
  449. meta: {
  450. title: t('rem.detail'),
  451. noCache: false,
  452. hidden: true,
  453. canTo: true,
  454. activeMenu: '/template/info'
  455. }
  456. }
  457. ]
  458. },
  459. {
  460. path: '/iotpms/iotdevicepms', // 商品中心
  461. component: Layout,
  462. name: 'PmsDeviceCenter',
  463. meta: {
  464. hidden: true
  465. },
  466. children: [
  467. {
  468. path: 'device/detail/add/:type/:deptId',
  469. component: () => import('@/views/pms/device/IotDeviceForm.vue'),
  470. name: 'DeviceDetailAdd',
  471. meta: {
  472. noCache: false,
  473. hidden: true,
  474. canTo: true,
  475. icon: 'ep:add',
  476. title: t('rem.AddEquipment'),
  477. activeMenu: '/device/base'
  478. }
  479. },
  480. {
  481. path: 'device/detail/add',
  482. component: () => import('@/views/pms/device/IotDeviceFormAdd.vue'),
  483. name: 'DeviceDetailAddd',
  484. meta: {
  485. noCache: false,
  486. hidden: true,
  487. canTo: true,
  488. icon: 'ep:add',
  489. title: t('rem.AddEquipment'),
  490. activeMenu: '/device/base'
  491. }
  492. },
  493. {
  494. path: 'device/detail/edit/:type/:id(\\d+)',
  495. component: () => import('@/views/pms/device/IotDeviceForm.vue'),
  496. name: 'DeviceDetailEdit',
  497. meta: {
  498. noCache: true,
  499. hidden: true,
  500. canTo: true,
  501. icon: 'ep:edit',
  502. title: t('rem.EquipmentEditing'),
  503. activeMenu: '/device/base'
  504. }
  505. },{
  506. path: 'device/detail/:id',
  507. component: () => import('@/views/pms/device/DeviceInfo.vue'),
  508. name: 'DeviceDetailInfo',
  509. meta: {
  510. noCache: false,
  511. hidden: true,
  512. canTo: true,
  513. icon: 'ep:info',
  514. title: t('rem.EquipmentDetails'),
  515. activeMenu: '/device/info'
  516. }
  517. },{
  518. path: 'tddevice/detail/:id/:ifInline/:time/:name/:code/:dept/:vehicle?',
  519. component: () => import('@/views/pms/device/monitor/TdDeviceInfo.vue'),
  520. name: 'TdDeviceDetail',
  521. meta: {
  522. noCache: false,
  523. hidden: true,
  524. canTo: true,
  525. icon: 'ep:info',
  526. title: t('rem.MonitoringDetails'),
  527. activeMenu: '/device/info'
  528. }
  529. },{
  530. path: 'device/upload/:id',
  531. component: () => import('@/views/pms/device/DeviceUpload.vue'),
  532. name: 'DeviceUpload',
  533. meta: {
  534. noCache: false,
  535. hidden: true,
  536. canTo: true,
  537. icon: 'ep:info',
  538. title: t('rem.UploadFile'),
  539. activeMenu: '/device/upload'
  540. }
  541. },{
  542. path: 'device/bom/:id',
  543. component: () => import('@/views/pms/device/bom/BomInfo.vue'),
  544. name: 'DeviceBom',
  545. meta: {
  546. noCache: false,
  547. hidden: true,
  548. canTo: true,
  549. icon: 'ep:info',
  550. title: t('rem.EquipmentBOM'),
  551. activeMenu: '/device/bom'
  552. }
  553. },
  554. {
  555. path: 'device/person',
  556. component: () => import('@/views/pms/device/personlog/ConfigDevicePerson.vue'),
  557. name: 'ConfigDevicePerson',
  558. meta: {
  559. noCache: false,
  560. hidden: true,
  561. canTo: true,
  562. icon: 'ep:add',
  563. title: t('rem.EquipmentResponsiblePerson'),
  564. activeMenu: '/device/person'
  565. }
  566. },
  567. {
  568. path: 'device/status',
  569. component: () => import('@/views/pms/device/statuslog/ConfigDeviceStatus.vue'),
  570. name: 'ConfigDeviceStatus',
  571. meta: {
  572. noCache: false,
  573. hidden: true,
  574. canTo: true,
  575. icon: 'ep:add',
  576. title: t('rem.EquipmentStatusAdjustment'),
  577. activeMenu: '/device/status'
  578. }
  579. },
  580. {
  581. path: 'device/allot',
  582. component: () => import('@/views/pms/device/allotlog/ConfigDeviceAllot.vue'),
  583. name: 'ConfigDeviceAllot',
  584. meta: {
  585. noCache: false,
  586. hidden: true,
  587. canTo: true,
  588. icon: 'ep:add',
  589. title: t('rem.EquipmentAllocation'),
  590. activeMenu: '/device/allot'
  591. }
  592. }
  593. ]
  594. },
  595. {
  596. path: '/iotpms/iotlockstock',
  597. component: Layout,
  598. name: 'PmsLockStockCenter',
  599. meta: {
  600. hidden: true,
  601. keepAlive: true
  602. },
  603. children: [
  604. {
  605. path: 'lockstock',
  606. component: () => import('@/views/pms/iotlockstock/index.vue'),
  607. name: 'IotLockStock',
  608. meta: {
  609. keepAlive: true,
  610. noCache: false,
  611. hidden: true,
  612. canTo: true,
  613. icon: 'ep:menu',
  614. title: t('rem.LocalStock'),
  615. activeMenu: '/lockstock/index'
  616. }
  617. },
  618. {
  619. path: 'lockstock/add',
  620. component: () => import('@/views/pms/iotlockstock/IotAddToStock.vue'),
  621. name: 'LockStockAdd',
  622. meta: {
  623. noCache: false,
  624. hidden: true,
  625. canTo: true,
  626. icon: 'ep:add',
  627. title: t('rem.ManualWarehousing'),
  628. activeMenu: '/lockstock/add'
  629. }
  630. },
  631. {
  632. path: 'lockstock/edit/:id(\\d+)',
  633. component: () => import('@/views/pms/iotlockstock/IotAddToStock.vue'),
  634. name: 'LockStockEdit',
  635. meta: {
  636. noCache: true,
  637. hidden: true,
  638. canTo: true,
  639. icon: 'ep:edit',
  640. title: t('rem.EditingWarehousing'),
  641. activeMenu: '/lockstock/edit'
  642. }
  643. }
  644. ]
  645. },
  646. {
  647. path: '/iotpms/iotsapstock',
  648. component: Layout,
  649. name: 'PmsSapStockCenter',
  650. meta: {
  651. hidden: true,
  652. keepAlive: true
  653. },
  654. children: [
  655. {
  656. path: 'sapstock',
  657. component: () => import('@/views/pms/iotsapstock/index.vue'),
  658. name: 'IotSapStock',
  659. meta: {
  660. keepAlive: true,
  661. noCache: false,
  662. hidden: true,
  663. canTo: true,
  664. icon: 'ep:menu',
  665. title: t('rem.SAPStock'),
  666. activeMenu: '/sapstock/index'
  667. }
  668. },
  669. {
  670. path: 'sapstock/config',
  671. component: () => import('@/views/pms/iotsapstock/IotSapStockConfig.vue'),
  672. name: 'IotSapStockConfig',
  673. meta: {
  674. noCache: false,
  675. hidden: true,
  676. canTo: true,
  677. icon: 'ep:add',
  678. title: t('rem.ConfigureSafetyStock'),
  679. activeMenu: '/sapstock/config'
  680. }
  681. },
  682. {
  683. path: 'sapstock/safe',
  684. component: () => import('@/views/pms/iotsapstock/IotConfigSafeStock.vue'),
  685. name: 'IotConfigSafeStock',
  686. meta: {
  687. noCache: false,
  688. hidden: true,
  689. canTo: true,
  690. icon: 'ep:add',
  691. title: t('rem.ConfigureSafetyStock'),
  692. activeMenu: '/sapstock/safe'
  693. }
  694. },
  695. ]
  696. },
  697. {
  698. path: '/iotpms/iotmaintenanceplan',
  699. component: Layout,
  700. name: 'PmsMaintenanceCenter',
  701. meta: {
  702. hidden: true,
  703. keepAlive: true
  704. },
  705. children: [
  706. {
  707. path: 'maintenanceplan',
  708. component: () => import('@/views/pms/maintenance/index.vue'),
  709. name: 'IotMaintenancePlan',
  710. meta: {
  711. keepAlive: true,
  712. noCache: false,
  713. hidden: true,
  714. canTo: true,
  715. icon: 'ep:menu',
  716. title: t('rem.MaintenancePlan'),
  717. activeMenu: '/maintenanceplan/index'
  718. }
  719. },
  720. {
  721. path: 'maintenanceplan/add',
  722. component: () => import('@/views/pms/maintenance/IotMaintenancePlan.vue'),
  723. name: 'IotAddMainPlan',
  724. meta: {
  725. keepAlive: true,
  726. noCache: false,
  727. hidden: true,
  728. canTo: true,
  729. icon: 'ep:add',
  730. title: t('rem.AddMaintenancePlan'),
  731. activeMenu: '/maintenanceplan/add'
  732. }
  733. },
  734. {
  735. path: 'maintenanceplan/edit/:id(\\d+)',
  736. component: () => import('@/views/pms/maintenance/IotMaintenancePlanEdit.vue'),
  737. name: 'IotMainPlanEdit',
  738. meta: {
  739. keepAlive: true,
  740. noCache: true,
  741. hidden: true,
  742. canTo: true,
  743. icon: 'ep:edit',
  744. title: t('rem.EditMaintenancePlan'),
  745. activeMenu: '/maintenanceplan/edit'
  746. }
  747. },
  748. {
  749. path: 'maintenanceplan/detail/:id(\\d+)',
  750. component: () => import('@/views/pms/maintenance/IotMaintenancePlanDetail.vue'),
  751. name: 'IotMaintenancePlanDetail',
  752. meta: {
  753. noCache: true,
  754. hidden: true,
  755. canTo: true,
  756. icon: 'ep:edit',
  757. title: t('rem.MaintenancePlanDetail'),
  758. activeMenu: '/maintenanceplan/detail'
  759. }
  760. }
  761. ]
  762. },
  763. {
  764. path: '/iotpms/iotmainworkorder',
  765. component: Layout,
  766. name: 'PmsMainWorkOrderCenter',
  767. meta: {
  768. hidden: true,
  769. keepAlive: true,
  770. },
  771. children: [
  772. {
  773. path: 'mainworkorder',
  774. component: () => import('@/views/pms/iotmainworkorder/index.vue'),
  775. name: 'IotMainWorkOrder',
  776. meta: {
  777. keepAlive: true,
  778. noCache: false,
  779. hidden: true,
  780. canTo: true,
  781. icon: 'ep:menu',
  782. title: t('rem.MaintenanceOrder'),
  783. activeMenu: '/mainworkorder/index'
  784. }
  785. },
  786. {
  787. path: 'workorderalarm',
  788. component: () => import('@/views/pms/iotmainworkorder/IotDeviceMainAlarm.vue'),
  789. name: 'IotDeviceMainAlarm',
  790. meta: {
  791. keepAlive: true,
  792. noCache: false,
  793. hidden: true,
  794. canTo: true,
  795. icon: 'ep:menu',
  796. title: t('mainPlan.maintenanceQuery'),
  797. activeMenu: '/mainworkorder/alarm'
  798. }
  799. },
  800. {
  801. path: 'maintenancesearch',
  802. component: () => import('@/views/pms/iotmainworkorder/IotMaintenanceSearch.vue'),
  803. name: 'IotMaintenanceSearch',
  804. meta: {
  805. keepAlive: true,
  806. noCache: false,
  807. hidden: true,
  808. canTo: true,
  809. icon: 'ep:menu',
  810. title: t('mainPlan.maintenanceQuery'),
  811. activeMenu: '/mainworkorder/search'
  812. }
  813. },
  814. {
  815. path: 'mainworkorder/bom/:id(\\d+)',
  816. component: () => import('@/views/pms/iotmainworkorder/IotMainWorkOrderOptimize.vue'),
  817. name: 'IotMainWorkOrderOptimize',
  818. meta: {
  819. noCache: false,
  820. hidden: true,
  821. canTo: true,
  822. icon: 'ep:add',
  823. title: t('rem.FillMaintenanceOrder'),
  824. activeMenu: '/mainworkorder/bom'
  825. }
  826. },
  827. {
  828. path: 'mainworkorder/add',
  829. component: () => import('@/views/pms/iotmainworkorder/IotMainWorkOrderAdd.vue'),
  830. name: 'IotMainWorkOrderAdd',
  831. meta: {
  832. noCache: false,
  833. hidden: true,
  834. canTo: true,
  835. icon: 'ep:add',
  836. title: t('rem.AddMaintenanceOrder'),
  837. activeMenu: '/mainworkorder/add'
  838. }
  839. },
  840. {
  841. path: 'mainworkorder/detail/:id(\\d+)',
  842. component: () => import('@/views/pms/iotmainworkorder/IotMainWorkOrderDetail.vue'),
  843. name: 'IotMainWorkOrderDetail',
  844. meta: {
  845. noCache: false,
  846. hidden: true,
  847. canTo: true,
  848. icon: 'ep:add',
  849. title: t('rem.MaintenanceOrderDetail'),
  850. activeMenu: '/mainworkorder/detail'
  851. }
  852. },
  853. {
  854. path: 'mainworkorder/device/detail/:orderId/:deviceId(\\d+)',
  855. component: () => import('@/views/pms/device/maintenance/MaintenanceDetail.vue'),
  856. name: 'IotDeviceMainWorkOrderDetail',
  857. meta: {
  858. noCache: false,
  859. hidden: true,
  860. canTo: true,
  861. icon: 'ep:add',
  862. title: t('rem.MaintenanceOrderDetail'),
  863. activeMenu: '/mainworkorder/detail'
  864. }
  865. }
  866. ]
  867. },
  868. {
  869. path: '/iotpms/iotmaterialreq',
  870. component: Layout,
  871. name: 'PmsMaterialReqCenter',
  872. meta: {
  873. hidden: true
  874. },
  875. children: [
  876. {
  877. path: 'materialreq',
  878. component: () => import('@/views/pms/iotmaterialrequisition/index.vue'),
  879. name: 'IotMaterialRequisition',
  880. meta: {
  881. noCache: false,
  882. hidden: true,
  883. canTo: true,
  884. icon: 'ep:menu',
  885. title: t('rem.MaterialRequisition'),
  886. activeMenu: '/materialreq/index'
  887. }
  888. },
  889. {
  890. path: 'materialreq/add',
  891. component: () => import('@/views/pms/iotmaterialrequisition/IotMaterialRequisitionAdd.vue'),
  892. name: 'IotMaterialRequisitionAdd',
  893. meta: {
  894. noCache: false,
  895. hidden: true,
  896. canTo: true,
  897. icon: 'ep:add',
  898. title: t('rem.MaterialRequisitionAdd'),
  899. activeMenu: '/materialreq/add'
  900. }
  901. },
  902. {
  903. path: 'materialreq/detail/:id(\\d+)',
  904. component: () => import('@/views/pms/iotmaterialrequisition/IotMaterialReqDetail.vue'),
  905. name: 'IotMaterialReqDetail',
  906. meta: {
  907. noCache: false,
  908. hidden: true,
  909. canTo: true,
  910. icon: 'ep:view',
  911. title: t('rem.CollectionFormDetails'),
  912. activeMenu: '/materialreq/detail'
  913. }
  914. },
  915. ]
  916. },
  917. {
  918. path: '/iotpms/maincalendar',
  919. component: Layout,
  920. name: 'PmsMainCalendarCenter',
  921. meta: {
  922. hidden: true
  923. },
  924. children: [
  925. {
  926. path: 'maintenancecalendar',
  927. component: () => import('@/views/pms/iotmaincalendar/index.vue'),
  928. name: 'MaintenanceCalendar',
  929. meta: {
  930. noCache: false,
  931. hidden: true,
  932. canTo: true,
  933. icon: 'ep:menu',
  934. title: t('rem.MaintainCalendar'),
  935. activeMenu: '/maintenancecalendar/index'
  936. }
  937. }
  938. ]
  939. },
  940. {
  941. path: '/iotpms/iotmaintain',
  942. component: Layout,
  943. name: 'PmsMaintainCenter',
  944. meta: {
  945. hidden: true
  946. },
  947. children: [
  948. {
  949. path: 'maintain/add/:id?(\\d+)',
  950. component: () => import('@/views/pms/maintain/IotMaintainAddEdit.vue'),
  951. name: 'MaintainAdd',
  952. meta: {
  953. noCache: false,
  954. hidden: true,
  955. canTo: true,
  956. icon: 'ep:add',
  957. title: t('rem.RepairOrderAdd'),
  958. activeMenu: '/maintain/add'
  959. }
  960. },
  961. {
  962. path: 'maintain/edit/:id(\\d+)',
  963. component: () => import('@/views/pms/maintain/IotMaintain.vue'),
  964. name: 'MaintainEdit',
  965. meta: {
  966. noCache: true,
  967. hidden: true,
  968. canTo: true,
  969. icon: 'ep:edit',
  970. title: t('rem.RepairOrderEdit'),
  971. activeMenu: '/maintain/edit'
  972. }
  973. },{
  974. path: 'maintain/detail/:id(\\d+)',
  975. component: () => import('@/views/pms/maintain/IotMaintainDetail.vue'),
  976. name: 'MaintainDetail',
  977. meta: {
  978. noCache: false,
  979. hidden: true,
  980. canTo: true,
  981. icon: 'ep:add',
  982. title: t('rem.RepairOrderDetail'),
  983. activeMenu: '/maintain/detail'
  984. }
  985. },
  986. ]
  987. },
  988. {
  989. path: '/iotpms/iotinspectroute',
  990. component: Layout,
  991. name: 'PmsInspectRouteCenter',
  992. meta: {
  993. hidden: true
  994. },
  995. children: [
  996. {
  997. path: 'route/add',
  998. component: () => import('@/views/pms/inspect/route/IotInspectRoute.vue'),
  999. name: 'RouteAdd',
  1000. meta: {
  1001. noCache: false,
  1002. hidden: true,
  1003. canTo: true,
  1004. icon: 'ep:add',
  1005. title: t('rem.InspectionRouteAdd'),
  1006. activeMenu: '/route/add'
  1007. }
  1008. },
  1009. {
  1010. path: 'route/edit/:id(\\d+)',
  1011. component: () => import('@/views/pms/inspect/route/IotInspectRoute.vue'),
  1012. name: 'RouteEdit',
  1013. meta: {
  1014. noCache: true,
  1015. hidden: true,
  1016. canTo: true,
  1017. icon: 'ep:edit',
  1018. title: t('rem.InspectionRouteEdit'),
  1019. activeMenu: '/route/edit'
  1020. }
  1021. // }
  1022. // ,{
  1023. // path: 'route/detail/:id(\\d+)',
  1024. // component: () => import('@/views/pms/maintain/IotMaintainDetail.vue'),
  1025. // name: 'InspectRouteDetail',
  1026. // meta: {
  1027. // noCache: false,
  1028. // hidden: true,
  1029. // canTo: true,
  1030. // icon: 'ep:add',
  1031. // title: '巡检路线详情',
  1032. // activeMenu: '/route/detail'
  1033. // }
  1034. },
  1035. ]
  1036. },
  1037. {
  1038. path: '/iotpms/iotinspectplan',
  1039. component: Layout,
  1040. name: 'PmsInspectPlanCenter',
  1041. meta: {
  1042. hidden: true
  1043. },
  1044. children: [
  1045. {
  1046. path: 'inspect/plan/add',
  1047. component: () => import('@/views/pms/inspect/plan/IotInspectPlan.vue'),
  1048. name: 'InspectPlanAdd',
  1049. meta: {
  1050. noCache: false,
  1051. hidden: true,
  1052. canTo: true,
  1053. icon: 'ep:add',
  1054. title: t('rem.InspectPlanAdd'),
  1055. activeMenu: '/inspect/plan/add'
  1056. }
  1057. },
  1058. {
  1059. path: 'inspect/plan/edit/:id(\\d+)',
  1060. component: () => import('@/views/pms/inspect/plan/IotInspectPlan.vue'),
  1061. name: 'InspectPlanEdit',
  1062. meta: {
  1063. noCache: true,
  1064. hidden: true,
  1065. canTo: true,
  1066. icon: 'ep:edit',
  1067. title: t('rem.InspectPlanEdit'),
  1068. activeMenu: '/inspect/plan/edit'
  1069. }
  1070. // }
  1071. // ,{
  1072. // path: 'route/detail/:id(\\d+)',
  1073. // component: () => import('@/views/pms/maintain/IotMaintainDetail.vue'),
  1074. // name: 'InspectRouteDetail',
  1075. // meta: {
  1076. // noCache: false,
  1077. // hidden: true,
  1078. // canTo: true,
  1079. // icon: 'ep:add',
  1080. // title: '巡检路线详情',
  1081. // activeMenu: '/route/detail'
  1082. // }
  1083. },
  1084. ]
  1085. },
  1086. {
  1087. path: '/iotpms/iotinspectorder',
  1088. component: Layout,
  1089. name: 'PmsInspectOrderCenter',
  1090. meta: {
  1091. hidden: true
  1092. },
  1093. children: [
  1094. {
  1095. path: 'inspect/order/detail/index/:deptId?/:status?/:createTime*',
  1096. component: () => import('@/views/pms/inspect/order/detail/IotInspectOrderDetailStat.vue'),
  1097. name: 'IotInspectOrderDetailStat',
  1098. meta: {
  1099. noCache: false,
  1100. hidden: true,
  1101. canTo: true,
  1102. icon: 'ep:index',
  1103. title: t('rem.InspectOrder'),
  1104. activeMenu: '/inspect/order/detail/index'
  1105. }
  1106. },
  1107. {
  1108. path: 'inspect/order/index/:deptId?/:status?/:createTime*',
  1109. component: () => import('@/views/pms/inspect/order/index.vue'),
  1110. name: 'IotInspectOrdere',
  1111. meta: {
  1112. noCache: false,
  1113. hidden: true,
  1114. canTo: true,
  1115. icon: 'ep:index',
  1116. title: t('rem.InspectOrder'),
  1117. activeMenu: '/inspect/order/index'
  1118. }
  1119. },
  1120. {
  1121. path: 'inspect/order/item/index/:deptId?/:status?/:createTime*',
  1122. component: () => import('@/views/pms/inspect/order/detail/IotInspectOrderItemStat.vue'),
  1123. name: 'IotInspectItemStat',
  1124. meta: {
  1125. noCache: false,
  1126. hidden: true,
  1127. canTo: true,
  1128. icon: 'ep:index',
  1129. title: t('rem.InspectOrder'),
  1130. activeMenu: '/inspect/order/item/index'
  1131. }
  1132. },
  1133. {
  1134. path: 'inspect/order/add',
  1135. component: () => import('@/views/pms/inspect/order/InspectOrderDetail.vue'),
  1136. name: 'InspectOrderAdd',
  1137. meta: {
  1138. noCache: false,
  1139. hidden: true,
  1140. canTo: true,
  1141. icon: 'ep:add',
  1142. title: t('rem.InspectOrderAdd'),
  1143. activeMenu: '/inspect/order/add'
  1144. }
  1145. },
  1146. {
  1147. path: 'inspect/order/edit/:id(\\d+)',
  1148. component: () => import('@/views/pms/inspect/order/InspectOrderDetail.vue'),
  1149. name: 'InspectOrderEdit',
  1150. meta: {
  1151. noCache: true,
  1152. hidden: true,
  1153. canTo: true,
  1154. icon: 'ep:edit',
  1155. title: t('rem.InspectPlanEdit'),
  1156. activeMenu: '/inspect/order/edit'
  1157. }
  1158. }
  1159. ,{
  1160. path: '/inspect/order/detail/:id(\\d+)',
  1161. component: () => import('@/views/pms/inspect/order/InspectOrderDetail.vue'),
  1162. name: 'InspectOrderDetail',
  1163. meta: {
  1164. noCache: false,
  1165. hidden: true,
  1166. canTo: true,
  1167. icon: 'ep:add',
  1168. title: t('rem.InspectOrderDetail'),
  1169. activeMenu: '/inspect/order/detail'
  1170. }
  1171. },{
  1172. path: '/inspect/order/write/:id(\\d+)',
  1173. component: () => import('@/views/pms/inspect/order/WriteOrder.vue'),
  1174. name: 'InspectOrderWrite',
  1175. meta: {
  1176. noCache: false,
  1177. hidden: true,
  1178. canTo: true,
  1179. icon: 'ep:add',
  1180. title: t('rem.InspectOrderAdd'),
  1181. activeMenu: '/inspect/order/write'
  1182. }
  1183. }
  1184. ]
  1185. },
  1186. {
  1187. path: '/failure',
  1188. component: Layout,
  1189. name: 'failure',
  1190. meta: {
  1191. hidden: true
  1192. },
  1193. children: [
  1194. {
  1195. path: 'failure/detail/:id',
  1196. component: () => import('@/views/pms/failure/FailureInfo.vue'),
  1197. name: 'FailureDetail',
  1198. meta: {
  1199. noCache: true,
  1200. hidden: true,
  1201. canTo: true,
  1202. title: t('rem.FailureDetail'),
  1203. activeMenu: '/failure/detail'
  1204. }
  1205. }
  1206. ]
  1207. },
  1208. {
  1209. path: '/user',
  1210. component: Layout,
  1211. name: 'UserInfo',
  1212. meta: {
  1213. hidden: true
  1214. },
  1215. children: [
  1216. {
  1217. path: 'profile',
  1218. component: () => import('@/views/Profile/Index.vue'),
  1219. name: 'Profile',
  1220. meta: {
  1221. canTo: true,
  1222. hidden: true,
  1223. noTagsView: false,
  1224. icon: 'ep:user',
  1225. title: t('common.profile')
  1226. }
  1227. },
  1228. {
  1229. path: 'notify-message',
  1230. component: () => import('@/views/system/notify/my/index.vue'),
  1231. name: 'MyNotifyMessage',
  1232. meta: {
  1233. canTo: true,
  1234. hidden: true,
  1235. noTagsView: false,
  1236. icon: 'ep:message',
  1237. title: '我的站内信'
  1238. }
  1239. }
  1240. ]
  1241. },
  1242. {
  1243. path: '/dict',
  1244. component: Layout,
  1245. name: 'dict',
  1246. meta: {
  1247. hidden: true
  1248. },
  1249. children: [
  1250. {
  1251. path: 'type/data/:dictType',
  1252. component: () => import('@/views/system/dict/data/index.vue'),
  1253. name: 'SystemDictData',
  1254. meta: {
  1255. title: '字典数据',
  1256. noCache: true,
  1257. hidden: true,
  1258. canTo: true,
  1259. icon: '',
  1260. activeMenu: '/system/dict'
  1261. }
  1262. }
  1263. ]
  1264. },
  1265. {
  1266. path: '/codegen',
  1267. component: Layout,
  1268. name: 'CodegenEdit',
  1269. meta: {
  1270. hidden: true
  1271. },
  1272. children: [
  1273. {
  1274. path: 'edit',
  1275. component: () => import('@/views/infra/codegen/EditTable.vue'),
  1276. name: 'InfraCodegenEditTable',
  1277. meta: {
  1278. noCache: true,
  1279. hidden: true,
  1280. canTo: true,
  1281. icon: 'ep:edit',
  1282. title: '修改生成配置',
  1283. activeMenu: 'infra/codegen/index'
  1284. }
  1285. }
  1286. ]
  1287. },
  1288. {
  1289. path: '/job',
  1290. component: Layout,
  1291. name: 'JobL',
  1292. meta: {
  1293. hidden: true
  1294. },
  1295. children: [
  1296. {
  1297. path: 'job-log',
  1298. component: () => import('@/views/infra/job/logger/index.vue'),
  1299. name: 'InfraJobLog',
  1300. meta: {
  1301. noCache: true,
  1302. hidden: true,
  1303. canTo: true,
  1304. icon: 'ep:edit',
  1305. title: '调度日志',
  1306. activeMenu: 'infra/job/index'
  1307. }
  1308. }
  1309. ]
  1310. },
  1311. {
  1312. path: '/login',
  1313. component: () => import('@/views/Login/Login.vue'),
  1314. name: 'Login',
  1315. meta: {
  1316. hidden: true,
  1317. title: t('router.login'),
  1318. noTagsView: true
  1319. }
  1320. },
  1321. {
  1322. path: '/sso',
  1323. component: () => import('@/views/Login/Login.vue'),
  1324. name: 'SSOLogin',
  1325. meta: {
  1326. hidden: true,
  1327. title: t('router.login'),
  1328. noTagsView: true
  1329. }
  1330. },
  1331. {
  1332. path: '/social-login',
  1333. component: () => import('@/views/Login/SocialLogin.vue'),
  1334. name: 'SocialLogin',
  1335. meta: {
  1336. hidden: true,
  1337. title: t('router.socialLogin'),
  1338. noTagsView: true
  1339. }
  1340. },
  1341. {
  1342. path: '/403',
  1343. component: () => import('@/views/Error/403.vue'),
  1344. name: 'NoAccess',
  1345. meta: {
  1346. hidden: true,
  1347. title: '403',
  1348. noTagsView: true
  1349. }
  1350. },
  1351. {
  1352. path: '/404',
  1353. component: () => import('@/views/Error/404.vue'),
  1354. name: 'NoFound',
  1355. meta: {
  1356. hidden: true,
  1357. title: '404',
  1358. noTagsView: true
  1359. }
  1360. },
  1361. {
  1362. path: '/500',
  1363. component: () => import('@/views/Error/500.vue'),
  1364. name: 'Error',
  1365. meta: {
  1366. hidden: true,
  1367. title: '500',
  1368. noTagsView: true
  1369. }
  1370. },
  1371. {
  1372. path: '/supplier/product', // 商品中心
  1373. component: Layout,
  1374. name: 'SupplierCenter',
  1375. meta: {
  1376. hidden: true
  1377. },
  1378. children: [
  1379. {
  1380. path: 'supplier/detail/add',
  1381. component: () => import('@/views/supplier/base/form/index.vue'),
  1382. name: 'SupplierDetailAdd',
  1383. meta: {
  1384. noCache: false,
  1385. hidden: true,
  1386. canTo: true,
  1387. icon: 'ep:edit',
  1388. title: '供应商添加',
  1389. activeMenu: '/supplier/base'
  1390. }
  1391. },
  1392. {
  1393. path: 'supplier/detail/edit/:id(\\d+)',
  1394. component: () => import('@/views/supplier/base/form/index.vue'),
  1395. name: 'SupplierDetailEdit',
  1396. meta: {
  1397. noCache: true,
  1398. hidden: true,
  1399. canTo: true,
  1400. icon: 'ep:edit',
  1401. title: '供应商编辑',
  1402. activeMenu: '/supplier/base'
  1403. }
  1404. },
  1405. {
  1406. path: '/supplier/detail/info/:id(\\d+)',
  1407. component: () => import('@/views/supplier/base/form/index.vue'),
  1408. name: 'SupplierDetailInfo',
  1409. meta: {
  1410. noCache: true,
  1411. hidden: true,
  1412. canTo: true,
  1413. icon: 'ep:view',
  1414. title: '供应商详情',
  1415. activeMenu: '/supplier/base'
  1416. }
  1417. },
  1418. {
  1419. path: 'supplier/approvalDetail/:id',
  1420. name: 'SupplierApprovalInfo',
  1421. meta: {
  1422. title: '供应商审核详情',
  1423. noCache: true,
  1424. hidden: true,
  1425. activeMenu: '/supplier/base'
  1426. },
  1427. component: () => import('@/views/supplier/approvaldetail/ApprovalDetail.vue')
  1428. }
  1429. ]
  1430. },
  1431. {
  1432. path: '/bpm',
  1433. component: Layout,
  1434. name: 'bpm',
  1435. meta: {
  1436. hidden: true
  1437. },
  1438. children: [
  1439. {
  1440. path: 'manager/form/edit',
  1441. component: () => import('@/views/bpm/form/editor/index.vue'),
  1442. name: 'BpmFormEditor',
  1443. meta: {
  1444. noCache: true,
  1445. hidden: true,
  1446. canTo: true,
  1447. title: '设计流程表单',
  1448. activeMenu: '/bpm/manager/form'
  1449. }
  1450. },
  1451. {
  1452. path: 'manager/definition',
  1453. component: () => import('@/views/bpm/model/definition/index.vue'),
  1454. name: 'BpmProcessDefinition',
  1455. meta: {
  1456. noCache: true,
  1457. hidden: true,
  1458. canTo: true,
  1459. title: '流程定义',
  1460. activeMenu: '/bpm/manager/model'
  1461. }
  1462. },
  1463. {
  1464. path: 'process-instance/detail',
  1465. component: () => import('@/views/bpm/processInstance/detail/index.vue'),
  1466. name: 'BpmProcessInstanceDetail',
  1467. meta: {
  1468. noCache: true,
  1469. hidden: true,
  1470. canTo: true,
  1471. title: '流程详情',
  1472. activeMenu: '/bpm/task/my'
  1473. },
  1474. props: (route) => ({
  1475. id: route.query.id,
  1476. taskId: route.query.taskId,
  1477. activityId: route.query.activityId
  1478. })
  1479. },
  1480. {
  1481. path: 'process-instance/report',
  1482. component: () => import('@/views/bpm/processInstance/report/index.vue'),
  1483. name: 'BpmProcessInstanceReport',
  1484. meta: {
  1485. noCache: true,
  1486. hidden: true,
  1487. canTo: true,
  1488. title: '数据报表',
  1489. activeMenu: '/bpm/manager/model'
  1490. }
  1491. },
  1492. {
  1493. path: 'oa/leave/create',
  1494. component: () => import('@/views/bpm/oa/leave/create.vue'),
  1495. name: 'OALeaveCreate',
  1496. meta: {
  1497. noCache: true,
  1498. hidden: true,
  1499. canTo: true,
  1500. title: '发起 OA 请假',
  1501. activeMenu: '/bpm/oa/leave'
  1502. }
  1503. },
  1504. {
  1505. path: 'oa/leave/detail',
  1506. component: () => import('@/views/bpm/oa/leave/detail.vue'),
  1507. name: 'OALeaveDetail',
  1508. meta: {
  1509. noCache: true,
  1510. hidden: true,
  1511. canTo: true,
  1512. title: '查看 OA 请假',
  1513. activeMenu: '/bpm/oa/leave'
  1514. }
  1515. },
  1516. {
  1517. path: 'manager/model/create',
  1518. component: () => import('@/views/bpm/model/form/index.vue'),
  1519. name: 'BpmModelCreate',
  1520. meta: {
  1521. noCache: true,
  1522. hidden: true,
  1523. canTo: true,
  1524. title: '创建流程',
  1525. activeMenu: '/bpm/manager/model'
  1526. }
  1527. },
  1528. {
  1529. path: 'manager/model/:type/:id',
  1530. component: () => import('@/views/bpm/model/form/index.vue'),
  1531. name: 'BpmModelUpdate',
  1532. meta: {
  1533. noCache: true,
  1534. hidden: true,
  1535. canTo: true,
  1536. title: '修改流程',
  1537. activeMenu: '/bpm/manager/model'
  1538. }
  1539. }
  1540. ]
  1541. },
  1542. {
  1543. path: '/mall/product', // 商品中心
  1544. component: Layout,
  1545. name: 'ProductCenter',
  1546. meta: {
  1547. hidden: true
  1548. },
  1549. children: [
  1550. {
  1551. path: 'spu/add',
  1552. component: () => import('@/views/mall/product/spu/form/index.vue'),
  1553. name: 'ProductSpuAdd',
  1554. meta: {
  1555. noCache: false, // 需要缓存
  1556. hidden: true,
  1557. canTo: true,
  1558. icon: 'ep:edit',
  1559. title: '商品添加',
  1560. activeMenu: '/mall/product/spu'
  1561. }
  1562. },
  1563. {
  1564. path: 'spu/edit/:id(\\d+)',
  1565. component: () => import('@/views/mall/product/spu/form/index.vue'),
  1566. name: 'ProductSpuEdit',
  1567. meta: {
  1568. noCache: true,
  1569. hidden: true,
  1570. canTo: true,
  1571. icon: 'ep:edit',
  1572. title: '商品编辑',
  1573. activeMenu: '/mall/product/spu'
  1574. }
  1575. },
  1576. {
  1577. path: 'spu/detail/:id(\\d+)',
  1578. component: () => import('@/views/mall/product/spu/form/index.vue'),
  1579. name: 'ProductSpuDetail',
  1580. meta: {
  1581. noCache: true,
  1582. hidden: true,
  1583. canTo: true,
  1584. icon: 'ep:view',
  1585. title: '商品详情',
  1586. activeMenu: '/mall/product/spu'
  1587. }
  1588. },
  1589. {
  1590. path: 'property/value/:propertyId(\\d+)',
  1591. component: () => import('@/views/mall/product/property/value/index.vue'),
  1592. name: 'ProductPropertyValue',
  1593. meta: {
  1594. noCache: true,
  1595. hidden: true,
  1596. canTo: true,
  1597. icon: 'ep:view',
  1598. title: '商品属性值',
  1599. activeMenu: '/product/property'
  1600. }
  1601. }
  1602. ]
  1603. },
  1604. {
  1605. path: '/mall/trade', // 交易中心
  1606. component: Layout,
  1607. name: 'TradeCenter',
  1608. meta: {
  1609. hidden: true
  1610. },
  1611. children: [
  1612. {
  1613. path: 'order/detail/:id(\\d+)',
  1614. component: () => import('@/views/mall/trade/order/detail/index.vue'),
  1615. name: 'TradeOrderDetail',
  1616. meta: { title: '订单详情', icon: 'ep:view', activeMenu: '/mall/trade/order' }
  1617. },
  1618. {
  1619. path: 'after-sale/detail/:id(\\d+)',
  1620. component: () => import('@/views/mall/trade/afterSale/detail/index.vue'),
  1621. name: 'TradeAfterSaleDetail',
  1622. meta: { title: '退款详情', icon: 'ep:view', activeMenu: '/mall/trade/after-sale' }
  1623. }
  1624. ]
  1625. },
  1626. {
  1627. path: '/member',
  1628. component: Layout,
  1629. name: 'MemberCenter',
  1630. meta: { hidden: true },
  1631. children: [
  1632. {
  1633. path: 'user/detail/:id',
  1634. name: 'MemberUserDetail',
  1635. meta: {
  1636. title: '会员详情',
  1637. noCache: true,
  1638. hidden: true
  1639. },
  1640. component: () => import('@/views/member/user/detail/index.vue')
  1641. }
  1642. ]
  1643. },
  1644. {
  1645. path: '/pay',
  1646. component: Layout,
  1647. name: 'pay',
  1648. meta: { hidden: true },
  1649. children: [
  1650. {
  1651. path: 'cashier',
  1652. name: 'PayCashier',
  1653. meta: {
  1654. title: '收银台',
  1655. noCache: true,
  1656. hidden: true
  1657. },
  1658. component: () => import('@/views/pay/cashier/index.vue')
  1659. }
  1660. ]
  1661. },
  1662. {
  1663. path: '/diy',
  1664. name: 'DiyCenter',
  1665. meta: { hidden: true },
  1666. component: Layout,
  1667. children: [
  1668. {
  1669. path: 'template/decorate/:id',
  1670. name: 'DiyTemplateDecorate',
  1671. meta: {
  1672. title: '模板装修',
  1673. noCache: true,
  1674. hidden: true,
  1675. activeMenu: '/mall/promotion/diy/template'
  1676. },
  1677. component: () => import('@/views/mall/promotion/diy/template/decorate.vue')
  1678. },
  1679. {
  1680. path: 'page/decorate/:id',
  1681. name: 'DiyPageDecorate',
  1682. meta: {
  1683. title: '页面装修',
  1684. noCache: true,
  1685. hidden: true,
  1686. activeMenu: '/mall/promotion/diy/page'
  1687. },
  1688. component: () => import('@/views/mall/promotion/diy/page/decorate.vue')
  1689. }
  1690. ]
  1691. },
  1692. {
  1693. path: '/crm',
  1694. component: Layout,
  1695. name: 'CrmCenter',
  1696. meta: { hidden: true },
  1697. children: [
  1698. {
  1699. path: 'clue/detail/:id',
  1700. name: 'CrmClueDetail',
  1701. meta: {
  1702. title: '线索详情',
  1703. noCache: true,
  1704. hidden: true,
  1705. activeMenu: '/crm/clue'
  1706. },
  1707. component: () => import('@/views/crm/clue/detail/index.vue')
  1708. },
  1709. {
  1710. path: 'customer/detail/:id',
  1711. name: 'CrmCustomerDetail',
  1712. meta: {
  1713. title: '客户详情',
  1714. noCache: true,
  1715. hidden: true,
  1716. activeMenu: '/crm/customer'
  1717. },
  1718. component: () => import('@/views/crm/customer/detail/index.vue')
  1719. },
  1720. {
  1721. path: 'business/detail/:id',
  1722. name: 'CrmBusinessDetail',
  1723. meta: {
  1724. title: '商机详情',
  1725. noCache: true,
  1726. hidden: true,
  1727. activeMenu: '/crm/business'
  1728. },
  1729. component: () => import('@/views/crm/business/detail/index.vue')
  1730. },
  1731. {
  1732. path: 'contract/detail/:id',
  1733. name: 'CrmContractDetail',
  1734. meta: {
  1735. title: '合同详情',
  1736. noCache: true,
  1737. hidden: true,
  1738. activeMenu: '/crm/contract'
  1739. },
  1740. component: () => import('@/views/crm/contract/detail/index.vue')
  1741. },
  1742. {
  1743. path: 'receivable-plan/detail/:id',
  1744. name: 'CrmReceivablePlanDetail',
  1745. meta: {
  1746. title: '回款计划详情',
  1747. noCache: true,
  1748. hidden: true,
  1749. activeMenu: '/crm/receivable-plan'
  1750. },
  1751. component: () => import('@/views/crm/receivable/plan/detail/index.vue')
  1752. },
  1753. {
  1754. path: 'receivable/detail/:id',
  1755. name: 'CrmReceivableDetail',
  1756. meta: {
  1757. title: '回款详情',
  1758. noCache: true,
  1759. hidden: true,
  1760. activeMenu: '/crm/receivable'
  1761. },
  1762. component: () => import('@/views/crm/receivable/detail/index.vue')
  1763. },
  1764. {
  1765. path: 'contact/detail/:id',
  1766. name: 'CrmContactDetail',
  1767. meta: {
  1768. title: '联系人详情',
  1769. noCache: true,
  1770. hidden: true,
  1771. activeMenu: '/crm/contact'
  1772. },
  1773. component: () => import('@/views/crm/contact/detail/index.vue')
  1774. },
  1775. {
  1776. path: 'product/detail/:id',
  1777. name: 'CrmProductDetail',
  1778. meta: {
  1779. title: '产品详情',
  1780. noCache: true,
  1781. hidden: true,
  1782. activeMenu: '/crm/product'
  1783. },
  1784. component: () => import('@/views/crm/product/detail/index.vue')
  1785. }
  1786. ]
  1787. },
  1788. {
  1789. path: '/ai',
  1790. component: Layout,
  1791. name: 'Ai',
  1792. meta: {
  1793. hidden: true
  1794. },
  1795. children: [
  1796. {
  1797. path: 'image/square',
  1798. component: () => import('@/views/ai/image/square/index.vue'),
  1799. name: 'AiImageSquare',
  1800. meta: {
  1801. title: '绘图作品',
  1802. icon: 'ep:home-filled',
  1803. noCache: false
  1804. }
  1805. },
  1806. {
  1807. path: 'knowledge/document',
  1808. component: () => import('@/views/ai/knowledge/document/index.vue'),
  1809. name: 'AiKnowledgeDocument',
  1810. meta: {
  1811. title: '知识库文档',
  1812. icon: 'ep:document',
  1813. noCache: false,
  1814. activeMenu: '/ai/knowledge'
  1815. }
  1816. },
  1817. {
  1818. path: 'knowledge/document/create',
  1819. component: () => import('@/views/ai/knowledge/document/form/index.vue'),
  1820. name: 'AiKnowledgeDocumentCreate',
  1821. meta: {
  1822. title: '创建文档',
  1823. icon: 'ep:plus',
  1824. noCache: true,
  1825. hidden: true,
  1826. activeMenu: '/ai/knowledge'
  1827. }
  1828. },
  1829. {
  1830. path: 'knowledge/document/update',
  1831. component: () => import('@/views/ai/knowledge/document/form/index.vue'),
  1832. name: 'AiKnowledgeDocumentUpdate',
  1833. meta: {
  1834. title: '修改文档',
  1835. icon: 'ep:edit',
  1836. noCache: true,
  1837. hidden: true,
  1838. activeMenu: '/ai/knowledge'
  1839. }
  1840. },
  1841. {
  1842. path: 'knowledge/retrieval',
  1843. component: () => import('@/views/ai/knowledge/knowledge/retrieval/index.vue'),
  1844. name: 'AiKnowledgeRetrieval',
  1845. meta: {
  1846. title: '文档召回测试',
  1847. icon: 'ep:search',
  1848. noCache: true,
  1849. hidden: true,
  1850. activeMenu: '/ai/knowledge'
  1851. }
  1852. },
  1853. {
  1854. path: 'knowledge/segment',
  1855. component: () => import('@/views/ai/knowledge/segment/index.vue'),
  1856. name: 'AiKnowledgeSegment',
  1857. meta: {
  1858. title: '知识库分段',
  1859. icon: 'ep:tickets',
  1860. noCache: true,
  1861. hidden: true,
  1862. activeMenu: '/ai/knowledge'
  1863. }
  1864. },
  1865. {
  1866. path: 'console/workflow/create',
  1867. component: () => import('@/views/ai/workflow/form/index.vue'),
  1868. name: 'AiWorkflowCreate',
  1869. meta: {
  1870. noCache: true,
  1871. hidden: true,
  1872. canTo: true,
  1873. title: '设计 AI 工作流',
  1874. activeMenu: '/ai/console/workflow'
  1875. }
  1876. },
  1877. {
  1878. path: 'console/workflow/:type/:id',
  1879. component: () => import('@/views/ai/workflow/form/index.vue'),
  1880. name: 'AiWorkflowUpdate',
  1881. meta: {
  1882. noCache: true,
  1883. hidden: true,
  1884. canTo: true,
  1885. title: '设计 AI 工作流',
  1886. activeMenu: '/ai/console/workflow'
  1887. }
  1888. }
  1889. ]
  1890. },
  1891. {
  1892. path: '/:pathMatch(.*)*',
  1893. component: () => import('@/views/Error/404.vue'),
  1894. name: '',
  1895. meta: {
  1896. title: '404',
  1897. hidden: true,
  1898. breadcrumb: false
  1899. }
  1900. },
  1901. {
  1902. path: '/iot',
  1903. component: Layout,
  1904. name: 'IOT',
  1905. meta: {
  1906. hidden: true
  1907. },
  1908. children: [
  1909. {
  1910. path: 'product/product/detail/:id',
  1911. name: 'IoTProductDetail',
  1912. meta: {
  1913. title: '产品详情',
  1914. noCache: true,
  1915. hidden: true,
  1916. activeMenu: '/iot/device/product'
  1917. },
  1918. component: () => import('@/views/iot/product/product/detail/index.vue')
  1919. },
  1920. {
  1921. path: 'device/detail/:id',
  1922. name: 'IoTDeviceDetail',
  1923. meta: {
  1924. title: '设备详情',
  1925. noCache: true,
  1926. hidden: true,
  1927. activeMenu: '/iot/device/device'
  1928. },
  1929. component: () => import('@/views/iot/device/device/detail/index.vue')
  1930. },
  1931. {
  1932. path: 'plugin/detail/:id',
  1933. name: 'IoTPluginDetail',
  1934. meta: {
  1935. title: '插件详情',
  1936. noCache: true,
  1937. hidden: true,
  1938. activeMenu: '/iot/plugin'
  1939. },
  1940. component: () => import('@/views/iot/plugin/detail/index.vue')
  1941. }
  1942. ]
  1943. },
  1944. ]
  1945. export default remainingRouter