9.3 lpt初版内容
Showing
13 changed files
with
459 additions
and
309 deletions
| ... | @@ -880,4 +880,19 @@ export function getZNList(params) { | ... | @@ -880,4 +880,19 @@ export function getZNList(params) { |
| 880 | }) | 880 | }) |
| 881 | } | 881 | } |
| 882 | 882 | ||
| 883 | export function getNoteList(params) { | ||
| 884 | return request({ | ||
| 885 | url: `/ztx/note/list`, | ||
| 886 | method: 'get', | ||
| 887 | params | ||
| 888 | }) | ||
| 889 | } | ||
| 890 | |||
| 891 | export function getNoteDetail(id) { | ||
| 892 | return request({ | ||
| 893 | url: `/ztx/note/${id}`, | ||
| 894 | method: 'get', | ||
| 895 | }) | ||
| 896 | } | ||
| 897 | |||
| 883 | 898 | ... | ... |
| ... | @@ -147,3 +147,49 @@ export function getWeather() { | ... | @@ -147,3 +147,49 @@ export function getWeather() { |
| 147 | method: 'get' | 147 | method: 'get' |
| 148 | }) | 148 | }) |
| 149 | } | 149 | } |
| 150 | |||
| 151 | export function getMain(id) { | ||
| 152 | return request({ | ||
| 153 | url: `/league/competition/detail?id=${id}&`, | ||
| 154 | method: 'get' | ||
| 155 | }) | ||
| 156 | } | ||
| 157 | |||
| 158 | export function getProjectMain(id) { | ||
| 159 | return request({ | ||
| 160 | url: `/league/competitionProject/${id}`, | ||
| 161 | method: 'get' | ||
| 162 | }) | ||
| 163 | } | ||
| 164 | |||
| 165 | export function getCompetitionList(query) { | ||
| 166 | return request({ | ||
| 167 | url: `/league/competition/getCompetitionList`, | ||
| 168 | method: 'get', | ||
| 169 | params: query | ||
| 170 | }) | ||
| 171 | } | ||
| 172 | |||
| 173 | export function getCompetitionProjectList(query) { | ||
| 174 | return request({ | ||
| 175 | url: `/league/competitionProject/list`, | ||
| 176 | method: 'get', | ||
| 177 | params: query | ||
| 178 | }) | ||
| 179 | } | ||
| 180 | |||
| 181 | export function getProjectTab(query) { | ||
| 182 | return request({ | ||
| 183 | url: `/league/competitionProjectTab/list`, | ||
| 184 | method: 'get', | ||
| 185 | params: query | ||
| 186 | }) | ||
| 187 | } | ||
| 188 | |||
| 189 | export function getImgList(query) { | ||
| 190 | return request({ | ||
| 191 | url: `/league/competitionImage/list`, | ||
| 192 | method: 'get', | ||
| 193 | params: query | ||
| 194 | }) | ||
| 195 | } | ... | ... |
| ... | @@ -6,7 +6,9 @@ | ... | @@ -6,7 +6,9 @@ |
| 6 | <h3>{{ languageLibrary[language].a }}</h3> | 6 | <h3>{{ languageLibrary[language].a }}</h3> |
| 7 | </el-col> | 7 | </el-col> |
| 8 | </el-row> | 8 | </el-row> |
| 9 | <el-row></el-row> | 9 | <el-row> |
| 10 | <div class="content" v-html="itemData.content" /> | ||
| 11 | </el-row> | ||
| 10 | <el-row class="contest-title" style="text-align: center"> | 12 | <el-row class="contest-title" style="text-align: center"> |
| 11 | <el-col :span="24"><h3>{{ languageLibrary[language].b }}</h3></el-col> | 13 | <el-col :span="24"><h3>{{ languageLibrary[language].b }}</h3></el-col> |
| 12 | <el-col :span="24"> | 14 | <el-col :span="24"> |
| ... | @@ -45,6 +47,8 @@ import { onMounted, ref } from 'vue' | ... | @@ -45,6 +47,8 @@ import { onMounted, ref } from 'vue' |
| 45 | import { getNewsListById } from '@/apiPc/webSite' | 47 | import { getNewsListById } from '@/apiPc/webSite' |
| 46 | import { useRouter } from 'vue-router' | 48 | import { useRouter } from 'vue-router' |
| 47 | import {useStorage} from "@vueuse/core/index"; | 49 | import {useStorage} from "@vueuse/core/index"; |
| 50 | import * as match from "@/apiPc/match"; | ||
| 51 | |||
| 48 | const language = useStorage('language', 0) | 52 | const language = useStorage('language', 0) |
| 49 | const languageLibrary = ref([{ | 53 | const languageLibrary = ref([{ |
| 50 | a:'关于我们', | 54 | a:'关于我们', |
| ... | @@ -87,22 +91,34 @@ const form = ref({ | ... | @@ -87,22 +91,34 @@ const form = ref({ |
| 87 | paymentName:'', | 91 | paymentName:'', |
| 88 | payDeptName:'', | 92 | payDeptName:'', |
| 89 | }) | 93 | }) |
| 90 | const searchParam = ref({ | ||
| 91 | type:'1', | ||
| 92 | text:'', | ||
| 93 | }) | ||
| 94 | const itemList = ref(['a','a','a','a','a','a','a','a','a']) | ||
| 95 | 94 | ||
| 96 | onMounted(() => { | 95 | const noteId = ref() |
| 96 | const itemData = ref({}) | ||
| 97 | 97 | ||
| 98 | onMounted(() => { | ||
| 99 | getMain() | ||
| 98 | }) | 100 | }) |
| 99 | 101 | ||
| 100 | const getList = (obj) => { | 102 | const getMain = () => { |
| 101 | getNewsListById(obj).then(res => { | 103 | match.getNoteList({ |
| 102 | newsList.value = res.rows | 104 | sortId:6000 |
| 105 | }).then(res => { | ||
| 106 | if (res.code === 200) { | ||
| 107 | noteId.value = res.rows[0].noteId | ||
| 108 | getList(noteId.value) | ||
| 109 | } | ||
| 103 | }) | 110 | }) |
| 104 | } | 111 | } |
| 105 | 112 | ||
| 113 | const getList = (id) => { | ||
| 114 | match.getNoteDetail(id).then(res => { | ||
| 115 | if (res.code === 200) { | ||
| 116 | itemData.value = res.data | ||
| 117 | } | ||
| 118 | }) | ||
| 119 | } | ||
| 120 | |||
| 121 | |||
| 106 | const goDetail = (id) => { | 122 | const goDetail = (id) => { |
| 107 | router.push({ | 123 | router.push({ |
| 108 | path: `/photo/detail/${id}` | 124 | path: `/photo/detail/${id}` |
| ... | @@ -110,6 +126,14 @@ const goDetail = (id) => { | ... | @@ -110,6 +126,14 @@ const goDetail = (id) => { |
| 110 | } | 126 | } |
| 111 | </script> | 127 | </script> |
| 112 | <style lang="scss" scoped> | 128 | <style lang="scss" scoped> |
| 129 | .content { | ||
| 130 | text-align: justify; | ||
| 131 | color: #fff; | ||
| 132 | background: #1f2644; | ||
| 133 | width: 100%; | ||
| 134 | } | ||
| 135 | |||
| 136 | |||
| 113 | .photo-space { | 137 | .photo-space { |
| 114 | padding: 10px; | 138 | padding: 10px; |
| 115 | } | 139 | } | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -7,10 +7,10 @@ | ... | @@ -7,10 +7,10 @@ |
| 7 | </el-col> | 7 | </el-col> |
| 8 | <el-col :lg="9"> | 8 | <el-col :lg="9"> |
| 9 | <div style="display: flex;align-items: center;height: 100%;"> | 9 | <div style="display: flex;align-items: center;height: 100%;"> |
| 10 | <el-button :class="['contest-title-btn',{'btn-active': searchParam.type=='0'}]" @click="searchByType('0')">{{ languageLibrary[language].a }}</el-button> | 10 | <el-button :class="['contest-title-btn',{'btn-active': searchParam.enrollStatus==''}]" @click="searchByType('')">{{ languageLibrary[language].a }}</el-button> |
| 11 | <el-button :class="['contest-title-btn',{'btn-active': searchParam.type=='1'}]" @click="searchByType('1')">{{ languageLibrary[language].b }}</el-button> | 11 | <el-button :class="['contest-title-btn',{'btn-active': searchParam.enrollStatus=='0'}]" @click="searchByType('0')">{{ languageLibrary[language].b }}</el-button> |
| 12 | <el-button :class="['contest-title-btn',{'btn-active': searchParam.type=='2'}]" @click="searchByType('2')">{{ languageLibrary[language].c }}</el-button> | 12 | <el-button :class="['contest-title-btn',{'btn-active': searchParam.enrollStatus=='1'}]" @click="searchByType('1')">{{ languageLibrary[language].c }}</el-button> |
| 13 | <el-button :class="['contest-title-btn',{'btn-active': searchParam.type=='3'}]" @click="searchByType('3')">{{ languageLibrary[language].d }}</el-button> | 13 | <el-button :class="['contest-title-btn',{'btn-active': searchParam.enrollStatus=='2'}]" @click="searchByType('2')">{{ languageLibrary[language].d }}</el-button> |
| 14 | </div> | 14 | </div> |
| 15 | </el-col> | 15 | </el-col> |
| 16 | <el-col :lg="12"> | 16 | <el-col :lg="12"> |
| ... | @@ -31,7 +31,7 @@ | ... | @@ -31,7 +31,7 @@ |
| 31 | <el-row> | 31 | <el-row> |
| 32 | <el-col :lg="8" :xs="24"> | 32 | <el-col :lg="8" :xs="24"> |
| 33 | <div class="imgbox"> | 33 | <div class="imgbox"> |
| 34 | <img style="aspect-ratio: 16/8" :src="fillImgUrl(n.picUrl)"> | 34 | <img style="aspect-ratio: 16/8" :src="fillImgUrl(n.coverUrl)"> |
| 35 | </div> | 35 | </div> |
| 36 | </el-col> | 36 | </el-col> |
| 37 | <el-col :lg="16" :xs="24"> | 37 | <el-col :lg="16" :xs="24"> |
| ... | @@ -40,17 +40,19 @@ | ... | @@ -40,17 +40,19 @@ |
| 40 | <div class="centerbox"> | 40 | <div class="centerbox"> |
| 41 | <div class="centerText"> | 41 | <div class="centerText"> |
| 42 | <span style="font-size: 16px;"> | 42 | <span style="font-size: 16px;"> |
| 43 | <div style="background: #3194FA;border-radius:6px 0 6px 0;padding: 0 4px">未开始</div> | 43 | <div v-if="n.enrollStatusStr == '未开始'" style="background: #3194FA;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].b }}</div> |
| 44 | <div v-else-if="n.enrollStatusStr == '进行中'" style="background: #21C9AB;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].c }}</div> | ||
| 45 | <div v-else style="background: #929AA0;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].d }}</div> | ||
| 44 | </span> | 46 | </span> |
| 45 | <span style="font-size: 26px">Long Poker</span> | 47 | <span style="font-size: 26px">{{ n.cptName }}</span> |
| 46 | <span style="font-size: 18px"><img style="margin-right: 2%" src="@/assets/v1/tag01.png" />2020.1.1</span> | 48 | <span style="font-size: 18px"><img style="margin-right: 2%" src="@/assets/v1/tag01.png" />{{ n.matchTimeStr }}</span> |
| 47 | <span style="font-size: 18px"><img style="margin-right: 2%" src="@/assets/v1/tag02.png" />123sw23</span> | 49 | <span style="font-size: 18px"><img style="margin-right: 2%" src="@/assets/v1/tag02.png" />{{ n.address }}</span> |
| 48 | </div> | 50 | </div> |
| 49 | </div> | 51 | </div> |
| 50 | </el-col> | 52 | </el-col> |
| 51 | <el-col :lg="6" :xs="24"> | 53 | <el-col :lg="6" :xs="24"> |
| 52 | <div class="endbox"> | 54 | <div class="endbox"> |
| 53 | <el-button class="endBtn" @click="goDetail(n.sortId)">{{ languageLibrary[language].g }}</el-button> | 55 | <el-button class="endBtn" @click="goDetail(n.id)">{{ languageLibrary[language].g }}</el-button> |
| 54 | </div> | 56 | </div> |
| 55 | </el-col> | 57 | </el-col> |
| 56 | </el-row> | 58 | </el-row> |
| ... | @@ -63,7 +65,7 @@ | ... | @@ -63,7 +65,7 @@ |
| 63 | <script setup> | 65 | <script setup> |
| 64 | import { ArrowRight, Search } from '@element-plus/icons-vue' | 66 | import { ArrowRight, Search } from '@element-plus/icons-vue' |
| 65 | import { onMounted, ref } from 'vue' | 67 | import { onMounted, ref } from 'vue' |
| 66 | import { getNewsListById } from '@/apiPc/webSite' | 68 | import { getCompetitionList } from '@/apiPc/webSite' |
| 67 | import { useRouter } from 'vue-router' | 69 | import { useRouter } from 'vue-router' |
| 68 | import {useStorage} from "@vueuse/core/index"; | 70 | import {useStorage} from "@vueuse/core/index"; |
| 69 | const language = useStorage('language', 0) | 71 | const language = useStorage('language', 0) |
| ... | @@ -110,66 +112,27 @@ const languageLibrary = [{ | ... | @@ -110,66 +112,27 @@ const languageLibrary = [{ |
| 110 | }] | 112 | }] |
| 111 | const router = useRouter() | 113 | const router = useRouter() |
| 112 | const searchParam = ref({ | 114 | const searchParam = ref({ |
| 113 | type:'1', | 115 | pageNum:1, |
| 114 | text:'', | 116 | pageSize:9999, |
| 117 | enrollStatus:'', | ||
| 115 | }) | 118 | }) |
| 116 | const newest2 = ref([{ | 119 | const newest2 = ref([]) |
| 117 | attacthJson:'', | ||
| 118 | belongTime: "2025-01-14", | ||
| 119 | isOut:'0', | ||
| 120 | isTop:'1', | ||
| 121 | name:'2025跆拳道世锦赛筹备快报,牵手巨无霸综合体,献给世界的欢乐', | ||
| 122 | noteId:'1907041686198497281', | ||
| 123 | picUrl:'/fs/20250729/image/8638425535731875840.png', | ||
| 124 | publishType:'', | ||
| 125 | sortId:'10000000', | ||
| 126 | sortName:'官方发布', | ||
| 127 | },{ | ||
| 128 | attacthJson:'', | ||
| 129 | belongTime: "2025-01-14", | ||
| 130 | isOut:'0', | ||
| 131 | isTop:'1', | ||
| 132 | name:'2025跆拳道世锦赛筹备快报,牵手巨无霸综合体,献给世界的欢乐1', | ||
| 133 | noteId:'1907041686198497281', | ||
| 134 | picUrl:'/fs/20250729/image/8638425535731875840.png', | ||
| 135 | publishType:'', | ||
| 136 | sortId:'10000001', | ||
| 137 | sortName:'官方发布', | ||
| 138 | },{ | ||
| 139 | attacthJson:'', | ||
| 140 | belongTime: "2025-01-14", | ||
| 141 | isOut:'0', | ||
| 142 | isTop:'1', | ||
| 143 | name:'2025跆拳道世锦赛筹备快报,牵手巨无霸综合体,献给世界的欢乐2', | ||
| 144 | noteId:'1907041686198497281', | ||
| 145 | picUrl:'/fs/20250729/image/8638425535731875840.png', | ||
| 146 | publishType:'', | ||
| 147 | sortId:'10000002', | ||
| 148 | sortName:'官方发布', | ||
| 149 | },{ | ||
| 150 | attacthJson:'', | ||
| 151 | belongTime: "2025-01-14", | ||
| 152 | isOut:'0', | ||
| 153 | isTop:'1', | ||
| 154 | name:'2025跆拳道世锦赛筹备快报,牵手巨无霸综合体,献给世界的欢乐3', | ||
| 155 | noteId:'1907041686198497281', | ||
| 156 | picUrl:'/fs/20250729/image/8638425535731875840.png', | ||
| 157 | publishType:'', | ||
| 158 | sortId:'10000003', | ||
| 159 | sortName:'官方发布', | ||
| 160 | }]) | ||
| 161 | 120 | ||
| 162 | onMounted(() => { | 121 | onMounted(() => { |
| 163 | 122 | getList() | |
| 164 | }) | 123 | }) |
| 165 | 124 | ||
| 166 | const searchByType = (type) => { | 125 | const searchByType = (type) => { |
| 167 | searchParam.value.type = type | 126 | searchParam.value.enrollStatus = type |
| 127 | getList() | ||
| 168 | } | 128 | } |
| 169 | 129 | ||
| 170 | const getList = (obj) => { | 130 | const getList = () => { |
| 171 | getNewsListById(obj).then(res => { | 131 | getCompetitionList(searchParam.value).then(res => { |
| 172 | newsList.value = res.rows | 132 | if (res.code == 200) { |
| 133 | newest2.value = res.rows | ||
| 134 | } | ||
| 135 | console.log(res) | ||
| 173 | }) | 136 | }) |
| 174 | } | 137 | } |
| 175 | 138 | ... | ... |
| ... | @@ -2,9 +2,25 @@ | ... | @@ -2,9 +2,25 @@ |
| 2 | <div> | 2 | <div> |
| 3 | <div class="box"> | 3 | <div class="box"> |
| 4 | <el-button class="back-btn" @click="goback()">{{ languageLibrary[language].a }}</el-button> | 4 | <el-button class="back-btn" @click="goback()">{{ languageLibrary[language].a }}</el-button> |
| 5 | <div class="list-title"></div> | 5 | <div style="position: relative"> |
| 6 | <img class="list-title" :src="fillImgUrl(mainInfo.coverUrl)"> | ||
| 7 | <div style="position: absolute;color: #fff;top:15%;left:5%"> | ||
| 8 | <el-row style="font-size: 16px;margin-bottom: 25px"> | ||
| 9 | <div v-if="mainInfo.enrollStatusStr == '未开始'" style="background: #3194FA;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].g }}</div> | ||
| 10 | <div v-else-if="mainInfo.enrollStatusStr == '进行中'" style="background: #21C9AB;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].h }}</div> | ||
| 11 | <div v-else style="background: #929AA0;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].i }}</div> | ||
| 12 | </el-row> | ||
| 13 | <el-row style="font-size: 38px;margin-bottom: 25px"><span>{{mainInfo.name}}</span></el-row> | ||
| 14 | <el-row style="font-size: 20px;margin-bottom: 25px"><span>{{mainInfo.beginTime + '~' + mainInfo.endTime}}</span></el-row> | ||
| 15 | <el-row style="font-size: 20px"><span>{{mainInfo.address}}</span></el-row> | ||
| 16 | </div> | ||
| 17 | </div> | ||
| 6 | <el-row style="margin: 20px 0"> | 18 | <el-row style="margin: 20px 0"> |
| 7 | <el-select class="list-select" v-model="searchParams.type"> | 19 | <el-select |
| 20 | class="list-select" | ||
| 21 | v-model="query.type" | ||
| 22 | @change="getList" | ||
| 23 | > | ||
| 8 | <el-option | 24 | <el-option |
| 9 | v-for="item in optionList" | 25 | v-for="item in optionList" |
| 10 | :key="item.value" | 26 | :key="item.value" |
| ... | @@ -14,23 +30,27 @@ | ... | @@ -14,23 +30,27 @@ |
| 14 | </el-select> | 30 | </el-select> |
| 15 | </el-row> | 31 | </el-row> |
| 16 | <el-row> | 32 | <el-row> |
| 17 | <el-col v-for="item in testList" :lg="8"> | 33 | <el-col v-for="item in competitionList" :lg="8"> |
| 18 | <div class="child-card"> | 34 | <div class="child-card"> |
| 19 | <el-button class="go-btn" @click="goDetail(item)"></el-button> | 35 | <el-button class="go-btn" @click="goDetail(item.id)"></el-button> |
| 20 | <el-row style="margin-bottom: 10px" class="not-start">未开始</el-row> | 36 | <el-row style="margin-bottom: 10px"> |
| 21 | <el-row style="margin-bottom: 10px; font-weight: bold;font-size: 20px">LPT马拉西亚巡回赛</el-row> | 37 | <div v-if="competitionList.enrollStatusStr == '未开始'" style="background: #3194FA;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].g }}</div> |
| 22 | <el-row style="margin-bottom: 10px;font-size: 16px">2025-11-02 9:00 ~ 2025-11-03 9:00</el-row> | 38 | <div v-else-if="competitionList.enrollStatusStr == '进行中'" style="background: #21C9AB;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].h }}</div> |
| 39 | <div v-else style="background: #929AA0;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].i }}</div> | ||
| 40 | </el-row> | ||
| 41 | <el-row style="margin-bottom: 10px; font-weight: bold;font-size: 20px">{{item.name}}</el-row> | ||
| 42 | <el-row style="margin-bottom: 10px;font-size: 16px">{{item.startTime + '~' + item.endTime}}</el-row> | ||
| 23 | <el-row> | 43 | <el-row> |
| 24 | <el-col :span="12"> | 44 | <el-col :span="12"> |
| 25 | <div style="display: flex;flex-direction: column;text-align: center"> | 45 | <div style="display: flex;flex-direction: column;text-align: center"> |
| 26 | <span style="font-size: 14px;color: #929AA0;margin-bottom: 5px">{{ languageLibrary[language].d }}</span> | 46 | <span style="font-size: 14px;color: #929AA0;margin-bottom: 5px">{{ languageLibrary[language].d }}</span> |
| 27 | <span style="color: #EEEEEE;font-size: 16px">$1111111111111111</span> | 47 | <span style="color: #EEEEEE;font-size: 16px">${{item.serviceFee}}</span> |
| 28 | </div> | 48 | </div> |
| 29 | </el-col> | 49 | </el-col> |
| 30 | <el-col :span="12"> | 50 | <el-col :span="12"> |
| 31 | <div style="display: flex;flex-direction: column;text-align: center"> | 51 | <div style="display: flex;flex-direction: column;text-align: center"> |
| 32 | <span style="font-size: 14px;color: #929AA0;margin-bottom: 5px">{{ languageLibrary[language].e }}</span> | 52 | <span style="font-size: 14px;color: #929AA0;margin-bottom: 5px">{{ languageLibrary[language].e }}</span> |
| 33 | <span style="color: #EEEEEE;font-size: 16px">1000</span> | 53 | <span style="color: #EEEEEE;font-size: 16px">{{item.projectFormat}}</span> |
| 34 | </div> | 54 | </div> |
| 35 | </el-col> | 55 | </el-col> |
| 36 | </el-row> | 56 | </el-row> |
| ... | @@ -42,7 +62,7 @@ | ... | @@ -42,7 +62,7 @@ |
| 42 | </template> | 62 | </template> |
| 43 | <script setup> | 63 | <script setup> |
| 44 | import { onMounted, ref } from 'vue' | 64 | import { onMounted, ref } from 'vue' |
| 45 | import {getNewsListById, getnoteListcptid} from '@/apiPc/webSite' | 65 | import {getMain,getCompetitionProjectList} from '@/apiPc/webSite' |
| 46 | import { useRoute, useRouter } from 'vue-router' | 66 | import { useRoute, useRouter } from 'vue-router' |
| 47 | import {useStorage} from "@vueuse/core/index"; | 67 | import {useStorage} from "@vueuse/core/index"; |
| 48 | const route = useRoute() | 68 | const route = useRoute() |
| ... | @@ -54,30 +74,45 @@ const languageLibrary = ref([{ | ... | @@ -54,30 +74,45 @@ const languageLibrary = ref([{ |
| 54 | c:'微型赛事', | 74 | c:'微型赛事', |
| 55 | d:'总买入费用', | 75 | d:'总买入费用', |
| 56 | e:'参赛席位', | 76 | e:'参赛席位', |
| 77 | g:'未开始', | ||
| 78 | h:'进行中', | ||
| 79 | i:'已结束', | ||
| 57 | },{ | 80 | },{ |
| 58 | a:'Return', | 81 | a:'Return', |
| 59 | b:'Main event', | 82 | b:'Main event', |
| 60 | c:'Mini event', | 83 | c:'Mini event', |
| 61 | d:'Total buy-in fee', | 84 | d:'Total buy-in fee', |
| 62 | e:'Entry seats', | 85 | e:'Entry seats', |
| 86 | g:'Not started', | ||
| 87 | h:'In progress', | ||
| 88 | i:'Completed', | ||
| 63 | },{ | 89 | },{ |
| 64 | a:'돌아가기', | 90 | a:'돌아가기', |
| 65 | b:'메인 이벤트', | 91 | b:'메인 이벤트', |
| 66 | c:'미니 이벤트', | 92 | c:'미니 이벤트', |
| 67 | d:'총 바이인 금액', | 93 | d:'총 바이인 금액', |
| 68 | e:'엔트리 수', | 94 | e:'엔트리 수', |
| 95 | g:'시작 전', | ||
| 96 | h:'진행 중', | ||
| 97 | i:'완료됨', | ||
| 69 | },{ | 98 | },{ |
| 70 | a:'戻る', | 99 | a:'戻る', |
| 71 | b:'メインイベント', | 100 | b:'メインイベント', |
| 72 | c:'ミニイベント', | 101 | c:'ミニイベント', |
| 73 | d:'バイイン総額', | 102 | d:'バイイン総額', |
| 74 | e:'エントリー数', | 103 | e:'エントリー数', |
| 104 | g:'未開始', | ||
| 105 | h:'進行中', | ||
| 106 | i:'完了', | ||
| 75 | },{ | 107 | },{ |
| 76 | a:'Quay lại', | 108 | a:'Quay lại', |
| 77 | b:'Giải chính', | 109 | b:'Giải chính', |
| 78 | c:'Giải phụ', | 110 | c:'Giải phụ', |
| 79 | d:'Tổng phí Buy-in', | 111 | d:'Tổng phí Buy-in', |
| 80 | e:'Số ghế tham gia', | 112 | e:'Số ghế tham gia', |
| 113 | g:'Chưa bắt đầu', | ||
| 114 | h:'Đang diễn ra', | ||
| 115 | i:'Đã hoàn thành', | ||
| 81 | }]) | 116 | }]) |
| 82 | 117 | ||
| 83 | 118 | ||
| ... | @@ -88,21 +123,37 @@ const optionList = ref([{ | ... | @@ -88,21 +123,37 @@ const optionList = ref([{ |
| 88 | label: languageLibrary.value[language.value].c, | 123 | label: languageLibrary.value[language.value].c, |
| 89 | value:'2' | 124 | value:'2' |
| 90 | }]) | 125 | }]) |
| 91 | const searchParams = ref({ | 126 | |
| 127 | const tId = ref() | ||
| 128 | const query = ref({ | ||
| 129 | pageNum:1, | ||
| 130 | pageSize:9999, | ||
| 131 | cptId:'', | ||
| 92 | type:'1' | 132 | type:'1' |
| 93 | }) | 133 | }) |
| 94 | const testList = ref(['a','a','a','a','a','a','a','a','a','a','a']) | 134 | const competitionList = ref([]) |
| 95 | 135 | ||
| 96 | onMounted(() => { | 136 | onMounted(() => { |
| 97 | 137 | tId.value = route.params.id | |
| 138 | getMainInfo() | ||
| 98 | }) | 139 | }) |
| 99 | 140 | ||
| 141 | const mainInfo = ref({}) | ||
| 142 | const getMainInfo = () => { | ||
| 143 | getMain(tId.value).then(res => { | ||
| 144 | if (res.code === 200) { | ||
| 145 | mainInfo.value = res.data | ||
| 146 | query.value.cptId = mainInfo.value.id | ||
| 147 | getList() | ||
| 148 | } | ||
| 149 | }) | ||
| 150 | } | ||
| 100 | 151 | ||
| 101 | const getList = () => { | 152 | const getList = () => { |
| 102 | console.log(query.value) | 153 | getCompetitionProjectList(query.value).then(res => { |
| 103 | getNewsListById(query.value).then(res => { | 154 | if (res.code === 200) { |
| 104 | newsList.value = res.rows | 155 | competitionList.value = res.rows |
| 105 | total.value = res.total | 156 | } |
| 106 | }) | 157 | }) |
| 107 | } | 158 | } |
| 108 | 159 | ||
| ... | @@ -136,7 +187,6 @@ const goback = function () { | ... | @@ -136,7 +187,6 @@ const goback = function () { |
| 136 | background: url("/dev-api/fs/20250729/image/8638425535731875840.png") no-repeat; | 187 | background: url("/dev-api/fs/20250729/image/8638425535731875840.png") no-repeat; |
| 137 | background-size: cover; | 188 | background-size: cover; |
| 138 | aspect-ratio: 16/3; | 189 | aspect-ratio: 16/3; |
| 139 | padding: 10%; | ||
| 140 | } | 190 | } |
| 141 | .list-select { | 191 | .list-select { |
| 142 | width: 200px; | 192 | width: 200px; | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div class="syBg"> | 2 | <div class="syBg"> |
| 3 | <div class="banner"> | 3 | <div class="banner"> |
| 4 | <el-carousel :interval="10000" | 4 | <el-carousel :interval="3000" |
| 5 | arrow="hover" | 5 | arrow="hover" |
| 6 | autoplay | 6 | autoplay |
| 7 | class="forPc" | 7 | class="forPc" |
| 8 | height="450px" | 8 | height="450px" |
| 9 | @change="carouselChange"> | 9 | @change="carouselChange"> |
| 10 | <el-carousel-item v-for="n in maList" :key="n.id" style="height: 450px;"> | 10 | <el-carousel-item v-for="n in maList" style="height: 450px;"> |
| 11 | <div class="bannerItem"> | 11 | <div class="bannerItem"> |
| 12 | <div class="h100" @click.stop="goMatch(n)"> | 12 | <div class="h100" @click.stop="goMatch(n)"> |
| 13 | <img :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> | 13 | <img :src="fillImgUrl(n.picUrl)" class="bannerImg"> |
| 14 | <div class="box forPc" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;"> | 14 | <div class="box forPc" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;"> |
| 15 | </div> | 15 | </div> |
| 16 | </div> | 16 | </div> |
| ... | @@ -42,9 +42,11 @@ | ... | @@ -42,9 +42,11 @@ |
| 42 | <div class="centerbox"> | 42 | <div class="centerbox"> |
| 43 | <div class="centerText"> | 43 | <div class="centerText"> |
| 44 | <span style="font-size: 16px;"> | 44 | <span style="font-size: 16px;"> |
| 45 | <div style="background: #3194FA;border-radius:6px 0 6px 0;padding: 0 4px">未开始</div> | 45 | <div v-if="n.enrollStatusStr == '未开始'" style="background: #3194FA;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].g }}</div> |
| 46 | <div v-else-if="n.enrollStatusStr == '进行中'" style="background: #21C9AB;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].h }}</div> | ||
| 47 | <div v-else style="background: #929AA0;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].i }}</div> | ||
| 46 | </span> | 48 | </span> |
| 47 | <span style="font-size: 26px">{{n.name}}</span> | 49 | <span style="font-size: 26px">{{n.cptName}}</span> |
| 48 | <span style="font-size: 18px"><img style="margin-right: 2%" src="@/assets/v1/tag01.png" />{{n.beginTime + '~' + n.endTime}}</span> | 50 | <span style="font-size: 18px"><img style="margin-right: 2%" src="@/assets/v1/tag01.png" />{{n.beginTime + '~' + n.endTime}}</span> |
| 49 | <span style="font-size: 18px"><img style="margin-right: 2%" src="@/assets/v1/tag02.png" />{{n.address}}</span> | 51 | <span style="font-size: 18px"><img style="margin-right: 2%" src="@/assets/v1/tag02.png" />{{n.address}}</span> |
| 50 | </div> | 52 | </div> |
| ... | @@ -71,13 +73,12 @@ | ... | @@ -71,13 +73,12 @@ |
| 71 | </div> | 73 | </div> |
| 72 | <el-row :gutter="20"> | 74 | <el-row :gutter="20"> |
| 73 | <el-col | 75 | <el-col |
| 74 | v-for="(n,index) in newest2.slice(0,6)" | 76 | v-for="(n,index) in news.slice(0,6)" :lg="8" :sm="8" |
| 75 | :key="n.sortId" :lg="8" :sm="8" | ||
| 76 | :xs="24" style="margin-bottom: 10px" | 77 | :xs="24" style="margin-bottom: 10px" |
| 77 | > | 78 | > |
| 78 | <div class="activeItem" @click="goDetail(n)"> | 79 | <div class="activeItem" @click="goDetail(n)"> |
| 79 | <div class="imgbox"> | 80 | <div class="imgbox"> |
| 80 | <img :src="fillImgUrl_webSite(n.picUrl)"> | 81 | <img :src="fillImgUrl(n.picUrl)"> |
| 81 | </div> | 82 | </div> |
| 82 | <div class="info"> | 83 | <div class="info"> |
| 83 | <!-- <div class="date">--> | 84 | <!-- <div class="date">--> |
| ... | @@ -102,13 +103,12 @@ | ... | @@ -102,13 +103,12 @@ |
| 102 | </div> | 103 | </div> |
| 103 | <el-row :gutter="20"> | 104 | <el-row :gutter="20"> |
| 104 | <el-col | 105 | <el-col |
| 105 | v-for="(n,index) in newest2.slice(0,6)" | 106 | v-for="(n,index) in instagramList.slice(0,6)" :lg="6" :sm="6" |
| 106 | :key="n.sortId" :lg="6" :sm="6" | ||
| 107 | :xs="24" style="margin-bottom: 10px" | 107 | :xs="24" style="margin-bottom: 10px" |
| 108 | > | 108 | > |
| 109 | <div class="activeItem" @click="goDetail(n)"> | 109 | <div class="activeItem"> |
| 110 | <div class="imgbox"> | 110 | <div class="imgbox"> |
| 111 | <img :src="fillImgUrl_webSite(n.picUrl)"> | 111 | <img :src="fillImgUrl(n.picUrl)"> |
| 112 | </div> | 112 | </div> |
| 113 | </div> | 113 | </div> |
| 114 | </el-col> | 114 | </el-col> |
| ... | @@ -125,9 +125,9 @@ | ... | @@ -125,9 +125,9 @@ |
| 125 | <el-card style="background: transparent; border: none"> | 125 | <el-card style="background: transparent; border: none"> |
| 126 | <el-row> | 126 | <el-row> |
| 127 | <el-col :lg="12"> | 127 | <el-col :lg="12"> |
| 128 | <a class="liveImgbox" target="_blank" @click="golive(livelist[0])"> | 128 | <a class="liveImgbox" @click="goDetail(livelist[0])"> |
| 129 | <div class="imgBox" style="min-height: 200px"> | 129 | <div class="imgBox" style="min-height: 200px"> |
| 130 | <img :src="fillImgUrl('/fs/20250729/image/8638425535731875840.png')"> | 130 | <img v-if="livelist[0]" style="aspect-ratio: 1/1" :src="fillImgUrl(livelist[0].picUrl)"> |
| 131 | </div> | 131 | </div> |
| 132 | <h3 class="esp"> | 132 | <h3 class="esp"> |
| 133 | {{ livelist[0]?.name }} | 133 | {{ livelist[0]?.name }} |
| ... | @@ -136,11 +136,11 @@ | ... | @@ -136,11 +136,11 @@ |
| 136 | </el-col> | 136 | </el-col> |
| 137 | <el-col :lg="12"> | 137 | <el-col :lg="12"> |
| 138 | <el-row class="news-l-r"> | 138 | <el-row class="news-l-r"> |
| 139 | <el-col v-for="(n,index) in livelist" v-show="index>0" :lg="12"> | 139 | <el-col v-for="(n,index) in livelist.slice(0,5)" v-show="index>0" :lg="12"> |
| 140 | <div class="item" style="padding: 0;margin:0 0 20px" @click="goDetail(n)"> | 140 | <div class="item" style="padding: 0;margin:0 0 20px" @click="goDetail(n)"> |
| 141 | <div class="imgbox"> | 141 | <div class="imgbox"> |
| 142 | <i class="playIcon"></i> | 142 | <i class="playIcon"></i> |
| 143 | <img :src="fillImgUrl_webSite(n.picUrl)"></div> | 143 | <img v-if="n" style="aspect-ratio: 1/1;height: auto" :src="fillImgUrl(n.picUrl)"></div> |
| 144 | </div> | 144 | </div> |
| 145 | </el-col> | 145 | </el-col> |
| 146 | </el-row> | 146 | </el-row> |
| ... | @@ -165,6 +165,7 @@ const router = useRouter() | ... | @@ -165,6 +165,7 @@ const router = useRouter() |
| 165 | const {proxy} = getCurrentInstance() | 165 | const {proxy} = getCurrentInstance() |
| 166 | const emit = defineEmits(['pop', 'pickup', 'backNumber', 'schSearch']) | 166 | const emit = defineEmits(['pop', 'pickup', 'backNumber', 'schSearch']) |
| 167 | const newest2 = ref([]) | 167 | const newest2 = ref([]) |
| 168 | const instagramList = ref([]) | ||
| 168 | const news = ref([]) | 169 | const news = ref([]) |
| 169 | const display = ref([]) | 170 | const display = ref([]) |
| 170 | const livelist = ref([]) | 171 | const livelist = ref([]) |
| ... | @@ -178,6 +179,9 @@ const languageLibrary = [{ | ... | @@ -178,6 +179,9 @@ const languageLibrary = [{ |
| 178 | d:'图片集锦', | 179 | d:'图片集锦', |
| 179 | e:'赛事视频', | 180 | e:'赛事视频', |
| 180 | f:'查看详情', | 181 | f:'查看详情', |
| 182 | g:'未开始', | ||
| 183 | h:'进行中', | ||
| 184 | i:'已结束', | ||
| 181 | },{ | 185 | },{ |
| 182 | a:'Calendar', | 186 | a:'Calendar', |
| 183 | b:'More', | 187 | b:'More', |
| ... | @@ -185,6 +189,9 @@ const languageLibrary = [{ | ... | @@ -185,6 +189,9 @@ const languageLibrary = [{ |
| 185 | d:'Gallery', | 189 | d:'Gallery', |
| 186 | e:'Video', | 190 | e:'Video', |
| 187 | f:'View details', | 191 | f:'View details', |
| 192 | g:'Not started', | ||
| 193 | h:'In progress', | ||
| 194 | i:'Completed', | ||
| 188 | },{ | 195 | },{ |
| 189 | a:'캘린더 / 일정표', | 196 | a:'캘린더 / 일정표', |
| 190 | b:'더보기', | 197 | b:'더보기', |
| ... | @@ -192,6 +199,9 @@ const languageLibrary = [{ | ... | @@ -192,6 +199,9 @@ const languageLibrary = [{ |
| 192 | d:'사진첩', | 199 | d:'사진첩', |
| 193 | e:'영상', | 200 | e:'영상', |
| 194 | f:'자세히 보기', | 201 | f:'자세히 보기', |
| 202 | g:'시작 전', | ||
| 203 | h:'진행 중', | ||
| 204 | i:'완료됨', | ||
| 195 | },{ | 205 | },{ |
| 196 | a:'カレンダー', | 206 | a:'カレンダー', |
| 197 | b:'もっと見る', | 207 | b:'もっと見る', |
| ... | @@ -199,6 +209,9 @@ const languageLibrary = [{ | ... | @@ -199,6 +209,9 @@ const languageLibrary = [{ |
| 199 | d:'ギャラリー', | 209 | d:'ギャラリー', |
| 200 | e:'動画', | 210 | e:'動画', |
| 201 | f:'詳細を見る', | 211 | f:'詳細を見る', |
| 212 | g:'未開始', | ||
| 213 | h:'進行中', | ||
| 214 | i:'完了', | ||
| 202 | },{ | 215 | },{ |
| 203 | a:'Lịch thi đấu', | 216 | a:'Lịch thi đấu', |
| 204 | b:'Xem thêm', | 217 | b:'Xem thêm', |
| ... | @@ -206,8 +219,30 @@ const languageLibrary = [{ | ... | @@ -206,8 +219,30 @@ const languageLibrary = [{ |
| 206 | d:'Thư viện hình ảnh', | 219 | d:'Thư viện hình ảnh', |
| 207 | e:'Video giải đấu', | 220 | e:'Video giải đấu', |
| 208 | f:'Xem chi tiết', | 221 | f:'Xem chi tiết', |
| 222 | g:'Chưa bắt đầu', | ||
| 223 | h:'Đang diễn ra', | ||
| 224 | i:'Đã hoàn thành', | ||
| 209 | }] | 225 | }] |
| 210 | 226 | ||
| 227 | const lunboParams = ref({ | ||
| 228 | status: 1, | ||
| 229 | sortId: 5000, | ||
| 230 | }) | ||
| 231 | |||
| 232 | const instagramParams = ref({ | ||
| 233 | status: 1, | ||
| 234 | sortId: 3000, | ||
| 235 | }) | ||
| 236 | |||
| 237 | const newsParams = ref({ | ||
| 238 | status: 1, | ||
| 239 | sortId: 1000, | ||
| 240 | }) | ||
| 241 | |||
| 242 | const liveParams = ref({ | ||
| 243 | status: 1, | ||
| 244 | sortId: 2000, | ||
| 245 | }) | ||
| 211 | 246 | ||
| 212 | 247 | ||
| 213 | onMounted(() => { | 248 | onMounted(() => { |
| ... | @@ -216,10 +251,36 @@ onMounted(() => { | ... | @@ -216,10 +251,36 @@ onMounted(() => { |
| 216 | 251 | ||
| 217 | const init = () => { | 252 | const init = () => { |
| 218 | match.getMaList({}).then((res) => { | 253 | match.getMaList({}).then((res) => { |
| 219 | newest2.value = res.rows.map(({languageSourceStr,coverUrl,name,beginTime, | 254 | newest2.value = res.rows.map(({languageSourceStr,coverUrl,cptName,beginTime, |
| 220 | endTime,address}) => | 255 | endTime,address,enrollStatusStr,id}) => |
| 221 | ({languageSourceStr,coverUrl,name,beginTime,endTime,address})) | 256 | ({languageSourceStr,coverUrl,cptName,beginTime,endTime,address,enrollStatusStr,id})) |
| 222 | console.log(newest2.value) | 257 | }) |
| 258 | |||
| 259 | match.getNoteList(lunboParams.value).then(res => { | ||
| 260 | if (res.code === 200) { | ||
| 261 | maList.value = res.rows | ||
| 262 | } | ||
| 263 | }) | ||
| 264 | |||
| 265 | match.getNoteList(instagramParams.value).then(res => { | ||
| 266 | if (res.code === 200) { | ||
| 267 | instagramList.value = res.rows | ||
| 268 | } | ||
| 269 | }) | ||
| 270 | |||
| 271 | match.getNoteList(newsParams.value).then(res => { | ||
| 272 | if (res.code === 200) { | ||
| 273 | news.value = res.rows | ||
| 274 | } | ||
| 275 | }) | ||
| 276 | |||
| 277 | match.getNoteList(liveParams.value).then(res => { | ||
| 278 | if (res.code === 200) { | ||
| 279 | livelist.value = res.rows | ||
| 280 | livelist.value.forEach(x => { | ||
| 281 | x.attacth = JSON.parse(x.attacthJson) | ||
| 282 | }) | ||
| 283 | } | ||
| 223 | }) | 284 | }) |
| 224 | } | 285 | } |
| 225 | 286 | ||
| ... | @@ -237,7 +298,7 @@ const goDetail = (n) => { | ... | @@ -237,7 +298,7 @@ const goDetail = (n) => { |
| 237 | 298 | ||
| 238 | const goContestDetail = (n) => { | 299 | const goContestDetail = (n) => { |
| 239 | router.push({ | 300 | router.push({ |
| 240 | path: `/contest/list/${n.noteId}` | 301 | path: `/contest/list/${n.id}` |
| 241 | }) | 302 | }) |
| 242 | } | 303 | } |
| 243 | 304 | ||
| ... | @@ -255,9 +316,10 @@ const goNews = () => { | ... | @@ -255,9 +316,10 @@ const goNews = () => { |
| 255 | }) | 316 | }) |
| 256 | } | 317 | } |
| 257 | const goMatch = (n) => { | 318 | const goMatch = (n) => { |
| 258 | router.push({ | 319 | console.log(n) |
| 259 | path: `/match/list/${n.id}` | 320 | // router.push({ |
| 260 | }) | 321 | // path: `/match/list/${n.id}` |
| 322 | // }) | ||
| 261 | } | 323 | } |
| 262 | 324 | ||
| 263 | const goVideo = () => { | 325 | const goVideo = () => { | ... | ... |
| ... | @@ -9,20 +9,20 @@ | ... | @@ -9,20 +9,20 @@ |
| 9 | <el-row> | 9 | <el-row> |
| 10 | <el-col class="photo-space" :lg="8" v-for="item in itemList"> | 10 | <el-col class="photo-space" :lg="8" v-for="item in itemList"> |
| 11 | <div class="photo-img-group"> | 11 | <div class="photo-img-group"> |
| 12 | <img class="photo-img" @click="goDetail(item)" :src="fillImgUrl('/fs/20250729/image/8638425535731875840.png')"> | 12 | <img class="photo-img" :src="fillImgUrl(item.picUrl)"> |
| 13 | </div> | 13 | </div> |
| 14 | </el-col> | 14 | </el-col> |
| 15 | </el-row> | 15 | </el-row> |
| 16 | <el-pagination class="photo-pagination" background layout="pager" :total="1000" /> | ||
| 17 | </div> | 16 | </div> |
| 18 | </div> | 17 | </div> |
| 19 | </template> | 18 | </template> |
| 20 | <script setup> | 19 | <script setup> |
| 21 | import { ArrowRight, Search } from '@element-plus/icons-vue' | 20 | import { ArrowRight, Search } from '@element-plus/icons-vue' |
| 22 | import { onMounted, ref } from 'vue' | 21 | import { onMounted, ref } from 'vue' |
| 23 | import { getNewsListById } from '@/apiPc/webSite' | ||
| 24 | import { useRouter } from 'vue-router' | 22 | import { useRouter } from 'vue-router' |
| 25 | import {useStorage} from "@vueuse/core/index"; | 23 | import {useStorage} from "@vueuse/core/index"; |
| 24 | import * as match from "@/apiPc/match"; | ||
| 25 | |||
| 26 | const language = useStorage('language', 0) | 26 | const language = useStorage('language', 0) |
| 27 | const languageLibrary = [{ | 27 | const languageLibrary = [{ |
| 28 | a:'Instagram' | 28 | a:'Instagram' |
| ... | @@ -37,26 +37,23 @@ const languageLibrary = [{ | ... | @@ -37,26 +37,23 @@ const languageLibrary = [{ |
| 37 | }] | 37 | }] |
| 38 | const router = useRouter() | 38 | const router = useRouter() |
| 39 | const searchParam = ref({ | 39 | const searchParam = ref({ |
| 40 | type:'1', | 40 | status: 1, |
| 41 | text:'', | 41 | sortId: 3000, |
| 42 | }) | 42 | }) |
| 43 | const itemList = ref(['a','a','a','a','a','a','a','a','a']) | 43 | const itemList = ref([]) |
| 44 | 44 | ||
| 45 | onMounted(() => { | 45 | onMounted(() => { |
| 46 | 46 | getList() | |
| 47 | }) | 47 | }) |
| 48 | 48 | ||
| 49 | const getList = (obj) => { | 49 | const getList = () => { |
| 50 | getNewsListById(obj).then(res => { | 50 | match.getNoteList(searchParam.value).then(res => { |
| 51 | newsList.value = res.rows | 51 | if (res.code === 200) { |
| 52 | itemList.value = res.rows | ||
| 53 | } | ||
| 52 | }) | 54 | }) |
| 53 | } | 55 | } |
| 54 | 56 | ||
| 55 | const goDetail = (id) => { | ||
| 56 | router.push({ | ||
| 57 | path: `/photo/detail/${id}` | ||
| 58 | }) | ||
| 59 | } | ||
| 60 | </script> | 57 | </script> |
| 61 | <style lang="scss" scoped> | 58 | <style lang="scss" scoped> |
| 62 | .photo-pagination { | 59 | .photo-pagination { | ... | ... |
| ... | @@ -9,8 +9,8 @@ | ... | @@ -9,8 +9,8 @@ |
| 9 | <el-row> | 9 | <el-row> |
| 10 | <el-col class="photo-space" :lg="8" v-for="item in itemList"> | 10 | <el-col class="photo-space" :lg="8" v-for="item in itemList"> |
| 11 | <div class="photo-img-group"> | 11 | <div class="photo-img-group"> |
| 12 | <img class="photo-img" :src="fillImgUrl('/fs/20250729/image/8638425535731875840.png')"> | 12 | <img class="photo-img" :src="fillImgUrl(item.picUrl)"> |
| 13 | <span style="display: block;font-size: 16px;margin:5px 0;color:#fff">LPT巡回赛</span> | 13 | <span style="display: block;font-size: 16px;margin:5px 0;color:#fff">{{item.name}}</span> |
| 14 | </div> | 14 | </div> |
| 15 | </el-col> | 15 | </el-col> |
| 16 | </el-row> | 16 | </el-row> |
| ... | @@ -23,6 +23,8 @@ import { onMounted, ref } from 'vue' | ... | @@ -23,6 +23,8 @@ import { onMounted, ref } from 'vue' |
| 23 | import { getNewsListById } from '@/apiPc/webSite' | 23 | import { getNewsListById } from '@/apiPc/webSite' |
| 24 | import { useRouter } from 'vue-router' | 24 | import { useRouter } from 'vue-router' |
| 25 | import {useStorage} from "@vueuse/core/index"; | 25 | import {useStorage} from "@vueuse/core/index"; |
| 26 | import * as match from "@/apiPc/match"; | ||
| 27 | |||
| 26 | const language = useStorage('language', 0) | 28 | const language = useStorage('language', 0) |
| 27 | const languageLibrary = ref([{ | 29 | const languageLibrary = ref([{ |
| 28 | a:'周边商城', | 30 | a:'周边商城', |
| ... | @@ -37,18 +39,20 @@ const languageLibrary = ref([{ | ... | @@ -37,18 +39,20 @@ const languageLibrary = ref([{ |
| 37 | }]) | 39 | }]) |
| 38 | const router = useRouter() | 40 | const router = useRouter() |
| 39 | const searchParam = ref({ | 41 | const searchParam = ref({ |
| 40 | type:'1', | 42 | status: 1, |
| 41 | text:'', | 43 | sortId: 4000, |
| 42 | }) | 44 | }) |
| 43 | const itemList = ref(['a','a','a','a','a','a','a','a','a']) | 45 | const itemList = ref([]) |
| 44 | 46 | ||
| 45 | onMounted(() => { | 47 | onMounted(() => { |
| 46 | 48 | getList() | |
| 47 | }) | 49 | }) |
| 48 | 50 | ||
| 49 | const getList = (obj) => { | 51 | const getList = () => { |
| 50 | getNewsListById(obj).then(res => { | 52 | match.getNoteList(searchParam.value).then(res => { |
| 51 | newsList.value = res.rows | 53 | if (res.code === 200) { |
| 54 | itemList.value = res.rows | ||
| 55 | } | ||
| 52 | }) | 56 | }) |
| 53 | } | 57 | } |
| 54 | 58 | ... | ... |
| ... | @@ -2,28 +2,21 @@ | ... | @@ -2,28 +2,21 @@ |
| 2 | <div> | 2 | <div> |
| 3 | <div class="box"> | 3 | <div class="box"> |
| 4 | <el-button class="back-btn" @click="goback()">{{ languageLibrary[language].a }}</el-button> | 4 | <el-button class="back-btn" @click="goback()">{{ languageLibrary[language].a }}</el-button> |
| 5 | <el-card v-if="form.isOld=='1'" class="mt20 mb20"> | 5 | <el-card class="mt20 mb20 news-card"> |
| 6 | <iframe | ||
| 7 | id="newsIframe" :src="`./source${form.jumpUrl}`" width="100%" height="0" frameborder="none" | ||
| 8 | scrolling="no" | ||
| 9 | /> | ||
| 10 | </el-card> | ||
| 11 | <el-card v-else class="mt20 mb20 news-card"> | ||
| 12 | <div class="bpd"> | 6 | <div class="bpd"> |
| 13 | <h3 class="title">1312893djsaduf9812</h3> | 7 | <h3 class="title">{{form.name}}</h3> |
| 14 | <div class="nInfo"> | 8 | <div class="nInfo"> |
| 15 | <span>发布时间:2025-01-01</span> | 9 | <span>发布时间:{{form.publishTime}}</span> |
| 16 | <span>111111111111</span> | 10 | <!-- <span>111111111111</span>--> |
| 17 | <span>责任编辑:123</span> | 11 | <span>责任编辑:{{form.createBy}}</span> |
| 18 | </div> | 12 | </div> |
| 19 | <el-divider /> | 13 | <el-divider /> |
| 20 | <div class="content">dawjdiwoaekdweo102938931298djkq9u1389238912</div> | 14 | <div class="content" v-html="form.content" /> |
| 21 | <!-- <div class="content" v-html="form.content" />--> | ||
| 22 | 15 | ||
| 23 | <!-- 视频--> | 16 | <!-- 视频--> |
| 24 | <div v-if="hasMp4" class="mt20"> | 17 | <div v-if="hasMp4" class="mt20"> |
| 25 | <div v-for="(f,index) in fileList" style="aspect-ratio: 16/9"> | 18 | <div v-for="(f,index) in fileList" style="aspect-ratio: 16/9"> |
| 26 | <video-player :key="index" class="videoPlay mb20" controls :src="fillImgUrl_webSite(f.url)" /> | 19 | <video-player :key="index" class="videoPlay mb20" controls :src="fillImgUrl(f.url)" /> |
| 27 | </div> | 20 | </div> |
| 28 | </div> | 21 | </div> |
| 29 | <div v-if="!hasMp4 && fileList.length>0" class="mt20"> | 22 | <div v-if="!hasMp4 && fileList.length>0" class="mt20"> |
| ... | @@ -49,6 +42,7 @@ import { useRoute, useRouter } from 'vue-router' | ... | @@ -49,6 +42,7 @@ import { useRoute, useRouter } from 'vue-router' |
| 49 | import { getHottest, getNewest, getNewsById } from '@/apiPc/webSite' | 42 | import { getHottest, getNewest, getNewsById } from '@/apiPc/webSite' |
| 50 | import _ from 'lodash' | 43 | import _ from 'lodash' |
| 51 | import {useStorage} from "@vueuse/core"; | 44 | import {useStorage} from "@vueuse/core"; |
| 45 | import * as match from "@/apiPc/match"; | ||
| 52 | 46 | ||
| 53 | const router = useRouter() | 47 | const router = useRouter() |
| 54 | const route = useRoute() | 48 | const route = useRoute() |
| ... | @@ -74,85 +68,24 @@ let newsId | ... | @@ -74,85 +68,24 @@ let newsId |
| 74 | onMounted(() => { | 68 | onMounted(() => { |
| 75 | newsId = route.params.id | 69 | newsId = route.params.id |
| 76 | getData(newsId) | 70 | getData(newsId) |
| 77 | // getNew() | ||
| 78 | |||
| 79 | window.addEventListener('message', onMessage) | ||
| 80 | }) | 71 | }) |
| 81 | 72 | ||
| 82 | onUnmounted(() => { | 73 | onUnmounted(() => { |
| 83 | window.removeEventListener('message', onMessage) | ||
| 84 | }) | ||
| 85 | |||
| 86 | function onMessage(event) { | ||
| 87 | if (event.data.type == 'ready') { | ||
| 88 | const iframe = document.getElementById('newsIframe') | ||
| 89 | setIframeHeight(0, iframe) | ||
| 90 | } | ||
| 91 | } | ||
| 92 | 74 | ||
| 93 | function setIframeHeight(height, iframe, handleTimeout) { | ||
| 94 | // console.log(height, handleTimeout) | ||
| 95 | const iframeDoc = iframe.contentDocument || iframe.contentWindow.document | ||
| 96 | if (height !== iframeDoc.body.clientHeight) { | ||
| 97 | height = iframeDoc.body.clientHeight | ||
| 98 | iframe.style.height = height + 50 + 'px' | ||
| 99 | |||
| 100 | handleTimeout = setTimeout(() => { | ||
| 101 | setIframeHeight(height, iframe, handleTimeout) | ||
| 102 | }, 500) | ||
| 103 | } else { | ||
| 104 | if (handleTimeout) { | ||
| 105 | clearTimeout(handleTimeout) | ||
| 106 | } | ||
| 107 | } | ||
| 108 | } | ||
| 109 | |||
| 110 | watch(() => route.params.id, (val) => { | ||
| 111 | if (val) { | ||
| 112 | if(val==0){ | ||
| 113 | return | ||
| 114 | } | ||
| 115 | getData(val) | ||
| 116 | } | ||
| 117 | }) | 75 | }) |
| 118 | 76 | ||
| 119 | const getNew = () => { | ||
| 120 | getNewest().then(res => { | ||
| 121 | newest.value = res.data | ||
| 122 | }) | ||
| 123 | getHottest().then(res => { | ||
| 124 | hottest.value = res.data | ||
| 125 | }) | ||
| 126 | } | ||
| 127 | const getData = (newsId) => { | 77 | const getData = (newsId) => { |
| 128 | getNewsById({ id: newsId }).then(res => { | 78 | match.getNoteDetail(newsId).then(res => { |
| 129 | form.value = res.data | 79 | form.value = res.data |
| 130 | if (form.value.attacthJson) { | 80 | if (form.value.attacthJson) { |
| 131 | fileList.value = JSON.parse(form.value.attacthJson) | 81 | fileList.value = JSON.parse(form.value.attacthJson) |
| 132 | |||
| 133 | hasMp4.value = _.some(fileList.value, (f) => { | 82 | hasMp4.value = _.some(fileList.value, (f) => { |
| 134 | return f.url.indexOf('.mp4') > -1 | 83 | return f.url.indexOf('.mp4') > -1 |
| 135 | }) | 84 | }) |
| 136 | |||
| 137 | // for (var f of fileList.value) { | ||
| 138 | // if (f.url.indexOf('.mp4') > -1) { | ||
| 139 | // hasMp4.value = true | ||
| 140 | // } else { | ||
| 141 | // hasMp4.value = false | ||
| 142 | // } | ||
| 143 | // } | ||
| 144 | } | 85 | } |
| 145 | }) | 86 | }) |
| 146 | } | 87 | } |
| 147 | const goDetail = (n) => { | 88 | |
| 148 | if (n.isOut == '1') { | ||
| 149 | window.open(n.jumpUrl) | ||
| 150 | } else { | ||
| 151 | router.push({ | ||
| 152 | path: `/news/detail/${n.noteId}` | ||
| 153 | }) | ||
| 154 | } | ||
| 155 | } | ||
| 156 | const goback = function () { | 89 | const goback = function () { |
| 157 | router.go(-1) | 90 | router.go(-1) |
| 158 | } | 91 | } | ... | ... |
| ... | @@ -9,7 +9,7 @@ | ... | @@ -9,7 +9,7 @@ |
| 9 | <div style="display: flex;align-items: center;height: 100%"> | 9 | <div style="display: flex;align-items: center;height: 100%"> |
| 10 | <el-input class="search-input" clearable :placeholder="languageLibrary[language].c" v-model="searchParam.text"> | 10 | <el-input class="search-input" clearable :placeholder="languageLibrary[language].c" v-model="searchParam.text"> |
| 11 | <template #append> | 11 | <template #append> |
| 12 | <el-button class="search-btn" > | 12 | <el-button @click="getList" class="search-btn" > |
| 13 | <el-icon> | 13 | <el-icon> |
| 14 | <Search/> | 14 | <Search/> |
| 15 | </el-icon> | 15 | </el-icon> |
| ... | @@ -20,21 +20,30 @@ | ... | @@ -20,21 +20,30 @@ |
| 20 | </el-col> | 20 | </el-col> |
| 21 | </el-row> | 21 | </el-row> |
| 22 | 22 | ||
| 23 | <div style="background: #1f2644;border-radius: 15px"> | 23 | <div style="background: #1f2644;border-radius: 15px;box-shadow: 0 0 15px 5px rgba(0,0,0,0.36)"> |
| 24 | <div class="newsLine" v-for="(n,index) in newsList" :key="index"> | 24 | <div class="newsLine" v-for="(n,index) in newsList" :key="index"> |
| 25 | <div class="item" @click=" goDetail(n.sortId)"> | 25 | <div class="item" @click="goDetail(n.noteId)"> |
| 26 | <div class="date"> | 26 | <div class="date"> |
| 27 | <div class="day">{{ n.belongTime?.substring(8, 10) }}</div> | 27 | <div class="day">{{ n.belongTime?.substring(8, 10) }}</div> |
| 28 | <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p> | 28 | <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p> |
| 29 | </div> | 29 | </div> |
| 30 | <div class="item-body"> | 30 | <div class="item-body"> |
| 31 | <h3 v-html="n.name" /> | 31 | <el-row> |
| 32 | <el-col :span="8"> | ||
| 33 | <img style="aspect-ratio: 2/1;width: 100%;padding: 10px" :src="fillImgUrl(n.picUrl)"> | ||
| 34 | </el-col> | ||
| 35 | <el-col :span="16"> | ||
| 36 | <h3 >{{n.name}}</h3> | ||
| 37 | <h3 >{{n.subName}}</h3> | ||
| 38 | </el-col> | ||
| 39 | </el-row> | ||
| 40 | |||
| 32 | </div> | 41 | </div> |
| 33 | <a class="go" /> | 42 | <a class="go" /> |
| 34 | </div> | 43 | </div> |
| 35 | </div> | 44 | </div> |
| 36 | <div style="display: flex;align-items: center"> | 45 | <div style="display: flex;align-items: center"> |
| 37 | <el-button class="news-more-btn">{{ languageLibrary[language].b }}<div class="arrow_towDown"></div></el-button> | 46 | <el-button class="news-more-btn" @click="getMoreInfo">{{ languageLibrary[language].b }}<div class="arrow_towDown"></div></el-button> |
| 38 | </div> | 47 | </div> |
| 39 | </div> | 48 | </div> |
| 40 | 49 | ||
| ... | @@ -48,6 +57,9 @@ import { onMounted, ref } from 'vue' | ... | @@ -48,6 +57,9 @@ import { onMounted, ref } from 'vue' |
| 48 | import { getNewsListById } from '@/apiPc/webSite' | 57 | import { getNewsListById } from '@/apiPc/webSite' |
| 49 | import { useRouter } from 'vue-router' | 58 | import { useRouter } from 'vue-router' |
| 50 | import {useStorage} from "@vueuse/core/index"; | 59 | import {useStorage} from "@vueuse/core/index"; |
| 60 | import * as match from "@/apiPc/match"; | ||
| 61 | import {ElMessage} from "element-plus"; | ||
| 62 | |||
| 51 | const language = useStorage('language', 0) | 63 | const language = useStorage('language', 0) |
| 52 | const languageLibrary = ref([{ | 64 | const languageLibrary = ref([{ |
| 53 | a:'新闻资讯', | 65 | a:'新闻资讯', |
| ... | @@ -72,67 +84,47 @@ const languageLibrary = ref([{ | ... | @@ -72,67 +84,47 @@ const languageLibrary = ref([{ |
| 72 | }]) | 84 | }]) |
| 73 | 85 | ||
| 74 | const router = useRouter() | 86 | const router = useRouter() |
| 87 | const totalTable = ref(0) | ||
| 75 | const searchParam = ref({ | 88 | const searchParam = ref({ |
| 76 | type:'1', | 89 | pageNum:1, |
| 90 | pageSize:10, | ||
| 77 | text:'', | 91 | text:'', |
| 92 | status: 1, | ||
| 93 | sortId: 1000, | ||
| 78 | }) | 94 | }) |
| 79 | const newsList = ref([{ | ||
| 80 | attacthJson:'', | ||
| 81 | belongTime: "2025-01-14", | ||
| 82 | isOut:'0', | ||
| 83 | isTop:'1', | ||
| 84 | name:'2025跆拳道世锦赛筹备快报,牵手巨无霸综合体,献给世界的欢乐', | ||
| 85 | noteId:'1907041686198497281', | ||
| 86 | picUrl:'/fs/20250729/image/8638425535731875840.png', | ||
| 87 | publishType:'', | ||
| 88 | sortId:'10000000', | ||
| 89 | sortName:'官方发布', | ||
| 90 | },{ | ||
| 91 | attacthJson:'', | ||
| 92 | belongTime: "2025-01-14", | ||
| 93 | isOut:'0', | ||
| 94 | isTop:'1', | ||
| 95 | name:'2025跆拳道世锦赛筹备快报,牵手巨无霸综合体,献给世界的欢乐1', | ||
| 96 | noteId:'1907041686198497281', | ||
| 97 | picUrl:'/fs/20250729/image/8638425535731875840.png', | ||
| 98 | publishType:'', | ||
| 99 | sortId:'10000001', | ||
| 100 | sortName:'官方发布', | ||
| 101 | },{ | ||
| 102 | attacthJson:'', | ||
| 103 | belongTime: "2025-01-14", | ||
| 104 | isOut:'0', | ||
| 105 | isTop:'1', | ||
| 106 | name:'2025跆拳道世锦赛筹备快报,牵手巨无霸综合体,献给世界的欢乐2', | ||
| 107 | noteId:'1907041686198497281', | ||
| 108 | picUrl:'/fs/20250729/image/8638425535731875840.png', | ||
| 109 | publishType:'', | ||
| 110 | sortId:'10000002', | ||
| 111 | sortName:'官方发布', | ||
| 112 | },{ | ||
| 113 | attacthJson:'', | ||
| 114 | belongTime: "2025-01-14", | ||
| 115 | isOut:'0', | ||
| 116 | isTop:'1', | ||
| 117 | name:'2025跆拳道世锦赛筹备快报,牵手巨无霸综合体,献给世界的欢乐3', | ||
| 118 | noteId:'1907041686198497281', | ||
| 119 | picUrl:'/fs/20250729/image/8638425535731875840.png', | ||
| 120 | publishType:'', | ||
| 121 | sortId:'10000003', | ||
| 122 | sortName:'官方发布', | ||
| 123 | }]) | ||
| 124 | 95 | ||
| 125 | onMounted(() => { | 96 | const newsList = ref([]) |
| 126 | 97 | ||
| 98 | onMounted(() => { | ||
| 99 | getList() | ||
| 127 | }) | 100 | }) |
| 128 | 101 | ||
| 129 | const searchByType = (type) => { | 102 | const getList = () => { |
| 130 | searchParam.value.type = type | 103 | searchParam.value.pageNum = 1 |
| 104 | searchParam.value.pageSize = 10 | ||
| 105 | match.getNoteList(searchParam.value).then(res => { | ||
| 106 | if (res.code === 200) { | ||
| 107 | newsList.value = res.rows | ||
| 108 | totalTable.value = res.total | ||
| 109 | } | ||
| 110 | }) | ||
| 131 | } | 111 | } |
| 132 | 112 | ||
| 133 | const getList = (obj) => { | 113 | const getMoreInfo = () => { |
| 134 | getNewsListById(obj).then(res => { | 114 | if (searchParam.pageNum * searchParam.pageSize < totalTable.value) { |
| 135 | newsList.value = res.rows | 115 | searchParam.pageNum += 1 |
| 116 | getMoreList() | ||
| 117 | } else { | ||
| 118 | ElMessage.warning("已经没有啦!") | ||
| 119 | } | ||
| 120 | } | ||
| 121 | |||
| 122 | const getMoreList = ()=> { | ||
| 123 | match.getNoteList(searchParam.value).then(res => { | ||
| 124 | if (res.code === 200) { | ||
| 125 | newsList.value.push(res.rows) | ||
| 126 | totalTable.value = res.total | ||
| 127 | } | ||
| 136 | }) | 128 | }) |
| 137 | } | 129 | } |
| 138 | 130 | ||
| ... | @@ -222,13 +214,13 @@ const goDetail = (id) => { | ... | @@ -222,13 +214,13 @@ const goDetail = (id) => { |
| 222 | .newsLine{ | 214 | .newsLine{ |
| 223 | margin: 20px; | 215 | margin: 20px; |
| 224 | .firstItem{margin-bottom: 10px;} | 216 | .firstItem{margin-bottom: 10px;} |
| 225 | .item{display: flex;position: relative;width: 100%;height: 90px; | 217 | .item{display: flex;position: relative;width: 100%;height: auto; |
| 226 | align-items: center;cursor: pointer;border-bottom: 1px solid #3C4259; | 218 | align-items: center;cursor: pointer;border-bottom: 1px solid #3C4259; |
| 227 | .date{width: 60px;height: 60px;text-align: center;background: #43445B;margin: 0 10px; | 219 | .date{width: 60px;height: 60px;text-align: center;background: #43445B;margin: 0 10px; |
| 228 | .day{color: #CAA767;transform: scaleX(0.7);font-weight: bold;font-size: 24px;} | 220 | .day{color: #CAA767;transform: scaleX(0.7);font-weight: bold;font-size: 24px;} |
| 229 | p{font-size: 14px;margin: 0;transform: scaleX(0.7);font-weight: bold;color: #7B7F83;} | 221 | p{font-size: 14px;margin: 0;transform: scaleX(0.7);font-weight: bold;color: #7B7F83;} |
| 230 | } | 222 | } |
| 231 | .item-body{width: 60%; | 223 | .item-body{width: 100%; |
| 232 | h3{padding: 0 10px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;font-size: 18px;color: #fff;} | 224 | h3{padding: 0 10px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;font-size: 18px;color: #fff;} |
| 233 | } | 225 | } |
| 234 | .go{background: url("@/assets/v1/about/go.png") no-repeat center;background-size: contain; | 226 | .go{background: url("@/assets/v1/about/go.png") no-repeat center;background-size: contain; |
| ... | @@ -236,14 +228,15 @@ const goDetail = (id) => { | ... | @@ -236,14 +228,15 @@ const goDetail = (id) => { |
| 236 | filter:grayscale(1); | 228 | filter:grayscale(1); |
| 237 | } | 229 | } |
| 238 | } | 230 | } |
| 239 | .item:hover{background: #f7f8fc; | 231 | .item:hover{ |
| 232 | background: #000; | ||
| 240 | .date{ | 233 | .date{ |
| 241 | background:#000; | 234 | background:#000; |
| 242 | .day{color: #fff;} | 235 | .day{color: #fff;} |
| 243 | p{color: #fff;} | 236 | p{color: #fff;} |
| 244 | } | 237 | } |
| 245 | .item-body{ | 238 | .item-body{ |
| 246 | h3{color: #000;} | 239 | h3{color: #fff;} |
| 247 | } | 240 | } |
| 248 | } | 241 | } |
| 249 | } | 242 | } | ... | ... |
| ... | @@ -3,31 +3,40 @@ | ... | @@ -3,31 +3,40 @@ |
| 3 | <div class="box"> | 3 | <div class="box"> |
| 4 | <el-button class="back-btn" @click="goback()">{{ languageLibrary[language].a }}</el-button> | 4 | <el-button class="back-btn" @click="goback()">{{ languageLibrary[language].a }}</el-button> |
| 5 | <el-row class="detail-title"> | 5 | <el-row class="detail-title"> |
| 6 | <el-col :span="2"><span class="not-start">进行中</span></el-col> | 6 | <el-col :span="2"> |
| 7 | <span v-if="projectMainInfo.enrollStatusStr == '未开始'" style="background: #3194FA;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].g }}</span> | ||
| 8 | <span v-else-if="projectMainInfo.enrollStatusStr == '进行中'" style="background: #21C9AB;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].h }}</span> | ||
| 9 | <span v-else style="background: #929AA0;border-radius:6px 0 6px 0;padding: 0 4px">{{ languageLibrary[language].i }}</span> | ||
| 10 | </el-col> | ||
| 7 | <el-col :span="6"> | 11 | <el-col :span="6"> |
| 8 | <div style="display: flex;flex-direction: column;"> | 12 | <span style="font-size: 20px;font-weight: bold;margin-bottom: 5px">{{projectMainInfo.name}}</span> |
| 9 | <span style="font-size: 20px;font-weight: bold;margin-bottom: 5px">LPT马来西亚巡回赛</span> | 13 | <!-- <div style="display: flex;flex-direction: column;">--> |
| 10 | <span>2023-09-08~2023-09-09</span> | 14 | <!-- <span style="font-size: 20px;font-weight: bold;margin-bottom: 5px">{{projectMainInfo.name}}</span>--> |
| 11 | </div> | 15 | <!-- <span>{{projectMainInfo.beginTime + '~' + projectMainInfo.endTime}}</span>--> |
| 16 | <!-- </div>--> | ||
| 12 | </el-col> | 17 | </el-col> |
| 13 | <el-col style="border-left: 1px solid #929AA0;border-right: 1px solid #929AA0" :span="4"> | 18 | <el-col :span="16"> |
| 14 | <div style="display: flex;flex-direction: column;text-align: center"> | 19 | <span>比赛时间: {{projectMainInfo.beginTime + '~' + projectMainInfo.endTime}}</span> |
| 15 | <span style="font-size: 14px;color: #929AA0;margin-bottom: 5px">{{ languageLibrary[language].b }}</span> | ||
| 16 | <span style="color: #EEEEEE;font-size: 16px">$1111111111111111</span> | ||
| 17 | </div> | ||
| 18 | </el-col> | ||
| 19 | <el-col :span="4"> | ||
| 20 | <div style="display: flex;flex-direction: column;text-align: center"> | ||
| 21 | <span style="font-size: 14px;color: #929AA0;margin-bottom: 5px">{{ languageLibrary[language].c }}</span> | ||
| 22 | <span style="color: #EEEEEE;font-size: 16px">11111111</span> | ||
| 23 | </div> | ||
| 24 | </el-col> | 20 | </el-col> |
| 21 | |||
| 22 | <!-- <el-col style="border-left: 1px solid #929AA0;border-right: 1px solid #929AA0" :span="4">--> | ||
| 23 | <!-- <div style="display: flex;flex-direction: column;text-align: center">--> | ||
| 24 | <!-- <span style="font-size: 14px;color: #929AA0;margin-bottom: 5px">{{ languageLibrary[language].b }}</span>--> | ||
| 25 | <!-- <span style="color: #EEEEEE;font-size: 16px">${{projectMainInfo.serviceFee}}</span>--> | ||
| 26 | <!-- </div>--> | ||
| 27 | <!-- </el-col>--> | ||
| 28 | <!-- <el-col :span="4">--> | ||
| 29 | <!-- <div style="display: flex;flex-direction: column;text-align: center">--> | ||
| 30 | <!-- <span style="font-size: 14px;color: #929AA0;margin-bottom: 5px">{{ languageLibrary[language].c }}</span>--> | ||
| 31 | <!-- <span style="color: #EEEEEE;font-size: 16px">{{projectMainInfo.projectFormat}}</span>--> | ||
| 32 | <!-- </div>--> | ||
| 33 | <!-- </el-col>--> | ||
| 25 | </el-row> | 34 | </el-row> |
| 26 | 35 | ||
| 27 | <el-row> | 36 | <el-row> |
| 28 | <el-col class="photo-space" :lg="12" v-for="item in itemList"> | 37 | <el-col class="photo-space" :lg="12" v-for="item in photoList"> |
| 29 | <div class="photo-img-group"> | 38 | <div class="photo-img-group"> |
| 30 | <img class="photo-img" :src="fillImgUrl('/fs/20250729/image/8638425535731875840.png')"> | 39 | <img class="photo-img" :src="fillImgUrl(item.path)"> |
| 31 | </div> | 40 | </div> |
| 32 | </el-col> | 41 | </el-col> |
| 33 | </el-row> | 42 | </el-row> |
| ... | @@ -38,6 +47,7 @@ | ... | @@ -38,6 +47,7 @@ |
| 38 | import { onMounted, onUnmounted, ref, watch } from 'vue' | 47 | import { onMounted, onUnmounted, ref, watch } from 'vue' |
| 39 | import { useRoute, useRouter } from 'vue-router' | 48 | import { useRoute, useRouter } from 'vue-router' |
| 40 | import {useStorage} from "@vueuse/core"; | 49 | import {useStorage} from "@vueuse/core"; |
| 50 | import {getMain,getImgList} from '@/apiPc/webSite' | ||
| 41 | 51 | ||
| 42 | const router = useRouter() | 52 | const router = useRouter() |
| 43 | const route = useRoute() | 53 | const route = useRoute() |
| ... | @@ -47,30 +57,65 @@ const languageLibrary = ref([{ | ... | @@ -47,30 +57,65 @@ const languageLibrary = ref([{ |
| 47 | a:'返回', | 57 | a:'返回', |
| 48 | b:'总买入费用', | 58 | b:'总买入费用', |
| 49 | c:'参赛席位', | 59 | c:'参赛席位', |
| 60 | g:'未开始', | ||
| 61 | h:'进行中', | ||
| 62 | i:'已结束', | ||
| 50 | },{ | 63 | },{ |
| 51 | a:'Return', | 64 | a:'Return', |
| 52 | b:'Total buy-in fee', | 65 | b:'Total buy-in fee', |
| 53 | c:'Entry seats', | 66 | c:'Entry seats', |
| 67 | g:'Not started', | ||
| 68 | h:'In progress', | ||
| 69 | i:'Completed', | ||
| 54 | },{ | 70 | },{ |
| 55 | a:'돌아가기', | 71 | a:'돌아가기', |
| 56 | b:'총 바이인 금액', | 72 | b:'총 바이인 금액', |
| 57 | c:'엔트리 수', | 73 | c:'엔트리 수', |
| 74 | g:'시작 전', | ||
| 75 | h:'진행 중', | ||
| 76 | i:'완료됨', | ||
| 58 | },{ | 77 | },{ |
| 59 | a:'戻る', | 78 | a:'戻る', |
| 60 | b:'バイイン総額', | 79 | b:'バイイン総額', |
| 61 | c:'エントリー数', | 80 | c:'エントリー数', |
| 81 | g:'未開始', | ||
| 82 | h:'進行中', | ||
| 83 | i:'完了', | ||
| 62 | },{ | 84 | },{ |
| 63 | a:'Quay lại', | 85 | a:'Quay lại', |
| 64 | b:'Tổng phí Buy-in', | 86 | b:'Tổng phí Buy-in', |
| 65 | c:'Số ghế tham gia', | 87 | c:'Số ghế tham gia', |
| 88 | g:'Chưa bắt đầu', | ||
| 89 | h:'Đang diễn ra', | ||
| 90 | i:'Đã hoàn thành', | ||
| 66 | }]) | 91 | }]) |
| 67 | 92 | ||
| 68 | const itemList = ref(['a','a','a','a','a','a','a','a','a']) | 93 | const tId = ref() |
| 94 | const projectMainInfo = ref({}) | ||
| 95 | const photoList = ref([]) | ||
| 69 | 96 | ||
| 70 | onMounted(() => { | 97 | onMounted(() => { |
| 71 | 98 | tId.value = route.params.id | |
| 99 | getMainInfo() | ||
| 100 | getPhotoList() | ||
| 72 | }) | 101 | }) |
| 73 | 102 | ||
| 103 | const getMainInfo = () => { | ||
| 104 | getMain(tId.value).then(res => { | ||
| 105 | if (res.code === 200) { | ||
| 106 | projectMainInfo.value = res.data | ||
| 107 | } | ||
| 108 | }) | ||
| 109 | } | ||
| 110 | |||
| 111 | const getPhotoList = () => { | ||
| 112 | getImgList({cptId:tId.value}).then(res => { | ||
| 113 | if (res.code === 200) { | ||
| 114 | photoList.value = res.rows | ||
| 115 | } | ||
| 116 | }) | ||
| 117 | } | ||
| 118 | |||
| 74 | const goback = function () { | 119 | const goback = function () { |
| 75 | router.go(-1) | 120 | router.go(-1) |
| 76 | } | 121 | } | ... | ... |
| ... | @@ -7,19 +7,27 @@ | ... | @@ -7,19 +7,27 @@ |
| 7 | </el-col> | 7 | </el-col> |
| 8 | </el-row> | 8 | </el-row> |
| 9 | <el-row> | 9 | <el-row> |
| 10 | <el-col class="photo-space" :lg="8" v-for="item in itemList"> | 10 | <el-col class="photo-space" :lg="8" v-for="item in matchList"> |
| 11 | <div class="photo-img-group"> | 11 | <div class="photo-img-group"> |
| 12 | <div class="photo-img-layer1"></div> | 12 | <div class="photo-img-layer1"></div> |
| 13 | <div class="photo-img-layer2"></div> | 13 | <div class="photo-img-layer2"></div> |
| 14 | <img class="photo-img" @click="goDetail(item)" :src="fillImgUrl('/fs/20250729/image/8638425535731875840.png')"> | 14 | <img class="photo-img" @click="goDetail(item.id)" :src="fillImgUrl(item.coverUrl)"> |
| 15 | <div class="photo-img-info"> | 15 | <div class="photo-img-info"> |
| 16 | <span style="display: block;font-size: 16px;margin:5px 0">LPT巡回赛</span> | 16 | <span style="display: block;font-size: 16px;margin:5px 0">{{item.cptName}}</span> |
| 17 | <span style="display: block;font-size: 14px;color: #C2A165">2025-01-01</span> | 17 | <span style="display: block;font-size: 14px;color: #C2A165">{{item.matchTimeStr}}</span> |
| 18 | </div> | 18 | </div> |
| 19 | </div> | 19 | </div> |
| 20 | </el-col> | 20 | </el-col> |
| 21 | </el-row> | 21 | </el-row> |
| 22 | <el-pagination class="photo-pagination" background layout="pager" :total="1000" /> | 22 | <el-pagination |
| 23 | class="photo-pagination" | ||
| 24 | background | ||
| 25 | layout="pager" | ||
| 26 | :total="total" | ||
| 27 | v-model:current-page="searchParam.pageNum" | ||
| 28 | v-model:page-size="searchParam.pageSize" | ||
| 29 | @current-change="handleCurrentChange" | ||
| 30 | /> | ||
| 23 | </div> | 31 | </div> |
| 24 | </div> | 32 | </div> |
| 25 | </template> | 33 | </template> |
| ... | @@ -29,6 +37,7 @@ import { onMounted, ref } from 'vue' | ... | @@ -29,6 +37,7 @@ import { onMounted, ref } from 'vue' |
| 29 | import { getNewsListById } from '@/apiPc/webSite' | 37 | import { getNewsListById } from '@/apiPc/webSite' |
| 30 | import { useRouter } from 'vue-router' | 38 | import { useRouter } from 'vue-router' |
| 31 | import {useStorage} from "@vueuse/core/index"; | 39 | import {useStorage} from "@vueuse/core/index"; |
| 40 | import * as match from "@/apiPc/match"; | ||
| 32 | const language = useStorage('language', 0) | 41 | const language = useStorage('language', 0) |
| 33 | const languageLibrary = [{ | 42 | const languageLibrary = [{ |
| 34 | a:'图片集锦' | 43 | a:'图片集锦' |
| ... | @@ -43,21 +52,30 @@ const languageLibrary = [{ | ... | @@ -43,21 +52,30 @@ const languageLibrary = [{ |
| 43 | }] | 52 | }] |
| 44 | const router = useRouter() | 53 | const router = useRouter() |
| 45 | const searchParam = ref({ | 54 | const searchParam = ref({ |
| 46 | type:'1', | 55 | pageNum:1, |
| 47 | text:'', | 56 | pageSize:9, |
| 48 | }) | 57 | }) |
| 49 | const itemList = ref(['a','a','a','a','a','a','a','a','a']) | 58 | const matchList = ref([]) |
| 59 | const total = ref(0) | ||
| 50 | 60 | ||
| 51 | onMounted(() => { | 61 | onMounted(() => { |
| 52 | 62 | getList() | |
| 53 | }) | 63 | }) |
| 54 | 64 | ||
| 55 | const getList = (obj) => { | 65 | const getList = () => { |
| 56 | getNewsListById(obj).then(res => { | 66 | match.getMaList(searchParam.value).then((res) => { |
| 57 | newsList.value = res.rows | 67 | if (res.code === 200) { |
| 68 | matchList.value = res.rows | ||
| 69 | total.value = res.total | ||
| 70 | } | ||
| 58 | }) | 71 | }) |
| 59 | } | 72 | } |
| 60 | 73 | ||
| 74 | const handleCurrentChange = (val) => { | ||
| 75 | searchParam.value.pageNum = val | ||
| 76 | getList() | ||
| 77 | } | ||
| 78 | |||
| 61 | const goDetail = (id) => { | 79 | const goDetail = (id) => { |
| 62 | router.push({ | 80 | router.push({ |
| 63 | path: `/photo/detail/${id}` | 81 | path: `/photo/detail/${id}` | ... | ... |
-
Please register or sign in to post a comment