0a1abe64 by zhangmeng

空格

1 parent 11925936
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
24 </el-col> 24 </el-col>
25 <el-col :span="24" style="border-top: 1px solid #d0d0d0"> 25 <el-col :span="24" style="border-top: 1px solid #d0d0d0">
26 <div class="text-center copyright pd10">版权所有@无锡和畅赛事运营有限公司 26 <div class="text-center copyright pd10">版权所有@无锡和畅赛事运营有限公司
27 &ensp;&ensp 27 &nbsp;&nbsp
28 <a href="https://beian.miit.gov.cn/" target="_blank">ICP备案号:苏ICP备2023054420号-2</a></div> 28 <a href="https://beian.miit.gov.cn/" target="_blank">ICP备案号:苏ICP备2023054420号-2</a></div>
29 </el-col> 29 </el-col>
30 </el-row> 30 </el-row>
...@@ -88,20 +88,20 @@ ...@@ -88,20 +88,20 @@
88 </div> 88 </div>
89 </div> 89 </div>
90 90
91 <a v-show="false" ref="aRef" :href="fillImgUrl(file[0]?.url)" target="_blank" /> 91 <a v-show="false" ref="aRef" :href="fillImgUrl(file[0]?.url)" target="_blank"/>
92 </div> 92 </div>
93 </template> 93 </template>
94 94
95 <script setup> 95 <script setup>
96 import { useStorage } from '@vueuse/core/index' 96 import {useStorage} from '@vueuse/core/index'
97 import { useRouter } from 'vue-router' 97 import {useRouter} from 'vue-router'
98 import { ElMessage } from 'element-plus' 98 import {ElMessage} from 'element-plus'
99 import { getCurrentInstance, ref } from '@vue/runtime-core' 99 import {getCurrentInstance, ref} from '@vue/runtime-core'
100 100
101 import { getMatchById, getppInfo, getZNList } from '@/apiPc/match' 101 import {getMatchById, getppInfo, getZNList} from '@/apiPc/match'
102 import { fillImgUrl } from '/@/utils/ruoyi' 102 import {fillImgUrl} from '/@/utils/ruoyi'
103 103
104 const { proxy } = getCurrentInstance() 104 const {proxy} = getCurrentInstance()
105 const router = useRouter() 105 const router = useRouter()
106 const language = useStorage('language', 0) 106 const language = useStorage('language', 0)
107 const goHelp = () => { 107 const goHelp = () => {
...@@ -115,7 +115,7 @@ const goHelp = () => { ...@@ -115,7 +115,7 @@ const goHelp = () => {
115 115
116 116
117 const file = ref({}) 117 const file = ref({})
118 const goHelpZH = async() => { 118 const goHelpZH = async () => {
119 // ElMessage.success('已下载文件') 119 // ElMessage.success('已下载文件')
120 // router.push({ 120 // router.push({
121 // name: 'guide', 121 // name: 'guide',
...@@ -123,7 +123,7 @@ const goHelpZH = async() => { ...@@ -123,7 +123,7 @@ const goHelpZH = async() => {
123 // index: 8 123 // index: 8
124 // } 124 // }
125 // }) 125 // })
126 const res = await getZNList({ sortId: 30000009, language: 1 }) 126 const res = await getZNList({sortId: 30000009, language: 1})
127 if (res.rows.length > 0) { 127 if (res.rows.length > 0) {
128 file.value = JSON.parse(res.rows[0].picUrl) 128 file.value = JSON.parse(res.rows[0].picUrl)
129 proxy.$refs['aRef'].click() 129 proxy.$refs['aRef'].click()
......
...@@ -4,40 +4,40 @@ ...@@ -4,40 +4,40 @@
4 <el-col :span="6" :xs="24" class="colHight"> 4 <el-col :span="6" :xs="24" class="colHight">
5 <div> 5 <div>
6 <div class="avatarBox"> 6 <div class="avatarBox">
7 <userAvatar :user="state.user" /> 7 <userAvatar :user="state.user"/>
8 <h3 class="">{{ state.user.userName }}</h3> 8 <h3 class="">{{ state.user.userName }}</h3>
9 </div> 9 </div>
10 10
11 <div> 11 <div>
12 <ul class="list-group list-group-striped"> 12 <ul class="list-group list-group-striped">
13 <li 13 <li
14 class="list-group-item"
15 :class="{ btn: index == 1 }" 14 :class="{ btn: index == 1 }"
15 class="list-group-item"
16 @click="index = 1" 16 @click="index = 1"
17 > 17 >
18 <i class="user01" />团体信息&ensp;&ensp;&ensp;&ensp; 18 <i class="user01"/>团体信息&nbsp;&nbsp;&nbsp;&nbsp;
19 </li> 19 </li>
20 <li 20 <li
21 class="list-group-item"
22 :class="{ btn: index == 2 }" 21 :class="{ btn: index == 2 }"
22 class="list-group-item"
23 @click="index = 2" 23 @click="index = 2"
24 > 24 >
25 <i class="user02" />会员认证&ensp;&ensp;&ensp;&ensp; 25 <i class="user02"/>会员认证&nbsp;&nbsp;&nbsp;&nbsp;
26 </li> 26 </li>
27 <li 27 <li
28 v-if="deptType==2||deptType==3" 28 v-if="deptType==2||deptType==3"
29 class="list-group-item"
30 :class="{ btn: index == 3 }" 29 :class="{ btn: index == 3 }"
30 class="list-group-item"
31 @click="index = 3" 31 @click="index = 3"
32 > 32 >
33 <i class="user03" />账户信息&ensp;&ensp;&ensp;&ensp; 33 <i class="user03"/>账户信息&nbsp;&nbsp;&nbsp;&nbsp;
34 </li> 34 </li>
35 <li 35 <li
36 class="list-group-item"
37 :class="{ btn: index == 4 }" 36 :class="{ btn: index == 4 }"
37 class="list-group-item"
38 @click="index = 4" 38 @click="index = 4"
39 > 39 >
40 <i class="user04" />账号与安全&ensp;&ensp; 40 <i class="user04"/>账号与安全&nbsp;&nbsp;
41 </li> 41 </li>
42 <!-- <li class="list-group-item"> 42 <!-- <li class="list-group-item">
43 <svg-icon icon-class="peoples" /> 43 <svg-icon icon-class="peoples" />
...@@ -60,21 +60,21 @@ ...@@ -60,21 +60,21 @@
60 </div> 60 </div>
61 </template> --> 61 </template> -->
62 <div v-if="index == 1"> 62 <div v-if="index == 1">
63 <Group /> 63 <Group/>
64 </div> 64 </div>
65 <div v-if="index == 2"> 65 <div v-if="index == 2">
66 <Member :id="id" /> 66 <Member :id="id"/>
67 </div> 67 </div>
68 <div v-if="index == 3"> 68 <div v-if="index == 3">
69 <Rates /> 69 <Rates/>
70 </div> 70 </div>
71 <div v-if="index == 4"> 71 <div v-if="index == 4">
72 <el-tabs v-model="activeTab"> 72 <el-tabs v-model="activeTab">
73 <el-tab-pane label="基本资料" name="userinfo"> 73 <el-tab-pane label="基本资料" name="userinfo">
74 <userInfo style="min-height: 454px" :user="state.user" /> 74 <userInfo :user="state.user" style="min-height: 454px"/>
75 </el-tab-pane> 75 </el-tab-pane>
76 <el-tab-pane label="修改密码" name="resetPwd"> 76 <el-tab-pane label="修改密码" name="resetPwd">
77 <resetPwd style="min-height: 454px" /> 77 <resetPwd style="min-height: 454px"/>
78 </el-tab-pane> 78 </el-tab-pane>
79 </el-tabs> 79 </el-tabs>
80 </div> 80 </div>
...@@ -83,8 +83,8 @@ ...@@ -83,8 +83,8 @@
83 </div> 83 </div>
84 </template> 84 </template>
85 85
86 <script setup name="Profile"> 86 <script name="Profile" setup>
87 import { ref, reactive, computed, onMounted } from 'vue' 87 import {ref, reactive, computed, onMounted} from 'vue'
88 import UserAvatar from './userAvatar' 88 import UserAvatar from './userAvatar'
89 import UserInfo from './userInfo' 89 import UserInfo from './userInfo'
90 import ResetPwd from './resetPwd' 90 import ResetPwd from './resetPwd'
...@@ -92,8 +92,9 @@ import Group from './group.vue' ...@@ -92,8 +92,9 @@ import Group from './group.vue'
92 import Member from './member.vue' 92 import Member from './member.vue'
93 import Rates from './rates.vue' 93 import Rates from './rates.vue'
94 import useUserStore from '@/store/modules/user' 94 import useUserStore from '@/store/modules/user'
95 import { useRoute } from 'vue-router' 95 import {useRoute} from 'vue-router'
96 import { getUserProfile } from '@/api/system/user' 96 import {getUserProfile} from '@/api/system/user'
97
97 const route = useRoute() 98 const route = useRoute()
98 const deptType = computed(() => useUserStore().deptType) 99 const deptType = computed(() => useUserStore().deptType)
99 const index = ref(1) 100 const index = ref(1)
...@@ -119,29 +120,83 @@ function getUser() { ...@@ -119,29 +120,83 @@ function getUser() {
119 </script> 120 </script>
120 121
121 <style lang="scss" scoped> 122 <style lang="scss" scoped>
122 .user01{background: url("@/assets/admin/user01@2x.png") no-repeat center;background-size: contain;} 123 .user01 {
123 .user02{background: url("@/assets/admin/user02@2x.png") no-repeat center;background-size: contain;} 124 background: url("@/assets/admin/user01@2x.png") no-repeat center;
124 .user03{background: url("@/assets/admin/user03@2x.png") no-repeat center;background-size: contain;} 125 background-size: contain;
125 .user04{background: url("@/assets/admin/user04@2x.png") no-repeat center;background-size: contain;} 126 }
127
128 .user02 {
129 background: url("@/assets/admin/user02@2x.png") no-repeat center;
130 background-size: contain;
131 }
132
133 .user03 {
134 background: url("@/assets/admin/user03@2x.png") no-repeat center;
135 background-size: contain;
136 }
137
138 .user04 {
139 background: url("@/assets/admin/user04@2x.png") no-repeat center;
140 background-size: contain;
141 }
142
126 .list-group-item { 143 .list-group-item {
127 text-align: center;height: 60px;line-height: 60px; 144 text-align: center;
128 background: #FFFFFF;cursor: pointer; 145 height: 60px;
129 font-size: 18px;display: flex;align-items: center;justify-content: center; 146 line-height: 60px;
130 color: #000000;padding: 0;border: none; 147 background: #FFFFFF;
131 border-radius: 5px;margin-bottom: 17px; 148 cursor: pointer;
132 i{display: inline-block;width: 34px;height: 34px;margin-right: 20px;} 149 font-size: 18px;
150 display: flex;
151 align-items: center;
152 justify-content: center;
153 color: #000000;
154 padding: 0;
155 border: none;
156 border-radius: 5px;
157 margin-bottom: 17px;
158
159 i {
160 display: inline-block;
161 width: 34px;
162 height: 34px;
163 margin-right: 20px;
164 }
165
133 &.btn { 166 &.btn {
134 color: #fff;background: #1561CB; 167 color: #fff;
135 .user01{background: url("@/assets/admin/user01_dwn@2x.png") no-repeat center;background-size: contain;} 168 background: #1561CB;
136 .user02{background: url("@/assets/admin/user02_dwn@2x.png") no-repeat center;background-size: contain;} 169
137 .user03{background: url("@/assets/admin/user03_dwn@2x.png") no-repeat center;background-size: contain;} 170 .user01 {
138 .user04{background: url("@/assets/admin/user04_dwn@2x.png") no-repeat center;background-size: contain;} 171 background: url("@/assets/admin/user01_dwn@2x.png") no-repeat center;
172 background-size: contain;
173 }
174
175 .user02 {
176 background: url("@/assets/admin/user02_dwn@2x.png") no-repeat center;
177 background-size: contain;
178 }
179
180 .user03 {
181 background: url("@/assets/admin/user03_dwn@2x.png") no-repeat center;
182 background-size: contain;
183 }
184
185 .user04 {
186 background: url("@/assets/admin/user04_dwn@2x.png") no-repeat center;
187 background-size: contain;
188 }
139 } 189 }
140 } 190 }
191
141 .colHight { 192 .colHight {
142 height: 800px; 193 height: 800px;
143 } 194 }
144 .avatarBox{background: url("@/assets/admin/user_bg@2x.png") no-repeat center;background-size: cover; 195
145 text-align: center;padding: 30px 0 10px; 196 .avatarBox {
197 background: url("@/assets/admin/user_bg@2x.png") no-repeat center;
198 background-size: cover;
199 text-align: center;
200 padding: 30px 0 10px;
146 } 201 }
147 </style> 202 </style>
......
...@@ -4,21 +4,30 @@ ...@@ -4,21 +4,30 @@
4 <el-row> 4 <el-row>
5 <el-col v-for="(d,i) in listData" :key="i" :lg="24" :sm="24"> 5 <el-col v-for="(d,i) in listData" :key="i" :lg="24" :sm="24">
6 <div class="person-item"> 6 <div class="person-item">
7 <img v-if="d.photo" class="photo" :src="fillImgUrl(d.photo)"> 7 <img v-if="d.photo" :src="fillImgUrl(d.photo)" class="photo">
8 <img v-else class="photo" style="object-fit: contain;background: #fff;" src="@/assets/v1/default.png"> 8 <img v-else class="photo" src="@/assets/v1/default.png" style="object-fit: contain;background: #fff;">
9 <div class="info"> 9 <div class="info">
10 <div class="name">{{ d.name }} 10 <div class="name">{{ d.name }}
11 <el-image v-if="d.sex=='0'||d.sex=='1'" style="width: 20px;height: 20px;margin-left: 10px" :src="d.sex=='0'?male:female" /> 11 <el-image
12 v-if="d.sex=='0'||d.sex=='1'" :src="d.sex=='0'?male:female"
13 style="width: 20px;height: 20px;margin-left: 10px"
14 />
12 </div> 15 </div>
13 <div class="flex"> 16 <div class="flex">
14 <div> 17 <div>
15 <el-form-item label="会员编号:">{{ d.perCode }}</el-form-item> 18 <el-form-item label="会员编号:">{{ d.perCode }}</el-form-item>
16 <el-form-item label="出生日期:">{{ parseTime(d.birth,'{y}-{m}-{d}') }}</el-form-item> 19 <el-form-item label="出生日期:">{{ parseTime(d.birth, '{y}-{m}-{d}') }}</el-form-item>
17 </div> 20 </div>
18 <div> 21 <div>
19 <el-form-item label="&ensp;&ensp;注册时间:">{{ parseTime(d.createTime,'{y}-{m}-{d}') }}</el-form-item> 22 <el-form-item label="&nbsp;&nbsp;注册时间:">{{
20 <el-form-item label="有效期截止:">{{ parseTime(d.validityDate,'{y}-{m}-{d}')||'--' }}</el-form-item> 23 parseTime(d.createTime, '{y}-{m}-{d}')
21 24 }}
25 </el-form-item>
26 <el-form-item label="有效期截止:">{{
27 parseTime(d.validityDate, '{y}-{m}-{d}') || '--'
28 }}
29 </el-form-item>
30
22 </div> 31 </div>
23 <div style="width: 170px"> 32 <div style="width: 170px">
24 <!-- <div v-if="d.canDownCert=='1'" class="vipDownLoad" @click="vipDownLoad(d.perId)">--> 33 <!-- <div v-if="d.canDownCert=='1'" class="vipDownLoad" @click="vipDownLoad(d.perId)">-->
...@@ -26,7 +35,7 @@ ...@@ -26,7 +35,7 @@
26 <!-- </div>--> 35 <!-- </div>-->
27 </div> 36 </div>
28 </div> 37 </div>
29 38
30 </div> 39 </div>
31 </div> 40 </div>
32 </el-col> 41 </el-col>
...@@ -36,27 +45,31 @@ ...@@ -36,27 +45,31 @@
36 <el-row> 45 <el-row>
37 <el-col v-for="(d,i) in listData" :key="i" :lg="24" :sm="24"> 46 <el-col v-for="(d,i) in listData" :key="i" :lg="24" :sm="24">
38 <div class="person-item"> 47 <div class="person-item">
39 <img v-if="d.photo" class="photo" :src="fillImgUrl(d.photo)"> 48 <img v-if="d.photo" :src="fillImgUrl(d.photo)" class="photo">
40 <img v-else src="@/assets/v1/default.png"> 49 <img v-else src="@/assets/v1/default.png">
41 <div class="info"> 50 <div class="info">
42 <div class="name">{{ d.name }} 51 <div class="name">{{ d.name }}
43 <el-image v-if="d.sex=='0'||d.sex=='1'" style="width: 20px;height: 20px;margin-left: 10px" :src="d.sex=='0'?male:female" /> 52 <el-image
53 v-if="d.sex=='0'||d.sex=='1'" :src="d.sex=='0'?male:female"
54 style="width: 20px;height: 20px;margin-left: 10px"
55 />
44 </div> 56 </div>
45 57
46 <div> 58 <div>
47 <el-form-item label="编号:">{{ d.perCode }}</el-form-item> 59 <el-form-item label="编号:">{{ d.perCode }}</el-form-item>
48 <el-form-item label="出生日期:">{{ parseTime(d.birth,'{y}-{m}-{d}') }}</el-form-item> 60 <el-form-item label="出生日期:">{{ parseTime(d.birth, '{y}-{m}-{d}') }}</el-form-item>
49 <el-form-item label="注册时间:">{{ parseTime(d.createTime,'{y}-{m}-{d}') }}</el-form-item> 61 <el-form-item label="注册时间:">{{ parseTime(d.createTime, '{y}-{m}-{d}') }}</el-form-item>
50 <el-form-item label="有效期截止:">{{ parseTime(d.validityDate,'{y}-{m}-{d}') }}</el-form-item> 62 <el-form-item label="有效期截止:">{{ parseTime(d.validityDate, '{y}-{m}-{d}') }}</el-form-item>
51 </div> 63 </div>
52 <div v-if="d.canDownCert=='1'" class="vipDownLoad" @click="vipDownLoad(d.perId)"> 64 <div v-if="d.canDownCert=='1'" class="vipDownLoad" @click="vipDownLoad(d.perId)">
53 <i />会员证 65 <i />会员证
54 </div> 66 </div>
55 </div> 67 </div>
56 68
57 </div> 69 </div>
58 </el-col> 70 </el-col>
59 </el-row></div> 71 </el-row>
72 </div>
60 <div v-if="!loading" class="text-center pd20"> 73 <div v-if="!loading" class="text-center pd20">
61 <el-divider> 74 <el-divider>
62 <span v-if="showMore" @click="handleQuery">加载更多</span> 75 <span v-if="showMore" @click="handleQuery">加载更多</span>
...@@ -80,22 +93,24 @@ const props = defineProps({ ...@@ -80,22 +93,24 @@ const props = defineProps({
80 query: { 93 query: {
81 required: true, 94 required: true,
82 type: Object, 95 type: Object,
83 default: () => {} 96 default: () => {
97 }
84 } 98 }
85 }) 99 })
86 100
87 const listData = ref([]) 101 const listData = ref([])
88 const showMore = ref(false) 102 const showMore = ref(false)
89 const loading = ref(false) 103 const loading = ref(false)
104
90 function handleQuery() { 105 function handleQuery() {
91 loading.value = true 106 loading.value = true
92 queryParams.pageNum++ 107 queryParams.pageNum++
93 108
94 authentic.query(queryParams).then((res) => { 109 authentic.query(queryParams).then((res) => {
95 _.each(res.data.personalList.rows, (r) => { 110 _.each(res.data.personalList.rows, (r) => {
96 listData.value.push(r) 111 listData.value.push(r)
97 }) 112 })
98 113
99 showMore.value = listData.value.length < res.data.personalList.total 114 showMore.value = listData.value.length < res.data.personalList.total
100 loading.value = false 115 loading.value = false
101 }) 116 })
...@@ -106,6 +121,7 @@ function vipDownLoad(perId) { ...@@ -106,6 +121,7 @@ function vipDownLoad(perId) {
106 } 121 }
107 122
108 let queryParams = {} 123 let queryParams = {}
124
109 function init() { 125 function init() {
110 queryParams = { 126 queryParams = {
111 pageNum: 0, 127 pageNum: 0,
...@@ -114,39 +130,79 @@ function init() { ...@@ -114,39 +130,79 @@ function init() {
114 name: props.query.name 130 name: props.query.name
115 } 131 }
116 listData.value = [] 132 listData.value = []
117 133
118 handleQuery() 134 handleQuery()
119 } 135 }
136
120 defineExpose({ 137 defineExpose({
121 init 138 init
122 }) 139 })
123 </script> 140 </script>
124 141
125 <style scoped lang="scss"> 142 <style lang="scss" scoped>
126 .flex{display: flex;justify-content: space-between;} 143 .flex {
127 .person-item{position:relative; 144 display: flex;
128 display: flex;margin: 30px 0;background: #F5F7F9; 145 justify-content: space-between;
129 border-radius: 2px;padding: 10px 20px; 146 }
130 .photo{width: 100px; height: 130px} 147
131 .info{margin-left: 20px;width: 90%; 148 .person-item {
132 .name{font-size: 24px;display: flex;align-items: center; 149 position: relative;
133 margin: 10px 0;} 150 display: flex;
134 .el-form-item--default{margin-bottom: 0;} 151 margin: 30px 0;
152 background: #F5F7F9;
153 border-radius: 2px;
154 padding: 10px 20px;
155
156 .photo {
157 width: 100px;
158 height: 130px
159 }
160
161 .info {
162 margin-left: 20px;
163 width: 90%;
164
165 .name {
166 font-size: 24px;
167 display: flex;
168 align-items: center;
169 margin: 10px 0;
170 }
171
172 .el-form-item--default {
173 margin-bottom: 0;
135 } 174 }
136 .el-form-item__content{
137 font-size: 18px;
138 color: #95A1A6;}
139 } 175 }
140 @media (max-width: 500px) { 176
141 .forWei{background: #F7F8FA;} 177 .el-form-item__content {
142 .person-item{margin: 15px 0;background: #fff; 178 font-size: 18px;
143 .photo{width: 120px;height: 140px;} 179 color: #95A1A6;
144 .info{margin-left: 15px; 180 }
145 .name{font-size: 18px} 181 }
146 } 182
183 @media (max-width: 500px) {
184 .forWei {
185 background: #F7F8FA;
186 }
187 .person-item {
188 margin: 15px 0;
189 background: #fff;
190
191 .photo {
192 width: 120px;
193 height: 140px;
147 } 194 }
148 :deep(.el-form-item--default .el-form-item__label){ 195
149 padding: 0; 196 .info {
197 margin-left: 15px;
198
199 .name {
200 font-size: 18px
201 }
150 } 202 }
151 } 203 }
204 :deep(.el-form-item--default .el-form-item__label) {
205 padding: 0;
206 }
207 }
152 </style> 208 </style>
......
1 <template> 1 <template>
2 <div class="pv20"> 2 <div class="pv20">
3 <div class="matchItem" v-for="n in list" :key="n.id" @click="goDetail(n.id)"> 3 <div v-for="n in list" :key="n.id" class="matchItem" @click="goDetail(n.id)">
4 <el-row :gutter="15"> 4 <el-row :gutter="15">
5 <el-col :lg="7" :md="24" :xl="6"> 5 <el-col :lg="7" :md="24" :xl="6">
6 <div class="popo"> 6 <div class="popo">
7 <el-tag v-if="n.signType==0">{{ language==0?'个人':'Individual' }}</el-tag> 7 <el-tag v-if="n.signType==0">{{ language == 0 ? '个人' : 'Individual' }}</el-tag>
8 <el-tag v-if="n.signType==1">{{ language==0?'团体':'Team' }}</el-tag> 8 <el-tag v-if="n.signType==1">{{ language == 0 ? '团体' : 'Team' }}</el-tag>
9 <el-tag v-if="n.signType==2">{{ language==0?'个人/团体':'Individual/Team' }}</el-tag> 9 <el-tag v-if="n.signType==2">{{ language == 0 ? '个人/团体' : 'Individual/Team' }}</el-tag>
10 </div> 10 </div>
11 <img class="mauto mw100 coverLimitHeight" :src="fillImgUrl(n.coverUrl)"> 11 <img :src="fillImgUrl(n.coverUrl)" class="mauto mw100 coverLimitHeight">
12 </el-col> 12 </el-col>
13 <el-col :lg="9" :md="12" :xl="12"> 13 <el-col :lg="9" :md="12" :xl="12">
14 <div class="info"> 14 <div class="info">
15 <h3 class="esp">{{ n.name }}</h3> 15 <h3 class="esp">{{ n.name }}</h3>
16 <p class="ppl"><label>{{language==0?'赛事级别':'EVENT LEVEL'}}</label>{{n.level}}</p> 16 <p class="ppl"><label>{{ language == 0 ? '赛事级别' : 'EVENT LEVEL' }}</label>{{ n.level }}</p>
17 <p class="ppl"><label>{{ language==0?'赛事时间':'COMPETITION DATE' }}</label>{{n.beginTime?.slice(0,10)}} ~ {{ n.endTime?.slice(0,10) }}</p> 17 <p class="ppl"><label>{{
18 <p class="ppl esp"><label>{{ language==0?'地&ensp;&ensp;&ensp;&ensp;点':'LOCATION' }}</label>{{ n.address }}</p> 18 language == 0 ? '赛事时间' : 'COMPETITION DATE'
19 <!-- <p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}</label>{{ n.signEndTime?.slice(0,10) }}</p>--> 19 }}</label>{{ n.beginTime?.slice(0, 10) }} ~ {{ n.endTime?.slice(0, 10) }}</p>
20 <p class="ppl" v-if="n.contactPerson"><label>{{ language==0?'联&ensp;系&ensp;人':'CONTACT PERSON' }}</label>{{ n.contactPerson }}</p> 20 <p class="ppl esp"><label>{{
21 <p class="ppl"><label>{{ language==0?'联系电话':'TEL' }}</label>086-{{ n.contactTelno }}</p> 21 language == 0 ? '地&nbsp;&nbsp;&nbsp;&nbsp;点' : 'LOCATION'
22 <p class="ppl" v-if="n.contactEmail"><label>{{ language==0?'邮&ensp;&ensp;&ensp;&ensp;箱':'EMAIL' }}</label>{{ n.contactEmail }}</p> 22 }}</label>{{ n.address }}</p>
23 23 <!-- <p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}</label>{{ n.signEndTime?.slice(0,10) }}</p>-->
24 <p v-if="n.contactPerson" class="ppl"><label>{{
25 language == 0 ? '联&nbsp;系&nbsp;人' : 'CONTACT PERSON'
26 }}</label>{{ n.contactPerson }}</p>
27 <p class="ppl"><label>{{ language == 0 ? '联系电话' : 'TEL' }}</label>086-{{ n.contactTelno }}</p>
28 <p v-if="n.contactEmail" class="ppl"><label>{{
29 language == 0 ? '邮&nbsp;&nbsp;&nbsp;&nbsp;箱' : 'EMAIL'
30 }}</label>{{ n.contactEmail }}</p>
31
24 </div> 32 </div>
25 </el-col> 33 </el-col>
26 <el-col :lg="8" :md="12" :xl="6"> 34 <el-col :lg="8" :md="12" :xl="6">
...@@ -31,41 +39,44 @@ ...@@ -31,41 +39,44 @@
31 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> 39 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
32 <template #default="timeData"> 40 <template #default="timeData">
33 <span class="block">{{ timeData.days }}</span> 41 <span class="block">{{ timeData.days }}</span>
34 <span class="colon">{{ language==0?'天':'Days' }}</span> 42 <span class="colon">{{ language == 0 ? '天' : 'Days' }}</span>
35 <span class="block">{{ timeData.hours }}</span> 43 <span class="block">{{ timeData.hours }}</span>
36 <span class="colon">{{ language==0?'时':'Hrs' }}</span> 44 <span class="colon">{{ language == 0 ? '时' : 'Hrs' }}</span>
37 <span class="block">{{ timeData.minutes }}</span> 45 <span class="block">{{ timeData.minutes }}</span>
38 <span class="colon">{{ language==0?'分':'Min' }}</span> 46 <span class="colon">{{ language == 0 ? '分' : 'Min' }}</span>
39 <span class="block">{{ timeData.seconds }}</span> 47 <span class="block">{{ timeData.seconds }}</span>
40 <span class="colon">{{ language==0?'秒':'Sec' }}</span> 48 <span class="colon">{{ language == 0 ? '秒' : 'Sec' }}</span>
41 </template> 49 </template>
42 </van-count-down> 50 </van-count-down>
43 51
44 <div class="text-center mt30"> 52 <div class="text-center mt30">
45 <a class="btn-lineG mb20 mauto" style="display: block;" v-if="n.time>0"> 53 <a v-if="n.time>0" class="btn-lineG mb20 mauto" style="display: block;">
46 <span v-if="n.time>0 && n.startSign<=0"> {{ language==0?'我要报名':'REGISTER' }}</span> 54 <span v-if="n.time>0 && n.startSign<=0"> {{ language == 0 ? '我要报名' : 'REGISTER' }}</span>
47 55
48 <span v-if="n.startSign>0"> {{ language==0?'报名未开始':'Not started yet' }}</span> 56 <span v-if="n.startSign>0"> {{ language == 0 ? '报名未开始' : 'Not started yet' }}</span>
49 </a> 57 </a>
50 <div v-else style="opacity: 0.5;" class="btn-lineG mb20 mauto text-center"> 58 <div v-else class="btn-lineG mb20 mauto text-center" style="opacity: 0.5;">
51 {{ language == 0 ? '报名已结束' : 'Registration has ended' }} 59 {{ language == 0 ? '报名已结束' : 'Registration has ended' }}
52 </div> 60 </div>
53 <p class="text-gray uppercase">{{ language==0?'报名截止':'Registration Deadline' }}:{{ n.signEndTime?.slice(0,10) }}</p> 61 <p class="text-gray uppercase">{{
62 language == 0 ? '报名截止' : 'Registration Deadline'
63 }}:{{ n.signEndTime?.slice(0, 10) }}</p>
54 </div> 64 </div>
55 </el-col> 65 </el-col>
56 </el-row> 66 </el-row>
57 </div> 67 </div>
58 </div> 68 </div>
59 69
60 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0" description=" "/> 70 <el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228" description=" " />
61 </template> 71 </template>
62 72
63 <script setup> 73 <script setup>
64 import {ref} from "vue"; 74 import { ref } from 'vue'
65 import {onMounted} from "@vue/runtime-core"; 75 import { onMounted } from '@vue/runtime-core'
66 import {dayjs} from "element-plus" 76 import { dayjs } from 'element-plus'
67 import {useStorage} from "@vueuse/core/index"; 77 import { useStorage } from '@vueuse/core/index'
68 const language= useStorage('language',0) 78
79 const language = useStorage('language', 0)
69 80
70 const router = useRouter() 81 const router = useRouter()
71 const time = ref(0) 82 const time = ref(0)
...@@ -75,13 +86,14 @@ const props = defineProps({ ...@@ -75,13 +86,14 @@ const props = defineProps({
75 required: true 86 required: true
76 } 87 }
77 }) 88 })
78 onMounted(()=>{ 89 onMounted(() => {
79 for(let n of props.list){ 90 for (const n of props.list) {
80 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 91 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
81 n.time = dayjs(n.signEndTime).diff(today, 'millisecond') 92 n.time = dayjs(n.signEndTime).diff(today, 'millisecond')
82 n.startSign = dayjs(n.signBeginTime).diff(today, 'millisecond') 93 n.startSign = dayjs(n.signBeginTime).diff(today, 'millisecond')
83 } 94 }
84 }) 95 })
96
85 function goDetail(id) { 97 function goDetail(id) {
86 const routeData = router.resolve({ 98 const routeData = router.resolve({
87 path: `/match/list/${id}` 99 path: `/match/list/${id}`
...@@ -90,50 +102,69 @@ function goDetail(id) { ...@@ -90,50 +102,69 @@ function goDetail(id) {
90 } 102 }
91 </script> 103 </script>
92 104
93 <style scoped lang="scss"> 105 <style lang="scss" scoped>
94 .pv20{padding: 0 20px;} 106 .pv20 {
95 .mt60{margin-top: 60px} 107 padding: 0 20px;
108 }
109
110 .mt60 {
111 margin-top: 60px
112 }
113
96 .matchItem { 114 .matchItem {
97 cursor: pointer;padding: 0 0 20px; 115 cursor: pointer;
98 background: #FFFFFF;border-bottom: 1px solid #e5e5e5; 116 padding: 0 0 20px;
117 background: #FFFFFF;
118 border-bottom: 1px solid #e5e5e5;
99 position: relative; 119 position: relative;
100 .el-col{padding-top: 20px} 120
101 .countDownTitle{margin: 0} 121 .el-col {
122 padding-top: 20px
123 }
124
125 .countDownTitle {
126 margin: 0
127 }
128
102 &:last-child { 129 &:last-child {
103 border-bottom: none; 130 border-bottom: none;
104 } 131 }
132
105 .el-avatar { 133 .el-avatar {
106 position: absolute; 134 position: absolute;
107 left: 20px; 135 left: 20px;
108 top: 30px; 136 top: 30px;
137
109 img { 138 img {
110 background: #fff; 139 background: #fff;
111 } 140 }
112 } 141 }
113 142
114 .info { 143 .info {
115 p { 144 p {
116 font-size: 14px; 145 font-size: 14px;
117 } 146 }
118 } 147 }
119 148
120 .typeTag { 149 .typeTag {
121 position: absolute; 150 position: absolute;
122 right: 0; 151 right: 0;
123 top: 0; 152 top: 0;
124 } 153 }
125 154
126 h3 { 155 h3 {
127 font-weight: 500;margin: 0 0 10px; 156 font-weight: 500;
157 margin: 0 0 10px;
128 font-size: 18px; 158 font-size: 18px;
129 color: #000000; 159 color: #000000;
130 text-overflow: ellipsis; 160 text-overflow: ellipsis;
131 } 161 }
132 162
133 &:hover h3 { 163 &:hover h3 {
134 color: var(--el-color-primary); 164 color: var(--el-color-primary);
135 } 165 }
136 } 166 }
167
137 .countDownTitle { 168 .countDownTitle {
138 text-align: center; 169 text-align: center;
139 color: #525F6B; 170 color: #525F6B;
...@@ -161,10 +192,19 @@ function goDetail(id) { ...@@ -161,10 +192,19 @@ function goDetail(id) {
161 width: 100%; 192 width: 100%;
162 left: 0; 193 left: 0;
163 } 194 }
164 .info .ppl{margin: 5px 0;} 195
165 .ppl{color: #29343C; 196 .info .ppl {
166 label{color: #929AA0;} 197 margin: 5px 0;
198 }
199
200 .ppl {
201 color: #29343C;
202
203 label {
204 color: #929AA0;
205 }
167 } 206 }
207
168 .van-count-down { 208 .van-count-down {
169 text-align: center; 209 text-align: center;
170 margin: 20px 0; 210 margin: 20px 0;
...@@ -178,7 +218,8 @@ function goDetail(id) { ...@@ -178,7 +218,8 @@ function goDetail(id) {
178 } 218 }
179 219
180 .block { 220 .block {
181 display: inline-block; opacity: 0.7; 221 display: inline-block;
222 opacity: 0.7;
182 width: 52px; 223 width: 52px;
183 color: #fff; 224 color: #fff;
184 font-size: 26px; 225 font-size: 26px;
...@@ -189,7 +230,11 @@ function goDetail(id) { ...@@ -189,7 +230,11 @@ function goDetail(id) {
189 line-height: 50px; 230 line-height: 50px;
190 text-align: center; 231 text-align: center;
191 } 232 }
233
192 @media (max-width: 1450px) { 234 @media (max-width: 1450px) {
193 .block{width: 44px;font-size: 20px;} 235 .block {
236 width: 44px;
237 font-size: 20px;
238 }
194 } 239 }
195 </style> 240 </style>
......
1 <template> 1 <template>
2 <div v-loading="loading" class="app-container"> 2 <div v-loading="loading" class="app-container">
3 <div class="mt30" /> 3 <div class="mt30"/>
4 <div v-if="error"> 4 <div v-if="error">
5 <el-result 5 <el-result
6 :title="language==0?'未找到赛事':'No Data'" 6 :title="language==0?'未找到赛事':'No Data'"
7 icon="error" 7 icon="error"
8 > 8 >
9 <template #extra /> 9 <template #extra/>
10 </el-result> 10 </el-result>
11 </div> 11 </div>
12 <div v-else class="box mb20"> 12 <div v-else class="box mb20">
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
33 {{ matchData.endTime?.slice(0, 10) }}</p> 33 {{ matchData.endTime?.slice(0, 10) }}</p>
34 <p v-if="matchData.address" class="ppl"> 34 <p v-if="matchData.address" class="ppl">
35 <label class="bm3"> 35 <label class="bm3">
36 {{ language == 0 ? '地&ensp;&ensp;&ensp;&ensp;点' : 'LOCATION' }} 36 {{ language == 0 ? '地&nbsp;&nbsp;&nbsp;&nbsp;点' : 'LOCATION' }}
37 </label> 37 </label>
38 {{ matchData.address }}</p> 38 {{ matchData.address }}</p>
39 <!-- <p class="ppl" v-if="matchData.signEndTime"><label class="bm4">Registration Deadline:</label>{{ matchData.signEndTime?.slice(0, 10) }}</p>--> 39 <!-- <p class="ppl" v-if="matchData.signEndTime"><label class="bm4">Registration Deadline:</label>{{ matchData.signEndTime?.slice(0, 10) }}</p>-->
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
49 fill="#d3d8d9" p-id="37236" 49 fill="#d3d8d9" p-id="37236"
50 /> 50 />
51 </svg> 51 </svg>
52 {{ language == 0 ? '联&ensp;系&ensp;人' : 'CONTACT PERSON' }}</label>{{ matchData.contactPerson }} 52 {{ language == 0 ? '联&nbsp;系&nbsp;人' : 'CONTACT PERSON' }}</label>{{ matchData.contactPerson }}
53 </p> 53 </p>
54 54
55 <p class="ppl"> 55 <p class="ppl">
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
78 fill="#d3d8d9" p-id="40178" 78 fill="#d3d8d9" p-id="40178"
79 /> 79 />
80 </svg> 80 </svg>
81 {{ language == 0 ? '邮&ensp;&ensp;&ensp;&ensp;箱' : 'EMAIL' }} 81 {{ language == 0 ? '邮&nbsp;&nbsp;&nbsp;&nbsp;箱' : 'EMAIL' }}
82 </label> 82 </label>
83 {{ matchData.contactEmail }} 83 {{ matchData.contactEmail }}
84 </p> 84 </p>
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
94 fill="#d3d8d9" p-id="6579" 94 fill="#d3d8d9" p-id="6579"
95 /> 95 />
96 </svg> 96 </svg>
97 {{ language == 0 ? '分&ensp;站&ensp;赛' : 'NO. OF TOURNAMENTS' }}</label> 97 {{ language == 0 ? '分&nbsp;站&nbsp;赛' : 'NO. OF TOURNAMENTS' }}</label>
98 {{ matchData.cpts.length }} 98 {{ matchData.cpts.length }}
99 </p> 99 </p>
100 </div> 100 </div>
...@@ -105,7 +105,7 @@ ...@@ -105,7 +105,7 @@
105 {{ matchData.beginTime?.slice(0, 10) }} ~ {{ matchData.endTime?.slice(0, 10) }} 105 {{ matchData.beginTime?.slice(0, 10) }} ~ {{ matchData.endTime?.slice(0, 10) }}
106 </p> 106 </p>
107 <p class="ppl esp"> 107 <p class="ppl esp">
108 <label>{{ language == 0 ? '地&ensp;&ensp;&ensp;&ensp;点' : 'LOCATION' }}</label> 108 <label>{{ language == 0 ? '地&nbsp;&nbsp;&nbsp;&nbsp;点' : 'LOCATION' }}</label>
109 {{ matchData.address }} 109 {{ matchData.address }}
110 </p> 110 </p>
111 <p class="ppl"><label>{{ language == 0 ? '赛事级别' : 'EVENT LEVEL' }}</label>{{ matchData.level }}</p> 111 <p class="ppl"><label>{{ language == 0 ? '赛事级别' : 'EVENT LEVEL' }}</label>{{ matchData.level }}</p>
...@@ -114,17 +114,17 @@ ...@@ -114,17 +114,17 @@
114 <!-- {{ matchData.signEndTime?.slice(0, 10) }}--> 114 <!-- {{ matchData.signEndTime?.slice(0, 10) }}-->
115 <!-- </p>--> 115 <!-- </p>-->
116 <p v-if="matchData.contactPerson" class="ppl"> 116 <p v-if="matchData.contactPerson" class="ppl">
117 <label>{{ language == 0 ? '联&ensp;系&ensp;人' : 'CONTACT PERSON' }}</label> 117 <label>{{ language == 0 ? '联&nbsp;系&nbsp;人' : 'CONTACT PERSON' }}</label>
118 {{ matchData.contactPerson }} 118 {{ matchData.contactPerson }}
119 </p> 119 </p>
120 <p class="ppl"><label>{{ language == 0 ? '联系电话' : 'TEL' }}</label> 120 <p class="ppl"><label>{{ language == 0 ? '联系电话' : 'TEL' }}</label>
121 086-{{ matchData.contactTelno }} 121 086-{{ matchData.contactTelno }}
122 </p> 122 </p>
123 <p v-if="matchData.contactEmail" class="ppl"> 123 <p v-if="matchData.contactEmail" class="ppl">
124 <label>{{ language == 0 ? '邮&ensp;&ensp;&ensp;&ensp;箱' : 'EMAIL' }}</label> 124 <label>{{ language == 0 ? '邮&nbsp;&nbsp;&nbsp;&nbsp;箱' : 'EMAIL' }}</label>
125 {{ matchData.contactEmail }}</p> 125 {{ matchData.contactEmail }}</p>
126 </div> 126 </div>
127 <div style="height: 30px" /> 127 <div style="height: 30px"/>
128 <div class="ppl_pb"> 128 <div class="ppl_pb">
129 <el-link 129 <el-link
130 v-if="matchData.signKnowUrl&&JSON.parse(matchData.signKnowUrl)?.length>0" 130 v-if="matchData.signKnowUrl&&JSON.parse(matchData.signKnowUrl)?.length>0"
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
133 target="_blank" type="primary" 133 target="_blank" type="primary"
134 > 134 >
135 <el-icon :size="20"> 135 <el-icon :size="20">
136 <Download /> 136 <Download/>
137 </el-icon> 137 </el-icon>
138 {{ language == 0 ? '报名须知' : 'Notes' }} 138 {{ language == 0 ? '报名须知' : 'Notes' }}
139 </el-link> 139 </el-link>
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
145 target="_blank" type="primary" 145 target="_blank" type="primary"
146 > 146 >
147 <el-icon :size="20"> 147 <el-icon :size="20">
148 <Download /> 148 <Download/>
149 </el-icon> 149 </el-icon>
150 {{ language == 0 ? '免责声明' : 'Disclaimers' }} 150 {{ language == 0 ? '免责声明' : 'Disclaimers' }}
151 </el-link> 151 </el-link>
...@@ -156,7 +156,7 @@ ...@@ -156,7 +156,7 @@
156 type="primary" 156 type="primary"
157 > 157 >
158 <el-icon :size="20"> 158 <el-icon :size="20">
159 <Download /> 159 <Download/>
160 </el-icon> 160 </el-icon>
161 {{ language == 0 ? '赛事规程' : 'Competition Regulations' }} 161 {{ language == 0 ? '赛事规程' : 'Competition Regulations' }}
162 </el-link> 162 </el-link>
...@@ -201,8 +201,8 @@ ...@@ -201,8 +201,8 @@
201 </div> 201 </div>
202 </div> 202 </div>
203 <p class="text-gray text-center uppercase">{{ 203 <p class="text-gray text-center uppercase">{{
204 language == 0 ? '报名截止' : 'Registration Deadline' 204 language == 0 ? '报名截止' : 'Registration Deadline'
205 }}:{{ matchData.signEndTime?.slice(0, 10) }}</p> 205 }}:{{ matchData.signEndTime?.slice(0, 10) }}</p>
206 206
207 </el-col> 207 </el-col>
208 </el-row> 208 </el-row>
...@@ -210,7 +210,7 @@ ...@@ -210,7 +210,7 @@
210 </el-card> 210 </el-card>
211 211
212 <!-- 只联赛有--> 212 <!-- 只联赛有-->
213 <quick-row v-if="matchData.leagueId==0" :match-id="matchId" /> 213 <quick-row v-if="matchData.leagueId==0" :match-id="matchId"/>
214 214
215 <el-row v-if="matchData.type=='0'" :gutter="20"> 215 <el-row v-if="matchData.type=='0'" :gutter="20">
216 <el-col :lg="18"> 216 <el-col :lg="18">
...@@ -222,11 +222,11 @@ ...@@ -222,11 +222,11 @@
222 </li> 222 </li>
223 </ul> 223 </ul>
224 </div> 224 </div>
225 <matchInfo v-if="menu[0].active==1" :form="matchData" /> 225 <matchInfo v-if="menu[0].active==1" :form="matchData"/>
226 <div v-if="menu[1].active==1"> 226 <div v-if="menu[1].active==1">
227 <match-info-project-list :is-national="isNational" :match-id="matchData.id" /> 227 <match-info-project-list :is-national="isNational" :match-id="matchData.id"/>
228 </div> 228 </div>
229 <match-schedule-list v-if="menu[2].active==1" :match-data="matchData" /> 229 <match-schedule-list v-if="menu[2].active==1" :match-data="matchData"/>
230 <div v-if="menu[3].active==1"> 230 <div v-if="menu[3].active==1">
231 <div v-if="matchData.showPersonFlag=='1'"> 231 <div v-if="matchData.showPersonFlag=='1'">
232 <!-- <el-row :gutter="20" v-if="matchData.signType == '0'">--> 232 <!-- <el-row :gutter="20" v-if="matchData.signType == '0'">-->
...@@ -299,24 +299,24 @@ ...@@ -299,24 +299,24 @@
299 </el-row> 299 </el-row>
300 </div> 300 </div>
301 <div v-else> 301 <div v-else>
302 <el-empty :image="`/img/order_no.png`" :image-size="228" description="" /> 302 <el-empty :image="`/img/order_no.png`" :image-size="228" description=""/>
303 </div> 303 </div>
304 304
305 </div> 305 </div>
306 <div v-if="menu[4].active==1"> 306 <div v-if="menu[4].active==1">
307 <!--成绩--> 307 <!--成绩-->
308 <el-empty :image="`/img/order_no.png`" :image-size="228" description="" /> 308 <el-empty :image="`/img/order_no.png`" :image-size="228" description=""/>
309 </div> 309 </div>
310 <div v-if="menu[5].active==1" class="pd20"> 310 <div v-if="menu[5].active==1" class="pd20">
311 <div class="xzbox"> 311 <div class="xzbox">
312 <div v-html="matchData.signKnow" /> 312 <div v-html="matchData.signKnow"/>
313 <div v-if="matchData.signKnowUrl"> 313 <div v-if="matchData.signKnowUrl">
314 <el-link 314 <el-link
315 v-for="(item,index) in JSON.parse(matchData.signKnowUrl)" :href="fillImgUrl(item.url)" 315 v-for="(item,index) in JSON.parse(matchData.signKnowUrl)" :href="fillImgUrl(item.url)"
316 target="_blank" type="primary" 316 target="_blank" type="primary"
317 > 317 >
318 <el-icon :size="20"> 318 <el-icon :size="20">
319 <Download /> 319 <Download/>
320 </el-icon> 320 </el-icon>
321 {{ item.name }} 321 {{ item.name }}
322 </el-link> 322 </el-link>
...@@ -324,11 +324,11 @@ ...@@ -324,11 +324,11 @@
324 </div> 324 </div>
325 </div> 325 </div>
326 </el-card> 326 </el-card>
327 <div style="height: 20px" /> 327 <div style="height: 20px"/>
328 328
329 </el-col> 329 </el-col>
330 <el-col :lg="6"> 330 <el-col :lg="6">
331 <match-news :match-id="matchId" /> 331 <match-news :match-id="matchId"/>
332 </el-col> 332 </el-col>
333 </el-row> 333 </el-row>
334 334
...@@ -343,9 +343,9 @@ ...@@ -343,9 +343,9 @@
343 </ul> 343 </ul>
344 </div> 344 </div>
345 <!-- 分站赛--> 345 <!-- 分站赛-->
346 <substation-list v-if="menu1[0].active==1" :list="matchData.cpts" /> 346 <substation-list v-if="menu1[0].active==1" :list="matchData.cpts"/>
347 <matchInfo v-if="menu1[1].active==1" :form="matchData" /> 347 <matchInfo v-if="menu1[1].active==1" :form="matchData"/>
348 <match-schedule-list v-if="menu1[2].active==1" :match-data="matchData" /> 348 <match-schedule-list v-if="menu1[2].active==1" :match-data="matchData"/>
349 </el-card> 349 </el-card>
350 </el-col> 350 </el-col>
351 </el-row> 351 </el-row>
...@@ -356,8 +356,8 @@ ...@@ -356,8 +356,8 @@
356 <img v-else src="@/assets/logo/Invitation_e.png"> 356 <img v-else src="@/assets/logo/Invitation_e.png">
357 </div> 357 </div>
358 358
359 <affix-invitation ref="dialogInvitationRef" /> 359 <affix-invitation ref="dialogInvitationRef"/>
360 <div style="height: 50px" /> 360 <div style="height: 50px"/>
361 361
362 <el-dialog 362 <el-dialog
363 v-model="signTypePop" center class="pcloginpop" 363 v-model="signTypePop" center class="pcloginpop"
...@@ -391,9 +391,9 @@ ...@@ -391,9 +391,9 @@
391 v-if="matchData.isAirView" class="ding" 391 v-if="matchData.isAirView" class="ding"
392 @click="openPickup" 392 @click="openPickup"
393 >{{ language == 0 ? '接 / 送机服务' : 'Pick-up/drop-off service' }}</a> 393 >{{ language == 0 ? '接 / 送机服务' : 'Pick-up/drop-off service' }}</a>
394 <pickup ref="pickupRef" /> 394 <pickup ref="pickupRef"/>
395 395
396 <checkAllSportsman ref="checkAllSportsmanRef" /> 396 <checkAllSportsman ref="checkAllSportsmanRef"/>
397 </div> 397 </div>
398 </template> 398 </template>
399 399
...@@ -405,9 +405,9 @@ import SubstationList from '@/viewsPc/match/components/substation-list' ...@@ -405,9 +405,9 @@ import SubstationList from '@/viewsPc/match/components/substation-list'
405 import MatchInfoProjectList from '@/viewsPc/match/components/matchInfo-projectList' 405 import MatchInfoProjectList from '@/viewsPc/match/components/matchInfo-projectList'
406 import QuickRow from '@/viewsPc/match/components/quick-row' 406 import QuickRow from '@/viewsPc/match/components/quick-row'
407 import Pickup from '@/viewsPc/components/pickup' 407 import Pickup from '@/viewsPc/components/pickup'
408 import { getCurrentInstance, ref } from 'vue' 408 import {getCurrentInstance, ref} from 'vue'
409 import { reactive, onMounted } from '@vue/runtime-core' 409 import {reactive, onMounted} from '@vue/runtime-core'
410 import { useRoute, useRouter } from 'vue-router' 410 import {useRoute, useRouter} from 'vue-router'
411 import AffixInvitation from '@/viewsPc/match/components/affix-invitation' 411 import AffixInvitation from '@/viewsPc/match/components/affix-invitation'
412 import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman' 412 import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman'
413 413
...@@ -415,14 +415,14 @@ import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman' ...@@ -415,14 +415,14 @@ import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman'
415 const language = useStorage('language', 0) 415 const language = useStorage('language', 0)
416 const route = useRoute() 416 const route = useRoute()
417 const router = useRouter() 417 const router = useRouter()
418 const { proxy } = getCurrentInstance() 418 const {proxy} = getCurrentInstance()
419 import * as match from '@/apiPc/match' 419 import * as match from '@/apiPc/match'
420 import { toRefs } from '@vueuse/shared' 420 import {toRefs} from '@vueuse/shared'
421 import { dayjs, ElMessage, ElMessageBox } from 'element-plus' 421 import {dayjs, ElMessage, ElMessageBox} from 'element-plus'
422 import useUserStore from '@/store/modules/user' 422 import useUserStore from '@/store/modules/user'
423 import { useStorage } from '@vueuse/core/index' 423 import {useStorage} from '@vueuse/core/index'
424 import { Search } from '@element-plus/icons-vue' 424 import {Search} from '@element-plus/icons-vue'
425 import { preCheckForGroup } from '@/apiPc/match' 425 import {preCheckForGroup} from '@/apiPc/match'
426 426
427 const user = useUserStore().user 427 const user = useUserStore().user
428 const group = useUserStore().group 428 const group = useUserStore().group
...@@ -434,16 +434,16 @@ const data = reactive({ ...@@ -434,16 +434,16 @@ const data = reactive({
434 groupId: '', 434 groupId: '',
435 activeName2: 'first', 435 activeName2: 'first',
436 menu: [ 436 menu: [
437 { name: 'Event details', cn: '赛事详情', active: 1 }, 437 {name: 'Event details', cn: '赛事详情', active: 1},
438 { name: 'Event settings', cn: '赛事设项', active: 0 }, 438 {name: 'Event settings', cn: '赛事设项', active: 0},
439 { name: 'Schedule', cn: '日程', active: 0 }, 439 {name: 'Schedule', cn: '日程', active: 0},
440 { name: 'Participating teams', cn: '参赛人员', active: 0 }, 440 {name: 'Participating teams', cn: '参赛人员', active: 0},
441 { name: 'Achievement', cn: '成绩', active: 0 }, 441 {name: 'Achievement', cn: '成绩', active: 0},
442 { name: 'Notes', cn: '报名须知', active: 0 }], 442 {name: 'Notes', cn: '报名须知', active: 0}],
443 menu1: [ 443 menu1: [
444 { name: 'Tournaments', cn: '分站赛', active: 1 }, 444 {name: 'Tournaments', cn: '分站赛', active: 1},
445 { name: 'Event details', cn: '赛事详情', active: 0 }, 445 {name: 'Event details', cn: '赛事详情', active: 0},
446 { name: 'Schedule', cn: '日程', active: 0 }], 446 {name: 'Schedule', cn: '日程', active: 0}],
447 signDoneGroupList: [], 447 signDoneGroupList: [],
448 signDoneGroupListToTal: 0, 448 signDoneGroupListToTal: 0,
449 queryGroupList: { 449 queryGroupList: {
...@@ -484,7 +484,7 @@ onMounted(() => { ...@@ -484,7 +484,7 @@ onMounted(() => {
484 }) 484 })
485 485
486 function getMatchId() { 486 function getMatchId() {
487 match.getMaList({ topFlag: 1, status: 1 }).then((res) => { 487 match.getMaList({topFlag: 1, status: 1}).then((res) => {
488 matchId.value = res.rows[0].id 488 matchId.value = res.rows[0].id
489 getMatch(matchId.value) 489 getMatch(matchId.value)
490 getGroupListByCptId() 490 getGroupListByCptId()
...@@ -493,7 +493,7 @@ function getMatchId() { ...@@ -493,7 +493,7 @@ function getMatchId() {
493 493
494 function getMatch(id) { 494 function getMatch(id) {
495 loading.value = true 495 loading.value = true
496 match.getMatchById({ id: id }).then(res => { 496 match.getMatchById({id: id}).then(res => {
497 matchData.value = res.data 497 matchData.value = res.data
498 loading.value = false 498 loading.value = false
499 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 499 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
...@@ -505,7 +505,7 @@ function getMatch(id) { ...@@ -505,7 +505,7 @@ function getMatch(id) {
505 isNational.value = true 505 isNational.value = true
506 } 506 }
507 }).catch(res => { 507 }).catch(res => {
508 router.push({ path: '/match/list' }) 508 router.push({path: '/match/list'})
509 loading.value = false 509 loading.value = false
510 // setTimeout("window.location.reload()", 1000) 510 // setTimeout("window.location.reload()", 1000)
511 }) 511 })
...@@ -656,7 +656,7 @@ function goGeren() { ...@@ -656,7 +656,7 @@ function goGeren() {
656 // 注册 656 // 注册
657 router.push({ 657 router.push({
658 name: 'personalRegister', 658 name: 'personalRegister',
659 query: { matchId: matchId.value } 659 query: {matchId: matchId.value}
660 }) 660 })
661 } 661 }
662 662
...@@ -829,7 +829,7 @@ function switchSignType() { ...@@ -829,7 +829,7 @@ function switchSignType() {
829 829
830 // 个人报名校验 830 // 个人报名校验
831 async function handelGeRenNext() { 831 async function handelGeRenNext() {
832 const res = await match.preCheckForPerson({ type: '1' }) 832 const res = await match.preCheckForPerson({type: '1'})
833 // 不给报名 833 // 不给报名
834 if (res.data == 0) { 834 if (res.data == 0) {
835 await proxy.$modal.confirm( 835 await proxy.$modal.confirm(
...@@ -841,7 +841,7 @@ async function handelGeRenNext() { ...@@ -841,7 +841,7 @@ async function handelGeRenNext() {
841 } 841 }
842 // 正常报名 842 // 正常报名
843 if (res.data == 1) { 843 if (res.data == 1) {
844 const flag = await getCheckOcr({ type: '1' }) 844 const flag = await getCheckOcr({type: '1'})
845 if (flag) await goPersonalSign() 845 if (flag) await goPersonalSign()
846 } 846 }
847 // 提示 847 // 提示
...@@ -851,8 +851,8 @@ async function handelGeRenNext() { ...@@ -851,8 +851,8 @@ async function handelGeRenNext() {
851 ? '运动员的WDSF会员号已变更,是否更新?' 851 ? '运动员的WDSF会员号已变更,是否更新?'
852 : 'The athlete`s WDSF membership number has been changed. Should it be updated?' 852 : 'The athlete`s WDSF membership number has been changed. Should it be updated?'
853 ) 853 )
854 await match.preCheckForPerson({ type: '2' }) 854 await match.preCheckForPerson({type: '2'})
855 const flag = await getCheckOcr({ type: '1' }) 855 const flag = await getCheckOcr({type: '1'})
856 if (flag) await goPersonalSign() 856 if (flag) await goPersonalSign()
857 } 857 }
858 } 858 }
...@@ -877,7 +877,7 @@ const openPickup = () => { ...@@ -877,7 +877,7 @@ const openPickup = () => {
877 async function handelPreCheckForGroup(fn) { 877 async function handelPreCheckForGroup(fn) {
878 const res = await match.preCheckForGroup(groupId.value, '1') 878 const res = await match.preCheckForGroup(groupId.value, '1')
879 if (res.data == 1 || res.data == 0) { 879 if (res.data == 1 || res.data == 0) {
880 const flag = await getCheckOcr({ type: '2', groupId: groupId.value }) 880 const flag = await getCheckOcr({type: '2', groupId: groupId.value})
881 if (flag) await fn() 881 if (flag) await fn()
882 } 882 }
883 if (res.data == 2) { 883 if (res.data == 2) {
...@@ -886,13 +886,13 @@ async function handelPreCheckForGroup(fn) { ...@@ -886,13 +886,13 @@ async function handelPreCheckForGroup(fn) {
886 ? '运动员的WDSF会员号已变更,是否更新?' 886 ? '运动员的WDSF会员号已变更,是否更新?'
887 : 'The athlete`s WDSF membership number has been changed. Should it be updated?') 887 : 'The athlete`s WDSF membership number has been changed. Should it be updated?')
888 await match.preCheckForGroup(groupId.value, '2') 888 await match.preCheckForGroup(groupId.value, '2')
889 const flag = await getCheckOcr({ type: '2', groupId: groupId.value }) 889 const flag = await getCheckOcr({type: '2', groupId: groupId.value})
890 if (flag) await fn() 890 if (flag) await fn()
891 } 891 }
892 } 892 }
893 893
894 async function getCheckOcr(obj) { 894 async function getCheckOcr(obj) {
895 const { data } = await match.checkOcr(obj) 895 const {data} = await match.checkOcr(obj)
896 if (!data) { 896 if (!data) {
897 // 人员ocr未通过 897 // 人员ocr未通过
898 await proxy.$modal.confirm(language.value == 0 ? '请完善人员信息' : 'Please complete the personnel information') 898 await proxy.$modal.confirm(language.value == 0 ? '请完善人员信息' : 'Please complete the personnel information')
......
...@@ -2,46 +2,46 @@ ...@@ -2,46 +2,46 @@
2 <div class="app-container"> 2 <div class="app-container">
3 <!-- 我是 赛事 --> 3 <!-- 我是 赛事 -->
4 <div class="kind mt20"> 4 <div class="kind mt20">
5 5
6 <div class="box"> 6 <div class="box">
7 <el-card> 7 <el-card>
8 <ul> 8 <ul>
9 <li> 9 <li>
10 <label>{{ language==0?'类型':'Type' }}</label> 10 <label>{{ language == 0 ? '类型' : 'Type' }}</label>
11 <el-radio-group v-model="query.type" @change="getList"> 11 <el-radio-group v-model="query.type" @change="getList">
12 <el-radio-button value="-1">{{ language==0?'全部':'All' }}</el-radio-button> 12 <el-radio-button value="-1">{{ language == 0 ? '全部' : 'All' }}</el-radio-button>
13 <el-radio-button value="0">{{ language==0?'独立赛':'Tournaments' }}</el-radio-button> 13 <el-radio-button value="0">{{ language == 0 ? '独立赛' : 'Tournaments' }}</el-radio-button>
14 <el-radio-button value="1">{{ language==0?'联赛':'League' }}</el-radio-button> 14 <el-radio-button value="1">{{ language == 0 ? '联赛' : 'League' }}</el-radio-button>
15 </el-radio-group> 15 </el-radio-group>
16 </li> 16 </li>
17 <li> 17 <li>
18 <label>{{ language==0?'状态':'Status' }}</label> 18 <label>{{ language == 0 ? '状态' : 'Status' }}</label>
19 <el-radio-group 19 <el-radio-group
20 v-model="query.progressStatusCode" 20 v-model="query.progressStatusCode"
21 @change="getList" 21 @change="getList"
22 > 22 >
23 <el-radio-button value="-1">{{ language==0?'全部':'All' }}</el-radio-button> 23 <el-radio-button value="-1">{{ language == 0 ? '全部' : 'All' }}</el-radio-button>
24 <el-radio-button value="2">{{ language==0?'报名中':'Registering now' }}</el-radio-button> 24 <el-radio-button value="2">{{ language == 0 ? '报名中' : 'Registering now' }}</el-radio-button>
25 <el-radio-button value="3">{{ language==0?'赛事即将开始':'Begin in a minute' }}</el-radio-button> 25 <el-radio-button value="3">{{ language == 0 ? '赛事即将开始' : 'Begin in a minute' }}</el-radio-button>
26 <el-radio-button value="4">{{ language==0?'赛事进行中':'In progress' }}</el-radio-button> 26 <el-radio-button value="4">{{ language == 0 ? '赛事进行中' : 'In progress' }}</el-radio-button>
27 <el-radio-button value="5">{{ language==0?'已结束':'Ended' }}</el-radio-button> 27 <el-radio-button value="5">{{ language == 0 ? '已结束' : 'Ended' }}</el-radio-button>
28 </el-radio-group> 28 </el-radio-group>
29 </li> 29 </li>
30 <li> 30 <li>
31 <label>{{ language==0?'时间':'Date' }}</label> 31 <label>{{ language == 0 ? '时间' : 'Date' }}</label>
32 <el-radio-group v-model="query.month" @change="getList"> 32 <el-radio-group v-model="query.month" @change="getList">
33 <el-radio-button value="">{{ language==0?'全部':'All' }}</el-radio-button> 33 <el-radio-button value="">{{ language == 0 ? '全部' : 'All' }}</el-radio-button>
34 <el-radio-button v-for="m in monthList" :key="m" :value="m">{{m}}</el-radio-button> 34 <el-radio-button v-for="m in monthList" :key="m" :value="m">{{ m }}</el-radio-button>
35 </el-radio-group> 35 </el-radio-group>
36 </li> 36 </li>
37 </ul> 37 </ul>
38 </el-card> 38 </el-card>
39 </div> 39 </div>
40 40
41 </div> 41 </div>
42 <div class="box"> 42 <div class="box">
43 <div class="listTitle"> 43 <div class="listTitle">
44 <h3>{{ language==0?'赛事列表':'List' }}</h3> 44 <h3>{{ language == 0 ? '赛事列表' : 'List' }}</h3>
45 <div class="search"> 45 <div class="search">
46 <el-input 46 <el-input
47 v-model="query.name" 47 v-model="query.name"
...@@ -49,36 +49,42 @@ ...@@ -49,36 +49,42 @@
49 class="input-with-select" @change="getList" 49 class="input-with-select" @change="getList"
50 > 50 >
51 <template #append> 51 <template #append>
52 <el-button type="success" round @click="getList">{{ language==0?'查询':'Search' }}</el-button> 52 <el-button round type="success" @click="getList">{{ language == 0 ? '查询' : 'Search' }}</el-button>
53 </template> 53 </template>
54 </el-input> 54 </el-input>
55 </div> 55 </div>
56 </div> 56 </div>
57 57
58 <div v-loading="loading"> 58 <div v-loading="loading">
59 <div class="matchItem" v-for="n in list" :key="n.id" @click="goDetail(n.id)"> 59 <div v-for="n in list" :key="n.id" class="matchItem" @click="goDetail(n.id)">
60 <el-row :gutter="15" align="middle"> 60 <el-row :gutter="15" align="middle">
61 <el-col :lg="7" :md="24" :xl="6"> 61 <el-col :lg="7" :md="24" :xl="6">
62 <div class="popo"> 62 <div class="popo">
63 <el-tag v-if="n.signType==0">{{ language==0?'个人':'Individual' }}</el-tag> 63 <el-tag v-if="n.signType==0">{{ language == 0 ? '个人' : 'Individual' }}</el-tag>
64 <el-tag v-if="n.signType==1">{{ language==0?'团体':'Team' }}</el-tag> 64 <el-tag v-if="n.signType==1">{{ language == 0 ? '团体' : 'Team' }}</el-tag>
65 <el-tag v-if="n.signType==2">{{ language==0?'个人/团体':'Individual/Team' }}</el-tag> 65 <el-tag v-if="n.signType==2">{{ language == 0 ? '个人/团体' : 'Individual/Team' }}</el-tag>
66 </div> 66 </div>
67 <img class="mauto mw100 coverLimitHeight" :src="fillImgUrl(n.coverUrl)"> 67 <img :src="fillImgUrl(n.coverUrl)" class="mauto mw100 coverLimitHeight">
68 </el-col> 68 </el-col>
69 <el-col :lg="9" :md="12" :xl="12"> 69 <el-col :lg="9" :md="12" :xl="12">
70 <div class="info"> 70 <div class="info">
71 <h3 class="esp">{{ n.name }}</h3> 71 <h3 class="esp">{{ n.name }}</h3>
72 <p class="ppl"><label>{{language==0?'赛事级别':'EVENT LEVEL'}}:</label>{{n.level}}</p> 72 <p class="ppl"><label>{{ language == 0 ? '赛事级别' : 'EVENT LEVEL' }}:</label>{{ n.level }}</p>
73 <p class="ppl esp"><label>{{ language==0?'赛事时间':'COMPETITION DATE' }}:</label>{{n.beginTime?.slice(0,10)}} ~ {{ n.endTime?.slice(0,10) }}</p> 73 <p class="ppl esp"><label>{{
74 <!-- <p class="ppl" v-if="n.address"><label>{{ language==0?'地&ensp;&ensp;&ensp;&ensp;点':'Location' }}:</label>{{ n.address }}</p>--> 74 language == 0 ? '赛事时间' : 'COMPETITION DATE'
75 <!-- <p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}:</label>{{ n.signEndTime?.slice(0,10) }}</p>--> 75 }}:</label>{{ n.beginTime?.slice(0, 10) }} ~ {{ n.endTime?.slice(0, 10) }}</p>
76 76 <!-- <p class="ppl" v-if="n.address"><label>{{ language==0?'地&nbsp;&nbsp;&nbsp;&nbsp;点':'Location' }}:</label>{{ n.address }}</p>-->
77 <p class="ppl"><label>{{ language==0?'联&ensp;&ensp;人':'CONTACT PERSON' }}:</label>{{ n.contactPerson }}</p> 77 <!-- <p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}:</label>{{ n.signEndTime?.slice(0,10) }}</p>-->
78 <p class="ppl"><label>{{ language==0?'联系电话':'TEL' }}:</label>086-{{ n.contactTelno }}</p> 78
79 <p class="ppl esp"><label>{{ language==0?'邮&ensp;&ensp;&ensp;&ensp;箱':'EMAIL' }}:</label>{{ n.contactEmail }}</p> 79 <p class="ppl"><label>{{
80 <p class="ppl" v-if="n.type=='1'"> 80 language == 0 ? '联&nbsp;&nbsp;人' : 'CONTACT PERSON'
81 <label>{{ language==0?'分&ensp;&ensp;赛':'NO. OF TOURNAMENTS' }}:</label>{{n.cptsSize}} 81 }}:</label>{{ n.contactPerson }}</p>
82 <p class="ppl"><label>{{ language == 0 ? '联系电话' : 'TEL' }}:</label>086-{{ n.contactTelno }}</p>
83 <p class="ppl esp"><label>{{
84 language == 0 ? '邮&nbsp;&nbsp;&nbsp;&nbsp;箱' : 'EMAIL'
85 }}:</label>{{ n.contactEmail }}</p>
86 <p v-if="n.type=='1'" class="ppl">
87 <label>{{ language == 0 ? '分&nbsp;&nbsp;赛' : 'NO. OF TOURNAMENTS' }}:</label>{{ n.cptsSize }}
82 </p> 88 </p>
83 </div> 89 </div>
84 </el-col> 90 </el-col>
...@@ -90,32 +96,36 @@ ...@@ -90,32 +96,36 @@
90 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> 96 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
91 <template #default="timeData"> 97 <template #default="timeData">
92 <span class="block">{{ timeData.days }}</span> 98 <span class="block">{{ timeData.days }}</span>
93 <span class="colon">{{ language==0?'天':'Days' }}</span> 99 <span class="colon">{{ language == 0 ? '天' : 'Days' }}</span>
94 <span class="block">{{ timeData.hours }}</span> 100 <span class="block">{{ timeData.hours }}</span>
95 <span class="colon">{{ language==0?'时':'Hrs' }}</span> 101 <span class="colon">{{ language == 0 ? '时' : 'Hrs' }}</span>
96 <span class="block">{{ timeData.minutes }}</span> 102 <span class="block">{{ timeData.minutes }}</span>
97 <span class="colon">{{ language==0?'分':'Min' }}</span> 103 <span class="colon">{{ language == 0 ? '分' : 'Min' }}</span>
98 <span class="block">{{ timeData.seconds }}</span> 104 <span class="block">{{ timeData.seconds }}</span>
99 <span class="colon">{{ language==0?'秒':'Sec' }}</span> 105 <span class="colon">{{ language == 0 ? '秒' : 'Sec' }}</span>
100 </template> 106 </template>
101 </van-count-down> 107 </van-count-down>
102 108
103 <div class="text-center mt30"> 109 <div class="text-center mt30">
104 <a class="btn-lineG mb20 mauto" v-if="n.time>0" style="display: block;"> 110 <a v-if="n.time>0" class="btn-lineG mb20 mauto" style="display: block;">
105 {{ language==0?'我要报名':'REGISTER' }}</a> 111 {{ language == 0 ? '我要报名' : 'REGISTER' }}</a>
106 <div v-else style="opacity: 0.5;" class="btn-lineG mb20 mauto">{{ language==0?'报名已结束':'Registration has ended' }}</div> 112 <div v-else class="btn-lineG mb20 mauto" style="opacity: 0.5;">
107 <p class="text-gray uppercase">{{ language==0?'报名截止':'Registration Deadline' }}:{{ n.signEndTime?.slice(0,10) }}</p> 113 {{ language == 0 ? '报名已结束' : 'Registration has ended' }}
114 </div>
115 <p class="text-gray uppercase">{{
116 language == 0 ? '报名截止' : 'Registration Deadline'
117 }}:{{ n.signEndTime?.slice(0, 10) }}</p>
108 </div> 118 </div>
109 </el-col> 119 </el-col>
110 </el-row> 120 </el-row>
111 </div> 121 </div>
112 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0" description=" "/> 122 <el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228" description=" "/>
113 123
114 </div> 124 </div>
115 125
116 126
117 <div v-if="total>10" class="pc-page-box mb20"> 127 <div v-if="total>10" class="pc-page-box mb20">
118 <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" /> 128 <PaginationPc v-model:limit="query.pageSize" v-model:page="query.pageNum" :total="total" @pagination="getList"/>
119 </div> 129 </div>
120 <div class="mb20"></div> 130 <div class="mb20"></div>
121 </div> 131 </div>
...@@ -123,17 +133,18 @@ ...@@ -123,17 +133,18 @@
123 </template> 133 </template>
124 134
125 <script setup> 135 <script setup>
126 import { getCurrentInstance, ref } from 'vue' 136 import {getCurrentInstance, ref} from 'vue'
127 import { reactive, onMounted } from '@vue/runtime-core' 137 import {reactive, onMounted} from '@vue/runtime-core'
128 import { useRouter } from 'vue-router' 138 import {useRouter} from 'vue-router'
129 import { dayjs } from 'element-plus' 139 import {dayjs} from 'element-plus'
130 140
131 const router = useRouter() 141 const router = useRouter()
132 const { proxy } = getCurrentInstance() 142 const {proxy} = getCurrentInstance()
133 import * as match from '@/apiPc/match' 143 import * as match from '@/apiPc/match'
134 import {useStorage} from "@vueuse/core/index"; 144 import {useStorage} from "@vueuse/core/index";
135 const language= useStorage('language',0) 145
136 const typeList = ref([{ label: '全部', id: '0' }]) 146 const language = useStorage('language', 0)
147 const typeList = ref([{label: '全部', id: '0'}])
137 const list = ref([]) 148 const list = ref([])
138 const projectList = ref([]) 149 const projectList = ref([])
139 const monthList = ref([]) 150 const monthList = ref([])
...@@ -141,7 +152,7 @@ const loading = ref(false) ...@@ -141,7 +152,7 @@ const loading = ref(false)
141 const activeName = ref('') 152 const activeName = ref('')
142 const total = ref(0) 153 const total = ref(0)
143 const query = ref({ 154 const query = ref({
144 type:'-1', 155 type: '-1',
145 projectId: '', 156 projectId: '',
146 progressStatusCode: '-1', 157 progressStatusCode: '-1',
147 month: '', 158 month: '',
...@@ -184,7 +195,7 @@ function getList() { ...@@ -184,7 +195,7 @@ function getList() {
184 loading.value = true 195 loading.value = true
185 match.getMaList(query.value).then((res) => { 196 match.getMaList(query.value).then((res) => {
186 list.value = res.rows 197 list.value = res.rows
187 for(let n of list.value){ 198 for (let n of list.value) {
188 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 199 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
189 n.time = dayjs(n.signEndTime).diff(today, 'millisecond') 200 n.time = dayjs(n.signEndTime).diff(today, 'millisecond')
190 } 201 }
...@@ -204,53 +215,67 @@ function goDetail(id) { ...@@ -204,53 +215,67 @@ function goDetail(id) {
204 } 215 }
205 </script> 216 </script>
206 217
207 <style scoped lang="scss"> 218 <style lang="scss" scoped>
208 .app-container { 219 .app-container {
209 background: #f5f7f9; 220 background: #f5f7f9;
210 padding: 0; 221 padding: 0;
211 } 222 }
223
212 .matchItem { 224 .matchItem {
213 cursor: pointer;padding:10px 20px 20px;box-shadow: 0 0 6px #eee; 225 cursor: pointer;
214 background: #FFFFFF;margin: 0 0 20px; 226 padding: 10px 20px 20px;
227 box-shadow: 0 0 6px #eee;
228 background: #FFFFFF;
229 margin: 0 0 20px;
215 position: relative; 230 position: relative;
216 .el-col{padding-top: 20px} 231
217 .countDownTitle{margin: 0} 232 .el-col {
233 padding-top: 20px
234 }
235
236 .countDownTitle {
237 margin: 0
238 }
239
218 &:last-child { 240 &:last-child {
219 border-bottom: none; 241 border-bottom: none;
220 } 242 }
243
221 .el-avatar { 244 .el-avatar {
222 position: absolute; 245 position: absolute;
223 left: 20px; 246 left: 20px;
224 top: 30px; 247 top: 30px;
225 248
226 img { 249 img {
227 background: #fff; 250 background: #fff;
228 } 251 }
229 } 252 }
230 253
231 .info { 254 .info {
232 p { 255 p {
233 font-size: 14px; 256 font-size: 14px;
234 } 257 }
235 } 258 }
236 259
237 .typeTag { 260 .typeTag {
238 position: absolute; 261 position: absolute;
239 right: 0; 262 right: 0;
240 top: 0; 263 top: 0;
241 } 264 }
242 265
243 h3 { 266 h3 {
244 font-weight: 500;margin: 0 0 10px; 267 font-weight: 500;
268 margin: 0 0 10px;
245 font-size: 18px; 269 font-size: 18px;
246 color: #000000; 270 color: #000000;
247 text-overflow: ellipsis; 271 text-overflow: ellipsis;
248 } 272 }
249 273
250 &:hover h3 { 274 &:hover h3 {
251 color: var(--el-color-primary); 275 color: var(--el-color-primary);
252 } 276 }
253 } 277 }
278
254 .countDownTitle { 279 .countDownTitle {
255 text-align: center; 280 text-align: center;
256 color: #525F6B; 281 color: #525F6B;
...@@ -278,11 +303,23 @@ function goDetail(id) { ...@@ -278,11 +303,23 @@ function goDetail(id) {
278 width: 100%; 303 width: 100%;
279 left: 0; 304 left: 0;
280 } 305 }
281 .info h3{margin: 0 0 15px} 306
282 .info .ppl{margin: 6px 0;} 307 .info h3 {
283 .ppl{color: #29343C; 308 margin: 0 0 15px
284 label{color: #929AA0;} 309 }
310
311 .info .ppl {
312 margin: 6px 0;
285 } 313 }
314
315 .ppl {
316 color: #29343C;
317
318 label {
319 color: #929AA0;
320 }
321 }
322
286 .van-count-down { 323 .van-count-down {
287 text-align: center; 324 text-align: center;
288 margin: 20px 0; 325 margin: 20px 0;
...@@ -296,7 +333,8 @@ function goDetail(id) { ...@@ -296,7 +333,8 @@ function goDetail(id) {
296 } 333 }
297 334
298 .block { 335 .block {
299 display: inline-block; opacity: 0.7; 336 display: inline-block;
337 opacity: 0.7;
300 width: 52px; 338 width: 52px;
301 color: #fff; 339 color: #fff;
302 font-size: 26px; 340 font-size: 26px;
...@@ -307,30 +345,50 @@ function goDetail(id) { ...@@ -307,30 +345,50 @@ function goDetail(id) {
307 line-height: 50px; 345 line-height: 50px;
308 text-align: center; 346 text-align: center;
309 } 347 }
348
310 @media (max-width: 1450px) { 349 @media (max-width: 1450px) {
311 .block{width: 44px;font-size: 20px;} 350 .block {
351 width: 44px;
352 font-size: 20px;
353 }
312 } 354 }
355
313 .el-pagination { 356 .el-pagination {
314 --el-pagination-button-disabled-bg-color: transparent; 357 --el-pagination-button-disabled-bg-color: transparent;
315 justify-content: center; 358 justify-content: center;
316 --el-pagination-bg-color: transparent; 359 --el-pagination-bg-color: transparent;
317 360
318 } 361 }
319 362
320 .kind { 363 .kind {
321 .el-radio-group{width: 90%;} 364 .el-radio-group {
365 width: 90%;
366 }
367
322 ul { 368 ul {
323 list-style: none; 369 list-style: none;
324 370
325 li { 371 li {
326 margin: 0 0 10px; 372 margin: 0 0 10px;
327 display: flex; 373 display: flex;
328 align-items: flex-start; 374 align-items: flex-start;
329 & > label {padding: 8px 0; 375
330 width:5em;text-align: right;font-weight: normal; 376 & > label {
377 padding: 8px 0;
378 width: 5em;
379 text-align: right;
380 font-weight: normal;
381 }
382
383 .el-radio-button {
384 min-width: 90px;
385 text-align: center;
386 }
387
388 &:last-child {
389 border-bottom: none;
390 margin: 0
331 } 391 }
332 .el-radio-button{min-width: 90px;text-align: center;}
333 &:last-child{border-bottom: none;margin: 0}
334 } 392 }
335 } 393 }
336 } 394 }
...@@ -351,5 +409,7 @@ function goDetail(id) { ...@@ -351,5 +409,7 @@ function goDetail(id) {
351 background: var(--el-color-primary) 409 background: var(--el-color-primary)
352 } 410 }
353 411
354 .mw100{max-width: 100%;} 412 .mw100 {
413 max-width: 100%;
414 }
355 </style> 415 </style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!