remaining.ts 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024
  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/rddailyreport',
  919. component: Layout,
  920. name: 'RDDailyReport',
  921. meta: {
  922. hidden: true,
  923. keepAlive: true
  924. },
  925. children: [
  926. {
  927. path: 'dailyReport',
  928. component: () => import('@/views/pms/iotrddailyreport/fillDailyReport.vue'),
  929. name: 'FillDailyReport',
  930. meta: {
  931. keepAlive: true,
  932. noCache: false,
  933. hidden: true,
  934. canTo: true,
  935. icon: 'ep:menu',
  936. title: t('project.dailyReport'),
  937. activeMenu: '/dailyReport/index'
  938. }
  939. },
  940. {
  941. path: 'dailyReport/fill/:id(\\d+)/:mode',
  942. component: () => import('@/views/pms/iotrddailyreport/FillDailyReportForm.vue'),
  943. name: 'FillDailyReportForm',
  944. meta: {
  945. noCache: false,
  946. hidden: true,
  947. canTo: true,
  948. icon: 'ep:add',
  949. title: t('project.fillReport'),
  950. activeMenu: '/dailyReport/fill'
  951. }
  952. }
  953. ]
  954. },
  955. {
  956. path: '/iotpms/maincalendar',
  957. component: Layout,
  958. name: 'PmsMainCalendarCenter',
  959. meta: {
  960. hidden: true
  961. },
  962. children: [
  963. {
  964. path: 'maintenancecalendar',
  965. component: () => import('@/views/pms/iotmaincalendar/index.vue'),
  966. name: 'MaintenanceCalendar',
  967. meta: {
  968. noCache: false,
  969. hidden: true,
  970. canTo: true,
  971. icon: 'ep:menu',
  972. title: t('rem.MaintainCalendar'),
  973. activeMenu: '/maintenancecalendar/index'
  974. }
  975. }
  976. ]
  977. },
  978. {
  979. path: '/iotpms/iotmaintain',
  980. component: Layout,
  981. name: 'PmsMaintainCenter',
  982. meta: {
  983. hidden: true
  984. },
  985. children: [
  986. {
  987. path: 'maintain/add/:id?(\\d+)',
  988. component: () => import('@/views/pms/maintain/IotMaintainAddEdit.vue'),
  989. name: 'MaintainAdd',
  990. meta: {
  991. noCache: false,
  992. hidden: true,
  993. canTo: true,
  994. icon: 'ep:add',
  995. title: t('rem.RepairOrderAdd'),
  996. activeMenu: '/maintain/add'
  997. }
  998. },
  999. {
  1000. path: 'maintain/record/:id?(\\d+)',
  1001. component: () => import('@/views/pms/maintain/IotMaintainRecord.vue'),
  1002. name: 'MaintainRecord',
  1003. meta: {
  1004. noCache: false,
  1005. hidden: true,
  1006. canTo: true,
  1007. icon: 'ep:add',
  1008. title: t('rem.MaintainRecord'),
  1009. activeMenu: '/maintain/record'
  1010. }
  1011. },
  1012. {
  1013. path: 'maintain/edit/:id(\\d+)',
  1014. component: () => import('@/views/pms/maintain/IotMaintainAddEdit.vue'),
  1015. name: 'MaintainEdit',
  1016. meta: {
  1017. noCache: true,
  1018. hidden: true,
  1019. canTo: true,
  1020. icon: 'ep:edit',
  1021. title: t('rem.RepairOrderEdit'),
  1022. activeMenu: '/maintain/edit'
  1023. }
  1024. },{
  1025. path: 'maintain/detail/:id(\\d+)',
  1026. component: () => import('@/views/pms/maintain/IotMaintainDetail.vue'),
  1027. name: 'MaintainDetail',
  1028. meta: {
  1029. noCache: false,
  1030. hidden: true,
  1031. canTo: true,
  1032. icon: 'ep:add',
  1033. title: t('rem.RepairOrderDetail'),
  1034. activeMenu: '/maintain/detail'
  1035. }
  1036. },
  1037. ]
  1038. },
  1039. {
  1040. path: '/iotpms/iotinspectroute',
  1041. component: Layout,
  1042. name: 'PmsInspectRouteCenter',
  1043. meta: {
  1044. hidden: true
  1045. },
  1046. children: [
  1047. {
  1048. path: 'route/add',
  1049. component: () => import('@/views/pms/inspect/route/IotInspectRoute.vue'),
  1050. name: 'RouteAdd',
  1051. meta: {
  1052. noCache: false,
  1053. hidden: true,
  1054. canTo: true,
  1055. icon: 'ep:add',
  1056. title: t('rem.InspectionRouteAdd'),
  1057. activeMenu: '/route/add'
  1058. }
  1059. },
  1060. {
  1061. path: 'route/edit/:id(\\d+)',
  1062. component: () => import('@/views/pms/inspect/route/IotInspectRoute.vue'),
  1063. name: 'RouteEdit',
  1064. meta: {
  1065. noCache: true,
  1066. hidden: true,
  1067. canTo: true,
  1068. icon: 'ep:edit',
  1069. title: t('rem.InspectionRouteEdit'),
  1070. activeMenu: '/route/edit'
  1071. }
  1072. // }
  1073. // ,{
  1074. // path: 'route/detail/:id(\\d+)',
  1075. // component: () => import('@/views/pms/maintain/IotMaintainDetail.vue'),
  1076. // name: 'InspectRouteDetail',
  1077. // meta: {
  1078. // noCache: false,
  1079. // hidden: true,
  1080. // canTo: true,
  1081. // icon: 'ep:add',
  1082. // title: '巡检路线详情',
  1083. // activeMenu: '/route/detail'
  1084. // }
  1085. },
  1086. ]
  1087. },
  1088. {
  1089. path: '/iotpms/iotinspectplan',
  1090. component: Layout,
  1091. name: 'PmsInspectPlanCenter',
  1092. meta: {
  1093. hidden: true
  1094. },
  1095. children: [
  1096. {
  1097. path: 'inspect/plan/add',
  1098. component: () => import('@/views/pms/inspect/plan/IotInspectPlan.vue'),
  1099. name: 'InspectPlanAdd',
  1100. meta: {
  1101. noCache: false,
  1102. hidden: true,
  1103. canTo: true,
  1104. icon: 'ep:add',
  1105. title: t('rem.InspectPlanAdd'),
  1106. activeMenu: '/inspect/plan/add'
  1107. }
  1108. },
  1109. {
  1110. path: 'inspect/plan/edit/:id(\\d+)',
  1111. component: () => import('@/views/pms/inspect/plan/IotInspectPlan.vue'),
  1112. name: 'InspectPlanEdit',
  1113. meta: {
  1114. noCache: true,
  1115. hidden: true,
  1116. canTo: true,
  1117. icon: 'ep:edit',
  1118. title: t('rem.InspectPlanEdit'),
  1119. activeMenu: '/inspect/plan/edit'
  1120. }
  1121. // }
  1122. // ,{
  1123. // path: 'route/detail/:id(\\d+)',
  1124. // component: () => import('@/views/pms/maintain/IotMaintainDetail.vue'),
  1125. // name: 'InspectRouteDetail',
  1126. // meta: {
  1127. // noCache: false,
  1128. // hidden: true,
  1129. // canTo: true,
  1130. // icon: 'ep:add',
  1131. // title: '巡检路线详情',
  1132. // activeMenu: '/route/detail'
  1133. // }
  1134. },
  1135. ]
  1136. },
  1137. {
  1138. path: '/iotpms/iotinspectorder',
  1139. component: Layout,
  1140. name: 'PmsInspectOrderCenter',
  1141. meta: {
  1142. hidden: true
  1143. },
  1144. children: [
  1145. {
  1146. path: 'inspect/order/detail/index/:deptId?/:status?/:createTime*',
  1147. component: () => import('@/views/pms/inspect/order/detail/IotInspectOrderDetailStat.vue'),
  1148. name: 'IotInspectOrderDetailStat',
  1149. meta: {
  1150. noCache: false,
  1151. hidden: true,
  1152. canTo: true,
  1153. icon: 'ep:index',
  1154. title: t('rem.InspectOrder'),
  1155. activeMenu: '/inspect/order/detail/index'
  1156. }
  1157. },
  1158. {
  1159. path: 'inspect/order/index/:deptId?/:status?/:createTime*',
  1160. component: () => import('@/views/pms/inspect/order/index.vue'),
  1161. name: 'IotInspectOrdere',
  1162. meta: {
  1163. noCache: false,
  1164. hidden: true,
  1165. canTo: true,
  1166. icon: 'ep:index',
  1167. title: t('rem.InspectOrder'),
  1168. activeMenu: '/inspect/order/index'
  1169. }
  1170. },
  1171. {
  1172. path: 'inspect/order/item/index/:deptId?/:status?/:createTime*',
  1173. component: () => import('@/views/pms/inspect/order/detail/IotInspectOrderItemStat.vue'),
  1174. name: 'IotInspectItemStat',
  1175. meta: {
  1176. noCache: false,
  1177. hidden: true,
  1178. canTo: true,
  1179. icon: 'ep:index',
  1180. title: t('rem.InspectOrder'),
  1181. activeMenu: '/inspect/order/item/index'
  1182. }
  1183. },
  1184. {
  1185. path: 'inspect/order/add',
  1186. component: () => import('@/views/pms/inspect/order/InspectOrderDetail.vue'),
  1187. name: 'InspectOrderAdd',
  1188. meta: {
  1189. noCache: false,
  1190. hidden: true,
  1191. canTo: true,
  1192. icon: 'ep:add',
  1193. title: t('rem.InspectOrderAdd'),
  1194. activeMenu: '/inspect/order/add'
  1195. }
  1196. },
  1197. {
  1198. path: 'inspect/order/edit/:id(\\d+)',
  1199. component: () => import('@/views/pms/inspect/order/InspectOrderDetail.vue'),
  1200. name: 'InspectOrderEdit',
  1201. meta: {
  1202. noCache: true,
  1203. hidden: true,
  1204. canTo: true,
  1205. icon: 'ep:edit',
  1206. title: t('rem.InspectPlanEdit'),
  1207. activeMenu: '/inspect/order/edit'
  1208. }
  1209. }
  1210. ,{
  1211. path: '/inspect/order/detail/:id(\\d+)',
  1212. component: () => import('@/views/pms/inspect/order/InspectOrderDetail.vue'),
  1213. name: 'InspectOrderDetail',
  1214. meta: {
  1215. noCache: false,
  1216. hidden: true,
  1217. canTo: true,
  1218. icon: 'ep:add',
  1219. title: t('rem.InspectOrderDetail'),
  1220. activeMenu: '/inspect/order/detail'
  1221. }
  1222. },{
  1223. path: '/inspect/order/write/:id(\\d+)',
  1224. component: () => import('@/views/pms/inspect/order/WriteOrder.vue'),
  1225. name: 'InspectOrderWrite',
  1226. meta: {
  1227. noCache: false,
  1228. hidden: true,
  1229. canTo: true,
  1230. icon: 'ep:add',
  1231. title: t('rem.InspectOrderAdd'),
  1232. activeMenu: '/inspect/order/write'
  1233. }
  1234. }
  1235. ]
  1236. },
  1237. {
  1238. path: '/failure',
  1239. component: Layout,
  1240. name: 'failure',
  1241. meta: {
  1242. hidden: true
  1243. },
  1244. children: [
  1245. {
  1246. path: 'failure/detail/:id',
  1247. component: () => import('@/views/pms/failure/FailureInfo.vue'),
  1248. name: 'FailureDetail',
  1249. meta: {
  1250. noCache: true,
  1251. hidden: true,
  1252. canTo: true,
  1253. title: t('rem.FailureDetail'),
  1254. activeMenu: '/failure/detail'
  1255. }
  1256. }
  1257. ]
  1258. },
  1259. {
  1260. path: '/user',
  1261. component: Layout,
  1262. name: 'UserInfo',
  1263. meta: {
  1264. hidden: true
  1265. },
  1266. children: [
  1267. {
  1268. path: 'profile',
  1269. component: () => import('@/views/Profile/Index.vue'),
  1270. name: 'Profile',
  1271. meta: {
  1272. canTo: true,
  1273. hidden: true,
  1274. noTagsView: false,
  1275. icon: 'ep:user',
  1276. title: t('common.profile')
  1277. }
  1278. },
  1279. {
  1280. path: 'notify-message',
  1281. component: () => import('@/views/system/notify/my/index.vue'),
  1282. name: 'MyNotifyMessage',
  1283. meta: {
  1284. canTo: true,
  1285. hidden: true,
  1286. noTagsView: false,
  1287. icon: 'ep:message',
  1288. title: '我的站内信'
  1289. }
  1290. }
  1291. ]
  1292. },
  1293. {
  1294. path: '/dict',
  1295. component: Layout,
  1296. name: 'dict',
  1297. meta: {
  1298. hidden: true
  1299. },
  1300. children: [
  1301. {
  1302. path: 'type/data/:dictType',
  1303. component: () => import('@/views/system/dict/data/index.vue'),
  1304. name: 'SystemDictData',
  1305. meta: {
  1306. title: '字典数据',
  1307. noCache: true,
  1308. hidden: true,
  1309. canTo: true,
  1310. icon: '',
  1311. activeMenu: '/system/dict'
  1312. }
  1313. }
  1314. ]
  1315. },
  1316. {
  1317. path: '/codegen',
  1318. component: Layout,
  1319. name: 'CodegenEdit',
  1320. meta: {
  1321. hidden: true
  1322. },
  1323. children: [
  1324. {
  1325. path: 'edit',
  1326. component: () => import('@/views/infra/codegen/EditTable.vue'),
  1327. name: 'InfraCodegenEditTable',
  1328. meta: {
  1329. noCache: true,
  1330. hidden: true,
  1331. canTo: true,
  1332. icon: 'ep:edit',
  1333. title: '修改生成配置',
  1334. activeMenu: 'infra/codegen/index'
  1335. }
  1336. }
  1337. ]
  1338. },
  1339. {
  1340. path: '/job',
  1341. component: Layout,
  1342. name: 'JobL',
  1343. meta: {
  1344. hidden: true
  1345. },
  1346. children: [
  1347. {
  1348. path: 'job-log',
  1349. component: () => import('@/views/infra/job/logger/index.vue'),
  1350. name: 'InfraJobLog',
  1351. meta: {
  1352. noCache: true,
  1353. hidden: true,
  1354. canTo: true,
  1355. icon: 'ep:edit',
  1356. title: '调度日志',
  1357. activeMenu: 'infra/job/index'
  1358. }
  1359. }
  1360. ]
  1361. },
  1362. {
  1363. path: '/login',
  1364. component: () => import('@/views/Login/Login.vue'),
  1365. name: 'Login',
  1366. meta: {
  1367. hidden: true,
  1368. title: t('router.login'),
  1369. noTagsView: true
  1370. }
  1371. },
  1372. {
  1373. path: '/sso',
  1374. component: () => import('@/views/Login/Login.vue'),
  1375. name: 'SSOLogin',
  1376. meta: {
  1377. hidden: true,
  1378. title: t('router.login'),
  1379. noTagsView: true
  1380. }
  1381. },
  1382. {
  1383. path: '/social-login',
  1384. component: () => import('@/views/Login/SocialLogin.vue'),
  1385. name: 'SocialLogin',
  1386. meta: {
  1387. hidden: true,
  1388. title: t('router.socialLogin'),
  1389. noTagsView: true
  1390. }
  1391. },
  1392. {
  1393. path: '/403',
  1394. component: () => import('@/views/Error/403.vue'),
  1395. name: 'NoAccess',
  1396. meta: {
  1397. hidden: true,
  1398. title: '403',
  1399. noTagsView: true
  1400. }
  1401. },
  1402. {
  1403. path: '/404',
  1404. component: () => import('@/views/Error/404.vue'),
  1405. name: 'NoFound',
  1406. meta: {
  1407. hidden: true,
  1408. title: '404',
  1409. noTagsView: true
  1410. }
  1411. },
  1412. {
  1413. path: '/500',
  1414. component: () => import('@/views/Error/500.vue'),
  1415. name: 'Error',
  1416. meta: {
  1417. hidden: true,
  1418. title: '500',
  1419. noTagsView: true
  1420. }
  1421. },
  1422. {
  1423. path: '/supplier/product', // 商品中心
  1424. component: Layout,
  1425. name: 'SupplierCenter',
  1426. meta: {
  1427. hidden: true
  1428. },
  1429. children: [
  1430. {
  1431. path: 'supplier/detail/add',
  1432. component: () => import('@/views/supplier/base/form/index.vue'),
  1433. name: 'SupplierDetailAdd',
  1434. meta: {
  1435. noCache: false,
  1436. hidden: true,
  1437. canTo: true,
  1438. icon: 'ep:edit',
  1439. title: '供应商添加',
  1440. activeMenu: '/supplier/base'
  1441. }
  1442. },
  1443. {
  1444. path: 'supplier/detail/edit/:id(\\d+)',
  1445. component: () => import('@/views/supplier/base/form/index.vue'),
  1446. name: 'SupplierDetailEdit',
  1447. meta: {
  1448. noCache: true,
  1449. hidden: true,
  1450. canTo: true,
  1451. icon: 'ep:edit',
  1452. title: '供应商编辑',
  1453. activeMenu: '/supplier/base'
  1454. }
  1455. },
  1456. {
  1457. path: '/supplier/detail/info/:id(\\d+)',
  1458. component: () => import('@/views/supplier/base/form/index.vue'),
  1459. name: 'SupplierDetailInfo',
  1460. meta: {
  1461. noCache: true,
  1462. hidden: true,
  1463. canTo: true,
  1464. icon: 'ep:view',
  1465. title: '供应商详情',
  1466. activeMenu: '/supplier/base'
  1467. }
  1468. },
  1469. {
  1470. path: 'supplier/approvalDetail/:id',
  1471. name: 'SupplierApprovalInfo',
  1472. meta: {
  1473. title: '供应商审核详情',
  1474. noCache: true,
  1475. hidden: true,
  1476. activeMenu: '/supplier/base'
  1477. },
  1478. component: () => import('@/views/supplier/approvaldetail/ApprovalDetail.vue')
  1479. }
  1480. ]
  1481. },
  1482. {
  1483. path: '/bpm',
  1484. component: Layout,
  1485. name: 'bpm',
  1486. meta: {
  1487. hidden: true
  1488. },
  1489. children: [
  1490. {
  1491. path: 'manager/form/edit',
  1492. component: () => import('@/views/bpm/form/editor/index.vue'),
  1493. name: 'BpmFormEditor',
  1494. meta: {
  1495. noCache: true,
  1496. hidden: true,
  1497. canTo: true,
  1498. title: '设计流程表单',
  1499. activeMenu: '/bpm/manager/form'
  1500. }
  1501. },
  1502. {
  1503. path: 'manager/definition',
  1504. component: () => import('@/views/bpm/model/definition/index.vue'),
  1505. name: 'BpmProcessDefinition',
  1506. meta: {
  1507. noCache: true,
  1508. hidden: true,
  1509. canTo: true,
  1510. title: '流程定义',
  1511. activeMenu: '/bpm/manager/model'
  1512. }
  1513. },
  1514. {
  1515. path: 'process-instance/detail',
  1516. component: () => import('@/views/bpm/processInstance/detail/index.vue'),
  1517. name: 'BpmProcessInstanceDetail',
  1518. meta: {
  1519. noCache: true,
  1520. hidden: true,
  1521. canTo: true,
  1522. title: '流程详情',
  1523. activeMenu: '/bpm/task/my'
  1524. },
  1525. props: (route) => ({
  1526. id: route.query.id,
  1527. taskId: route.query.taskId,
  1528. activityId: route.query.activityId
  1529. })
  1530. },
  1531. {
  1532. path: 'process-instance/report',
  1533. component: () => import('@/views/bpm/processInstance/report/index.vue'),
  1534. name: 'BpmProcessInstanceReport',
  1535. meta: {
  1536. noCache: true,
  1537. hidden: true,
  1538. canTo: true,
  1539. title: '数据报表',
  1540. activeMenu: '/bpm/manager/model'
  1541. }
  1542. },
  1543. {
  1544. path: 'oa/leave/create',
  1545. component: () => import('@/views/bpm/oa/leave/create.vue'),
  1546. name: 'OALeaveCreate',
  1547. meta: {
  1548. noCache: true,
  1549. hidden: true,
  1550. canTo: true,
  1551. title: '发起 OA 请假',
  1552. activeMenu: '/bpm/oa/leave'
  1553. }
  1554. },
  1555. {
  1556. path: 'oa/leave/detail',
  1557. component: () => import('@/views/bpm/oa/leave/detail.vue'),
  1558. name: 'OALeaveDetail',
  1559. meta: {
  1560. noCache: true,
  1561. hidden: true,
  1562. canTo: true,
  1563. title: '查看 OA 请假',
  1564. activeMenu: '/bpm/oa/leave'
  1565. }
  1566. },
  1567. {
  1568. path: 'manager/model/create',
  1569. component: () => import('@/views/bpm/model/form/index.vue'),
  1570. name: 'BpmModelCreate',
  1571. meta: {
  1572. noCache: true,
  1573. hidden: true,
  1574. canTo: true,
  1575. title: '创建流程',
  1576. activeMenu: '/bpm/manager/model'
  1577. }
  1578. },
  1579. {
  1580. path: 'manager/model/:type/:id',
  1581. component: () => import('@/views/bpm/model/form/index.vue'),
  1582. name: 'BpmModelUpdate',
  1583. meta: {
  1584. noCache: true,
  1585. hidden: true,
  1586. canTo: true,
  1587. title: '修改流程',
  1588. activeMenu: '/bpm/manager/model'
  1589. }
  1590. }
  1591. ]
  1592. },
  1593. {
  1594. path: '/mall/product', // 商品中心
  1595. component: Layout,
  1596. name: 'ProductCenter',
  1597. meta: {
  1598. hidden: true
  1599. },
  1600. children: [
  1601. {
  1602. path: 'spu/add',
  1603. component: () => import('@/views/mall/product/spu/form/index.vue'),
  1604. name: 'ProductSpuAdd',
  1605. meta: {
  1606. noCache: false, // 需要缓存
  1607. hidden: true,
  1608. canTo: true,
  1609. icon: 'ep:edit',
  1610. title: '商品添加',
  1611. activeMenu: '/mall/product/spu'
  1612. }
  1613. },
  1614. {
  1615. path: 'spu/edit/:id(\\d+)',
  1616. component: () => import('@/views/mall/product/spu/form/index.vue'),
  1617. name: 'ProductSpuEdit',
  1618. meta: {
  1619. noCache: true,
  1620. hidden: true,
  1621. canTo: true,
  1622. icon: 'ep:edit',
  1623. title: '商品编辑',
  1624. activeMenu: '/mall/product/spu'
  1625. }
  1626. },
  1627. {
  1628. path: 'spu/detail/:id(\\d+)',
  1629. component: () => import('@/views/mall/product/spu/form/index.vue'),
  1630. name: 'ProductSpuDetail',
  1631. meta: {
  1632. noCache: true,
  1633. hidden: true,
  1634. canTo: true,
  1635. icon: 'ep:view',
  1636. title: '商品详情',
  1637. activeMenu: '/mall/product/spu'
  1638. }
  1639. },
  1640. {
  1641. path: 'property/value/:propertyId(\\d+)',
  1642. component: () => import('@/views/mall/product/property/value/index.vue'),
  1643. name: 'ProductPropertyValue',
  1644. meta: {
  1645. noCache: true,
  1646. hidden: true,
  1647. canTo: true,
  1648. icon: 'ep:view',
  1649. title: '商品属性值',
  1650. activeMenu: '/product/property'
  1651. }
  1652. }
  1653. ]
  1654. },
  1655. {
  1656. path: '/mall/trade', // 交易中心
  1657. component: Layout,
  1658. name: 'TradeCenter',
  1659. meta: {
  1660. hidden: true
  1661. },
  1662. children: [
  1663. {
  1664. path: 'order/detail/:id(\\d+)',
  1665. component: () => import('@/views/mall/trade/order/detail/index.vue'),
  1666. name: 'TradeOrderDetail',
  1667. meta: { title: '订单详情', icon: 'ep:view', activeMenu: '/mall/trade/order' }
  1668. },
  1669. {
  1670. path: 'after-sale/detail/:id(\\d+)',
  1671. component: () => import('@/views/mall/trade/afterSale/detail/index.vue'),
  1672. name: 'TradeAfterSaleDetail',
  1673. meta: { title: '退款详情', icon: 'ep:view', activeMenu: '/mall/trade/after-sale' }
  1674. }
  1675. ]
  1676. },
  1677. {
  1678. path: '/member',
  1679. component: Layout,
  1680. name: 'MemberCenter',
  1681. meta: { hidden: true },
  1682. children: [
  1683. {
  1684. path: 'user/detail/:id',
  1685. name: 'MemberUserDetail',
  1686. meta: {
  1687. title: '会员详情',
  1688. noCache: true,
  1689. hidden: true
  1690. },
  1691. component: () => import('@/views/member/user/detail/index.vue')
  1692. }
  1693. ]
  1694. },
  1695. {
  1696. path: '/pay',
  1697. component: Layout,
  1698. name: 'pay',
  1699. meta: { hidden: true },
  1700. children: [
  1701. {
  1702. path: 'cashier',
  1703. name: 'PayCashier',
  1704. meta: {
  1705. title: '收银台',
  1706. noCache: true,
  1707. hidden: true
  1708. },
  1709. component: () => import('@/views/pay/cashier/index.vue')
  1710. }
  1711. ]
  1712. },
  1713. {
  1714. path: '/diy',
  1715. name: 'DiyCenter',
  1716. meta: { hidden: true },
  1717. component: Layout,
  1718. children: [
  1719. {
  1720. path: 'template/decorate/:id',
  1721. name: 'DiyTemplateDecorate',
  1722. meta: {
  1723. title: '模板装修',
  1724. noCache: true,
  1725. hidden: true,
  1726. activeMenu: '/mall/promotion/diy/template'
  1727. },
  1728. component: () => import('@/views/mall/promotion/diy/template/decorate.vue')
  1729. },
  1730. {
  1731. path: 'page/decorate/:id',
  1732. name: 'DiyPageDecorate',
  1733. meta: {
  1734. title: '页面装修',
  1735. noCache: true,
  1736. hidden: true,
  1737. activeMenu: '/mall/promotion/diy/page'
  1738. },
  1739. component: () => import('@/views/mall/promotion/diy/page/decorate.vue')
  1740. }
  1741. ]
  1742. },
  1743. {
  1744. path: '/crm',
  1745. component: Layout,
  1746. name: 'CrmCenter',
  1747. meta: { hidden: true },
  1748. children: [
  1749. {
  1750. path: 'clue/detail/:id',
  1751. name: 'CrmClueDetail',
  1752. meta: {
  1753. title: '线索详情',
  1754. noCache: true,
  1755. hidden: true,
  1756. activeMenu: '/crm/clue'
  1757. },
  1758. component: () => import('@/views/crm/clue/detail/index.vue')
  1759. },
  1760. {
  1761. path: 'customer/detail/:id',
  1762. name: 'CrmCustomerDetail',
  1763. meta: {
  1764. title: '客户详情',
  1765. noCache: true,
  1766. hidden: true,
  1767. activeMenu: '/crm/customer'
  1768. },
  1769. component: () => import('@/views/crm/customer/detail/index.vue')
  1770. },
  1771. {
  1772. path: 'business/detail/:id',
  1773. name: 'CrmBusinessDetail',
  1774. meta: {
  1775. title: '商机详情',
  1776. noCache: true,
  1777. hidden: true,
  1778. activeMenu: '/crm/business'
  1779. },
  1780. component: () => import('@/views/crm/business/detail/index.vue')
  1781. },
  1782. {
  1783. path: 'contract/detail/:id',
  1784. name: 'CrmContractDetail',
  1785. meta: {
  1786. title: '合同详情',
  1787. noCache: true,
  1788. hidden: true,
  1789. activeMenu: '/crm/contract'
  1790. },
  1791. component: () => import('@/views/crm/contract/detail/index.vue')
  1792. },
  1793. {
  1794. path: 'receivable-plan/detail/:id',
  1795. name: 'CrmReceivablePlanDetail',
  1796. meta: {
  1797. title: '回款计划详情',
  1798. noCache: true,
  1799. hidden: true,
  1800. activeMenu: '/crm/receivable-plan'
  1801. },
  1802. component: () => import('@/views/crm/receivable/plan/detail/index.vue')
  1803. },
  1804. {
  1805. path: 'receivable/detail/:id',
  1806. name: 'CrmReceivableDetail',
  1807. meta: {
  1808. title: '回款详情',
  1809. noCache: true,
  1810. hidden: true,
  1811. activeMenu: '/crm/receivable'
  1812. },
  1813. component: () => import('@/views/crm/receivable/detail/index.vue')
  1814. },
  1815. {
  1816. path: 'contact/detail/:id',
  1817. name: 'CrmContactDetail',
  1818. meta: {
  1819. title: '联系人详情',
  1820. noCache: true,
  1821. hidden: true,
  1822. activeMenu: '/crm/contact'
  1823. },
  1824. component: () => import('@/views/crm/contact/detail/index.vue')
  1825. },
  1826. {
  1827. path: 'product/detail/:id',
  1828. name: 'CrmProductDetail',
  1829. meta: {
  1830. title: '产品详情',
  1831. noCache: true,
  1832. hidden: true,
  1833. activeMenu: '/crm/product'
  1834. },
  1835. component: () => import('@/views/crm/product/detail/index.vue')
  1836. }
  1837. ]
  1838. },
  1839. {
  1840. path: '/ai',
  1841. component: Layout,
  1842. name: 'Ai',
  1843. meta: {
  1844. hidden: true
  1845. },
  1846. children: [
  1847. {
  1848. path: 'image/square',
  1849. component: () => import('@/views/ai/image/square/index.vue'),
  1850. name: 'AiImageSquare',
  1851. meta: {
  1852. title: '绘图作品',
  1853. icon: 'ep:home-filled',
  1854. noCache: false
  1855. }
  1856. },
  1857. {
  1858. path: 'knowledge/document',
  1859. component: () => import('@/views/ai/knowledge/document/index.vue'),
  1860. name: 'AiKnowledgeDocument',
  1861. meta: {
  1862. title: '知识库文档',
  1863. icon: 'ep:document',
  1864. noCache: false,
  1865. activeMenu: '/ai/knowledge'
  1866. }
  1867. },
  1868. {
  1869. path: 'knowledge/document/create',
  1870. component: () => import('@/views/ai/knowledge/document/form/index.vue'),
  1871. name: 'AiKnowledgeDocumentCreate',
  1872. meta: {
  1873. title: '创建文档',
  1874. icon: 'ep:plus',
  1875. noCache: true,
  1876. hidden: true,
  1877. activeMenu: '/ai/knowledge'
  1878. }
  1879. },
  1880. {
  1881. path: 'knowledge/document/update',
  1882. component: () => import('@/views/ai/knowledge/document/form/index.vue'),
  1883. name: 'AiKnowledgeDocumentUpdate',
  1884. meta: {
  1885. title: '修改文档',
  1886. icon: 'ep:edit',
  1887. noCache: true,
  1888. hidden: true,
  1889. activeMenu: '/ai/knowledge'
  1890. }
  1891. },
  1892. {
  1893. path: 'knowledge/retrieval',
  1894. component: () => import('@/views/ai/knowledge/knowledge/retrieval/index.vue'),
  1895. name: 'AiKnowledgeRetrieval',
  1896. meta: {
  1897. title: '文档召回测试',
  1898. icon: 'ep:search',
  1899. noCache: true,
  1900. hidden: true,
  1901. activeMenu: '/ai/knowledge'
  1902. }
  1903. },
  1904. {
  1905. path: 'knowledge/segment',
  1906. component: () => import('@/views/ai/knowledge/segment/index.vue'),
  1907. name: 'AiKnowledgeSegment',
  1908. meta: {
  1909. title: '知识库分段',
  1910. icon: 'ep:tickets',
  1911. noCache: true,
  1912. hidden: true,
  1913. activeMenu: '/ai/knowledge'
  1914. }
  1915. },
  1916. {
  1917. path: 'console/workflow/create',
  1918. component: () => import('@/views/ai/workflow/form/index.vue'),
  1919. name: 'AiWorkflowCreate',
  1920. meta: {
  1921. noCache: true,
  1922. hidden: true,
  1923. canTo: true,
  1924. title: '设计 AI 工作流',
  1925. activeMenu: '/ai/console/workflow'
  1926. }
  1927. },
  1928. {
  1929. path: 'console/workflow/:type/:id',
  1930. component: () => import('@/views/ai/workflow/form/index.vue'),
  1931. name: 'AiWorkflowUpdate',
  1932. meta: {
  1933. noCache: true,
  1934. hidden: true,
  1935. canTo: true,
  1936. title: '设计 AI 工作流',
  1937. activeMenu: '/ai/console/workflow'
  1938. }
  1939. }
  1940. ]
  1941. },
  1942. {
  1943. path: '/:pathMatch(.*)*',
  1944. component: () => import('@/views/Error/404.vue'),
  1945. name: '',
  1946. meta: {
  1947. title: '404',
  1948. hidden: true,
  1949. breadcrumb: false
  1950. }
  1951. },
  1952. {
  1953. path: '/iot',
  1954. component: Layout,
  1955. name: 'IOT',
  1956. meta: {
  1957. hidden: true
  1958. },
  1959. children: [
  1960. {
  1961. path: 'product/product/detail/:id',
  1962. name: 'IoTProductDetail',
  1963. meta: {
  1964. title: '产品详情',
  1965. noCache: true,
  1966. hidden: true,
  1967. activeMenu: '/iot/device/product'
  1968. },
  1969. component: () => import('@/views/iot/product/product/detail/index.vue')
  1970. },
  1971. {
  1972. path: 'device/detail/:id',
  1973. name: 'IoTDeviceDetail',
  1974. meta: {
  1975. title: '设备详情',
  1976. noCache: true,
  1977. hidden: true,
  1978. activeMenu: '/iot/device/device'
  1979. },
  1980. component: () => import('@/views/iot/device/device/detail/index.vue')
  1981. },
  1982. {
  1983. path: 'plugin/detail/:id',
  1984. name: 'IoTPluginDetail',
  1985. meta: {
  1986. title: '插件详情',
  1987. noCache: true,
  1988. hidden: true,
  1989. activeMenu: '/iot/plugin'
  1990. },
  1991. component: () => import('@/views/iot/plugin/detail/index.vue')
  1992. }
  1993. ]
  1994. },
  1995. ]
  1996. export default remainingRouter