2bcfb5f5 by zrj

9.3 lpt初版内容

1 parent b6c1d2ed
...@@ -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 }
......
...@@ -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}`
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!