train.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <template>
  2. <div id="train">
  3. <admin-frame>
  4. <template #menu>
  5. <admin-meun :list="menus" title="个人中心"></admin-meun>
  6. </template>
  7. <component :is="component"></component>
  8. </admin-frame>
  9. </div>
  10. </template>
  11. <script>
  12. import adminFrame from '../model/frame.vue';
  13. import adminMeun from '../model/menu.vue';
  14. import { mapState, createNamespacedHelpers } from 'vuex';
  15. export default {
  16. name: 'train',
  17. props: {},
  18. components: {
  19. adminFrame,
  20. adminMeun,
  21. tBase: () => import('./train/base.vue'),
  22. tVideo: () => import('./train/video.vue'),
  23. tUser: () => import('./train/user.vue'),
  24. },
  25. data: function() {
  26. return {
  27. menus: [
  28. { num: '1', title: '基本信息', icon: 'el-icon-notebook-1', component: 'tBase' },
  29. { num: '2', title: '视频管理', icon: 'el-icon-video-camera-solid', component: 'tVideo' },
  30. { num: '3', title: '用户管理', icon: 'el-icon-user', component: 'tUser' },
  31. { num: '4', title: '进入频道', icon: 'el-icon-refresh', component: () => this.$router.push({ path: '/trainLive/index', query: { id: this.user.id } }) },
  32. ],
  33. };
  34. },
  35. created() {},
  36. methods: {},
  37. computed: {
  38. ...mapState(['user', 'menuParams']),
  39. pageTitle() {
  40. return `${this.$route.meta.title}`;
  41. },
  42. num() {
  43. return this.$route.query.num || '1';
  44. },
  45. component() {
  46. let component = 'tBase';
  47. const res = this.menus.find(f => f.num === this.num);
  48. if (res && _.isFunction(res)) {
  49. res();
  50. } else if (res) {
  51. component = _.get(res, 'component', 'tBase');
  52. }
  53. return component;
  54. },
  55. },
  56. metaInfo() {
  57. return { title: this.$route.meta.title };
  58. },
  59. };
  60. </script>
  61. <style lang="less" scoped></style>