Bläddra i källkod

refactor: route props

Casper Dai 3 år sedan
förälder
incheckning
c6faa2e643
3 ändrade filer med 56 tillägg och 46 borttagningar
  1. 25 33
      src/router/index.js
  2. 12 4
      src/views/schedule/designer/index.vue
  3. 19 9
      src/views/schedule/index.vue

+ 25 - 33
src/router/index.js

@@ -28,9 +28,9 @@ Vue.use(Router)
  */
 export const constantRoutes = [
   {
+    hidden: true,
     path: '/error',
-    component: () => import('@/views/error-page/index'),
-    hidden: true
+    component: () => import('@/views/error-page/index')
   }
 ]
 
@@ -51,12 +51,12 @@ export const asyncRoutes = [
         meta: { title: '首页', icon: 'home' }
       },
       {
+        hidden: true,
         name: 'profile',
         path: 'profile',
         component: () => import('@/views/profile/index'),
         access: Access.MANAGE_PROFILE,
-        meta: { title: '个人设置' },
-        hidden: true
+        meta: { title: '个人设置' }
       }
     ]
   },
@@ -89,24 +89,16 @@ export const asyncRoutes = [
             name: 'recur-list',
             path: '',
             component: () => import('@/views/schedule/index'),
-            meta: {
-              cache: 'ScheduleList',
-              info: {
-                type: ScheduleType.RECUR,
-                design: 'recur-design'
-              }
-            }
+            meta: { cache: 'ScheduleList' },
+            props: { type: ScheduleType.RECUR, redirect: 'recur-design' }
           },
           {
+            hidden: true,
             name: 'recur-design',
             path: ':id',
             component: () => import('@/views/schedule/designer/index'),
-            meta: {
-              title: '编辑',
-              cache: 'ScheduleList',
-              info: { redirect: 'recur-list' }
-            },
-            hidden: true
+            meta: { title: '编辑', cache: 'ScheduleList' },
+            props: { redirect: 'recur-list' }
           }
         ]
       },
@@ -120,24 +112,24 @@ export const asyncRoutes = [
             name: 'schedule-list',
             path: '',
             component: () => import('@/views/schedule/index'),
-            meta: {
-              cache: 'ScheduleList',
-              info: {
-                type: ScheduleType.COMPLEX,
-                design: 'schedule-design'
-              }
+            meta: { cache: 'ScheduleList' },
+            props: {
+              type: ScheduleType.COMPLEX,
+              design: 'schedule-design'
             }
           },
           {
+            hidden: true,
             name: 'schedule-design',
             path: ':id',
             component: () => import('@/views/schedule/designer/index'),
             meta: {
               title: '编辑',
-              cache: 'ScheduleList',
-              info: { redirect: 'schedule-list' }
+              cache: 'ScheduleList'
             },
-            hidden: true
+            props: {
+              redirect: 'schedule-list'
+            }
           }
         ]
       },
@@ -191,11 +183,11 @@ export const asyncRoutes = [
             meta: { cache: 'DeviceList' }
           },
           {
+            hidden: true,
             name: 'device-detail',
             path: ':id',
             component: () => import('@/views/device/detail/index'),
-            meta: { title: '设备详情', activeMenu: '/m/device', cache: 'DeviceList' },
-            hidden: true
+            meta: { title: '设备详情', cache: 'DeviceList' }
           }
         ]
       },
@@ -313,20 +305,20 @@ export const asyncRoutes = [
     ]
   },
   {
+    hidden: true,
     name: 'design',
     path: '/design/:id',
     component: () => import('@/views/bigscreen/designer/index'),
-    access: Access.MANAGE_CALENDAR,
-    hidden: true
+    access: Access.MANAGE_CALENDAR
   },
   {
+    hidden: true,
     name: 'view',
     path: '/view/:id',
-    component: () => import('@/views/bigscreen/viewer/index'),
-    hidden: true
+    component: () => import('@/views/bigscreen/viewer/index')
   },
   // 404 page must be placed at the end !!!
-  { path: '*', redirect: '/', hidden: true }
+  { hidden: true, path: '*', redirect: '/' }
 ]
 
 const createRouter = () => new Router({

+ 12 - 4
src/views/schedule/designer/index.vue

@@ -16,6 +16,12 @@
 <script>
 export default {
   name: 'ScheduleDesginer',
+  props: {
+    redirect: {
+      type: String,
+      default: ''
+    }
+  },
   computed: {
     scheduleId () {
       return this.$route.params.id
@@ -23,10 +29,12 @@ export default {
   },
   methods: {
     onSubmit () {
-      this.$router.replace({
-        name: this.$route.meta.info.redirect,
-        params: { refresh: true }
-      })
+      if (this.redirect) {
+        this.$router.replace({
+          name: this.redirect,
+          params: { refresh: true }
+        })
+      }
     }
   }
 }

+ 19 - 9
src/views/schedule/index.vue

@@ -269,6 +269,16 @@ import { createListOptions } from '@/utils'
 
 export default {
   name: 'ScheduleList',
+  props: {
+    type: {
+      type: Number,
+      default: 0
+    },
+    redirect: {
+      type: String,
+      default: ''
+    }
+  },
   data () {
     return {
       statusOptions: [
@@ -278,7 +288,7 @@ export default {
         { value: State.RESOLVED, label: '已审核' }
       ],
       options: createListOptions({
-        type: this.$route.meta.info.type,
+        type: this.type,
         status: void 0,
         resolutionRatio: void 0,
         name: ''
@@ -351,7 +361,7 @@ export default {
     },
     onAdd () {
       this.schedule = {
-        type: this.$route.meta.info.type,
+        type: this.type,
         name: '',
         resolutionRatio: ''
       }
@@ -398,15 +408,15 @@ export default {
       this.isPreviewing = false
     },
     onDesign (id) {
-      this.$router.push({
-        name: this.$route.meta.info.design,
-        params: { id: `${id}` }
-      })
+      if (this.redirect) {
+        this.$router.push({
+          name: this.redirect,
+          params: { id: `${id}` }
+        })
+      }
     },
     onSubmit (item) {
-      submitSchedule(item).then(() => {
-        this.search()
-      })
+      submitSchedule(item).then(this.search)
     },
     onDel (item) {
       deleteSchedule(item).then(() => {