{"version":3,"file":"view.25fdda93.mjs","sources":["../../../../pages/contest/view.vue"],"sourcesContent":["<template>\n  <NuxtLayout name=\"event\">\n    <div v-loading=\"ctrl.loading\" class=\"app_container w detail_content\">\n      <div v-if=\"opts.info.id\" class=\"course_info\">\n        <div ref=\"head\" class=\"course_info_header\">\n          <div class=\"course_info_content\">\n            <div class=\"course_nav\">\n              <!-- <el-breadcrumb :separator-icon=\"ArrowRight\">\n                <el-breadcrumb-item :to=\"{ path: '/' }\"><span class=\"nav_course_title\">首页</span></el-breadcrumb-item>\n                <el-breadcrumb-item>\n                  <div class=\"nav_course_title tx-ov\">{{ opts.info.eventAreaName }}</div>\n                </el-breadcrumb-item>\n              </el-breadcrumb> -->\n            </div>\n            <div class=\"course_message\">\n              <div class=\"course_msg_content\">\n                <div class=\"course_price_content\">\n                  <div class=\"course_name\">\n                    <span>{{ opts.info.eventAreaName }}</span>\n                  </div>\n                  <div class=\"course_int\" v-if=\"opts.info.eventLevel < 3\">\n                    <div class=\"course_int_text tx-ov\">级别：{{ opts.info.eventLevel === 1 ? '市赛' : '省赛' }}</div>\n                  </div>\n                  <div class=\"course_int\">\n                    <div class=\"course_int_text tx-ov\">比赛时间：{{ opts.info.beginTime }} ~ {{ opts.info.endTime }}</div>\n                  </div>\n                  <div v-if=\"opts.info.paperBeginTime\" class=\"course_int\">\n                    <div class=\"course_int_text tx-ov\">考试时间：{{ opts.info.paperBeginTime }} ~ {{ opts.info.paperEndTime }}</div>\n                  </div>\n                  <div class=\"course_int\">\n                    <div class=\"course_int_text tx-ov\">报名截止时间：{{ opts.info.deadlineTime }}</div>\n                  </div>\n                </div>\n                <div class=\"course_bottom\">\n                  <div class=\"course_btn_info\">\n                    <div class=\"course_btn\">\n                      <template v-if=\"ctrl.isEnter && ctrl.isExam && ctrl.isPaper\">\n                        <el-button class=\"buy_btn\" @click=\"goExam()\">\n                          进入比赛\n                        </el-button>\n                      </template>\n                      <template v-else>\n                        <el-button class=\"buy_btn\" :disabled=\"(ctrl.entryOver || ctrl.isEnter) ? true : false\" type=\"primary\" @click=\"goEntry()\">\n                          {{ ctrl.entryText }}\n                        </el-button>\n                      </template>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div class=\"nav_tabs\">\n            <template v-for=\"(item,index) in opts.tabEnum\">\n                <div :class=\"{active:map.tabs === index}\" class=\"nav_tabs_item\" @click=\"handleChangeType(item, index)\">\n                  {{ item.menuTitle }}\n                </div>\n              </template>\n          </div>\n        </div>\n        <div v-show=\"map.tabs === 0\" class=\"detail_tab_pane\">\n          <div class=\"detail_desc_content\" v-html=\"opts.info.eventDesc\"></div>\n        </div>\n        <div v-show=\"map.tabs !== 0\" v-loading=\"ctrl.courseware\" class=\"detail_tab_pane\">\n          <div v-if=\"opts.coursewareList.length\" class=\"homework_wrap_list\">\n            <div class=\"homework_wrap_item\" v-for=\"(item,index) of opts.coursewareList\" :key=\"index\">\n              <div v-if=\"item.materialName\" class=\"flex align-center\">\n                <img v-if=\"item.materialName.indexOf('.doc') > -1\" class=\"video_icon\" src=\"~/assets/icon_Word.svg\">\n                <img v-if=\"item.materialName.indexOf('.xls') > -1\" class=\"video_icon\" src=\"~/assets/icon_Excel.svg\">\n                <img v-if=\"item.materialName.indexOf('.ppt') > -1\" class=\"video_icon\" src=\"~/assets/icon_PPT.svg\">\n                <img v-if=\"item.materialName.indexOf('.pdf') > -1\" class=\"video_icon\" src=\"~/assets/icon_PDF.svg\">\n                <img v-if=\"item.materialName.indexOf('.txt') > -1\" class=\"video_icon\" src=\"~/assets/icon_txt.svg\">\n                <img v-if=\"item.materialName.indexOf('.zip') > -1 || item.materialName.indexOf('.rar') > -1\" class=\"video_icon\" src=\"~/assets/icon_rar.svg\">\n                <div class=\"mater_name\">{{ item.materialName }}</div>\n              </div>\n              <div class=\"flex align-center\">\n                <div v-if=\"item.materialSize\" class=\"mgr10\">{{ getSize(item.materialSize) }}</div>\n                <div class=\"mgr10 pointer blue lh20\" @click=\"getDwnUrl(item)\">\n                  <span class=\"iconfont icon-download\"></span>\n                  下载\n                </div>\n                <!-- <div class=\"mgr10 pointer blue\">\n                  <span class=\"iconfont icon-eye\"></span>\n                  查看\n                </div> -->\n              </div>\n            </div>\n          </div>\n        </div>\n        <div v-if=\"ctrl.fixed\" class=\"fixed_header\">\n          <div class=\"fixed_content\">\n            <a class=\"nav_logo\" href=\"/\">\n              <img v-if=\"componentInfo.websiteLogo\" :src=\"componentInfo.websiteLogo\" alt=\"\"/>\n            </a>\n            <div class=\"nav_tabs_header\">\n              <template v-for=\"(item,index) in opts.tabEnum\">\n                <div :class=\"{active:map.tabs === index}\" class=\"nav_tabs_item\" @click=\"handleChangeType(item, index)\">\n                {{ item.menuTitle }}\n                </div>\n              </template>\n            </div>\n            <div class=\"course_btn\">\n              <template v-if=\"ctrl.isEnter && ctrl.isExam && ctrl.isPaper\">\n                <el-button class=\"buy_btn\" @click=\"goExam()\">\n                  进入比赛\n                </el-button>\n              </template>\n              <template v-else>\n                <el-button class=\"buy_btn\" :disabled=\"(ctrl.entryOver || ctrl.isEnter) ? true : false\" type=\"primary\" @click=\"goEntry()\">\n                  {{ ctrl.entryText }}\n                </el-button>\n            </template>\n            </div>\n          </div>\n        </div>\n      </div>\n      <before-exam\n        v-if=\"ctrl.showBeforeExam\"\n        :dialogVisible=\"ctrl.showBeforeExam\"\n        :event-id=\"opts.info.id\"\n        @close=\"closeDialog\"\n      ></before-exam>\n    </div>\n  </NuxtLayout>\n</template>\n\n<script setup>\nimport {useUserStore} from \"../../stores/user\";\nimport { eventDetail, eventDownLoad, eventMenu, enterVerify } from '@/api/event'\nimport { paperRecordCheck } from \"@/api/paper\";\nimport { ElMessageBox } from 'element-plus'\nimport {forbidCopy, getSize} from '../../utils'\nimport {getHearder} from \"@/api/layouts\";\nimport cookie from '@/utils/cookies'\nimport bus from '@/utils/bus'\nimport { setSession } from '@/utils/storage'\nimport { ElMessage } from \"element-plus\"\nimport BeforeExam from '@/components/event/beforeExam.vue'\n\nconst route = useRoute()\nconst {data: componentInfo} = await useAsyncData(\"header\", async (ctx) => {\n  return getHearder();\n});\n\nconst store = useUserStore()\nconst { getToken, userView, shopData} = store\nconst router = useRouter()\nconst head = ref(null)\nconst userInfo = computed(()=>store.userView)\nconst token = computed(() => {\n  return getToken()\n})\nconst map = reactive({\n  id: '1524671594062307329',\n  tabs: 0,\n  type: ''\n})\nconst ctrl = reactive({\n  loading: false,\n  courseware: false,\n  fixed: false,\n  isEnter: false,\n  isPaper: false,\n  isWhite: false,\n  isExam: false,\n  entryOver: false,\n  entryText: '立即报名',\n  showBeforeExam: false\n})\nconst opts = reactive({\n  errorNum: 0,\n  info: {\n    eventDesc: ``\n  },\n  style: {\n    width: '1100px'\n  },\n  tabEnum: [{menuTitle: '赛事说明', menuType: 0}],\n  infoTimer: null,\n  noteList: [],\n  coursewareList: []\n})\n\n// 获取详情\nconst getInfo = () => {\n  ctrl.loading = true\n  eventDetail(map.id).then(res => {\n    ctrl.loading = false\n    opts.info = res\n    opts.coursewareList = res.affixList || []\n    const nowDate = new Date().getTime()\n    const deadlineTime = new Date(opts.info.deadlineTime).getTime()\n    if (nowDate > deadlineTime) {\n      ctrl.entryOver = true\n      ctrl.entryText = '截止报名'\n    }\n    setSession('eventLevel', opts.info.eventLevel)\n    setSession('areaName', opts.info.eventAreaName)\n    setSession('eventPageId', res.eventPageId)\n    opts.tabEnum = opts.tabEnum.concat(res.menuList)\n    console.log(opts.tabEnum)\n    console.log('bus前')\n    bus.emit('get-eventpage', res.eventPageId)\n    route.meta.title = opts.info.eventAreaName\n    opts.info.eventDesc = opts.info.eventDesc.replace(/<a style=\"position: relative; width: 144px; height: 80px; margin:  10px; display: inline-block;/, '<a style=\"position: relative; width: 144px; height: auto; margin:  10px; display: inline-block;').replace(/<img/g, '<img style=\"width:100%\"')\n  }).catch(() => {\n    ctrl.loading = false\n  })\n}\n\nconst goExam = () => {\n  ctrl.showBeforeExam = true\n}\nconst closeDialog = (flag = false) => {\n  ctrl.showBeforeExam = false;\n  if (flag) {\n    paperRecordCheck().then((res) => {\n      if (!res.isExamination) {\n        map.isExamination = false;\n        // ctrl.showStartExam = true;\n        // setStore(\"examInfo\", opts.examObj);\n        router.push({\n          path: \"/exam/startExam\",\n          query: {\n            controlShow: true,\n            examType: 6,\n            isExamination: map.isExamination,\n            recordId: map.recordId,\n            relevanceType: map.relevanceType,\n            relationalId: map.id\n          },\n        });\n      } else {\n        ElMessageBox.confirm(\"请继续未完成的考试\", \"提示\", {\n          cancelButtonText: \"取消\",\n          confirmButtonText: \"确定\",\n          type: \"warning\",\n        })\n          .then(() => {\n            map.isExamination = true;\n            map.recordId = res.recordId;\n            // ctrl.showStartExam = true;\n            // setStore(\"examInfo\", opts.examObj);\n            router.push({\n              path: \"/exam/startExam\",\n              query: {\n                controlShow: true,\n                examType: 6,\n                isExamination: map.isExamination,\n                recordId: map.recordId,\n                relevanceType: map.relevanceType,\n                relationalId: map.id\n              },\n            });\n          })\n          .catch(() => {});\n      }\n    });\n  }\n}\nconst goEntry = () => {\n  if (!token.value) {\n    router.push({\n      path: '/login',\n      query: {\n        redirect: encodeURIComponent(route.fullPath)\n      }\n    })\n    return false\n  }\n  if (!ctrl.isWhite) {\n    ElMessage.warning('未获得报名资格')\n    return\n  }\n  const nowDate = new Date().getTime()\n  const deadlineTime = new Date(opts.info.deadlineTime).getTime()\n  if (nowDate > deadlineTime) {\n    ElMessage.error('报名时间已截止')\n    return false\n  }\n  router.push({\n    path: '/contest/entry',\n    query: {\n      id: opts.info.id\n    }\n  })\n}\nuseHead({\n  title: computed(() => `赛事详情`),\n  meta:[{\n    hid: 'keywords',\n    name: 'keywords',\n    content: '赛事详情'\n  },\n    {\n      hid: 'description',\n      name: 'description',\n      content: '赛事详情'\n    }]\n})\n\nconst getDwnUrl = async (row) => {\n  let url = \"\"\n  url = await eventDownLoad({eventId: route.query.id, materialId: row.materialId})\n  const link = document.createElement('a');\n  link.href = url;\n  link.download = row.materialName;\n  link.click();\n}\n\n// tabs切换\nconst handleChangeType = (item, index) => {\n  map.tabs = index\n  if (map.tabs !== 0) {\n    getMenuFile(item)\n  }\n}\n\nconst getMenuFile = (row) => {\n  // 导航\n  eventMenu(row.id).then(res => {\n    console.log('res', res)\n    opts.coursewareList = res.affixList || []\n    console.log('opts.coursewareList', opts.coursewareList)\n  })\n}\nconst handleScrollBody = () => {\n  const app = document.querySelector('#app')\n  let top = Math.floor(app.scrollTop || window.pageYOffset)\n  if (top >= head.value.clientHeight - 10) {\n    ctrl.fixed = true\n  } else {\n    ctrl.fixed = false\n  }\n}\nconst getEnterVerify = () => {\n  const p = {\n    eventId: route.query.id,\n    userId: userInfo.value.id\n  }\n  enterVerify(p).then(res => {\n    if (res.isEnter) {\n      ctrl.isEnter = true\n      ctrl.entryText = '已报名'\n    }\n    if (res.isPaper) {\n      ctrl.isPaper = true\n    }\n    if (res.isWhite) {\n      ctrl.isWhite = true\n    }\n    if (res.isExam) {\n      ctrl.isExam = true\n    }\n  })\n}\nonMounted(() => {\n  console.log('userInfo', userInfo.value)\n  window.addEventListener('scroll', handleScrollBody, true)\n  if (opts.info && opts.info.enableForbidContentCopy) {\n    forbidCopy('.detail_desc_content')\n  }\n  if (token.value) {\n    getEnterVerify()\n  }\n  map.id = route.query.id\n  // map.type = route.query.type\n  getInfo()\n})\nonUnmounted(() => {\n  // if(!token.value) {\n  window.removeEventListener('scroll', handleScrollBody, true)\n  // }\n  if (opts.infoTimer) {\n    clearInterval(opts.infoTimer)\n    opts.infoTimer = null\n  }\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.homework_wrap_list {\n  display: flex;\n  flex-direction: column;\n  flex-wrap: wrap;\n}\n.homework_wrap_item {\n  display: flex;\n  flex: 1;\n  justify-content: space-between;\n  align-items: center;\n  padding: 10px;\n  margin-bottom: 10px;\n  background: #fff;\n  border-bottom: 1px solid #ccc;\n  .mater_name {\n    color: #666;\n    font-size: 14px;\n    margin-left: 8px;\n    cursor: pointer;\n    &:hover {\n      color: #3D7FFF;\n    }\n  }\n}\n.have_scroll_x {\n  overflow-x: auto;\n  display: inline-flex;\n\n  &::-webkit-scrollbar {\n    display: none\n  }\n\n  &:hover::-webkit-scrollbar {\n    display: block\n  }\n}\n\n.course_info_content {\n  background-color: #FFFFFF;\n  border-top: 1px solid #EBEEF5;\n}\n\n.nav_tabs_header {\n  background-color: #FFFFFF;\n  display: flex;\n  flex: 1;\n  padding-left: 60px;\n\n  .nav_tabs_item {\n    display: flex;\n    align-items: center;\n    margin-right: 50px;\n    font-size: 16px;\n    line-height: 65px;\n    white-space: nowrap;\n  }\n\n  .nav_tabs_item:hover {\n    cursor: pointer;\n    position: relative;\n    color: var(--el-color-primary);\n  }\n\n  .nav_tabs_item:hover::after {\n    content: \"\";\n    position: absolute;\n    left: 50%;\n    transform: translate(-50%);\n    bottom: 0;\n    width: 64px;\n    height: 3px;\n    border-radius: 1.5px;\n    background-color: var(--el-color-primary);\n  }\n\n  .active {\n    position: relative;\n    color: var(--el-color-primary);\n  }\n\n  .active::after {\n    content: \"\";\n    position: absolute;\n    left: 50%;\n    transform: translate(-50%);\n    bottom: 0;\n    width: 64px;\n    height: 3px;\n    border-radius: 1.5px;\n    background-color: var(--el-color-primary);\n  }\n}\n\n.nav_tabs {\n  padding: 20px;\n  padding-bottom: 0;\n  background-color: #FFFFFF;\n  display: flex;\n  align-items: center;\n  border-bottom: 1px solid #ccc;\n\n  .nav_tabs_item {\n    margin-right: 60px;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 16px;\n    padding-bottom: 20px;\n    color: #333333;\n    position: relative;\n    cursor: pointer;\n  }\n\n  .nav_tabs_item.active, .nav_tabs_item:hover {\n    color: #2256F6;\n\n    &:before {\n      content: '';\n      position: absolute;\n      bottom: 0;\n      background: #2256F6;\n      width: 64px;\n      padding-top: 3px;\n      left: 50%;\n      transform: translate(-50%);\n      border-radius: 10px;\n    }\n  }\n\n  .nav_tabs_item:last-child {\n    margin-right: 0;\n  }\n}\n\n.course_nav {\n  padding: 20px 0;\n  background: #f6f8fb;\n}\n\n.nav_course_title {\n  color: #999;\n  font-weight: 400;\n  max-width: 150px;\n}\n\n.course_name_tag {\n  padding: 5px 3px;\n  border-radius: 5px 0;\n  background: rgba(61, 127, 255, 0.1);\n  display: inline-block;\n  font-style: normal;\n  width: 46px;\n  position: relative;\n  top: -2px;\n  text-align: center;\n  font-weight: normal;\n  font-size: 10px;\n  color: #3D7FFF;\n  margin-right: 4px;\n}\n\n.course_cover_img {\n  width: 576px;\n  height: 320px;\n  object-fit: cover;\n  border-radius: 5px;\n  position: relative;\n}\n\n.course_cover {\n  position: relative;\n}\n\n.course_cover_btn {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  background: rgba(21, 21, 21, 0.8);\n  width: 100%;\n  color: #FFFFFF;\n  padding-top: 11px;\n  padding-bottom: 11px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 0 0 6px 6px;\n\n  .iconfont {\n    margin-right: 6px;\n  }\n}\n\n.course_name {\n  display: flex;\n  align-items: center;\n  font-style: normal;\n  font-weight: 400;\n  font-size: 20px;\n  color: #333333;\n}\n\n.course_price_content {\n  width: 100%;\n}\n\n.course_msg_content {\n  margin: 30px;\n  padding-bottom: 30px;\n  position: relative;\n}\n\n.course_message {\n  position: relative;\n}\n\n.course_int {\n  margin-top: 10px;\n  display: flex;\n\n  .course_in_icon {\n    min-width: 28px;\n    margin-left: 8px;\n    color: #666666;\n    cursor: pointer;\n  }\n\n  .course_int_text {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    color: #999999;\n    width: 570px;\n  }\n  .loadmore {\n    font-size: 14px;\n    color: #666;\n  }\n}\n\n.course_cell {\n  overflow: hidden;\n  width: 100%;\n  display: flex;\n  align-items: center;\n\n  & + .course_cell {\n    margin-top: 12px;\n  }\n\n  .course_cell_item {\n    white-space: nowrap;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    color: #333333;\n    display: flex;\n    align-items: center;\n    &.cu{\n      cursor: pointer;\n      &:hover{\n        color: #2256F6;\n      }\n    }\n  }\n\n  .course_cell_item + .course_cell_item {\n    padding-left: 24px;\n    position: relative;\n  }\n}\n\n.mgl3 {\n  margin-left: 3px;\n}\n\n.price_old {\n  color: #999999;\n  font-style: normal;\n  font-weight: normal;\n  font-size: 12px;\n  text-decoration-line: line-through;\n  margin-left: 5px;\n}\n\n.price_now {\n  font-style: normal;\n  font-weight: bold;\n  font-size: 20px;\n  color: #F61818;\n}\n\n.price_now .price_icon {\n  font-style: normal;\n  font-weight: normal;\n  font-size: 18px;\n}\n\n.course_btn_info {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-top: 5px;\n}\n\n.buy_btn {\n  width: 154px;\n  height: 40px;\n  font-size: 16px;\n}\n\n.course_learn_msg {\n  display: flex;\n  align-items: center;\n}\n\n.learn_item {\n  padding-right: 20px;\n  position: relative;\n  font-style: normal;\n  font-weight: normal;\n  font-size: 14px;\n  color: #999999;\n\n  & + .learn_item {\n    padding-left: 20px;\n\n    &:before {\n      content: '';\n      height: 12px;\n      padding-left: 1px;\n      background-color: #EBEEF5;\n      position: absolute;\n      left: 0;\n      top: 30%;\n    }\n  }\n}\n\n.icon_text_name {\n  margin-left: 3px;\n}\n\n.icon_btn {\n  cursor: pointer;\n\n  .iconfont {\n    //margin-right: 5px;\n  }\n}\n\n.detail_tab_pane {\n  padding: 30px;\n  background-color: #FFFFFF;\n  border-radius: 5px;\n  width: 1200px;\n}\n\n.have_detail_list {\n  margin-bottom: 30px;\n}\n\n.have_detail_title {\n  font-style: normal;\n  font-weight: 550;\n  font-size: 16px;\n  color: #333333;\n  margin-bottom: 10px;\n}\n\n.have_scroll_view {\n  display: flex;\n  align-items: center;\n}\n\n.have_scroll_left {\n  margin-right: 10px;\n}\n\n.have_scroll_right {\n  margin-left: 10px;\n}\n\n.have_scroll_left, .have_scroll_right {\n  background: #F6F8FB;\n  border-radius: 5px;\n  padding: 27px 7px;\n  cursor: pointer;\n}\n\n.course_have_item {\n  cursor: pointer;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  padding: 10px;\n  width: 317px;\n  max-width: 317px;\n  min-width: 317px;\n  border-radius: 10px;\n  background-color: #F6F8FB;\n  position: relative;\n\n  .course_have_img {\n    width: 90px;\n    height: 50px;\n    border-radius: 10px;\n    object-fit: cover;\n  }\n\n  & + .course_have_item {\n    margin-left: 10px;\n  }\n\n  .course_have_msg {\n    margin-left: 10px;\n    width: calc(100% - 20px - 90px - 10px);\n  }\n\n  .course_item_courseware {\n    font-style: normal;\n    font-weight: 400;\n    font-size: 12px;\n    color: #999999;\n  }\n\n  .course_item_title {\n    width: 100%;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    color: #333333;\n    text-overflow: ellipsis;\n    overflow: hidden;\n    white-space: nowrap;\n  }\n\n  &:before {\n    content: '>';\n    position: absolute;\n    right: 13.5px;\n    color: #BECADB;\n\n  }\n}\n\n.slide-forward-leave-active {\n  transition: all 1s;\n  transform: translate(-100%);\n}\n\n// router2\n.v-enter {\n  transform: translateX(100%);\n}\n\n.v-enter-active {\n  transition: all 3s;\n}\n\n.single_item_title {\n  max-width: 550px;\n}\n\n.single_item_name .video_icon {\n  font-size: 24px;\n}\n\n.single_item_name {\n  display: flex;\n  align-items: center;\n}\n\n.down_menu_item {\n  display: flex;\n  padding: 20px;\n  justify-content: space-between;\n  align-items: center;\n  font-style: normal;\n  font-weight: normal;\n  font-size: 14px;\n  color: #999999;\n  border-bottom: 1px solid #EBEEF5;\n\n  .down_item_name {\n    display: flex;\n    align-items: center;\n  }\n\n  .iconfont {\n    color: #333333;\n    font-size: 24px;\n  }\n}\n\n.single_menu_item {\n  display: flex;\n  padding: 20px;\n  justify-content: space-between;\n  align-items: center;\n  font-style: normal;\n  font-weight: normal;\n  font-size: 14px;\n  color: #999999;\n  border-bottom: 1px solid #EBEEF5;\n\n  &:hover {\n    background: rgba(34, 86, 246, 0.05);\n  }\n}\n\n.all_txt {\n  font-style: normal;\n  font-weight: normal;\n  font-size: 16px;\n  color: #333333;\n  margin-bottom: 20px;\n}\n\n.note_pane {\n  padding-top: 20px;\n}\n\n.note_item {\n  display: flex;\n  padding-bottom: 20px;\n  border-bottom: 1px solid #EBEEF5;\n\n  & + .note_item {\n    padding-top: 20px;\n  }\n}\n\n.note_cover {\n  margin-right: 20px;\n}\n\n.note_info {\n  width: calc(100% - 68px);\n}\n.pic {\n  margin: 10px 0;\n  display: flex;\n  flex-wrap: wrap;\n  .el-image {\n    width: 144px;\n    height: 80px;\n    margin-right: 10px;\n    margin-bottom: 10px;\n  }\n}\n\n.flex_note_img {\n  display: flex;\n  flex-wrap: wrap;\n  width: 100%;\n}\n\n.note_bg_img {\n  width: 144px;\n  margin-bottom: 10px;\n}\n\n.note_info_header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n\n  .note_info_name {\n    font-style: normal;\n    font-weight: 550;\n    font-size: 16px;\n  }\n\n  .note_info_time {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    color: #999999;\n  }\n}\n\n.loading_btn {\n  text-align: center;\n  padding-top: 11px;\n  padding-bottom: 11px;\n  margin-top: 20px;\n\n  .loading_text {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 12px;\n    color: #999999;\n  }\n}\n\n.comment_add_box {\n  margin-bottom: 30px;\n  :deep(.el-textarea__inner){\n    padding: 10px 11px;\n  }\n}\n\n.comment_add_btn {\n  margin-top: 15px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n\n  .iconfont {\n    font-size: 24px;\n    color: #BECADB;\n  }\n\n  .comment_btn {\n    width: 100px;\n    height: 40px;\n    font-size: 14px;\n  }\n}\n\n.limit_count_box {\n  background: var(--el-fill-color-blank);\n  bottom: 5px;\n  color: var(--el-color-info);\n  font-size: 12px;\n  line-height: 14px;\n  position: absolute;\n  right: 10px;\n}\n\n.course_comment_item {\n  display: flex;\n  padding-bottom: 20px;\n  border-bottom: 1px solid #EBEEF5;\n\n  &.hide {\n    display: none;\n  }\n\n  & + .course_comment_item {\n    padding-top: 20px;\n  }\n\n  .course_comment_cover {\n    margin-right: 20px;\n  }\n\n  .course_comment_content {\n    width: calc(100% - 68px);\n  }\n\n  .course_comment_btn {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n  }\n\n  .course_comment_btn.has {\n    padding-bottom: 20px;\n  }\n\n  .course_child_comment .course_comment_btn {\n    padding-bottom: 0;\n  }\n\n  .course_comment_time {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    color: #999999;\n  }\n\n  .comment_btn_list {\n    display: flex;\n    align-items: center;\n    margin-top: 10px;\n  }\n\n  .btn_icons {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 12px;\n    color: #999999;\n    display: flex;\n    align-items: center;\n    cursor: pointer;\n  }\n\n  .btn_icons.active, .btn_icons.hover {\n    color: #FF9D00;\n  }\n\n  .btn_icons:hover {\n    color: #FF9D00;\n  }\n\n  .btn_icons + .btn_icons {\n    margin-left: 15px;\n  }\n\n  .btn_icons .iconfont {\n    font-size: 16px;\n    margin-right: 3px;\n  }\n\n  .course_comment_user {\n    font-style: normal;\n    font-weight: 550;\n    font-size: 16px;\n  }\n\n  .course_comment_int {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    margin-top: 10px;\n    margin-bottom: 10px;\n    color: #999999;\n  }\n}\n\n.warning_color {\n  color: #FF9D00;\n}\n\n.course_child_comment {\n  padding: 20px;\n  background: #F6F8FB;\n  border-radius: 5px;\n  position: relative;\n\n  &:before {\n    content: '';\n    width: 15px;\n    height: 15px;\n    position: absolute;\n    top: -7.5px;\n    transform: rotate(45deg);\n    background: #F6F8FB;\n  }\n}\n\n.course_bottom {\n  margin-top: 29px;\n  width: 100%;\n}\n\n.fixed_header {\n  position: fixed;\n  top: 0;\n  height: 66px;\n  background-color: #FFFFFF;\n  width: 100%;\n  z-index: 10000;\n\n  .fixed_content {\n    width: 1200px;\n    height: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n\n  .nav_logo {\n    width: 170px;\n    height: 36px;\n\n    img {\n      width: 170px;\n      height: 36px;\n      object-fit: cover;\n    }\n  }\n}\n\n.detail_content {\n  padding-top: 66px;\n  min-height: 100%;\n}\n\n.icon-live {\n  color: #FE2C55;\n  font-size: 24px;\n}\n\n.course_cell_valid {\n  margin-top: 5px;\n  font-style: normal;\n  font-weight: 400;\n  font-size: 14px;\n}\n\n.tag_status.success {\n  color: #FFFFFF;\n}\n\n.tag_status.success .iconfont {\n  color: #2256F6;\n}\n\n.cover_teacher {\n  width: 20px;\n  height: 20px;\n  border-radius: 50%;\n  cursor: pointer;\n\n  & + .cover_teacher {\n\n    transition: all 0.3s;\n    margin-left: 3px;\n  }\n\n  &.hover {\n    transform: scale(1.5);\n    // border: 1px solid #2256F6;\n    // box-shadow: 0px 5px 15px rgba(54, 41, 183, 0.06);\n  }\n}\n\n.course_price_info {\n  margin-top: 20px;\n  display: flex;\n  color: #666;\n  background: rgba(242, 243, 245, 0.5);\n  padding: 15px 20px;\n\n  .course_tip {\n    margin-right: 40px;\n  }\n}\n\n.course_tip {\n  font-style: normal;\n  font-weight: 400;\n  font-size: 14px;\n  color: #666;\n}\n\n.teacher_warp_item {\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  margin-right: 10px;\n  height: 40px;\n  & + .teacher_warp_item {\n    margin-right: 10px;\n  }\n\n  .teacher_name {\n\n    margin-left: 4px;\n  }\n\n  &:hover .teacher_name {\n    color: #3D7FFF;\n  }\n}\n\n.flex_teacher {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  width: calc(100% - 70px);\n\n  .course_in_icon {\n    width: 29px;\n    cursor: pointer;\n  }\n\n  .course_cell_item.teacher_wrap {\n    padding-right: 10px;\n  }\n\n}\n\n.course_cell_item {\n  display: flex;\n  align-items: center;\n  flex-wrap: wrap;\n  word-break: break-all;\n  overflow: auto;\n}\n\n.course_cell_item.teacher_wrap {\n  display: flex;\n  align-items: center;\n  flex-wrap: nowrap;\n  text-overflow: clip;\n  overflow: hidden;\n}\n\n.valid_text {\n  font-weight: 400;\n  font-size: 14px;\n  color: #F01414;\n}\n</style>\n"],"names":["route","useRoute","data","componentInfo","__temp","__restore","_withAsyncContext","useAsyncData","async","ctx","getHearder","store","useUserStore","getToken","userView","shopData","router","useRouter","head","ref","userInfo","computed","token","map","reactive","id","tabs","type","ctrl","loading","courseware","fixed","isEnter","isPaper","isWhite","isExam","entryOver","entryText","showBeforeExam","opts","errorNum","info","eventDesc","style","width","tabEnum","menuTitle","menuType","infoTimer","noteList","coursewareList","goExam","closeDialog","flag","paperRecordCheck","then","res","isExamination","ElMessageBox","confirm","cancelButtonText","confirmButtonText","recordId","push","path","query","controlShow","examType","relevanceType","relationalId","catch","goEntry","value","redirect","encodeURIComponent","fullPath","ElMessage","warning","Date","getTime","deadlineTime","error","useHead","title","meta","hid","name","content","handleChangeType","item","index","getMenuFile","row","eventMenu","affixList","handleScrollBody","app","document","querySelector","Math","floor","scrollTop","window","pageYOffset","clientHeight","onMounted","addEventListener","enableForbidContentCopy","forbidCopy","p","eventId","userId","enterVerify","getEnterVerify","eventDetail","setSession","eventLevel","eventAreaName","eventPageId","concat","menuList","bus","emit","replace","onUnmounted","removeEventListener","clearInterval","url","eventDownLoad","materialId","link","createElement","href","download","materialName","click"],"mappings":"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"}