黄琪勇 1 year ago
parent
commit
ce4dd3c94e

+ 6 - 0
src/assets/elementTheme.scss

@@ -35,3 +35,9 @@
 .el-loading-spinner .path {
    stroke-width: 4;
 }
+
+/* 滚动条颜色 */
+.el-scrollbar__thumb {
+   opacity: 1;
+   background-color: #ececec;
+}

+ 0 - 4
src/components/dictionary/dictionary.vue

@@ -119,9 +119,5 @@ const _h_height = computed(() => {
    .el-popper__arrow {
       display: none;
    }
-   .el-scrollbar__thumb {
-      opacity: 1;
-      background-color: #ececec;
-   }
 }
 </style>

BIN
src/components/myCalendar/img/midh.png


+ 12 - 6
src/components/myCalendar/myCalendar.vue

@@ -5,12 +5,16 @@
 -->
 <template>
    <el-calendar ref="calendarDom" :class="{ isNowMonth: isNowMonth }" class="h-calendar" v-model="dateData" v-bind="$attrs">
-      <template #header="{ date }">
+      <template #header="{}">
          <div class="calendarHead">
-            <div class="tit">{{ date }}</div>
+            <div class="tit">{{ format(dateData, "yyyy年mm月") }}</div>
             <div class="operate">
                <div class="left" @click="selectDate('prev-month')"></div>
-               <div class="mid" @click="selectDate('today')"></div>
+               <div
+                  class="mid"
+                  :class="{ now: format(props.modelValue, 'yyyy/mm/dd') === format(new Date(), 'yyyy/mm/dd') }"
+                  @click="selectDate('today')"
+               ></div>
                <div class="right" @click="selectDate('next-month')"></div>
             </div>
          </div>
@@ -127,10 +131,12 @@ function handleClickDate(data: { type: "prev-month" | "current-month" | "next-mo
          }
          .mid {
             margin: 0 28px;
-            background: url("./img//mid.png") no-repeat;
+            background: url("./img//midh.png") no-repeat;
             background-size: 100% 100%;
-            &:hover {
-               opacity: $opacity-hover;
+            &:hover,
+            &.now {
+               background: url("./img//mid.png") no-repeat;
+               background-size: 100% 100%;
             }
          }
          .right {

+ 2 - 2
src/views/cloudTextbooks/cloudTextbooks.vue

@@ -143,8 +143,8 @@ const handleInputQuery = debounce(handleQuery)
 function handleClick(id: string) {
    modalFrame({
       template: chooseDialog,
-      width: 1110,
-      height: 675,
+      width: 1152,
+      height: 700,
       btnShow: [],
       modalData: {
          id

+ 1 - 0
src/views/coursewarePlay/components/courseCollapse/courseCollapse.vue

@@ -127,6 +127,7 @@ function handleClick(value: any) {
          display: none;
       }
       &.is-active > .el-collapse-item__header {
+         border-bottom-color: var(--el-collapse-border-color);
          > .courseCollapseHead .courseCollapseHeadArrow {
             > .headArrow {
                display: none;

+ 1 - 0
src/views/curriculum/components/courseCollapse/courseCollapse.vue

@@ -103,6 +103,7 @@ function handleClick(value: any) {
          display: none;
       }
       &.is-active > .el-collapse-item__header {
+         border-bottom-color: var(--el-collapse-border-color);
          > .courseCollapseHead .courseCollapseHeadArrow {
             > .headArrow {
                display: none;

+ 2 - 0
src/views/curriculum/components/curriculumList/curriculumList_gym.vue

@@ -134,6 +134,7 @@ function handleSetUpCourseware(id: string, teachMode: string) {
    border-radius: 35px;
    padding: 0 30px;
    margin-bottom: 18px;
+   cursor: pointer;
    &:last-child {
       margin-bottom: 0;
    }
@@ -257,6 +258,7 @@ function handleSetUpCourseware(id: string, teachMode: string) {
       .addressCon {
          flex-grow: 1;
          overflow: hidden;
+         padding-right: 56px;
          & > div {
             font-weight: 500;
             font-size: 16px;

+ 12 - 1
src/views/curriculum/components/curriculumList/curriculumList_gyt.vue

@@ -11,7 +11,7 @@
             <div class="time">{{ item.classDate && format(item.classDate) }}</div>
          </div>
          <div class="operateBox">
-            <template v-if="item.status === 'ING' && !item.lessonCoursewareId">
+            <template v-if="item.coursewareFlag && !item.lessonCoursewareId">
                <img class="dangerImg" src="@/img/curriculum/jg.png" />
                <div class="operateBtn" @click.stop="handleSetUpCourseware(item.id)">配置课件</div>
             </template>
@@ -82,6 +82,7 @@ function handleSetUpCourseware(id: string) {
    border-radius: 35px;
    padding: 0 30px;
    margin-bottom: 18px;
+   cursor: pointer;
    &:last-child {
       margin-bottom: 0;
    }
@@ -150,6 +151,7 @@ function handleSetUpCourseware(id: string) {
          font-weight: bold;
          font-size: 38px;
          color: #333333;
+         overflow: hidden;
       }
       .rightCon {
          display: flex;
@@ -164,6 +166,10 @@ function handleSetUpCourseware(id: string) {
             font-weight: 500;
             font-size: 20px;
             color: #aaaaaa;
+            &.signIn,
+            &.signOut {
+               color: #01c199;
+            }
          }
          .qtImg {
             margin-left: 34px;
@@ -178,15 +184,20 @@ function handleSetUpCourseware(id: string) {
       padding-bottom: 22px;
       .addressCon {
          flex-grow: 1;
+         overflow: hidden;
          & > div {
             font-weight: 500;
             font-size: 16px;
             color: #777777;
          }
          & > div:nth-child(2) {
+            margin-right: 116px;
+            overflow: hidden;
             margin-top: 12px;
          }
          .adressBox {
+            margin-right: 56px;
+            overflow: hidden;
             font-weight: 600;
             font-size: 20px;
             color: #333333;

+ 13 - 6
src/views/curriculum/curriculum.vue

@@ -9,7 +9,7 @@
          <ElScrollbar class="elScrollbar">
             <div class="calendarCon"><myCalendar v-model="dateValue" @monthChange="handleMonthChange" :dayMarks="curriculumByMonth" /></div>
             <div class="curriculumCon">
-               <el-skeleton class="elSkeleton" :loading="loading" :count="3">
+               <el-skeleton class="elSkeleton" :loading="skeletonIng" :count="1">
                   <template #template>
                      <div class="elSkeletonCon">
                         <el-skeleton-item class="elSkeletonItem" variant="p" />
@@ -19,7 +19,7 @@
                      </div>
                   </template>
                   <template #default>
-                     <ElScrollbar v-if="curriculumByDay.length" class="listElScrollbar">
+                     <ElScrollbar v-if="curriculumByDay.length || loading" v-loading="loading" class="listElScrollbar">
                         <component
                            @update="handleDayChange(dateValue)"
                            :curriculumData="curriculumByDay"
@@ -27,7 +27,7 @@
                         />
                      </ElScrollbar>
                      <el-empty
-                        v-if="!curriculumByDay.length"
+                        v-if="!curriculumByDay.length && !loading"
                         class="empty"
                         :image="require('@/img/layout/empty1.png')"
                         description="您还没有待上课程哦~"
@@ -73,6 +73,7 @@ const curriculumByMonth = shallowRef<string[]>([])
 const curriculumByDay = shallowRef<any[]>([])
 const dateValue = ref(new Date())
 const loading = ref(false)
+const skeletonIng = ref(true)
 let monthController: AbortController
 let dayController: AbortController
 watch(dateValue, () => {
@@ -99,6 +100,7 @@ function getCurriculumByDay(day: string) {
          if (res.code === CODE_ERR_CANCELED) {
             return
          }
+         skeletonIng.value = false
          loading.value = false
          if (res.code === 200) {
             curriculumByDay.value = res.data?.rows || []
@@ -116,6 +118,7 @@ function getCurriculumByDay(day: string) {
          if (res.code === CODE_ERR_CANCELED) {
             return
          }
+         skeletonIng.value = false
          loading.value = false
          if (res.code === 200) {
             curriculumByDay.value = res.data?.rows || []
@@ -185,11 +188,15 @@ function getCurriculumByMonth(month: string) {
       border-radius: 42px;
       padding: 30px 0;
       & > :deep(.listElScrollbar) {
+         > .el-loading-mask {
+            margin: 0 30px;
+            border-radius: 42px;
+         }
          > .el-scrollbar__wrap {
             overflow-x: hidden;
             > .el-scrollbar__view {
                width: 100%;
-               padding: 0 23px 0 37px;
+               padding: 0 30px;
             }
          }
          > .el-scrollbar__bar.is-vertical {
@@ -202,13 +209,13 @@ function getCurriculumByMonth(month: string) {
          background: #ffffff;
          border-radius: 35px;
          padding: 0;
-         margin: 0 23px 0 37px;
+         margin: 0 30px;
          .el-empty__image {
             width: 360px;
          }
       }
       .elSkeleton {
-         padding: 0 23px 0 37px;
+         padding: 0 30px;
          .elSkeletonCon {
             background: #ffffff;
             border-radius: 35px;

+ 18 - 7
src/views/curriculum/curriculumDetail.vue

@@ -15,7 +15,7 @@
                      <img src="@/img/curriculum/jxmb.png" />
                      <div>教学目标</div>
                   </div>
-                  <div v-if="['ING', 'UNDERWAY'].includes(statusVal)" class="rightBtn" @click="handleSetUpCourseware(props.modalData.id)">
+                  <div v-if="coursewareShow" class="rightBtn" @click="handleSetUpCourseware(props.modalData.id)">
                      <div>{{ curriculumDetailData.id ? "更换课件" : "配置课件" }}</div>
                      <img src="@/img/curriculum/jt1.png" />
                   </div>
@@ -71,7 +71,7 @@ import {
    getLessonCourseDetail_gym
 } from "@/api/curriculum.api"
 import { httpAjaxErrMsg } from "@/plugin/httpAjax"
-import { ref, shallowRef } from "vue"
+import { ref, shallowRef, computed } from "vue"
 import { handleStartClass_gyt, handleStartClass_gym, isONLINE_gym } from "./hooks/useStartClass"
 import userStore from "@/store/modules/user"
 import router from "@/router"
@@ -92,6 +92,14 @@ function close() {
 const loading = ref(false)
 const statusVal = ref("") //课程状态 ING 和 UNDERWAY 代表可以上课
 const teachModeVal = ref("") //课程类型 ONLINE课的时候提示去app
+const coursewareFlagVal = ref(false) // 管乐团能否配置课件 coursewareFlag字段为true就能配置
+const coursewareShow = computed(() => {
+   if (userStoreHook.roles === "GYM") {
+      return statusVal.value === "UNDERWAY"
+   } else {
+      return coursewareFlagVal.value
+   }
+})
 const curriculumDetailData = shallowRef<{
    pointList: any[]
    targetDesc: string
@@ -139,8 +147,9 @@ function getCurriculumDetailData_gyt() {
    loading.value = true
    httpAjaxErrMsg(getCourseScheduleDetail_gyt, props.modalData.id).then(res => {
       if (res.code === 200) {
-         const { lessonCoursewareDetailId, status } = res.data || {}
+         const { lessonCoursewareDetailId, status, coursewareFlag } = res.data || {}
          statusVal.value = status
+         coursewareFlagVal.value = coursewareFlag
          if (lessonCoursewareDetailId) {
             httpAjaxErrMsg(getLessonCoursewareDetail_gyt, lessonCoursewareDetailId).then(resData => {
                loading.value = false
@@ -210,6 +219,7 @@ function handleCourseClick(item: any) {
       cursor: pointer;
       background: url("@/img/useDialogConfirm/close.png") no-repeat;
       background-size: cover;
+      z-index: 1;
       &:hover {
          background: url("@/img/useDialogConfirm/closeHover.png") no-repeat;
          background-size: cover;
@@ -251,6 +261,7 @@ function handleCourseClick(item: any) {
             .content {
                position: relative;
                padding-top: 18px;
+               padding-left: 18px;
                height: calc(100% - 57px);
                & > :deep(.elScrollbar) {
                   .el-scrollbar__view {
@@ -260,8 +271,8 @@ function handleCourseClick(item: any) {
                      overflow-x: hidden;
                   }
                   .el-scrollbar__bar.is-vertical {
-                     width: 4px;
-                     right: 0;
+                     width: 5px;
+                     right: 1px;
                   }
                }
                &:deep(.empty) {
@@ -276,7 +287,7 @@ function handleCourseClick(item: any) {
             }
          }
          .teachingObjectives {
-            padding: 16px 33px 20px;
+            padding: 16px 16px 20px;
             .head {
                width: 100%;
                height: 57px;
@@ -328,7 +339,7 @@ function handleCourseClick(item: any) {
             }
          }
          .knowledgePoints {
-            padding: 16px 0 20px 33px;
+            padding: 16px 0 20px 16px;
             .head {
                margin-right: 33px;
                height: 57px;

+ 2 - 2
src/views/curriculum/setUpCourseware.vue

@@ -95,8 +95,8 @@ function getlistData_gyt() {
 function handleClick(id: string) {
    modalFrame({
       template: chooseCourseware,
-      width: 1110,
-      height: 675,
+      width: 1152,
+      height: 700,
       btnShow: [],
       modalData: {
          id,

+ 4 - 4
src/views/homePage/components/curriculum/curriculum_gyt.vue

@@ -11,7 +11,7 @@
             <div class="time">{{ classData.classDate && format(classData.classDate) }}</div>
          </div>
          <div class="operateBox">
-            <template v-if="classData.status === 'ING' && !classData.lessonCoursewareId">
+            <template v-if="classData.coursewareFlag && !classData.lessonCoursewareId">
                <img class="dangerImg" src="@/img/curriculum/jg.png" />
                <div class="operateBtn" @click="handleSetUpCourseware(classData.id)">配置课件</div>
             </template>
@@ -33,7 +33,7 @@
          <ellipsisScroll :title="`${classData.className}-${classData.teacherName}`" />
       </div>
       <div class="schoolTitBox">
-         <ellipsisScroll :title="classData.orchestraName" />
+         <ellipsisScroll :title="'·' + classData.orchestraName + '·'" />
       </div>
       <div class="stateBox">
          <div>
@@ -144,7 +144,7 @@ function handleSetUpCourseware(id: string) {
       color: #f67146;
    }
    .nameTitBox {
-      margin-top: 34px;
+      margin: 34px 30px 0;
       font-weight: 600;
       font-size: 25px;
       color: #333333;
@@ -152,7 +152,7 @@ function handleSetUpCourseware(id: string) {
       overflow: hidden;
    }
    .schoolTitBox {
-      margin-top: 32px;
+      margin: 32px 38px 0;
       font-weight: 500;
       font-size: 22px;
       color: #777777;

+ 3 - 0
src/views/homePage/homePage.vue

@@ -297,6 +297,9 @@ function handleRouter(url?: string) {
                width: 38px;
                height: 38px;
                cursor: pointer;
+               &:hover {
+                  opacity: $opacity-hover;
+               }
             }
          }
          .elSkeleton {