{"version":3,"file":"category.586543e7.mjs","sources":["../../../../pages/contest/category.vue"],"sourcesContent":["<template>\n  <NuxtLayout name=\"event\">\n    <div class=\"event_page top_bg\">\n      <div class=\"app_container w\">\n        <div class=\"bg_box search_tag_list\">\n          <div class=\"search_type_list\">\n            <span class=\"category_floor_name\">比赛赛区</span>\n            <div class=\"category_items\">\n              <span\n                class=\"search_type_item\"\n                v-for=\"item in opts.areaList\"\n                :key=\"item.id\"\n                :data-id=\"item.id\"\n                @click=\"handleClick(item)\"\n                :class=\"{ active: map.eventAreaId === item.id }\"\n                >{{ item.areaName }}\n              </span>\n            </div>\n          </div>\n          <div class=\"search_type_list\" v-for=\"(menu,index) in opts.categoryList\">\n            <span class=\"category_floor_name\">{{ index === 0 ? '比赛赛项' : ''}}</span>\n            <div class=\"category_items\">\n              <span\n                class=\"search_type_item\"\n                v-for=\"item in menu\"\n                :key=\"item.id\"\n                :data-id=\"item.id\"\n                @click=\"cateClick(item, index)\"\n                :class=\"{ active: opts.activeList[index] === item.id }\"\n                >{{ item.categoryName }}\n              </span>\n            </div>\n          </div>\n        </div>\n        <div v-if=\"opts.info && opts.info.eventDesc\" class=\"bg_box search_tag_list\">\n          <div v-html=\"opts.info.eventDesc\"></div>\n          <div class=\"c_blue\" @click=\"goDetail()\">查看详情</div>\n          <div class=\"baoming\"><el-button type=\"primary\" size=\"default\" :disabled=\"ctrl.isEnter ? true : false\" @click=\"goEntry()\">立即报名</el-button></div>\n        </div>\n      </div>\n    </div>\n  </NuxtLayout>\n</template>\n\n<script setup>\nimport { computed, watch } from \"vue\";\nimport {useUserStore} from \"@/stores/user\";\nimport cookie from '@/utils/cookies'\nimport { ElMessage } from 'element-plus'\nimport { eventCate, areaList, infoDetail, enterVerify } from '@/api/event.js'\nimport { setSession } from \"@/utils/storage\";\n\nlet cookieData = cookie.getShop()\nuseHead({\n  title: computed(() => `赛事赛项-${ cookieData.shopName}`),\n  meta:[{\n    hid: 'keywords',\n    name: 'keywords',\n    content: '赛事赛项'\n  },\n    {\n      hid: 'description',\n      name: 'description',\n      content: '赛事赛项'\n    }]\n})\nconst route = useRoute();\nconst router = useRouter();\nconst opts = reactive({\n  categoryList: [],\n  activeList: [],\n  areaList: [],\n  info: {},\n  loading: false\n})\nconst map = reactive({\n  categoryId: \"\",\n  eventAreaId: ''\n})\nconst ctrl = reactive({\n  isEnter: false\n})\nconst store = useUserStore()\nconst { getToken, userView, shopData} = store\nconst userInfo = computed(()=>store.userView)\nconst token = computed(() => {\n  return getToken()\n})\nonMounted(() => {\n  eventCate().then(res => {\n    const arr = res\n    console.log('res', res)\n    opts.categoryList = [arr]\n    console.log('categoryList', opts.categoryList)\n  })\n  getAreaList()\n})\n\nconst createClass = (data) => {\n\tlet arr = []\n\tfor(let i=0;i<data.length;i++){\n\t\tif(data[i].childrenList && data[i].childrenList.length > 0){\n      arr.push(data[i])\n\t\t\tarr = arr.concat(createClass(data[i].childrenList))\n\t\t}else{\n\t\t\tarr.push({\n\t\t\t\tcategoryName:data[i].categoryName,\n\t\t\t\tid:data[i].id,\n\t\t\t\tchildrenList:[]\n\t\t\t})\n\t\t}\n\t}\n\treturn arr;\n}\nconst handleClick = (row) => {\n  if(row.id !== map.eventAreaId) {\n    map.eventAreaId = row.id\n    getDetail()\n  }\n}\nconst cateClick = (row, index) => {\n  console.log(row)\n  console.log('第' +index +'级')\n  if (opts.activeList[index] !== row.id) {\n    opts.activeList[index] = row.id\n  }\n  opts.categoryList.splice(index+1)\n  opts.activeList.splice(index+1)\n  if (row.childrenList.length) {\n    opts.categoryList[index + 1] = row.childrenList\n  }\n  console.log('categoryList', opts.categoryList)\n  if(row.id !== map.categoryId) {\n    map.categoryId = row.id\n    getDetail()\n  }\n}\nconst goDetail = () => {\n  const url = router.resolve({\n    path: '/contest/view',\n    query: {\n      id: opts.info.id\n    }\n  })\n  window.open(url.href, '_blank')\n}\n\nconst getEnterVerify = () => {\n  const p = {\n    eventId: opts.info.id,\n    userId: userInfo.value.id\n  }\n  enterVerify(p).then(res => {\n    if (res.isEnter) {\n      ctrl.isEnter = true\n    }\n  })\n}\n\nconst getData = (query) => {\n  opts.loading = true\n  if (query.categoryId) {\n    map.categoryId = query.categoryId;\n  } else {\n    map.categoryId = '';\n  }\n  if (query.eventAreaId) {\n    map.eventAreaId = query.eventAreaId\n  } else {\n    map.eventAreaId = ''\n  }\n  setTimeout(() => {\n    opts.loading = false\n  }, 3000)\n  if (map.eventAreaId && map.categoryId) {\n    getDetail()\n  }\n}\nconst goEntry = () => {\n  setSession('eventLevel', opts.info.eventLevel)\n  setSession('areaName', opts.info.eventAreaName)\n  if (!token.value) {\n    router.push({\n      path: '/login',\n      query: {\n        redirect: encodeURIComponent(route.fullPath)\n      }\n    })\n    return false\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      categoryId: map.categoryId\n    }\n  })\n}\n\nfunction getDetail() {\n  if (map.categoryId && map.eventAreaId) {\n    infoDetail(map).then(res => {\n      Object.assign(opts.info, res)\n      if (token.value) {\n        getEnterVerify()\n      }\n    })\n  }\n}\n\n\nfunction getAreaList() {\n  areaList().then(res => {\n    opts.areaList = res\n  })\n}\n</script>\n\n<style lang=\"scss\">\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.event_desc {\n  background-color: #fff;\n  border-radius: 10px;\n  height: 80vh;\n  overflow: hidden;\n  padding: 20px 30px;\n}\n</style>\n<style lang=\"scss\" scoped>\n.c_blue {\n  color: #2256f6;\n  margin-top: 10px;\n  font-size: 14px;\n  cursor: pointer;\n}\n.baoming {\n  margin-top: 10px;\n  text-align: center;\n}\n.search_type_list {\n  // min-height: 50px;\n  display: flex;\n  .category_floor_name {\n    min-width: 70px;\n    height: 30px;\n    line-height: 30px;\n    margin-right: 10px;\n    color: #1A1A1A;\n  }\n  .category_items {\n    display: flex;\n    align-items: center;\n    flex-wrap: wrap;\n  }\n  & + .search_type_list {\n    margin-top: 10px;\n  }\n\n  .search_type_item {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    color: #666666;\n    cursor: pointer;\n    margin-right: 10px;\n    // margin-bottom: 14px;\n    padding: 6px 10px;\n    &.not_right {\n      margin-right: 0;\n    }\n\n    &.active {\n      color: #2256f6;\n      font-weight: bold;\n      background: rgba(34, 86, 246, 0.05);\n      border-radius: 5px;\n    }\n  }\n}\n.event_page {\n  min-height: 100vh;\n  padding-top: 86px;\n  padding-bottom: 20px;\n  background-color: #285CF2;\n}\n.desc_title {\n  display: flex;\n  align-items: center;\n  padding-bottom: 20px;\n}\n.desc_content {\n  color: #333;\n  padding: 30px;\n  padding-top: 0;\n  height: 100%;\n  overflow: auto;\n\n  &::-webkit-scrollbar {\n    display: none;\n  }\n}\n.bg_box {\n  width: 100%;\n  background-color: #ffffff;\n  border-radius: 5px;\n  padding: 5px 10px;\n  &:first-child {\n    margin-top: 20px;\n  }\n\n  & + .bg_box {\n    margin-top: 10px;\n  }\n}\n\n.search_tag_list {\n  padding: 10px 20px;\n}\n.top_bg {\n  background-image: url('@/assets/images/top_bg.png');\n  background-repeat: no-repeat;\n  background-size: 100%;\n}\n.title_text {\n  margin-left: 8px;\n  font-size: 20px;\n}\n</style>\n"],"names":["cookieData","cookie","getShop","useHead","title","computed","shopName","meta","hid","name","content","route","useRoute","router","useRouter","opts","reactive","categoryList","activeList","areaList","info","loading","map","categoryId","eventAreaId","ctrl","isEnter","store","useUserStore","getToken","userView","shopData","userInfo","token","onMounted","eventCate","then","res","arr","getDetail","infoDetail","Object","assign","value","p","eventId","id","userId","enterVerify","getEnterVerify","row","index","splice","childrenList","length","url","resolve","path","query","window","open","href","setSession","eventLevel","eventAreaName","push","redirect","encodeURIComponent","fullPath","Date","getTime","deadlineTime","ElMessage","error"],"mappings":"gwBAoDA,IAAAA,EAAAC,EAAAC,UACAC,EAAA,CACAC,MAAAC,GAAA,IAAA,QAAAL,EAAAM,aACAC,KAAA,CAAA,CACAC,IAAA,WACAC,KAAA,WACAC,QAAA,QAEA,CACAF,IAAA,cACAC,KAAA,cACAC,QAAA,WAGA,MAAAC,EAAAC,IACAC,EAAAC,IACAC,EAAAC,EAAA,CACAC,aAAA,GACAC,WAAA,GACAC,SAAA,GACAC,KAAA,CAAA,EACAC,SAAA,IAEAC,EAAAN,EAAA,CACAO,WAAA,GACAC,YAAA,KAEAC,EAAAT,EAAA,CACAU,SAAA,IAEAC,EAAAC,KACAC,SAAAA,EAAAC,SAAAA,EAAAC,SAAAA,GAAAJ,EACAK,EAAA3B,GAAA,IAAAsB,EAAAG,WACAG,GAAA5B,GAAA,IACAwB,MAEAK,GAAA,KACAC,IAAAC,MAAAC,IACA,MAAAC,EAAAD,EAEAtB,EAAAE,aAAA,CAAAqB,EACA,IA6HAnB,IAAAiB,MAAAC,IACAtB,EAAAI,SAAAkB,CAAA,GA5HA,IA8GA,SAAAE,KACAjB,EAAAC,YAAAD,EAAAE,aACAgB,EAAAlB,GAAAc,MAAAC,IACAI,OAAAC,OAAA3B,EAAAK,KAAAiB,GACAJ,GAAAU,OA9DA,MACA,MAAAC,EAAA,CACAC,QAAA9B,EAAAK,KAAA0B,GACAC,OAAAf,EAAAW,MAAAG,IAEAE,EAAAJ,GAAAR,MAAAC,IACAA,EAAAX,UACAD,EAAAC,SAAA,EACA,GACA,EAsDAuB,EACA,GAGA,kSApGA,IAAAC,QACAJ,KAAAxB,EAAAE,cACAF,EAAAE,YAAA0B,EAAAJ,GACAP,sRAGA,EAAAW,EAAAC,KAGApC,EAAAG,WAAAiC,KAAAD,EAAAJ,KACA/B,EAAAG,WAAAiC,GAAAD,EAAAJ,IAEA/B,EAAAE,aAAAmC,OAAAD,EAAA,GACApC,EAAAG,WAAAkC,OAAAD,EAAA,GACAD,EAAAG,aAAAC,SACAvC,EAAAE,aAAAkC,EAAA,GAAAD,EAAAG,cAGAH,EAAAJ,KAAAxB,EAAAC,aACAD,EAAAC,WAAA2B,EAAAJ,GACAP,KACA,gMAEA,MACA,MAAAgB,EAAA1C,EAAA2C,QAAA,CACAC,KAAA,gBACAC,MAAA,CACAZ,GAAA/B,EAAAK,KAAA0B,MAGAa,OAAAC,KAAAL,EAAAM,KAAA,SAAA,yGAkCA,MAGA,GAFAC,EAAA,aAAA/C,EAAAK,KAAA2C,YACAD,EAAA,WAAA/C,EAAAK,KAAA4C,gBACA/B,GAAAU,MAOA,OANA9B,EAAAoD,KAAA,CACAR,KAAA,SACAC,MAAA,CACAQ,SAAAC,mBAAAxD,EAAAyD,cAGA,EAIA,IAFA,IAAAC,MAAAC,UACA,IAAAD,KAAAtD,EAAAK,KAAAmD,cAAAD,UAGA,OADAE,EAAAC,MAAA,YACA,EAEA5D,EAAAoD,KAAA,CACAR,KAAA,iBACAC,MAAA,CACAZ,GAAA/B,EAAAK,KAAA0B,GACAvB,WAAAD,EAAAC,aAEA"}