no message
Showing
42 changed files
with
1145 additions
and
472 deletions
public/file/bootstrap-table-resizable.js
0 → 100644
| 1 | /** | ||
| 2 | * @author: Dennis Hernández | ||
| 3 | * @webSite: http://djhvscf.github.io/Blog | ||
| 4 | * @version: v1.0.0 | ||
| 5 | */ | ||
| 6 | (function ($) { | ||
| 7 | 'use strict'; | ||
| 8 | |||
| 9 | var initResizable = function (that) { | ||
| 10 | //Deletes the plugin to re-create it | ||
| 11 | that.$el.colResizable({disable: true}); | ||
| 12 | |||
| 13 | //Creates the plugin | ||
| 14 | that.$el.colResizable({ | ||
| 15 | liveDrag: that.options.liveDrag, | ||
| 16 | fixed: that.options.fixed, | ||
| 17 | headerOnly: that.options.headerOnly, | ||
| 18 | minWidth: that.options.minWidth, | ||
| 19 | hoverCursor: that.options.hoverCursor, | ||
| 20 | dragCursor: that.options.dragCursor, | ||
| 21 | onResize: that.onResize, | ||
| 22 | onDrag: that.options.onResizableDrag, | ||
| 23 | resizeMode: that.options.resizeMode | ||
| 24 | }); | ||
| 25 | }; | ||
| 26 | |||
| 27 | $.extend($.fn.bootstrapTable.defaults, { | ||
| 28 | resizable: false, | ||
| 29 | liveDrag: false, | ||
| 30 | fixed: true, | ||
| 31 | headerOnly: false, | ||
| 32 | minWidth: 15, | ||
| 33 | hoverCursor: 'e-resize', | ||
| 34 | dragCursor: 'e-resize', | ||
| 35 | onResizableResize: function (e) { | ||
| 36 | return false; | ||
| 37 | }, | ||
| 38 | onResizableDrag: function (e) { | ||
| 39 | return false; | ||
| 40 | } | ||
| 41 | }); | ||
| 42 | |||
| 43 | var BootstrapTable = $.fn.bootstrapTable.Constructor, | ||
| 44 | _toggleView = BootstrapTable.prototype.toggleView, | ||
| 45 | _resetView = BootstrapTable.prototype.resetView; | ||
| 46 | |||
| 47 | BootstrapTable.prototype.toggleView = function () { | ||
| 48 | _toggleView.apply(this, Array.prototype.slice.apply(arguments)); | ||
| 49 | |||
| 50 | if (this.options.resizable && this.options.cardView) { | ||
| 51 | //Deletes the plugin | ||
| 52 | $(this.$el).colResizable({disable: true}); | ||
| 53 | } | ||
| 54 | }; | ||
| 55 | |||
| 56 | BootstrapTable.prototype.resetView = function () { | ||
| 57 | var that = this; | ||
| 58 | |||
| 59 | _resetView.apply(this, Array.prototype.slice.apply(arguments)); | ||
| 60 | |||
| 61 | if (this.options.resizable) { | ||
| 62 | // because in fitHeader function, we use setTimeout(func, 100); | ||
| 63 | setTimeout(function () { | ||
| 64 | initResizable(that); | ||
| 65 | }, 100); | ||
| 66 | } | ||
| 67 | }; | ||
| 68 | |||
| 69 | BootstrapTable.prototype.onResize = function (e) { | ||
| 70 | var that = $(e.currentTarget); | ||
| 71 | that.bootstrapTable('resetView'); | ||
| 72 | that.data('bootstrap.table').options.onResizableResize.apply(e); | ||
| 73 | } | ||
| 74 | })(jQuery); |
public/file/colResizable-1.6.js
0 → 100644
This diff is collapsed.
Click to expand it.
| ... | @@ -2,7 +2,7 @@ import request from '@/utils/request' | ... | @@ -2,7 +2,7 @@ import request from '@/utils/request' |
| 2 | 2 | ||
| 3 | export function getMaList(params) { | 3 | export function getMaList(params) { |
| 4 | return request({ | 4 | return request({ |
| 5 | url: `/league/competition/webList`, | 5 | url: `/league/competition/webList?topFlag=1&status=1`, |
| 6 | method: 'get', | 6 | method: 'get', |
| 7 | params: params | 7 | params: params |
| 8 | }) | 8 | }) |
| ... | @@ -252,13 +252,7 @@ export function getMyGroupForCptFilter(groupId, cptId, query) { | ... | @@ -252,13 +252,7 @@ export function getMyGroupForCptFilter(groupId, cptId, query) { |
| 252 | data: query | 252 | data: query |
| 253 | }) | 253 | }) |
| 254 | } | 254 | } |
| 255 | //todo | 255 | |
| 256 | export function bindWdsf(perId,card) { | ||
| 257 | return request({ | ||
| 258 | url: `/systemj/personInfo/bindWdsf/${perId}?card=${card}`, | ||
| 259 | method: 'post' | ||
| 260 | }) | ||
| 261 | } | ||
| 262 | export function getGroupPersonList(query,groupId) { | 256 | export function getGroupPersonList(query,groupId) { |
| 263 | return request({ | 257 | return request({ |
| 264 | url: `/systemj/personInfo/getPersonInfoListByGroupIdNoLabel/${groupId}`, | 258 | url: `/systemj/personInfo/getPersonInfoListByGroupIdNoLabel/${groupId}`, |
| ... | @@ -403,9 +397,8 @@ export function commitSign(data) { | ... | @@ -403,9 +397,8 @@ export function commitSign(data) { |
| 403 | } | 397 | } |
| 404 | export function getTotalFee(data) { | 398 | export function getTotalFee(data) { |
| 405 | return request({ | 399 | return request({ |
| 406 | url: `/league/expenseConfig/getTotalFee`, | 400 | url: `/league/expenseConfig/getTotalFee/${data.cptId}/${data.entryId}`, |
| 407 | method: 'post', | 401 | method: 'get' |
| 408 | data: data | ||
| 409 | }) | 402 | }) |
| 410 | } | 403 | } |
| 411 | export function getMemberInfoByCptId(cptId) { | 404 | export function getMemberInfoByCptId(cptId) { |
| ... | @@ -463,8 +456,8 @@ export function getMySignListTree(cptId, personId, teamId) { | ... | @@ -463,8 +456,8 @@ export function getMySignListTree(cptId, personId, teamId) { |
| 463 | export function getMySignInfoList(data) { | 456 | export function getMySignInfoList(data) { |
| 464 | return request({ | 457 | return request({ |
| 465 | url: `/league/sign/getMySignInfoList`, | 458 | url: `/league/sign/getMySignInfoList`, |
| 466 | method: 'post', | 459 | method: 'get', |
| 467 | data: data | 460 | params: data |
| 468 | }) | 461 | }) |
| 469 | } | 462 | } |
| 470 | export function saveMyGroupExtraInfo(data) { | 463 | export function saveMyGroupExtraInfo(data) { |
| ... | @@ -498,4 +491,18 @@ export function getPayedOrderPdf(cptId, groupId) { | ... | @@ -498,4 +491,18 @@ export function getPayedOrderPdf(cptId, groupId) { |
| 498 | method: 'get' | 491 | method: 'get' |
| 499 | }) | 492 | }) |
| 500 | } | 493 | } |
| 494 | //todo | ||
| 495 | export function bindWdsf(perId,card) { | ||
| 496 | return request({ | ||
| 497 | url: `/systemj/personInfo/bindWdsf/${perId}?card=${card}`, | ||
| 498 | method: 'post' | ||
| 499 | }) | ||
| 500 | } | ||
| 501 | export function getProjectPageByPerIds(query) { | ||
| 502 | return request({ | ||
| 503 | url: `/league/competitionProject/getProjectPageByPerIds/${query.cptId}/${query.perIds}`, | ||
| 504 | method: 'get', | ||
| 505 | params: query | ||
| 506 | }) | ||
| 507 | } | ||
| 501 | 508 | ... | ... |
src/assets/dance/fm_副本.jpg
0 → 100644
25.8 KB
src/assets/sign/tag040.png
0 → 100644
1.32 KB
| ... | @@ -182,7 +182,9 @@ aside { | ... | @@ -182,7 +182,9 @@ aside { |
| 182 | margin-bottom: 10px; | 182 | margin-bottom: 10px; |
| 183 | } | 183 | } |
| 184 | } | 184 | } |
| 185 | .m20{margin: 20px;} | ||
| 185 | .flexCenter{display: flex;align-items: center;justify-content: center;} | 186 | .flexCenter{display: flex;align-items: center;justify-content: center;} |
| 187 | .flexBetween{display: flex;align-items: center;justify-content: space-between;} | ||
| 186 | .primary-kx{border:1px solid var(--el-color-primary)!important;color: var(--el-color-primary)!important;} | 188 | .primary-kx{border:1px solid var(--el-color-primary)!important;color: var(--el-color-primary)!important;} |
| 187 | .primary-kx:hover{} | 189 | .primary-kx:hover{} |
| 188 | .border-info{background: rgba(69,61,234,0.04); | 190 | .border-info{background: rgba(69,61,234,0.04); |
| ... | @@ -222,8 +224,8 @@ aside { | ... | @@ -222,8 +224,8 @@ aside { |
| 222 | font-size: 24px;} | 224 | font-size: 24px;} |
| 223 | .el-dialog__headerbtn{font-size: 24px!important;color: #A0A0A0;} | 225 | .el-dialog__headerbtn{font-size: 24px!important;color: #A0A0A0;} |
| 224 | } | 226 | } |
| 225 | 227 | .w100{width: 100%;} | |
| 226 | .w200px{width: 200px;} | 228 | .w200px{min-width: 200px;} |
| 227 | .pt30{padding-top: 30px;} | 229 | .pt30{padding-top: 30px;} |
| 228 | .d-form-border{ | 230 | .d-form-border{ |
| 229 | border: 1px solid #E5E5E5;margin: 20px 0;padding: 20px} | 231 | border: 1px solid #E5E5E5;margin: 20px 0;padding: 20px} | ... | ... |
| ... | @@ -18,7 +18,7 @@ | ... | @@ -18,7 +18,7 @@ |
| 18 | :accept="accept" | 18 | :accept="accept" |
| 19 | > | 19 | > |
| 20 | <!-- 上传按钮 --> | 20 | <!-- 上传按钮 --> |
| 21 | <el-button type="primary" :disabled="props.disabled">选取文件</el-button> | 21 | <el-button type="primary" :disabled="props.disabled">{{ buttonText }}</el-button> |
| 22 | </el-upload> | 22 | </el-upload> |
| 23 | <!-- 上传提示 --> | 23 | <!-- 上传提示 --> |
| 24 | <div v-if="showTip && !disabled" class="el-upload__tip"> | 24 | <div v-if="showTip && !disabled" class="el-upload__tip"> |
| ... | @@ -89,6 +89,10 @@ const props = defineProps({ | ... | @@ -89,6 +89,10 @@ const props = defineProps({ |
| 89 | disabled: { | 89 | disabled: { |
| 90 | type: Boolean, | 90 | type: Boolean, |
| 91 | default: false | 91 | default: false |
| 92 | }, | ||
| 93 | buttonText:{ | ||
| 94 | type: String, | ||
| 95 | default: '上传文件' | ||
| 92 | } | 96 | } |
| 93 | }) | 97 | }) |
| 94 | const accept = computed(() => { | 98 | const accept = computed(() => { | ... | ... |
| ... | @@ -6,40 +6,21 @@ | ... | @@ -6,40 +6,21 @@ |
| 6 | 6 | ||
| 7 | <div class="home-menu forPc" style="margin: 0 20px"> | 7 | <div class="home-menu forPc" style="margin: 0 20px"> |
| 8 | <el-menu | 8 | <el-menu |
| 9 | v-if="language==0" | ||
| 10 | router :default-active="activeIndex" :mode="mode" :ellipsis="true" | 9 | router :default-active="activeIndex" :mode="mode" :ellipsis="true" |
| 11 | popper-effect="dark" @select="handleSelect" | 10 | popper-effect="dark" @select="handleSelect" |
| 12 | > | 11 | > |
| 13 | <el-menu-item index="/">首页</el-menu-item> | 12 | <el-menu-item index="/">{{ language==0?'首页':'HOME' }}</el-menu-item> |
| 14 | <el-menu-item index="/news">新闻资讯</el-menu-item> | 13 | <el-menu-item index="/news">{{ language==0?'新闻资讯':'NEWS' }}</el-menu-item> |
| 15 | <el-menu-item index="/notice">通知公告</el-menu-item> | 14 | <el-menu-item index="/notice">{{ language==0?'通知公告':'NOTICEBOARD' }}</el-menu-item> |
| 16 | <el-menu-item index="/match/list/0">大赛报名</el-menu-item> | 15 | <el-menu-item index="/match/list/0">{{ language==0?'大赛报名':'SIGN UP' }}</el-menu-item> |
| 17 | <el-menu-item index="/saiC">赛程安排</el-menu-item> | 16 | <el-menu-item index="/saiC">{{ language==0?'赛程安排':'COMPETITIONS' }}</el-menu-item> |
| 18 | <el-menu-item index="/meta">媒体中心</el-menu-item> | 17 | <el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item> |
| 19 | <el-menu-item index="/guide">参赛指南</el-menu-item> | 18 | <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item> |
| 20 | <el-sub-menu index="/about"> | 19 | <el-sub-menu index="/about"> |
| 21 | <template #title>关于我们</template> | 20 | <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template> |
| 22 | <el-menu-item index="/about/wuDao">舞蹈节</el-menu-item> | 21 | <el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item> |
| 23 | <el-menu-item index="/about/culture">地方文化</el-menu-item> | 22 | <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item> |
| 24 | </el-sub-menu> | 23 | <el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item> |
| 25 | </el-menu> | ||
| 26 | <el-menu | ||
| 27 | v-if="language==1" | ||
| 28 | router :default-active="activeIndex" mode="horizontal" :ellipsis="true" | ||
| 29 | popper-effect="dark" @select="handleSelect" | ||
| 30 | > | ||
| 31 | <el-menu-item index="/">HOME</el-menu-item> | ||
| 32 | <el-menu-item index="/news">NEWS</el-menu-item> | ||
| 33 | <el-menu-item index="/notice">NOTICEBOARD</el-menu-item> | ||
| 34 | <el-menu-item index="/match/list/0">SIGN UP</el-menu-item> | ||
| 35 | <el-menu-item index="/saiC">COMPETITIONS</el-menu-item> | ||
| 36 | <el-menu-item index="/meta">MEDIA</el-menu-item> | ||
| 37 | <el-menu-item index="/guide">GUIDELINE</el-menu-item> | ||
| 38 | <el-sub-menu index="/about"> | ||
| 39 | <template #title>CONTACT & MORE</template> | ||
| 40 | <el-menu-item index="/about/wuDao">About Us</el-menu-item> | ||
| 41 | <el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item> | ||
| 42 | <el-menu-item index="/about/culture">Culture</el-menu-item> | ||
| 43 | </el-sub-menu> | 24 | </el-sub-menu> |
| 44 | </el-menu> | 25 | </el-menu> |
| 45 | </div> | 26 | </div> |
| ... | @@ -49,25 +30,19 @@ | ... | @@ -49,25 +30,19 @@ |
| 49 | <el-button :icon="Search" circle @click="searchNews" /> | 30 | <el-button :icon="Search" circle @click="searchNews" /> |
| 50 | </div> | 31 | </div> |
| 51 | <div class="languageBtn"> | 32 | <div class="languageBtn"> |
| 52 | <span v-if="language==0" :class="language==0?'active':''" @click="changeLanguage(0)">中文</span> | 33 | <span :class="language==0?'active':''" @click="changeLanguage(0)">{{ language==0?'中文':'CN' }}</span> |
| 53 | <span v-else :class="language==0?'active':''" @click="changeLanguage(0)">CN</span> | ||
| 54 | | | 34 | | |
| 55 | <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span> | 35 | <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span> |
| 56 | </div> | 36 | </div> |
| 57 | <div class="ml20 forPc" > | 37 | <div class="ml20 forPc" > |
| 58 | <el-button v-if="!isLogin" style="border-radius: 20px;" class="loginBtn"> | 38 | <el-button v-if="!isLogin" style="border-radius: 20px;" class="loginBtn"> |
| 59 | <span v-if="language==0" @click="goLogin">登录</span> | 39 | <span @click="goLogin">{{ language==0?'登录':'LOGIN' }}</span> |
| 60 | <span v-if="language==1" @click="goLogin">LOGIN</span> | ||
| 61 | <!-- | <span @click="goRegister">注册</span>--> | 40 | <!-- | <span @click="goRegister">注册</span>--> |
| 62 | </el-button> | 41 | </el-button> |
| 63 | 42 | ||
| 64 | <el-button v-if="language==0&&isLogin" style="border-radius: 20px;" class="loginBtn"> | 43 | <el-button v-if="isLogin" style="border-radius: 20px;" class="loginBtn"> |
| 65 | <span @click="router.push('/center/myInfo')">个人中心</span> | 44 | <span @click="router.push('/center/myInfo')">{{ language==0?'个人中心':'Personal' }}</span> |
| 66 | | <span @click="logout()">退出</span> | 45 | | <span @click="logout()">{{language==0?'退出':'Exit'}}</span> |
| 67 | </el-button> | ||
| 68 | <el-button v-if="language==1&&isLogin" style="border-radius: 20px;" class="loginBtn"> | ||
| 69 | <span @click="router.push('/center/myInfo')">Personal</span> | ||
| 70 | | <span @click="logout()">Exit</span> | ||
| 71 | </el-button> | 46 | </el-button> |
| 72 | </div> | 47 | </div> |
| 73 | </div> | 48 | </div> | ... | ... |
| ... | @@ -522,10 +522,16 @@ export const constantRoutes = [ | ... | @@ -522,10 +522,16 @@ export const constantRoutes = [ |
| 522 | meta: { title: '我的报名' } | 522 | meta: { title: '我的报名' } |
| 523 | }, | 523 | }, |
| 524 | { | 524 | { |
| 525 | path: 'myTrain', | 525 | path: 'myReservation', |
| 526 | component: () => import('@/viewsPc/center/myTrain'), | 526 | component: () => import('@/viewsPc/center/myReservation'), |
| 527 | name: 'myTrain', | 527 | name: 'myReservation', |
| 528 | meta: { title: '我的预定' } | 528 | meta: { title: '我的预定' } |
| 529 | }, | ||
| 530 | { | ||
| 531 | path: 'mySms', | ||
| 532 | component: () => import('@/viewsPc/center/mySms'), | ||
| 533 | name: 'mySms', | ||
| 534 | meta: { title: '系统消息' } | ||
| 529 | } | 535 | } |
| 530 | ] | 536 | ] |
| 531 | } | 537 | } | ... | ... |
| ... | @@ -278,6 +278,12 @@ export const constantRoutes = [ | ... | @@ -278,6 +278,12 @@ export const constantRoutes = [ |
| 278 | redirect: '/match/list', | 278 | redirect: '/match/list', |
| 279 | children: [ | 279 | children: [ |
| 280 | { | 280 | { |
| 281 | path: 'pay', | ||
| 282 | component: () => import('@/viewsPc/match/pay'), | ||
| 283 | name: 'signPay', | ||
| 284 | meta: { title: '缴费清单' } | ||
| 285 | }, | ||
| 286 | { | ||
| 281 | path: 'list', | 287 | path: 'list', |
| 282 | component: () => import('@/viewsPc/match/index'), | 288 | component: () => import('@/viewsPc/match/index'), |
| 283 | name: 'matchList', | 289 | name: 'matchList', |
| ... | @@ -324,6 +330,12 @@ export const constantRoutes = [ | ... | @@ -324,6 +330,12 @@ export const constantRoutes = [ |
| 324 | component: () => import('@/viewsPc/match/expenseDetails'), | 330 | component: () => import('@/viewsPc/match/expenseDetails'), |
| 325 | name: 'expenseDetails', | 331 | name: 'expenseDetails', |
| 326 | meta: { title: '费用明细' } | 332 | meta: { title: '费用明细' } |
| 333 | }, | ||
| 334 | { | ||
| 335 | path: 'list/:id/signPreview', | ||
| 336 | component: () => import('@/viewsPc/match/signPreview'), | ||
| 337 | name: 'signPreview', | ||
| 338 | meta: { title: '提交审核' } | ||
| 327 | } | 339 | } |
| 328 | ] | 340 | ] |
| 329 | }, | 341 | }, |
| ... | @@ -391,26 +403,43 @@ export const constantRoutes = [ | ... | @@ -391,26 +403,43 @@ export const constantRoutes = [ |
| 391 | meta: { title: '个人中心' } | 403 | meta: { title: '个人中心' } |
| 392 | }, | 404 | }, |
| 393 | { | 405 | { |
| 394 | path: 'myTeam', | 406 | path: 'myPassword', |
| 395 | component: () => import('@/viewsPc/center/teamInfo'), | 407 | component: () => import('@/viewsPc/center/myPassword'), |
| 396 | name: 'myTeam', | 408 | name: 'myPassword', |
| 397 | meta: { title: '我的团队' } | 409 | meta: { title: '修改密码' } |
| 410 | }, | ||
| 411 | { | ||
| 412 | path: 'myCertification', | ||
| 413 | component: () => import('@/viewsPc/center/myCertification'), | ||
| 414 | name: 'myCertification', | ||
| 415 | meta: { title: 'institutional accreditation' } | ||
| 416 | }, | ||
| 417 | { | ||
| 418 | path: 'myMember', | ||
| 419 | component: () => import('@/viewsPc/center/myMember'), | ||
| 420 | name: 'myMember', | ||
| 421 | meta: { title: 'Player Management' } | ||
| 398 | }, | 422 | }, |
| 399 | { | 423 | { |
| 400 | path: 'myMatch', | 424 | path: 'myMatch', |
| 401 | component: () => import('@/viewsPc/center/myMatch'), | 425 | component: () => import('@/viewsPc/center/myMatch'), |
| 402 | name: 'myMatch', | 426 | name: 'myMatch', |
| 403 | meta: { title: '我的赛事' } | 427 | meta: { title: 'My registration' } |
| 428 | }, | ||
| 429 | { | ||
| 430 | path: 'myReservation', | ||
| 431 | component: () => import('@/viewsPc/center/myReservation'), | ||
| 432 | name: 'myReservation', | ||
| 433 | meta: { title: 'My reservation' } | ||
| 404 | }, | 434 | }, |
| 405 | { | 435 | { |
| 406 | path: 'myTrain', | 436 | path: 'mySms', |
| 407 | component: () => import('@/viewsPc/center/myTrain'), | 437 | component: () => import('@/viewsPc/center/mySms'), |
| 408 | name: 'myTrain', | 438 | name: 'mySms', |
| 409 | meta: { title: '我的培训' } | 439 | meta: { title: 'System messages' } |
| 410 | } | 440 | } |
| 411 | ] | 441 | ] |
| 412 | } | 442 | }] |
| 413 | ] | ||
| 414 | } | 443 | } |
| 415 | ] | 444 | ] |
| 416 | 445 | ... | ... |
| ... | @@ -14,6 +14,7 @@ import { saveAs } from 'file-saver' | ... | @@ -14,6 +14,7 @@ import { saveAs } from 'file-saver' |
| 14 | import useUserStore from '@/store/modules/user' | 14 | import useUserStore from '@/store/modules/user' |
| 15 | import { sendNotification } from '@/assets/lib/extend' | 15 | import { sendNotification } from '@/assets/lib/extend' |
| 16 | import _ from 'lodash' | 16 | import _ from 'lodash' |
| 17 | const language = cache.local.get('language') || 0 | ||
| 17 | 18 | ||
| 18 | let downloadLoadingInstance | 19 | let downloadLoadingInstance |
| 19 | // 是否显示重新登录 | 20 | // 是否显示重新登录 |
| ... | @@ -21,7 +22,7 @@ export const isRelogin = { show: false } | ... | @@ -21,7 +22,7 @@ export const isRelogin = { show: false } |
| 21 | 22 | ||
| 22 | axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' | 23 | axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' |
| 23 | // 对应国际化资源文件后缀 | 24 | // 对应国际化资源文件后缀 |
| 24 | axios.defaults.headers['Content-Language'] = 'zh_CN' | 25 | axios.defaults.headers['Content-Language'] = (language==0? 'zh_CN':'en_US' ) |
| 25 | // 创建axios实例 | 26 | // 创建axios实例 |
| 26 | const service = axios.create({ | 27 | const service = axios.create({ |
| 27 | // axios中请求配置有baseURL选项,表示请求URL公共部分 | 28 | // axios中请求配置有baseURL选项,表示请求URL公共部分 | ... | ... |
| ... | @@ -4,7 +4,7 @@ | ... | @@ -4,7 +4,7 @@ |
| 4 | <el-row :gutter="20"> | 4 | <el-row :gutter="20"> |
| 5 | <el-col :lg="5" :md="5" :xl="6" :sm="8" :xs="8"> | 5 | <el-col :lg="5" :md="5" :xl="6" :sm="8" :xs="8"> |
| 6 | <el-card class="mb20"> | 6 | <el-card class="mb20"> |
| 7 | <div class="center-menu"> | 7 | <div :class="language==0?'center-menu':'center-menu en-menu'"> |
| 8 | <ul v-if="user.utype=='2'"> | 8 | <ul v-if="user.utype=='2'"> |
| 9 | <li | 9 | <li |
| 10 | v-for="(m, i) in menus" | 10 | v-for="(m, i) in menus" |
| ... | @@ -13,7 +13,7 @@ | ... | @@ -13,7 +13,7 @@ |
| 13 | > | 13 | > |
| 14 | <a href="javascript:void(0)" @click="toInfo(m)"> | 14 | <a href="javascript:void(0)" @click="toInfo(m)"> |
| 15 | <img :src="m.isActive ? m.picUrl2 : m.picUrl1"> | 15 | <img :src="m.isActive ? m.picUrl2 : m.picUrl1"> |
| 16 | {{ m.name }} | 16 | {{m.name}} |
| 17 | </a> | 17 | </a> |
| 18 | </li> | 18 | </li> |
| 19 | </ul> | 19 | </ul> |
| ... | @@ -46,6 +46,8 @@ import {useRoute, useRouter} from 'vue-router' | ... | @@ -46,6 +46,8 @@ import {useRoute, useRouter} from 'vue-router' |
| 46 | import {onMounted} from '@vue/runtime-core' | 46 | import {onMounted} from '@vue/runtime-core' |
| 47 | import useUserStore from '@/store/modules/user' | 47 | import useUserStore from '@/store/modules/user' |
| 48 | import _ from 'lodash' | 48 | import _ from 'lodash' |
| 49 | import cache from "@/plugins/cache"; | ||
| 50 | const language = ref(cache.local.get('language') || 0) | ||
| 49 | 51 | ||
| 50 | const route = useRoute() | 52 | const route = useRoute() |
| 51 | const router = useRouter() | 53 | const router = useRouter() |
| ... | @@ -53,50 +55,50 @@ const router = useRouter() | ... | @@ -53,50 +55,50 @@ const router = useRouter() |
| 53 | const user = ref({}) | 55 | const user = ref({}) |
| 54 | const menus = ref([ | 56 | const menus = ref([ |
| 55 | { | 57 | { |
| 56 | name: '基础信息', | 58 | name: language.value==0?'基础信息':'Basic Information', |
| 57 | routeName: 'myInfo', | 59 | routeName: 'myInfo', |
| 58 | picUrl1: '/img/nav_26.png', | 60 | picUrl1: '/img/nav_26.png', |
| 59 | picUrl2: '/img/nav_26_dwn.png', | 61 | picUrl2: '/img/nav_26_dwn.png', |
| 60 | isActive: false | 62 | isActive: false |
| 61 | }, | 63 | }, |
| 62 | { | 64 | { |
| 63 | name: '修改密码', | 65 | name: language.value==0?'修改密码':'Change Password', |
| 64 | routeName: 'myPassword', | 66 | routeName: 'myPassword', |
| 65 | picUrl1: '/img/nav_27.png', | 67 | picUrl1: '/img/nav_27.png', |
| 66 | picUrl2: '/img/nav_27_dwn.png', | 68 | picUrl2: '/img/nav_27_dwn.png', |
| 67 | isActive: false | 69 | isActive: false |
| 68 | }, | 70 | }, |
| 69 | { | 71 | { |
| 70 | name: '团队认证', | 72 | name: language.value==0?'团队认证':'Institutional Accreditation', |
| 71 | routeName: 'myCertification', | 73 | routeName: 'myCertification', |
| 72 | picUrl1: '/img/nav_32.png', | 74 | picUrl1: '/img/nav_32.png', |
| 73 | picUrl2: '/img/nav_32_dwn.png', | 75 | picUrl2: '/img/nav_32_dwn.png', |
| 74 | isActive: false | 76 | isActive: false |
| 75 | }, | 77 | }, |
| 76 | { | 78 | { |
| 77 | name: '选手管理', | 79 | name: language.value==0?'选手管理':'Player Management', |
| 78 | routeName: 'myMember', | 80 | routeName: 'myMember', |
| 79 | picUrl1: '/img/nav_31.png', | 81 | picUrl1: '/img/nav_31.png', |
| 80 | picUrl2: '/img/nav_31_dwn.png', | 82 | picUrl2: '/img/nav_31_dwn.png', |
| 81 | isActive: false | 83 | isActive: false |
| 82 | }, | 84 | }, |
| 83 | { | 85 | { |
| 84 | name: '我的报名', | 86 | name: language.value==0?'我的报名':'My Eegistration', |
| 85 | routeName: 'myMatch', | 87 | routeName: 'myMatch', |
| 86 | picUrl1: '/img/nav_28.png', | 88 | picUrl1: '/img/nav_28.png', |
| 87 | picUrl2: '/img/nav_28_dwn.png', | 89 | picUrl2: '/img/nav_28_dwn.png', |
| 88 | isActive: false | 90 | isActive: false |
| 89 | }, | 91 | }, |
| 90 | { | 92 | { |
| 91 | name: '我的预定', | 93 | name: language.value==0?'我的预定':'My Reservation', |
| 92 | routeName: 'myMatch', | 94 | routeName: 'myReservation', |
| 93 | picUrl1: '/img/nav_29.png', | 95 | picUrl1: '/img/nav_29.png', |
| 94 | picUrl2: '/img/nav_29_dwn.png', | 96 | picUrl2: '/img/nav_29_dwn.png', |
| 95 | isActive: false | 97 | isActive: false |
| 96 | }, | 98 | }, |
| 97 | { | 99 | { |
| 98 | name: '系统消息', | 100 | name: language.value==0?'系统消息':'System messages', |
| 99 | routeName: 'myTrain', | 101 | routeName: 'mySms', |
| 100 | picUrl1: '/img/nav_30.png', | 102 | picUrl1: '/img/nav_30.png', |
| 101 | picUrl2: '/img/nav_30_dwn.png', | 103 | picUrl2: '/img/nav_30_dwn.png', |
| 102 | isActive: false | 104 | isActive: false |
| ... | @@ -104,36 +106,36 @@ const menus = ref([ | ... | @@ -104,36 +106,36 @@ const menus = ref([ |
| 104 | ]) | 106 | ]) |
| 105 | const menusPersonal = ref([ | 107 | const menusPersonal = ref([ |
| 106 | { | 108 | { |
| 107 | name: '基础信息', | 109 | name: language.value==0?'基础信息':'Basic Information', |
| 108 | routeName: 'myInfo', | 110 | routeName: 'myInfo', |
| 109 | picUrl1: '/img/nav_26.png', | 111 | picUrl1: '/img/nav_26.png', |
| 110 | picUrl2: '/img/nav_26_dwn.png', | 112 | picUrl2: '/img/nav_26_dwn.png', |
| 111 | isActive: false | 113 | isActive: false |
| 112 | }, | 114 | }, |
| 113 | { | 115 | { |
| 114 | name: '修改密码', | 116 | name: language.value==0?'修改密码':'Change Password', |
| 115 | routeName: 'myPassword', | 117 | routeName: 'myPassword', |
| 116 | picUrl1: '/img/nav_27.png', | 118 | picUrl1: '/img/nav_27.png', |
| 117 | picUrl2: '/img/nav_27_dwn.png', | 119 | picUrl2: '/img/nav_27_dwn.png', |
| 118 | isActive: false | 120 | isActive: false |
| 119 | }, | 121 | }, |
| 120 | { | 122 | { |
| 121 | name: '我的报名', | 123 | name: language.value==0?'我的报名':'My Eegistration', |
| 122 | routeName: 'myMatch', | 124 | routeName: 'myMatch', |
| 123 | picUrl1: '/img/nav_28.png', | 125 | picUrl1: '/img/nav_28.png', |
| 124 | picUrl2: '/img/nav_28_dwn.png', | 126 | picUrl2: '/img/nav_28_dwn.png', |
| 125 | isActive: false | 127 | isActive: false |
| 126 | }, | 128 | }, |
| 127 | { | 129 | { |
| 128 | name: '我的预定', | 130 | name: language.value==0?'我的预定':'My Reservation', |
| 129 | routeName: 'myMatch', | 131 | routeName: 'myReservation', |
| 130 | picUrl1: '/img/nav_29.png', | 132 | picUrl1: '/img/nav_29.png', |
| 131 | picUrl2: '/img/nav_29_dwn.png', | 133 | picUrl2: '/img/nav_29_dwn.png', |
| 132 | isActive: false | 134 | isActive: false |
| 133 | }, | 135 | }, |
| 134 | { | 136 | { |
| 135 | name: '系统消息', | 137 | name: language.value==0?'系统消息':'System messages', |
| 136 | routeName: 'myTrain', | 138 | routeName: 'mySms', |
| 137 | picUrl1: '/img/nav_30.png', | 139 | picUrl1: '/img/nav_30.png', |
| 138 | picUrl2: '/img/nav_30_dwn.png', | 140 | picUrl2: '/img/nav_30_dwn.png', |
| 139 | isActive: false | 141 | isActive: false |
| ... | @@ -174,12 +176,18 @@ const toInfo = (item) => { | ... | @@ -174,12 +176,18 @@ const toInfo = (item) => { |
| 174 | li { | 176 | li { |
| 175 | margin-bottom: 15px; | 177 | margin-bottom: 15px; |
| 176 | } | 178 | } |
| 179 | &.en-menu{text-align: left; | ||
| 180 | li{padding: 6px 0 6px 14px; | ||
| 181 | a{display: flex;align-items: center;} | ||
| 182 | } | ||
| 183 | img{padding: 0;width: 26px;} | ||
| 184 | } | ||
| 177 | } | 185 | } |
| 178 | 186 | ||
| 179 | li img { | 187 | li img { |
| 180 | display: inline-block; | 188 | display: inline-block; |
| 181 | vertical-align: middle; | 189 | vertical-align: middle; |
| 182 | margin-right: 20px; | 190 | margin-right: 10px; |
| 183 | padding: 5px; | 191 | padding: 5px; |
| 184 | } | 192 | } |
| 185 | 193 | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-card :body-style="{'padding':'0'}"> | 2 | <el-card :body-style="{'padding':'0'}" class="mb20"> |
| 3 | <div class="indexTitle"><h3 class="leftboderTT">团队认证</h3></div> | 3 | <div class="indexTitle"> |
| 4 | <h3 class="leftboderTT">{{ language==0?'团队认证':'Institutional Accreditation' }}</h3> | ||
| 5 | </div> | ||
| 4 | 6 | ||
| 5 | <div class="pd20"> | 7 | <div class="pd20"> |
| 6 | <el-form :model="form" label-width="160px"> | 8 | <el-form :model="form" label-width="160px" :label-position="language==0?'left':'top'"> |
| 7 | <fieldset class="fieldset-form"> | 9 | <fieldset class="fieldset-form"> |
| 8 | <legend>机构类型</legend> | 10 | <legend>{{ language==0?'机构类型':'Institution Type' }}</legend> |
| 9 | <div class="pt30"> | 11 | <div class="pt30"> |
| 10 | <el-form-item label="选择机构类型" required> | 12 | <el-form-item :label="language==0?'选择机构类型':'Select institution type'" required> |
| 11 | <el-radio-group v-model="form.type"> | 13 | <el-radio-group v-model="form.type"> |
| 12 | <el-radio-button label="0">普通院校</el-radio-button> | 14 | <el-radio-button label="0">{{ language==0?'普通院校':'School' }}</el-radio-button> |
| 13 | <el-radio-button label="1">专业舞蹈学校</el-radio-button> | 15 | <el-radio-button label="1">{{ language==0?'专业舞蹈学校':'Professional dance school' }}</el-radio-button> |
| 14 | <el-radio-button label="2">培训机构/俱乐部</el-radio-button> | 16 | <el-radio-button label="2">{{ language==0?'培训机构/俱乐部':'Company/Club' }}</el-radio-button> |
| 15 | <el-radio-button label="3">地方协会</el-radio-button> | 17 | <el-radio-button label="3">{{ language==0?'地方协会':'Local Association' }}</el-radio-button> |
| 16 | <el-radio-button label="4">国家协会</el-radio-button> | 18 | <el-radio-button label="4">{{ language==0?'国家协会':'National Association' }}</el-radio-button> |
| 17 | </el-radio-group> | 19 | </el-radio-group> |
| 18 | </el-form-item> | 20 | </el-form-item> |
| 19 | </div> | 21 | </div> |
| 20 | </fieldset> | 22 | </fieldset> |
| 21 | <fieldset class="fieldset-form mt30"> | 23 | <fieldset class="fieldset-form mt30"> |
| 22 | <legend>机构基础信息 </legend> | 24 | <legend>{{ language==0?'机构基础信息':'Institutional Basic Information' }} </legend> |
| 23 | <div class="pt30" style="max-width: 500px"> | 25 | <div class="pt30" style="max-width: 500px"> |
| 24 | <el-form-item label="所属国家" required> | 26 | <el-form-item :label="language==0?'所属国家':'Nationality'" required> |
| 25 | <el-select filterable v-model="form.countryId"> | 27 | <el-select filterable v-model="form.countryId"> |
| 26 | <el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id" /> | 28 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" /> |
| 27 | </el-select> | 29 | </el-select> |
| 28 | </el-form-item> | 30 | </el-form-item> |
| 29 | <el-form-item label="详细地址" required prop="address"> | 31 | <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address"> |
| 30 | <el-cascader v-if="form.countryId == 240" | 32 | <el-cascader v-if="form.countryId == 240" |
| 31 | v-model="form.regionId" | 33 | v-model="form.regionId" |
| 32 | style="width: 100%;" | 34 | style="width: 100%;" |
| 33 | :options="regionsList" | 35 | :options="regionsList" |
| 34 | :props="{ label:'text' }" | 36 | :props="{ label:'text' }" |
| 35 | /> | 37 | /> |
| 36 | <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/> | 38 | <el-input type="textarea" v-model="form.address" class="mt10"/> |
| 37 | </el-form-item> | 39 | </el-form-item> |
| 38 | <el-form-item label="机构名称" required prop="name"> | 40 | <el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name"> |
| 39 | <el-input type="text" v-model="form.name" placeholder="请输入内容"/> | 41 | <el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/> |
| 40 | </el-form-item> | 42 | </el-form-item> |
| 41 | <el-form-item label="联系人姓名" required prop="contactPerson"> | 43 | <el-form-item :label="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson"> |
| 42 | <el-input type="text" v-model="form.contactPerson" placeholder="请输入内容"/> | 44 | <el-input type="text" v-model="form.contactPerson" :placeholder="language==0?'请输入内容':''"/> |
| 43 | </el-form-item> | 45 | </el-form-item> |
| 44 | <el-form-item label="联系人电话" required prop="contactTelno"> | 46 | <el-form-item :label="language==0?'联系人电话':'Contact Phone'" required prop="contactTelno"> |
| 45 | <el-input v-model="form.contactTelno" type="phone" placeholder="请输入内容"/> | 47 | <el-input v-model="form.contactTelno" type="phone" :placeholder="language==0?'请输入内容':''"/> |
| 46 | </el-form-item> | 48 | </el-form-item> |
| 47 | <el-form-item label="联系人邮箱" required prop="contactEmail"> | 49 | <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail"> |
| 48 | <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/> | 50 | <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> |
| 49 | </el-form-item> | 51 | </el-form-item> |
| 50 | 52 | ||
| 51 | </div> | 53 | </div> |
| 52 | </fieldset> | 54 | </fieldset> |
| 53 | <fieldset class="fieldset-form mt30"> | 55 | <fieldset class="fieldset-form mt30"> |
| 54 | <legend>机构认证信息 </legend> | 56 | <legend>{{ language==0?'机构认证信息':'Institutional certification information' }} </legend> |
| 55 | <div class="pt30" style="max-width: 500px"> | 57 | <div class="pt30" style="max-width: 500px"> |
| 56 | <el-form-item label="机构代码" required prop="orgCode"> | 58 | <el-form-item :label="language==0?'机构代码':'Organization Code'" required prop="orgCode"> |
| 57 | <el-input type="text" v-model="form.orgCode" placeholder="请输入内容"/> | 59 | <el-input type="text" v-model="form.orgCode" :placeholder="language==0?'请输入内容':''"/> |
| 58 | </el-form-item> | 60 | </el-form-item> |
| 59 | <el-form-item label="机构证件" required prop="orgCert"> | 61 | <el-form-item :label="language==0?'机构证件':'Institutional documents'" required prop="orgCert"> |
| 60 | <file-upload v-model="form.orgCert"/> | 62 | <file-upload v-model="form.orgCert" :button-text="language==0?'上传文件':'Upload'"/> |
| 61 | </el-form-item> | 63 | </el-form-item> |
| 62 | 64 | ||
| 63 | </div> | 65 | </div> |
| 64 | </fieldset> | 66 | </fieldset> |
| 65 | <fieldset class="fieldset-form mt30"> | 67 | <fieldset class="fieldset-form mt30"> |
| 66 | <legend>机构法人信息 </legend> | 68 | <legend>{{ language==0?'机构法人信息':'Institutional legal person information' }} </legend> |
| 67 | <div class="pt30" style="max-width: 500px"> | 69 | <div class="pt30" style="max-width: 500px"> |
| 68 | <el-form-item label="法人姓名" required prop="orgCode"> | 70 | <el-form-item :label="language==0?'法人姓名':'Legal Person Name'" required prop="orgCode"> |
| 69 | <el-input type="text" v-model="form.orgCode" placeholder="请输入内容"/> | 71 | <el-input type="text" v-model="form.orgCode" :placeholder="language==0?'请输入内容':''"/> |
| 70 | </el-form-item> | 72 | </el-form-item> |
| 71 | <el-form-item label="法定代表人身份文件" required prop="orgCert"> | 73 | <el-form-item :label="language==0?'法定代表人身份文件':'Identity documents of the legal representative'" required prop="orgCert"> |
| 72 | <file-upload v-model="form.orgCert"/> | 74 | <file-upload v-model="form.orgCert" :button-text="language==0?'上传文件':'Upload'"/> |
| 73 | </el-form-item> | 75 | </el-form-item> |
| 74 | 76 | ||
| 75 | </div> | 77 | </div> |
| ... | @@ -77,7 +79,7 @@ | ... | @@ -77,7 +79,7 @@ |
| 77 | 79 | ||
| 78 | </el-form> | 80 | </el-form> |
| 79 | <div class="text-center mt30"> | 81 | <div class="text-center mt30"> |
| 80 | <el-button type="primary" class="btn-lineG w200px" round>提交审核</el-button> | 82 | <el-button type="primary" class="btn-lineG w200px" round>{{ language==0?'提交审核':'Submit' }}</el-button> |
| 81 | </div> | 83 | </div> |
| 82 | </div> | 84 | </div> |
| 83 | </el-card> | 85 | </el-card> |
| ... | @@ -91,9 +93,12 @@ import {useRouter} from 'vue-router' | ... | @@ -91,9 +93,12 @@ import {useRouter} from 'vue-router' |
| 91 | import {ElMessage, ElMessageBox} from 'element-plus' | 93 | import {ElMessage, ElMessageBox} from 'element-plus' |
| 92 | import FileUpload from "@/components/FileUpload"; | 94 | import FileUpload from "@/components/FileUpload"; |
| 93 | import * as match from "@/apiPc/match"; | 95 | import * as match from "@/apiPc/match"; |
| 96 | import cache from "@/plugins/cache"; | ||
| 97 | const language = ref(cache.local.get('language') || 0) | ||
| 94 | 98 | ||
| 95 | const form = ref({}) | 99 | const form = ref({}) |
| 96 | const regionsList = ref([]) | 100 | const regionsList = ref([]) |
| 101 | const countryList = ref([]) | ||
| 97 | function submit() { | 102 | function submit() { |
| 98 | commitAudit().then(res => { | 103 | commitAudit().then(res => { |
| 99 | 104 | ||
| ... | @@ -101,9 +106,15 @@ function submit() { | ... | @@ -101,9 +106,15 @@ function submit() { |
| 101 | } | 106 | } |
| 102 | 107 | ||
| 103 | onMounted(() => { | 108 | onMounted(() => { |
| 109 | getCountryList() | ||
| 104 | getRegionsList() | 110 | getRegionsList() |
| 105 | getData() | 111 | getData() |
| 106 | }) | 112 | }) |
| 113 | function getCountryList() { | ||
| 114 | match.countryList().then(res => { | ||
| 115 | countryList.value = res.data | ||
| 116 | }) | ||
| 117 | } | ||
| 107 | function getRegionsList() { | 118 | function getRegionsList() { |
| 108 | match.regionsList().then(res => { | 119 | match.regionsList().then(res => { |
| 109 | regionsList.value = res.data | 120 | regionsList.value = res.data | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <el-card :body-style="{'padding':'0'}"> | 3 | <el-card :body-style="{'padding':'0'}"> |
| 4 | <div class="indexTitle"><h3 class="leftboderTT">机构基础信息</h3></div> | 4 | <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'机构基础信息':'Institutional Basic Information' }}</h3></div> |
| 5 | <!-- uType字段 1 是个人 2是团体--> | 5 | <!-- uType字段 1 是个人 2是团体--> |
| 6 | <!-- {{user}}--> | 6 | <!-- {{user}}--> |
| 7 | <team-info :form="myform" v-if="user.utype=='2'"/> | 7 | <team-info :form="myform" :language="language" v-if="user.utype=='2'"/> |
| 8 | 8 | ||
| 9 | </el-card> | 9 | </el-card> |
| 10 | 10 | ||
| ... | @@ -20,7 +20,8 @@ import { ElMessage, ElMessageBox } from 'element-plus' | ... | @@ -20,7 +20,8 @@ import { ElMessage, ElMessageBox } from 'element-plus' |
| 20 | import { nationList } from '@/assets/js/data' | 20 | import { nationList } from '@/assets/js/data' |
| 21 | import {getGroupInfo} from "@/apiPc/match"; | 21 | import {getGroupInfo} from "@/apiPc/match"; |
| 22 | import TeamInfo from "@/viewsPc/center/teamInfo"; | 22 | import TeamInfo from "@/viewsPc/center/teamInfo"; |
| 23 | 23 | import cache from "@/plugins/cache"; | |
| 24 | const language = ref(cache.local.get('language') || 0) | ||
| 24 | const router = useRouter() | 25 | const router = useRouter() |
| 25 | const { proxy } = getCurrentInstance() | 26 | const { proxy } = getCurrentInstance() |
| 26 | const props = defineProps({ | 27 | const props = defineProps({ | ... | ... |
This diff is collapsed.
Click to expand it.
| 1 | <template> | 1 | <template> |
| 2 | <el-card> | 2 | <el-card class="mb20"> |
| 3 | <div class="funcBtns"> | 3 | <div class="funcBtns"> |
| 4 | <el-button type="primary" @click="addMember">添加选手</el-button> | 4 | <el-button type="primary" @click="addMember">{{ language==0?'添加选手':'Add Player'}}</el-button> |
| 5 | <el-button type="primary" plain @click="importSportman">导入选手</el-button> | 5 | <el-button type="primary" plain @click="importSportman">{{ language==0?'导入选手':'Import Player' }}</el-button> |
| 6 | <el-button type="primary" plain> | 6 | <el-button type="primary" plain> |
| 7 | <a href="/file/sportsmanTemplate.xlsx" target="_blank">下载模板</a> | 7 | <a href="/file/sportsmanTemplate.xlsx" target="_blank">Download template</a> |
| 8 | </el-button> | 8 | </el-button> |
| 9 | </div> | 9 | </div> |
| 10 | <div class="from-Card"> | 10 | <div class="from-Card"> |
| 11 | <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small"> | 11 | <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small"> |
| 12 | <el-form-item label="姓名"> | 12 | <el-form-item :label="language==0?'姓名':'Name'"> |
| 13 | <el-input v-model="query.realName" style="width: 120px;" clearable/> | 13 | <el-input v-model="query.realName" style="width: 120px;" clearable/> |
| 14 | </el-form-item> | 14 | </el-form-item> |
| 15 | <el-form-item label="短名"> | 15 | <el-form-item :label="language==0?'短名':'Short Name'"> |
| 16 | <el-input v-model="query.shortName" style="width: 120px;" clearable/> | 16 | <el-input v-model="query.shortName" style="width: 120px;" clearable/> |
| 17 | </el-form-item> | 17 | </el-form-item> |
| 18 | <el-form-item label="手机号码"> | 18 | <el-form-item :label="language==0?'手机号码':'Phone Number'"> |
| 19 | <el-input v-model="query.phone" style="width: 120px;" clearable/> | 19 | <el-input v-model="query.phone" style="width: 120px;" clearable/> |
| 20 | </el-form-item> | 20 | </el-form-item> |
| 21 | <el-form-item label="邮箱"> | 21 | <el-form-item :label="language==0?'邮箱':'E-mail'"> |
| 22 | <el-input v-model="query.email" style="width: 120px;" clearable/> | 22 | <el-input v-model="query.email" style="width: 120px;" clearable/> |
| 23 | </el-form-item> | 23 | </el-form-item> |
| 24 | <el-form-item label="证件类型"> | 24 | <el-form-item :label="language==0?'证件类型':'ID Type'"> |
| 25 | <el-input v-model="query.idcType" style="width: 120px;" clearable/> | 25 | <el-input v-model="query.idcType" style="width: 120px;" clearable/> |
| 26 | </el-form-item> | 26 | </el-form-item> |
| 27 | <el-form-item label="证件号"> | 27 | <el-form-item :label="language==0?'证件号码':'ID NO.'"> |
| 28 | <el-input v-model="query.idcode" style="width: 120px;" clearable/> | 28 | <el-input v-model="query.idcode" style="width: 120px;" clearable/> |
| 29 | </el-form-item> | 29 | </el-form-item> |
| 30 | <el-form-item label="角色"> | 30 | <el-form-item :label="language==0?'会员角色':'Role'"> |
| 31 | <el-input v-model="query.label" style="width: 120px;" clearable/> | 31 | <el-select v-model="query.label" multiple> |
| 32 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?(l.label):(l.enlabel)"/> | ||
| 33 | </el-select> | ||
| 32 | </el-form-item> | 34 | </el-form-item> |
| 33 | <el-form-item> | 35 | <el-form-item> |
| 34 | <el-button type="primary" @click="getList">查询</el-button> | 36 | <el-button type="primary" @click="getList">{{ language==0?'查询':'Search' }}</el-button> |
| 35 | </el-form-item> | 37 | </el-form-item> |
| 36 | </el-form> | 38 | </el-form> |
| 37 | </div> | 39 | </div> |
| 38 | 40 | ||
| 39 | <!-- 人员表格--> | 41 | <!-- 人员表格--> |
| 40 | <person-table :table-data="tableData" @edit="editCoach" @delete="delperson"/> | 42 | <person-table :table-data="tableData" @edit="editCoach" @delete="delperson"/> |
| 41 | <el-table :data="tableData" class="mt20"> | ||
| 42 | <el-table-column type="index" label="序号" width="80" align="center"/> | ||
| 43 | <el-table-column label="所属国家" prop="countryName"/> | ||
| 44 | <el-table-column label="姓氏" prop="xing"/> | ||
| 45 | <el-table-column label="名" prop="ming"/> | ||
| 46 | <el-table-column label="短名" prop="shortName"/> | ||
| 47 | <el-table-column label="性别" prop="sexStr"/> | ||
| 48 | <el-table-column label="年龄" prop="age"/> | ||
| 49 | <el-table-column label="出生日期" prop="birth" width="100"/> | ||
| 50 | <el-table-column label="手机号码" prop="phone" width="120"/> | ||
| 51 | <el-table-column label="邮箱" prop="email" width="150"/> | ||
| 52 | <el-table-column label="证件类型" prop="idcTypeStr"/> | ||
| 53 | <el-table-column label="证件号码" prop="idcCode" width="200"/> | ||
| 54 | <el-table-column label="会员角色"> | ||
| 55 | <template #default="scope"> | ||
| 56 | <span v-for="item in scope.row.label?.split(',')" :key="item.id"> | ||
| 57 | <el-tag type="primary" size="mini" v-if="item==='0'" effect="dark" class="ml10">运动员</el-tag> | ||
| 58 | <el-tag type="info" size="mini" v-if="item==='1'" effect="dark" class="ml10">教练</el-tag> | ||
| 59 | <el-tag type="info" size="mini" v-if="item==='2'" effect="dark" class="ml10">领队</el-tag> | ||
| 60 | <el-tag type="info" size="mini" v-if="item==='3'" effect="dark" class="ml10">队医</el-tag> | ||
| 61 | <el-tag type="info" size="mini" v-if="item==='4'" effect="dark" class="ml10">翻译</el-tag> | ||
| 62 | <el-tag type="info" size="mini" v-if="item==='5'" effect="dark" class="ml10">官员</el-tag> | ||
| 63 | <el-tag type="info" size="mini" v-if="item==='6'" effect="dark" class="ml10">其他</el-tag> | ||
| 64 | </span> | ||
| 65 | </template> | ||
| 66 | </el-table-column> | ||
| 67 | <el-table-column label="详细地址" prop="address"/> | ||
| 68 | <el-table-column label="操作" fixed="right" width="160" header-align="center" align="center"> | ||
| 69 | <template #default="scope"> | ||
| 70 | <a class="text-primary pd10" @click="editCoach(scope.row)">编辑</a> | ||
| 71 | <a class="text-primary pd10" @click="delperson(scope.row)">删除</a> | ||
| 72 | </template> | ||
| 73 | </el-table-column> | ||
| 74 | </el-table> | ||
| 75 | <paginationPc | 43 | <paginationPc |
| 76 | v-show="total>0" | 44 | v-show="total>0" |
| 77 | v-model:page="query.pageNum" | 45 | v-model:page="query.pageNum" |
| ... | @@ -100,20 +68,32 @@ import * as match from '@/apiPc/match' | ... | @@ -100,20 +68,32 @@ import * as match from '@/apiPc/match' |
| 100 | import {ElMessage, ElMessageBox} from 'element-plus' | 68 | import {ElMessage, ElMessageBox} from 'element-plus' |
| 101 | import {getGroupPersonList} from "@/apiPc/match"; | 69 | import {getGroupPersonList} from "@/apiPc/match"; |
| 102 | import PersonTable from "@/viewsPc/match/components/personTable"; | 70 | import PersonTable from "@/viewsPc/match/components/personTable"; |
| 103 | 71 | import cache from "@/plugins/cache"; | |
| 72 | import useUserStore from "@/store/modules/user"; | ||
| 73 | const language = ref(cache.local.get('language') || 0) | ||
| 104 | const tableData = ref([]) | 74 | const tableData = ref([]) |
| 75 | const labels = ref([ | ||
| 76 | {value: '0', label: '运动员', enlabel: 'Sportsman'}, | ||
| 77 | {value: '1', label: '教练', enlabel: 'Coach'}, | ||
| 78 | {value: '2', label: '领队', enlabel: 'Leader'}, | ||
| 79 | {value: '3', label: '队医', enlabel: 'Nurse'}, | ||
| 80 | {value: '4', label: '翻译', enlabel: 'Translator'}, | ||
| 81 | {value: '5', label: '官员', enlabel: 'Official'}, | ||
| 82 | {value: '6', label: '其他', enlabel: 'Other'} | ||
| 83 | ]) | ||
| 105 | const query = ref({ | 84 | const query = ref({ |
| 106 | pageNum: 1, pageSize: 10 | 85 | pageNum: 1, pageSize: 10 |
| 107 | }) | 86 | }) |
| 108 | const total = ref(0) | 87 | const total = ref(0) |
| 109 | const groupId = ref('1759813142128967681') | 88 | const group = useUserStore().group |
| 89 | const groupId = ref(group.id) | ||
| 110 | onMounted(() => { | 90 | onMounted(() => { |
| 111 | getList(groupId.value) | 91 | getList(groupId.value) |
| 112 | }) | 92 | }) |
| 113 | 93 | ||
| 114 | function addMember() { | 94 | function addMember() { |
| 115 | const params = { | 95 | const params = { |
| 116 | title: '添加人员', | 96 | title: language.value==0?'添加人员':'Add', |
| 117 | id: 0, | 97 | id: 0, |
| 118 | groupId: groupId.value | 98 | groupId: groupId.value |
| 119 | } | 99 | } |
| ... | @@ -122,7 +102,7 @@ function addMember() { | ... | @@ -122,7 +102,7 @@ function addMember() { |
| 122 | 102 | ||
| 123 | function importSportman() { | 103 | function importSportman() { |
| 124 | const params = { | 104 | const params = { |
| 125 | title: '批量导入选手', | 105 | title: language.value==0?'批量导入选手':'Import', |
| 126 | groupId: groupId.value | 106 | groupId: groupId.value |
| 127 | } | 107 | } |
| 128 | proxy.$refs['dialogImportProps'].open(params) | 108 | proxy.$refs['dialogImportProps'].open(params) |
| ... | @@ -135,23 +115,38 @@ function getList() { | ... | @@ -135,23 +115,38 @@ function getList() { |
| 135 | }) | 115 | }) |
| 136 | } | 116 | } |
| 137 | 117 | ||
| 138 | function editCoach(row) { | 118 | function editCoach(row,title) { |
| 139 | const params = { | 119 | const params = { |
| 140 | id: row.id, | 120 | id: row.id, |
| 141 | groupId: row.groupId | 121 | groupId: row.groupId, |
| 122 | title: title | ||
| 142 | } | 123 | } |
| 143 | proxy.$refs['dialogAddCoach'].open(params) | 124 | proxy.$refs['dialogAddCoach'].open(params) |
| 144 | } | 125 | } |
| 145 | 126 | ||
| 146 | function delperson(p) { | 127 | function delperson(p) { |
| 147 | //删除团队下的人 | 128 | //删除团队下的人 |
| 148 | ElMessageBox.confirm(`确定删除${p.realName}吗?`, '提示', { | 129 | let text = '' |
| 149 | confirmButtonText: '确定', | 130 | let t = '提示' |
| 150 | cancelButtonText: '取消', | 131 | let s = '确定' |
| 132 | let c = '取消' | ||
| 133 | let msg = '操作成功' | ||
| 134 | if (language.value==0){ | ||
| 135 | text = `确定删除${p.realName}吗?` | ||
| 136 | } else { | ||
| 137 | text = `Delete ${p.realName}?` | ||
| 138 | t = 'Tips' | ||
| 139 | s = 'Confirm' | ||
| 140 | c = 'Cancel' | ||
| 141 | msg = ' Successful!' | ||
| 142 | } | ||
| 143 | ElMessageBox.confirm(text, t, { | ||
| 144 | confirmButtonText: s, | ||
| 145 | cancelButtonText: c, | ||
| 151 | type: 'warning' | 146 | type: 'warning' |
| 152 | }).then(() => { | 147 | }).then(() => { |
| 153 | match.delPerson(p.id).then(res => { | 148 | match.delPerson(p.id).then(res => { |
| 154 | ElMessage.success('操作成功') | 149 | ElMessage.success(msg) |
| 155 | getList(groupId.value) | 150 | getList(groupId.value) |
| 156 | }) | 151 | }) |
| 157 | }) | 152 | }) | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div class="mb20"> |
| 3 | <el-card :body-style="{'padding':'0'}"> | 3 | <el-card :body-style="{'padding':'0'}"> |
| 4 | <div class="indexTitle"><h3 class="leftboderTT">修改密码</h3></div> | 4 | <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'修改密码':'Change Password' }}</h3></div> |
| 5 | 5 | ||
| 6 | <div class="pd20"> | 6 | <div class="pd20"> |
| 7 | <div class="d-form-border" style="margin-top: 0"> | 7 | <div class="d-form-border" style="margin-top: 0"> |
| 8 | <el-form class="d-form" ref="pwdRef" :model="user" :rules="rules" label-width="120px" | 8 | <el-form class="d-form" ref="pwdRef" :model="user" :rules="rules" |
| 9 | label-width="120px" :label-position="language==0?'left':'top'" | ||
| 9 | style="max-width: 500px;margin: auto"> | 10 | style="max-width: 500px;margin: auto"> |
| 10 | <el-form-item label="旧密码" prop="oldPassword"> | 11 | <el-form-item :label="language==0?'旧密码':'Old Password'" prop="oldPassword"> |
| 11 | <el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password/> | 12 | <el-input v-model="user.oldPassword" :placeholder="language==0?'请输入旧密码':''" type="password" show-password/> |
| 12 | </el-form-item> | 13 | </el-form-item> |
| 13 | <el-form-item label="新密码" prop="newPassword"> | 14 | <el-form-item :label="language==0?'新密码':'New Password'" prop="newPassword"> |
| 14 | <el-input v-model="user.newPassword" placeholder="请设置8位以上大小写字母、数字、特殊符号" type="password" | 15 | <el-input v-model="user.newPassword" :placeholder="language==0?'请设置8位以上大小写字母、数字、特殊符号':''" type="password" |
| 15 | show-password/> | 16 | show-password/> |
| 16 | </el-form-item> | 17 | </el-form-item> |
| 17 | <el-form-item label="确认密码" prop="confirmPassword"> | 18 | <el-form-item :label="language==0?'确认密码':'Confirm Password'" prop="confirmPassword"> |
| 18 | <el-input v-model="user.confirmPassword" placeholder="请确认新密码" type="password" show-password/> | 19 | <el-input v-model="user.confirmPassword" :placeholder="language==0?'请确认新密码':''" type="password" show-password/> |
| 19 | </el-form-item> | 20 | </el-form-item> |
| 20 | 21 | ||
| 21 | </el-form> | 22 | </el-form> |
| 22 | </div> | 23 | </div> |
| 23 | <el-row justify="center"> | 24 | <el-row justify="center"> |
| 24 | <el-button type="primary" class="btn-lineG" @click="submit">保存</el-button> | 25 | <el-button type="primary" class="btn-lineG" @click="submit">{{ language==0?'保存':'Save' }}</el-button> |
| 25 | </el-row> | 26 | </el-row> |
| 26 | </div> | 27 | </div> |
| 27 | </el-card> | 28 | </el-card> |
| ... | @@ -33,6 +34,8 @@ import {updateUserPwd} from '@/api/system/user' | ... | @@ -33,6 +34,8 @@ import {updateUserPwd} from '@/api/system/user' |
| 33 | import useUserStore from '@/store/modules/user' | 34 | import useUserStore from '@/store/modules/user' |
| 34 | import {reactive, ref, getCurrentInstance} from 'vue' | 35 | import {reactive, ref, getCurrentInstance} from 'vue' |
| 35 | import {validPassword} from '@/utils/validate' | 36 | import {validPassword} from '@/utils/validate' |
| 37 | import cache from "@/plugins/cache"; | ||
| 38 | const language = ref(cache.local.get('language') || 0) | ||
| 36 | 39 | ||
| 37 | const show = ref(false) | 40 | const show = ref(false) |
| 38 | const {proxy} = getCurrentInstance() | 41 | const {proxy} = getCurrentInstance() | ... | ... |
src/viewsPc/center/myReservation.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <el-card :body-style="{'padding':'0'}"> | ||
| 4 | <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'我的预订':'My reservation' }}</h3></div> | ||
| 5 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="list?.length == 0"/> | ||
| 6 | |||
| 7 | <div class="pd20"></div> | ||
| 8 | </el-card> | ||
| 9 | </div> | ||
| 10 | </template> | ||
| 11 | |||
| 12 | <script setup> | ||
| 13 | import cache from "@/plugins/cache"; | ||
| 14 | import {onMounted} from "@vue/runtime-core"; | ||
| 15 | const language = ref(cache.local.get('language') || 0) | ||
| 16 | const list = ref([]) | ||
| 17 | </script> | ||
| 18 | |||
| 19 | <style scoped lang="scss"> | ||
| 20 | .indexTitle { | ||
| 21 | margin: 20px 0 12px; | ||
| 22 | padding: 0 20px 15px; | ||
| 23 | border-bottom: 1px solid #e5e5e5; | ||
| 24 | |||
| 25 | h3 { | ||
| 26 | font-size: 16px; | ||
| 27 | color: var(--el-color-primary); | ||
| 28 | } | ||
| 29 | } | ||
| 30 | |||
| 31 | |||
| 32 | </style> | ||
| 33 |
src/viewsPc/center/mySms.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <el-card :body-style="{'padding':'0'}"> | ||
| 4 | <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'系统消息':'System messages' }}</h3></div> | ||
| 5 | |||
| 6 | <ul> | ||
| 7 | <li v-for="(n,index) in list" :key="index"> | ||
| 8 | <div class="dot"></div> | ||
| 9 | <h3>{{ n.title }}</h3> | ||
| 10 | <span>{{ n.time }}</span> | ||
| 11 | </li> | ||
| 12 | </ul> | ||
| 13 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="list?.length == 0"/> | ||
| 14 | |||
| 15 | </el-card> | ||
| 16 | </div> | ||
| 17 | </template> | ||
| 18 | |||
| 19 | <script setup> | ||
| 20 | import cache from "@/plugins/cache"; | ||
| 21 | import {onMounted} from "@vue/runtime-core"; | ||
| 22 | const language = ref(cache.local.get('language') || 0) | ||
| 23 | const list = ref([]) | ||
| 24 | onMounted(()=>{ | ||
| 25 | getList() | ||
| 26 | }) | ||
| 27 | const getList =()=>{ | ||
| 28 | list.value = [] | ||
| 29 | } | ||
| 30 | </script> | ||
| 31 | |||
| 32 | <style scoped lang="scss"> | ||
| 33 | .indexTitle { | ||
| 34 | margin: 20px 0 12px; | ||
| 35 | padding: 0 20px 15px; | ||
| 36 | border-bottom: 1px solid #e5e5e5; | ||
| 37 | |||
| 38 | h3 { | ||
| 39 | font-size: 16px; | ||
| 40 | color: var(--el-color-primary); | ||
| 41 | } | ||
| 42 | } | ||
| 43 | ul{padding: 20px; | ||
| 44 | li{background: #FBFCFD;position: relative;padding: 20px 20px 20px 40px;margin-bottom: 18px; | ||
| 45 | cursor: pointer; | ||
| 46 | &:hover{ | ||
| 47 | h3{color: var(--el-color-primary)} | ||
| 48 | } | ||
| 49 | .dot{position: absolute;width: 7px; | ||
| 50 | height: 7px;left: 20px;top: 24px; | ||
| 51 | background: #C5161E; | ||
| 52 | border-radius: 50%;} | ||
| 53 | h3{font-weight: 400;margin: 0; | ||
| 54 | font-size: 16px; | ||
| 55 | color: #29343C;} | ||
| 56 | span{font-weight: 400;display: inline-block; | ||
| 57 | font-size: 12px;margin: 10px 0 0; | ||
| 58 | color: #929AA0;} | ||
| 59 | } | ||
| 60 | } | ||
| 61 | |||
| 62 | </style> |
| ... | @@ -2,37 +2,37 @@ | ... | @@ -2,37 +2,37 @@ |
| 2 | <div class="pd20"> | 2 | <div class="pd20"> |
| 3 | <div class="d-form-border" style="margin-top: 0"> | 3 | <div class="d-form-border" style="margin-top: 0"> |
| 4 | <el-form class="d-form" size="large" :model="form" ref="registerRef" :rules="registerRules" label-width="120" | 4 | <el-form class="d-form" size="large" :model="form" ref="registerRef" :rules="registerRules" label-width="120" |
| 5 | style="max-width: 500px;margin: auto"> | 5 | :label-position="language==0?'left':'top'" style="max-width: 500px;margin: auto"> |
| 6 | <el-form-item label="用户名"> | 6 | <el-form-item :label="language==0?'用户名':'Account'"> |
| 7 | {{userName}} | 7 | {{userName}} |
| 8 | </el-form-item> | 8 | </el-form-item> |
| 9 | <el-form-item label="所属国家" required> | 9 | <el-form-item :label="language==0?'所属国家':'Nationality'" required> |
| 10 | <el-select filterable v-model="form.countryId"> | 10 | <el-select filterable v-model="form.countryId"> |
| 11 | <el-option v-for="item in countryList" :key="item.id" :label="item.name" :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="详细地址" required prop="address"> | 14 | <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="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%;" |
| 18 | :options="regionsList" | 18 | :options="regionsList" |
| 19 | :props="{ label:'text' }" | 19 | :props="{ label:'text' }" |
| 20 | /> | 20 | /> |
| 21 | <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/> | 21 | <el-input type="textarea" v-model="form.address" class="mt10" :placeholder="language==0?'请输入内容':''"/> |
| 22 | </el-form-item> | 22 | </el-form-item> |
| 23 | <el-form-item label="机构名称" 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="请输入内容"/> | 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="联系人姓名" required prop="contactPerson"> | 26 | <el-form-item :label="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson"> |
| 27 | <el-input type="text" v-model="form.contactPerson" placeholder="请输入内容"/> | 27 | <el-input type="text" v-model="form.contactPerson" :placeholder="language==0?'请输入内容':''"/> |
| 28 | </el-form-item> | 28 | </el-form-item> |
| 29 | <el-form-item label="联系人电话" required prop="contactTelno"> | 29 | <el-form-item :label="language==0?'联系人电话':'Contact Phone'" required prop="contactTelno"> |
| 30 | <el-input v-model="form.contactTelno" type="phone" placeholder="请输入内容"/> | 30 | <el-input v-model="form.contactTelno" type="phone" :placeholder="language==0?'请输入内容':''"/> |
| 31 | </el-form-item> | 31 | </el-form-item> |
| 32 | <el-form-item label="联系人邮箱" required prop="contactEmail"> | 32 | <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail"> |
| 33 | <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/> | 33 | <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> |
| 34 | </el-form-item> | 34 | </el-form-item> |
| 35 | <el-form-item prop="imgUrl" required label="机构LOGO"> | 35 | <el-form-item prop="imgUrl" required :label="language==0?'机构Logo':'Group Logo'"> |
| 36 | <ImageUpload2 | 36 | <ImageUpload2 |
| 37 | v-model="form.imgUrl" :crop-height="200" :crop-width="200" :limit="1" | 37 | v-model="form.imgUrl" :crop-height="200" :crop-width="200" :limit="1" |
| 38 | :is-show-tip="false" | 38 | :is-show-tip="false" |
| ... | @@ -41,7 +41,7 @@ | ... | @@ -41,7 +41,7 @@ |
| 41 | </el-form> | 41 | </el-form> |
| 42 | </div> | 42 | </div> |
| 43 | <div class="text-center"> | 43 | <div class="text-center"> |
| 44 | <el-button type="primary" class="btn-lineG" round @click="save">确定修改</el-button> | 44 | <el-button type="primary" class="btn-lineG" round @click="save">{{ language==0?'确定修改':'Save' }}</el-button> |
| 45 | </div> | 45 | </div> |
| 46 | 46 | ||
| 47 | </div> | 47 | </div> |
| ... | @@ -62,6 +62,10 @@ const props = defineProps({ | ... | @@ -62,6 +62,10 @@ const props = defineProps({ |
| 62 | form:{ | 62 | form:{ |
| 63 | type:Object, | 63 | type:Object, |
| 64 | required:true | 64 | required:true |
| 65 | }, | ||
| 66 | language:{ | ||
| 67 | type:Number, | ||
| 68 | required:true | ||
| 65 | } | 69 | } |
| 66 | }) | 70 | }) |
| 67 | const countryList = ref([]) | 71 | const countryList = ref([]) | ... | ... |
| ... | @@ -3,12 +3,7 @@ | ... | @@ -3,12 +3,7 @@ |
| 3 | 3 | ||
| 4 | <div class="box ph-30"> | 4 | <div class="box ph-30"> |
| 5 | <el-card> | 5 | <el-card> |
| 6 | <el-steps :active="activeStep" align-center> | 6 | <team-sign-step :activeStep="activeStep" :language="language"/> |
| 7 | <el-step :title="language==0?'团队信息':'Team Information'" /> | ||
| 8 | <el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" /> | ||
| 9 | <el-step :title="language==0?'选手报名':'Participant Registration'" /> | ||
| 10 | <el-step :title="language==0?'提交审核':'Submit for review'" /> | ||
| 11 | </el-steps> | ||
| 12 | </el-card> | 7 | </el-card> |
| 13 | 8 | ||
| 14 | <el-row class="mt20" :gutter="20"> | 9 | <el-row class="mt20" :gutter="20"> |
| ... | @@ -17,7 +12,9 @@ | ... | @@ -17,7 +12,9 @@ |
| 17 | <template #header> | 12 | <template #header> |
| 18 | <div class="card-header"> | 13 | <div class="card-header"> |
| 19 | <img src="@/assets/sign/tag01.png"/> | 14 | <img src="@/assets/sign/tag01.png"/> |
| 20 | 教练<span class="tip">(教练/领队,至少选择一项)</span> | 15 | {{ language==0?'教练':'Coach' }} |
| 16 | <span class="tip" v-if="language==0">(教练/领队,至少选择一项)</span> | ||
| 17 | <span class="tip" v-else>(Coach/Team Leader, select at least one)</span> | ||
| 21 | </div> | 18 | </div> |
| 22 | </template> | 19 | </template> |
| 23 | <div class="chooseForm"> | 20 | <div class="chooseForm"> |
| ... | @@ -40,7 +37,9 @@ | ... | @@ -40,7 +37,9 @@ |
| 40 | <template #header> | 37 | <template #header> |
| 41 | <div class="card-header"> | 38 | <div class="card-header"> |
| 42 | <img src="@/assets/sign/tag02.png"/> | 39 | <img src="@/assets/sign/tag02.png"/> |
| 43 | 领队<span class="tip">(教练/领队,至少选择一项)</span> | 40 | {{ language==0?'领队':'Team leader' }} |
| 41 | <span class="tip" v-if="language==0">(教练/领队,至少选择一项)</span> | ||
| 42 | <span class="tip" v-else>(Coach/Team Leader, select at least one)</span> | ||
| 44 | </div> | 43 | </div> |
| 45 | </template> | 44 | </template> |
| 46 | <div class="chooseForm"> | 45 | <div class="chooseForm"> |
| ... | @@ -63,7 +62,7 @@ | ... | @@ -63,7 +62,7 @@ |
| 63 | <template #header> | 62 | <template #header> |
| 64 | <div class="card-header"> | 63 | <div class="card-header"> |
| 65 | <img src="@/assets/sign/tag03.png"/> | 64 | <img src="@/assets/sign/tag03.png"/> |
| 66 | 队医 | 65 | {{ language==0?'队医':'Team doctor' }} |
| 67 | </div> | 66 | </div> |
| 68 | </template> | 67 | </template> |
| 69 | <div class="chooseForm"> | 68 | <div class="chooseForm"> |
| ... | @@ -86,7 +85,7 @@ | ... | @@ -86,7 +85,7 @@ |
| 86 | <template #header> | 85 | <template #header> |
| 87 | <div class="card-header"> | 86 | <div class="card-header"> |
| 88 | <img src="@/assets/sign/tag04.png"/> | 87 | <img src="@/assets/sign/tag04.png"/> |
| 89 | 翻译 | 88 | {{ language==0?'翻译':'Translator' }} |
| 90 | </div> | 89 | </div> |
| 91 | </template> | 90 | </template> |
| 92 | <div class="chooseForm"> | 91 | <div class="chooseForm"> |
| ... | @@ -109,7 +108,7 @@ | ... | @@ -109,7 +108,7 @@ |
| 109 | <template #header> | 108 | <template #header> |
| 110 | <div class="card-header"> | 109 | <div class="card-header"> |
| 111 | <img src="@/assets/sign/tag05.png"/> | 110 | <img src="@/assets/sign/tag05.png"/> |
| 112 | 官员 | 111 | {{ language==0?'官员':'Official' }} |
| 113 | </div> | 112 | </div> |
| 114 | </template> | 113 | </template> |
| 115 | <div class="chooseForm"> | 114 | <div class="chooseForm"> |
| ... | @@ -132,7 +131,7 @@ | ... | @@ -132,7 +131,7 @@ |
| 132 | <template #header> | 131 | <template #header> |
| 133 | <div class="card-header"> | 132 | <div class="card-header"> |
| 134 | <img src="@/assets/sign/tag06.png"/> | 133 | <img src="@/assets/sign/tag06.png"/> |
| 135 | 其他 | 134 | {{ language==0?'其他':'Other' }} |
| 136 | </div> | 135 | </div> |
| 137 | </template> | 136 | </template> |
| 138 | <div class="chooseForm"> | 137 | <div class="chooseForm"> |
| ... | @@ -153,8 +152,8 @@ | ... | @@ -153,8 +152,8 @@ |
| 153 | </el-row> | 152 | </el-row> |
| 154 | <el-card class="mt20"> | 153 | <el-card class="mt20"> |
| 155 | <div class="text-center"> | 154 | <div class="text-center"> |
| 156 | <el-button type="primary" class="w200px" plain round @click="goPrev()">上一步</el-button> | 155 | <el-button type="primary" class="w200px" plain round @click="goPrev()">{{ language==0?'上一步':'Go back' }}</el-button> |
| 157 | <el-button type="primary" class="btn-lineG w200px" round @click="goNext()">下一步</el-button> | 156 | <el-button type="primary" class="btn-lineG w200px" round @click="goNext()">{{language==0?'下一步':'Next'}}</el-button> |
| 158 | </div> | 157 | </div> |
| 159 | </el-card> | 158 | </el-card> |
| 160 | 159 | ||
| ... | @@ -171,7 +170,8 @@ import {ref, reactive} from 'vue' | ... | @@ -171,7 +170,8 @@ import {ref, reactive} from 'vue' |
| 171 | import {getCurrentInstance, onMounted} from '@vue/runtime-core' | 170 | import {getCurrentInstance, onMounted} from '@vue/runtime-core' |
| 172 | import * as match from '@/apiPc/match' | 171 | import * as match from '@/apiPc/match' |
| 173 | import dialogAddCoach from './components/addCoach' | 172 | import dialogAddCoach from './components/addCoach' |
| 174 | import cache from '@/utils/cache' | 173 | import TeamSignStep from './components/teamSignStep' |
| 174 | import cache from "@/plugins/cache" | ||
| 175 | const {proxy} = getCurrentInstance() | 175 | const {proxy} = getCurrentInstance() |
| 176 | const router = useRouter() | 176 | const router = useRouter() |
| 177 | const route = useRoute() | 177 | const route = useRoute() |
| ... | @@ -326,7 +326,7 @@ function goNext() { | ... | @@ -326,7 +326,7 @@ function goNext() { |
| 326 | } | 326 | } |
| 327 | }) | 327 | }) |
| 328 | }) | 328 | }) |
| 329 | } else if (signType.value == '1') { | 329 | } else { |
| 330 | // 团队报名 | 330 | // 团队报名 |
| 331 | match.groupSignSavePerson(obj).then(res => { | 331 | match.groupSignSavePerson(obj).then(res => { |
| 332 | router.push({ | 332 | router.push({ | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -13,21 +13,20 @@ | ... | @@ -13,21 +13,20 @@ |
| 13 | :is-show-tip="false" | 13 | :is-show-tip="false" |
| 14 | /> | 14 | /> |
| 15 | </el-form-item> | 15 | </el-form-item> |
| 16 | <el-form-item label="姓氏" prop="xing" required> | 16 | <el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required> |
| 17 | <el-input v-model="form.xing"/> | 17 | <el-input v-model="form.xing"/> |
| 18 | </el-form-item> | 18 | </el-form-item> |
| 19 | <el-form-item label="短名" prop="shortName" required> | 19 | <el-form-item :label="language==0?'短名':'short name'" prop="shortName" required> |
| 20 | <el-input v-model="form.shortName" placeholder="赛事用名"/> | 20 | <el-input v-model="form.shortName" placeholder="赛事用名"/> |
| 21 | </el-form-item> | 21 | </el-form-item> |
| 22 | <el-form-item label="出生日期" prop="birth" required> | 22 | <el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required> |
| 23 | <el-date-picker | 23 | <el-date-picker |
| 24 | v-model="form.birth" | 24 | v-model="form.birth" |
| 25 | style="width: 100%;" | 25 | style="width: 100%;" |
| 26 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" | 26 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" |
| 27 | placeholder="请选择出生日期" | ||
| 28 | /> | 27 | /> |
| 29 | </el-form-item> | 28 | </el-form-item> |
| 30 | <el-form-item label="证件类型" prop="idcType" required> | 29 | <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required> |
| 31 | <el-select v-model="form.idcType" style="width: 100%;"> | 30 | <el-select v-model="form.idcType" style="width: 100%;"> |
| 32 | <el-option | 31 | <el-option |
| 33 | v-for="item in certificates" | 32 | v-for="item in certificates" |
| ... | @@ -37,17 +36,17 @@ | ... | @@ -37,17 +36,17 @@ |
| 37 | /> | 36 | /> |
| 38 | </el-select> | 37 | </el-select> |
| 39 | </el-form-item> | 38 | </el-form-item> |
| 40 | <el-form-item label="手机号码" prop="phone" required> | 39 | <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required> |
| 41 | <el-input v-model="form.phone" type="number"/> | 40 | <el-input v-model="form.phone" type="number"/> |
| 42 | </el-form-item> | 41 | </el-form-item> |
| 43 | </el-col> | 42 | </el-col> |
| 44 | <el-col :lg="12"> | 43 | <el-col :lg="12"> |
| 45 | <el-form-item label="所属国家" prop="countryId" required> | 44 | <el-form-item :label="language==0?'所属国家':'Nationality'" prop="countryId" required> |
| 46 | <el-select v-model="form.countryId" style="width: 100%;" @change="changeCountryId"> | 45 | <el-select v-model="form.countryId" style="width: 100%;" @change="changeCountryId"> |
| 47 | <el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id"/> | 46 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/> |
| 48 | </el-select> | 47 | </el-select> |
| 49 | </el-form-item> | 48 | </el-form-item> |
| 50 | <el-form-item label="详细地址" prop="address" required> | 49 | <el-form-item :label="language==0?'详细地址':'Address'" prop="address" required> |
| 51 | <el-cascader v-if="form.countryId == 240" | 50 | <el-cascader v-if="form.countryId == 240" |
| 52 | v-model="form.regionId" | 51 | v-model="form.regionId" |
| 53 | style="width: 100%;margin-bottom: 15px" | 52 | style="width: 100%;margin-bottom: 15px" |
| ... | @@ -57,24 +56,24 @@ | ... | @@ -57,24 +56,24 @@ |
| 57 | <el-input v-model="form.address" type="textarea" :rows="4"/> | 56 | <el-input v-model="form.address" type="textarea" :rows="4"/> |
| 58 | 57 | ||
| 59 | </el-form-item> | 58 | </el-form-item> |
| 60 | <el-form-item label="名" prop="ming" required> | 59 | <el-form-item :label="language==0?'名':'name'" prop="ming" required> |
| 61 | <el-input v-model="form.ming"/> | 60 | <el-input v-model="form.ming"/> |
| 62 | </el-form-item> | 61 | </el-form-item> |
| 63 | <el-form-item label="性别" prop="sex"> | 62 | <el-form-item :label="language==0?'性别':'sex'" prop="sex"> |
| 64 | <el-radio-group v-model="form.sex"> | 63 | <el-radio-group v-model="form.sex"> |
| 65 | <el-radio label="0">女</el-radio> | 64 | <el-radio label="0">{{ language==0?'女':'female' }}</el-radio> |
| 66 | <el-radio label="1">男</el-radio> | 65 | <el-radio label="1">{{ language==0?'男':'male' }}</el-radio> |
| 67 | </el-radio-group> | 66 | </el-radio-group> |
| 68 | </el-form-item> | 67 | </el-form-item> |
| 69 | <el-form-item label="邮箱" prop="idcCode" required> | 68 | <el-form-item :label="language==0?'邮箱':'Email'" prop="idcCode" required> |
| 70 | <el-input v-model="form.email"/> | 69 | <el-input v-model="form.email"/> |
| 71 | </el-form-item> | 70 | </el-form-item> |
| 72 | <el-form-item label="证件号码" prop="idcCode" required> | 71 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> |
| 73 | <el-input v-model="form.idcCode" @blur="checkCode"/> | 72 | <el-input v-model="form.idcCode" @blur="checkCode"/> |
| 74 | </el-form-item> | 73 | </el-form-item> |
| 75 | <el-form-item label="主要会员角色" prop="labelArr"> | 74 | <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr"> |
| 76 | <el-select v-model="form.labelArr" multiple @change="labelvalue"> | 75 | <el-select v-model="form.labelArr" multiple @change="labelvalue"> |
| 77 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="l.label"/> | 76 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> |
| 78 | </el-select> | 77 | </el-select> |
| 79 | </el-form-item> | 78 | </el-form-item> |
| 80 | </el-col> | 79 | </el-col> |
| ... | @@ -82,7 +81,7 @@ | ... | @@ -82,7 +81,7 @@ |
| 82 | </el-form> | 81 | </el-form> |
| 83 | <template #footer> | 82 | <template #footer> |
| 84 | <div class="dialog-footer text-center"> | 83 | <div class="dialog-footer text-center"> |
| 85 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">确定</el-button> | 84 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ language==0?'确定':'Save' }}</el-button> |
| 86 | </div> | 85 | </div> |
| 87 | </template> | 86 | </template> |
| 88 | </el-dialog> | 87 | </el-dialog> |
| ... | @@ -96,6 +95,8 @@ import {certificates} from '@/assets/lib/nation' | ... | @@ -96,6 +95,8 @@ import {certificates} from '@/assets/lib/nation' |
| 96 | import {ElMessage} from 'element-plus' | 95 | import {ElMessage} from 'element-plus' |
| 97 | import {nationList} from '@/assets/js/data' | 96 | import {nationList} from '@/assets/js/data' |
| 98 | import _ from 'lodash' | 97 | import _ from 'lodash' |
| 98 | import cache from "@/plugins/cache"; | ||
| 99 | const language = ref(cache.local.get('language') || 0) | ||
| 99 | 100 | ||
| 100 | const {proxy} = getCurrentInstance() | 101 | const {proxy} = getCurrentInstance() |
| 101 | const emit = defineEmits(['submitForm']) | 102 | const emit = defineEmits(['submitForm']) |
| ... | @@ -122,13 +123,14 @@ const data = reactive({ | ... | @@ -122,13 +123,14 @@ const data = reactive({ |
| 122 | show: false, | 123 | show: false, |
| 123 | countryList: [], | 124 | countryList: [], |
| 124 | regionsList: [], | 125 | regionsList: [], |
| 125 | labels: [{value: '0', label: '运动员'}, | 126 | labels: [ |
| 126 | {value: '1', label: '教练'}, | 127 | {value: '0', label: '运动员', enlabel: 'Sportsman'}, |
| 127 | {value: '2', label: '领队'}, | 128 | {value: '1', label: '教练', enlabel: 'Coach'}, |
| 128 | {value: '3', label: '队医'}, | 129 | {value: '2', label: '领队', enlabel: 'Leader'}, |
| 129 | {value: '4', label: '翻译'}, | 130 | {value: '3', label: '队医', enlabel: 'Nurse'}, |
| 130 | {value: '5', label: '官员'}, | 131 | {value: '4', label: '翻译', enlabel: 'Translator'}, |
| 131 | {value: '6', label: '其他'} | 132 | {value: '5', label: '官员', enlabel: 'Official'}, |
| 133 | {value: '6', label: '其他', enlabel: 'Other'} | ||
| 132 | ], | 134 | ], |
| 133 | title: '添加选手信息', | 135 | title: '添加选手信息', |
| 134 | groupId: '0', | 136 | groupId: '0', | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog v-model="show" :title="title" width="1000px" append-to-body> | 2 | <el-dialog v-model="show" :title="title" width="1000px" append-to-body> |
| 3 | <div class="funcBtns"> | 3 | <div class="funcBtns"> |
| 4 | <el-button type="primary" @click="addMember">添加选手</el-button> | 4 | <el-button type="primary" @click="addMember"> |
| 5 | <el-button type="primary" plain @click="importSportman">导入选手</el-button> | 5 | {{ language == 0 ? '添加选手' : 'Add Player' }} |
| 6 | </el-button> | ||
| 7 | <el-button type="primary" plain @click="importSportman"> | ||
| 8 | {{language == 0 ? '导入选手' : 'Import Player'}} | ||
| 9 | </el-button> | ||
| 6 | </div> | 10 | </div> |
| 7 | <div class="from-Card"> | 11 | <div class="from-Card"> |
| 8 | <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small"> | 12 | <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small"> |
| 9 | <el-form-item label="姓名"> | 13 | <el-form-item :label="language==0?'姓名':'Name'"> |
| 10 | <el-input v-model="query.realName" style="width: 120px;" clearable/> | 14 | <el-input v-model="query.realName" style="width: 120px;" clearable/> |
| 11 | </el-form-item> | 15 | </el-form-item> |
| 12 | <el-form-item label="短名"> | 16 | <el-form-item :label="language==0?'短名':'Short Name'"> |
| 13 | <el-input v-model="query.shortName" style="width: 120px;" clearable/> | 17 | <el-input v-model="query.shortName" style="width: 120px;" clearable/> |
| 14 | </el-form-item> | 18 | </el-form-item> |
| 15 | <el-form-item label="手机号码"> | 19 | <el-form-item :label="language==0?'手机号码':'Phone Number'"> |
| 16 | <el-input v-model="query.phone" style="width: 120px;" clearable/> | 20 | <el-input v-model="query.phone" style="width: 120px;" clearable/> |
| 17 | </el-form-item> | 21 | </el-form-item> |
| 18 | <el-form-item label="邮箱"> | 22 | <el-form-item :label="language==0?'邮箱':'E-mail'"> |
| 19 | <el-input v-model="query.email" style="width: 120px;" clearable/> | 23 | <el-input v-model="query.email" style="width: 120px;" clearable/> |
| 20 | </el-form-item> | 24 | </el-form-item> |
| 21 | <el-form-item label="证件类型"> | 25 | <el-form-item :label="language==0?'证件类型':'ID Type'"> |
| 22 | <el-input v-model="query.idcType" style="width: 120px;" clearable/> | 26 | <el-input v-model="query.idcType" style="width: 120px;" clearable/> |
| 23 | </el-form-item> | 27 | </el-form-item> |
| 24 | <el-form-item label="证件号"> | 28 | <el-form-item :label="language==0?'证件号码':'ID NO.'"> |
| 25 | <el-input v-model="query.idcode" style="width: 120px;" clearable/> | 29 | <el-input v-model="query.idcode" style="width: 120px;" clearable/> |
| 26 | </el-form-item> | 30 | </el-form-item> |
| 27 | <el-form-item label="角色"> | 31 | <!-- <el-form-item label="角色">--> |
| 28 | <el-input v-model="query.label" style="width: 120px;" clearable/> | 32 | <!-- <el-input v-model="query.label" style="width: 120px;" clearable/>--> |
| 29 | </el-form-item> | 33 | <!-- </el-form-item>--> |
| 30 | <el-form-item> | 34 | <el-form-item> |
| 31 | <el-button type="primary" @click="getList">查询</el-button> | 35 | <el-button type="primary" @click="getList">{{language==0?'查询':'Search'}}</el-button> |
| 32 | </el-form-item> | 36 | </el-form-item> |
| 33 | </el-form> | 37 | </el-form> |
| 34 | </div> | 38 | </div> |
| 35 | <p v-if="noPhotoCanSign == 0" class="text-danger">*需上传照片才可报名</p> | 39 | <p v-if="noPhotoCanSign == 0" class="text-danger">*需上传照片才可报名</p> |
| 36 | <el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh" | 40 | <el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh" |
| 37 | @selection-change="handleSelectionChange"> | 41 | @selection-change="handleSelectionChange"> |
| 38 | <el-table-column type="selection" label="选择" :selectable="selectable"/> | 42 | <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/> |
| 39 | <el-table-column label="所属国家" prop="countryName"/> | 43 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/> |
| 40 | <el-table-column label="姓氏" prop="xing"/> | 44 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> |
| 41 | <el-table-column label="名" prop="ming"/> | 45 | <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> |
| 42 | <el-table-column label="短名" prop="shortName"/> | 46 | <el-table-column :label="language==0?'短名':'Short Name'" prop="shortName" min-width="110"/> |
| 43 | <el-table-column label="性别" prop="sexStr"/> | 47 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> |
| 44 | <el-table-column label="年龄" prop="age"/> | 48 | <el-table-column :label="language==0?'年龄':'Age'" prop="age"/> |
| 45 | <el-table-column label="出生日期" prop="birth" width="100"/> | 49 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> |
| 46 | <el-table-column label="手机号码" prop="phone" width="120"/> | 50 | <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="phone" width="120"/> |
| 47 | <el-table-column label="邮箱" prop="email" width="150"/> | 51 | <el-table-column :label="language==0?'邮箱':'E-mail'" prop="email" width="150"/> |
| 48 | <el-table-column label="证件类型" prop="idcTypeStr"/> | 52 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr"/> |
| 49 | <el-table-column label="证件号码" prop="idcCode" width="200"/> | 53 | <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> |
| 50 | <el-table-column label="会员角色" width="200"> | 54 | <!-- <el-table-column label="会员角色" width="200">--> |
| 51 | <template #default="scope"> | 55 | <!-- <template #default="scope">--> |
| 52 | <div> | 56 | <!-- <div>--> |
| 53 | <div style="white-space: nowrap" class="esp"> | 57 | <!-- <div style="white-space: nowrap" class="esp">--> |
| 54 | <span v-for="item in scope.row.label?.split(',')" :key="item.id"> | 58 | <!-- <span v-for="item in scope.row.label?.split(',')" :key="item.id">--> |
| 55 | <el-tag type="warning" size="small" v-if="item==='0'" effect="plain" class="ml10">运动员</el-tag> | 59 | <!-- <span v-if="item==='0'" class="ml5">{{ language==0?'运动员':'athletes' }}</span>--> |
| 56 | <el-tag type="warning" size="small" v-if="item==='1'" effect="plain" class="ml10">教练</el-tag> | 60 | <!-- <span v-if="item==='1'" class="ml5">{{ language==0?'教练':'coach' }}</span>--> |
| 57 | <el-tag type="warning" size="small" v-if="item==='2'" effect="plain" class="ml10">领队</el-tag> | 61 | <!-- <span v-if="item==='2'" class="ml5">{{ language==0?'领队':'team leader' }}</span>--> |
| 58 | <el-tag type="warning" size="small" v-if="item==='3'" effect="plain" class="ml10">队医</el-tag> | 62 | <!-- <span v-if="item==='3'" class="ml5">{{ language==0?'队医':'team doctor' }}</span>--> |
| 59 | <el-tag type="warning" size="small" v-if="item==='4'" effect="plain" class="ml10">翻译</el-tag> | 63 | <!-- <span v-if="item==='4'" class="ml5">{{ language==0?'翻译':'translator' }}</span>--> |
| 60 | <el-tag type="warning" size="small" v-if="item==='5'" effect="plain" class="ml10">官员</el-tag> | 64 | <!-- <span v-if="item==='5'" class="ml5">{{ language==0?'官员':'official' }}</span>--> |
| 61 | <el-tag type="warning" size="small" v-if="item==='6'" effect="plain" class="ml10">其他</el-tag> | 65 | <!-- <span v-if="item==='6'" class="ml5">{{ language==0?'其他':'other' }}</span>--> |
| 62 | </span> | 66 | <!-- </span>--> |
| 63 | </div> | 67 | <!-- </div>--> |
| 64 | </div> | 68 | <!-- </div>--> |
| 65 | </template> | 69 | <!-- </template>--> |
| 66 | </el-table-column> | 70 | <!-- </el-table-column>--> |
| 67 | <el-table-column label="详细地址" prop="address"/> | 71 | <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/> |
| 68 | 72 | <el-table-column :label="language==0?'操作':'Actions'" width="120" fixed="right" align="center"> | |
| 69 | <el-table-column label="操作" width="120" fixed="right" align="center"> | ||
| 70 | <template #default="scope"> | 73 | <template #default="scope"> |
| 71 | <el-button type="text" @click="editPerson(scope.row)">编辑</el-button> | 74 | <el-button type="text" @click="editPerson(scope.row)"> |
| 75 | {{language==0?'编辑':'Edit'}} | ||
| 76 | </el-button> | ||
| 72 | </template> | 77 | </template> |
| 73 | </el-table-column> | 78 | </el-table-column> |
| 74 | </el-table> | 79 | </el-table> |
| 75 | <template #footer> | 80 | <template #footer> |
| 76 | <div class="dialog-footer text-center"> | 81 | <div class="dialog-footer text-center"> |
| 77 | <el-button type="primary" @click="submitForm">确定</el-button> | 82 | <el-button type="primary" @click="submitForm">{{language==0?'确定':'Confirm'}}</el-button> |
| 78 | <el-button @click="cancel">取 消</el-button> | 83 | <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button> |
| 79 | </div> | 84 | </div> |
| 80 | </template> | 85 | </template> |
| 81 | </el-dialog> | 86 | </el-dialog> |
| ... | @@ -91,6 +96,9 @@ import * as match from '@/apiPc/match' | ... | @@ -91,6 +96,9 @@ import * as match from '@/apiPc/match' |
| 91 | import addCoach from '../components/addCoach' | 96 | import addCoach from '../components/addCoach' |
| 92 | import {getGroupPersonList} from "@/apiPc/match"; | 97 | import {getGroupPersonList} from "@/apiPc/match"; |
| 93 | import Import from '../components/import' | 98 | import Import from '../components/import' |
| 99 | import cache from "@/plugins/cache"; | ||
| 100 | |||
| 101 | const language = ref(cache.local.get('language') || 0) | ||
| 94 | 102 | ||
| 95 | const {proxy} = getCurrentInstance() | 103 | const {proxy} = getCurrentInstance() |
| 96 | const emit = defineEmits(['submitForm', 'transfer']) | 104 | const emit = defineEmits(['submitForm', 'transfer']) |
| ... | @@ -109,6 +117,7 @@ let groupId | ... | @@ -109,6 +117,7 @@ let groupId |
| 109 | let choosedList = [] | 117 | let choosedList = [] |
| 110 | const choosedIds = [] | 118 | const choosedIds = [] |
| 111 | const open = (params) => { | 119 | const open = (params) => { |
| 120 | title.value = params.title | ||
| 112 | matchId = params.matchId | 121 | matchId = params.matchId |
| 113 | groupId = params.groupId | 122 | groupId = params.groupId |
| 114 | noPhotoCanSign.value = params.noPhotoCanSign | 123 | noPhotoCanSign.value = params.noPhotoCanSign | ... | ... |
| 1 | <template> | ||
| 2 | <div class="border-info" style="margin: 20px"> | ||
| 3 | <el-row> | ||
| 4 | <el-col :lg="8"> | ||
| 5 | <div class="item"><label>{{ language == 0 ? '教练' : 'Coach' }}</label> | ||
| 6 | <span v-for="c in names.coachList">{{ c.shortName }}</span> | ||
| 7 | </div> | ||
| 8 | <div class="item"><label>{{ language == 0 ? '翻译' : 'Translator' }}</label> | ||
| 9 | <span v-for="c in names.translatorList">{{ c.shortName }}</span> | ||
| 10 | </div> | ||
| 11 | </el-col> | ||
| 12 | <el-col :lg="8"> | ||
| 13 | <div class="item"> | ||
| 14 | <label>{{ language == 0 ? '领队' : 'Team leader' }}</label> | ||
| 15 | <span v-for="c in names.leaderList">{{ c.shortName }}</span> | ||
| 16 | </div> | ||
| 17 | <div class="item"> | ||
| 18 | <label>{{ language == 0 ? '官员' : 'Official' }}</label> | ||
| 19 | <span class="mr5" v-for="c in names.officialList">{{ c.shortName }}</span> | ||
| 20 | <span v-if="!names.officialList">--</span> | ||
| 21 | </div> | ||
| 22 | </el-col> | ||
| 23 | <el-col :lg="8"> | ||
| 24 | <div class="item"> | ||
| 25 | <label>{{ language == 0 ? '队医' : 'Team doctor' }}</label> | ||
| 26 | <span class="mr5" v-for="c in names.teamDoctorList"> | ||
| 27 | {{ c.shortName }} | ||
| 28 | </span> | ||
| 29 | </div> | ||
| 30 | <div class="item"> | ||
| 31 | <label>{{ language == 0 ? '其他' : 'Other' }}</label> | ||
| 32 | <span class="mr5" v-for="c in names.otherList"> | ||
| 33 | {{ c.shortName }} | ||
| 34 | </span> | ||
| 35 | </div> | ||
| 36 | </el-col> | ||
| 37 | </el-row> | ||
| 38 | </div> | ||
| 39 | </template> | ||
| 40 | |||
| 41 | <script setup> | ||
| 42 | const props = defineProps({ | ||
| 43 | names: { | ||
| 44 | type: Object, | ||
| 45 | required: true | ||
| 46 | }, | ||
| 47 | language: { | ||
| 48 | type: Number, | ||
| 49 | required: true, | ||
| 50 | default: 0 | ||
| 51 | } | ||
| 52 | }) | ||
| 53 | </script> | ||
| 54 | |||
| 55 | <style scoped lang="scss"> | ||
| 56 | .border-info { | ||
| 57 | .item { | ||
| 58 | margin: 5px 0; | ||
| 59 | color: #4C5359; | ||
| 60 | font-size: 14px; | ||
| 61 | |||
| 62 | label { | ||
| 63 | font-size: 14px; | ||
| 64 | margin-right: 14px | ||
| 65 | } | ||
| 66 | } | ||
| 67 | } | ||
| 68 | </style> |
| 1 | <template> | ||
| 2 | <div class="border-info gray" style="margin: 20px"> | ||
| 3 | <el-row> | ||
| 4 | <el-col :lg="8"> | ||
| 5 | <el-row :gutter="15"> | ||
| 6 | <el-col :span="4"> | ||
| 7 | <img class="w100" :src="fillImgUrl(groupInfo.imgUrl)"/> | ||
| 8 | </el-col> | ||
| 9 | <el-col :span="20"> | ||
| 10 | <div class="item"><label>{{ language==0?'团体名称':'Team Name' }}</label>{{ groupInfo.name }}</div> | ||
| 11 | <div class="item"><label>{{ language==0?'团体类型':'Group type' }}</label>{{ groupInfo.typeStr }}</div> | ||
| 12 | </el-col> | ||
| 13 | </el-row> | ||
| 14 | </el-col> | ||
| 15 | <el-col :lg="8"> | ||
| 16 | <div class="item"><label>{{ language==0?'负责人姓名':'Contact Person' }}</label>{{ groupInfo.contactPerson }}</div> | ||
| 17 | <div class="item"><label>{{ language==0?'参赛队名称':'Name of participating team' }}</label>{{ groupInfo.abreviations }}</div> | ||
| 18 | |||
| 19 | </el-col> | ||
| 20 | <el-col :lg="8"> | ||
| 21 | <div class="item"><label>{{ language==0?'邮箱':'Email' }}</label>{{ groupInfo.contactEmail }}</div> | ||
| 22 | <div class="item"><label>{{ language==0?'详细地址':'Detailed Address' }}</label>{{ groupInfo.address }}</div> | ||
| 23 | </el-col> | ||
| 24 | </el-row> | ||
| 25 | </div> | ||
| 26 | </template> | ||
| 27 | |||
| 28 | <script setup> | ||
| 29 | const props = defineProps({ | ||
| 30 | groupInfo: { | ||
| 31 | type: Object, | ||
| 32 | required: true | ||
| 33 | }, | ||
| 34 | language: { | ||
| 35 | type: Number, | ||
| 36 | required: true, | ||
| 37 | default: 0 | ||
| 38 | } | ||
| 39 | }) | ||
| 40 | </script> | ||
| 41 | |||
| 42 | <style scoped lang="scss"> | ||
| 43 | .border-info{ | ||
| 44 | .item{margin: 5px 0;color: #4C5359; font-size: 14px; | ||
| 45 | label{font-size: 14px;margin-right: 14px} | ||
| 46 | } | ||
| 47 | } | ||
| 48 | </style> |
| 1 | <template> | ||
| 2 | <div class="border-info" style="margin: 20px"> | ||
| 3 | <el-row v-if="language==0"> | ||
| 4 | <el-col :lg="8"><div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col> | ||
| 5 | <el-col :lg="8"><div class="item"><label>赛事类型</label>{{matchInfo.name}}</div></el-col> | ||
| 6 | <el-col :lg="8"><div class="item"><label>赛事时间</label>{{matchInfo.beginTime?.slice(0,10)}} 至 {{ matchInfo.endTime?.slice(0,10) }}</div></el-col> | ||
| 7 | <el-col :lg="8"><div class="item"><label>报名时间</label>{{ matchInfo.signBeginTime?.slice(0,10) }} 至{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col> | ||
| 8 | <el-col :lg="16"><div class="item"><label>比赛地址</label>{{matchInfo.address}}</div></el-col> | ||
| 9 | </el-row> | ||
| 10 | <el-row v-else> | ||
| 11 | <el-col :lg="8"><div class="item"><label>Event Name</label>{{matchInfo.name}}</div></el-col> | ||
| 12 | <el-col :lg="8"><div class="item"><label>Event Type</label>{{matchInfo.name}}</div></el-col> | ||
| 13 | <el-col :lg="8"><div class="item"><label>Event Date</label>{{matchInfo.beginTime?.slice(0,10)}} ~ {{ matchInfo.endTime?.slice(0,10) }}</div></el-col> | ||
| 14 | <el-col :lg="8"><div class="item"><label>Registration Period</label>{{ matchInfo.signBeginTime?.slice(0,10) }} ~{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col> | ||
| 15 | <el-col :lg="16"><div class="item"><label>Event Address</label>{{matchInfo.address}}</div></el-col> | ||
| 16 | </el-row> | ||
| 17 | </div> | ||
| 18 | </template> | ||
| 19 | |||
| 20 | <script setup> | ||
| 21 | const props = defineProps({ | ||
| 22 | matchInfo: { | ||
| 23 | type: Object, | ||
| 24 | required: true | ||
| 25 | }, | ||
| 26 | language: { | ||
| 27 | type: Number, | ||
| 28 | required: true, | ||
| 29 | default: 0 | ||
| 30 | } | ||
| 31 | }) | ||
| 32 | </script> | ||
| 33 | |||
| 34 | <style scoped lang="scss"> | ||
| 35 | .border-info{ | ||
| 36 | .item{margin: 5px 0;color: #4C5359; font-size: 14px; | ||
| 37 | label{font-size: 14px;margin-right: 14px} | ||
| 38 | } | ||
| 39 | } | ||
| 40 | </style> |
| 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="序号" width="80" align="center"/> | 4 | <el-table-column type="index" :label="language==0?'序号':'index'" width="80" align="center"/> |
| 5 | <el-table-column label="所属国家" prop="countryName"/> | 5 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/> |
| 6 | <el-table-column label="姓氏" prop="xing"/> | 6 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> |
| 7 | <el-table-column label="名" prop="ming"/> | 7 | <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> |
| 8 | <el-table-column label="短名" prop="shortName"/> | 8 | <el-table-column :label="language==0?'短名':'Short Name'" prop="shortName" min-width="110"/> |
| 9 | <el-table-column label="性别" prop="sexStr"/> | 9 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> |
| 10 | <el-table-column label="年龄" prop="age"/> | 10 | <el-table-column :label="language==0?'年龄':'Age'" prop="age"/> |
| 11 | <el-table-column label="出生日期" prop="birth" width="100"/> | 11 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> |
| 12 | <el-table-column label="手机号码" prop="phone" width="120"/> | 12 | <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="phone" width="120"/> |
| 13 | <el-table-column label="邮箱" prop="email" width="150"/> | 13 | <el-table-column :label="language==0?'邮箱':'E-mail'" prop="email" width="150"/> |
| 14 | <el-table-column label="证件类型" prop="idcTypeStr"/> | 14 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr"/> |
| 15 | <el-table-column label="证件号码" prop="idcCode" width="200"/> | 15 | <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> |
| 16 | <el-table-column label="会员角色"> | 16 | <el-table-column :label="language==0?'会员角色':'Role'" width="150"> |
| 17 | <template #default="scope"> | 17 | <template #default="scope"> |
| 18 | <span v-for="item in scope.row.label?.split(',')" :key="item.id"> | 18 | <div class="esp"> |
| 19 | <el-tag type="primary" size="mini" v-if="item==='0'" effect="dark" class="ml10">运动员</el-tag> | 19 | <span v-for="item in scope.row.label?.split(',')" :key="item.id" class="text-primary"> |
| 20 | <el-tag type="info" size="mini" v-if="item==='1'" effect="dark" class="ml10">教练</el-tag> | 20 | <span v-if="item==='0'" class="ml5">{{ language==0?'运动员':'athletes' }}</span> |
| 21 | <el-tag type="info" size="mini" v-if="item==='2'" effect="dark" class="ml10">领队</el-tag> | 21 | <span v-if="item==='1'" class="ml5">{{ language==0?'教练':'coach' }}</span> |
| 22 | <el-tag type="info" size="mini" v-if="item==='3'" effect="dark" class="ml10">队医</el-tag> | 22 | <span v-if="item==='2'" class="ml5">{{ language==0?'领队':'team leader' }}</span> |
| 23 | <el-tag type="info" size="mini" v-if="item==='4'" effect="dark" class="ml10">翻译</el-tag> | 23 | <span v-if="item==='3'" class="ml5">{{ language==0?'队医':'team doctor' }}</span> |
| 24 | <el-tag type="info" size="mini" v-if="item==='5'" effect="dark" class="ml10">官员</el-tag> | 24 | <span v-if="item==='4'" class="ml5">{{ language==0?'翻译':'translator' }}</span> |
| 25 | <el-tag type="info" size="mini" v-if="item==='6'" effect="dark" class="ml10">其他</el-tag> | 25 | <span v-if="item==='5'" class="ml5">{{ language==0?'官员':'official' }}</span> |
| 26 | <span v-if="item==='6'" class="ml5">{{ language==0?'其他':'other' }}</span> | ||
| 26 | </span> | 27 | </span> |
| 28 | </div> | ||
| 27 | </template> | 29 | </template> |
| 28 | </el-table-column> | 30 | </el-table-column> |
| 29 | <el-table-column label="详细地址" prop="address"/> | 31 | <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/> |
| 30 | <el-table-column label="操作" fixed="right" width="160" header-align="center" align="center"> | 32 | <el-table-column :label="language==0?'操作':'Actions'" fixed="right" width="160" header-align="center" |
| 33 | align="center"> | ||
| 31 | <template #default="scope"> | 34 | <template #default="scope"> |
| 32 | <a class="text-primary pd10" @click="editCoach(scope.row.id,scope.row.groupId)">编辑</a> | 35 | <a class="text-primary pd10" @click="editCoach(scope.row)"> |
| 33 | <a class="text-primary pd10" @click="delperson(scope.row)">删除</a> | 36 | {{language==0?'编辑':'Edit'}} |
| 37 | </a> | ||
| 38 | <a class="text-primary pd10" @click="delperson(scope.row)"> | ||
| 39 | {{language==0?'删除':'Delete'}} | ||
| 40 | </a> | ||
| 34 | </template> | 41 | </template> |
| 35 | </el-table-column> | 42 | </el-table-column> |
| 36 | </el-table> | 43 | </el-table> |
| 37 | <!-- <paginationPc--> | 44 | <!-- <paginationPc--> |
| 38 | <!-- v-show="total>0"--> | 45 | <!-- v-show="total>0"--> |
| 39 | <!-- v-model:page="query.pageNum"--> | 46 | <!-- v-model:page="query.pageNum"--> |
| 40 | <!-- v-model:limit="query.pageSize"--> | 47 | <!-- v-model:limit="query.pageSize"--> |
| 41 | <!-- :total="total"--> | 48 | <!-- :total="total"--> |
| 42 | <!-- @pagination="getList"--> | 49 | <!-- @pagination="getList"--> |
| 43 | <!-- />--> | 50 | <!-- />--> |
| 44 | </template> | 51 | </template> |
| 45 | 52 | ||
| 46 | <script setup> | 53 | <script setup> |
| 54 | import {ref} from "vue"; | ||
| 55 | import cache from "@/plugins/cache"; | ||
| 56 | const language = ref(cache.local.get('language') || 0) | ||
| 57 | const emit = defineEmits(['edit', 'delete']) | ||
| 58 | let title = '' | ||
| 47 | const props = defineProps({ | 59 | const props = defineProps({ |
| 48 | tableData:{ | 60 | tableData: { |
| 49 | type:Array, | 61 | type: Array, |
| 50 | required:true | 62 | required: true |
| 51 | } | 63 | } |
| 52 | }) | 64 | }) |
| 53 | const editCoach = () => { | 65 | const editCoach = (row) => { |
| 66 | // scope.row.id,scope.row.groupId | ||
| 67 | title = (language.value==0?'编辑人员':'Edit') | ||
| 68 | emit('edit', row,title) | ||
| 69 | } | ||
| 70 | const delperson = (row) => { | ||
| 71 | emit('delete', row) | ||
| 54 | 72 | ||
| 55 | } | 73 | } |
| 56 | </script> | 74 | </script> | ... | ... |
| 1 | <template> | ||
| 2 | <div class="pd20"> | ||
| 3 | <div class="matchItem" v-for="n in list" :key="n.id" @click="goDetail(n.id)"> | ||
| 4 | <el-row :gutter="15"> | ||
| 5 | <el-col :lg="7" :md="24" :xl="6"> | ||
| 6 | <img class="mauto w100" :src="fillImgUrl(n.coverUrl)"> | ||
| 7 | </el-col> | ||
| 8 | <el-col :lg="10" :md="12" :xl="12"> | ||
| 9 | <div class="info"> | ||
| 10 | <h3>{{ n.name }}</h3> | ||
| 11 | <p class="ppl"><label>{{ language==0?'比赛时间':'Playing Time' }}:</label>{{n.beginTime?.slice(0,10)}} 至 {{ n.endTime?.slice(0,10) }}</p> | ||
| 12 | <p class="ppl"><label>{{ language==0?'地    点':'Location' }}:</label>{{ n.address }}</p> | ||
| 13 | <p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}:</label>{{ n.signEndTime?.slice(0,10) }}</p> | ||
| 14 | |||
| 15 | <p class="ppl"><label>{{ language==0?'联系人员':'Contact Person' }}:</label>{{ n.contactPerson }}</p> | ||
| 16 | <p class="ppl"><label>{{ language==0?'联系电话':'Phone' }}:</label>{{ n.contactTelno }}</p> | ||
| 17 | <p class="ppl"><label>{{ language==0?'邮    箱':'E-mail' }}:</label>{{ n.contactEmail }}</p> | ||
| 18 | |||
| 19 | </div> | ||
| 20 | </el-col> | ||
| 21 | <el-col :lg="7" :md="12" :xl="6"> | ||
| 22 | <p class="countDownTitle"> | ||
| 23 | <span v-if="language==0">报名截止倒计时</span> | ||
| 24 | <span v-else>Registration deadline countdown</span> | ||
| 25 | </p> | ||
| 26 | <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> | ||
| 27 | <template #default="timeData"> | ||
| 28 | <span class="block">{{ timeData.days }}</span> | ||
| 29 | <span class="colon">{{ language==0?'天':'Days' }}</span> | ||
| 30 | <span class="block">{{ timeData.hours }}</span> | ||
| 31 | <span class="colon">{{ language==0?'时':'Hrs' }}</span> | ||
| 32 | <span class="block">{{ timeData.minutes }}</span> | ||
| 33 | <span class="colon">{{ language==0?'分':'Min' }}</span> | ||
| 34 | <span class="block">{{ timeData.seconds }}</span> | ||
| 35 | <span class="colon">{{ language==0?'秒':'Sec' }}</span> | ||
| 36 | </template> | ||
| 37 | </van-count-down> | ||
| 38 | |||
| 39 | <div class="text-center mt30"> | ||
| 40 | <a class="btn-lineG mb20 mauto" style="display: block;"> | ||
| 41 | {{ language==0?'我要报名':'Application' }}</a> | ||
| 42 | </div> | ||
| 43 | </el-col> | ||
| 44 | </el-row> | ||
| 45 | </div> | ||
| 46 | </div> | ||
| 47 | |||
| 48 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="list?.length == 0" description=" "/> | ||
| 49 | </template> | ||
| 50 | |||
| 51 | <script setup> | ||
| 52 | import {ref} from "vue"; | ||
| 53 | import {onMounted} from "@vue/runtime-core"; | ||
| 54 | import {dayjs} from "element-plus" | ||
| 55 | import cache from "@/plugins/cache" | ||
| 56 | const language = ref(cache.local.get('language') || 0) | ||
| 57 | |||
| 58 | const router = useRouter() | ||
| 59 | const time = ref(0) | ||
| 60 | const props = defineProps({ | ||
| 61 | list: { | ||
| 62 | type: Array, | ||
| 63 | required: true | ||
| 64 | } | ||
| 65 | }) | ||
| 66 | onMounted(()=>{ | ||
| 67 | for(let n of props.list){ | ||
| 68 | var today = dayjs().format('YYYY-MM-DD HH:mm:ss') | ||
| 69 | n.time = dayjs(n.signEndTime).diff(today, 'millisecond') | ||
| 70 | } | ||
| 71 | }) | ||
| 72 | function goDetail(id) { | ||
| 73 | const routeData = router.resolve({ | ||
| 74 | path: `${id}` | ||
| 75 | }) | ||
| 76 | window.open(routeData.href, '_blank') | ||
| 77 | } | ||
| 78 | </script> | ||
| 79 | |||
| 80 | <style scoped lang="scss"> | ||
| 81 | .mt60{margin-top: 60px} | ||
| 82 | .matchItem { | ||
| 83 | cursor: pointer;margin: 0 0 20px;padding: 0 0 20px; | ||
| 84 | background: #FFFFFF;border-bottom: 1px solid #e5e5e5; | ||
| 85 | position: relative; | ||
| 86 | &:last-child { | ||
| 87 | border-bottom: none; | ||
| 88 | } | ||
| 89 | .el-avatar { | ||
| 90 | position: absolute; | ||
| 91 | left: 20px; | ||
| 92 | top: 30px; | ||
| 93 | |||
| 94 | img { | ||
| 95 | background: #fff; | ||
| 96 | } | ||
| 97 | } | ||
| 98 | |||
| 99 | .info { | ||
| 100 | p { | ||
| 101 | font-size: 14px; | ||
| 102 | } | ||
| 103 | } | ||
| 104 | |||
| 105 | .typeTag { | ||
| 106 | position: absolute; | ||
| 107 | right: 0; | ||
| 108 | top: 0; | ||
| 109 | } | ||
| 110 | |||
| 111 | h3 { | ||
| 112 | font-weight: 500;margin: 0 0 10px; | ||
| 113 | font-size: 18px; | ||
| 114 | color: #000000; | ||
| 115 | text-overflow: ellipsis; | ||
| 116 | } | ||
| 117 | |||
| 118 | &:hover h3 { | ||
| 119 | color: var(--el-color-primary); | ||
| 120 | } | ||
| 121 | } | ||
| 122 | .countDownTitle { | ||
| 123 | text-align: center; | ||
| 124 | color: #525F6B; | ||
| 125 | position: relative; | ||
| 126 | width: 100%; | ||
| 127 | left: 0; | ||
| 128 | font-size: 14px; | ||
| 129 | } | ||
| 130 | |||
| 131 | .countDownTitle span { | ||
| 132 | background: #fff; | ||
| 133 | padding: 0 10px; | ||
| 134 | position: relative; | ||
| 135 | z-index: 1; | ||
| 136 | } | ||
| 137 | |||
| 138 | .countDownTitle::after { | ||
| 139 | position: absolute; | ||
| 140 | background: #ccc; | ||
| 141 | height: 1px; | ||
| 142 | content: ''; | ||
| 143 | top: 0; | ||
| 144 | bottom: 0; | ||
| 145 | margin: auto; | ||
| 146 | width: 100%; | ||
| 147 | left: 0; | ||
| 148 | } | ||
| 149 | .info .ppl{margin: 5px 0;} | ||
| 150 | .ppl{color: #29343C; | ||
| 151 | label{color: #929AA0;} | ||
| 152 | } | ||
| 153 | .van-count-down { | ||
| 154 | text-align: center; | ||
| 155 | margin: 20px 0; | ||
| 156 | } | ||
| 157 | |||
| 158 | .colon { | ||
| 159 | display: inline-block; | ||
| 160 | font-size: 16px; | ||
| 161 | margin: 0 8px; | ||
| 162 | color: #7B7F83; | ||
| 163 | } | ||
| 164 | |||
| 165 | .block { | ||
| 166 | display: inline-block; opacity: 0.7; | ||
| 167 | width: 52px; | ||
| 168 | color: #fff; | ||
| 169 | font-size: 26px; | ||
| 170 | font-weight: bold; | ||
| 171 | border-radius: 10px; | ||
| 172 | background: url(@/assets/img/djs_bg.png) left; | ||
| 173 | background-size: 100% 100%; | ||
| 174 | line-height: 50px; | ||
| 175 | text-align: center; | ||
| 176 | } | ||
| 177 | |||
| 178 | </style> |
| 1 | <template> | ||
| 2 | <el-steps :active="activeStep" align-center> | ||
| 3 | <el-step :title="language==0?'团队信息':'Team Information'" /> | ||
| 4 | <el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" /> | ||
| 5 | <el-step :title="language==0?'选手报名':'Participant Registration'" /> | ||
| 6 | <el-step :title="language==0?'提交审核':'Submit for review'" /> | ||
| 7 | </el-steps> | ||
| 8 | </template> | ||
| 9 | |||
| 10 | <script setup> | ||
| 11 | const props = defineProps({ | ||
| 12 | activeStep: { | ||
| 13 | type: Number, | ||
| 14 | required: true | ||
| 15 | }, | ||
| 16 | language: { | ||
| 17 | type: Number, | ||
| 18 | required: true, | ||
| 19 | default: 0 | ||
| 20 | } | ||
| 21 | }) | ||
| 22 | </script> | ||
| 23 | |||
| 24 | <style scoped> | ||
| 25 | |||
| 26 | </style> |
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
| ... | @@ -275,7 +275,7 @@ onMounted(() => { | ... | @@ -275,7 +275,7 @@ onMounted(() => { |
| 275 | }) | 275 | }) |
| 276 | function getTotalFee() { | 276 | function getTotalFee() { |
| 277 | match.getTotalFee({ | 277 | match.getTotalFee({ |
| 278 | entryId: entryId, | 278 | entryId: groupId, |
| 279 | cptId: cptId | 279 | cptId: cptId |
| 280 | }).then(res => { | 280 | }).then(res => { |
| 281 | form.value = res.data | 281 | form.value = res.data | ... | ... |
| ... | @@ -2,72 +2,13 @@ | ... | @@ -2,72 +2,13 @@ |
| 2 | <div> | 2 | <div> |
| 3 | <div class="box ph-30"> | 3 | <div class="box ph-30"> |
| 4 | <el-card class="mb20"> | 4 | <el-card class="mb20"> |
| 5 | <el-steps :active="activeStep" align-center> | 5 | <team-sign-step :language="language" :active-step="activeStep"/> |
| 6 | <el-step title="团队信息"/> | ||
| 7 | <el-step title="教练/领队/其他"/> | ||
| 8 | <el-step title="选手报名"/> | ||
| 9 | <el-step title="提交审核"/> | ||
| 10 | </el-steps> | ||
| 11 | </el-card> | 6 | </el-card> |
| 12 | <el-card> | 7 | <el-card :body-style="{ padding: '0px' }"> |
| 13 | <div class="border-info"> | 8 | <match-info-row :matchInfo="matchInfo" :language="language"/> |
| 14 | <el-row> | 9 | <group-info-row :groupInfo="groupInfo" :language="language"/> |
| 15 | <el-col :lg="8"> | 10 | <coach-info-row :names="names" :language="language"/> |
| 16 | <div class="item"><label>赛事名称</label>{{ matchInfo.name }}</div> | 11 | <div style="margin: 20px"> |
| 17 | </el-col> | ||
| 18 | <el-col :lg="8"> | ||
| 19 | <div class="item"><label>赛事类型</label>{{ matchInfo.name }}</div> | ||
| 20 | </el-col> | ||
| 21 | <el-col :lg="8"> | ||
| 22 | <div class="item"><label>赛事时间</label>{{ matchInfo.beginTime?.slice(0, 10) }} 至 | ||
| 23 | {{ matchInfo.endTime?.slice(0, 10) }} | ||
| 24 | </div> | ||
| 25 | </el-col> | ||
| 26 | <el-col :lg="8"> | ||
| 27 | <div class="item"><label>报名时间</label>{{ matchInfo.signBeginTime?.slice(0, 10) }} | ||
| 28 | 至{{ matchInfo.signEndTime?.slice(0, 10) }} | ||
| 29 | </div> | ||
| 30 | </el-col> | ||
| 31 | <el-col :lg="16"> | ||
| 32 | <div class="item"><label>比赛地址</label>{{ matchInfo.address }}</div> | ||
| 33 | </el-col> | ||
| 34 | </el-row> | ||
| 35 | |||
| 36 | </div> | ||
| 37 | <div class="border-info gray mt20"> | ||
| 38 | <el-row> | ||
| 39 | <el-col :lg="8"> | ||
| 40 | <img/> | ||
| 41 | <div class="item"><label>团队名称</label>{{ matchInfo.signFee }}</div> | ||
| 42 | <div class="item"><label>团队类型</label>{{ matchInfo.signFee }}</div> | ||
| 43 | </el-col> | ||
| 44 | <el-col :lg="8"> | ||
| 45 | <div class="item"><label>负责人姓名</label>{{ matchInfo.signFee }}</div> | ||
| 46 | <div class="item"><label>参赛队名称</label>{{ matchInfo.signFee }}</div> | ||
| 47 | |||
| 48 | </el-col> | ||
| 49 | <el-col :lg="8"> | ||
| 50 | <div class="item"><label>邮箱</label>{{ matchInfo.signFee }}</div> | ||
| 51 | <div class="item"><label>详细地址</label>{{ matchInfo.signFee }}</div> | ||
| 52 | </el-col> | ||
| 53 | </el-row> | ||
| 54 | </div> | ||
| 55 | <div class="border-info mt20"> | ||
| 56 | <el-row> | ||
| 57 | <el-col :lg="8"> | ||
| 58 | <div class="item"><label>教练</label>{{ matchInfo.signFee }}</div> | ||
| 59 | <div class="item"><label>翻译</label>{{ matchInfo.signFee }}</div> | ||
| 60 | </el-col> | ||
| 61 | <el-col :lg="8"> | ||
| 62 | <div class="item"><label>领队</label>{{ matchInfo.signFee }}</div> | ||
| 63 | <div class="item"><label>官员</label>{{ matchInfo.signFee }}</div> | ||
| 64 | </el-col> | ||
| 65 | <el-col :lg="8"> | ||
| 66 | <div class="item"><label>队医</label>{{ matchInfo.signFee }}</div> | ||
| 67 | <div class="item"><label>其他</label>{{ matchInfo.signFee }}</div> | ||
| 68 | </el-col> | ||
| 69 | </el-row> | ||
| 70 | </div> | ||
| 71 | 12 | ||
| 72 | <div class="mt20"> | 13 | <div class="mt20"> |
| 73 | <div class="leftboderTT">参赛人员清单</div> | 14 | <div class="leftboderTT">参赛人员清单</div> |
| ... | @@ -115,6 +56,7 @@ | ... | @@ -115,6 +56,7 @@ |
| 115 | </el-table-column> | 56 | </el-table-column> |
| 116 | </el-table> | 57 | </el-table> |
| 117 | </div> | 58 | </div> |
| 59 | </div> | ||
| 118 | 60 | ||
| 119 | 61 | ||
| 120 | </el-card> | 62 | </el-card> |
| ... | @@ -143,9 +85,68 @@ | ... | @@ -143,9 +85,68 @@ |
| 143 | </template> | 85 | </template> |
| 144 | 86 | ||
| 145 | <script setup> | 87 | <script setup> |
| 88 | import TeamSignStep from './components/teamSignStep' | ||
| 89 | import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row" | ||
| 90 | import GroupInfoRow from "@/viewsPc/match/components/groupInfo-row" | ||
| 91 | import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row" | ||
| 92 | |||
| 146 | import {ref} from "vue" | 93 | import {ref} from "vue" |
| 94 | import cache from "@/plugins/cache"; | ||
| 95 | import {onMounted} from "@vue/runtime-core"; | ||
| 96 | import * as match from "@/apiPc/match" | ||
| 97 | import {useRoute, useRouter} from "vue-router"; | ||
| 98 | import useUserStore from "@/store/modules/user"; | ||
| 99 | const route = useRoute() | ||
| 100 | const router = useRouter() | ||
| 147 | const activeStep = ref(3) | 101 | const activeStep = ref(3) |
| 148 | const matchInfo = ref({}) | 102 | const matchInfo = ref({}) |
| 103 | const groupInfo = useUserStore().group || {} | ||
| 104 | const language = ref(cache.local.get('language') || 0) | ||
| 105 | const groupId = ref() | ||
| 106 | const form = ref({}) | ||
| 107 | const matchId = ref() | ||
| 108 | const names = ref({}) | ||
| 109 | onMounted(()=>{ | ||
| 110 | console.log(route.query) | ||
| 111 | groupId.value = route.query.groupId || 0 | ||
| 112 | matchId.value = route.query.matchId | ||
| 113 | getMatch() | ||
| 114 | getFee() | ||
| 115 | if(groupId.value!=0){ | ||
| 116 | tuandui() | ||
| 117 | } else { | ||
| 118 | geren() | ||
| 119 | } | ||
| 120 | }) | ||
| 121 | const getMatch = () => { | ||
| 122 | match.getMatchById({ id: matchId.value }).then(res => { | ||
| 123 | matchInfo.value = res.data | ||
| 124 | }) | ||
| 125 | } | ||
| 126 | function geren() { | ||
| 127 | match.getChooseDoneSingleCoachs(matchId.value).then(res => { | ||
| 128 | names.value = res.data | ||
| 129 | }) | ||
| 130 | } | ||
| 131 | |||
| 132 | function tuandui() { | ||
| 133 | match.getChooseDoneGroupCoachs(matchId.value, groupId.value).then(res => { | ||
| 134 | names.value = res.data | ||
| 135 | }) | ||
| 136 | } | ||
| 137 | const goPrev = () => { | ||
| 138 | router.go(-1) | ||
| 139 | } | ||
| 140 | const getFee = () => { | ||
| 141 | console.log(groupId.value) | ||
| 142 | |||
| 143 | match.getTotalFee({ | ||
| 144 | entryId: groupId.value, | ||
| 145 | cptId: matchId.value | ||
| 146 | }).then(res => { | ||
| 147 | form.value = res.data | ||
| 148 | }) | ||
| 149 | } | ||
| 149 | </script> | 150 | </script> |
| 150 | 151 | ||
| 151 | <style scoped lang="scss"> | 152 | <style scoped lang="scss"> |
| ... | @@ -169,4 +170,9 @@ const matchInfo = ref({}) | ... | @@ -169,4 +170,9 @@ const matchInfo = ref({}) |
| 169 | .text-right{text-align: right; | 170 | .text-right{text-align: right; |
| 170 | a{margin-left: 20px;} | 171 | a{margin-left: 20px;} |
| 171 | } | 172 | } |
| 173 | .border-info{ | ||
| 174 | .item{margin: 5px 0;color: #4C5359; font-size: 14px; | ||
| 175 | label{font-size: 14px;margin-right: 14px} | ||
| 176 | } | ||
| 177 | } | ||
| 172 | </style> | 178 | </style> | ... | ... |
| ... | @@ -52,7 +52,7 @@ | ... | @@ -52,7 +52,7 @@ |
| 52 | </el-form-item> | 52 | </el-form-item> |
| 53 | <el-form-item label="国籍" prop="countryId"> | 53 | <el-form-item label="国籍" prop="countryId"> |
| 54 | <el-select v-model="form.countryId" class="m-2" @change="changeCountryId"> | 54 | <el-select v-model="form.countryId" class="m-2" @change="changeCountryId"> |
| 55 | <el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id" /> | 55 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" /> |
| 56 | </el-select> | 56 | </el-select> |
| 57 | </el-form-item> | 57 | </el-form-item> |
| 58 | <el-form-item label="民族" prop="nation"> | 58 | <el-form-item label="民族" prop="nation"> | ... | ... |
| ... | @@ -3,72 +3,56 @@ | ... | @@ -3,72 +3,56 @@ |
| 3 | 3 | ||
| 4 | <div class="box ph-30"> | 4 | <div class="box ph-30"> |
| 5 | <el-card> | 5 | <el-card> |
| 6 | <el-steps active="1" align-center> | 6 | <team-sign-step :language="language" :active-step="0"/> |
| 7 | <el-step :title="language==0?'团队信息':'Team Information'" /> | ||
| 8 | <el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" /> | ||
| 9 | <el-step :title="language==0?'选手报名':'Participant Registration'" /> | ||
| 10 | <el-step :title="language==0?'提交审核':'Submit for review'" /> | ||
| 11 | </el-steps> | ||
| 12 | </el-card> | 7 | </el-card> |
| 13 | <div class="h20"></div> | 8 | <div class="h20"></div> |
| 14 | <div class="panel" style="box-shadow: var(--el-box-shadow)"> | 9 | <div class="panel" style="box-shadow: var(--el-box-shadow)"> |
| 15 | <div class="border-info" style="margin: 20px"> | 10 | <match-info-row :matchInfo="matchInfo" :language="language"/> |
| 16 | <el-row v-if="language==0"> | ||
| 17 | <el-col :lg="8"><div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col> | ||
| 18 | <el-col :lg="8"><div class="item"><label>赛事类型</label>{{matchInfo.name}}</div></el-col> | ||
| 19 | <el-col :lg="8"><div class="item"><label>赛事时间</label>{{matchInfo.beginTime?.slice(0,10)}} 至 {{ matchInfo.endTime?.slice(0,10) }}</div></el-col> | ||
| 20 | <el-col :lg="8"><div class="item"><label>报名时间</label>{{ matchInfo.signBeginTime?.slice(0,10) }} 至{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col> | ||
| 21 | <el-col :lg="16"><div class="item"><label>比赛地址</label>{{matchInfo.address}}</div></el-col> | ||
| 22 | </el-row> | ||
| 23 | <el-row v-else> | ||
| 24 | <el-col :lg="8"><div class="item"><label>Event Name</label>{{matchInfo.name}}</div></el-col> | ||
| 25 | <el-col :lg="8"><div class="item"><label>Event Type</label>{{matchInfo.name}}</div></el-col> | ||
| 26 | <el-col :lg="8"><div class="item"><label>Event Date</label>{{matchInfo.beginTime?.slice(0,10)}} ~ {{ matchInfo.endTime?.slice(0,10) }}</div></el-col> | ||
| 27 | <el-col :lg="8"><div class="item"><label>Registration Period</label>{{ matchInfo.signBeginTime?.slice(0,10) }} ~{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col> | ||
| 28 | <el-col :lg="16"><div class="item"><label>Event Address</label>{{matchInfo.address}}</div></el-col> | ||
| 29 | </el-row> | ||
| 30 | |||
| 31 | </div> | ||
| 32 | <div class="h20"></div> | 11 | <div class="h20"></div> |
| 33 | <el-form ref="ruleFormRef" label-width="120px" class="signForm" :model="form" :rules="rules"> | 12 | <el-form ref="ruleFormRef" label-width="120px" class="signForm" |
| 13 | :model="form" :rules="rules" | ||
| 14 | :label-position="language==0?'left':'top'"> | ||
| 34 | <el-row> | 15 | <el-row> |
| 35 | <el-col :lg="8" :offset="2"> | 16 | <el-col :lg="8" :offset="2"> |
| 36 | <el-form-item label="团体Logo" prop="imgUrl"> | 17 | <el-form-item :label="language==0?'团体Logo':'Group Logo'" prop="imgUrl"> |
| 37 | <ImageUpload2 v-model="form.imgUrl" :crop-width="200" :crop-height="200" :limit="1"/> | 18 | <ImageUpload2 v-model="form.imgUrl" :crop-width="200" :crop-height="200" :limit="1"/> |
| 38 | <span class="tip">请上传不超过 <i>5M</i> 的文件 格式为 <i>png/jpg/jpeg</i> 的文件</span> | 19 | <span class="tip" v-if="language==0">请上传不超过 <i>5M</i> 的文件 格式为 <i>png/jpg/jpeg</i> 的文件</span> |
| 20 | <span class="tip" v-else>Please upload a file in the format of | ||
| 21 | <i>png/jpg/jpeg</i> that does not exceed <i>5MB</i> | ||
| 22 | </span> | ||
| 39 | </el-form-item> | 23 | </el-form-item> |
| 40 | </el-col> | 24 | </el-col> |
| 41 | <el-col :lg="10"> | 25 | <el-col :lg="10"> |
| 42 | <el-form-item label="团体名称" prop="name"> | 26 | <el-form-item :label="language==0?'团体名称':'Team Name'" prop="name"> |
| 43 | <el-input v-model="form.name" placeholder="请输入团体名称" /> | 27 | <el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" /> |
| 44 | </el-form-item> | 28 | </el-form-item> |
| 45 | <el-form-item label="负责人姓名" prop="contactPerson"> | 29 | <el-form-item :label="language==0?'负责人姓名':'Contact Person'" prop="contactPerson"> |
| 46 | <el-input v-model="form.contactPerson" placeholder="请输入联系人" /> | 30 | <el-input v-model="form.contactPerson" placeholder="请输入联系人" /> |
| 47 | </el-form-item> | 31 | </el-form-item> |
| 48 | <el-form-item label="邮箱" required prop="contactEmail"> | 32 | <el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail"> |
| 49 | <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/> | 33 | <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/> |
| 50 | </el-form-item> | 34 | </el-form-item> |
| 51 | <el-form-item label="详细地址" required prop="address"> | 35 | <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address"> |
| 52 | <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/> | 36 | <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/> |
| 53 | </el-form-item> | 37 | </el-form-item> |
| 54 | <el-form-item label="团体类型" prop="type"> | 38 | <el-form-item :label="language==0?'团体类型':'Group type'" prop="type"> |
| 55 | <el-select v-model="form.type" placeholder="请选择团体类型" style="width: 100%;"> | 39 | <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;"> |
| 56 | <el-option label="普通院校" value="0" /> | 40 | <el-option :label="language==0?'普通院校':'School'" value="0" /> |
| 57 | <el-option label="专业舞蹈学校" value="1" /> | 41 | <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" /> |
| 58 | <el-option label="培训机构/俱乐部" value="2" /> | 42 | <el-option :label="language==0?'培训机构/俱乐部':'Company/Club'" value="2" /> |
| 59 | <el-option label="地方协会" value="3" /> | 43 | <el-option :label="language==0?'地方协会':'Local Association'" value="3" /> |
| 60 | <el-option label="国家协会" value="4" /> | 44 | <el-option :label="language==0?'国家协会':'National Association'" value="4" /> |
| 61 | </el-select> | 45 | </el-select> |
| 62 | </el-form-item> | 46 | </el-form-item> |
| 63 | <el-form-item label="参赛队名称" required prop="abreviations"> | 47 | <el-form-item :label="language==0?'参赛队名称':'Name of participating team'" required prop="abreviations"> |
| 64 | <el-input type="text" v-model="form.abreviations" placeholder="请输入内容"/> | 48 | <el-input type="text" v-model="form.abreviations" :placeholder="language==0?'请输入内容':''"/> |
| 65 | </el-form-item> | 49 | </el-form-item> |
| 66 | 50 | ||
| 67 | </el-col> | 51 | </el-col> |
| 68 | </el-row> | 52 | </el-row> |
| 69 | <el-row v-if="participantsInfoArr&&participantsInfoArr.length>0"> | 53 | <el-row v-if="participantsInfoArr&&participantsInfoArr.length>0"> |
| 70 | <el-col :span="16" :offset="4"> | 54 | <el-col :span="16" :offset="4"> |
| 71 | <h3>补充信息</h3> | 55 | <h3>{{ language==0?'补充信息':'Supplemental information'}}</h3> |
| 72 | <el-form-item v-for="(s,index) in participantsInfoArr" :key="index"> | 56 | <el-form-item v-for="(s,index) in participantsInfoArr" :key="index"> |
| 73 | <template #label> | 57 | <template #label> |
| 74 | <span v-if="s.status == 0" class="red">*</span>{{ s.name }} | 58 | <span v-if="s.status == 0" class="red">*</span>{{ s.name }} |
| ... | @@ -104,6 +88,9 @@ import { reactive, ref } from 'vue' | ... | @@ -104,6 +88,9 @@ import { reactive, ref } from 'vue' |
| 104 | import { getCurrentInstance, onMounted } from '@vue/runtime-core' | 88 | import { getCurrentInstance, onMounted } from '@vue/runtime-core' |
| 105 | import { useRoute, useRouter } from 'vue-router' | 89 | import { useRoute, useRouter } from 'vue-router' |
| 106 | import { toRefs } from '@vueuse/shared' | 90 | import { toRefs } from '@vueuse/shared' |
| 91 | import TeamSignStep from './components/teamSignStep' | ||
| 92 | import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"; | ||
| 93 | |||
| 107 | import cache from "@/plugins/cache" | 94 | import cache from "@/plugins/cache" |
| 108 | const language = ref(cache.local.get('language') || 0) | 95 | const language = ref(cache.local.get('language') || 0) |
| 109 | 96 | ||
| ... | @@ -282,11 +269,7 @@ function goNext() { | ... | @@ -282,11 +269,7 @@ function goNext() { |
| 282 | padding: 0; | 269 | padding: 0; |
| 283 | background: #F5F7F9; | 270 | background: #F5F7F9; |
| 284 | } | 271 | } |
| 285 | .border-info{ | 272 | |
| 286 | .item{margin: 5px 0;color: #4C5359; font-size: 14px; | ||
| 287 | label{font-size: 14px;margin-right: 14px} | ||
| 288 | } | ||
| 289 | } | ||
| 290 | .panel-footer .el-button--success { | 273 | .panel-footer .el-button--success { |
| 291 | padding: 0 40px; | 274 | padding: 0 40px; |
| 292 | } | 275 | } | ... | ... |
| ... | @@ -5,8 +5,8 @@ | ... | @@ -5,8 +5,8 @@ |
| 5 | <!-- 国内-机构注册--> | 5 | <!-- 国内-机构注册--> |
| 6 | <el-card> | 6 | <el-card> |
| 7 | <el-steps :active="activeStep" finish-status="success" align-center> | 7 | <el-steps :active="activeStep" finish-status="success" align-center> |
| 8 | <el-step title="创建账号" /> | 8 | <el-step title="创建账号"/> |
| 9 | <el-step title="注册完成" /> | 9 | <el-step title="注册完成"/> |
| 10 | </el-steps> | 10 | </el-steps> |
| 11 | </el-card> | 11 | </el-card> |
| 12 | 12 | ||
| ... | @@ -14,12 +14,19 @@ | ... | @@ -14,12 +14,19 @@ |
| 14 | <div v-if="activeStep==0"> | 14 | <div v-if="activeStep==0"> |
| 15 | <el-card style="min-height: 50vh"> | 15 | <el-card style="min-height: 50vh"> |
| 16 | <div class="pt30"> | 16 | <div class="pt30"> |
| 17 | <el-form class="d-form" size="large" label-width="120" style="max-width: 500px;margin: auto"> | 17 | <el-form class="d-form" size="large" label-width="120" |
| 18 | style="max-width: 500px;margin: auto"> | ||
| 18 | <el-form-item label="WDSF卡号" required> | 19 | <el-form-item label="WDSF卡号" required> |
| 19 | <el-input type="text" v-model="form.WDSF" @change="resetCode" @blur="verifyCode"/> | 20 | <el-input type="text" v-model="form.WDSF" @change="resetCode(0)" @blur="verifyCode"> |
| 21 | <template #append> | ||
| 22 | <el-button type="primary" plain style="width: 110px" @click="checkwdsf"> | ||
| 23 | <span>校验卡号</span> | ||
| 24 | </el-button> | ||
| 25 | </template> | ||
| 26 | </el-input> | ||
| 20 | </el-form-item> | 27 | </el-form-item> |
| 21 | <el-form-item label="手机/邮箱" required> | 28 | <el-form-item label="手机/邮箱" required> |
| 22 | <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"/> | 29 | <el-input type="text" v-model="form.account" @change="resetCode(1)" @blur="verifyCode"/> |
| 23 | </el-form-item> | 30 | </el-form-item> |
| 24 | <el-form-item label="验证码" required> | 31 | <el-form-item label="验证码" required> |
| 25 | <el-input v-model="form.code"> | 32 | <el-input v-model="form.code"> |
| ... | @@ -28,15 +35,10 @@ | ... | @@ -28,15 +35,10 @@ |
| 28 | <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false"> | 35 | <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false"> |
| 29 | {{ totalSeconds }} 秒 | 36 | {{ totalSeconds }} 秒 |
| 30 | </count-down> | 37 | </count-down> |
| 31 | <span v-else> | 38 | <span v-else>发送验证码</span> |
| 32 | 发送验证码 | ||
| 33 | </span> | ||
| 34 | </el-button> | 39 | </el-button> |
| 35 | </template> | 40 | </template> |
| 36 | </el-input> | 41 | </el-input> |
| 37 | <div class="vcodeBox" :style="isShow?'height:240px':'height:0'"> | ||
| 38 | <Vcode :show="isShow" type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode> | ||
| 39 | </div> | ||
| 40 | </el-form-item> | 42 | </el-form-item> |
| 41 | </el-form> | 43 | </el-form> |
| 42 | </div> | 44 | </div> |
| ... | @@ -47,17 +49,98 @@ | ... | @@ -47,17 +49,98 @@ |
| 47 | </el-card> | 49 | </el-card> |
| 48 | </div> | 50 | </div> |
| 49 | <div v-if="activeStep==1"> | 51 | <div v-if="activeStep==1"> |
| 52 | <Step3 :accont="form.account"/> | ||
| 50 | </div> | 53 | </div> |
| 51 | 54 | ||
| 52 | 55 | <Vcode :show="isShow" @success="codeSuccess()"></Vcode> | |
| 53 | </div> | 56 | </div> |
| 54 | </div> | 57 | </div> |
| 55 | </div> | 58 | </div> |
| 56 | </template> | 59 | </template> |
| 57 | 60 | ||
| 58 | <script setup> | 61 | <script setup> |
| 59 | import {ref} from "vue" | 62 | import {ref,toRefs,reactive} from "vue" |
| 60 | const activeStep = ref(0) | 63 | import {onMounted} from "@vue/runtime-core"; |
| 64 | import Step3 from "./team/step3" | ||
| 65 | import Vcode from "vue3-puzzle-vcode" | ||
| 66 | import { ElMessage } from 'element-plus' | ||
| 67 | import CountDown from '@chenfengyuan/vue-countdown' | ||
| 68 | import cache from '@/plugins/cache' | ||
| 69 | const language = ref(cache.local.get('language') || 0) | ||
| 70 | |||
| 71 | const data = reactive({ | ||
| 72 | isShow:false, | ||
| 73 | isCodeTrue:0, | ||
| 74 | counting:false, | ||
| 75 | form:{}, | ||
| 76 | activeStep: 0, | ||
| 77 | failVcode:'验证失败,请重试', | ||
| 78 | successVcode:'验证通过!', | ||
| 79 | sliderText: '拖动滑块完成拼图', | ||
| 80 | }) | ||
| 81 | const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText} = toRefs(data) | ||
| 82 | onMounted(()=>{ | ||
| 83 | if(language.value==1){ | ||
| 84 | failVcode.value = 'Error!' | ||
| 85 | successVcode.value = 'Success!' | ||
| 86 | sliderText.value = 'Drag the slider to complete the puzzle' | ||
| 87 | } | ||
| 88 | }) | ||
| 89 | function sendsmsMsg() { | ||
| 90 | if(!form.value.account){ | ||
| 91 | if(language.value==0){ | ||
| 92 | ElMessage.error('请填写手机/邮箱') | ||
| 93 | } else { | ||
| 94 | ElMessage.error('Please fill in your phone/email address') | ||
| 95 | } | ||
| 96 | return | ||
| 97 | } | ||
| 98 | if(counting.value){ | ||
| 99 | return | ||
| 100 | } else { | ||
| 101 | isShow.value = true | ||
| 102 | } | ||
| 103 | } | ||
| 104 | function checkwdsf() { | ||
| 105 | if(!form.value.WDSF){ | ||
| 106 | if(language.value==0){ | ||
| 107 | ElMessage.error('请填写WDSF卡号') | ||
| 108 | } else { | ||
| 109 | ElMessage.error('Please fill in your WDSF code') | ||
| 110 | } | ||
| 111 | return | ||
| 112 | } | ||
| 113 | isShow.value = true | ||
| 114 | } | ||
| 115 | function verifyCode() { | ||
| 116 | if(!form.value.account){ | ||
| 117 | return | ||
| 118 | } | ||
| 119 | if(form.value.account.indexOf('@')>-1){ | ||
| 120 | //邮箱 | ||
| 121 | } | ||
| 122 | } | ||
| 123 | function codeSuccess(msg) { | ||
| 124 | console.log('验证通过' + msg); | ||
| 125 | isShow.value = false | ||
| 126 | isCodeTrue.value += 1 | ||
| 127 | if(isCodeTrue.value==1){ | ||
| 128 | |||
| 129 | } | ||
| 130 | if(isCodeTrue.value==2){ | ||
| 131 | counting.value = true | ||
| 132 | // getCaptchaSms({account:form.value.account}).then(res=>{ | ||
| 133 | // | ||
| 134 | // }) | ||
| 135 | } | ||
| 136 | |||
| 137 | } | ||
| 138 | function resetCode(n) { | ||
| 139 | isCodeTrue.value = n | ||
| 140 | } | ||
| 141 | function next() { | ||
| 142 | activeStep.value = 1 | ||
| 143 | } | ||
| 61 | </script> | 144 | </script> |
| 62 | 145 | ||
| 63 | <style scoped> | 146 | <style scoped> | ... | ... |
| ... | @@ -20,7 +20,7 @@ | ... | @@ -20,7 +20,7 @@ |
| 20 | </el-input> | 20 | </el-input> |
| 21 | <div class="vcodeBox" :style="isShow?'height:240px':'height:0'"> | 21 | <div class="vcodeBox" :style="isShow?'height:240px':'height:0'"> |
| 22 | <Vcode :show="isShow" :successText="successVcode" :failText="failVcode" :slider-text="sliderText" | 22 | <Vcode :show="isShow" :successText="successVcode" :failText="failVcode" :slider-text="sliderText" |
| 23 | type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode> | 23 | type="inside" @success="codeSuccess"></Vcode> |
| 24 | </div> | 24 | </div> |
| 25 | </el-form-item> | 25 | </el-form-item> |
| 26 | </el-form> | 26 | </el-form> |
| ... | @@ -96,12 +96,7 @@ function codeSuccess(msg) { | ... | @@ -96,12 +96,7 @@ function codeSuccess(msg) { |
| 96 | function resetCode() { | 96 | function resetCode() { |
| 97 | isCodeTrue.value = false | 97 | isCodeTrue.value = false |
| 98 | } | 98 | } |
| 99 | function codeFail() { | ||
| 100 | 99 | ||
| 101 | } | ||
| 102 | function codeClose() { | ||
| 103 | |||
| 104 | } | ||
| 105 | const goBack = () => { | 100 | const goBack = () => { |
| 106 | router.go(-1) | 101 | router.go(-1) |
| 107 | } | 102 | } | ... | ... |
| ... | @@ -27,7 +27,7 @@ | ... | @@ -27,7 +27,7 @@ |
| 27 | style="max-width: 500px;margin: auto"> | 27 | style="max-width: 500px;margin: auto"> |
| 28 | <el-form-item :label="language==0?'所属国家':'Nationality'" required> | 28 | <el-form-item :label="language==0?'所属国家':'Nationality'" required> |
| 29 | <el-select filterable v-model="form.countryId"> | 29 | <el-select filterable v-model="form.countryId"> |
| 30 | <el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id"/> | 30 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/> |
| 31 | </el-select> | 31 | </el-select> |
| 32 | </el-form-item> | 32 | </el-form-item> |
| 33 | <el-form-item :label="language==0?'详细地址':'Address'" required prop="address"> | 33 | <el-form-item :label="language==0?'详细地址':'Address'" required prop="address"> | ... | ... |
| ... | @@ -22,7 +22,9 @@ import {toRefs} from "@vueuse/shared/index"; | ... | @@ -22,7 +22,9 @@ import {toRefs} from "@vueuse/shared/index"; |
| 22 | import Vcode from "vue3-puzzle-vcode" | 22 | import Vcode from "vue3-puzzle-vcode" |
| 23 | import {ElMessage} from 'element-plus' | 23 | import {ElMessage} from 'element-plus' |
| 24 | import CountDown from '@chenfengyuan/vue-countdown' | 24 | import CountDown from '@chenfengyuan/vue-countdown' |
| 25 | import {getCaptchaSms, checkRegisterCode} from "@/apiPc/match"; | 25 | import {getCaptchaSms, checkRegisterCode} from "@/apiPc/match" |
| 26 | import cache from '@/plugins/cache' | ||
| 27 | const language = ref(cache.local.get('language') || 0) | ||
| 26 | const props = defineProps({ | 28 | const props = defineProps({ |
| 27 | accont:{ | 29 | accont:{ |
| 28 | type:String, | 30 | type:String, | ... | ... |
-
Please register or sign in to post a comment