{"version":3,"file":"articleView.997f40e1.mjs","sources":["../../../../pages/contest/articleView.vue"],"sourcesContent":["<template>\r\n  <NuxtLayout>\r\n    <div class=\"article_page\">\r\n      <div v-if=\"map.info.id\" v-loading=\"ctrl.loading\" class=\"content\">\r\n        <div class=\"detail w\">\r\n          <div class=\"top\">\r\n            <p>{{ map.info.title }}</p>\r\n            <div class=\"count\">\r\n              <span class=\"time\">{{ map.info.gmtCreate }}</span>\r\n              <!-- <span>{{ map.info.readCount }}人已浏览</span> -->\r\n            </div>\r\n          </div>\r\n          <div class=\"bottom rich-text\">\r\n            <div class=\"text\" v-html=\"map.info.content\"></div>\r\n            <div v-if=\"map.info.affixList.length\" class=\"file_list\">\r\n              <div class=\"homework_wrap_list\">\r\n                <div class=\"homework_wrap_item\" v-for=\"(item,index) of map.info.affixList\" :key=\"index\">\r\n                  <div class=\"flex align-center\">\r\n                    <img v-if=\"item.materialName.indexOf('.doc') > -1\" class=\"video_icon\" src=\"~/assets/icon_Word.svg\">\r\n                    <img v-if=\"item.materialName.indexOf('.xls') > -1\" class=\"video_icon\" src=\"~/assets/icon_Excel.svg\">\r\n                    <img v-if=\"item.materialName.indexOf('.ppt') > -1\" class=\"video_icon\" src=\"~/assets/icon_PPT.svg\">\r\n                    <img v-if=\"item.materialName.indexOf('.pdf') > -1\" class=\"video_icon\" src=\"~/assets/icon_PDF.svg\">\r\n                    <img v-if=\"item.materialName.indexOf('.txt') > -1\" class=\"video_icon\" src=\"~/assets/icon_txt.svg\">\r\n                    <img v-if=\"item.materialName.indexOf('.zip') > -1 || item.materialName.indexOf('.rar') > -1\" class=\"video_icon\" src=\"~/assets/icon_rar.svg\">\r\n                    <div class=\"mater_name\">{{ item.materialName }}</div>\r\n                  </div>\r\n                  <div class=\"flex align-center\">\r\n                    <div v-if=\"item.materialSize\" class=\"mgr10\">{{ getSize(item.materialSize) }}</div>\r\n                    <div class=\"mgr10 pointer blue lh20\" @click=\"getDwnUrl(item)\">\r\n                      <span class=\"iconfont icon-download\"></span>\r\n                      下载\r\n                    </div>\r\n                    <!-- <div class=\"mgr10 pointer blue\">\r\n                      <span class=\"iconfont icon-eye\"></span>\r\n                      查看\r\n                    </div> -->\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </NuxtLayout>\r\n</template>\r\n\r\n<script setup>\r\nimport { eventDownLoad, articleView } from '@/api/event.js'\r\nimport cookie from '@/utils/cookies'\r\nimport {getSize} from '../../utils'\r\n\r\nconst route = useRoute()\r\nlet cookieData = cookie.getShop()\r\n\r\nconst {data, pending} = await useAsyncData('articleView', ({ssrContext}) => {\r\n  const id = route.query.id\r\n\r\n  return new Promise(async (resolve) => {\r\n    // 赛事动态详情\r\n    Promise.allSettled([\r\n      articleView(id)\r\n    ]).then(([articleInfo]) => {\r\n      let data = {};\r\n      if (articleInfo.status === 'fulfilled') {\r\n        data.articleInfo = articleInfo\r\n      } else {\r\n        data.articleInfo = {}\r\n      }\r\n      resolve(data)\r\n    })\r\n  })\r\n}, {initialCache: false})\r\n\r\nconst map = reactive({\r\n  info: {},\r\n  id: ''\r\n})\r\n\r\nconst ctrl = reactive({\r\n  loading: false\r\n})\r\n\r\nlet articleInfo = {};\r\nif (!pending.value && data.value) {\r\n  const d = data.value\r\n  map.info = d.articleInfo.value\r\n  map.info.affixList = d.articleInfo.value.affixList || []\r\n  articleInfo = d.articleInfo\r\n}\r\n\r\nuseHead({\r\n  title: computed(() => `${articleInfo.value.title ? articleInfo.value.title : articleInfo.value.title}-${cookieData.shopName}`),\r\n  meta: [{\r\n    hid: 'keywords',\r\n    name: 'keywords',\r\n    content: articleInfo.value.title || articleInfo.value.title\r\n  },\r\n    {\r\n      hid: 'description',\r\n      name: 'description',\r\n      content: articleInfo.value.title ? articleInfo.value.title : articleInfo.value.title\r\n    }]\r\n})\r\n\r\nconst getDwnUrl = async (row) => {\r\n  let url = \"\"\r\n  url = await eventDownLoad({materialId: row.materialId})\r\n  const link = document.createElement('a');\r\n  link.href = url;\r\n  link.download = row.materialName;\r\n  link.click();\r\n}\r\n\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.article_page {\r\n  width: 1200px;\r\n  margin: auto;\r\n  margin-bottom: 40px;\r\n}\r\n.content {\r\n  position: relative;\r\n  display: flex;\r\n  justify-content: space-between;\r\n  margin-top: 40px;\r\n}\r\n\r\n.detail {\r\n  box-sizing: border-box;\r\n  background: #fff;\r\n  border-radius: 5px;\r\n  .top {\r\n    padding: 20px;\r\n    border-bottom: 1px solid #EBEEF5;\r\n\r\n    p {\r\n      font-size: 24px;\r\n    }\r\n\r\n    .count {\r\n      margin-top: 10px;\r\n      color: #999999;\r\n    }\r\n\r\n    .time {\r\n      position: relative;\r\n      margin-right: 28px;\r\n\r\n      // &::after {\r\n      //   content: '';\r\n      //   position: absolute;\r\n      //   right: -14px;\r\n      //   top: 4px;\r\n      //   width: 1px;\r\n      //   height: 10px;\r\n      //   background: #999;\r\n      // }\r\n    }\r\n  }\r\n\r\n  .bottom {\r\n    padding: 30px;\r\n    min-height: 305px;\r\n    .summary {\r\n      padding-bottom: 20px;\r\n      margin-bottom: 20px;\r\n      font-size: 16px;\r\n      line-height: 32px;\r\n      border-bottom: 1px solid #EBEEF5;\r\n    }\r\n\r\n    .text {\r\n      font-size: 16px;\r\n      line-height: 32px;\r\n    }\r\n  }\r\n  .file_list {\r\n    margin-top: 20px;\r\n    border-top: 1px solid #EBEEF5;\r\n    padding-top: 20px;\r\n  }\r\n  .homework_wrap_list {\r\n    display: flex;\r\n    flex-direction: column;\r\n    flex-wrap: wrap;\r\n  }\r\n  .homework_wrap_item {\r\n    display: flex;\r\n    flex: 1;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    padding: 10px;\r\n    margin-bottom: 10px;\r\n    background: #fff;\r\n    border-bottom: 1px solid #ccc;\r\n    .mater_name {\r\n      color: #666;\r\n      font-size: 14px;\r\n      margin-left: 8px;\r\n      cursor: pointer;\r\n      &:hover {\r\n        color: #3D7FFF;\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\n\r\n</style>\r\n<style>\r\n.rich-text ul li {\r\n  position: relative;\r\n}\r\n\r\n.rich-text ul li:before {\r\n  content: \"\";\r\n  position: absolute;\r\n  left: -15px;\r\n  width: 10px;\r\n  top: 30%;\r\n  height: 10px;\r\n  border-radius: 50%;\r\n  background-color: #333333;\r\n}\r\n</style>\r\n"],"names":["route","useRoute","cookieData","cookie","getShop","data","pending","id","query","Promise","async","resolve","allSettled","articleView","then","articleInfo","status","initialCache","map","reactive","info","ctrl","loading","value","d","affixList","useHead","title","computed","shopName","meta","hid","name","content","row","url","eventDownLoad","materialId","link","document","createElement","href","download","materialName","click"],"mappings":"sgCAoDA,MAAAA,EAAAC,IACA,IAAAC,EAAAC,EAAAC,UAEA,MAAAC,KAAAA,EAAAC,QAAAA,qDACA,MAAAC,EAAAP,EAAAQ,MAAAD,GAEA,OAAA,IAAAE,SAAAC,MAAAC,IAEAF,QAAAG,WAAA,CACAC,EAAAN,KACAO,MAAA,EAAAC,MACA,IAAAV,EAAA,CAAA,EACA,cAAAU,EAAAC,OACAX,EAAAU,YAAAA,EAEAV,EAAAU,YAAA,CAAA,EAEAJ,EAAAN,EAAA,GACA,GACA,GACA,CAAAY,cAAA,GAAA,kCAEAC,EAAAC,EAAA,CACAC,KAAA,CAAA,EACAb,GAAA,KAGAc,EAAAF,EAAA,CACAG,SAAA,IAGA,IAAAP,EAAA,CAAA,EACA,IAAAT,EAAAiB,OAAAlB,EAAAkB,MAAA,CACA,MAAAC,EAAAnB,EAAAkB,MACAL,EAAAE,KAAAI,EAAAT,YAAAQ,MACAL,EAAAE,KAAAK,UAAAD,EAAAT,YAAAQ,MAAAE,WAAA,GACAV,EAAAS,EAAAT,WACA,CAEAW,EAAA,CACAC,MAAAC,GAAA,IAAA,GAAAb,EAAAQ,MAAAI,MAAAZ,EAAAQ,MAAAI,SAAAzB,EAAA2B,aACAC,KAAA,CAAA,CACAC,IAAA,WACAC,KAAA,WACAC,QAAAlB,EAAAQ,MAAAI,OAAAZ,EAAAQ,MAAAI,OAEA,CACAI,IAAA,cACAC,KAAA,cACAC,SAAAlB,EAAAQ,MAAAI,MAAAZ,EAAAQ,MAAAI,g/BAIAjB,OAAAwB,IACA,IAAAC,EAAA,GACAA,QAAAC,EAAA,CAAAC,WAAAH,EAAAG,aACA,MAAAC,EAAAC,SAAAC,cAAA,KACAF,EAAAG,KAAAN,EACAG,EAAAI,SAAAR,EAAAS,aACAL,EAAAM,OAAA"}