|
|
@@ -1,11 +1,86 @@
|
|
|
+import { mapState } from "vuex";
|
|
|
+import "./index.scss";
|
|
|
+
|
|
|
export default {
|
|
|
+ name: "PageHeader",
|
|
|
props: {
|
|
|
routes: {
|
|
|
type: Array,
|
|
|
default: () => []
|
|
|
+ },
|
|
|
+ tabList: {
|
|
|
+ type: Array,
|
|
|
+ default: () => []
|
|
|
}
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ ...mapState({
|
|
|
+ course: state => state.course.currentCourse,
|
|
|
+ profile: state => state.user.profile
|
|
|
+ })
|
|
|
+ },
|
|
|
render() {
|
|
|
- return <h1>hello</h1>;
|
|
|
+ const { profile, course = {}, routes = [], tabList = [] } = this;
|
|
|
+ const { role = "" } = profile;
|
|
|
+ const prefix = `/course-${role.toLowerCase()}/${course.id}`;
|
|
|
+ const { logo, title, action, content, extraContent } = this.$slots;
|
|
|
+ const showTabs = tabList && tabList.length > 0;
|
|
|
+ console.log(prefix);
|
|
|
+ return (
|
|
|
+ <div class="page-header">
|
|
|
+ <nav class="breadcrumb" aria-label="breadcrumbs">
|
|
|
+ <ul>
|
|
|
+ <li>
|
|
|
+ <router-link to={{ name: "HOME" }}>所有课程</router-link>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <router-link to={`${prefix}/dashboard`}>
|
|
|
+ {course.name}
|
|
|
+ </router-link>
|
|
|
+ </li>
|
|
|
+ {routes.map((route, index) => (
|
|
|
+ <li class={index === routes.length - 1 && "is-active"}>
|
|
|
+ <router-link
|
|
|
+ to={`${prefix}/${route.path}`}
|
|
|
+ // active-class="is-active"
|
|
|
+ // tag="li"
|
|
|
+ >
|
|
|
+ {route.name}
|
|
|
+ </router-link>
|
|
|
+ </li>
|
|
|
+ ))}
|
|
|
+ </ul>
|
|
|
+ </nav>
|
|
|
+ <div class="detail">
|
|
|
+ {logo && <div class="logo">{logo}</div>}
|
|
|
+ <div class="main">
|
|
|
+ <div class="row">
|
|
|
+ {title && <h1 class="title">{title}</h1>}
|
|
|
+ {action && <div class="action">{action}</div>}
|
|
|
+ </div>
|
|
|
+ <div class="row">
|
|
|
+ {content && <div class="content">{content}</div>}
|
|
|
+ {extraContent && <div class="extra-content">{extraContent}</div>}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ {showTabs && (
|
|
|
+ <div class="tabs">
|
|
|
+ <ul>
|
|
|
+ {tabList.map(tab => (
|
|
|
+ <router-link
|
|
|
+ active-class="is-active"
|
|
|
+ exact={tab.exact ? tab.exact : true}
|
|
|
+ to={`${prefix}/${tab.path}`}
|
|
|
+ tag="li"
|
|
|
+ >
|
|
|
+ <a>{tab.name}</a>
|
|
|
+ </router-link>
|
|
|
+ ))}
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ );
|
|
|
}
|
|
|
};
|