Prechádzať zdrojové kódy

fix: 修正学生界面课程详情会出现选课码的问题

ChenYangfan 6 rokov pred
rodič
commit
7152129727

+ 43 - 1
src/components/Basic/CButton.vue

@@ -7,7 +7,49 @@
 
 <script>
 export default {
-  props: ['icon', 'disabled']
+  // props: ['icon', 'disabled']
+  props: {
+    icon: {
+      type: String,
+      default: null
+    },
+    disabled: {
+      type: Boolean,
+      default: false
+    },
+    theme: {
+      type: String,
+      default: 'normal'
+    },
+    // 背景透明的按钮
+    text: {
+      type: Boolean,
+      default: false
+    },
+    // 使用白色字体、深色背景的最显眼按钮
+    standout: {
+      type: Boolean,
+      default: false
+    },
+    // 占满宽度
+    block: {
+      type: Boolean,
+      default: false
+    },
+    small: {
+      type: Boolean,
+      default: false
+    },
+    large: {
+      type: Boolean,
+      default: false
+    },
+    // 去掉涟漪效果
+    noRipple: {
+      type: Boolean,
+      default: false
+    }
+  }
 }
 </script>
 

+ 2 - 5
src/components/Basic/CIcon.vue

@@ -60,6 +60,7 @@ export default {
 
 <style lang="scss" scoped>
 @import '~@/style/theme.scss';
+@import '~@/style/mixin/set-theme.scss';
 i {
   transition: .2s ease-out;
 }
@@ -74,9 +75,5 @@ i {
   }
 }
 
-@include theme(blue, $theme-blue, $theme-blue-transparent)
-@include theme(green, $theme-green, $theme-green-transparent)
-@include theme(orange, $theme-orange, $theme-orange-transparent)
-@include theme(red, $theme-red, $theme-red-transparent)
-@include theme(normal, $icon-normal-color, $theme-background-grey)
+@include setTheme
 </style>

+ 2 - 6
src/components/Basic/CTag.vue

@@ -21,7 +21,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-@import '~@/style/theme.scss';
+@import '~@/style/mixin/set-theme.scss';
 
 div {
   display: inline-block;
@@ -42,9 +42,5 @@ div {
   }
 }
 
-@include theme(blue, $theme-blue, $theme-blue-transparent)
-@include theme(green, $theme-green, $theme-green-transparent)
-@include theme(orange, $theme-orange, $theme-orange-transparent)
-@include theme(red, $theme-red, $theme-red-transparent)
-@include theme(normal, $icon-normal-color, $theme-background-grey)
+@include setTheme()
 </style>

+ 2 - 5
src/components/Basic/IconButton.vue

