{"version":3,"file":"event.09a315e8.mjs","sources":["../../../../components/event/header.vue","../../../../layouts/event.vue"],"sourcesContent":["<template>\n  <div class=\"nav_wrapper w\" v-if=\"opts.eventInfo\">\n    <NuxtLink class=\"nav_logo\" :to=\"'/contest/list?id=' + opts.eventPageId\">\n      <img\n        v-if=\"opts.eventInfo.logo\"\n        :src=\"opts.eventInfo.logo\"\n        alt=\"\"\n      />\n    </NuxtLink>\n    <ul class=\"nav_list_wrapper\">\n      <li class=\"nav_item\"\n          @click=\"goLink(navItem)\"\n          v-for=\"(navItem,index) of navList\"\n          :class=\"{ active: index === activeItem.index }\"\n      >{{ navItem.name }}</li>\n    </ul>\n    <user-avatar></user-avatar>\n  </div>\n</template>\n\n<script setup>\nimport { eventPage } from '@/api/event.js'\nimport { getSession } from '@/utils/storage'\n\nimport bus from '@/utils/bus'\n\nconst router = useRouter()\nconst route = useRoute()\nconst activeItem = reactive({\n  index: 0\n})\nconst { data: componentInfo } = await useAsyncData(\"eventHeader\", async () => {\n\n  return {};\n});\n\n\nconst opts = reactive({\n  eventInfo: {},\n  eventPageId: ''\n})\nconst navList = reactive([\n  {\n    name: '首页',\n    url: '/contest/list',\n    active: true\n  },\n  {\n    name: '赛项',\n    url: '/contest/category'\n  },\n\n])\n\n\n\nconst goLink = (row) => {\n  router.push({\n    path: row.url,\n    query: {\n      id: getSession('eventPageId')\n    }\n  })\n}\n\nconst setNavActive = () => {\n  const contentList = navList\n  if (contentList && contentList.length) {\n    let is = false;\n    contentList.forEach((e, i) => {\n      if(route.path ===  e.url){\n        activeItem.index = i\n        is = true\n      }\n    });\n    if(!is) {\n      console.log('没有')\n      activeItem.index = -1\n    }\n  }\n}\n\nconst setData = (res) => {\n  console.log(res);\n  opts.eventInfo = res\n  const pagePublic = res.pagePublic;\n  try {\n    const ask = JSON.parse(pagePublic.ask)\n    if (ask.isAsk) {\n      let is = navList.find(e => e.url === '/contest/problem')\n      if (!is) {\n        navList.push({\n          name: '常见问题',\n          url: '/contest/problem'\n        })\n      }\n    }\n  } finally {}\n  try {\n    const contact = JSON.parse(pagePublic.contact)\n    if (contact.isContact) {\n      let is = navList.find(e => e.url === '/contest/about')\n      if (!is) {\n        navList.push({\n          name: '关于我们',\n          url: '/contest/about'\n        })\n      }\n    }\n  } finally {}\n\n  try {\n    const intro = JSON.parse(pagePublic.intro)\n\n    if (intro.isIntro) {\n      let is = navList.find(e => e.url === '/contest/desc')\n      if (!is) {\n        navList.splice(1, 0, {\n          name: '简介',\n          url: '/contest/desc'\n        })\n      }\n    }\n  } finally {}\n  setNavActive();\n}\n\nonMounted(() => {\n\n  if (route.path === '/contest/view') {\n    bus.on('get-eventpage',(eventPageId)=>{\n      console.log('bus请求eventInfo')\n      opts.eventPageId = eventPageId\n      eventPage(opts.eventPageId).then(res => {\n        setData(res)\n        bus.off('get-eventpage')\n      })\n    })\n  }\n  if (getSession('eventPageId')) {\n    opts.eventPageId = getSession('eventPageId')\n    eventPage(opts.eventPageId).then(res => {\n      setData(res)\n      console.log('请求eventInfo', opts.eventInfo)\n    })\n  }\n\n  setNavActive()\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.nav_wrapper {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  height: 66px;\n}\n.nav_logo {\n  width: 220px;\n  height: 36px;\n  img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n}\n.nav_list_wrapper {\n  flex: 1;\n  display: flex;\n  padding-left: 60px;\n  color: #333333;\n  .nav_item {\n    display: flex;\n    align-items: center;\n    margin-right: 50px;\n    color: #333;\n    font-size: 18px;\n    line-height: 40px;\n    white-space: nowrap;\n    .nav_item_more {\n      min-width: 20px;\n    }\n    &:hover{\n      cursor: pointer;\n    position: relative;\n    color: var(--el-color-primary);\n    }\n  }\n  .nav_color_item{\n    height: 50px;\n    padding: 15px 26px;\n    font-size: 16px;\n    color: #333333;\n    white-space: nowrap;\n    &:hover{\n      cursor: pointer;\n      position: relative;\n      color: var(--el-color-primary);\n    }\n  }\n  .nav_item:hover::after {\n    content: \"\";\n    position: absolute;\n    left: 50%;\n    bottom: 0;\n    transform: translateX(-50%);\n    width: 20px;\n    height: 3px;\n    border-radius: 1.5px;\n    background-color: var(--el-color-primary);\n  }\n  .active {\n    position: relative;\n    color: var(--el-color-primary);\n  }\n  .active::after {\n    content: \"\";\n    position: absolute;\n    left: 50%;\n    bottom: 0;\n    transform: translateX(-50%);\n    width: 20px;\n    height: 3px;\n    border-radius: 1.5px;\n    background-color: var(--el-color-primary);\n  }\n}\n</style>\n","<template>\n  <div id=\"app\">\n    <div class=\"app-header\">\n      <event-header />\n    </div>\n    <div class=\"app-main\">\n      <slot />\n    </div>\n    <div class=\"app-footer\">\n      <index-footer />\n    </div>\n    <preview-resource\n      v-if=\"ctrl.show\"\n      :model-value=\"ctrl.show\"\n      :id=\"ctrl.id\"\n      @close=\"ctrl.show = false\"\n    ></preview-resource>\n  </div>\n</template>\n\n<script setup>\nimport cookie from '@/utils/cookies'\nimport {onMounted} from \"vue\";\nimport bus from '@/utils/bus';\n\nlet cookieData = {};\nif (process.server) {\n  const nuxtApp = useNuxtApp()\n  if(nuxtApp && nuxtApp.ssrContext && nuxtApp.ssrContext.req ) {\n    cookieData = cookie.getInServer(nuxtApp.ssrContext.req)\n  }\n} else {\n  cookieData = {\n    shopIcon: cookie.getInClient('shopIcon'),\n    shopName: cookie.getInClient('shopName')\n  }\n}\nuseHead({\n  link: [\n    { rel: \"icon\", type: \"image/x-icon\", href: cookieData.shopIcon },\n    { rel: 'stylesheet', type: 'text/css', href: '//live-cdn.baijiayun.com/www-video-jssdk/dep/videojs/0.0.5/dist/videojs.css' }\n  ],\n  script: [\n    { src: '//lib.baomitu.com/jquery/3.5.1/jquery.min.js'},\n    { src: '//live-cdn.baijiayun.com/bplayer/1.3.1/bplayer.js' },\n    { src: '//live-cdn.baijiayun.com/bplayer/1.3.1/dep/ffplayer.js'},\n    { src: '//player.polyv.net/script/player.js' }\n  ]\n})\nconst ctrl = reactive({\n  show: false,\n  id: ''\n})\n\nonMounted(() => {\n  bus.on('preview-resource',(resourceId)=>{\n    ctrl.id = resourceId\n    ctrl.show = true\n  })\n  document.addEventListener('click',(e) => {\n    if(e && e.target) {\n      if(e.target.parentNode && e.target.parentNode.className === 'video_img') {\n        ctrl.id = e.target.parentNode.parentNode.dataset.id\n        ctrl.show = true\n        return\n      }\n      if(e.target.className === 'video_img') {\n        ctrl.id = e.target.parentNode.dataset.id\n        ctrl.show = true\n        return\n      }\n      if(e.target.className === 'audio_img') {\n        ctrl.id = e.target.parentNode.dataset.id\n        ctrl.show = true\n        return\n      }\n      if(e.target.parentNode && e.target.parentNode.className === 'audio_img') {\n        ctrl.id = e.target.parentNode.parentNode.dataset.id\n        ctrl.show = true\n      }\n    }\n  })\n});\n\n</script>\n\n<style lang=\"scss\" scoped>\n@import url('~/assets/font/iconfont.css');\n#app {\n  position: relative;\n  background-color: #f6f8fb;\n}\n.app-header {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1000;\n  background-color: #fff;\n  &.header-border{\n    border: 1px solid #EBEEF5;\n  }\n}\n.app-main {\n  min-height: 100vh;\n  background-color: #f6f8fb;\n}\n\n</style>\n"],"names":["router","useRouter","route","useRoute","activeItem","reactive","index","__temp","__restore","_withAsyncContext","useAsyncData","async","opts","eventInfo","eventPageId","navList","name","url","active","setNavActive","contentList","length","is","forEach","e","i","path","setData","res","pagePublic","JSON","parse","ask","isAsk","find","push","contact","isContact","intro","isIntro","splice","onMounted","bus","on","eventPage","then","off","getSession","row","query","id","cookieData","shopIcon","cookie","getInClient","shopName","useHead","link","rel","type","href","script","src","ctrl","show","resourceId","document","addEventListener","target","parentNode","className","dataset"],"mappings":"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"}