3dac0947 by 杨炀

no message

1 parent b2104d0d
...@@ -604,12 +604,12 @@ export const cjList = [ ...@@ -604,12 +604,12 @@ export const cjList = [
604 {RANK:'103-104',COUPLE:'Lai Juncheng - Hu Yaqing',COUNTRY:'CHN',START:'233',BASE:'8',POINTS:'21'}, 604 {RANK:'103-104',COUPLE:'Lai Juncheng - Hu Yaqing',COUNTRY:'CHN',START:'233',BASE:'8',POINTS:'21'},
605 {RANK:'105-106',COUPLE:'Hoh Leonard - Mu Linda',COUNTRY:'MAS',START:'183',BASE:'8',POINTS:'21'}, 605 {RANK:'105-106',COUPLE:'Hoh Leonard - Mu Linda',COUNTRY:'MAS',START:'183',BASE:'8',POINTS:'21'},
606 {RANK:'105-106',COUPLE:'Shi Minghang - Yao Qianwen',COUNTRY:'CHN',START:'239',BASE:'8',POINTS:'21'}, 606 {RANK:'105-106',COUPLE:'Shi Minghang - Yao Qianwen',COUNTRY:'CHN',START:'239',BASE:'8',POINTS:'21'},
607 {RANK:'107-108',COUPLE:'Huang Cuihao - Hu Yidan',COUNTRY:'CHN',START:'',BASE:'8',POINTS:'21'}, 607 {RANK:'107-108',COUPLE:'Huang Cuihao - Hu Yidan',COUNTRY:'CHN',START:'141',BASE:'8',POINTS:'21'},
608 {RANK:'107-108',COUPLE:'Luo Yi - Li Jingyi',COUNTRY:'CHN',START:'',BASE:'8',POINTS:'21'}, 608 {RANK:'107-108',COUPLE:'Luo Yi - Li Jingyi',COUNTRY:'CHN',START:'169',BASE:'8',POINTS:'21'},
609 {RANK:'109-112',COUPLE:'Liang Jizu - Shao Xingjun',COUNTRY:'CHN',START:'',BASE:'8',POINTS:'21'}, 609 {RANK:'109-112',COUPLE:'Liang Jizu - Shao Xingjun',COUNTRY:'CHN',START:'162',BASE:'8',POINTS:'21'},
610 {RANK:'109-112',COUPLE:'Xie Cuntan - Feng Ruolin',COUNTRY:'CHN',START:'',BASE:'8',POINTS:'21'}, 610 {RANK:'109-112',COUPLE:'Xie Cuntan - Feng Ruolin',COUNTRY:'CHN',START:'211',BASE:'8',POINTS:'21'},
611 {RANK:'109-112',COUPLE:'Wong Lap Yin - Cheung Kit Ni',COUNTRY:'HKG',START:'',BASE:'8',POINTS:'21'}, 611 {RANK:'109-112',COUPLE:'Wong Lap Yin - Cheung Kit Ni',COUNTRY:'HKG',START:'218',BASE:'8',POINTS:'21'},
612 {RANK:'109-112',COUPLE:'Zhao Yibo - Lu Yan',COUNTRY:'CHN',START:'',BASE:'8',POINTS:'21'}, 612 {RANK:'109-112',COUPLE:'Zhao Yibo - Lu Yan',COUNTRY:'CHN',START:'236',BASE:'8',POINTS:'21'},
613 {RANK:'113-124',COUPLE:'Feng Long - Lu Shimeng',COUNTRY:'CHN',START:'125',BASE:'8',POINTS:'21'}, 613 {RANK:'113-124',COUPLE:'Feng Long - Lu Shimeng',COUNTRY:'CHN',START:'125',BASE:'8',POINTS:'21'},
614 {RANK:'113-124',COUPLE:'Han Minghao - Su Lyuran',COUNTRY:'CHN',START:'139',BASE:'8',POINTS:'21'}, 614 {RANK:'113-124',COUPLE:'Han Minghao - Su Lyuran',COUNTRY:'CHN',START:'139',BASE:'8',POINTS:'21'},
615 {RANK:'113-124',COUPLE:'Tuyo Wen Hao - Tuyo Xing Yao',COUNTRY:'MAS',START:'140',BASE:'8',POINTS:'21'}, 615 {RANK:'113-124',COUPLE:'Tuyo Wen Hao - Tuyo Xing Yao',COUNTRY:'MAS',START:'140',BASE:'8',POINTS:'21'},
......
...@@ -4,9 +4,11 @@ ...@@ -4,9 +4,11 @@
4 */ 4 */
5 5
6 /** 基础通用 **/ 6 /** 基础通用 **/
7 .pt5 { 7 .popo{position: absolute;left: 0;}
8
9 .pt5 {
8 padding-top: 5px; 10 padding-top: 5px;
9 } 11 }
10 .pr5 { 12 .pr5 {
11 padding-right: 5px; 13 padding-right: 5px;
12 } 14 }
......
...@@ -37,9 +37,9 @@ ...@@ -37,9 +37,9 @@
37 <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item> 37 <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item>
38 <!-- <el-sub-menu index="/about">--> 38 <!-- <el-sub-menu index="/about">-->
39 <!-- <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>--> 39 <!-- <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>-->
40 <!-- <el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>--> 40 <!-- <el-menu-item index="/about/wuDaoEn">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>-->
41 <!-- <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>--> 41 <!-- <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>-->
42 <!-- <el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>--> 42 <!-- <el-menu-item index="/about/cultureEn">{{ language==0?'地方文化':'Culture' }}</el-menu-item>-->
43 <!-- </el-sub-menu>--> 43 <!-- </el-sub-menu>-->
44 </el-menu> 44 </el-menu>
45 </div> 45 </div>
...@@ -119,9 +119,9 @@ ...@@ -119,9 +119,9 @@
119 <el-menu-item index="/guide">GUIDELINE</el-menu-item> 119 <el-menu-item index="/guide">GUIDELINE</el-menu-item>
120 <el-sub-menu index="/about"> 120 <el-sub-menu index="/about">
121 <template #title>CONTACT & MORE</template> 121 <template #title>CONTACT & MORE</template>
122 <el-menu-item index="/about/wuDao">About Us</el-menu-item> 122 <el-menu-item index="/about/wuDaoEn">About Us</el-menu-item>
123 <el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item> 123 <el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item>
124 <el-menu-item index="/about/culture">Culture</el-menu-item> 124 <el-menu-item index="/about/cultureEn">Culture</el-menu-item>
125 </el-sub-menu> 125 </el-sub-menu>
126 </el-menu> 126 </el-menu>
127 </el-drawer> 127 </el-drawer>
......
...@@ -98,7 +98,7 @@ app.component('Draggable', draggable) ...@@ -98,7 +98,7 @@ app.component('Draggable', draggable)
98 app.component('WePay', wePay) 98 app.component('WePay', wePay)
99 99
100 if (language.value == 0) { 100 if (language.value == 0) {
101 app.use(routerCn) 101 app.use(routerEn)
102 app.use(ElementPlus, { 102 app.use(ElementPlus, {
103 locale: localeCn, 103 locale: localeCn,
104 size: Cookies.get('size') || 'default' 104 size: Cookies.get('size') || 'default'
......
...@@ -70,7 +70,7 @@ export const constantRoutes = [ ...@@ -70,7 +70,7 @@ export const constantRoutes = [
70 children: [ 70 children: [
71 { 71 {
72 path: '', 72 path: '',
73 component: () => import('@/viewsPc/index_en'), 73 component: () => import('@/viewsPc/home'),
74 name: 'home' 74 name: 'home'
75 }, 75 },
76 { 76 {
...@@ -90,14 +90,32 @@ export const constantRoutes = [ ...@@ -90,14 +90,32 @@ export const constantRoutes = [
90 children: [ 90 children: [
91 { 91 {
92 path: 'wudao', 92 path: 'wudao',
93 component: () => import('@/viewsPc/about/wudao_en'), 93 component: () => import('@/viewsPc/about/wudao'),
94 name: 'dangNews', 94 name: 'dangNews',
95 meta: { title: 'about us' } 95 meta: { title: '舞蹈节' }
96 }, 96 },
97 { 97 {
98 path: 'culture', 98 path: 'culture',
99 component: () => import('@/viewsPc/about/culture_en'), 99 component: () => import('@/viewsPc/about/culture'),
100 name: 'culture', 100 name: 'culture',
101 meta: { title: '地方文化' }
102 },
103 {
104 path: 'leaderInfo/:id',
105 component: () => import('@/viewsPc/about/leaderInfo'),
106 name: 'leaderInfo',
107 meta: { title: '评委详情' }
108 },
109 {
110 path: 'wudaoEn',
111 component: () => import('@/viewsPc/about/wudao_en'),
112 name: 'dangNewsEn',
113 meta: { title: 'about us' }
114 },
115 {
116 path: 'cultureEn',
117 component: () => import('@/viewsPc/about/culture_en'),
118 name: 'cultureEn',
101 meta: { title: 'culture' } 119 meta: { title: 'culture' }
102 }, 120 },
103 { 121 {
...@@ -115,7 +133,7 @@ export const constantRoutes = [ ...@@ -115,7 +133,7 @@ export const constantRoutes = [
115 children: [ 133 children: [
116 { 134 {
117 path: 'index', 135 path: 'index',
118 component: () => import('@/viewsPc/notice/index_en'), 136 component: () => import('@/viewsPc/notice/index'),
119 name: 'notice', 137 name: 'notice',
120 meta: { title: 'NOTICEBOARD' } 138 meta: { title: 'NOTICEBOARD' }
121 }, 139 },
...@@ -152,13 +170,13 @@ export const constantRoutes = [ ...@@ -152,13 +170,13 @@ export const constantRoutes = [
152 children: [ 170 children: [
153 { 171 {
154 path: 'index', 172 path: 'index',
155 component: () => import('@/viewsPc/news/index_en'), 173 component: () => import('@/viewsPc/news/index'),
156 name: 'news', 174 name: 'news',
157 meta: { title: 'NEWS' } 175 meta: { title: 'NEWS' }
158 }, 176 },
159 { 177 {
160 path: 'list/:id', 178 path: 'list/:id',
161 component: () => import('@/viewsPc/news/list_en'), 179 component: () => import('@/viewsPc/news/list'),
162 name: 'newsList', 180 name: 'newsList',
163 meta: { title: '新闻列表' } 181 meta: { title: '新闻列表' }
164 }, 182 },
...@@ -197,7 +215,7 @@ export const constantRoutes = [ ...@@ -197,7 +215,7 @@ export const constantRoutes = [
197 children: [ 215 children: [
198 { 216 {
199 path: 'index', 217 path: 'index',
200 component: () => import('@/viewsPc/meta/index_en'), 218 component: () => import('@/viewsPc/meta/index'),
201 name: 'meta', 219 name: 'meta',
202 meta: { title: 'MEDIA' } 220 meta: { title: 'MEDIA' }
203 } 221 }
...@@ -223,7 +241,7 @@ export const constantRoutes = [ ...@@ -223,7 +241,7 @@ export const constantRoutes = [
223 children: [ 241 children: [
224 { 242 {
225 path: 'index', 243 path: 'index',
226 component: () => import('@/viewsPc/guide/index_en'), 244 component: () => import('@/viewsPc/guide/index'),
227 name: 'guide', 245 name: 'guide',
228 meta: { title: 'GUIDELINE' } 246 meta: { title: 'GUIDELINE' }
229 } 247 }
...@@ -293,31 +311,6 @@ export const constantRoutes = [ ...@@ -293,31 +311,6 @@ export const constantRoutes = [
293 ] 311 ]
294 }, 312 },
295 { 313 {
296 path: 'train',
297 component: Empty,
298 redirect: '/train/list',
299 children: [
300 {
301 path: 'list',
302 component: () => import('@/viewsPc/train/index'),
303 name: 'trainList',
304 meta: { title: '培训' }
305 },
306 {
307 path: 'detail/:id',
308 component: () => import('@/viewsPc/train/detail'),
309 name: 'trainDetail',
310 meta: { title: '培训详情' }
311 },
312 {
313 path: 'signUp/:id',
314 component: () => import('@/viewsPc/train/signUp'),
315 name: 'trainSignUp',
316 meta: { title: '培训报名' }
317 }
318 ]
319 },
320 {
321 path: 'register', 314 path: 'register',
322 component: Empty, 315 component: Empty,
323 redirect: '/register', 316 redirect: '/register',
...@@ -472,6 +465,12 @@ export const constantRoutes = [ ...@@ -472,6 +465,12 @@ export const constantRoutes = [
472 meta: { title: '团队报名' } 465 meta: { title: '团队报名' }
473 }, 466 },
474 { 467 {
468 path: 'list/:id/teamSignCn',
469 component: () => import('@/viewsPc/match/teamSign_bak'),
470 name: 'teamSignCn',
471 meta: { title: '团队报名-国内赛' }
472 },
473 {
475 path: 'list/:id/chooseCoach', 474 path: 'list/:id/chooseCoach',
476 component: () => import('@/viewsPc/match/chooseCoach'), 475 component: () => import('@/viewsPc/match/chooseCoach'),
477 name: 'chooseCoach', 476 name: 'chooseCoach',
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
11 <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" /> 11 <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" />
12 </el-select> 12 </el-select>
13 </el-form-item> 13 </el-form-item>
14 <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address"> 14 <el-form-item :label="language==0?'详细地址':'Detailed Address'">
15 <el-cascader v-if="form.countryId == 240" 15 <el-cascader v-if="form.countryId == 240"
16 v-model="form.regionId" 16 v-model="form.regionId"
17 style="width: 100%;" 17 style="width: 100%;"
...@@ -23,13 +23,13 @@ ...@@ -23,13 +23,13 @@
23 <el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name"> 23 <el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name">
24 <el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/> 24 <el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/>
25 </el-form-item> 25 </el-form-item>
26 <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag"> 26 <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" prop="majorFlag">
27 <el-select v-model="form.majorFlag"> 27 <el-select v-model="form.majorFlag">
28 <el-option :label="language==0?'专业':'Professional'" value="1" /> 28 <el-option :label="language==0?'专业':'Professional'" value="1" />
29 <el-option :label="language==0?'业余':'Amateur'" value="0" /> 29 <el-option :label="language==0?'业余':'Amateur'" value="0" />
30 </el-select> 30 </el-select>
31 </el-form-item> 31 </el-form-item>
32 <el-form-item :label="language==0?'团体类型':'Group type'" prop="type" required> 32 <el-form-item :label="language==0?'团体类型':'Group type'" prop="type">
33 <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;"> 33 <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;">
34 <el-option :label="language==0?'普通院校':'School'" value="0" /> 34 <el-option :label="language==0?'普通院校':'School'" value="0" />
35 <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" /> 35 <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" />
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
47 <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail"> 47 <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail">
48 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> 48 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/>
49 </el-form-item> 49 </el-form-item>
50 <el-form-item prop="imgUrl" required :label="language==0?'机构Logo':'Group Logo'"> 50 <el-form-item prop="imgUrl" :label="language==0?'机构Logo':'Group Logo'">
51 <ImageUpload2 51 <ImageUpload2
52 v-model="form.imgUrl" :crop-height="200" :crop-width="200" :limit="1" 52 v-model="form.imgUrl" :crop-height="200" :crop-width="200" :limit="1"
53 :is-show-tip="false" 53 :is-show-tip="false"
...@@ -88,12 +88,12 @@ const userName = ref('') ...@@ -88,12 +88,12 @@ const userName = ref('')
88 const registerRules = ref( 88 const registerRules = ref(
89 { 89 {
90 countryId: [{ required: true, trigger: 'blur', message: '请选择所属国家' },], 90 countryId: [{ required: true, trigger: 'blur', message: '请选择所属国家' },],
91 address: [{ required: true, trigger: 'blur', message: '请输入地址' },], 91 // address: [{ required: true, trigger: 'blur', message: '请输入地址' },],
92 name: [{ required: true, trigger: 'blur', message: '请输入' },], 92 name: [{ required: true, trigger: 'blur', message: '请输入' },],
93 contactPerson: [{ required: true, trigger: 'blur', message: '请输入' },], 93 contactPerson: [{ required: true, trigger: 'blur', message: '请输入' },],
94 contactTelno: [{ required: true, trigger: 'blur', message: '请输入' },], 94 contactTelno: [{ required: true, trigger: 'blur', message: '请输入' },],
95 contactEmail: [{ required: true, trigger: 'blur', message: '请输入' },], 95 contactEmail: [{ required: true, trigger: 'blur', message: '请输入' },],
96 imgUrl: [{ required: true, trigger: 'blur', message: '请上传' },], 96 // imgUrl: [{ required: true, trigger: 'blur', message: '请上传' },],
97 }) 97 })
98 onMounted(() => { 98 onMounted(() => {
99 getRegionsList() 99 getRegionsList()
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box">
4 <div class=" mt30"></div> 4 <div class=" mt30"></div>
5 <div class="flexBody"> 5 <div class="flexBody" v-if="language==0">
6 <el-tabs v-model="activeName" tab-position="left" @tab-change="changeTab" @tab-click="clickTab"> 6 <el-tabs v-model="activeName" tab-position="left" @tab-change="changeTab" @tab-click="clickTab">
7 <el-tab-pane v-for="(tab,index) in list" :label="tab.name" :name="index"> 7 <el-tab-pane v-for="(tab,index) in list" :label="tab.name" :name="index">
8 <template #label> 8 <template #label>
...@@ -100,7 +100,109 @@ ...@@ -100,7 +100,109 @@
100 </div> 100 </div>
101 </div> 101 </div>
102 </div> 102 </div>
103 <div class="flexBody" v-else>
104 <el-tabs v-model="activeName" tab-position="left" @tab-change="changeTab" @tab-click="clickTab">
105 <el-tab-pane v-for="(tab,index) in list_en" :label="tab.name" :name="index">
106 <template #label>
107 <span class="custom-tabs-label">
108 <span class="tabFont">{{ tab.name }}</span>
109 </span>
110 </template>
111 </el-tab-pane>
112 </el-tabs>
113 <div class="infoPart">
114 <h3 class="leftboderTT">{{ nowTab.name }}</h3>
115 <div class="content" v-if="activeName==0">
116 <div>
117 The Taihu International Expo Center Block B covers a total area of 30,000m²and an interior area of 20,000m². It is equipped with top lighting, stage, sound and a full set of broadcasting equipment, and can accommodate 5,000 spectators. It is the premier multi-purpose cultural and sports venue in China, also a landmark for Wuxi.
118 <br/>
119 Location: No. 88, Qingshu Road, Economic and Development District, Wuxi<br/>
120 Business District: Within 10 kilometers, there are nearly 10 large commercial complexes, including the Mixc and Coastal City etc.<br/>
121 <img src="@/assets/zhinan/1.png"/>
122 <img src="@/assets/zhinan/2.png"/>
123 </div>
124 <h4 class="leftboderTT">Flow Chart In The Venue<span>(Functional Area and Flow Chart)</span></h4>
125 <img src="@/assets/zhinan/3.png"/>
126 <div>Sports teams enter the venue through security check at the main gate on the first floor, take escalators to the second floor, and arrive the competition area. Technical officers take vehicles arranged by the organizing committee directly from the northern ramp of the venue to the entrance of Venue B5 on the second floor platform and enter the venue.</div>
127 <div>The second floor is divided into five areas according to different functions. All personnel may arrive at different areas according to their access permissions. Red is the VIP area, blue is the office area, yellow is the spectator area, purple is the competition area and pink is the public area.</div>
128 </div>
103 129
130 <div class="content" v-if="activeName==1">
131 <div>The Registration Center is located in the hotel lobby from 10:00-22:00 on July 19-22, also serves as the info desk.</div>
132 <div>For information about emergency notices, catering services, and transportation services will be announced on the notice board. If you have any questions or need services, please contact the Registration Center.</div>
133 </div>
134 <div class="content" v-if="activeName==2">
135 <h4>1 Use and Storage of Licenses</h4>
136 <p>Licenses shall be properly kept and shall not be intentionally damaged. Licenses shall be used only by the holders, which shall not be transferred to others, used for unauthorized purposes, or altered.</p>
137 <p>For access to relevant activity and competition venue, license holders shall wear licenses in a conspicuous position against the chest.</p>
138 <p>License holders shall be subject to the inspection and management of on-site security personnel.</p>
139 <h4>2 Temporary Access Pass Application</h4>
140 <p>
141 If you lose your license and urgently need to enter the venue, you can apply to the competition department and go to the venue operation center to get a temporary access pass.
142 </p>
143 <h4>3 Type of License and Access Permissions</h4>
144 <p>The following colors and numbers will be used to indicate the different areas:</p>
145 <img src="@/assets/zhinan/5.jpg"/>
146 </div>
147 <div class="content" v-if="activeName==3">
148 <el-empty description="no data"></el-empty>
149 </div>
150 <div class="content" v-if="activeName==4">
151 <h4>1.Arrivals and Departures</h4>
152 <p>All technical officials and sports teams will be picked up by the organizing committee,
153 and the arrival stations should be Wuxi Sunan Shuofang International Airport, Shanghai Pudong International Airport, and Shanghai Hongqiao International Airport.</p>
154 <p>(1) Registration of Technical Officials and Sports Teams</p>
155 <p>Registration Time: July 19-22, 10: 00-22: 00</p>
156 <p>Registration (hotel) Location: HUALUXE Wuxi Taihu Hotel</p>
157 <p>(2) Registration Materials</p>
158 <p>Technical delegates, technical officials and relevant personnel shall provide round-trip traffic invoices for reimbursement.
159 All technical officials are required to provide the Organizing Committee with the following materials:</p>
160 <p>1. Paper boarding card (round-trip ticket)</p>
161 <p>2. Itinerary of the round-trip ticket (with the amount) or receipt of payment (with the amount)</p>
162 <p>3. Receipt for visa application (with amount)</p>
163 <h4>2.Catering Service</h4>
164
165 <img src="@/assets/zhinan/12.png"/>
166 <h5>Notes: Time subject to changes, once adjusted, it will be announced on the notice board of the Registration Center.</h5>
167 <img src="@/assets/zhinan/13.png"/>
168
169 <h4>3.Transportation Service</h4>
170 <p>
171 Vehicles shuttle the technical officers and sports teams between the hotel and the competition venue as per the Departure Timetable. For details of the Departure Timetable,
172 please refer to the notice board of the Registration Center.
173 </p>
174 <p>Pick-up and drop-off vehicles: mainly used for participants to make registration and departure.
175 </p>
176 <h4 style="text-indent: 2em">Tips:</h4>
177 <p>1. Read the Departure Timetable carefully and schedule your travel in advance.</p>
178 <p>2. Always sit securely to ensure your safety during the travel.</p>
179 <p>3. Each head of team and coach shall count the number of people at each travel to ensure nobody is left.</p>
180 <p>4. When getting off the vehicles, make sure to bring all belongings with you.</p>
181 <p>5. If you miss the vehicle or need to make an unplanned travel, please contact the info desk in time.</p>
182 </div>
183 <div class="content" v-if="activeName==5">
184 <h4>1. Service Time</h4>
185 <p>July 20-23, 2023</p>
186 <h4>2. Medical Stations</h4>
187 <p>The venue has one medical room, one medical station in the competition area, and two ambulances.</p>
188 <h4>3. On-site Medical Service</h4>
189 <p>Venue B4 has one medical room and equipped with one surgeon, one nurse, and one English-speaking volunteer.</p>
190 <p>
191 Venue B6 has one medical station in the competition area, equipped with one orthopedic surgeon, one emergency doctor,
192 one nurse, two first aiders, one English-speaking volunteer, and one staff. Both medical stations are fully equipped with medicines needed for on-site medical emergencies.</p>
193 <p>One ambulance and one emergency transfer vehicle are waiting at the entrance of G14, and all of them are equipped with first aid equipment such as defibrilla- tors and oxygen cylinders.</p>
194 </div>
195 <div class="content" v-if="activeName==6"><el-empty description="no data"></el-empty></div>
196 <div class="content" v-if="activeName==7"><el-empty description="no data"></el-empty></div>
197 <div class="content" v-if="activeName==8">
198 <label>Download:</label>
199 <a target="_blank" class="text-primary" >
200 <el-icon style="position: relative;top: 2px"><download/></el-icon>
201 WDSF ASIAN DANCESPORT FESTIVAL ENTRY GUIDE 0714
202 </a>
203 </div>
204 </div>
205 </div>
104 </div> 206 </div>
105 </div> 207 </div>
106 </template> 208 </template>
...@@ -108,6 +210,8 @@ ...@@ -108,6 +210,8 @@
108 import { onMounted, ref } from 'vue' 210 import { onMounted, ref } from 'vue'
109 import { getNewsListById, getRuleKind } from '@/apiPc/webSite' 211 import { getNewsListById, getRuleKind } from '@/apiPc/webSite'
110 import { useRouter } from 'vue-router' 212 import { useRouter } from 'vue-router'
213 import {useStorage} from "@vueuse/core";
214 const language = useStorage('language', 0)
111 const router = useRouter() 215 const router = useRouter()
112 const activeName = ref(0) 216 const activeName = ref(0)
113 const showVipFee = ref(false) 217 const showVipFee = ref(false)
...@@ -122,6 +226,17 @@ const list = ref([ ...@@ -122,6 +226,17 @@ const list = ref([
122 {name:'VISA 签证 '}, 226 {name:'VISA 签证 '},
123 {name:'指南手册下载'} 227 {name:'指南手册下载'}
124 ]) 228 ])
229 const list_en = ref([
230 {name:'Introduction of the Competition Venue'},
231 {name:' Registration Center '},
232 {name:'License Management '},
233 {name:'Map Guidance '},
234 {name:'Service for Technical Officers and Sports Teams '},
235 {name:'Medical Services '},
236 {name:'Surrounding Traffic Map '},
237 {name:'VISA '},
238 {name:'The Manual'}
239 ])
125 const newsList = ref([]) 240 const newsList = ref([])
126 const nowTab = ref({ 241 const nowTab = ref({
127 tag: '' 242 tag: ''
...@@ -138,13 +253,22 @@ const getKindList = () => { ...@@ -138,13 +253,22 @@ const getKindList = () => {
138 changeTab(0) 253 changeTab(0)
139 } 254 }
140 const changeTab = (n) => { 255 const changeTab = (n) => {
256 if(language.value==0){
141 nowTab.value = list.value[n] 257 nowTab.value = list.value[n]
258 } else {
259 nowTab.value = list_en.value[n]
260 }
142 if (nowTab.value.tag == 'fee') { 261 if (nowTab.value.tag == 'fee') {
143 showVipFee.value = true 262 showVipFee.value = true
144 } else { 263 } else {
145 showVipFee.value = false 264 showVipFee.value = false
265 if(language.value==0){
146 query.value.sortId = list.value[n].sortId 266 query.value.sortId = list.value[n].sortId
147 query.value.code = list.value[n].code 267 query.value.code = list.value[n].code
268 } else {
269 query.value.sortId = list_en.value[n].sortId
270 query.value.code = list_en.value[n].code
271 }
148 getList() 272 getList()
149 } 273 }
150 } 274 }
......
1 <template>
2 <div>
3 <index-Ch v-if="language ==0"/>
4 <index-En v-else/>
5 </div>
6
7 </template>
8
9 <script setup>
10 import IndexCh from '/src/viewsPc/index'
11 import IndexEn from '/src/viewsPc/index_en'
12 import {useStorage} from "@vueuse/core/index";
13
14 const language = useStorage('language', 0)
15 </script>
16
17 <style scoped lang="scss">
18
19 </style>
...@@ -417,7 +417,6 @@ import {getHomePage, getNewsListById, getNewsList, getWeather} from '@/apiPc/web ...@@ -417,7 +417,6 @@ import {getHomePage, getNewsListById, getNewsList, getWeather} from '@/apiPc/web
417 import {useRouter} from 'vue-router' 417 import {useRouter} from 'vue-router'
418 import {rankList} from '@/assets/js/data' 418 import {rankList} from '@/assets/js/data'
419 import _ from 'lodash' 419 import _ from 'lodash'
420 import {getHotActivity} from '@/apiPc/common'
421 import {Swiper, SwiperSlide} from 'swiper/vue' 420 import {Swiper, SwiperSlide} from 'swiper/vue'
422 import {Autoplay, Navigation} from 'swiper' 421 import {Autoplay, Navigation} from 'swiper'
423 import 'swiper/css' 422 import 'swiper/css'
......
...@@ -375,7 +375,6 @@ ...@@ -375,7 +375,6 @@
375 style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px; 375 style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px;
376 --el-dialog-bg-color:transparent;overflow: hidden;"> 376 --el-dialog-bg-color:transparent;overflow: hidden;">
377 <div class="bg-lineg pd20"> 377 <div class="bg-lineg pd20">
378 <!-- <iframe width="500" scrolling="no" height="270" frameborder="0" allowtransparency="true" src="https://i.tianqi.com?c=code&id=95&color=%23FFFFFF&icon=4&py=binhuqu&site=15"></iframe>-->
379 <div class="weatherbox"> 378 <div class="weatherbox">
380 <div class="today"> 379 <div class="today">
381 <div> 380 <div>
......
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
84 <div class="rItem r1" @click="goRegister(1)"> 84 <div class="rItem r1" @click="goRegister(1)">
85 <h3>{{ language == 0 ? '机构用户' : 'Organization' }}</h3> 85 <h3>{{ language == 0 ? '机构用户' : 'Organization' }}</h3>
86 </div> 86 </div>
87 <div class="rItem r2" @click="goRegister(0)" :style="language==0?'filter:grayscale(1)':''"> 87 <div class="rItem r2" @click="goRegister(0)">
88 <h3>{{ language == 0 ? '个人用户' : 'Individual' }}</h3> 88 <h3>{{ language == 0 ? '个人用户' : 'Individual' }}</h3>
89 </div> 89 </div>
90 </div> 90 </div>
...@@ -306,10 +306,6 @@ function showRegister() { ...@@ -306,10 +306,6 @@ function showRegister() {
306 306
307 function goRegister(n) { 307 function goRegister(n) {
308 if (n == 0) { 308 if (n == 0) {
309 if (language.value == 0) {
310 // ElMessage.warning('暂不开放国内注册!')
311 return
312 }
313 show.value = false 309 show.value = false
314 router.push({ 310 router.push({
315 path: `/register/0` 311 path: `/register/0`
......
...@@ -8,7 +8,10 @@ ...@@ -8,7 +8,10 @@
8 </el-card> 8 </el-card>
9 9
10 <el-card class="mt20"> 10 <el-card class="mt20">
11 <h3 class="text-center text-danger">如果没有随行人员,点击【下一步】跳过此步骤</h3> 11 <h3 class="text-center text-danger" v-if="language==0">如果没有随行人员,点击【下一步】跳过此步骤</h3>
12 <h3 class="text-center text-danger" v-else>
13 Do you want to add casual personnel?
14 </h3>
12 </el-card> 15 </el-card>
13 16
14 <el-row class="mt20" :gutter="20"> 17 <el-row class="mt20" :gutter="20">
...@@ -211,14 +214,15 @@ const data = reactive({ ...@@ -211,14 +214,15 @@ const data = reactive({
211 hasChooseObj: {}, 214 hasChooseObj: {},
212 groupId: '0', 215 groupId: '0',
213 signType: '', 216 signType: '',
214 activeStep: 1 217 activeStep: 1,
218 isNational:false
215 }) 219 })
216 const {loading, 220 const {loading,
217 form,personAllList, 221 form,personAllList,
218 rules, 222 rules,
219 signType, 223 signType,
220 groupId, 224 groupId,
221 hasChooseObj,activeStep 225 hasChooseObj,activeStep,isNational
222 } = toRefs(data) 226 } = toRefs(data)
223 let matchId = '' 227 let matchId = ''
224 const user = useUserStore().user 228 const user = useUserStore().user
...@@ -227,6 +231,7 @@ onMounted(() => { ...@@ -227,6 +231,7 @@ onMounted(() => {
227 matchId = route.query.matchId 231 matchId = route.query.matchId
228 groupId.value = group.id 232 groupId.value = group.id
229 signType.value = route.query.signType || '' 233 signType.value = route.query.signType || ''
234 isNational.value = route.query.isNational
230 if(!user){ 235 if(!user){
231 router.push({name: 'home'}) 236 router.push({name: 'home'})
232 return 237 return
...@@ -301,11 +306,6 @@ function geren() { ...@@ -301,11 +306,6 @@ function geren() {
301 }) 306 })
302 } 307 }
303 308
304 function chooseDone() {
305 // 返回团队报名
306 router.go(-1)
307 }
308
309 function goNext() { 309 function goNext() {
310 console.log(form.value) 310 console.log(form.value)
311 // if ((form.value.coachs.length < 1) && (form.value.leader.length < 1)) { 311 // if ((form.value.coachs.length < 1) && (form.value.leader.length < 1)) {
...@@ -334,7 +334,8 @@ function goNext() { ...@@ -334,7 +334,8 @@ function goNext() {
334 router.push({ 334 router.push({
335 name: 'chooseProject', 335 name: 'chooseProject',
336 query: { 336 query: {
337 matchId: matchId 337 matchId: matchId,
338 isNational:isNational.value
338 } 339 }
339 }) 340 })
340 }) 341 })
...@@ -347,7 +348,8 @@ function goNext() { ...@@ -347,7 +348,8 @@ function goNext() {
347 query: { 348 query: {
348 matchId: matchId, 349 matchId: matchId,
349 groupId: groupId.value, 350 groupId: groupId.value,
350 signType: signType.value 351 signType: signType.value,
352 isNational:isNational.value
351 } 353 }
352 }) 354 })
353 }) 355 })
...@@ -361,7 +363,8 @@ function goPrev() { ...@@ -361,7 +363,8 @@ function goPrev() {
361 name: `teamSign`, 363 name: `teamSign`,
362 query: { 364 query: {
363 matchId: matchId, 365 matchId: matchId,
364 groupId: groupId.value 366 groupId: groupId.value,
367 isNational:isNational.value
365 } 368 }
366 }) 369 })
367 } 370 }
...@@ -430,7 +433,7 @@ function addCoach(n) { ...@@ -430,7 +433,7 @@ function addCoach(n) {
430 .chooseForm{ 433 .chooseForm{
431 :deep(.el-form-item__content){background: rgba(245, 247, 249, 0.38); 434 :deep(.el-form-item__content){background: rgba(245, 247, 249, 0.38);
432 padding: 20px 40px 10px;} 435 padding: 20px 40px 10px;}
433 .el-checkbox{height: auto;} 436 .el-checkbox{height: auto;text-align: center;}
434 :deep(.el-checkbox__input){position: absolute;right: 0;top: 0;} 437 :deep(.el-checkbox__input){position: absolute;right: 0;top: 0;}
435 .name{text-align: center;} 438 .name{text-align: center;}
436 } 439 }
......
...@@ -13,7 +13,9 @@ ...@@ -13,7 +13,9 @@
13 <h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3> 13 <h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3>
14 <h3 class="panel-title" v-else>Select list of participating athletes</h3> 14 <h3 class="panel-title" v-else>Select list of participating athletes</h3>
15 <!-- <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>--> 15 <!-- <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>-->
16 <el-button type="primary" plain class="fr" @click="chooseSportman">{{ language == 0 ? '选手管理' : 'Player Management' }}</el-button> 16 <el-button type="primary" plain class="fr" @click="chooseSportman">
17 {{ language == 0 ? '选手管理' : 'Player Management' }}
18 </el-button>
17 </div> 19 </div>
18 <div class="panel-body" style="padding: 10px"> 20 <div class="panel-body" style="padding: 10px">
19 <div style="margin: 0 4px 10px;display: flex"> 21 <div style="margin: 0 4px 10px;display: flex">
...@@ -24,18 +26,17 @@ ...@@ -24,18 +26,17 @@
24 {{ c.xing }}{{ c.ming }} 26 {{ c.xing }}{{ c.ming }}
25 <img v-if="c.sex=='0'" src="@/assets/img/female.png"/> 27 <img v-if="c.sex=='0'" src="@/assets/img/female.png"/>
26 <img v-if="c.sex=='1'" src="@/assets/img/male.png"/> 28 <img v-if="c.sex=='1'" src="@/assets/img/male.png"/>
27 <!-- ({{ c.sexStr }})--> 29 <!-- -{{ c.age }}-->
28 -{{ c.age }}
29 </div> 30 </div>
30 </el-option> 31 </el-option>
31 <!-- <template #tag>--> 32 <!-- <template #tag>-->
32 <!-- <el-tag v-for="v in choosed2List" :key="v.value" type="primary">--> 33 <!-- <el-tag v-for="v in choosed2List" :key="v.value" type="primary">-->
33 <!-- {{ v.xing + v.ming }}--> 34 <!-- {{ v.xing + v.ming }}-->
34 <!-- </el-tag>--> 35 <!-- </el-tag>-->
35 <!-- </template>--> 36 <!-- </template>-->
36 </el-select> 37 </el-select>
37 <el-button type="primary" @click="emptychoosedchoosed"> 38 <el-button type="primary" @click="emptychoosedchoosed">
38 {{language == 0 ? '重选' : 'Re-select' }} 39 {{ language == 0 ? '重选' : 'Re-select' }}
39 </el-button> 40 </el-button>
40 </div> 41 </div>
41 <!-- <div class="noPicChooseForm" id="chooseArr">--> 42 <!-- <div class="noPicChooseForm" id="chooseArr">-->
...@@ -131,7 +132,7 @@ ...@@ -131,7 +132,7 @@
131 </div> 132 </div>
132 133
133 <dialogAddCoach ref="dialogAddCoachRef"/> 134 <dialogAddCoach ref="dialogAddCoachRef"/>
134 <!-- <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @transfer="getChoosed" @submitForm="getSignInfoList"/>--> 135 <!-- <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @transfer="getChoosed" @submitForm="getSignInfoList"/>-->
135 <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @submitForm="getAthletesList"/> 136 <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @submitForm="getAthletesList"/>
136 <dialogImport ref="dialogImportProps" @submitForm="getMySignInfo"/> 137 <dialogImport ref="dialogImportProps" @submitForm="getMySignInfo"/>
137 <el-dialog v-model="showResult" :close-on-click-modal="false" :show-close="false"> 138 <el-dialog v-model="showResult" :close-on-click-modal="false" :show-close="false">
...@@ -213,7 +214,8 @@ const data = reactive({ ...@@ -213,7 +214,8 @@ const data = reactive({
213 choosed2Listbak: [], 214 choosed2Listbak: [],
214 projectQuery: {}, tableType: 1, 215 projectQuery: {}, tableType: 1,
215 currProjectId: '', 216 currProjectId: '',
216 openTour: false 217 openTour: false,
218 isNational: false
217 }) 219 })
218 const { 220 const {
219 activeTeam, 221 activeTeam,
...@@ -241,7 +243,7 @@ const { ...@@ -241,7 +243,7 @@ const {
241 tableType, 243 tableType,
242 zuQuery, 244 zuQuery,
243 openTour, currProjectId, 245 openTour, currProjectId,
244 tourCurrent 246 tourCurrent, isNational
245 } = toRefs(data) 247 } = toRefs(data)
246 const nextButtonProps = ref({}) 248 const nextButtonProps = ref({})
247 const matchId = ref(route.query.matchId) 249 const matchId = ref(route.query.matchId)
...@@ -272,6 +274,11 @@ function getMatch(id) { ...@@ -272,6 +274,11 @@ function getMatch(id) {
272 noPhotoCanSign.value = res.data.noPhotoCanSign 274 noPhotoCanSign.value = res.data.noPhotoCanSign
273 coachOrLeaderFlag.value = res.data.coachOrLeaderFlag 275 coachOrLeaderFlag.value = res.data.coachOrLeaderFlag
274 extraform.value = JSON.parse(res.data.participantsInfo) 276 extraform.value = JSON.parse(res.data.participantsInfo)
277 if (res.data.languageSource == '100') {
278 isNational.value = false
279 } else {
280 isNational.value = true
281 }
275 }) 282 })
276 } 283 }
277 284
...@@ -363,7 +370,8 @@ function chooseSportman() { ...@@ -363,7 +370,8 @@ function chooseSportman() {
363 signType: signType.value, 370 signType: signType.value,
364 noPhotoCanSign: noPhotoCanSign.value, 371 noPhotoCanSign: noPhotoCanSign.value,
365 coachOrLeaderFlag: coachOrLeaderFlag.value, 372 coachOrLeaderFlag: coachOrLeaderFlag.value,
366 choosedList: choosedList.value 373 choosedList: choosedList.value,
374 isNational: isNational.value
367 } 375 }
368 proxy.$refs['dialogAllSportsmanListRef'].open(params) 376 proxy.$refs['dialogAllSportsmanListRef'].open(params)
369 } 377 }
...@@ -556,15 +564,15 @@ function changeProject(e) { ...@@ -556,15 +564,15 @@ function changeProject(e) {
556 }) 564 })
557 //循环choosed2List 检查是否存在WDSF号 565 //循环choosed2List 检查是否存在WDSF号
558 let n = 0 566 let n = 0
559 for(var cc of choosed2List.value){ 567 for (var cc of choosed2List.value) {
560 if(!cc.wdsfMin){ 568 if (!cc.wdsfMin) {
561 n++ 569 n++
562 } 570 }
563 } 571 }
564 //obj需要wdsf 且 currProjectId非空 572 //obj需要wdsf 且 currProjectId非空
565 if (obj.checkMemberFlag == '1'&&currProjectId.value != ''&& n>0) { 573 if (obj.checkMemberFlag == '1' && currProjectId.value != '' && n > 0) {
566 const params = { 574 const params = {
567 title: language.value == 0 ? '验证WDSF' :'Verify WDSF', 575 title: language.value == 0 ? '验证WDSF' : 'Verify WDSF',
568 groupId: groupId.value, 576 groupId: groupId.value,
569 matchId: matchId.value, 577 matchId: matchId.value,
570 list: choosed2List.value 578 list: choosed2List.value
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
4 :close-on-click-modal="false" class="pcloginpop" 4 :close-on-click-modal="false" class="pcloginpop"
5 destroy-on-close 5 destroy-on-close
6 > 6 >
7 <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline> 7 <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="150px" inline>
8 <el-row :gutter="30" class="mt30"> 8 <el-row :gutter="30" class="mt30">
9 <el-col :lg="12" class="touxiang"> 9 <el-col :lg="12" class="touxiang">
10 10
...@@ -37,10 +37,10 @@ ...@@ -37,10 +37,10 @@
37 <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> 37 <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required>
38 <el-input v-model="form.idcCode" @blur="checkCode" :disabled="editgay"/> 38 <el-input v-model="form.idcCode" @blur="checkCode" :disabled="editgay"/>
39 </el-form-item> 39 </el-form-item>
40 <el-form-item label="上传证件照" required :required="form.idcType!='0'"> 40 <el-form-item :label="language==0?'有效证件':'Valid Certificates Scanning Copy'" required :required="form.idcType!='0'">
41 <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" /> 41 <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" />
42 </el-form-item> 42 </el-form-item>
43 <el-form-item :label="language==0?'性别':'sex'" prop="sex"> 43 <el-form-item :label="language==0?'性别':'Gender'" prop="sex">
44 <el-radio-group v-model="form.sex" :disabled="form.idcType=='0'"> 44 <el-radio-group v-model="form.sex" :disabled="form.idcType=='0'">
45 <el-radio value="0">{{ language==0?'女':'female' }}</el-radio> 45 <el-radio value="0">{{ language==0?'女':'female' }}</el-radio>
46 <el-radio value="1">{{ language==0?'男':'male' }}</el-radio> 46 <el-radio value="1">{{ language==0?'男':'male' }}</el-radio>
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
4 :close-on-click-modal="false" class="pcloginpop" 4 :close-on-click-modal="false" class="pcloginpop"
5 destroy-on-close 5 destroy-on-close
6 > 6 >
7 <!-- 国际赛事-->
7 <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline> 8 <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline>
8 <el-row :gutter="30" class="mt30"> 9 <el-row :gutter="30" class="mt30">
9 <el-col :lg="12" class="touxiang"> 10 <el-col :lg="12" class="touxiang">
...@@ -460,5 +461,10 @@ function cancel() { ...@@ -460,5 +461,10 @@ function cancel() {
460 } 461 }
461 } 462 }
462 } 463 }
463 464 .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover {
465 color: var(--el-color-primary);
466 background: #efefff;
467 border: var(--el-color-primary) solid 1px;
468 border-radius: 0;
469 }
464 </style> 470 </style>
......
...@@ -4,14 +4,14 @@ ...@@ -4,14 +4,14 @@
4 :close-on-click-modal="false" class="pcloginpop" @close="cancel" 4 :close-on-click-modal="false" class="pcloginpop" @close="cancel"
5 destroy-on-close 5 destroy-on-close
6 > 6 >
7 <!-- wdsf 个人/舞伴--> 7 <!-- wdsf 个人/舞伴/国际赛运动员-->
8 <div class="pd10"></div> 8 <div class="pd10"></div>
9 <el-form ref="dialogRef" :model="form" :label-width="language==0?120:180" inline> 9 <el-form ref="dialogRef" :model="form" :label-width="language==0?120:180" inline>
10 <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" v-if="form.id"> 10 <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" v-if="form.id&&form.id!='0'">
11 {{ form.wdsfMin }} 11 {{ form.wdsfMin }}
12 </el-form-item> 12 </el-form-item>
13 <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" required v-else> 13 <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" required v-else>
14 <el-input type="text" v-model="card" @change="resetCode" > 14 <el-input type="text" v-model="card" @change="resetCode">
15 <template #append> 15 <template #append>
16 <el-button type="primary" plain style="width: 110px" @click="checkCard"> 16 <el-button type="primary" plain style="width: 110px" @click="checkCard">
17 <el-icon v-if="isCodeTrue" size="16" color="#67C23A"> 17 <el-icon v-if="isCodeTrue" size="16" color="#67C23A">
...@@ -29,22 +29,22 @@ ...@@ -29,22 +29,22 @@
29 <span v-else>(Obtain automatically according to the WDSF number)</span> 29 <span v-else>(Obtain automatically according to the WDSF number)</span>
30 </div> 30 </div>
31 <div class="h20"></div> 31 <div class="h20"></div>
32 <el-form-item :label="language==0?'名':'name'"> 32 <el-form-item :label="language==0?'名':'Name'">
33 <el-input v-model="form.ming" disabled/> 33 <el-input v-model="form.ming" disabled/>
34 </el-form-item> 34 </el-form-item>
35 <el-form-item :label="language==0?'姓氏':'surname'"> 35 <el-form-item :label="language==0?'姓氏':'Surname'">
36 <el-input v-model="form.xing" disabled/> 36 <el-input v-model="form.xing" disabled/>
37 </el-form-item> 37 </el-form-item>
38 <el-form-item label="Representing"> 38 <el-form-item :label="language==0?'代表':'Representing'">
39 <el-input v-model="form.representing" disabled/> 39 <el-input v-model="form.representing" disabled/>
40 </el-form-item> 40 </el-form-item>
41 <el-form-item label="Age group"> 41 <el-form-item :label="language==1?'Age group':'年龄组'">
42 <el-input v-model="form.ageGroup" disabled/> 42 <el-input v-model="form.ageGroup" disabled/>
43 </el-form-item> 43 </el-form-item>
44 <el-form-item label="Division"> 44 <el-form-item :label="language==0?'舞种':'Division'">
45 <el-input v-model="form.division" disabled/> 45 <el-input v-model="form.division" disabled/>
46 </el-form-item> 46 </el-form-item>
47 <el-form-item label="Status"> 47 <el-form-item :label="language==0?'状态':'Status'">
48 <el-input v-model="form.wdsfStatus" disabled/> 48 <el-input v-model="form.wdsfStatus" disabled/>
49 </el-form-item> 49 </el-form-item>
50 <div class="h30"></div> 50 <div class="h30"></div>
...@@ -52,36 +52,44 @@ ...@@ -52,36 +52,44 @@
52 {{ language == 0 ? '补充信息' : 'Supplementary Information' }} 52 {{ language == 0 ? '补充信息' : 'Supplementary Information' }}
53 </div> 53 </div>
54 <div class="h20"></div> 54 <div class="h20"></div>
55 <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'" required> 55 <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'">
56 <ImageUpload2 56 <ImageUpload2
57 v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" 57 v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1"
58 :is-show-tip="false" 58 :is-show-tip="false"
59 /> 59 />
60 </el-form-item> 60 </el-form-item>
61 <el-form-item :label="language==0?'性别':'Sex'" required> 61 <el-form-item :label="language==0?'性别':'Gender'" required>
62 <el-radio-group v-model="form.sex"> 62 <el-radio-group v-model="form.sex">
63 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> 63 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
64 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> 64 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
65 </el-radio-group> 65 </el-radio-group>
66 </el-form-item> 66 </el-form-item>
67 67
68 <el-form-item :label="language==0?'出生日期':'Birthday'" required> 68 <el-form-item :label="language==0?'出生日期':'Birthday'">
69 <el-date-picker 69 <el-date-picker
70 v-model="form.birth" 70 v-model="form.birth"
71 style="width: 100%;" 71 style="width: 100%;"
72 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 72 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
73 /> 73 />
74 </el-form-item> 74 </el-form-item>
75 <el-form-item label="Passport number" required> 75 <el-form-item :label="language==0?'有效证件':'Valid Certificates Scanning Copy'" required>
76 <el-input v-model="form.passportNumber"/> 76 <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false"
77 :button-text="language==0?'上传':'Upload'"/>
78 <div class="tip">
79 <span v-if="language==0">请上传护照副本,用于认证 </span>
80 <span v-else>Please upload a passport copy for authentication</span>
81 </div>
82
77 </el-form-item> 83 </el-form-item>
78 <el-form-item label="Passport File" required> 84 <el-form-item :label="language==0?'证件号':'Passport number'">
79 <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/> 85 <el-input v-model="form.passportNumber"/>
80 </el-form-item> 86 </el-form-item>
87
81 </el-form> 88 </el-form>
82 <template #footer> 89 <template #footer>
83 <div class="dialog-footer text-center"> 90 <div class="dialog-footer text-center">
84 <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ 91 <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">
92 {{
85 language == 0 ? '确定' : 'Save' 93 language == 0 ? '确定' : 'Save'
86 }} 94 }}
87 </el-button> 95 </el-button>
...@@ -99,7 +107,8 @@ import _ from 'lodash' ...@@ -99,7 +107,8 @@ import _ from 'lodash'
99 import Vcode from "vue3-puzzle-vcode" 107 import Vcode from "vue3-puzzle-vcode"
100 import {checkWdsf} from "@/apiPc/match"; 108 import {checkWdsf} from "@/apiPc/match";
101 import {useStorage} from "@vueuse/core/index"; 109 import {useStorage} from "@vueuse/core/index";
102 const language= useStorage('language',0) 110
111 const language = useStorage('language', 0)
103 const certificates = ref([ 112 const certificates = ref([
104 { 113 {
105 value: '0', 114 value: '0',
...@@ -119,9 +128,9 @@ const emit = defineEmits(['submitForm']) ...@@ -119,9 +128,9 @@ const emit = defineEmits(['submitForm'])
119 const data = reactive({ 128 const data = reactive({
120 form: { 129 form: {
121 // countryId: 240 130 // countryId: 240
122 sex:'0' 131 sex: '0'
123 }, 132 },
124 card:'', 133 card: '',
125 show: false, 134 show: false,
126 showVcode: false, 135 showVcode: false,
127 labels: [ 136 labels: [
...@@ -136,47 +145,57 @@ const data = reactive({ ...@@ -136,47 +145,57 @@ const data = reactive({
136 title: '添加选手信息', 145 title: '添加选手信息',
137 isMe: false, 146 isMe: false,
138 isCodeTrue: false, 147 isCodeTrue: false,
139 cptId:'' 148 cptId: ''
140 }) 149 })
141 const {form, show,showVcode, title, labels, uType, isMe,isCodeTrue,card,cptId} = toRefs(data) 150 const {form, show, showVcode, title, labels, uType, isMe, isCodeTrue, card, cptId} = toRefs(data)
142 151
143 let editgay = false 152 let editgay = false
153 let groupId = '0'
144 const open = (params) => { 154 const open = (params) => {
145 console.log(params) 155 console.log(params)
146 show.value = true 156 show.value = true
147 title.value = params.title 157 title.value = params.title
148 isMe.value = params.isMe 158 isMe.value = params.isMe || false
149 cptId.value = params.cptId 159 cptId.value = params.cptId
160 groupId = params.groupId
161 form.value.id = params.id
150 if (language.value == 0) { 162 if (language.value == 0) {
151 form.value.countryId = 240 163 form.value.countryId = 240
152 } 164 }
153 if (isMe.value) { 165 if (isMe.value) {
154 //个人 166 //个人
155 match.getMyPersonInfo().then(res => { 167 getMyInfo()
156 form.value = res.data
157 form.value.id = res.data.id
158 if (form.value.label) {
159 // {0:0,1:1,2:3}
160 form.value.labelArr = form.value.label.split(',')
161 } else {
162 form.value.labelArr = ['0']
163 }
164 })
165 } else { 168 } else {
166 if (params.id == 0) { 169 if (params.id == 0) {
167 //新增 170 //新增
168 editgay = false 171 editgay = false
169 } else {// 编辑舞伴 172 } else {// 编辑舞伴
170 editgay = true 173 editgay = true
174 if(params.form){
171 form.value = params.form 175 form.value = params.form
176 }else {
177 getFormById(params.id)
178 }
172 } 179 }
173 } 180 }
174 } 181 }
175 defineExpose({open}) 182 defineExpose({open})
183 function getMyInfo() {
184 match.getMyPersonInfo().then(res => {
185 form.value = res.data
186 })
187 }
188 function getFormById(id) {
189 match.getPersonInfoById(id).then(res => {
190 form.value = res.data
191 })
192 }
176 watch(show, (value) => { 193 watch(show, (value) => {
177 if (!value) { 194 if (!value) {
195 card.value = ''
196 isCodeTrue.value = false
178 form.value = { 197 form.value = {
179 sex:'0' 198 sex: '0'
180 } 199 }
181 } 200 }
182 nextTick(() => { 201 nextTick(() => {
...@@ -185,26 +204,23 @@ watch(show, (value) => { ...@@ -185,26 +204,23 @@ watch(show, (value) => {
185 }) 204 })
186 205
187 function submitForm() { 206 function submitForm() {
188 if (!form.value.passportNumber) { 207 // if (!form.value.passportNumber) {
189 ElMessage.warning('Please fill in your passport number') 208 // ElMessage.warning('Please fill in your passport number')
190 return 209 // return
191 } 210 // }
192 if (!form.value.picUrl) { 211 // if (!form.value.picUrl) {
193 ElMessage.warning('Please upload your photo') 212 // ElMessage.warning('Please upload your photo')
194 return 213 // return
195 } 214 // }
196 if (!form.value.passportUrl) { 215 if (!form.value.passportUrl) {
197 ElMessage.warning('Please upload your passport file') 216 ElMessage.warning('Please upload your passport file')
198 return 217 return
199 } 218 }
200 if (editgay) { 219 if (editgay) {
201 // id不是0 220 // id不是0
202
203 form.value.cptId = cptId.value 221 form.value.cptId = cptId.value
204 if(Array.isArray(form.value.passportUrl)){ 222 if (Array.isArray(form.value.passportUrl)) {
205 form.value.passportUrl = form.value.passportUrl[0].url 223 form.value.passportUrl = form.value.passportUrl[0].url
206 } else {
207 form.value.passportUrl = form.value.passportUrl
208 } 224 }
209 match.editPersonInfo(form.value).then(res => { 225 match.editPersonInfo(form.value).then(res => {
210 ElMessage.success('保存成功') 226 ElMessage.success('保存成功')
...@@ -212,11 +228,11 @@ function submitForm() { ...@@ -212,11 +228,11 @@ function submitForm() {
212 emit('submitForm') 228 emit('submitForm')
213 }) 229 })
214 } else { 230 } else {
215 if (!form.value.birth) { 231 // if (!form.value.birth) {
216 ElMessage.warning('Please fill in your birthday') 232 // ElMessage.warning('Please fill in your birthday')
217 return 233 // return
218 } 234 // }
219 if(Array.isArray(form.value.passportUrl)){ 235 if (Array.isArray(form.value.passportUrl)) {
220 form.value.passportUrl = form.value.passportUrl[0].url 236 form.value.passportUrl = form.value.passportUrl[0].url
221 } 237 }
222 if (isMe.value) { 238 if (isMe.value) {
...@@ -233,16 +249,24 @@ function submitForm() { ...@@ -233,16 +249,24 @@ function submitForm() {
233 form.value.wdsfMin = form.value.min 249 form.value.wdsfMin = form.value.min
234 form.value.idcCode = form.value.passportNumber 250 form.value.idcCode = form.value.passportNumber
235 form.value.idcType = '1' 251 form.value.idcType = '1'
236 if(Array.isArray(form.value.passportUrl)){ 252 if (Array.isArray(form.value.passportUrl)) {
237 form.value.passportUrl = form.value.passportUrl[0].url 253 form.value.passportUrl = form.value.passportUrl[0].url
238 } else {
239 form.value.passportUrl = form.value.passportUrl
240 } 254 }
255 if(groupId=='0'){
241 match.savePersonForMyPerson(form.value).then(res => { 256 match.savePersonForMyPerson(form.value).then(res => {
242 ElMessage.success('保存成功') 257 ElMessage.success('保存成功')
243 show.value = false 258 show.value = false
244 emit('submitForm', res.data) 259 emit('submitForm', res.data)
245 }) 260 })
261 } else {
262 form.value.groupId = groupId
263 match.savePersonForMyGroup(form.value).then(res => {
264 ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
265 show.value = false
266 emit('submitForm')
267 })
268 }
269
246 } 270 }
247 } 271 }
248 } 272 }
...@@ -251,11 +275,13 @@ function cancel() { ...@@ -251,11 +275,13 @@ function cancel() {
251 show.value = false 275 show.value = false
252 showVcode.value = false 276 showVcode.value = false
253 } 277 }
278
254 function resetCode() { 279 function resetCode() {
255 isCodeTrue.value = false 280 isCodeTrue.value = false
256 } 281 }
282
257 function checkCard() { 283 function checkCard() {
258 if(isCodeTrue.value){ 284 if (isCodeTrue.value) {
259 return 285 return
260 } 286 }
261 if (!card.value) { 287 if (!card.value) {
...@@ -268,6 +294,7 @@ function checkCard() { ...@@ -268,6 +294,7 @@ function checkCard() {
268 } 294 }
269 showVcode.value = true 295 showVcode.value = true
270 } 296 }
297
271 function codeSuccess(msg) { 298 function codeSuccess(msg) {
272 console.log('验证通过' + msg); 299 console.log('验证通过' + msg);
273 showVcode.value = false 300 showVcode.value = false
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
4 <el-button type="primary" @click="addMember"> 4 <el-button type="primary" @click="addMember">
5 {{ language == 0 ? '添加选手' : 'Add Player' }} 5 {{ language == 0 ? '添加选手' : 'Add Player' }}
6 </el-button> 6 </el-button>
7 <el-button type="primary" plain @click="importSportman" v-if="language == 0"> 7 <el-button type="primary" plain @click="importSportman" v-if="isNational">
8 {{language == 0 ? '导入选手' : 'Import Player'}} 8 {{language == 0 ? '导入选手' : 'Import Player'}}
9 </el-button> 9 </el-button>
10 </div> 10 </div>
...@@ -39,13 +39,18 @@ ...@@ -39,13 +39,18 @@
39 @selection-change="handleSelectionChange"> 39 @selection-change="handleSelectionChange">
40 <!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>--> 40 <!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>-->
41 <el-table-column type="index" :label="language==0?'序号':'Index'" width="60" :selectable="selectable"/> 41 <el-table-column type="index" :label="language==0?'序号':'Index'" width="60" :selectable="selectable"/>
42 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> 42 <el-table-column v-show="isNational" :label="language==0?'WDSF 会员号':'MIN'" prop="wdsfMin" width="100"/>
43 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> 43 <el-table-column :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/>
44 <el-table-column :label="language==0?'所属国家/地区':'Country'" prop="countryName" min-width="100"/> 44 <el-table-column :label="language==0?'名':'Name'" prop="ming" min-width="100"/>
45 <el-table-column v-show="isNational" :label="language==0?'代表':'Representing'" prop="representing" min-width="120"/>
46 <el-table-column :label="language==0?'所属国家/地区':'Nationality'" prop="countryName" min-width="100"/>
45 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> 47 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
48 <el-table-column v-show="isNational" :label="language==0?'年龄组':'Age group'" prop="ageGroup" min-width="100"/>
49 <el-table-column v-show="isNational" :label="language==0?'舞种':'Division'" prop="division" min-width="100"/>
50
46 <el-table-column :label="language==0?'年龄':'Age'" prop="age"/> 51 <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>
47 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> 52 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/>
48 <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr"/> 53 <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" width="120"/>
49 <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> 54 <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/>
50 <!-- <el-table-column label="会员角色" width="200">--> 55 <!-- <el-table-column label="会员角色" width="200">-->
51 <!-- <template #default="scope">--> 56 <!-- <template #default="scope">-->
...@@ -87,8 +92,8 @@ ...@@ -87,8 +92,8 @@
87 <!-- </template>--> 92 <!-- </template>-->
88 </el-dialog> 93 </el-dialog>
89 94
90 <addCoach ref="dialogAddCoach" @submitForm="getList"/> 95 <add-coach ref="dialogAddCoach" @submitForm="getList"/>
91 <addMan_en ref="dialogSportman_En" @submitForm="getList"/> 96 <add-wdsf ref="dialogAddWdsf" @submitForm="getList"/>
92 <Import ref="dialogImportProps" @submitForm="getList"/> 97 <Import ref="dialogImportProps" @submitForm="getList"/>
93 </template> 98 </template>
94 99
...@@ -97,7 +102,7 @@ import {reactive, ref, toRefs, watch} from 'vue' ...@@ -97,7 +102,7 @@ import {reactive, ref, toRefs, watch} from 'vue'
97 import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' 102 import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core'
98 import * as match from '@/apiPc/match' 103 import * as match from '@/apiPc/match'
99 import AddCoach from '../components/addCoach' 104 import AddCoach from '../components/addCoach'
100 import AddMan_en from '../components/addSportman_en' 105 import AddWdsf from '../components/addWdsf'
101 import Import from '../components/import' 106 import Import from '../components/import'
102 import {useStorage} from "@vueuse/core/index"; 107 import {useStorage} from "@vueuse/core/index";
103 const language= useStorage('language',0) 108 const language= useStorage('language',0)
...@@ -115,9 +120,10 @@ const data = reactive({ ...@@ -115,9 +120,10 @@ const data = reactive({
115 loading: false, 120 loading: false,
116 title: '选择运动员', 121 title: '选择运动员',
117 noPhotoCanSign: 0, 122 noPhotoCanSign: 0,
118 total: 0 123 total: 0,
124 isNational:false
119 }) 125 })
120 const {query, tableData, show, title, loading, noPhotoCanSign,total} = toRefs(data) 126 const {query, tableData, show, title, loading, noPhotoCanSign,total,isNational} = toRefs(data)
121 const certificates = ref([ 127 const certificates = ref([
122 { 128 {
123 value: '0', 129 value: '0',
...@@ -142,6 +148,7 @@ const open = (params) => { ...@@ -142,6 +148,7 @@ const open = (params) => {
142 groupId = params.groupId 148 groupId = params.groupId
143 noPhotoCanSign.value = params.noPhotoCanSign 149 noPhotoCanSign.value = params.noPhotoCanSign
144 show.value = true 150 show.value = true
151 isNational.value = params.isNational
145 choosedList = params.choosedList 152 choosedList = params.choosedList
146 for (const p of choosedList) { 153 for (const p of choosedList) {
147 choosedIds.push(p.id) 154 choosedIds.push(p.id)
...@@ -192,29 +199,32 @@ function cancel() { ...@@ -192,29 +199,32 @@ function cancel() {
192 } 199 }
193 200
194 function editPerson(row) { 201 function editPerson(row) {
202 console.log(isNational.value)
195 const params = { 203 const params = {
196 id: row.id, 204 id: row.id,
197 title: language.value == 0 ?'编辑人员':'Edit Person', 205 title: language.value == 0 ?'编辑人员':'Edit Person',
198 groupId: groupId 206 groupId: groupId,
207 label: '0'
199 } 208 }
200 if (language.value == 0 ){ 209 if (isNational.value){
201 proxy.$refs['dialogAddCoach'].open(params) 210 proxy.$refs['dialogAddWdsf'].open(params)
202 } else { 211 } else {
203 proxy.$refs['dialogSportman_En'].open(params) 212 proxy.$refs['dialogAddCoach'].open(params)
204 } 213 }
205 } 214 }
206 215
207 function addMember() { 216 function addMember() {
217 console.log(isNational.value)
208 const params = { 218 const params = {
209 title: language.value == 0 ?'添加人员':'Add', 219 title: language.value == 0 ?'添加人员':'Add',
210 id: 0, 220 id: 0,
211 groupId: groupId, 221 groupId: groupId,
212 label: '0' 222 label: '0'
213 } 223 }
214 if (language.value == 0 ){ 224 if (isNational.value){
215 proxy.$refs['dialogAddCoach'].open(params) 225 proxy.$refs['dialogAddWdsf'].open(params)
216 } else { 226 } else {
217 proxy.$refs['dialogSportman_En'].open(params) 227 proxy.$refs['dialogAddCoach'].open(params)
218 } 228 }
219 } 229 }
220 230
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
29 <td> 29 <td>
30 <div>{{ p.birthPeriod }}</div> 30 <div>{{ p.birthPeriod }}</div>
31 <div>{{p.birthPeriodSecond}}</div> 31 <div>{{p.birthPeriodSecond}}</div>
32 <!-- <div>{{ p.birthAgeGroup }};{{p.birthAgeSecondGroup}}</div>-->
32 </td> 33 </td>
33 <td>{{ language==0?'¥':'€' }}{{ p.serviceFee }}</td> 34 <td>{{ language==0?'¥':'€' }}{{ p.serviceFee }}</td>
34 </tr> 35 </tr>
......
1 <template> 1 <template>
2 <!-- 人员表格--> 2 <!-- 人员表格-->
3 <el-table :data="tableData" class="mt20"> 3 <el-table :data="tableData" class="mt20">
4 <el-table-column type="index" :label="language==0?'序号':'index'" width="80" align="center"/> 4 <el-table-column type="index" :label="language==0?'序号':'Index'" width="80" align="center"/>
5 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> 5 <el-table-column :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/>
6 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> 6 <el-table-column :label="language==0?'名':'Name'" prop="ming" min-width="100"/>
7 <el-table-column :label="language==0?'所属国家/地区':'Country'" prop="countryName" min-width="100"/> 7 <el-table-column :label="language==0?'所属国家/地区':'Nationality'" prop="countryName" min-width="100"/>
8 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> 8 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
9 <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>--> 9 <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>-->
10 <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" :min-width="language==0?'80':'160'"/> 10 <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" :min-width="language==0?'80':'160'"/>
...@@ -25,10 +25,9 @@ ...@@ -25,10 +25,9 @@
25 </div> 25 </div>
26 </template> 26 </template>
27 </el-table-column> 27 </el-table-column>
28 <el-table-column :label="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin" width="110"/> 28 <el-table-column :label="language==0?'WDSF会员号':'WDSF MIN'" prop="wdsfMin" width="110"/>
29 <!-- <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/>--> 29 <!-- <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/>-->
30 <el-table-column :label="language==0?'操作':'Actions'" fixed="right" width="160" header-align="center" 30 <el-table-column :label="language==0?'操作':'Actions'" fixed="right" width="160" header-align="center" align="center">
31 align="center">
32 <template #default="scope"> 31 <template #default="scope">
33 <a class="text-primary pd10" @click="editCoach(scope.row)"> 32 <a class="text-primary pd10" @click="editCoach(scope.row)">
34 {{language==0?'编辑':'Edit'}} 33 {{language==0?'编辑':'Edit'}}
......
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
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">个人</el-tag> 7 <el-tag v-if="n.signType==0">{{ language==0?'个人':'Individual' }}</el-tag>
8 <el-tag v-if="n.signType==1">团体</el-tag> 8 <el-tag v-if="n.signType==1">{{ language==0?'团体':'Team' }}</el-tag>
9 <el-tag v-if="n.signType==2">个人+团体</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 class="mauto mw100 coverLimitHeight" :src="fillImgUrl(n.coverUrl)">
12 </el-col> 12 </el-col>
...@@ -44,8 +44,12 @@ ...@@ -44,8 +44,12 @@
44 <div class="text-center mt30"> 44 <div class="text-center mt30">
45 <a class="btn-lineG mb20 mauto" style="display: block;" v-if="n.time>0"> 45 <a class="btn-lineG mb20 mauto" style="display: block;" v-if="n.time>0">
46 <span v-if="n.time>0 && n.startSign<=0"> {{ language==0?'我要报名':'Register' }}</span> 46 <span v-if="n.time>0 && n.startSign<=0"> {{ language==0?'我要报名':'Register' }}</span>
47
47 <span v-if="n.startSign>0"> {{ language==0?'报名未开始':'Not started yet' }}</span> 48 <span v-if="n.startSign>0"> {{ language==0?'报名未开始':'Not started yet' }}</span>
48 </a> 49 </a>
50 <div v-else style="opacity: 0.5;" class="btn-lineG mb20 mauto text-center">
51 {{ language == 0 ? '报名已结束' : 'Registration has ended' }}
52 </div>
49 </div> 53 </div>
50 </el-col> 54 </el-col>
51 </el-row> 55 </el-row>
...@@ -88,7 +92,6 @@ function goDetail(id) { ...@@ -88,7 +92,6 @@ function goDetail(id) {
88 <style scoped lang="scss"> 92 <style scoped lang="scss">
89 .pv20{padding: 0 20px;} 93 .pv20{padding: 0 20px;}
90 .mt60{margin-top: 60px} 94 .mt60{margin-top: 60px}
91 .popo{position: absolute;left: 0;}
92 .matchItem { 95 .matchItem {
93 cursor: pointer;padding: 0 0 20px; 96 cursor: pointer;padding: 0 0 20px;
94 background: #FFFFFF;border-bottom: 1px solid #e5e5e5; 97 background: #FFFFFF;border-bottom: 1px solid #e5e5e5;
...@@ -102,7 +105,6 @@ function goDetail(id) { ...@@ -102,7 +105,6 @@ function goDetail(id) {
102 position: absolute; 105 position: absolute;
103 left: 20px; 106 left: 20px;
104 top: 30px; 107 top: 30px;
105
106 img { 108 img {
107 background: #fff; 109 background: #fff;
108 } 110 }
......
...@@ -23,35 +23,43 @@ ...@@ -23,35 +23,43 @@
23 </el-form-item> 23 </el-form-item>
24 </el-col> 24 </el-col>
25 <el-col :lg="10"> 25 <el-col :lg="10">
26 <el-form-item :label="language==0?'参赛队名称':'Name of participating team'" required prop="abreviations"> 26 <el-form-item :label="language==0?'代表国家/地区':'Representing'" required>
27 <el-input type="text" v-model="form.abreviations" :placeholder="language==0?'请输入内容':''"/> 27 <el-select filterable v-model="form.countryId" @change="changeCountryId">
28 <!-- <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/>-->
29 <el-option v-for="item in countryList" :key="item.id" :label="item.noc||item.enName" :value="item.id"/>
30 </el-select>
28 </el-form-item> 31 </el-form-item>
29 <el-form-item :label="language==0?'团体名称':'Institution Name'" prop="name"> 32 <!-- <el-form-item :label="language==0?'参赛队名称':'Name of participating team'" required prop="abreviations">-->
33 <!-- <el-input type="text" v-model="form.abreviations" :placeholder="language==0?'请输入内容':''"/>-->
34 <!-- </el-form-item>-->
35 <el-form-item v-if="!isNational" :label="language==0?'团体名称':'Team Name'" prop="name" required>
36 <!-- <div>-->
37 <!-- <span v-if="language==0">{{form.country.name}}代表队</span>-->
38 <!-- <span v-else>{{form.country.enName}} Delegation</span>-->
39 <!-- </div>-->
30 <el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" /> 40 <el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" />
31 </el-form-item> 41 </el-form-item>
32 <el-form-item :label="language==0?'所属国家/地区':'Country'" required> 42 <el-form-item :label="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson">
33 <el-select filterable v-model="form.countryId">
34 <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" />
35 </el-select>
36 </el-form-item>
37 <el-form-item :label="language==0?'负责人姓名':'Contact Person'" prop="contactPerson">
38 <el-input v-model="form.contactPerson" :placeholder="language==0?'请输入联系人':''" /> 43 <el-input v-model="form.contactPerson" :placeholder="language==0?'请输入联系人':''" />
39 </el-form-item> 44 </el-form-item>
40 <el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail"> 45 <el-form-item :label="language==0?'联系人邮箱':'Email'" required prop="contactEmail">
41 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> 46 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/>
42 </el-form-item> 47 </el-form-item>
48 <el-form-item :label="language==0?'联系人电话':'Contact Phone'" required prop="contactTelno">
49 <el-input v-model="form.contactTelno" type="phone" :placeholder="language==0?'请输入内容':''"/>
50 </el-form-item>
43 <!-- <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag">--> 51 <!-- <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag">-->
44 <!-- <el-select v-model="form.majorFlag">--> 52 <!-- <el-select v-model="form.majorFlag">-->
45 <!-- <el-option :label="language==0?'专业':'Professional'" value="1" />--> 53 <!-- <el-option :label="language==0?'专业':'Professional'" value="1" />-->
46 <!-- <el-option :label="language==0?'业余':'Amateur'" value="0" />--> 54 <!-- <el-option :label="language==0?'业余':'Amateur'" value="0" />-->
47 <!-- </el-select>--> 55 <!-- </el-select>-->
48 <!-- </el-form-item>--> 56 <!-- </el-form-item>-->
49 <el-form-item :label="language==0?'团体类型':'Group type'" prop="type"> 57 <!-- <el-form-item :label="language==0?'团体类型':'Group type'" prop="type">-->
50 <el-select :disabled="language==1" v-model="form.type" :placeholder="typeOptions[language].selectPlaceholder" style="width: 100%;"> 58 <!-- <el-select :disabled="language==1" v-model="form.type" :placeholder="typeOptions[language].selectPlaceholder" style="width: 100%;">-->
51 <el-option v-for="(o,index) in typeOptions[language].options" :label="o.text" 59 <!-- <el-option v-for="(o,index) in typeOptions[language].options" :label="o.text"-->
52 :key="index" :value="o.value" /> 60 <!-- :key="index" :value="o.value" />-->
53 </el-select> 61 <!-- </el-select>-->
54 </el-form-item> 62 <!-- </el-form-item>-->
55 <el-form-item :label="language==0?'详细地址':'Detailed Address'" prop="address"> 63 <el-form-item :label="language==0?'详细地址':'Detailed Address'" prop="address">
56 <el-input type="textarea" v-model="form.address" class="mt10" :placeholder="language==0?'请输入详细地址':''"/> 64 <el-input type="textarea" v-model="form.address" class="mt10" :placeholder="language==0?'请输入详细地址':''"/>
57 </el-form-item> 65 </el-form-item>
...@@ -108,11 +116,13 @@ import _ from 'lodash' ...@@ -108,11 +116,13 @@ import _ from 'lodash'
108 import {useStorage} from "@vueuse/core/index"; 116 import {useStorage} from "@vueuse/core/index";
109 117
110 const data = reactive({ 118 const data = reactive({
111 isRanks: false, 119 isNational: false,
112 matchData:{ 120 matchData:{
113 enBo:{} 121 enBo:{}
114 }, 122 },
115 form: {}, 123 form: {
124 country:{}
125 },
116 typeOptions: { 126 typeOptions: {
117 0: { 127 0: {
118 selectPlaceholder: '请选择团体类型', 128 selectPlaceholder: '请选择团体类型',
...@@ -144,28 +154,30 @@ const data = reactive({ ...@@ -144,28 +154,30 @@ const data = reactive({
144 rankList: [], 154 rankList: [],
145 accept: '.doc, .pdf, .docx, .zip', 155 accept: '.doc, .pdf, .docx, .zip',
146 rules: { 156 rules: {
147 imgUrl: { required: true, message: '请上传', trigger: 'blur' }, 157 // imgUrl: { required: true, message: '请上传', trigger: 'blur' },
148 name: { required: true, message: '请填写', trigger: 'blur' }, 158 // name: { required: true, message: '请填写', trigger: 'blur' },
149 type: { required: true, message: '请选择', trigger: 'change' }, 159 // type: { required: true, message: '请选择', trigger: 'change' },
150 contactPerson: { required: true, message: '请填写内容', trigger: 'blur' }, 160 contactPerson: { required: true, message: '请填写内容', trigger: 'blur' },
161 contactTelno: { required: true, message: '请填写内容', trigger: 'blur' },
151 contactEmail: { required: true, message: '请填写内容', trigger: 'blur' }, 162 contactEmail: { required: true, message: '请填写内容', trigger: 'blur' },
152 abreviations: { required: true, message: '请填写内容', trigger: 'blur' }, 163 // abreviations: { required: true, message: '请填写内容', trigger: 'blur' },
153 address: { required: true, message: '请填写内容', trigger: 'blur' } 164 // address: { required: true, message: '请填写内容', trigger: 'blur' }
154 }, 165 },
155 rules_en: { 166 rules_en: {
156 imgUrl: { required: true, message: 'required', trigger: 'blur' }, 167 // imgUrl: { required: true, message: 'required', trigger: 'blur' },
157 name: { required: true, message: 'required', trigger: 'blur' }, 168 // name: { required: true, message: 'required', trigger: 'blur' },
158 type: { required: true, message: 'required', trigger: 'change' }, 169 // type: { required: true, message: 'required', trigger: 'change' },
159 contactPerson: { required: true, message: 'required', trigger: 'blur' }, 170 contactPerson: { required: true, message: 'required', trigger: 'blur' },
171 contactTelno: { required: true, message: 'required', trigger: 'blur' },
160 contactEmail: { required: true, message: 'required', trigger: 'blur' }, 172 contactEmail: { required: true, message: 'required', trigger: 'blur' },
161 abreviations: { required: true, message: 'required', trigger: 'blur' }, 173 // abreviations: { required: true, message: 'required', trigger: 'blur' },
162 // address: { required: true, message: 'required', trigger: 'blur' } 174 // address: { required: true, message: 'required', trigger: 'blur' }
163 }, 175 },
164 coachOrLeaderFlag: '', 176 coachOrLeaderFlag: '',
165 matchInfo:{} 177 matchInfo:{}
166 }) 178 })
167 const { 179 const {
168 isRanks,matchData, 180 isNational,matchData,
169 rankList, 181 rankList,
170 form, 182 form,
171 groupId, 183 groupId,
...@@ -183,6 +195,7 @@ onMounted(() => { ...@@ -183,6 +195,7 @@ onMounted(() => {
183 // 获取团体信息 195 // 获取团体信息
184 getGroupInfo() 196 getGroupInfo()
185 signType.value = route.query.signType 197 signType.value = route.query.signType
198 isNational.value = route.query.isNational
186 199
187 getRegionsList() 200 getRegionsList()
188 getCountryList() 201 getCountryList()
...@@ -230,11 +243,19 @@ function getCountryList() { ...@@ -230,11 +243,19 @@ function getCountryList() {
230 countryList.value = res.data 243 countryList.value = res.data
231 }) 244 })
232 } 245 }
246 function changeCountryId(e) {
247 console.log(e)
248 for (var c of countryList.value){
249 if (c.id == e) {
250 form.value.country = c
251 }
252 }
253 }
233 function getGroupInfo() { 254 function getGroupInfo() {
234 match.getGroupInfo().then(res => { 255 match.getGroupInfo().then(res => {
235 form.value = res.data 256 form.value = res.data
236 if(language.value == 1){ 257 if(form.value.countryId){
237 form.value.type = '4' 258 changeCountryId(form.value.countryId)
238 } 259 }
239 }).catch(err => { 260 }).catch(err => {
240 router.push({name: 'home'}) 261 router.push({name: 'home'})
...@@ -242,12 +263,6 @@ function getGroupInfo() { ...@@ -242,12 +263,6 @@ function getGroupInfo() {
242 }) 263 })
243 } 264 }
244 265
245 function getTeamList() {
246 return match.getMyTeamList(cptId.value, groupId.value).then(response => {
247 rankList.value = response.data
248 })
249 }
250
251 function goPrev() { 266 function goPrev() {
252 router.go(-1) 267 router.go(-1)
253 } 268 }
...@@ -306,7 +321,7 @@ function goNext() { ...@@ -306,7 +321,7 @@ function goNext() {
306 query: { 321 query: {
307 matchId: cptId.value, 322 matchId: cptId.value,
308 groupId: groupId.value, 323 groupId: groupId.value,
309 signType: signType.value 324 isNational: isNational.value
310 } 325 }
311 }) 326 })
312 } 327 }
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box">
4 <div class="indexTitle"> 4 <div class="indexTitle">
5 <h3 class="leftboderTT">赛事视频</h3> 5 <h3 class="leftboderTT">{{ language==0?'赛事视频':'Event Video' }}</h3>
6 <a class="more" @click="goList(query1.sortId,'赛事视频')">MORE</a> 6 <a class="more" @click="goList(query1.sortId,language==0?'赛事视频':'Event Videos')">MORE</a>
7 </div> 7 </div>
8 8
9 <el-row :gutter="20"> 9 <el-row :gutter="20">
...@@ -44,8 +44,8 @@ ...@@ -44,8 +44,8 @@
44 44
45 45
46 <div class="indexTitle"> 46 <div class="indexTitle">
47 <h3 class="leftboderTT">精彩图片</h3> 47 <h3 class="leftboderTT">{{ language==0?'精彩图片':'Exciting Photos' }}</h3>
48 <a class="more" @click="goList(query2.sortId,'精彩图片')">MORE</a> 48 <a class="more" @click="goList(query2.sortId,language==0?'精彩图片':'Exciting Photos')">MORE</a>
49 </div> 49 </div>
50 <el-row class="mb20" :gutter="20"> 50 <el-row class="mb20" :gutter="20">
51 <el-col :lg="9"> 51 <el-col :lg="9">
...@@ -71,6 +71,8 @@ ...@@ -71,6 +71,8 @@
71 71
72 <div class="mb60" /> 72 <div class="mb60" />
73 </div> 73 </div>
74
75
74 </div> 76 </div>
75 </template> 77 </template>
76 <script setup> 78 <script setup>
...@@ -78,7 +80,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue' ...@@ -78,7 +80,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue'
78 import { onMounted, ref } from 'vue' 80 import { onMounted, ref } from 'vue'
79 import { getNewsListById } from '@/apiPc/webSite' 81 import { getNewsListById } from '@/apiPc/webSite'
80 import { useRouter } from 'vue-router' 82 import { useRouter } from 'vue-router'
81 83 import {useStorage} from "@vueuse/core/index";
84 const language = useStorage('language', 0)
82 const router = useRouter() 85 const router = useRouter()
83 const activeName = ref(0) 86 const activeName = ref(0)
84 const total = ref(0) 87 const total = ref(0)
...@@ -102,11 +105,17 @@ onMounted(() => { ...@@ -102,11 +105,17 @@ onMounted(() => {
102 }) 105 })
103 106
104 const getList = (obj) => { 107 const getList = (obj) => {
108 if(language.value==1){
109 obj.sortId = '10000008'
110 }
105 getNewsListById(obj).then(res => { 111 getNewsListById(obj).then(res => {
106 newsList.value = res.rows 112 newsList.value = res.rows
107 }) 113 })
108 } 114 }
109 const getList2 = (obj) => { 115 const getList2 = (obj) => {
116 if(language.value==1){
117 obj.sortId = '10000009'
118 }
110 getNewsListById(obj).then(res => { 119 getNewsListById(obj).then(res => {
111 newsList2.value = res.rows 120 newsList2.value = res.rows
112 }) 121 })
......
1 <template>
2 <div>
3 <div class="box">
4 <div class="indexTitle">
5 <h3 class="leftboderTT">Event Video</h3>
6 <a class="more" @click="goList(query1.sortId,'Event Videos')">MORE</a>
7 </div>
8
9 <el-row :gutter="20">
10 <el-col :lg="12" :sm="24" :md="12">
11 <div class="liveImgbox" @click="goDetail(newsList[0])">
12 <i class="ii">Live Broadcast</i>
13 <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)">
14 <h3 class="esp">{{ newsList[0]?.name }}
15 </h3>
16 </div>
17 </el-col>
18 <el-col :lg="12" :sm="24">
19 <el-row :gutter="20">
20 <el-col :md="12" :lg="12">
21 <div class="videoImgbox" @click="goDetail(newsList[1])">
22 <img :src="fillImgUrl_webSite(newsList[1]?.picUrl)">
23 </div>
24 </el-col>
25 <el-col :md="12" :lg="12">
26 <div class="videoImgbox" @click="goDetail(newsList[2])">
27 <img :src="fillImgUrl_webSite(newsList[2]?.picUrl)">
28 </div>
29 </el-col>
30 <el-col :md="12" :lg="12" class="mt20">
31 <div class="videoImgbox" @click="goDetail(newsList[3])">
32 <img :src="fillImgUrl_webSite(newsList[3]?.picUrl)">
33 </div>
34 </el-col>
35 <el-col :md="12" :lg="12" class="mt20">
36 <div class="videoImgbox" @click="goDetail(newsList[4])">
37 <img :src="fillImgUrl_webSite(newsList[4]?.picUrl)">
38 </div>
39 </el-col>
40 </el-row>
41 </el-col>
42
43 </el-row>
44
45
46 <div class="indexTitle">
47 <h3 class="leftboderTT">Exciting Photos</h3>
48 <a class="more" @click="goList(query2.sortId,'Exciting Photos')">MORE</a>
49 </div>
50 <el-row class="mb20" :gutter="20">
51 <el-col :lg="9">
52 <div class="picbox" @click="goDetail(newsList2[0])"><img :src="fillImgUrl_webSite(newsList2[0]?.picUrl)"/></div>
53 </el-col>
54 <el-col :lg="15">
55 <el-row :gutter="20" style="height: 100%">
56 <el-col :lg="16">
57 <div class="picbox" @click="goDetail(newsList2[1])"><img :src="fillImgUrl_webSite(newsList2[1]?.picUrl)"/></div>
58 </el-col>
59 <el-col :lg="8">
60 <div class="picbox" @click="goDetail(newsList2[2])" style="height: calc(50% - 10px)"><img :src="fillImgUrl_webSite(newsList2[2]?.picUrl)"/></div>
61 <div class="picbox" @click="goDetail(newsList2[3])" style="height: calc(50% - 10px);margin-top: 20px"><img :src="fillImgUrl_webSite(newsList2[3]?.picUrl)"/></div>
62 </el-col>
63 </el-row>
64 <el-row :gutter="20" class="mt20">
65 <el-col :lg="8" v-for="(n,index) in newsList2" :key="index" v-show="index>3">
66 <div class="picbox" @click="goDetail(n)"><img :src="fillImgUrl_webSite(n.picUrl)"/></div>
67 </el-col>
68 </el-row>
69 </el-col>
70 </el-row>
71
72 <div class="mb60" />
73 </div>
74 </div>
75 </template>
76 <script setup>
77 import { ArrowRight, Search } from '@element-plus/icons-vue'
78 import { onMounted, ref } from 'vue'
79 import { getNewsListById } from '@/apiPc/webSite'
80 import { useRouter } from 'vue-router'
81
82 const router = useRouter()
83 const activeName = ref(0)
84 const total = ref(0)
85 const list = ref([])
86 const newsList = ref([])
87 const newsList2 = ref([])
88 const query1 = ref({
89 pageSize: 5,
90 pageNum: 1,
91 sortId: '10000008'
92 })
93 const query2 = ref({
94 pageSize: 7,
95 pageNum: 1,
96 sortId: '10000009'
97 })
98
99 onMounted(() => {
100 getList(query1.value)
101 getList2(query2.value)
102 })
103
104 const getList = (obj) => {
105 getNewsListById(obj).then(res => {
106 newsList.value = res.rows
107 })
108 }
109 const getList2 = (obj) => {
110 getNewsListById(obj).then(res => {
111 newsList2.value = res.rows
112 })
113 }
114
115 const goList = (sortId, name) => {
116 router.push({
117 path: `/news/list/${sortId}`,
118 query: {
119 kindName: name
120 }
121 })
122 }
123 const goDetail = (n) => {
124 if (n.isOut == '1') {
125 window.open(n.jumpUrl)
126 } else {
127 window.open(router.resolve({
128 path: `/news/detail/${n.noteId}`
129 }).href)
130 }
131 }
132 </script>
133 <style lang="scss" scoped>
134 .leftboderTT{
135 font-size: 20px;}
136 @media (max-width: 800px) {
137 [class*=el-col-]{display: block;margin: 0 0 20px}
138 }
139 </style>
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box" v-if="language == 0">
4 <div class="indexTitle"> 4 <div class="indexTitle">
5 <h3 class="leftboderTT">要闻</h3> 5 <h3 class="leftboderTT">要闻</h3>
6 <a class="more" @click="goList(query1.sortId,'要闻')">MORE</a> 6 <a class="more" @click="goList(query1.sortId,'要闻')">MORE</a>
...@@ -107,6 +107,113 @@ ...@@ -107,6 +107,113 @@
107 107
108 <div class="mb60" /> 108 <div class="mb60" />
109 </div> 109 </div>
110 <div class="box" v-if="language == 1">
111 <div class="indexTitle">
112 <h3 class="leftboderTT">Games News</h3>
113 <a class="more" @click="goList(query1.sortId,'Games News')">MORE</a>
114 </div>
115 <el-card>
116 <el-row class="topNews" :gutter="20">
117 <el-col :lg="12" :sm="24" :md="12">
118 <el-carousel indicator-position="none" height="330">
119 <el-carousel-item v-for="(n,index) in newsList" :key="index">
120 <div class="imgbox carouselImg" @click="goDetail(n)">
121 <div class="date">
122 <div class="day">{{ n.belongTime?.substring(8, 10) }}</div>
123 <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p>
124 </div>
125 <img :src="fillImgUrl_webSite(n.picUrl)">
126 <h3 class="esp">{{ n.name }}
127 </h3>
128 </div>
129 </el-carousel-item>
130 </el-carousel>
131 </el-col>
132 <el-col :lg="12" :sm="24" :md="12">
133 <div class="newsCommon">
134 <div
135 v-for="(n,index) in newsList" v-show="index<4" :key="index" class="item"
136 @click="goDetail(n)"
137 >
138 <h3 class="esp">
139 <span v-if="n.publishType">
140 <span v-for="(t,index) in n.publishType.split(',')" :key="index" class="jstype">{{ t }}</span>
141 </span>{{ n.name }}
142 </h3>
143 <p class="esp">{{ n.subName }}</p>
144 </div>
145 </div>
146 </el-col>
147 </el-row>
148 </el-card>
149
150 <div class="indexTitle">
151 <h3 class="leftboderTT">Official Release</h3>
152 <a class="more" @click="goList(query2.sortId,'Official Release')">MORE</a>
153 </div>
154 <el-row class="newsflex mb20">
155 <el-col
156 v-for="(n,index) in newsList2" v-show="index<4" :lg="12" :xs="24" :sm="12"
157 @click="goDetail(n)"
158 >
159 <div class="item">
160 <div v-if="n.picUrl" class="imgbox">
161 <img :src="fillImgUrl_webSite(n.picUrl)">
162 </div>
163 <div class="info">
164 <span class="date">{{ n.belongTime }}</span>
165 <h3 class="esp_2">
166 {{ n.name }}
167 </h3>
168 <p class="esp_2">{{ n.subName }}</p>
169 </div>
170 </div>
171 </el-col>
172 </el-row>
173
174 <!-- <div class="indexTitle">-->
175 <!-- <h3 class="leftboderTT">官方发布</h3>-->
176 <!-- <a class="more" @click="goList(query3.sortId,'官方发布')">MORE</a>-->
177 <!-- </div>-->
178 <!-- <el-row :gutter="20">-->
179 <!-- <el-col-->
180 <!-- v-for="(n,index) in newsList3"-->
181 <!-- v-show="index<3" :key="n.id" :xs="12" :sm="8"-->
182 <!-- :lg="8"-->
183 <!-- >-->
184 <!-- <div class="activeItem">-->
185 <!-- <div class="info">-->
186 <!-- <div class="date">-->
187 <!-- 2023-12-12-->
188 <!-- </div>-->
189 <!-- <h3 class="esp_2" style="height: 50px">{{ n.name }}</h3>-->
190 <!-- <p class="esp_2" />-->
191 <!-- <a>查看详情</a>-->
192 <!-- </div>-->
193 <!-- </div>-->
194 <!-- </el-col>-->
195 <!-- </el-row>-->
196
197 <!-- <div class="indexTitle">-->
198 <!-- <h3 class="leftboderTT">专题报道</h3>-->
199 <!-- <a class="more" @click="goList(query4.sortId,'专题报道')">MORE</a>-->
200 <!-- </div>-->
201 <!-- <el-row :gutter="30" class="newsimgcover">-->
202 <!-- <el-col v-for="(n,index) in newsList4" v-show="index<3" :lg="8" @click="goDetail(n)">-->
203 <!-- <div class="item shadow">-->
204 <!-- <div class="imgbox"><img :src="fillImgUrl_webSite(n.picUrl)"></div>-->
205 <!-- <h3 class="esp">-->
206 <!-- <span v-if="n.publishType">-->
207 <!-- <span v-for="(t,index) in n.publishType.split(',')" :key="index" class="jstype">{{ t }}</span>-->
208 <!-- </span>-->
209 <!-- {{ n.name }}</h3>-->
210 <!-- </div>-->
211 <!-- </el-col>-->
212 <!-- </el-row>-->
213
214 <div class="mb60" />
215 </div>
216
110 </div> 217 </div>
111 </template> 218 </template>
112 <script setup> 219 <script setup>
...@@ -114,7 +221,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue' ...@@ -114,7 +221,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue'
114 import { onMounted, ref } from 'vue' 221 import { onMounted, ref } from 'vue'
115 import { getNewsListById } from '@/apiPc/webSite' 222 import { getNewsListById } from '@/apiPc/webSite'
116 import { useRouter } from 'vue-router' 223 import { useRouter } from 'vue-router'
117 224 import {useStorage} from "@vueuse/core/index";
225 const language = useStorage('language', 0)
118 const router = useRouter() 226 const router = useRouter()
119 const activeName = ref(0) 227 const activeName = ref(0)
120 const total = ref(0) 228 const total = ref(0)
...@@ -126,22 +234,22 @@ const newsList4 = ref([]) ...@@ -126,22 +234,22 @@ const newsList4 = ref([])
126 const query1 = ref({ 234 const query1 = ref({
127 pageSize: 5, 235 pageSize: 5,
128 pageNum: 1, 236 pageNum: 1,
129 sortId:'10000001' 237 sortId: language.value == 0 ?'10000001':'10000004'
130 }) 238 })
131 const query2 = ref({ 239 const query2 = ref({
132 pageSize: 4, 240 pageSize: 4,
133 pageNum: 1, 241 pageNum: 1,
134 sortId:'10000002' 242 sortId:language.value == 0 ?'10000002':'10000005'
135 }) 243 })
136 const query3 = ref({ 244 const query3 = ref({
137 pageSize: 6, 245 pageSize: 6,
138 pageNum: 1, 246 pageNum: 1,
139 sortId:'10000000' 247 sortId:language.value == 0 ?'10000000':'10000000'
140 }) 248 })
141 const query4 = ref({ 249 const query4 = ref({
142 pageSize: 3, 250 pageSize: 3,
143 pageNum: 1, 251 pageNum: 1,
144 sortId:'10000003' 252 sortId:language.value == 0 ?'10000003':'10000003'
145 }) 253 })
146 254
147 onMounted(() => { 255 onMounted(() => {
......
1 <template>
2 <div>
3 <div class="box">
4 <div class="indexTitle">
5 <h3 class="leftboderTT">Games News</h3>
6 <a class="more" @click="goList(query1.sortId,'Games News')">MORE</a>
7 </div>
8 <el-card>
9 <el-row class="topNews" :gutter="20">
10 <el-col :lg="12" :sm="24" :md="12">
11 <el-carousel indicator-position="none" height="330">
12 <el-carousel-item v-for="(n,index) in newsList" :key="index">
13 <div class="imgbox carouselImg" @click="goDetail(n)">
14 <div class="date">
15 <div class="day">{{ n.belongTime?.substring(8, 10) }}</div>
16 <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p>
17 </div>
18 <img :src="fillImgUrl_webSite(n.picUrl)">
19 <h3 class="esp">{{ n.name }}
20 </h3>
21 </div>
22 </el-carousel-item>
23 </el-carousel>
24 </el-col>
25 <el-col :lg="12" :sm="24" :md="12">
26 <div class="newsCommon">
27 <div
28 v-for="(n,index) in newsList" v-show="index<4" :key="index" class="item"
29 @click="goDetail(n)"
30 >
31 <h3 class="esp">
32 <span v-if="n.publishType">
33 <span v-for="(t,index) in n.publishType.split(',')" :key="index" class="jstype">{{ t }}</span>
34 </span>{{ n.name }}
35 </h3>
36 <p class="esp">{{ n.subName }}</p>
37 </div>
38 </div>
39 </el-col>
40 </el-row>
41 </el-card>
42
43 <div class="indexTitle">
44 <h3 class="leftboderTT">Official Release</h3>
45 <a class="more" @click="goList(query2.sortId,'Official Release')">MORE</a>
46 </div>
47 <el-row class="newsflex mb20">
48 <el-col
49 v-for="(n,index) in newsList2" v-show="index<4" :lg="12" :xs="24" :sm="12"
50 @click="goDetail(n)"
51 >
52 <div class="item">
53 <div v-if="n.picUrl" class="imgbox">
54 <img :src="fillImgUrl_webSite(n.picUrl)">
55 </div>
56 <div class="info">
57 <span class="date">{{ n.belongTime }}</span>
58 <h3 class="esp_2">
59 {{ n.name }}
60 </h3>
61 <p class="esp_2">{{ n.subName }}</p>
62 </div>
63 </div>
64 </el-col>
65 </el-row>
66
67 <!-- <div class="indexTitle">-->
68 <!-- <h3 class="leftboderTT">官方发布</h3>-->
69 <!-- <a class="more" @click="goList(query3.sortId,'官方发布')">MORE</a>-->
70 <!-- </div>-->
71 <!-- <el-row :gutter="20">-->
72 <!-- <el-col-->
73 <!-- v-for="(n,index) in newsList3"-->
74 <!-- v-show="index<3" :key="n.id" :xs="12" :sm="8"-->
75 <!-- :lg="8"-->
76 <!-- >-->
77 <!-- <div class="activeItem">-->
78 <!-- <div class="info">-->
79 <!-- <div class="date">-->
80 <!-- 2023-12-12-->
81 <!-- </div>-->
82 <!-- <h3 class="esp_2" style="height: 50px">{{ n.name }}</h3>-->
83 <!-- <p class="esp_2" />-->
84 <!-- <a>查看详情</a>-->
85 <!-- </div>-->
86 <!-- </div>-->
87 <!-- </el-col>-->
88 <!-- </el-row>-->
89
90 <!-- <div class="indexTitle">-->
91 <!-- <h3 class="leftboderTT">专题报道</h3>-->
92 <!-- <a class="more" @click="goList(query4.sortId,'专题报道')">MORE</a>-->
93 <!-- </div>-->
94 <!-- <el-row :gutter="30" class="newsimgcover">-->
95 <!-- <el-col v-for="(n,index) in newsList4" v-show="index<3" :lg="8" @click="goDetail(n)">-->
96 <!-- <div class="item shadow">-->
97 <!-- <div class="imgbox"><img :src="fillImgUrl_webSite(n.picUrl)"></div>-->
98 <!-- <h3 class="esp">-->
99 <!-- <span v-if="n.publishType">-->
100 <!-- <span v-for="(t,index) in n.publishType.split(',')" :key="index" class="jstype">{{ t }}</span>-->
101 <!-- </span>-->
102 <!-- {{ n.name }}</h3>-->
103 <!-- </div>-->
104 <!-- </el-col>-->
105 <!-- </el-row>-->
106
107 <div class="mb60" />
108 </div>
109 </div>
110 </template>
111 <script setup>
112 import { ArrowRight, Search } from '@element-plus/icons-vue'
113 import { onMounted, ref } from 'vue'
114 import { getNewsListById } from '@/apiPc/webSite'
115 import { useRouter } from 'vue-router'
116
117 const router = useRouter()
118 const activeName = ref(0)
119 const total = ref(0)
120 const list = ref([])
121 const newsList = ref([])
122 const newsList2 = ref([])
123 const newsList3 = ref([])
124 const newsList4 = ref([])
125 const query1 = ref({
126 pageSize: 5,
127 pageNum: 1,
128 sortId:'10000004'
129 })
130 const query2 = ref({
131 pageSize: 4,
132 pageNum: 1,
133 sortId:'10000005'
134 })
135 const query3 = ref({
136 pageSize: 6,
137 pageNum: 1,
138 sortId:'10000000'
139 })
140 const query4 = ref({
141 pageSize: 3,
142 pageNum: 1,
143 sortId:'10000003'
144 })
145
146 onMounted(() => {
147 getList(query1.value)
148 getList2(query2.value)
149 // getList3(query3.value)
150 // getList4(query4.value)
151 })
152
153 const getList = (obj) => {
154 getNewsListById(obj).then(res => {
155 newsList.value = res.rows
156 })
157 }
158 const getList2 = (obj) => {
159 getNewsListById(obj).then(res => {
160 newsList2.value = res.rows
161 })
162 }
163 const getList3 = (obj) => {
164 getNewsListById(obj).then(res => {
165 newsList3.value = res.rows
166 })
167 }
168 const getList4 = (obj) => {
169 getNewsListById(obj).then(res => {
170 newsList4.value = res.rows
171 })
172 }
173
174 const goList = (sortId,name) => {
175 router.push({
176 path: `/news/list/${sortId}`,
177 query:{
178 kindName:name
179 }
180 })
181 }
182 const goDetail = (n) => {
183 if (n.isOut == '1') {
184 window.open(n.jumpUrl)
185 } else {
186 window.open(router.resolve({
187 path: `/news/detail/${n.noteId}`
188 }).href)
189 }
190 }
191 </script>
192 <style lang="scss" scoped>
193 .leftboderTT{
194 font-size: 20px;}
195 .flexBody {
196 display: flex;
197 align-items: center;
198
199 .el-form-item {
200 margin-bottom: 0
201 }
202 }
203
204 .infoPart {
205 padding: 20px;
206 flex: 1;
207
208 & > h3 {
209 font-size: 24px;
210 color: var(--el-color-primary);
211 }
212 }
213
214 .firstItem {
215 background: #FAFAFA;
216 }
217
218 .searchPark {
219 background: #F6F6F6;
220 }
221
222 .newsBlock {
223 .item {
224 display: flex;
225 position: relative;
226 width: 100%;
227 cursor: pointer;
228 border-bottom: 1px dashed #EEEEEE;
229 padding: 30px 0;
230
231 .date {
232 width: 60px;
233 height: 60px;
234 text-align: center;
235 background: #FAFAFA;
236 margin: 0 10px;
237
238 .day {
239 color: var(--el-color-primary);
240 transform: scaleX(0.7);
241 font-weight: bold;
242 font-size: 24px;
243 }
244
245 p {
246 font-size: 14px;
247 margin: 0;
248 transform: scaleX(0.7);
249 font-weight: bold;
250 color: #7B7F83;
251 }
252 }
253
254 .imgbox {width: 280px;margin-right: 10px; height: 157.5px;overflow: hidden;
255 flex: 0 0 auto;
256 img{width: 100%;height: 100%;object-fit: cover;object-position: top;}
257 }
258
259 .item-body {
260 flex: 1 1 auto;
261
262 label {
263 background: linear-gradient(-90deg, #FCD258 0%, #D3AA5A 0%, #E4C889 99%);
264 border-radius: 12px 12px 12px 0px;
265 padding: 2px 10px;
266 color: #FFFFFF;
267 margin: 10px 10px 0;
268 display: inline-block;
269 font-size: 14px;
270 }
271
272 h3 {
273 padding: 0 10px;
274 white-space: nowrap;
275 overflow: hidden;
276 text-overflow: ellipsis;
277 font-size: 18px;
278 color: #000000;
279 margin: 0
280 }
281
282 p {
283 padding: 0 10px;
284 text-align: justify;
285 line-height: 24px;
286 height: 48px;
287 display: -webkit-box;
288 -webkit-box-orient: vertical;
289 -webkit-line-clamp: 2;
290 overflow: hidden;
291 text-overflow: ellipsis;
292 color: #7B7F83;
293 font-size: 14px;
294 }
295 }
296
297 .go {
298 background: url("@/assets/v1/about/more.png") no-repeat center;
299 background-size: contain;
300 width: 22px;
301 height: 8px;
302 display: block;
303 filter: grayscale(1);
304 margin: 0 10px;
305 }
306 }
307
308 .item:hover {
309 background: #F8F4FF;
310
311 .date {
312 background: var(--el-color-primary);
313
314 .day {
315 color: #fff;
316 }
317
318 p {
319 color: #fff;
320 }
321 }
322
323 .item-body {
324 h3 {
325 color: var(--el-color-primary);
326 }
327 }
328
329 a {
330 filter: none
331 }
332 }
333 }
334 .topBanner {height:500px;
335 :deep(.el-carousel__container) {
336 height: 100%;
337 }
338 }
339 .forWei {
340 display: none;
341 }
342
343 @media (max-width: 800px) {
344 .infoPart{padding: 0;}
345 .topBannerbox {
346 background: #fff;
347 padding: 1px;
348
349 .el-carousel {
350 --el-carousel-indicator-height: 4px;
351 --el-carousel-indicator-width: 4px;
352 }
353 }
354 .topBanner {
355 height: 160px;
356 border-radius: 6px;
357 margin: 10px;
358 h3{text-align: left;font-size: 15px;padding: 30px 15px 20px;
359 }
360 :deep(.el-carousel__indicators--horizontal){left: auto;right: 0;
361 bottom: 12px;
362 }
363 :deep(.el-carousel__button){border-radius: 5px;}
364 :deep(.el-carousel__indicator.is-active button){width: 12px;}
365
366 h3 {
367 font-size: 14px;
368 }
369 }
370 }
371 </style>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
3 <div class="box"> 3 <div class="box">
4 <el-card class="mt20 mb20" :body-style="{'padding':'0'}"> 4 <el-card class="mt20 mb20" :body-style="{'padding':'0'}">
5 <div class="lineHead"> 5 <div class="lineHead">
6 <h3>全部{{ kindName }}</h3> 6 <h3>{{ language==0?'全部':'All' }} {{ kindName }}</h3>
7 </div> 7 </div>
8 <div class="infoPart"> 8 <div class="infoPart">
9 <div class="newsBlock"> 9 <div class="newsBlock">
...@@ -18,12 +18,12 @@ ...@@ -18,12 +18,12 @@
18 <div class="item-body"> 18 <div class="item-body">
19 <h3 v-html="n.name" /> 19 <h3 v-html="n.name" />
20 <p v-html="n.subName"/> 20 <p v-html="n.subName"/>
21 <a class="go">查看详情 21 <a class="go">{{ language==0?'查看详情':'Detail' }}
22 <el-icon class="rotate90_180"><sort-down/></el-icon> 22 <el-icon class="rotate90_180"><sort-down/></el-icon>
23 </a> 23 </a>
24 </div> 24 </div>
25 </div> 25 </div>
26 <el-empty v-if="newsList.length == 0" description="暂无数据" /> 26 <el-empty v-if="newsList.length == 0" />
27 27
28 <div v-if="total>9" class="pc-page-box"> 28 <div v-if="total>9" class="pc-page-box">
29 <!-- <el-pagination @current-change="getList" layout="prev, pager, next" :total="total" />--> 29 <!-- <el-pagination @current-change="getList" layout="prev, pager, next" :total="total" />-->
...@@ -44,7 +44,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue' ...@@ -44,7 +44,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue'
44 import { onMounted, ref } from 'vue' 44 import { onMounted, ref } from 'vue'
45 import { getNewsListById } from '@/apiPc/webSite' 45 import { getNewsListById } from '@/apiPc/webSite'
46 import { useRoute, useRouter } from 'vue-router' 46 import { useRoute, useRouter } from 'vue-router'
47 // import Pagination from '@/components/Pagination' 47 import {useStorage} from "@vueuse/core/index";
48 const language = useStorage('language', 0)
48 const route = useRoute() 49 const route = useRoute()
49 const router = useRouter() 50 const router = useRouter()
50 const kindName = ref('') 51 const kindName = ref('')
......
1 <template>
2 <div>
3 <div class="box">
4 <el-card class="mt20 mb20" :body-style="{'padding':'0'}">
5 <div class="lineHead">
6 <h3>All {{ kindName }}</h3>
7 </div>
8 <div class="infoPart">
9 <div class="newsBlock">
10 <div v-for="(n,i) in newsList" :key="i" class="item" @click="goDetail(n)">
11 <div class="date">
12 <div class="day">{{ n.belongTime?.substring(8, 10) }}</div>
13 <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p>
14 </div>
15 <div v-if="n.picUrl" class="imgbox">
16 <img :src="fillImgUrl_webSite(n.picUrl)">
17 </div>
18 <div class="item-body">
19 <h3 v-html="n.name" />
20 <p v-html="n.subName" />
21 <a class="go">Detail
22 <el-icon class="rotate90_180"><sort-down/></el-icon>
23 </a>
24 </div>
25 </div>
26 <el-empty v-if="newsList.length == 0" description="no data" />
27
28 <div v-if="total>9" class="pc-page-box">
29 <!-- <el-pagination @current-change="getList" layout="prev, pager, next" :total="total" />-->
30 <PaginationPc
31 v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total"
32 @pagination="getList"
33 />
34 </div>
35 </div>
36 </div>
37 </el-card>
38
39 </div>
40 </div>
41 </template>
42 <script setup>
43 import { ArrowRight, Search } from '@element-plus/icons-vue'
44 import { onMounted, ref } from 'vue'
45 import { getNewsListById } from '@/apiPc/webSite'
46 import { useRoute, useRouter } from 'vue-router'
47 // import Pagination from '@/components/Pagination'
48 const route = useRoute()
49 const router = useRouter()
50 const kindName = ref('')
51 const total = ref(0)
52 const list = ref([])
53 const newsList = ref([])
54 const query = ref({
55 pageSize: 10,
56 pageNum: 1
57 })
58 onMounted(() => {
59 console.log(route)
60 query.value.sortId = route.params.id
61 kindName.value = route.query.kindName
62 getList()
63 })
64
65 const getList = () => {
66 console.log(query.value)
67 getNewsListById(query.value).then(res => {
68 newsList.value = res.rows
69 total.value = res.total
70 })
71 }
72
73 const goDetail = (n) => {
74 if (n.isOut == '1') {
75 window.open(n.jumpUrl)
76 } else {
77 window.open(router.resolve({
78 path: `/news/detail/${n.noteId}`
79 }).href)
80
81 // router.push({
82 // path: `/news/detail/${n.noteId}`
83 // })
84 }
85 }
86 </script>
87 <style lang="scss" scoped>
88 .flexBody {
89 display: flex;
90 align-items: center;
91
92 .el-form-item {
93 margin-bottom: 0
94 }
95 }
96
97 .infoPart {
98 padding: 20px;
99 flex: 1;
100
101 & > h3 {
102 font-size: 24px;
103 color: var(--el-color-primary);
104 }
105 }
106
107 .firstItem {
108 background: #FAFAFA;
109 }
110
111 .searchPark {
112 background: #F6F6F6;
113 }
114
115
116 .topBanner {height:500px;
117 :deep(.el-carousel__container) {
118 height: 100%;
119 }
120 }
121 .forWei {
122 display: none;
123 }
124
125 @media (max-width: 800px) {
126
127 //.infoPart{padding: 0;}
128 .topBannerbox {
129 background: #fff;
130 padding: 1px;
131
132 .el-carousel {
133 --el-carousel-indicator-height: 4px;
134 --el-carousel-indicator-width: 4px;
135 }
136 }
137 .topBanner {
138 height: 160px;
139 border-radius: 6px;
140 margin: 10px;
141 h3{text-align: left;font-size: 15px;padding: 30px 15px 20px;
142 }
143 :deep(.el-carousel__indicators--horizontal){left: auto;right: 0;
144 bottom: 12px;
145 }
146 :deep(.el-carousel__button){border-radius: 5px;}
147 :deep(.el-carousel__indicator.is-active button){width: 12px;}
148
149 h3 {
150 font-size: 14px;
151 }
152 }
153 .newsBlock{
154 .item{flex-direction: column;margin: 0 0 40px;padding: 0;
155 .date{position: absolute;top: 20px}
156 }
157 .imgbox{width: 100%;height: auto;margin: 0 0 20px}
158 }
159 }
160 </style>
...@@ -4,7 +4,8 @@ ...@@ -4,7 +4,8 @@
4 4
5 <el-card class="mt20 mb20" :body-style="{'padding':'0'}"> 5 <el-card class="mt20 mb20" :body-style="{'padding':'0'}">
6 <div class="lineHead"> 6 <div class="lineHead">
7 <h3>全部通知公告</h3> 7 <h3 v-if="language==0">全部通知公告</h3>
8 <h3 v-else> NOTICE </h3>
8 </div> 9 </div>
9 <!-- <el-tabs v-model="activeName" @tab-change="changeTab" @tab-click="clickTab">--> 10 <!-- <el-tabs v-model="activeName" @tab-change="changeTab" @tab-click="clickTab">-->
10 <!-- <el-tab-pane v-for="(tab,index) in list" :key="index" :label="tab.name" :name="index" />--> 11 <!-- <el-tab-pane v-for="(tab,index) in list" :key="index" :label="tab.name" :name="index" />-->
...@@ -17,9 +18,9 @@ ...@@ -17,9 +18,9 @@
17 <p>{{ n.belongTime }}</p> 18 <p>{{ n.belongTime }}</p>
18 </div> 19 </div>
19 <div class="item-body"> 20 <div class="item-body">
20 <h3 class="esp_2"><span class="istop">置顶</span>{{n.name}}</h3> 21 <h3 class="esp_2"><span class="istop">{{ language==0?'置顶':'TOP' }}</span>{{n.name}}</h3>
21 </div> 22 </div>
22 <a class="go">查看详情</a> 23 <a class="go">{{ language==0?'查看详情':'DETAIL' }}</a>
23 </div> 24 </div>
24 </el-col> 25 </el-col>
25 <!-- <el-col :lg="8" :xs="24" class="forPc">--> 26 <!-- <el-col :lg="8" :xs="24" class="forPc">-->
...@@ -72,7 +73,7 @@ ...@@ -72,7 +73,7 @@
72 <div v-if="total>8" class="pc-page-box"> 73 <div v-if="total>8" class="pc-page-box">
73 <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" /> 74 <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" />
74 </div> 75 </div>
75 <el-empty v-if="newsList.length == 0" description="暂无数据" /> 76 <el-empty v-if="newsList.length == 0" />
76 </div> 77 </div>
77 </el-card> 78 </el-card>
78 79
...@@ -81,9 +82,11 @@ ...@@ -81,9 +82,11 @@
81 </template> 82 </template>
82 <script setup> 83 <script setup>
83 import { ArrowRight, Search } from '@element-plus/icons-vue' 84 import { ArrowRight, Search } from '@element-plus/icons-vue'
85 const language = useStorage('language', 0)
84 import { onMounted, ref } from 'vue' 86 import { onMounted, ref } from 'vue'
85 import { getNewsListById, getNoticeSorts } from '@/apiPc/webSite' 87 import { getNewsListById, getNoticeSorts } from '@/apiPc/webSite'
86 import { useRouter } from 'vue-router' 88 import { useRouter } from 'vue-router'
89 import {useStorage} from "@vueuse/core/index";
87 const router = useRouter() 90 const router = useRouter()
88 const activeName = ref(0) 91 const activeName = ref(0)
89 const list = ref([]) 92 const list = ref([])
...@@ -100,6 +103,9 @@ onMounted(() => { ...@@ -100,6 +103,9 @@ onMounted(() => {
100 }) 103 })
101 104
102 const getList = () => { 105 const getList = () => {
106 if(language.value==1){
107 query.value.sortId=20000001
108 }
103 getNewsListById(query.value).then(res => { 109 getNewsListById(query.value).then(res => {
104 newsList.value = res.rows 110 newsList.value = res.rows
105 total.value = res.total 111 total.value = res.total
......
1 <template>
2 <div>
3 <div class="box">
4
5 <el-card class="mt20 mb20" :body-style="{'padding':'0'}">
6 <div class="lineHead">
7 <h3> NOTICE </h3>
8 </div>
9 <!-- <el-tabs v-model="activeName" @tab-change="changeTab" @tab-click="clickTab">-->
10 <!-- <el-tab-pane v-for="(tab,index) in list" :key="index" :label="tab.name" :name="index" />-->
11 <!-- </el-tabs>-->
12 <div class="pd20">
13 <el-row class="mb20">
14 <el-col :lg="24" :xs="24">
15 <div v-for="(n,index) in newsList?.slice(0,1)" v-show="index<1" :key="index" class="firstItem" @click="goDetail(n)">
16 <div class="date">
17 <p>{{ n.belongTime }}</p>
18 </div>
19 <div class="item-body">
20 <h3 class="esp_2"><span class="istop">TOP</span>{{n.name}}</h3>
21 </div>
22 <a class="go">DETAIL ⇀</a>
23 </div>
24 </el-col>
25 <!-- <el-col :lg="8" :xs="24" class="forPc">-->
26 <!-- <div class="searchPark">-->
27 <!-- <h3>通知搜索</h3>-->
28 <!-- <el-form>-->
29 <!-- <el-form-item>-->
30 <!-- <div class="flexformItem">-->
31 <!-- <el-date-picker-->
32 <!-- v-model="query.year"-->
33 <!-- class="mr10"-->
34 <!-- type="year" value-format="YYYY"-->
35 <!-- placeholder="选择年份" @change="getList"-->
36 <!-- />-->
37 <!-- <el-date-picker-->
38 <!-- v-model="query.month"-->
39 <!-- format="MM" value-format="MM"-->
40 <!-- type="month"-->
41 <!-- placeholder="选择月份" @change="getList"-->
42 <!-- />-->
43 <!-- </div>-->
44
45 <!-- </el-form-item>-->
46 <!-- <el-form-item>-->
47 <!-- <el-input-->
48 <!-- v-model="query.name"-->
49 <!-- placeholder="输入关键字"-->
50 <!-- :suffix-icon="Search" @change="getList"-->
51 <!-- />-->
52 <!-- </el-form-item>-->
53 <!-- </el-form>-->
54 <!-- </div>-->
55 <!-- </el-col>-->
56 </el-row>
57
58 <div class="newsLine">
59
60
61 <div v-for="(n,index) in newsList" v-show="index>0" :key="index" class="item" @click=" goDetail(n)">
62 <div class="date">
63 <div class="day">{{ n.belongTime?.substring(8, 10) }}</div>
64 <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p>
65 </div>
66 <div class="item-body">
67 <h3 v-html="n.name" />
68 </div>
69 <a class="go" />
70 </div>
71 </div>
72 <div v-if="total>8" class="pc-page-box">
73 <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" />
74 </div>
75 <el-empty v-if="newsList.length == 0" description="暂无数据" />
76 </div>
77 </el-card>
78
79 </div>
80 </div>
81 </template>
82 <script setup>
83 import { ArrowRight, Search } from '@element-plus/icons-vue'
84 import { onMounted, ref } from 'vue'
85 import { getNewsListById, getNoticeSorts } from '@/apiPc/webSite'
86 import { useRouter } from 'vue-router'
87 const router = useRouter()
88 const activeName = ref(0)
89 const list = ref([])
90 const newsList = ref([])
91 const nowTab = ref({})
92 const total = ref(0)
93 const query = ref({
94 pageSize: 10,
95 pageNum: 1,
96 sortId:20000001
97 })
98 onMounted(() => {
99 getList()
100 })
101
102 const getList = () => {
103 getNewsListById(query.value).then(res => {
104 newsList.value = res.rows
105 total.value = res.total
106 if (query.value.name) {
107 const pattern = new RegExp(query.value.name, 'gi')
108 for (var n of newsList.value) {
109 n.name = n.name.replace(pattern, `<span class="highlight">$&</span>`)
110 n.subName = n.name.replace(pattern, `<span class="highlight">$&</span>`)
111 }
112 }
113 })
114 }
115 const clickTab = (pane, ev) => {
116 console.log(pane, ev)
117 }
118 const goDetail = (n) => {
119 if (n.isOut == '1') {
120 window.open(n.jumpUrl)
121 } else {
122 router.push({
123 path: `/news/detail/${n.noteId}`
124 })
125 }
126 }
127
128 </script>
129 <style lang="scss" scoped>
130
131 .infoPart{padding: 20px; flex: 1;
132 &>h3{
133 font-size: 24px;
134 color: var(--el-color-primary);}
135 }
136 .firstItem{cursor: pointer;
137 background: #F8F4FF;height: 100%;padding: 10px 20px;
138 .date{font-weight: bold;transform: scaleX(0.7);transform-origin: left;
139 font-size: 18px;
140 color: var(--el-color-primary);}
141 h3{margin: 10px 0;
142 font-size: 22px;}
143 .go{color: var(--el-color-primary);
144 font-size: 14px;padding: 0 0 5px;}
145 }
146
147
148 .newsLine{
149 .item{display: flex;position: relative;width: 100%;height: 90px;
150 align-items: center;cursor: pointer;border-bottom: 1px dashed #EEEEEE;
151 .date{width: 60px;height: 60px;text-align: center;background: #FAFAFA;margin: 0 10px;
152 .day{color: var(--el-color-primary);transform: scaleX(0.7);font-weight: bold;font-size: 24px;}
153 p{font-size: 14px;margin: 0;transform: scaleX(0.7);font-weight: bold;color: #7B7F83;}
154 }
155 .item-body{width: 60%;
156 h3{padding: 0 10px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;font-size: 18px;color: #000000;}
157 }
158 .go{background: url("@/assets/v1/about/go.png") no-repeat center;background-size: contain;
159 position: absolute;width: 30px;height: 30px;right: 10px;
160 filter:grayscale(1);
161 }
162 }
163 .item:hover{background: #F8F4FF;
164 .date{
165 background: var(--el-color-primary);
166 .day{color: #fff;}
167 p{color: #fff;}
168 }
169 .item-body{
170 h3{color: var(--el-color-primary);}
171 }
172 }
173 }
174
175 @media (max-width: 500px) {
176 .box{width: 100%}
177 .forWei {
178 display: block;
179 }
180 .forPc{display: none}
181 :deep(.el-tabs__nav-scroll){overflow: auto;}
182 :deep(.el-card__body){padding: 10px;}
183 .flexBody{display: block;background: transparent;}
184 .infoPart{background: #fff;padding: 10px;margin:0 15px}
185 .firstItem{padding: 10px 20px;
186 .date{
187 font-size: 14px;}
188 h3{margin: 10px 0;
189 font-size: 14px;}
190 .go{font-size: 12px;}
191 }
192 .newsLine{
193 .item{height: 50px;
194 .date{height: 34px;width: 44px;margin: 0;
195 .day{font-size: 16px;}
196 p{font-size: 12px;}
197 }
198 .item-body{width: 80%;
199 h3{font-size: 14px;}
200 }
201 }
202 .go{display: none;}
203
204 }
205 }
206 </style>
...@@ -39,10 +39,10 @@ ...@@ -39,10 +39,10 @@
39 <el-form-item :label="language==1?'Age group':'年龄组'"> 39 <el-form-item :label="language==1?'Age group':'年龄组'">
40 <el-input v-model="wdsfData.ageGroup" disabled/> 40 <el-input v-model="wdsfData.ageGroup" disabled/>
41 </el-form-item> 41 </el-form-item>
42 <el-form-item :label="language==1?'舞种':'Division'"> 42 <el-form-item :label="language==0?'舞种':'Division'">
43 <el-input v-model="wdsfData.division" disabled/> 43 <el-input v-model="wdsfData.division" disabled/>
44 </el-form-item> 44 </el-form-item>
45 <el-form-item :label="language==1?'状态':'Status'"> 45 <el-form-item :label="language==0?'状态':'Status'">
46 <el-input v-model="wdsfData.status" disabled/> 46 <el-input v-model="wdsfData.status" disabled/>
47 </el-form-item> 47 </el-form-item>
48 <div class="h30"></div> 48 <div class="h30"></div>
...@@ -63,15 +63,18 @@ ...@@ -63,15 +63,18 @@
63 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> 63 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
64 </el-radio-group> 64 </el-radio-group>
65 </el-form-item> 65 </el-form-item>
66 <el-form-item :label="language==0?'证件号':'Passport number'" required> 66 <el-form-item :label="language==0?'有效证件':'Valid Certificates Scanning Copy'" required>
67 <el-input v-model="wdsfData.passportNumber"/> 67 <file-upload v-model="wdsfData.passportUrl" :limit="1" :is-show-tip="false"
68 </el-form-item> 68 :button-text="language==0?'上传':'Upload'"/>
69 <el-form-item :label="language==0?'有效证件':'Passport File'" required>
70 <file-upload v-model="wdsfData.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/>
71 <div class="tip"> 69 <div class="tip">
72 <span>用途</span> 70 <span v-if="language==0">请上传护照副本,用于认证 </span>
71 <span v-else>Please upload a passport copy for authentication</span>
73 </div> 72 </div>
74 </el-form-item> 73 </el-form-item>
74 <el-form-item :label="language==0?'证件号':'Passport number'" required>
75 <el-input v-model="wdsfData.passportNumber"/>
76 </el-form-item>
77
75 <el-form-item :label="language==0?'出生日期':'Birthday'"> 78 <el-form-item :label="language==0?'出生日期':'Birthday'">
76 <el-date-picker 79 <el-date-picker
77 v-model="wdsfData.birthday" 80 v-model="wdsfData.birthday"
...@@ -218,9 +221,9 @@ function sendsmsMsg() { ...@@ -218,9 +221,9 @@ function sendsmsMsg() {
218 function checkCard() { 221 function checkCard() {
219 if (!form.value.card) { 222 if (!form.value.card) {
220 if (language.value == 0) { 223 if (language.value == 0) {
221 ElMessage.warning('请填写WDSF卡号') 224 ElMessage.warning('WDSF会员号错误')
222 } else { 225 } else {
223 ElMessage.warning('Please fill in your WDSF code') 226 ElMessage.warning('WDSF MIN is Error')
224 } 227 }
225 return 228 return
226 } 229 }
...@@ -252,9 +255,9 @@ function codeSuccess(msg) { ...@@ -252,9 +255,9 @@ function codeSuccess(msg) {
252 if (wdsfData.value.wdsfFlag == '0') { 255 if (wdsfData.value.wdsfFlag == '0') {
253 isCodeTrue.value = 0 256 isCodeTrue.value = 0
254 if (language.value == 0) { 257 if (language.value == 0) {
255 ElMessage.warning('WDSF号错误') 258 ElMessage.warning('WDSF会员号错误')
256 } else { 259 } else {
257 ElMessage.warning('WDSF ID is Error') 260 ElMessage.warning('WDSF MIN is Error')
258 } 261 }
259 } 262 }
260 }).catch(err => { 263 }).catch(err => {
...@@ -289,16 +292,12 @@ function goBack() { ...@@ -289,16 +292,12 @@ function goBack() {
289 } 292 }
290 293
291 function next() { 294 function next() {
292 // if (!wdsfData.value.birthday) {
293 // ElMessage.warning('Please fill in your birthday')
294 // return
295 // }
296 if (!wdsfData.value.passportNumber) { 295 if (!wdsfData.value.passportNumber) {
297 ElMessage.warning('Please fill in your passport number') 296 ElMessage.warning(language.value == 0 ?'请填写护照号':'Please fill in your passport number')
298 return 297 return
299 } 298 }
300 if (!wdsfData.value.passportUrl) { 299 if (!wdsfData.value.passportUrl) {
301 ElMessage.warning('Please upload your passport file') 300 ElMessage.warning(language.value == 0 ? '请上传护照文件' :'Please upload your passport file')
302 return 301 return
303 } 302 }
304 if (wdsfData.value.personFlag == '0') { 303 if (wdsfData.value.personFlag == '0') {
......
...@@ -112,10 +112,9 @@ function verifyCode() { ...@@ -112,10 +112,9 @@ function verifyCode() {
112 function codeSuccess(msg) { 112 function codeSuccess(msg) {
113 console.log('验证通过' + msg); 113 console.log('验证通过' + msg);
114 isShow.value = false 114 isShow.value = false
115 isCodeTrue.value = true
116 counting.value = true
117 getCaptchaSms({account: form.value.account}).then(res => { 115 getCaptchaSms({account: form.value.account}).then(res => {
118 116 counting.value = true
117 isCodeTrue.value = true
119 }) 118 })
120 } 119 }
121 120
...@@ -144,6 +143,11 @@ const next = () => { ...@@ -144,6 +143,11 @@ const next = () => {
144 return 143 return
145 } 144 }
146 if (!isCodeTrue.value) { 145 if (!isCodeTrue.value) {
146 if (language.value == 0) {
147 ElMessage.warning('请发送验证码')
148 } else {
149 ElMessage.warning('Please send the verification code')
150 }
147 return 151 return
148 } 152 }
149 checkRegisterCode(form.value).then(res => { 153 checkRegisterCode(form.value).then(res => {
......
...@@ -25,12 +25,16 @@ ...@@ -25,12 +25,16 @@
25 <el-form class="d-form" size="large" :model="form" ref="registerRef" 25 <el-form class="d-form" size="large" :model="form" ref="registerRef"
26 :rules="registerRules" label-width="120" :label-position="language==0?'left':'top'" 26 :rules="registerRules" label-width="120" :label-position="language==0?'left':'top'"
27 style="max-width: 500px;margin: auto"> 27 style="max-width: 500px;margin: auto">
28 <el-form-item :label="language==0?'所属国家/地区':'Country'" required> 28 <el-form-item label="是否国家队" v-if="language==0">
29
30 </el-form-item>
31 <el-form-item :label="language==0?'代表国家/地区':'Representing'" required prop="countryId">
29 <el-select filterable v-model="form.countryId"> 32 <el-select filterable v-model="form.countryId">
30 <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/> 33 <!-- <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/>-->
34 <el-option v-for="item in countryList" :key="item.id" :label="item.eoc||item.enName" :value="item.id"/>
31 </el-select> 35 </el-select>
32 </el-form-item> 36 </el-form-item>
33 <el-form-item :label="language==0?'详细地址':'Address'" required prop="address"> 37 <el-form-item :label="language==0?'详细地址':'Address'" prop="address">
34 <el-cascader v-if="form.countryId == 240" 38 <el-cascader v-if="form.countryId == 240"
35 v-model="regionArr" 39 v-model="regionArr"
36 style="width: 100%;" 40 style="width: 100%;"
...@@ -39,24 +43,24 @@ ...@@ -39,24 +43,24 @@
39 /> 43 />
40 <el-input type="textarea" v-model="form.address" class="mt10"/> 44 <el-input type="textarea" v-model="form.address" class="mt10"/>
41 </el-form-item> 45 </el-form-item>
42 <el-form-item :label="language==0?'机构名称':'Institution Name'" required prop="teamName"> 46 <!-- <el-form-item :label="language==0?'团体类型':'Group type'" prop="type" required>-->
47 <!-- <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;">-->
48 <!-- <el-option :label="language==0?'普通院校':'School'" value="0" />-->
49 <!-- <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" />-->
50 <!-- <el-option :label="language==0?'培训机构/俱乐部':'Company/Club'" value="2" />-->
51 <!-- <el-option :label="language==0?'地方协会':'Local Association'" value="3" />-->
52 <!-- <el-option :label="language==0?'国家协会':'National Association'" value="4" />-->
53 <!-- </el-select>-->
54 <!-- </el-form-item>-->
55 <el-form-item :label="language==0?'团体名称':'Team Name'" required prop="teamName">
43 <el-input type="text" v-model="form.teamName" :placeholder="language==0?'请输入内容':''"/> 56 <el-input type="text" v-model="form.teamName" :placeholder="language==0?'请输入内容':''"/>
44 </el-form-item> 57 </el-form-item>
45 <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag"> 58 <!-- <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag">-->
46 <el-select v-model="form.majorFlag"> 59 <!-- <el-select v-model="form.majorFlag">-->
47 <el-option :label="language==0?'专业':'Professional'" value="1" /> 60 <!-- <el-option :label="language==0?'专业':'Professional'" value="1" />-->
48 <el-option :label="language==0?'业余':'Amateur'" value="0" /> 61 <!-- <el-option :label="language==0?'业余':'Amateur'" value="0" />-->
49 </el-select> 62 <!-- </el-select>-->
50 </el-form-item> 63 <!-- </el-form-item>-->
51 <el-form-item :label="language==0?'团体类型':'Group type'" prop="type" required>
52 <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;">
53 <el-option :label="language==0?'普通院校':'School'" value="0" />
54 <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" />
55 <el-option :label="language==0?'培训机构/俱乐部':'Company/Club'" value="2" />
56 <el-option :label="language==0?'地方协会':'Local Association'" value="3" />
57 <el-option :label="language==0?'国家协会':'National Association'" value="4" />
58 </el-select>
59 </el-form-item>
60 <el-form-item :label="language==0?'联系人姓名':'Contact Name'" required prop="contactName"> 64 <el-form-item :label="language==0?'联系人姓名':'Contact Name'" required prop="contactName">
61 <el-input type="text" v-model="form.contactName" :placeholder="language==0?'请输入内容':''"/> 65 <el-input type="text" v-model="form.contactName" :placeholder="language==0?'请输入内容':''"/>
62 </el-form-item> 66 </el-form-item>
...@@ -66,7 +70,7 @@ ...@@ -66,7 +70,7 @@
66 <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail"> 70 <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail">
67 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> 71 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/>
68 </el-form-item> 72 </el-form-item>
69 <el-form-item prop="photo" required :label="language==0?'机构LOGO':'Organizational photos'"> 73 <el-form-item prop="photo" :label="language==0?'机构LOGO':'Organizational photos'">
70 <ImageUpload2 74 <ImageUpload2
71 v-model="form.photo" :crop-height="200" :crop-width="200" :limit="1" 75 v-model="form.photo" :crop-height="200" :crop-width="200" :limit="1"
72 :is-show-tip="false" 76 :is-show-tip="false"
...@@ -137,14 +141,14 @@ const registerRules = ref( ...@@ -137,14 +141,14 @@ const registerRules = ref(
137 {required: true, trigger: 'blur', message: '请输入您的密码'}, 141 {required: true, trigger: 'blur', message: '请输入您的密码'},
138 {min: 6, max: 16, message: '用户密码长度必须介于 6 和 16 之间', trigger: 'blur'} 142 {min: 6, max: 16, message: '用户密码长度必须介于 6 和 16 之间', trigger: 'blur'}
139 ], 143 ],
140 confirmPassword: [{required: true, trigger: 'blur', message: '请再次输入您的密码'},], 144 confirmPassword: [{required: true, trigger: 'blur'},],
141 countryId: [{required: true, trigger: 'blur', message: '请选择所属国家/地区'},], 145 countryId: [{required: true, trigger: 'blur'},],
142 address: [{required: true, trigger: 'blur', message: '请输入地址'},], 146 // address: [{required: true, trigger: 'blur', message: '请输入地址'},],
143 teamName: [{required: true, trigger: 'blur', message: '请输入'},], 147 teamName: [{required: true, trigger: 'blur'},],
144 contactName: [{required: true, trigger: 'blur', message: '请输入'},], 148 contactName: [{required: true, trigger: 'blur'},],
145 contactTel: [{required: true, trigger: 'blur', message: '请输入'},], 149 contactTel: [{required: true, trigger: 'blur'},],
146 contactEmail: [{required: true, trigger: 'blur', message: '请输入'},], 150 contactEmail: [{required: true, trigger: 'blur'},],
147 photo: [{required: true, trigger: 'blur', message: '请上传'},], 151 // photo: [{required: true, trigger: 'blur', message: '请上传'},],
148 }) 152 })
149 const vconfirmPassword = () => { 153 const vconfirmPassword = () => {
150 if (form.value.password !== form.value.confirmPassword) { 154 if (form.value.password !== form.value.confirmPassword) {
...@@ -178,11 +182,19 @@ const goStep3 = () => { ...@@ -178,11 +182,19 @@ const goStep3 = () => {
178 ElMessage.warning(language.value == 0?'请勾选接受':'Please check the acceptance') 182 ElMessage.warning(language.value == 0?'请勾选接受':'Please check the acceptance')
179 return 183 return
180 } 184 }
181 185 if (!form.value.password) {
186 ElMessage.warning(language.value == 0?'请输入密码':'Please enter password')
187 return
188 }
189 if (!form.value.password) {
190 ElMessage.warning(language.value == 0?'请输入密码':'Please enter password')
191 return
192 }
182 loading.value = true 193 loading.value = true
183 delete form.value.confirmPassword 194 delete form.value.confirmPassword
184 form.value.regionId = regionArr.value.pop() 195 form.value.regionId = regionArr.value.pop()
185 form.value.username= props.accont 196 form.value.username= props.accont
197 console.log('pass')
186 match.pcRegisterTeam(form.value).then(res => { 198 match.pcRegisterTeam(form.value).then(res => {
187 setToken(res.data.token) 199 setToken(res.data.token)
188 loading.value = false 200 loading.value = false
...@@ -200,6 +212,9 @@ const showAgreeMent = () => { ...@@ -200,6 +212,9 @@ const showAgreeMent = () => {
200 } 212 }
201 onMounted(() => { 213 onMounted(() => {
202 console.log(props) 214 console.log(props)
215 if(props.accont.indexOf('@')>-1){
216 form.value.contactEmail=props.accont
217 }
203 }) 218 })
204 </script> 219 </script>
205 220
......
...@@ -41,19 +41,19 @@ ...@@ -41,19 +41,19 @@
41 <table class="table table-striped"> 41 <table class="table table-striped">
42 <thead> 42 <thead>
43 <tr class="bg-lineg"> 43 <tr class="bg-lineg">
44 <td>{{ language==0?'名次':'RANK' }}</td> 44 <td class="text-center">{{ language==0?'名次':'RANK' }}</td>
45 <td>{{ language==0?'组合':'COUPLE' }}</td> 45 <td class="text-center">{{ language==0?'组合':'COUPLE' }}</td>
46 <td width="100">{{ language==0?'国家':'COUNTRY' }}</td> 46 <td class="text-center w15">{{ language==0?'国家':'COUNTRY' }}</td>
47 <td width="120" class="text-center">START #</td> 47 <td class="text-center w15">START #</td>
48 <td width="120" class="text-center" v-if="index>0">BASE</td> 48 <td class="text-center w15" v-if="index>0">BASE</td>
49 <td width="120" class="text-center" v-if="index>0">POINTS</td> 49 <td class="text-center w15" v-if="index>0">POINTS</td>
50 </tr> 50 </tr>
51 </thead> 51 </thead>
52 <tbody> 52 <tbody>
53 <tr v-for="(l,kndex) in m.rows"> 53 <tr v-for="(l,kndex) in m.rows">
54 <td>{{ l.RANK }}</td> 54 <td class="text-center">{{ l.RANK }}</td>
55 <td>{{ l.COUPLE}}</td> 55 <td class="text-center">{{ l.COUPLE}}</td>
56 <td>{{ l.COUNTRY }}</td> 56 <td class="text-center">{{ l.COUNTRY }}</td>
57 <td class="text-primary text-center">{{ l.START }}</td> 57 <td class="text-primary text-center">{{ l.START }}</td>
58 <td class="text-center" v-if="index>0">{{l.BASE}}</td> 58 <td class="text-center" v-if="index>0">{{l.BASE}}</td>
59 <td v-if="index>0" class="text-primary text-center">{{ l.POINTS }}</td> 59 <td v-if="index>0" class="text-primary text-center">{{ l.POINTS }}</td>
...@@ -176,5 +176,5 @@ h3{background: #F5F0FF;margin: 0;padding: 10px 0; ...@@ -176,5 +176,5 @@ h3{background: #F5F0FF;margin: 0;padding: 10px 0;
176 } 176 }
177 } 177 }
178 } 178 }
179 179 .w15{width: 15%;}
180 </style> 180 </style>
......
1 <template>
2 <div>
3 <div class="panel-box">
4 <h4 class="tran-h4">报名须知</h4>
5 <div class="pd20">
6 <el-form-item label="附件下载:">
7 <el-link :href="fillImgUrl_train(activity.signNoticeAttachment?.url)" target="_blank" type="primary">《报名须知》</el-link>
8 </el-form-item>
9 <el-form-item>
10 <el-checkbox v-model="checked" label="我确认已经仔细阅读报名须知" />
11 </el-form-item>
12 </div>
13
14 </div>
15 <div class="panel-footer text-center">
16 <el-button :disabled="!checked" type="primary" round @click="next">阅读并同意</el-button>
17 </div>
18 </div>
19 </template>
20
21 <script setup>
22 import { ref } from 'vue'
23
24 const emit = defineEmits(['next'])
25
26 defineProps({
27 activity: {
28 type: Object,
29 default: () => {}
30 }
31 })
32 const checked = ref(false)
33
34 function next() {
35 if (checked.value) {
36 emit('next')
37 }
38 }
39
40 </script>
41
42 <style scoped lang="scss">
43 .panel-box{
44 border:1px solid #F5766A;
45 }
46 </style>
1 <template>
2 <div>
3 <div class="panel-box">
4 <h3 class="train-h3">个人信息</h3>
5 <div class="panel-body">
6 <el-form
7 ref="ruleFormRef"
8 label-width="100"
9 class="signForm"
10 :model="form"
11 style="width: 100%;"
12 >
13 <el-row>
14 <el-col :span="8" :offset="2">
15 <el-form-item label="&nbsp;" prop="photo" required>
16 <image-upload
17 v-model="form.photo"
18 disabled
19 class="threeFour"
20 :limit="1"
21 />
22 </el-form-item>
23 </el-col>
24 <el-col :span="10">
25 <el-form-item label="会员编号" prop="perCode" required>
26 <el-input
27 v-model="form.perCode"
28 readonly
29 placeholder="请输入会员编号"
30 />
31 </el-form-item>
32 <el-form-item label="有效期" prop="validityDate" required>
33 <el-input
34 v-model="form.validityDate"
35 readonly
36 placeholder="请输入有效期"
37 />
38 </el-form-item>
39 <el-form-item label="姓名" prop="name" required>
40 <el-input v-model="form.name" placeholder="请输入姓名" readonly />
41 </el-form-item>
42 <el-form-item label="性别" prop="sex" required>
43 <el-radio-group v-model="form.sex" disabled>
44 <el-radio value="0" size="large"></el-radio>
45 <el-radio value="1" size="large"></el-radio>
46 </el-radio-group>
47 </el-form-item>
48 <el-form-item label="证件类型" prop="idcType" required>
49 <el-select
50 v-model="form.idcType"
51 disabled
52 style="width: 100%;"
53 placeholder="请选择证件类型"
54 >
55 <el-option
56 v-for="item in certificates"
57 :key="item.value"
58 :label="item.label"
59 :value="item.value"
60 />
61 </el-select>
62 </el-form-item>
63 <el-form-item label="证件号码" prop="idcCode" required>
64 <el-input
65 v-model="form.idcCode"
66 readonly
67 placeholder="请输入证件号码"
68 />
69 </el-form-item>
70 <el-form-item label="出生日期" prop="birth" required>
71 <el-date-picker
72 v-model="form.birth"
73 readonly
74 type="date"
75 format="YYYY-MM-DD"
76 value-format="YYYY-MM-DD"
77 placeholder="请选择出生日期"
78 style="width: 100%;"
79 />
80 </el-form-item>
81 <el-form-item label="联系方式" prop="phone" required>
82 <el-input v-model="form.phone" placeholder="请输入联系方式" readonly />
83 </el-form-item>
84 <el-form-item label="所在地区" prop="cityName" required>
85 <el-input v-model="form.cityName" placeholder="请输入所在地区" readonly />
86 </el-form-item>
87 <el-form-item label="详细地址" prop="address" required>
88 <el-input v-model="form.address" placeholder="请输入详细地址" readonly />
89 </el-form-item>
90 </el-col>
91 </el-row>
92 </el-form>
93 </div>
94
95 </div>
96 <div class="panel-footer text-center">
97 <el-button class="back" type="" round @click="prev">上一步</el-button>
98 <el-button type="primary" round @click="next">下一步</el-button>
99 </div>
100 </div>
101 </template>
102
103 <script setup>
104 import { computed, ref } from 'vue'
105
106
107 const emit = defineEmits(['prev', 'next'])
108
109 const props = defineProps({
110 personal: {
111 type: Object,
112 default: () => {}
113 }
114 })
115 const form = computed(() => props.personal)
116 const certificates = ref([
117 {
118 value: '0',
119 label: '居民身份证'
120 },
121 {
122 value: '1',
123 label: '护照'
124 },
125 {
126 value: '2',
127 label: '其他'
128 }
129 ])
130
131 function prev() {
132 emit('prev')
133 }
134
135 function next() {
136 emit('next')
137 }
138
139 </script>
140
141 <style scope lang="scss">
142 .panel-box{
143 border:1px solid #F5766A;
144 padding:10px 20px;
145 }
146 .train-h3{
147 font-size: 16px;
148 font-weight: 600;
149 color: var(--el-color-primary);
150 padding-left: 20px;
151 border-left: 3px solid var(--el-color-primary) ;
152 }
153 .back{
154 border:1px solid var(--el-color-primary) ;
155 color:var(--el-color-primary)
156 }
157
158 .app-container {
159 padding: 0;
160 background: #f5f7f9;
161 }
162
163 .panel-footer .el-button--success {
164 background: linear-gradient(270deg, #39dba7, #38ef7d);
165 border: none;
166 padding: 0 40px;
167 font-size: 16px;
168 }
169
170 .signForm {
171 .el-form-item__label {
172 color: #4c5359;
173 }
174 }
175
176 .tip {
177 font-size: 13px;
178 color: #999;
179 margin: 10px 0;
180
181 i {
182 color: red;
183 margin: 0 4px 0 0;
184 }
185 }
186
187 .threeFour {
188 width: 100%;
189 }
190
191 :deep(.el-upload--picture-card) {
192 width: 120px;
193 height: 160px;
194 }
195
196 :deep(.el-upload-list--picture-card .el-upload-list__item) {
197 width: 120px;
198 height: 160px;
199 }
200
201 .red {
202 color: #f56c6c;
203 }
204 </style>
1 <template>
2 <div>
3 <div class="panel-box">
4 <h3 class="train-h3">培训信息</h3>
5 <div class="panel-body">
6 <el-form
7 ref="formRef"
8 label-width="120px"
9 class="signForm"
10 :model="form"
11 :rules="rules"
12 style="width: 100%;"
13 >
14 <el-row :gutter="20">
15 <el-col :span="12">
16 <el-form-item label="所在单位名称" prop="unitName">
17 <el-input v-model="form.unitName" placeholder="请输入所在单位名称" />
18 </el-form-item>
19 </el-col>
20 <el-col :span="12">
21 <el-form-item label="现任职务" prop="unitRole">
22 <el-input v-model="form.unitRole" placeholder="请输入现任职务" />
23 </el-form-item>
24 </el-col>
25 <el-col v-if="activity.invoiceFlag=='1'" :span="12">
26 <el-form-item label="是否需要发票" prop="invoiceFlag" required>
27 <el-radio-group v-model="form.invoiceFlag">
28 <el-radio value="1" size="large"></el-radio>
29 <el-radio value="0" size="large"></el-radio>
30 </el-radio-group>
31 </el-form-item>
32 </el-col>
33 <el-col v-if="activity.invoiceFlag=='1'" :span="12">
34 <el-form-item v-if="form.invoiceFlag=='1'" label="发票形式" prop="invoiceType" required>
35 <el-radio-group v-model="form.invoiceType">
36 <el-radio v-if="activity.invoiceType.indexOf('0')>-1" value="0" size="large">电子票</el-radio>
37 <el-radio v-if="activity.invoiceType.indexOf('1')>-1" value="1" size="large">纸质专票</el-radio>
38 <el-radio v-if="activity.invoiceType.indexOf('2')>-1" value="2" size="large">纸质普票</el-radio>
39 </el-radio-group>
40 </el-form-item>
41 </el-col>
42 <el-col>
43 <el-form-item v-if="activity.invoiceFlag=='1'" label="开票信息" prop="invoiceInfo">
44 <el-input v-model="form.invoiceInfo" placeholder="请输入开票信息" />
45 </el-form-item>
46 </el-col>
47 <el-col v-for="c in customInfo" :key="c.id" :span="12">
48 <el-form-item :label="c.name">
49 <el-input v-if="c.type=='1'" v-model="form.customInfoObj[c.id]" :placeholder="`请输入${c.name}`" />
50 <image-upload v-if="c.type=='2'" v-model="form.customInfoObj[c.id]" :limit="1" />
51 <file-upload v-if="c.type=='3'" v-model="form.customInfoObj[c.id]" :limit="1" />
52 <el-select v-if="c.type=='4'" v-model="form.customInfoObj[c.id]">
53 <el-option v-for="o in c.options" :key="o.id" :label="o.name" :value="o.id" />
54 </el-select>
55 </el-form-item>
56 </el-col>
57 </el-row>
58 </el-form>
59 </div>
60 </div>
61 <div class="panel-footer text-center">
62 <el-button class="back" type="" round @click="prev">上一步</el-button>
63 <el-button type="primary" round @click="next">下一步</el-button>
64 </div>
65 </div>
66 </template>
67
68 <script setup>
69 import { reactive, watch, computed } from 'vue'
70 import { getCurrentInstance, onMounted } from '@vue/runtime-core'
71 import * as train from '@/apiPc/train'
72 import { toRefs } from '@vueuse/shared'
73 import { useRoute } from 'vue-router'
74 import _ from 'lodash'
75 import ImageUpload from '@/components/ImageUpload'
76 import FileUpload from '@/components/FileUpload'
77
78 const emit = defineEmits(['prev', 'next'])
79 const { proxy } = getCurrentInstance()
80 const route = useRoute()
81
82 const props = defineProps({
83 activity: {
84 type: Object,
85 default: () => {}
86 }
87 })
88
89 const customInfo = computed(() => {
90 if (props.activity.customInfo) {
91 return JSON.parse(props.activity.customInfo).info
92 } else {
93 return []
94 }
95 })
96
97 const data = reactive({
98 form: {
99 invoiceFlag: '1',
100 customInfoObj: {}
101 },
102 rules: {
103 unitName: { required: true, message: '所在单位名称不能为空', trigger: 'blur' },
104 unitRole: { required: true, message: '现任职务不能为空', trigger: 'blur' },
105 invoiceInfo: { required: true, message: '开票信息不能为空', trigger: 'blur' },
106 invoiceType: { required: true, message: '发票类型不能为空', trigger: 'change' }
107 }
108 })
109 const { form, rules } = toRefs(data)
110
111 watch(() => props.activity.invoiceFlag, (val) => {
112 if (val == '1') {
113 if (!form.value.invoiceType) {
114 form.value.invoiceType = _.orderBy(props.activity.invoiceType.split(','))[0]
115 }
116 }
117 }, { immediate: true })
118
119 onMounted(() => {
120 train.getTrainPersonalInfo(route.params.id).then((res) => {
121 if (res.data) {
122 form.value = res.data
123 if (res.data.customInfo) {
124 form.value.customInfoObj = JSON.parse(res.data.customInfo)
125 } else {
126 form.value.customInfoObj = {}
127 }
128 }
129 })
130 })
131
132 function prev() {
133 emit('prev')
134 }
135
136 function next() {
137 proxy.$refs['formRef'].validate((valid) => {
138 if (valid) {
139 form.value.activityId = route.params.id
140 form.value.customInfo = JSON.stringify(form.value.customInfoObj)
141 train.savePersonalInfo(form.value).then(() => {
142 proxy.$modal.msgSuccess('保存成功')
143 emit('next')
144 })
145 }
146 })
147 }
148
149 </script>
150
151 <style scope lang="scss">
152 .panel-box{
153 border:1px solid #F5766A;
154 padding:10px 20px;
155 }
156 .train-h3{
157 font-size: 16px;
158 font-weight: 600;
159 color: var(--el-color-primary);
160 padding-left: 20px;
161 border-left: 3px solid var(--el-color-primary) ;
162 }
163 .back{
164 border:1px solid var(--el-color-primary) ;
165 color:var(--el-color-primary)
166 }
167
168 .app-container {
169 padding: 0;
170 background: #f5f7f9;
171 }
172
173 .panel-footer .el-button--success {
174 background: linear-gradient(270deg, #39dba7, #38ef7d);
175 border: none;
176 padding: 0 40px;
177 font-size: 16px;
178 }
179
180 .signForm {
181 .el-form-item__label {
182 color: #4c5359;
183 }
184 }
185
186 .tip {
187 font-size: 13px;
188 color: #999;
189 margin: 10px 0;
190
191 i {
192 color: red;
193 margin: 0 4px 0 0;
194 }
195 }
196
197 .threeFour {
198 width: 100%;
199 }
200
201 :deep(.el-upload--picture-card) {
202 width: 120px;
203 height: 160px;
204 }
205
206 :deep(.el-upload-list--picture-card .el-upload-list__item) {
207 width: 120px;
208 height: 160px;
209 }
210
211 .red {
212 color: #f56c6c;
213 }
214
215 .el-form-item{align-items: center;}
216 </style>
1 <template>
2 <div>
3 <div class="box">
4 <el-breadcrumb class="mt20 forPc mb20" :separator-icon="ArrowRight">
5 <el-breadcrumb-item :to="{ path: '/' }">
6 <el-icon>
7 <HomeFilled />
8 </el-icon>
9 首页
10 </el-breadcrumb-item>
11 <el-breadcrumb-item :to="{ path: '/competition' }">竞赛</el-breadcrumb-item>
12 <el-breadcrumb-item>竞赛日程</el-breadcrumb-item>
13 </el-breadcrumb>
14 <div class="kind">
15 <ul>
16 <li>
17 <label>状态:</label>
18 <el-radio-group v-model="query.flag" @change="searchList">
19 <el-radio-button value="">全部</el-radio-button>
20 <el-radio-button value="1">未开始</el-radio-button>
21 <el-radio-button value="2">进行中</el-radio-button>
22 <el-radio-button value="3">已结束</el-radio-button>
23 </el-radio-group>
24 </li>
25 <li>
26 <label>省份:</label>
27 <el-radio-group v-model="query.projectId" @change="searchList">
28 <el-radio-button value="">全部</el-radio-button>
29 <el-radio-button v-for="p in projectList" :key="p.provinceId" :value="p.provinceId">{{ p.provinceName }}</el-radio-button>
30 </el-radio-group>
31 </li>
32 <li>
33 <label>时间:</label>
34 <el-radio-group v-model="query.yearMonth" @change="searchList">
35 <el-radio-button value="">全部</el-radio-button>
36 <el-radio-button v-for="m in monthList" :key="m" :value="m" />
37 </el-radio-group>
38 </li>
39 </ul>
40 </div>
41 </div>
42
43 <div class="box">
44 <div class="listTitle">
45 <h3><label>培训列表</label></h3>
46 <div class="search">
47 <el-input
48 v-model.trim="query.trainName"
49 placeholder="请输入培训名称查询"
50 class="input-with-select" @keydown.enter="searchList"
51 >
52 <template #append>
53 <el-button type="success" round @click="searchList">查询</el-button>
54 </template>
55 </el-input>
56 </div>
57 </div>
58
59 <el-row :gutter="30" class="pt-20">
60 <el-col v-for="n in list" :key="n" :lg="6" :md="8" :sm="12" class="content">
61 <train-card :data="n" @click="goDetail(n.id)">
62 <!-- <template #image>-->
63 <!-- <el-button @click="goDetail(n.id)">详情</el-button>-->
64 <!-- </template>-->
65 <div class="trrbtn">
66 <a v-if="n.signStatus=='0'" disabled class="roundLabel gold-btn">未开始</a>
67 <a v-if="n.signStatus=='1'" class="roundLabel red-btn" round>去报名</a>
68 <a v-if="n.signStatus=='2'" class="roundLabel gray-btn" round disabled>已结束</a>
69 </div>
70 </train-card>
71 </el-col>
72 </el-row>
73 <div v-if="total > query.pageSize" class="pc-page-box">
74 <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" />
75 </div>
76 <el-empty v-if="list.length == 0" description="暂无数据" />
77 </div>
78 </div>
79 </template>
80
81 <script setup>
82 import { ref, onMounted } from 'vue'
83 import { useRouter } from 'vue-router'
84 import * as train from '@/apiPc/train'
85 import TrainCard from '@/viewsPc/components/trainCard'
86 import { ArrowRight } from '@element-plus/icons-vue'
87
88 const router = useRouter()
89 const list = ref([])
90 const projectList = ref([])
91 const monthList = ref([])
92 const total = ref(0)
93 const query = ref({
94 projectId: '',
95 flag: '',
96 yearMonth: '',
97 trainName: '',
98 pageSize: 12,
99 pageNum: 1
100 })
101
102 onMounted(() => {
103 getProvinceList()
104 getMonthList()
105 getList()
106 })
107
108 // 获取省
109 async function getProvinceList() {
110 const res = await train.getProvinceNames()
111 projectList.value = res.data
112 }
113
114 function getMonthList() {
115 const data = new Date()
116 // 获取年
117 let year = data.getFullYear()
118 // 获取月
119 let mon = data.getMonth() - 5
120 const arr = []
121
122 if (mon < 1) {
123 year = year - 1
124 mon = 12 + mon
125 }
126 for (let i = 0; i < 12; i++) {
127 if (mon <= 0) {
128 year = year + 1
129 mon = mon - 12
130 }
131 if (mon > 12) {
132 mon = 1
133 year = year + 1
134 }
135 if (mon < 10) {
136 mon = '0' + mon
137 }
138 arr.push(year + '-' + mon)
139 mon = mon * 1 + 1
140 }
141 monthList.value = arr
142 }
143
144 async function getList() {
145 const res = await train.getTrains(query.value)
146 list.value = res.rows
147 total.value = res.total
148 }
149
150 function searchList() {
151 query.value.pageNum = 1
152 getList()
153 }
154
155
156 function goDetail(id) {
157 const routeLocation = router.resolve({
158 name: 'trainDetail',
159 params: {
160 id: id
161 }
162 })
163 window.open(routeLocation.href, '_blank')
164 }
165 </script>
166
167 <style lang="scss" scoped>
168 .el-pagination {
169 justify-content: center;
170 --el-pagination-bg-color: none;
171 }
172
173 .kind {
174 background: #fff;
175 border-radius: 2px;
176 box-shadow: 0px 0px 46px 0px rgba(1,16,64,0.08);
177 margin:30px 0;
178
179 ul {
180 list-style: none;
181 padding: 30px 20px 10px;
182
183 li {
184 margin: 0 0 20px;
185 display: flex;border-bottom: 1px solid #E5E5E5;padding: 0 0 20px;
186 align-items: baseline;
187 &>label{flex: 0 0 auto;padding:0 20px;
188 border-left:3px solid var(--el-color-primary); position: relative;
189 top: 6px;}
190 }
191 li:last-child{border: none;margin: 0;}
192 }
193 }
194
195 .pagination-container {
196 height: 56px;
197 }
198 .listTitle {
199 display: flex;
200 justify-content: space-between;
201 align-items: center;
202 }
203
204 .cared1 {
205 background: darkgreen;
206 }
207 .cared2 {
208 background: gray;
209 }
210 .coach{
211 width: 58px;
212 height: 24px;
213 font-size: 14px;
214 font-weight: 400;
215 background: #FF8135;
216 color: #FFFFFF;
217 border-radius: 2px;
218 text-align: center;
219 line-height: 24px;
220 }
221 .judge{
222 width: 58px;
223 height: 24px;
224 font-size: 14px;
225 font-weight: 400;
226 color: #FFFFFF;
227 background: #00A1E6;
228 border-radius: 2px;
229 text-align: center;
230 line-height: 24px;
231 }
232 .jinDuan{
233 width: 58px;
234 height: 24px;
235 font-size: 14px;
236 font-weight: 400;
237 color: #FFFFFF;
238 background: #D3AA5A ;
239 border-radius: 2px;
240 text-align: center;
241 line-height: 24px;
242 }
243 .jinJi{
244 width: 58px;
245 height: 24px;
246 font-size: 14px;
247 font-weight: 400;
248 color: #FFFFFF;
249 background: #2FBAB6;
250 border-radius: 2px;
251 text-align: center;
252 line-height: 24px;
253 }
254 </style>
1 <template>
2 <div class="app-container">
3 <div class="box ph-30">
4 <div class="panel">
5 <div class="panel-head" style="width: 100%;">
6 <el-steps :active="active" align-center style="width: 100%;">
7 <el-step title="报名须知" />
8 <el-step title="个人信息完善" />
9 <el-step title="培训信息完善" />
10 <el-step title="培训考试选择" />
11 </el-steps>
12 </div>
13 <br>
14 <component
15 :is="StepInfo" :activity="activity" :personal="personal" :exam-list="examList" :train-list="trainList"
16 @prev="prev" @next="next" @publish="publish"
17 />
18 </div>
19 </div>
20 </div>
21 </template>
22
23 <script setup>
24 import { defineAsyncComponent, reactive, ref, watch } from 'vue'
25 import { onMounted } from '@vue/runtime-core'
26 import * as train from '@/apiPc/train'
27 import { toRefs } from '@vueuse/shared'
28 import { useRouter, useRoute } from 'vue-router'
29 import useUserStore from '@/store/modules/user'
30
31 const route = useRoute()
32 const router = useRouter()
33 const userStore = useUserStore()
34
35 const active = ref(-1)
36 const modules = import.meta.glob('./components/*.vue')
37
38 let StepInfo
39
40 const data = reactive({
41 activity: {},
42 examList: [],
43 trainList: [],
44 personal: {}
45 })
46 const { activity, examList, trainList, personal } = toRefs(data)
47
48 onMounted(() => {
49 if (!userStore.checkAndLogin()) {
50 return
51 }
52
53 if (!route.params.id) {
54 return
55 }
56
57 const step = route.query.step || '1'
58 active.value = (parseInt(step) - 1) || 0
59
60 train.getTrainDetails(route.params.id).then((res) => {
61 activity.value = res.data.activity
62 examList.value = res.data.examVoList
63 trainList.value = res.data.subjectTrainList
64
65 if (activity.value.signNoticeAttachment) {
66 activity.value.signNoticeAttachment = JSON.parse(activity.value.signNoticeAttachment)[0]
67 }
68 })
69
70 train.getPersonalInfo().then((res) => {
71 personal.value = res.data
72 })
73 })
74
75 watch(active, (val) => {
76 if (val !== -1) {
77 StepInfo = defineAsyncComponent(modules[`./components/step${val + 1}.vue`])
78 }
79 })
80
81 function next() {
82 active.value++
83 router.push({
84 query: { step: active.value + 1 }
85 })
86 }
87
88 function prev() {
89 active.value--
90 router.push({
91 query: { step: active.value + 1 }
92 })
93 }
94
95 function publish() {
96 router.replace({
97 name: 'trainList'
98 })
99 }
100 </script>
101
102 <style scoped lang="scss">
103 .app-container {
104 padding: 0;
105 background: #f5f7f9;
106 }
107
108 .panel{
109 padding: 20px 100px;
110 }
111 .panel-box{
112 border:1px solid #F5766A;
113 padding:10px 20px;
114 }
115
116 .panel-footer .el-button--success {
117 background: linear-gradient(270deg, #39dba7, #38ef7d);
118 border: none;
119 padding: 0 40px;
120 font-size: 16px;
121 }
122
123 .signForm {
124 .el-form-item__label {
125 color: #4c5359;
126 }
127 }
128
129 .tip {
130 font-size: 13px;
131 color: #999;
132 margin: 10px 0;
133
134 i {
135 color: red;
136 margin: 0 4px 0 0;
137 }
138 }
139
140 .threeFour {
141 width: 100%;
142 }
143
144 :deep(.el-upload--picture-card) {
145 width: 120px;
146 height: 160px;
147 }
148
149 :deep(.el-upload-list--picture-card .el-upload-list__item) {
150 width: 120px;
151 height: 160px;
152 }
153
154 .red {
155 color: #f56c6c;
156 }
157
158 .train-h3{
159 font-size: 16px;
160 font-weight: 600;
161 color: var(--el-color-primary);
162 padding-left: 20px;
163 border-left: 3px solid var(--el-color-primary) ;
164 }
165
166
167 </style>
...@@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => { ...@@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => {
82 rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') 82 rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
83 }, 83 },
84 '/dev-api': { 84 '/dev-api': {
85 // target: 'http://192.168.1.131:8081/', 85 target: 'http://192.168.1.131:8081/',
86 target: 'https://dance.itechtop.cn/stage-api', 86 // target: 'https://dance.itechtop.cn/stage-api',
87 changeOrigin: true, 87 changeOrigin: true,
88 rewrite: (p) => p.replace(/^\/dev-api/, '') 88 rewrite: (p) => p.replace(/^\/dev-api/, '')
89 } 89 }
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!