@@ -57,6 +57,7 @@ export default {
 
 <style lang="scss" scoped>
 @import '~@/style/theme.scss';
+@import '~@/style/mixin/set-theme.scss';
 
 .icon-button {
   position: relative;
@@ -98,9 +99,5 @@ export default {
   }
 }
 
-@include theme(blue, $theme-blue, $theme-blue-transparent)
-@include theme(green, $theme-green, $theme-green-transparent)
-@include theme(orange, $theme-orange, $theme-orange-transparent)
-@include theme(red, $theme-red, $theme-red-transparent)
-@include theme(normal, $icon-normal-color, $theme-background-grey)
+@include setTheme()
 </style>

+ 7 - 3
src/components/Details/CourseDetail.vue

@@ -13,7 +13,7 @@
         <div>创建时间:</div>
         <div>{{createTime}}</div>
       </div>
-      <div>
+      <div v-if="userInfo.type === 'TEACHER'">
         <div>选课码:</div>
         <div>{{code}}</div>
       </div>
@@ -28,16 +28,17 @@
 <script>
 import { getCourseCode } from '@/server/course'
 import momentFromNow from '@/utils/moment-from-now'
+import { mapState } from 'vuex'
 
 export default {
-  props: ['course', 'showCode'],
+  props: ['course'],
   data () {
     return {
       code: ''
     }
   },
   mounted () {
-    if (this.showCode) {
+    if (this.userInfo.type === 'TEACHER') {
       getCourseCode({ courseId: this.course.id }).then(res => {
         this.code = res
       }).catch(err => {
@@ -46,6 +47,9 @@ export default {
     }
   },
   computed: {
+    ...mapState({
+      userInfo: state => state.main.userInfo
+    }),
     createTime () {
       return momentFromNow(this.course.createAt)
     }

+ 10 - 0
src/style/mixin/set-theme.scss

@@ -0,0 +1,10 @@
+@import "./../theme.scss";
+@mixin theme() {} // 本行无必要,只是为了让之后的代码不报错
+
+@mixin setTheme() {
+  @include theme(blue, $theme-blue, $theme-blue-transparent);
+  @include theme(green, $theme-green, $theme-green-transparent);
+  @include theme(orange, $theme-orange, $theme-orange-transparent);
+  @include theme(red, $theme-red, $theme-red-transparent);
+  @include theme(normal, $icon-normal-color, $theme-background-grey);
+}

+ 5 - 2
src/views/student/components/StudentCourseSlides.vue

@@ -1,6 +1,7 @@
 <template>
   <tab-side-component>
     <back-title>{{course.name}}</back-title>
+    <course-detail :course="course"></course-detail>
     <div class="sub-title">课件列表</div>
     <div class="no-content-warning" v-if="slides === null">
       <div class="no-content-warning-tip">加载中...</div>
@@ -9,7 +10,8 @@
       <div class="no-content-warning-tip">本课程尚无课件~</div>
     </div>
     <template v-for="slide of slides">
-      <slide-card :key="slide.id" hide-course :slide="slide" :click-handler="handleSlideCardClick"></slide-card>
+      <slide-card :key="slide.id" hide-course hide-teacher :slide="slide"
+                  :click-handler="handleSlideCardClick"></slide-card>
     </template>
     <c-button class="full-width secondary mt-16" @click="handleToManager">管理课程</c-button>
   </tab-side-component>
@@ -24,9 +26,10 @@ import { studentGetSlidesByCourse } from '@/server/slide'
 import { SET_SLIDE_INFO } from '@/store/types/pdf-types'
 import { SET_COURSE } from '@/store/types/main-types'
 import { mapState } from 'vuex'
+import CourseDetail from '@/components/Details/CourseDetail'
 
 export default {
-  components: { CButton, SlideCard, BackTitle, TabSideComponent },
+  components: { CourseDetail, CButton, SlideCard, BackTitle, TabSideComponent },
   data () {
     return {
       slides: null

+ 1 - 1
src/views/student/tabs/StudentCoursesManager.vue

@@ -29,7 +29,7 @@
         在上方输入关键字搜索吧~
       </div>
       <template v-for="(course, index) of courses">
-        <course-card :key="course.id" :course="course" :index="index + 1"
+        <course-card :key="course.id" :course="course" :index="index + 1" hide-bio
                      :clickHandler="handleToCourseDetail"></course-card>
       </template>
     </div>

+ 1 - 1
src/views/student/tabs/StudentExplore.vue

@@ -15,7 +15,7 @@
           <c-button class="full-width secondary" @click="handleToCoursesManager">去课程管理界面</c-button>
         </div>
         <template v-for="(course, index) of courses">
-          <course-card :key="course.id" :course="course" :index="index + 1"
+          <course-card :key="course.id" :course="course" :index="index + 1" hide-bio
                        :clickHandler="handleToCourseSlideList"></course-card>
         </template>
       </section>

+ 1 - 1
src/views/student/tabs/StudentPersonal.vue

@@ -2,7 +2,7 @@
   <div class="tab">
     <h1 class="title">
       个人信息设置
-      <c-tag theme="blue">学生</c-tag>
+      <c-tag theme="green">学生</c-tag>
     </h1>
     <div class="sub-title">修改姓名</div>
     <c-input :placeholder="'目前资料中的姓名:' + userInfo.name" class="mb-16" v-model="newName"></c-input>

+ 1 - 1
src/views/student/tabs/StudentQuiz.vue

@@ -2,7 +2,7 @@
   <div class="tab">
     <h1 class="title">
       课程测验
-      <c-tag>学生</c-tag>
+      <c-tag theme="green">学生</c-tag>
     </h1>
     <div class="sub-title">待完成的测验</div>
     <div class="no-content-warning">

+ 1 - 1
src/views/teacher/components/TeacherCourseDetail.vue

@@ -1,7 +1,7 @@
 <template>
   <tab-side-component>
     <back-title>课程详情</back-title>
-    <course-detail :course="course" show-code="true"></course-detail>
+    <course-detail :course="course"></course-detail>
     <div class="sub-title">修改选课码:</div>
     <div class="change-wrapper mb-24">
       <c-input placeholder="修改不会影响已选学生" v-model="newCode"/>

+ 4 - 2
src/views/teacher/components/TeacherCourseSlides.vue

@@ -1,6 +1,7 @@
 <template>
   <tab-side-component>
     <back-title>{{course.name}}</back-title>
+    <course-detail :course="course"></course-detail>
     <div class="sub-title">课件列表</div>
     <div class="no-content-warning" v-if="slides === null">
       <div class="no-content-warning-tip">加载中...</div>
@@ -10,7 +11,7 @@
       <c-button class="full-width secondary" @click="handleToCreateCourse">去创建课件</c-button>
     </div>
     <template v-for="slide of slides">
-      <slide-card :key="slide.id" hide-course :slide="slide" :click-handler="handleSlideCardClick"></slide-card>
+      <slide-card :key="slide.id" hide-teacher hide-course :slide="slide" :click-handler="handleSlideCardClick"></slide-card>
     </template>
     <c-button class="full-width secondary mt-16" @click="handleToManager">管理本课程</c-button>
   </tab-side-component>
@@ -25,9 +26,10 @@ import { teacherGetSlidesByCourse } from '@/server/slide'
 import { SET_SLIDE_INFO } from '@/store/types/pdf-types'
 import { SET_COURSE } from '@/store/types/main-types'
 import { mapState } from 'vuex'
+import CourseDetail from '@/components/Details/CourseDetail'
 
 export default {
-  components: { CButton, SlideCard, BackTitle, TabSideComponent },
+  components: { CourseDetail, CButton, SlideCard, BackTitle, TabSideComponent },
   data () {
     return {
       slides: null

+ 1 - 1
src/views/teacher/tabs/TeacherExplore.vue

@@ -27,7 +27,7 @@
           <c-button class="full-width secondary" @click="handleToCreateCourse">去创建课程</c-button>
         </div>
         <template v-for="(course, index) of courses">
-          <course-card :key="course.id" :course="course" :index="index + 1"
+          <course-card :key="course.id" :course="course" :index="index + 1" hide-bio
                        hide-teacher :clickHandler="handleCourseCardClick"></course-card>
         </template>
       </section>