no message
Showing
48 changed files
with
1277 additions
and
368 deletions
public/file/UserImport-ch.xlsx
0 → 100644
No preview for this file type
public/file/Userimport-en.xlsx
0 → 100644
No preview for this file type
| ... | @@ -91,6 +91,20 @@ export function getMyGroupList() { | ... | @@ -91,6 +91,20 @@ export function getMyGroupList() { |
| 91 | method: 'get' | 91 | method: 'get' |
| 92 | }) | 92 | }) |
| 93 | } | 93 | } |
| 94 | export function checkWdsf(query) { | ||
| 95 | return request({ | ||
| 96 | url: `/league/wdsf/check`, | ||
| 97 | method: 'get', | ||
| 98 | params:query | ||
| 99 | }) | ||
| 100 | } | ||
| 101 | export function registerSingle(data) { | ||
| 102 | return request({ | ||
| 103 | url: `/pcRegisterSingleAboard`, | ||
| 104 | method: 'post', | ||
| 105 | data:data | ||
| 106 | }) | ||
| 107 | } | ||
| 94 | 108 | ||
| 95 | // 根据Id获取我的团队 | 109 | // 根据Id获取我的团队 |
| 96 | export function getGroupInfo() { | 110 | export function getGroupInfo() { |
| ... | @@ -192,6 +206,12 @@ export function saveMyTeam(data) { | ... | @@ -192,6 +206,12 @@ export function saveMyTeam(data) { |
| 192 | data: data | 206 | data: data |
| 193 | }) | 207 | }) |
| 194 | } | 208 | } |
| 209 | export function withDrawByOrderId(orderId) { | ||
| 210 | return request({ | ||
| 211 | url: `/league/signOrder/withDraw/${orderId}`, | ||
| 212 | method: 'post' | ||
| 213 | }) | ||
| 214 | } | ||
| 195 | 215 | ||
| 196 | export function getMyOrderList(params) { | 216 | export function getMyOrderList(params) { |
| 197 | return request({ | 217 | return request({ |
| ... | @@ -208,10 +228,17 @@ export function getMySignListFromOrderList(orderId) { | ... | @@ -208,10 +228,17 @@ export function getMySignListFromOrderList(orderId) { |
| 208 | }) | 228 | }) |
| 209 | } | 229 | } |
| 210 | 230 | ||
| 211 | export function getMyOrderDetail(orderId) { | 231 | // export function getMyOrderDetail(orderId) { |
| 232 | // return request({ | ||
| 233 | // url: `/league/signOrder/getMyOrderDetail/${orderId}`, | ||
| 234 | // method: 'get' | ||
| 235 | // }) | ||
| 236 | // } | ||
| 237 | export function getMyOrderDetail(query) { | ||
| 212 | return request({ | 238 | return request({ |
| 213 | url: `/league/signOrder/getMyOrderDetail/${orderId}`, | 239 | url: `/league/signOrder/getOrderPayInfo`, |
| 214 | method: 'get' | 240 | method: 'get', |
| 241 | params: query | ||
| 215 | }) | 242 | }) |
| 216 | } | 243 | } |
| 217 | 244 | ||
| ... | @@ -460,6 +487,13 @@ export function getMySignInfoList(data) { | ... | @@ -460,6 +487,13 @@ export function getMySignInfoList(data) { |
| 460 | params: data | 487 | params: data |
| 461 | }) | 488 | }) |
| 462 | } | 489 | } |
| 490 | export function exportCn(data) { | ||
| 491 | return request({ | ||
| 492 | url: `/league/sign/exportCn`, | ||
| 493 | method: 'get', | ||
| 494 | params: data | ||
| 495 | }) | ||
| 496 | } | ||
| 463 | export function saveMyGroupExtraInfo(data) { | 497 | export function saveMyGroupExtraInfo(data) { |
| 464 | return request({ | 498 | return request({ |
| 465 | url: `/league/competitionGroupInfo/saveMyGroupExtraInfo`, | 499 | url: `/league/competitionGroupInfo/saveMyGroupExtraInfo`, | ... | ... |
src/assets/img/e.png
0 → 100644
11.9 KB
src/assets/img/ing.png
0 → 100644
1.32 KB
| ... | @@ -288,6 +288,8 @@ function getCode() { | ... | @@ -288,6 +288,8 @@ function getCode() { |
| 288 | 288 | ||
| 289 | :deep(.el-input){height: 100%} | 289 | :deep(.el-input){height: 100%} |
| 290 | :deep(.el-form-item){height: 40px;} | 290 | :deep(.el-form-item){height: 40px;} |
| 291 | .home-menu .el-menu--horizontal > .el-menu-item{margin: 0 5px; font-size: 18px;} | ||
| 292 | .home-menu .el-sub-menu .el-sub-menu__title{font-size: 18px;} | ||
| 291 | .weiMenu.el-menu{ | 293 | .weiMenu.el-menu{ |
| 292 | border: none; | 294 | border: none; |
| 293 | :deep(.el-menu-item.is-active){color: var(--el-color-primary);} | 295 | :deep(.el-menu-item.is-active){color: var(--el-color-primary);} | ... | ... |
| ... | @@ -401,6 +401,12 @@ export const constantRoutes = [ | ... | @@ -401,6 +401,12 @@ export const constantRoutes = [ |
| 401 | redirect: '/match/list', | 401 | redirect: '/match/list', |
| 402 | children: [ | 402 | children: [ |
| 403 | { | 403 | { |
| 404 | path: 'commitDone/:orderId', | ||
| 405 | component: () => import('@/viewsPc/match/commitDone'), | ||
| 406 | name: 'commitDone', | ||
| 407 | meta: { title: '提交审核'} | ||
| 408 | }, | ||
| 409 | { | ||
| 404 | path: 'pay', | 410 | path: 'pay', |
| 405 | component: () => import('@/viewsPc/match/pay'), | 411 | component: () => import('@/viewsPc/match/pay'), |
| 406 | name: 'signPay', | 412 | name: 'signPay', | ... | ... |
| ... | @@ -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: 'commitDone/:orderId', | ||
| 282 | component: () => import('@/viewsPc/match/commitDone'), | ||
| 283 | name: 'commitDone', | ||
| 284 | meta: { title: '提交审核'} | ||
| 285 | }, | ||
| 286 | { | ||
| 281 | path: 'pay', | 287 | path: 'pay', |
| 282 | component: () => import('@/viewsPc/match/pay'), | 288 | component: () => import('@/viewsPc/match/pay'), |
| 283 | name: 'signPay', | 289 | name: 'signPay', | ... | ... |
| ... | @@ -141,26 +141,27 @@ service.interceptors.response.use( | ... | @@ -141,26 +141,27 @@ service.interceptors.response.use( |
| 141 | if (code === 401) { | 141 | if (code === 401) { |
| 142 | if (!isRelogin.show) { | 142 | if (!isRelogin.show) { |
| 143 | isRelogin.show = true | 143 | isRelogin.show = true |
| 144 | ElMessageBox.confirm( | 144 | ElMessage({ message: '登录状态已过期', type: 'error' }) |
| 145 | '登录状态已过期,您可以继续留在该页面,或者重新登录', | 145 | // ElMessageBox.confirm( |
| 146 | '系统提示', | 146 | // '登录状态已过期,您可以继续留在该页面,或者重新登录', |
| 147 | { | 147 | // '系统提示', |
| 148 | confirmButtonText: '好的', | 148 | // { |
| 149 | cancelButtonText: '取消', | 149 | // confirmButtonText: '好的', |
| 150 | type: 'warning' | 150 | // cancelButtonText: '取消', |
| 151 | } | 151 | // type: 'warning' |
| 152 | ) | 152 | // } |
| 153 | .then(() => { | 153 | // ) |
| 154 | isRelogin.show = false | 154 | // .then(() => { |
| 155 | useUserStore() | 155 | // isRelogin.show = false |
| 156 | .logOut() | 156 | // useUserStore() |
| 157 | .then(() => { | 157 | // .logOut() |
| 158 | location.reload() | 158 | // .then(() => { |
| 159 | }) | 159 | // location.reload() |
| 160 | }) | 160 | // }) |
| 161 | .catch(() => { | 161 | // }) |
| 162 | isRelogin.show = false | 162 | // .catch(() => { |
| 163 | }) | 163 | // isRelogin.show = false |
| 164 | // }) | ||
| 164 | } | 165 | } |
| 165 | return Promise.reject('无效的会话,或者会话已过期,请重新登录。') | 166 | return Promise.reject('无效的会话,或者会话已过期,请重新登录。') |
| 166 | } else if (code === 500) { | 167 | } else if (code === 500) { | ... | ... |
| 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">{{ language==0?'机构基础信息':'Institutional Basic Information' }}</h3></div> | 4 | <div class="indexTitle"> |
| 5 | <h3 class="leftboderTT" v-if="user.utype=='2'">{{ language==0?'机构基础信息':'Institutional Basic Information' }}</h3> | ||
| 6 | <h3 class="leftboderTT" v-if="user.utype=='1'">{{ language==0?'个人基础信息':'Personal Basic Information' }}</h3> | ||
| 7 | </div> | ||
| 5 | <!-- uType字段 1 是个人 2是团体--> | 8 | <!-- uType字段 1 是个人 2是团体--> |
| 6 | <!-- {{user}}--> | 9 | <!-- {{user}}--> |
| 7 | <team-info :form="myform" :language="language" v-if="user.utype=='2'"/> | 10 | <team-info :form="myform" :language="language" v-if="user.utype=='2'"/> |
| 11 | <div class="pd20"> | ||
| 12 | <div class="d-form-border" style="margin-top: 0"> | ||
| 13 | <el-form class="d-form" label-width="120"> | ||
| 14 | <el-form-item :label="language==0?'用户名':'Account'"> | ||
| 15 | {{user.userName}} | ||
| 16 | </el-form-item> | ||
| 17 | <el-form-item label="姓名" required> | ||
| 18 | <el-input v-model="myform.realName" /> | ||
| 19 | </el-form-item> | ||
| 20 | <el-form-item label="性别" prop="sex" required> | ||
| 21 | <el-radio-group v-model="myform.sex"> | ||
| 22 | <el-radio label="0" size="large">男</el-radio> | ||
| 23 | <el-radio label="1" size="large">女</el-radio> | ||
| 24 | </el-radio-group> | ||
| 25 | </el-form-item> | ||
| 26 | <el-form-item label="证件类型"> | ||
| 27 | <el-select v-model="myform.idcType" placeholder="请选择证件类型" style="width: 100%"> | ||
| 28 | <el-option | ||
| 29 | v-for="item in certificates" | ||
| 30 | :key="item.value" | ||
| 31 | :label="item.label" | ||
| 32 | :value="item.value" | ||
| 33 | /> | ||
| 34 | </el-select> | ||
| 35 | </el-form-item> | ||
| 36 | <el-form-item label="证件号码"> | ||
| 37 | <el-input v-model="myform.idcCode" @blur="checkCode"/> | ||
| 38 | </el-form-item> | ||
| 39 | <el-form-item label="类型" prop="type"> | ||
| 40 | <el-select v-model="myform.type" placeholder="请选择" style="width: 100%;"> | ||
| 41 | <el-option label="业余" value="0" /> | ||
| 42 | <el-option label="专业" value="1" /> | ||
| 43 | <el-option label="大专院校" value="2" /> | ||
| 44 | <el-option label="其他" value="3" /> | ||
| 45 | </el-select> | ||
| 46 | </el-form-item> | ||
| 47 | <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="email"> | ||
| 48 | <el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/> | ||
| 49 | </el-form-item> | ||
| 50 | </el-form> | ||
| 51 | <div class="text-center"> | ||
| 52 | <el-button type="primary" class="btn-lineG" round @click="save">{{ language==0?'确定修改':'Save' }}</el-button> | ||
| 53 | </div> | ||
| 8 | 54 | ||
| 55 | </div> | ||
| 56 | </div> | ||
| 9 | </el-card> | 57 | </el-card> |
| 10 | 58 | ||
| 11 | </div> | 59 | </div> |
| ... | @@ -35,10 +83,10 @@ const activeName = ref('first') | ... | @@ -35,10 +83,10 @@ const activeName = ref('first') |
| 35 | const myform = ref({ | 83 | const myform = ref({ |
| 36 | idcType: 0, | 84 | idcType: 0, |
| 37 | countryId: 240, | 85 | countryId: 240, |
| 38 | nation: '汉族' | 86 | nation: '汉族', |
| 87 | realName:'' | ||
| 39 | }) | 88 | }) |
| 40 | const labelArr = ref([]) | 89 | const labelArr = ref([]) |
| 41 | const groupList = ref([]) | ||
| 42 | 90 | ||
| 43 | const certificates = ref([ | 91 | const certificates = ref([ |
| 44 | { | 92 | { |
| ... | @@ -60,8 +108,21 @@ onMounted(() => { | ... | @@ -60,8 +108,21 @@ onMounted(() => { |
| 60 | }) | 108 | }) |
| 61 | 109 | ||
| 62 | function getData() { | 110 | function getData() { |
| 63 | match.getGroupInfo().then(res => { | 111 | if(props.user.utype=='2'){ |
| 64 | myform.value = res.data | 112 | match.getGroupInfo().then(res => { |
| 113 | myform.value = res.data | ||
| 114 | }) | ||
| 115 | } | ||
| 116 | if(props.user.utype=='1'){ | ||
| 117 | match.getMyPersonInfo().then(res => { | ||
| 118 | myform.value = res.data | ||
| 119 | }) | ||
| 120 | } | ||
| 121 | |||
| 122 | } | ||
| 123 | function save(){ | ||
| 124 | match.saveMyBaseInfo().then(res=>{ | ||
| 125 | |||
| 65 | }) | 126 | }) |
| 66 | } | 127 | } |
| 67 | function checkCode() { | 128 | function checkCode() { | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-card class="mb20"> | 2 | <el-card class="mb20"> |
| 3 | <div class="pad20"> | ||
| 4 | <el-form :model="query" :inline="true"> | ||
| 5 | <el-form-item label="赛事名称"> | ||
| 6 | <el-input v-model="query.name" style="width: 214px;" @change="getList"/> | ||
| 7 | </el-form-item> | ||
| 8 | <el-form-item label="赛事时间"> | ||
| 9 | <el-date-picker | ||
| 10 | v-model="cptPeriodArr" | ||
| 11 | format="YYYY-MM-DD" type="daterange" | ||
| 12 | value-format="YYYY-MM-DD" range-separator="至" | ||
| 13 | start-placeholder="开始时间" | ||
| 14 | end-placeholder="结束时间" | ||
| 15 | @change="getList" | ||
| 16 | /> | ||
| 17 | </el-form-item> | ||
| 18 | <el-form-item> | ||
| 19 | <el-button type="primary" @click="getList">查询</el-button> | ||
| 20 | <el-button type="info" @click="reset(query)">重置</el-button> | ||
| 21 | </el-form-item> | ||
| 22 | </el-form> | ||
| 23 | |||
| 24 | <div class="pd20"> | 3 | <div class="pd20"> |
| 25 | <div class="matchItem" v-for="n in tableData" :key="n.id" @click="goDetail(n.id)"> | 4 | <div class="matchItem" v-for="n in billList" :key="n.id"> |
| 5 | <div class="status-po"> | ||
| 6 | <span class="bg-pink" v-if="n.auditStatus=='0'">未提交</span> | ||
| 7 | <span class="bg-primary" v-if="n.auditStatus=='1'">待审核</span> | ||
| 8 | <span class="bg-blue" v-if="n.auditStatus=='2'">审核通过</span> | ||
| 9 | <span class="bg-danger" v-if="n.auditStatus=='3'">审核驳回</span> | ||
| 10 | </div> | ||
| 26 | <el-row :gutter="15"> | 11 | <el-row :gutter="15"> |
| 27 | <el-col :lg="6" :md="8" :xl="10"> | 12 | <el-col :lg="6" :md="8" :xl="10"> |
| 28 | <img class="mauto" :src="fillImgUrl(n.coverUrl)"> | 13 | <img class="mauto w100" :src="fillImgUrl(n.coverUrl)"> |
| 29 | </el-col> | 14 | </el-col> |
| 30 | <el-col :lg="18" :md="16" :xl="14"> | 15 | <el-col :lg="18" :md="16" :xl="14"> |
| 31 | <div class="info"> | 16 | <el-row> |
| 32 | <h3>{{ n.name }}</h3> | 17 | <el-col :span="24"> |
| 33 | <p class="ppl"><label>比赛时间:</label>{{ n.beginTime?.slice(0, 10) }} 至 {{ n.endTime?.slice(0, 10) }} | 18 | <h3>{{ n.name }}</h3> |
| 34 | </p> | 19 | </el-col> |
| 35 | <p class="ppl"><label>地    点:</label>{{ n.address }}</p> | 20 | <el-col :lg="8"> |
| 36 | <p class="ppl"><label>报名截止:</label>{{ n.signEndTime?.slice(0, 10) }}</p> | 21 | <p class="ppl"><label>赛事类型:</label>{{ n.level }}</p> |
| 37 | 22 | <p class="ppl"><label v-if="n.groupName">参赛队:</label>{{n.groupName}}</p> | |
| 38 | <p class="ppl"><label>联系人员:</label>{{ n.contactPerson }}</p> | 23 | </el-col> |
| 39 | <p class="ppl"><label>联系电话:</label>{{ n.contactTelno }}</p> | 24 | <el-col :lg="8"> |
| 40 | <p class="ppl"><label>邮    箱:</label>{{ n.contactEmail }}</p> | 25 | <p class="ppl"><label>比赛时间:</label>{{ n.signBeginTime }}~{{n.signEndTime}} |
| 41 | 26 | </p> | |
| 42 | </div> | 27 | <p class="ppl"><label>参赛运动员:</label>{{ n.signSize }} 人</p> |
| 28 | </el-col> | ||
| 29 | <el-col :lg="8"> | ||
| 30 | <p class="ppl"><label>报名时间:</label>{{ n.signBeginTime }}~{{n.signEndTime}}</p> | ||
| 31 | <div class="btnbox"> | ||
| 32 | <el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus!='0'">详情</el-button> | ||
| 33 | <el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='0'">继续报名</el-button> | ||
| 34 | <el-button plain round type="primary" @click="withDraw(n)" v-if="n.auditStatus=='1'">取消报名</el-button> | ||
| 35 | <el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='3'">重新报名</el-button> | ||
| 36 | <el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus=='2'&&n.payStatus=='0'">缴费</el-button> | ||
| 37 | </div> | ||
| 38 | </el-col> | ||
| 39 | </el-row> | ||
| 43 | </el-col> | 40 | </el-col> |
| 44 | </el-row> | 41 | </el-row> |
| 45 | </div> | 42 | </div> |
| 46 | </div> | ||
| 47 | 43 | ||
| 48 | <el-table :data="tableData" style="width: 100%"> | 44 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="billList?.length == 0"/> |
| 49 | <el-table-column type="index" label="序号" width="80" align="center"/> | 45 | |
| 50 | <el-table-column label="赛事名称" min-width="260"> | 46 | </div> |
| 51 | <template #default="scope"> | 47 | <paginationPc |
| 52 | {{ scope.row.name }} | ||
| 53 | </template> | ||
| 54 | </el-table-column> | ||
| 55 | <el-table-column label="参赛队" min-width="260"> | ||
| 56 | <template #default="scope"> | ||
| 57 | <span v-if="scope.row.groupName">{{ scope.row.groupName }}</span> | ||
| 58 | <span v-else>-</span> | ||
| 59 | </template> | ||
| 60 | </el-table-column> | ||
| 61 | <el-table-column label="赛事开始时间" min-width="120"> | ||
| 62 | <template #default="scope">{{ scope.row.beginTime.substring(0, 10) }}</template> | ||
| 63 | </el-table-column> | ||
| 64 | <el-table-column label="赛事结束时间" min-width="120"> | ||
| 65 | <template #default="scope">{{ scope.row.endTime.substring(0, 10) }}</template> | ||
| 66 | </el-table-column> | ||
| 67 | <el-table-column label="审批状态" min-width="100" align="center"> | ||
| 68 | <template #default="scope"> | ||
| 69 | <el-tag v-if="scope.row.auditStatus=='1'" type="info">已提交</el-tag> | ||
| 70 | <el-tag v-if="scope.row.auditStatus=='2'" type="success">审核通过</el-tag> | ||
| 71 | <el-tag v-if="scope.row.auditStatus=='3'" type="danger">未通过</el-tag> | ||
| 72 | <el-tag v-if="scope.row.auditStatus=='4'" type="warning">已取消</el-tag> | ||
| 73 | </template> | ||
| 74 | </el-table-column> | ||
| 75 | <el-table-column label="操作" align="center" fixed="right" class-name="small-padding" width="180"> | ||
| 76 | <template #default="scope"> | ||
| 77 | <el-button v-if="scope.row.auditStatus!='0'" type="text" @click="downloadVoucher(scope.row)"> | ||
| 78 | 下载报名凭证 | ||
| 79 | </el-button> | ||
| 80 | <el-button type="text" @click="signRow(scope.row)">详情</el-button> | ||
| 81 | </template> | ||
| 82 | </el-table-column> | ||
| 83 | </el-table> | ||
| 84 | |||
| 85 | <pagination | ||
| 86 | v-show="total > 0" | 48 | v-show="total > 0" |
| 87 | v-model:page="query.pageNum" | 49 | v-model:page="query.pageNum" |
| 88 | v-model:limit="query.pageSize" | 50 | v-model:limit="query.pageSize" |
| 89 | :total="total" | 51 | :total="total" |
| 90 | @pagination="getList" | 52 | @pagination="getList" |
| 91 | /> | 53 | /> |
| 92 | </div> | ||
| 93 | 54 | ||
| 94 | <!-- 报项详情--> | 55 | <!-- 报项详情--> |
| 95 | <dialogModifySign :props="dialogModifySignProps"/> | 56 | <dialogModifySign :props="dialogModifySignProps"/> |
| ... | @@ -109,15 +70,12 @@ import dialogModifyBill from './component/modifyBill' | ... | @@ -109,15 +70,12 @@ import dialogModifyBill from './component/modifyBill' |
| 109 | import * as match from '@/apiPc/match' | 70 | import * as match from '@/apiPc/match' |
| 110 | import {ElMessage, ElMessageBox} from 'element-plus' | 71 | import {ElMessage, ElMessageBox} from 'element-plus' |
| 111 | import _ from 'lodash' | 72 | import _ from 'lodash' |
| 73 | import useUserStore from "@/store/modules/user"; | ||
| 112 | 74 | ||
| 113 | const router = useRouter() | 75 | const router = useRouter() |
| 114 | const {proxy} = getCurrentInstance() | 76 | const {proxy} = getCurrentInstance() |
| 115 | const total = ref(0) | 77 | const total = ref(0) |
| 116 | const total2 = ref(0) | 78 | const total2 = ref(0) |
| 117 | const payMationDone = () => { | ||
| 118 | showOrganizerInfo.value = false | ||
| 119 | payPop.value = false | ||
| 120 | } | ||
| 121 | const dialogPropsBase = { | 79 | const dialogPropsBase = { |
| 122 | open: false, | 80 | open: false, |
| 123 | isView: false, | 81 | isView: false, |
| ... | @@ -155,10 +113,10 @@ const showResult = ref(false) | ... | @@ -155,10 +113,10 @@ const showResult = ref(false) |
| 155 | const myBalance = ref('') | 113 | const myBalance = ref('') |
| 156 | const nowBill = ref({}) | 114 | const nowBill = ref({}) |
| 157 | const org = ref({}) | 115 | const org = ref({}) |
| 158 | 116 | const user = useUserStore().user | |
| 117 | const group = useUserStore().group | ||
| 159 | onMounted(() => { | 118 | onMounted(() => { |
| 160 | getList() | 119 | getList() |
| 161 | getBillList() | ||
| 162 | }) | 120 | }) |
| 163 | const reset = (form) => { | 121 | const reset = (form) => { |
| 164 | query.value = { | 122 | query.value = { |
| ... | @@ -172,32 +130,53 @@ const reset = (form) => { | ... | @@ -172,32 +130,53 @@ const reset = (form) => { |
| 172 | cptPeriodArr.value = [] | 130 | cptPeriodArr.value = [] |
| 173 | payTimeArr.value = [] | 131 | payTimeArr.value = [] |
| 174 | commitTimeArr.value = [] | 132 | commitTimeArr.value = [] |
| 175 | getBillList() | ||
| 176 | getList() | 133 | getList() |
| 177 | } | 134 | } |
| 178 | 135 | function withDraw(n){ | |
| 179 | 136 | match.withDrawByOrderId(n.orderId).then(res=>{ | |
| 180 | function wePayDone() { | 137 | getList() |
| 181 | payPop.value = false | 138 | }) |
| 182 | getBillList() | ||
| 183 | getList() | ||
| 184 | } | 139 | } |
| 185 | 140 | function continueSign(n){ | |
| 186 | function getList() { | 141 | if (user.utype == '1') { |
| 187 | if (cptPeriodArr.value) { | 142 | // 个人报名 |
| 188 | query.value.cptPeriod = cptPeriodArr.value.toString() | 143 | router.push({ |
| 144 | name: 'chooseProject', | ||
| 145 | params:{ | ||
| 146 | id: n.id | ||
| 147 | }, | ||
| 148 | query: { | ||
| 149 | matchId: n.id | ||
| 150 | } | ||
| 151 | }) | ||
| 152 | } | ||
| 153 | if (user.utype == '2'){ | ||
| 154 | // 团队报名 | ||
| 155 | router.push({ | ||
| 156 | name: 'chooseSportsman', | ||
| 157 | params:{ | ||
| 158 | id: n.id | ||
| 159 | }, | ||
| 160 | query: { | ||
| 161 | matchId: n.id, | ||
| 162 | groupId: group.id | ||
| 163 | } | ||
| 164 | }) | ||
| 189 | } | 165 | } |
| 190 | // match.getMySignCptList(query.value).then(res => { | ||
| 191 | // tableData.value = res.rows | ||
| 192 | // total.value = res.total | ||
| 193 | // }) | ||
| 194 | } | ||
| 195 | 166 | ||
| 196 | function getBillList() { | 167 | } |
| 197 | query2.value.payTimeRange = payTimeArr.value.toString() | 168 | function goDetail(n){ |
| 198 | query2.value.createTimeRange = commitTimeArr.value.toString() | 169 | // 查看详情 |
| 170 | router.push({ | ||
| 171 | name:`signPay`, | ||
| 172 | query: { | ||
| 173 | orderId: n.encodeOrderId | ||
| 174 | } | ||
| 175 | }) | ||
| 176 | } | ||
| 177 | function getList() { | ||
| 199 | console.log(query2.value) | 178 | console.log(query2.value) |
| 200 | match.getMyOrderList(query2.value).then(res => { | 179 | match.getMySignCptList(query2.value).then(res => { |
| 201 | billList.value = res.rows | 180 | billList.value = res.rows |
| 202 | total2.value = res.total | 181 | total2.value = res.total |
| 203 | }) | 182 | }) |
| ... | @@ -261,7 +240,6 @@ function cancelBill(bill) { | ... | @@ -261,7 +240,6 @@ function cancelBill(bill) { |
| 261 | match.cancelMyUnPayedOrder(bill.id).then(Response => { | 240 | match.cancelMyUnPayedOrder(bill.id).then(Response => { |
| 262 | console.log(Response.data) | 241 | console.log(Response.data) |
| 263 | // 刷新数据 | 242 | // 刷新数据 |
| 264 | getBillList() | ||
| 265 | getList() | 243 | getList() |
| 266 | }) | 244 | }) |
| 267 | }) | 245 | }) |
| ... | @@ -278,11 +256,16 @@ function downloadVoucher(row) { | ... | @@ -278,11 +256,16 @@ function downloadVoucher(row) { |
| 278 | .matchItem { | 256 | .matchItem { |
| 279 | cursor: pointer; | 257 | cursor: pointer; |
| 280 | margin: 0 0 20px; | 258 | margin: 0 0 20px; |
| 281 | padding: 0 0 20px; | 259 | padding: 0 0 20px;background: #FBFCFD; |
| 282 | background: #FFFFFF; | 260 | border-radius: 2px; |
| 283 | border-bottom: 1px solid #e5e5e5; | ||
| 284 | position: relative; | 261 | position: relative; |
| 285 | 262 | .status-po{position: absolute;right: 0;top: 0;font-size: 12px; | |
| 263 | color: #FFFFFF; | ||
| 264 | span{border-radius: 0px 10px 0px 10px;padding: 4px 10px;} | ||
| 265 | .bg-danger{background: #E60012;} | ||
| 266 | .bg-pink{background: #F740A6;} | ||
| 267 | .bg-primary{background: var(--el-color-primary)} | ||
| 268 | } | ||
| 286 | &:last-child { | 269 | &:last-child { |
| 287 | border-bottom: none; | 270 | border-bottom: none; |
| 288 | } | 271 | } |
| ... | @@ -368,4 +351,8 @@ function downloadVoucher(row) { | ... | @@ -368,4 +351,8 @@ function downloadVoucher(row) { |
| 368 | .el-form--inline .el-form-item { | 351 | .el-form--inline .el-form-item { |
| 369 | width: auto; | 352 | width: auto; |
| 370 | } | 353 | } |
| 354 | .ppl{font-size: 14px; | ||
| 355 | label{color: #929AA0;} | ||
| 356 | } | ||
| 357 | .btnbox{text-align: right;} | ||
| 371 | </style> | 358 | </style> | ... | ... |
src/viewsPc/center/myMatch2.vue
0 → 100644
| 1 | <template> | ||
| 2 | <el-card class="mb20"> | ||
| 3 | <div class="pad20"> | ||
| 4 | <!-- <el-form :model="query" :inline="true">--> | ||
| 5 | <!-- <el-form-item label="赛事名称">--> | ||
| 6 | <!-- <el-input v-model="query.name" style="width: 214px;" @change="getBillList"/>--> | ||
| 7 | <!-- </el-form-item>--> | ||
| 8 | <!-- <el-form-item label="赛事时间">--> | ||
| 9 | <!-- <el-date-picker--> | ||
| 10 | <!-- v-model="cptPeriodArr"--> | ||
| 11 | <!-- format="YYYY-MM-DD" type="daterange"--> | ||
| 12 | <!-- value-format="YYYY-MM-DD" range-separator="至"--> | ||
| 13 | <!-- start-placeholder="开始时间"--> | ||
| 14 | <!-- end-placeholder="结束时间"--> | ||
| 15 | <!-- @change="getBillList"--> | ||
| 16 | <!-- />--> | ||
| 17 | <!-- </el-form-item>--> | ||
| 18 | <!-- <el-form-item>--> | ||
| 19 | <!-- <el-button type="primary" @click="getBillList">查询</el-button>--> | ||
| 20 | <!-- <el-button type="info" @click="reset(query)">重置</el-button>--> | ||
| 21 | <!-- </el-form-item>--> | ||
| 22 | <!-- </el-form>--> | ||
| 23 | |||
| 24 | <div class="pd20"> | ||
| 25 | <div class="matchItem" v-for="n in billList" :key="n.id" @click="goDetail(n.id)"> | ||
| 26 | <div class="status-po"> | ||
| 27 | <span class="bg-pink" v-if="n.auditStatus=='0'">未提交</span> | ||
| 28 | <span class="bg-primary" v-if="n.auditStatus=='1'">待审核</span> | ||
| 29 | <span class="bg-blue" v-if="n.auditStatus=='2'">审核通过</span> | ||
| 30 | <span class="bg-danger" v-if="n.auditStatus=='3'">审核驳回</span> | ||
| 31 | </div> | ||
| 32 | <el-row :gutter="15"> | ||
| 33 | <el-col :lg="6" :md="8" :xl="10"> | ||
| 34 | <img class="mauto w100" :src="fillImgUrl(n.cptCoverPic)"> | ||
| 35 | </el-col> | ||
| 36 | <el-col :lg="18" :md="16" :xl="14"> | ||
| 37 | <el-row> | ||
| 38 | <el-col :span="24"> | ||
| 39 | <h3>{{ n.cptName }}</h3> | ||
| 40 | </el-col> | ||
| 41 | <el-col :lg="8"> | ||
| 42 | <p class="ppl"><label>赛事类型:</label>{{ n.cptLevel }}</p> | ||
| 43 | <p class="ppl"><label v-if="n.groupName">参赛队:</label>{{n.groupName}}</p> | ||
| 44 | </el-col> | ||
| 45 | <el-col :lg="8"> | ||
| 46 | <p class="ppl"><label>比赛时间:</label>{{ n.cptTimeRange }} | ||
| 47 | </p> | ||
| 48 | <p class="ppl"><label>参赛运动员:</label>{{ n.cptAthletesSize }} 人</p> | ||
| 49 | </el-col> | ||
| 50 | <el-col :lg="8"> | ||
| 51 | <p class="ppl"><label>报名时间:</label>{{ n.cptSignTimeRange}}</p> | ||
| 52 | <div class="btnbox"> | ||
| 53 | <el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus!='0'">详情</el-button> | ||
| 54 | <el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='0'">继续报名</el-button> | ||
| 55 | <el-button plain round type="primary" @click="withDraw(n)" v-if="n.auditStatus=='1'">取消报名</el-button> | ||
| 56 | <el-button plain round type="primary" v-if="n.auditStatus=='3'">重新报名</el-button> | ||
| 57 | <el-button plain round type="primary" v-if="n.auditStatus=='2'&&n.payStatus=='0'">缴费</el-button> | ||
| 58 | </div> | ||
| 59 | </el-col> | ||
| 60 | </el-row> | ||
| 61 | </el-col> | ||
| 62 | </el-row> | ||
| 63 | </div> | ||
| 64 | |||
| 65 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="billList?.length == 0"/> | ||
| 66 | |||
| 67 | </div> | ||
| 68 | <paginationPc | ||
| 69 | v-show="total > 0" | ||
| 70 | v-model:page="query.pageNum" | ||
| 71 | v-model:limit="query.pageSize" | ||
| 72 | :total="total" | ||
| 73 | @pagination="getBillList" | ||
| 74 | /> | ||
| 75 | </div> | ||
| 76 | |||
| 77 | <!-- 报项详情--> | ||
| 78 | <dialogModifySign :props="dialogModifySignProps"/> | ||
| 79 | <!-- 订单详情--> | ||
| 80 | <dialogModifyBill :props="dialogModifyBillProps"/> | ||
| 81 | |||
| 82 | </el-card> | ||
| 83 | |||
| 84 | </template> | ||
| 85 | |||
| 86 | <script setup> | ||
| 87 | import {ref} from 'vue' | ||
| 88 | import {useRouter} from 'vue-router' | ||
| 89 | import {getCurrentInstance, onMounted} from '@vue/runtime-core' | ||
| 90 | import dialogModifySign from './component/modifySign' | ||
| 91 | import dialogModifyBill from './component/modifyBill' | ||
| 92 | import * as match from '@/apiPc/match' | ||
| 93 | import {ElMessage, ElMessageBox} from 'element-plus' | ||
| 94 | import _ from 'lodash' | ||
| 95 | import useUserStore from "@/store/modules/user"; | ||
| 96 | |||
| 97 | const router = useRouter() | ||
| 98 | const {proxy} = getCurrentInstance() | ||
| 99 | const total = ref(0) | ||
| 100 | const total2 = ref(0) | ||
| 101 | const dialogPropsBase = { | ||
| 102 | open: false, | ||
| 103 | isView: false, | ||
| 104 | title: '', | ||
| 105 | data: null | ||
| 106 | } | ||
| 107 | const dialogModifySignProps = ref({ | ||
| 108 | ...dialogPropsBase | ||
| 109 | }) | ||
| 110 | const dialogModifyBillProps = ref({ | ||
| 111 | ...dialogPropsBase | ||
| 112 | }) | ||
| 113 | const activeName = ref('first') | ||
| 114 | const myform = ref({}) | ||
| 115 | |||
| 116 | const groupList = ref([]) | ||
| 117 | const cptPeriodArr = ref([]) | ||
| 118 | const payTimeArr = ref([]) | ||
| 119 | const commitTimeArr = ref([]) | ||
| 120 | const countryList = ref([]) | ||
| 121 | const tableData = ref([{name: '111'}]) | ||
| 122 | const billList = ref([]) | ||
| 123 | const query = ref({ | ||
| 124 | pageNum: 1, | ||
| 125 | pageSize: 10 | ||
| 126 | }) | ||
| 127 | const query2 = ref({ | ||
| 128 | pageNum: 1, | ||
| 129 | pageSize: 10 | ||
| 130 | }) | ||
| 131 | const payType = ref('') | ||
| 132 | const payPop = ref(false) | ||
| 133 | const showOrganizerInfo = ref(false) | ||
| 134 | const showResult = ref(false) | ||
| 135 | const myBalance = ref('') | ||
| 136 | const nowBill = ref({}) | ||
| 137 | const org = ref({}) | ||
| 138 | const user = useUserStore().user | ||
| 139 | const group = useUserStore().group | ||
| 140 | onMounted(() => { | ||
| 141 | getBillList() | ||
| 142 | }) | ||
| 143 | const reset = (form) => { | ||
| 144 | query.value = { | ||
| 145 | pageNum: 1, | ||
| 146 | pageSize: 10 | ||
| 147 | } | ||
| 148 | query2.value = { | ||
| 149 | pageNum: 1, | ||
| 150 | pageSize: 10 | ||
| 151 | } | ||
| 152 | cptPeriodArr.value = [] | ||
| 153 | payTimeArr.value = [] | ||
| 154 | commitTimeArr.value = [] | ||
| 155 | getBillList() | ||
| 156 | } | ||
| 157 | function withDraw(n){ | ||
| 158 | match.withDrawByOrderId(n.id).then(res=>{ | ||
| 159 | getBillList() | ||
| 160 | }) | ||
| 161 | } | ||
| 162 | function continueSign(n){ | ||
| 163 | if (user.uType == '1') { | ||
| 164 | // 个人报名 | ||
| 165 | router.push({ | ||
| 166 | name: 'chooseProject', | ||
| 167 | query: { | ||
| 168 | matchId: n.cptId | ||
| 169 | } | ||
| 170 | }) | ||
| 171 | } | ||
| 172 | if (user.uType == '2'){ | ||
| 173 | // 团队报名 | ||
| 174 | router.push({ | ||
| 175 | name: 'chooseSportsman', | ||
| 176 | query: { | ||
| 177 | matchId: n.cptId, | ||
| 178 | groupId: group.id | ||
| 179 | } | ||
| 180 | }) | ||
| 181 | } | ||
| 182 | |||
| 183 | } | ||
| 184 | function goDetail(n){ | ||
| 185 | |||
| 186 | } | ||
| 187 | function getBillList() { | ||
| 188 | query2.value.payTimeRange = payTimeArr.value.toString() | ||
| 189 | query2.value.createTimeRange = commitTimeArr.value.toString() | ||
| 190 | console.log(query2.value) | ||
| 191 | match.getMyOrderList(query2.value).then(res => { | ||
| 192 | billList.value = res.rows | ||
| 193 | total2.value = res.total | ||
| 194 | }) | ||
| 195 | } | ||
| 196 | |||
| 197 | function signRow(row) { | ||
| 198 | _.assign(dialogModifySignProps.value, dialogPropsBase, { | ||
| 199 | open: true, | ||
| 200 | isView: true, | ||
| 201 | title: '报项详情', | ||
| 202 | data: {...row} | ||
| 203 | }) | ||
| 204 | } | ||
| 205 | |||
| 206 | // function getMemberInfoByCptId(cptId) { | ||
| 207 | // match.getMemberInfoByCptId(cptId).then((res) => { | ||
| 208 | // myBalance.value = res.data.balance | ||
| 209 | // }) | ||
| 210 | // } | ||
| 211 | |||
| 212 | function goPay(bill) { | ||
| 213 | console.log(bill) | ||
| 214 | payPop.value = true | ||
| 215 | nowBill.value = bill | ||
| 216 | // getMemberInfoByCptId(bill.cptId) | ||
| 217 | } | ||
| 218 | |||
| 219 | function payBill() { | ||
| 220 | if (!payType.value) { | ||
| 221 | ElMessage.error('请选择支付方式') | ||
| 222 | return | ||
| 223 | } | ||
| 224 | match.payMatch({orderId: nowBill.value.id, payType: payType.value}).then(res => { | ||
| 225 | if (payType.value == 2) { | ||
| 226 | org.value = res.data.org | ||
| 227 | showOrganizerInfo.value = true | ||
| 228 | } else if (payType.value == 1) { | ||
| 229 | // 微信 | ||
| 230 | proxy.$refs['wePayRef'].open(res.data) | ||
| 231 | } else { | ||
| 232 | showResult.value = true | ||
| 233 | } | ||
| 234 | }) | ||
| 235 | } | ||
| 236 | |||
| 237 | function billDetail(bill) { | ||
| 238 | _.assign(dialogModifyBillProps.value, dialogPropsBase, { | ||
| 239 | open: true, | ||
| 240 | isView: true, | ||
| 241 | title: '订单详情', | ||
| 242 | data: {...bill} | ||
| 243 | }) | ||
| 244 | } | ||
| 245 | |||
| 246 | function cancelBill(bill) { | ||
| 247 | ElMessageBox.confirm('确定取消订单吗?', '提示', { | ||
| 248 | confirmButtonText: '确定', | ||
| 249 | cancelButtonText: '取消', | ||
| 250 | type: 'warning' | ||
| 251 | }).then(() => { | ||
| 252 | match.cancelMyUnPayedOrder(bill.id).then(Response => { | ||
| 253 | console.log(Response.data) | ||
| 254 | // 刷新数据 | ||
| 255 | getBillList() | ||
| 256 | }) | ||
| 257 | }) | ||
| 258 | } | ||
| 259 | |||
| 260 | function downloadVoucher(row) { | ||
| 261 | proxy.download( | ||
| 262 | `/ztx-match/pdf/getPayedOrderPdf/${row.id}/${row.groupId || 0}`, {}, '报项凭证.pdf' | ||
| 263 | ) | ||
| 264 | } | ||
| 265 | </script> | ||
| 266 | |||
| 267 | <style scoped lang="scss"> | ||
| 268 | .matchItem { | ||
| 269 | cursor: pointer; | ||
| 270 | margin: 0 0 20px; | ||
| 271 | padding: 0 0 20px;background: #FBFCFD; | ||
| 272 | border-radius: 2px; | ||
| 273 | position: relative; | ||
| 274 | .status-po{position: absolute;right: 0;top: 0;font-size: 12px; | ||
| 275 | color: #FFFFFF; | ||
| 276 | span{border-radius: 0px 10px 0px 10px;padding: 4px 10px;} | ||
| 277 | .bg-danger{background: #E60012;} | ||
| 278 | .bg-pink{background: #F740A6;} | ||
| 279 | .bg-primary{background: var(--el-color-primary)} | ||
| 280 | } | ||
| 281 | &:last-child { | ||
| 282 | border-bottom: none; | ||
| 283 | } | ||
| 284 | |||
| 285 | .el-avatar { | ||
| 286 | position: absolute; | ||
| 287 | left: 20px; | ||
| 288 | top: 30px; | ||
| 289 | |||
| 290 | img { | ||
| 291 | background: #fff; | ||
| 292 | } | ||
| 293 | } | ||
| 294 | |||
| 295 | .info { | ||
| 296 | p { | ||
| 297 | font-size: 14px; | ||
| 298 | } | ||
| 299 | } | ||
| 300 | |||
| 301 | .typeTag { | ||
| 302 | position: absolute; | ||
| 303 | right: 0; | ||
| 304 | top: 0; | ||
| 305 | } | ||
| 306 | |||
| 307 | h3 { | ||
| 308 | font-weight: 500; | ||
| 309 | margin: 0 0 10px; | ||
| 310 | font-size: 18px; | ||
| 311 | color: #000000; | ||
| 312 | text-overflow: ellipsis; | ||
| 313 | } | ||
| 314 | |||
| 315 | &:hover h3 { | ||
| 316 | color: var(--el-color-primary); | ||
| 317 | } | ||
| 318 | } | ||
| 319 | |||
| 320 | .centerPrice { | ||
| 321 | text-align: center; | ||
| 322 | font-size: 26px; | ||
| 323 | margin: 20px; | ||
| 324 | |||
| 325 | span { | ||
| 326 | font-size: 40px; | ||
| 327 | font-weight: bold; | ||
| 328 | } | ||
| 329 | } | ||
| 330 | |||
| 331 | |||
| 332 | :deep(.el-tabs__nav-wrap) { | ||
| 333 | padding: 0 15px; | ||
| 334 | } | ||
| 335 | |||
| 336 | :deep(.el-radio.el-radio--large .el-radio__label) { | ||
| 337 | display: flex; | ||
| 338 | align-items: center; | ||
| 339 | |||
| 340 | img { | ||
| 341 | margin-right: 6px; | ||
| 342 | } | ||
| 343 | } | ||
| 344 | |||
| 345 | .panel-footer .el-button--success { | ||
| 346 | background: #254385; | ||
| 347 | border: none; | ||
| 348 | padding: 0 40px; | ||
| 349 | font-size: 16px; | ||
| 350 | } | ||
| 351 | |||
| 352 | .orange { | ||
| 353 | font-size: 16px; | ||
| 354 | font-style: normal; | ||
| 355 | font-weight: bold | ||
| 356 | } | ||
| 357 | |||
| 358 | .orgbox { | ||
| 359 | font-size: 16px; | ||
| 360 | line-height: 30px; | ||
| 361 | } | ||
| 362 | |||
| 363 | .el-form--inline .el-form-item { | ||
| 364 | width: auto; | ||
| 365 | } | ||
| 366 | .ppl{font-size: 14px; | ||
| 367 | label{color: #929AA0;} | ||
| 368 | } | ||
| 369 | .btnbox{text-align: right;} | ||
| 370 | </style> |
| ... | @@ -3,9 +3,6 @@ | ... | @@ -3,9 +3,6 @@ |
| 3 | <div class="funcBtns"> | 3 | <div class="funcBtns"> |
| 4 | <el-button type="primary" @click="addMember">{{ language==0?'添加选手':'Add Player'}}</el-button> | 4 | <el-button type="primary" @click="addMember">{{ language==0?'添加选手':'Add Player'}}</el-button> |
| 5 | <el-button type="primary" plain @click="importSportman">{{ language==0?'导入选手':'Import Player' }}</el-button> | 5 | <el-button type="primary" plain @click="importSportman">{{ language==0?'导入选手':'Import Player' }}</el-button> |
| 6 | <el-button type="primary" plain> | ||
| 7 | <a href="/file/sportsmanTemplate.xlsx" target="_blank">Download template</a> | ||
| 8 | </el-button> | ||
| 9 | </div> | 6 | </div> |
| 10 | <div class="from-Card"> | 7 | <div class="from-Card"> |
| 11 | <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small"> | 8 | <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small"> |
| ... | @@ -28,7 +25,7 @@ | ... | @@ -28,7 +25,7 @@ |
| 28 | <el-input v-model="query.idcode" style="width: 120px;" clearable/> | 25 | <el-input v-model="query.idcode" style="width: 120px;" clearable/> |
| 29 | </el-form-item> | 26 | </el-form-item> |
| 30 | <el-form-item :label="language==0?'会员角色':'Role'"> | 27 | <el-form-item :label="language==0?'会员角色':'Role'"> |
| 31 | <el-select v-model="query.label" multiple> | 28 | <el-select v-model="labelArr" multiple> |
| 32 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?(l.label):(l.enlabel)"/> | 29 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?(l.label):(l.enlabel)"/> |
| 33 | </el-select> | 30 | </el-select> |
| 34 | </el-form-item> | 31 | </el-form-item> |
| ... | @@ -51,7 +48,7 @@ | ... | @@ -51,7 +48,7 @@ |
| 51 | 48 | ||
| 52 | <!-- 添加人员--> | 49 | <!-- 添加人员--> |
| 53 | <addCoach ref="dialogAddCoach" @submitForm="getList"/> | 50 | <addCoach ref="dialogAddCoach" @submitForm="getList"/> |
| 54 | <Import ref="dialogImportProps"/> | 51 | <Import ref="dialogImportProps" @uploadSuccess="getList"/> |
| 55 | </template> | 52 | </template> |
| 56 | 53 | ||
| 57 | <script setup> | 54 | <script setup> |
| ... | @@ -72,6 +69,7 @@ import cache from "@/plugins/cache"; | ... | @@ -72,6 +69,7 @@ import cache from "@/plugins/cache"; |
| 72 | import useUserStore from "@/store/modules/user"; | 69 | import useUserStore from "@/store/modules/user"; |
| 73 | const language = ref(cache.local.get('language') || 0) | 70 | const language = ref(cache.local.get('language') || 0) |
| 74 | const tableData = ref([]) | 71 | const tableData = ref([]) |
| 72 | const labelArr = ref([]) | ||
| 75 | const labels = ref([ | 73 | const labels = ref([ |
| 76 | {value: '0', label: '运动员', enlabel: 'Sportsman'}, | 74 | {value: '0', label: '运动员', enlabel: 'Sportsman'}, |
| 77 | {value: '1', label: '教练', enlabel: 'Coach'}, | 75 | {value: '1', label: '教练', enlabel: 'Coach'}, |
| ... | @@ -109,6 +107,7 @@ function importSportman() { | ... | @@ -109,6 +107,7 @@ function importSportman() { |
| 109 | } | 107 | } |
| 110 | 108 | ||
| 111 | function getList() { | 109 | function getList() { |
| 110 | query.value.label =labelArr.value.toString() | ||
| 112 | getGroupPersonList(query.value, groupId.value).then(res => { | 111 | getGroupPersonList(query.value, groupId.value).then(res => { |
| 113 | tableData.value = res.rows | 112 | tableData.value = res.rows |
| 114 | total.value = res.total | 113 | total.value = res.total | ... | ... |
| ... | @@ -2,7 +2,7 @@ | ... | @@ -2,7 +2,7 @@ |
| 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">{{ language==0?'我的预订':'My reservation' }}</h3></div> | 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"/> | 5 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="list?.length == 0"/> |
| 6 | 6 | ||
| 7 | <div class="pd20"></div> | 7 | <div class="pd20"></div> |
| 8 | </el-card> | 8 | </el-card> | ... | ... |
| ... | @@ -10,7 +10,7 @@ | ... | @@ -10,7 +10,7 @@ |
| 10 | <span>{{ n.time }}</span> | 10 | <span>{{ n.time }}</span> |
| 11 | </li> | 11 | </li> |
| 12 | </ul> | 12 | </ul> |
| 13 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="list?.length == 0"/> | 13 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="list?.length == 0"/> |
| 14 | 14 | ||
| 15 | </el-card> | 15 | </el-card> |
| 16 | </div> | 16 | </div> | ... | ... |
| ... | @@ -80,7 +80,6 @@ | ... | @@ -80,7 +80,6 @@ |
| 80 | <!--赛事日历--> | 80 | <!--赛事日历--> |
| 81 | <el-card :body-style="{'padding':'20px 20px'}"> | 81 | <el-card :body-style="{'padding':'20px 20px'}"> |
| 82 | <el-calendar v-model="calendarValue" :range="calendarRange"> | 82 | <el-calendar v-model="calendarValue" :range="calendarRange"> |
| 83 | <!-- <el-calendar>--> | ||
| 84 | <template #date-cell="data"> | 83 | <template #date-cell="data"> |
| 85 | <div v-if="data.data.day.slice(8,10)==22" class="primaryDate date">22</div> | 84 | <div v-if="data.data.day.slice(8,10)==22" class="primaryDate date">22</div> |
| 86 | <div v-else class="date"> | 85 | <div v-else class="date"> |
| ... | @@ -417,8 +416,8 @@ const scores = ref([]) | ... | @@ -417,8 +416,8 @@ const scores = ref([]) |
| 417 | const nowscores = ref([]) | 416 | const nowscores = ref([]) |
| 418 | const livelist = ref([]) | 417 | const livelist = ref([]) |
| 419 | const picList = ref([]) | 418 | const picList = ref([]) |
| 420 | const calendarValue = ref('2024-07-22') | 419 | const calendarValue = ref(dayjs('2024-07-22').toDate()) |
| 421 | const calendarRange = ref(['2024-07-21','2024-07-27']) | 420 | const calendarRange = ref([dayjs('2024-07-21').toDate(),dayjs('2024-07-27').toDate()]) |
| 422 | const showgg = ref(true) | 421 | const showgg = ref(true) |
| 423 | onMounted(() => { | 422 | onMounted(() => { |
| 424 | init() | 423 | init() | ... | ... |
| ... | @@ -82,7 +82,7 @@ | ... | @@ -82,7 +82,7 @@ |
| 82 | <div class="rItem r1" @click="goRegister(1)"> | 82 | <div class="rItem r1" @click="goRegister(1)"> |
| 83 | <h3>{{language==0?'机构用户':'Organization'}}</h3> | 83 | <h3>{{language==0?'机构用户':'Organization'}}</h3> |
| 84 | </div> | 84 | </div> |
| 85 | <div class="rItem r2" @click="goRegister(0)"> | 85 | <div class="rItem r2" @click="goRegister(0)" :style="language==0?'filter:grayscale(1)':''"> |
| 86 | <h3>{{language==0?'个人用户':'Individual'}}</h3> | 86 | <h3>{{language==0?'个人用户':'Individual'}}</h3> |
| 87 | </div> | 87 | </div> |
| 88 | </div> | 88 | </div> |
| ... | @@ -293,6 +293,10 @@ function showRegister() { | ... | @@ -293,6 +293,10 @@ function showRegister() { |
| 293 | } | 293 | } |
| 294 | function goRegister(n) { | 294 | function goRegister(n) { |
| 295 | if(n==0){ | 295 | if(n==0){ |
| 296 | if(language.value==0){ | ||
| 297 | // ElMessage.warning('暂不开放国内注册!') | ||
| 298 | return | ||
| 299 | } | ||
| 296 | show.value = false | 300 | show.value = false |
| 297 | router.push({ | 301 | router.push({ |
| 298 | path: `/register/0` | 302 | path: `/register/0` | ... | ... |
| ... | @@ -3,7 +3,8 @@ | ... | @@ -3,7 +3,8 @@ |
| 3 | 3 | ||
| 4 | <div class="box ph-30"> | 4 | <div class="box ph-30"> |
| 5 | <el-card> | 5 | <el-card> |
| 6 | <team-sign-step :activeStep="activeStep" :language="language"/> | 6 | <single-sign-step v-if="user.utype=='1'" activeStep="1" :language="language"/> |
| 7 | <team-sign-step v-if="user.utype=='2'" activeStep="2" :language="language"/> | ||
| 7 | </el-card> | 8 | </el-card> |
| 8 | 9 | ||
| 9 | <el-row class="mt20" :gutter="20"> | 10 | <el-row class="mt20" :gutter="20"> |
| ... | @@ -166,17 +167,19 @@ | ... | @@ -166,17 +167,19 @@ |
| 166 | </template> | 167 | </template> |
| 167 | 168 | ||
| 168 | <script setup> | 169 | <script setup> |
| 169 | import {ref, reactive} from 'vue' | 170 | import TeamSignStep from './components/teamSignStep' |
| 171 | import SingleSignStep from './components/singleSignStep' | ||
| 172 | import {ref, reactive,toRefs} from 'vue' | ||
| 170 | import {getCurrentInstance, onMounted} from '@vue/runtime-core' | 173 | import {getCurrentInstance, onMounted} from '@vue/runtime-core' |
| 171 | import * as match from '@/apiPc/match' | 174 | import * as match from '@/apiPc/match' |
| 172 | import dialogAddCoach from './components/addCoach' | 175 | import dialogAddCoach from './components/addCoach' |
| 173 | import TeamSignStep from './components/teamSignStep' | 176 | import cache from "@/plugins/cache" |
| 174 | import cache from "@/plugins/cache" | ||
| 175 | const {proxy} = getCurrentInstance() | 177 | const {proxy} = getCurrentInstance() |
| 176 | const router = useRouter() | 178 | const router = useRouter() |
| 177 | const route = useRoute() | 179 | const route = useRoute() |
| 178 | import {ElMessage} from 'element-plus' | 180 | import {ElMessage} from 'element-plus' |
| 179 | import {useRoute, useRouter} from 'vue-router' | 181 | import {useRoute, useRouter} from 'vue-router' |
| 182 | import useUserStore from "@/store/modules/user"; | ||
| 180 | const language = ref(cache.local.get('language') || 0) | 183 | const language = ref(cache.local.get('language') || 0) |
| 181 | 184 | ||
| 182 | const data = reactive({ | 185 | const data = reactive({ |
| ... | @@ -209,17 +212,21 @@ const { | ... | @@ -209,17 +212,21 @@ const { |
| 209 | hasChooseObj,activeStep | 212 | hasChooseObj,activeStep |
| 210 | } = toRefs(data) | 213 | } = toRefs(data) |
| 211 | let matchId = '' | 214 | let matchId = '' |
| 215 | const user = useUserStore().user | ||
| 216 | const uType = ref('') | ||
| 212 | onMounted(() => { | 217 | onMounted(() => { |
| 213 | matchId = route.query.matchId | 218 | matchId = route.query.matchId |
| 214 | groupId.value = route.query.groupId | 219 | groupId.value = route.query.groupId || 0 |
| 215 | signType.value = route.query.signType || '' | 220 | signType.value = route.query.signType || '' |
| 221 | |||
| 216 | getList() | 222 | getList() |
| 217 | }) | 223 | }) |
| 218 | 224 | ||
| 219 | function getList() { | 225 | function getList() { |
| 220 | if (signType.value == '0') { | 226 | if (user.utype == '1') { |
| 221 | geren() | 227 | geren() |
| 222 | } else { | 228 | } |
| 229 | if (user.utype == '2'){ | ||
| 223 | tuandui() | 230 | tuandui() |
| 224 | } | 231 | } |
| 225 | } | 232 | } |
| ... | @@ -297,7 +304,7 @@ function chooseDone() { | ... | @@ -297,7 +304,7 @@ function chooseDone() { |
| 297 | function goNext() { | 304 | function goNext() { |
| 298 | console.log(form.value) | 305 | console.log(form.value) |
| 299 | if ((form.value.coachs.length < 1) && (form.value.leader.length < 1)) { | 306 | if ((form.value.coachs.length < 1) && (form.value.leader.length < 1)) { |
| 300 | ElMessage.error('至少选一个教练或领队') | 307 | ElMessage.error(language.value==0?'至少选一个教练或领队':'Coach/Team Leader, select at least one') |
| 301 | return | 308 | return |
| 302 | } | 309 | } |
| 303 | var obj = { | 310 | var obj = { |
| ... | @@ -315,7 +322,7 @@ function goNext() { | ... | @@ -315,7 +322,7 @@ function goNext() { |
| 315 | if (groupId.value && groupId.value != 0) { | 322 | if (groupId.value && groupId.value != 0) { |
| 316 | obj.unitId = groupId.value | 323 | obj.unitId = groupId.value |
| 317 | } | 324 | } |
| 318 | if (signType.value == '0') { | 325 | if (user.utype == '1') { |
| 319 | // 个人报名 | 326 | // 个人报名 |
| 320 | match.singleSignSavePerson(obj).then(res => { | 327 | match.singleSignSavePerson(obj).then(res => { |
| 321 | console.log(res) | 328 | console.log(res) |
| ... | @@ -326,7 +333,8 @@ function goNext() { | ... | @@ -326,7 +333,8 @@ function goNext() { |
| 326 | } | 333 | } |
| 327 | }) | 334 | }) |
| 328 | }) | 335 | }) |
| 329 | } else { | 336 | } |
| 337 | if (user.utype == '2'){ | ||
| 330 | // 团队报名 | 338 | // 团队报名 |
| 331 | match.groupSignSavePerson(obj).then(res => { | 339 | match.groupSignSavePerson(obj).then(res => { |
| 332 | router.push({ | 340 | router.push({ |
| ... | @@ -349,7 +357,7 @@ function goPrev() { | ... | @@ -349,7 +357,7 @@ function goPrev() { |
| 349 | 357 | ||
| 350 | function editPerson(id) { | 358 | function editPerson(id) { |
| 351 | proxy.$refs['dialogAddCoachRef'].open({ | 359 | proxy.$refs['dialogAddCoachRef'].open({ |
| 352 | title: '编辑人员', | 360 | title: language.value==0?'编辑人员':'Edit', |
| 353 | id: id, | 361 | id: id, |
| 354 | groupId: groupId.value | 362 | groupId: groupId.value |
| 355 | }) | 363 | }) |
| ... | @@ -357,7 +365,7 @@ function editPerson(id) { | ... | @@ -357,7 +365,7 @@ function editPerson(id) { |
| 357 | 365 | ||
| 358 | function addCoach() { | 366 | function addCoach() { |
| 359 | proxy.$refs['dialogAddCoachRef'].open({ | 367 | proxy.$refs['dialogAddCoachRef'].open({ |
| 360 | title: '新建人员', | 368 | title: language.value==0?'新建人员':'Add', |
| 361 | id: 0, | 369 | id: 0, |
| 362 | groupId: groupId.value | 370 | groupId: groupId.value |
| 363 | }) | 371 | }) | ... | ... |
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
| ... | @@ -46,8 +46,8 @@ | ... | @@ -46,8 +46,8 @@ |
| 46 | <el-table-column v-if="coachOrLeaderFlag=='1'" label="领队" prop="leaderNames" /> | 46 | <el-table-column v-if="coachOrLeaderFlag=='1'" label="领队" prop="leaderNames" /> |
| 47 | <el-table-column label="操作" fixed="right" width="100" align="center"> | 47 | <el-table-column label="操作" fixed="right" width="100" align="center"> |
| 48 | <template #default="scope"> | 48 | <template #default="scope"> |
| 49 | <el-button type="text" @click="editThis(scope.row)">编辑</el-button> | 49 | <el-button type="primary" link @click="editThis(scope.row)">编辑</el-button> |
| 50 | <el-button type="text" @click="removeThis(scope.row.id)">删除</el-button> | 50 | <el-button type="primary" link @click="removeThis(scope.row.id)">删除</el-button> |
| 51 | </template> | 51 | </template> |
| 52 | </el-table-column> | 52 | </el-table-column> |
| 53 | </el-table> | 53 | </el-table> | ... | ... |
src/viewsPc/match/commitDone.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="box ph-30"> | ||
| 4 | <el-card> | ||
| 5 | <single-sign-step v-if="user.utype=='1'" activeStep="3" :language="language"/> | ||
| 6 | <team-sign-step v-if="user.utype=='2'" activeStep="4" :language="language"/> | ||
| 7 | </el-card> | ||
| 8 | <el-card class="mt20"> | ||
| 9 | <div class="flexCenter pd20"> | ||
| 10 | <img src="@/assets/img/e.png"/> | ||
| 11 | <div> | ||
| 12 | <div>账号:{{ user.userName }}</div> | ||
| 13 | <h3>报名信息提交成功</h3> | ||
| 14 | </div> | ||
| 15 | </div> | ||
| 16 | <div class="text-center flexCenter"> | ||
| 17 | <div class="border-info mt20"> | ||
| 18 | 审核结果,后续将以邮件形式正式通知您。 | ||
| 19 | <br/> | ||
| 20 | 邮件发送账号:<span class="text-primary">{{ user.email }}</span> | ||
| 21 | ,请关注相关邮件通知。 | ||
| 22 | <br/> | ||
| 23 | 如果您的报名信息审核通过,邮件正文会附上相关费用的支付链接,请通过链接完成支付,完成报名。 | ||
| 24 | </div> | ||
| 25 | </div> | ||
| 26 | |||
| 27 | <div class="text-center mt30 mb20"> | ||
| 28 | <el-button class="primary-kx w200px" round @click="goHome">{{ language == 0 ? '返回首页' : 'Homepage' }}</el-button> | ||
| 29 | <el-button type="primary" class="btn-lineG w200px" round @click="goSign">{{ language == 0 ? '返回赛事报名模块' : 'Sign Up' }}</el-button> | ||
| 30 | </div> | ||
| 31 | </el-card> | ||
| 32 | </div> | ||
| 33 | </div> | ||
| 34 | </template> | ||
| 35 | |||
| 36 | <script setup> | ||
| 37 | import TeamSignStep from './components/teamSignStep' | ||
| 38 | import SingleSignStep from './components/singleSignStep' | ||
| 39 | const router = useRouter() | ||
| 40 | import useUserStore from "@/store/modules/user" | ||
| 41 | import {ref} from "vue" | ||
| 42 | import cache from "@/plugins/cache" | ||
| 43 | import {useRouter} from "vue-router"; | ||
| 44 | |||
| 45 | const language = ref(cache.local.get('language') || 0) | ||
| 46 | const user = useUserStore().user | ||
| 47 | |||
| 48 | const goHome = () => { | ||
| 49 | router.push({ | ||
| 50 | name: `home` | ||
| 51 | }) | ||
| 52 | } | ||
| 53 | const goSign = () => { | ||
| 54 | router.push({ | ||
| 55 | name: `matchDetail`, | ||
| 56 | params:{id:0} | ||
| 57 | }) | ||
| 58 | } | ||
| 59 | </script> | ||
| 60 | |||
| 61 | <style scoped lang="scss"> | ||
| 62 | .border-info{padding: 30px;line-height: 2;} | ||
| 63 | </style> |
| ... | @@ -7,7 +7,7 @@ | ... | @@ -7,7 +7,7 @@ |
| 7 | <el-form ref="dialogRef" :model="form" :rules="rules" label-width="120px" inline> | 7 | <el-form ref="dialogRef" :model="form" :rules="rules" label-width="120px" inline> |
| 8 | <el-row :gutter="30"> | 8 | <el-row :gutter="30"> |
| 9 | <el-col :lg="12" class="touxiang"> | 9 | <el-col :lg="12" class="touxiang"> |
| 10 | <el-form-item prop="picUrl" label="个人照片" required> | 10 | <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'" required> |
| 11 | <ImageUpload2 | 11 | <ImageUpload2 |
| 12 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" | 12 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" |
| 13 | :is-show-tip="false" | 13 | :is-show-tip="false" |
| ... | @@ -65,7 +65,7 @@ | ... | @@ -65,7 +65,7 @@ |
| 65 | <el-radio label="1">{{ language==0?'男':'male' }}</el-radio> | 65 | <el-radio label="1">{{ language==0?'男':'male' }}</el-radio> |
| 66 | </el-radio-group> | 66 | </el-radio-group> |
| 67 | </el-form-item> | 67 | </el-form-item> |
| 68 | <el-form-item :label="language==0?'邮箱':'Email'" prop="idcCode" required> | 68 | <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required> |
| 69 | <el-input v-model="form.email"/> | 69 | <el-input v-model="form.email"/> |
| 70 | </el-form-item> | 70 | </el-form-item> |
| 71 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> | 71 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> |
| ... | @@ -134,9 +134,10 @@ const data = reactive({ | ... | @@ -134,9 +134,10 @@ const data = reactive({ |
| 134 | ], | 134 | ], |
| 135 | title: '添加选手信息', | 135 | title: '添加选手信息', |
| 136 | groupId: '0', | 136 | groupId: '0', |
| 137 | showRequire: false | 137 | showRequire: false, |
| 138 | uType:'' | ||
| 138 | }) | 139 | }) |
| 139 | const {showRequire, form, rules, show, countryList, regionsList, title, groupId, labels} = toRefs(data) | 140 | const {showRequire, form, rules, show, countryList, regionsList, title, groupId, labels,uType} = toRefs(data) |
| 140 | onMounted(() => { | 141 | onMounted(() => { |
| 141 | getCountryList() | 142 | getCountryList() |
| 142 | getRegionsList() | 143 | getRegionsList() |
| ... | @@ -147,17 +148,31 @@ const open = (params) => { | ... | @@ -147,17 +148,31 @@ const open = (params) => { |
| 147 | show.value = true | 148 | show.value = true |
| 148 | title.value = params.title | 149 | title.value = params.title |
| 149 | groupId.value = params.groupId || '0' | 150 | groupId.value = params.groupId || '0' |
| 150 | if (params.id != 0) { // 编辑 | 151 | uType.value = params.uType |
| 151 | editgay = true | 152 | if(uType.value == '1'){ |
| 152 | match.getPersonInfoById(params.id).then(res => { | 153 | //个人 |
| 154 | match.getMyPersonInfo().then(res => { | ||
| 153 | form.value = res.data | 155 | form.value = res.data |
| 154 | form.value.id = params.id | 156 | form.value.id = res.data.id |
| 155 | if (form.value.label) { | 157 | if (form.value.label) { |
| 156 | // {0:0,1:1,2:3} | 158 | // {0:0,1:1,2:3} |
| 157 | form.value.labelArr = form.value.label.split(',') | 159 | form.value.labelArr = form.value.label.split(',') |
| 158 | labelvalue(form.value.labelArr) | 160 | labelvalue(form.value.labelArr) |
| 159 | } | 161 | } |
| 160 | }) | 162 | }) |
| 163 | } else { | ||
| 164 | if (params.id != 0) { // 编辑 | ||
| 165 | editgay = true | ||
| 166 | match.getPersonInfoById(params.id).then(res => { | ||
| 167 | form.value = res.data | ||
| 168 | form.value.id = params.id | ||
| 169 | if (form.value.label) { | ||
| 170 | // {0:0,1:1,2:3} | ||
| 171 | form.value.labelArr = form.value.label.split(',') | ||
| 172 | labelvalue(form.value.labelArr) | ||
| 173 | } | ||
| 174 | }) | ||
| 175 | } | ||
| 161 | } | 176 | } |
| 162 | } | 177 | } |
| 163 | defineExpose({open}) | 178 | defineExpose({open}) |
| ... | @@ -286,11 +301,20 @@ function submitForm() { | ... | @@ -286,11 +301,20 @@ function submitForm() { |
| 286 | emit('submitForm') | 301 | emit('submitForm') |
| 287 | }) | 302 | }) |
| 288 | } else { | 303 | } else { |
| 289 | match.savePersonForMyPerson(form.value).then(res => { | 304 | // if(uType.value == '1'){ |
| 290 | ElMessage.success('保存成功') | 305 | // match.saveMyBaseInfo(form.value).then(res => { |
| 291 | show.value = false | 306 | // ElMessage.success('保存成功') |
| 292 | emit('submitForm') | 307 | // show.value = false |
| 293 | }) | 308 | // emit('submitForm') |
| 309 | // }) | ||
| 310 | // } else { | ||
| 311 | match.savePersonForMyPerson(form.value).then(res => { | ||
| 312 | ElMessage.success('保存成功') | ||
| 313 | show.value = false | ||
| 314 | emit('submitForm') | ||
| 315 | }) | ||
| 316 | // } | ||
| 317 | |||
| 294 | } | 318 | } |
| 295 | } | 319 | } |
| 296 | } | 320 | } | ... | ... |
| ... | @@ -71,7 +71,7 @@ | ... | @@ -71,7 +71,7 @@ |
| 71 | <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/> | 71 | <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/> |
| 72 | <el-table-column :label="language==0?'操作':'Actions'" width="120" fixed="right" align="center"> | 72 | <el-table-column :label="language==0?'操作':'Actions'" width="120" fixed="right" align="center"> |
| 73 | <template #default="scope"> | 73 | <template #default="scope"> |
| 74 | <el-button type="text" @click="editPerson(scope.row)"> | 74 | <el-button link type="primary" @click="editPerson(scope.row)"> |
| 75 | {{language==0?'编辑':'Edit'}} | 75 | {{language==0?'编辑':'Edit'}} |
| 76 | </el-button> | 76 | </el-button> |
| 77 | </template> | 77 | </template> |
| ... | @@ -103,7 +103,9 @@ const language = ref(cache.local.get('language') || 0) | ... | @@ -103,7 +103,9 @@ const language = ref(cache.local.get('language') || 0) |
| 103 | const {proxy} = getCurrentInstance() | 103 | const {proxy} = getCurrentInstance() |
| 104 | const emit = defineEmits(['submitForm', 'transfer']) | 104 | const emit = defineEmits(['submitForm', 'transfer']) |
| 105 | const data = reactive({ | 105 | const data = reactive({ |
| 106 | query: {}, | 106 | query: { |
| 107 | label:'0' | ||
| 108 | }, | ||
| 107 | tableData: [], | 109 | tableData: [], |
| 108 | birthArr: [], | 110 | birthArr: [], |
| 109 | show: false, | 111 | show: false, |
| ... | @@ -184,7 +186,7 @@ function addMember() { | ... | @@ -184,7 +186,7 @@ function addMember() { |
| 184 | const params = { | 186 | const params = { |
| 185 | title: '添加人员', | 187 | title: '添加人员', |
| 186 | id: 0, | 188 | id: 0, |
| 187 | groupId: groupId.value | 189 | groupId: groupId |
| 188 | } | 190 | } |
| 189 | proxy.$refs['dialogAddCoach'].open(params) | 191 | proxy.$refs['dialogAddCoach'].open(params) |
| 190 | } | 192 | } |
| ... | @@ -192,7 +194,7 @@ function addMember() { | ... | @@ -192,7 +194,7 @@ function addMember() { |
| 192 | function importSportman() { | 194 | function importSportman() { |
| 193 | const params = { | 195 | const params = { |
| 194 | title: '批量导入选手', | 196 | title: '批量导入选手', |
| 195 | groupId: groupId.value | 197 | groupId: groupId |
| 196 | } | 198 | } |
| 197 | proxy.$refs['dialogImportProps'].open(params) | 199 | proxy.$refs['dialogImportProps'].open(params) |
| 198 | } | 200 | } | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div class="border-info" style="margin: 20px"> | 2 | <div class="border-info" style="margin: 20px" v-loading="loading"> |
| 3 | <el-row> | 3 | <el-row> |
| 4 | <el-col :lg="8"> | 4 | <el-col :lg="8"> |
| 5 | <div class="item"><label>{{ language == 0 ? '教练' : 'Coach' }}</label> | 5 | <div class="item"><label>{{ language == 0 ? '教练' : 'Coach' }}</label> |
| 6 | <span v-for="c in names.coachList">{{ c.shortName }}</span> | 6 | <span v-for="c in names.coachList">{{ c.shortName }}</span> |
| 7 | <span v-if="!names.coachList">--</span> | ||
| 7 | </div> | 8 | </div> |
| 8 | <div class="item"><label>{{ language == 0 ? '翻译' : 'Translator' }}</label> | 9 | <div class="item"><label>{{ language == 0 ? '翻译' : 'Translator' }}</label> |
| 9 | <span v-for="c in names.translatorList">{{ c.shortName }}</span> | 10 | <span v-for="c in names.translatorList">{{ c.shortName }}</span> |
| 11 | <span v-if="!names.translatorList">--</span> | ||
| 10 | </div> | 12 | </div> |
| 11 | </el-col> | 13 | </el-col> |
| 12 | <el-col :lg="8"> | 14 | <el-col :lg="8"> |
| 13 | <div class="item"> | 15 | <div class="item"> |
| 14 | <label>{{ language == 0 ? '领队' : 'Team leader' }}</label> | 16 | <label>{{ language == 0 ? '领队' : 'Team leader' }}</label> |
| 15 | <span v-for="c in names.leaderList">{{ c.shortName }}</span> | 17 | <span v-for="c in names.leaderList">{{ c.shortName }}</span> |
| 18 | <span v-if="!names.leaderList">--</span> | ||
| 16 | </div> | 19 | </div> |
| 17 | <div class="item"> | 20 | <div class="item"> |
| 18 | <label>{{ language == 0 ? '官员' : 'Official' }}</label> | 21 | <label>{{ language == 0 ? '官员' : 'Official' }}</label> |
| ... | @@ -26,12 +29,14 @@ | ... | @@ -26,12 +29,14 @@ |
| 26 | <span class="mr5" v-for="c in names.teamDoctorList"> | 29 | <span class="mr5" v-for="c in names.teamDoctorList"> |
| 27 | {{ c.shortName }} | 30 | {{ c.shortName }} |
| 28 | </span> | 31 | </span> |
| 32 | <span v-if="!names.teamDoctorList">--</span> | ||
| 29 | </div> | 33 | </div> |
| 30 | <div class="item"> | 34 | <div class="item"> |
| 31 | <label>{{ language == 0 ? '其他' : 'Other' }}</label> | 35 | <label>{{ language == 0 ? '其他' : 'Other' }}</label> |
| 32 | <span class="mr5" v-for="c in names.otherList"> | 36 | <span class="mr5" v-for="c in names.otherList"> |
| 33 | {{ c.shortName }} | 37 | {{ c.shortName }} |
| 34 | </span> | 38 | </span> |
| 39 | <span v-if="!names.otherList">--</span> | ||
| 35 | </div> | 40 | </div> |
| 36 | </el-col> | 41 | </el-col> |
| 37 | </el-row> | 42 | </el-row> |
| ... | @@ -39,17 +44,44 @@ | ... | @@ -39,17 +44,44 @@ |
| 39 | </template> | 44 | </template> |
| 40 | 45 | ||
| 41 | <script setup> | 46 | <script setup> |
| 47 | import * as match from "@/apiPc/match"; | ||
| 48 | import {onMounted} from "@vue/runtime-core"; | ||
| 49 | import useUserStore from "@/store/modules/user"; | ||
| 50 | |||
| 42 | const props = defineProps({ | 51 | const props = defineProps({ |
| 43 | names: { | 52 | matchId: { |
| 44 | type: Object, | 53 | type: String, |
| 45 | required: true | 54 | required: true |
| 46 | }, | ||
| 47 | language: { | ||
| 48 | type: Number, | ||
| 49 | required: true, | ||
| 50 | default: 0 | ||
| 51 | } | 55 | } |
| 52 | }) | 56 | }) |
| 57 | const names = ref({}) | ||
| 58 | const loading = ref(true) | ||
| 59 | import cache from "@/plugins/cache" | ||
| 60 | const user = useUserStore().user | ||
| 61 | const group = useUserStore().group || {} | ||
| 62 | const language = ref(cache.local.get('language') || 0) | ||
| 63 | onMounted(() => { | ||
| 64 | if (user.utype == '2') { | ||
| 65 | tuandui() | ||
| 66 | } | ||
| 67 | if(user.utype == '1'){ | ||
| 68 | geren() | ||
| 69 | } | ||
| 70 | }) | ||
| 71 | |||
| 72 | function geren() { | ||
| 73 | match.getChooseDoneSingleCoachs(props.matchId).then(res => { | ||
| 74 | names.value = res.data | ||
| 75 | loading.value = false | ||
| 76 | }) | ||
| 77 | } | ||
| 78 | |||
| 79 | function tuandui() { | ||
| 80 | match.getChooseDoneGroupCoachs(props.matchId, group.id).then(res => { | ||
| 81 | names.value = res.data | ||
| 82 | loading.value = false | ||
| 83 | }) | ||
| 84 | } | ||
| 53 | </script> | 85 | </script> |
| 54 | 86 | ||
| 55 | <style scoped lang="scss"> | 87 | <style scoped lang="scss"> | ... | ... |
| ... | @@ -4,17 +4,20 @@ | ... | @@ -4,17 +4,20 @@ |
| 4 | destroy-on-close | 4 | destroy-on-close |
| 5 | > | 5 | > |
| 6 | <el-descriptions border> | 6 | <el-descriptions border> |
| 7 | <el-descriptions-item v-if="form.picUrl" label="照片"> | 7 | <el-descriptions-item v-if="form.picUrl" :label="language==0?'个人照片':'photo'"> |
| 8 | <img style="width: 100px" :src="form.picUrl"> | 8 | <img style="width: 60px" :src="fillImgUrl(form.picUrl)"> |
| 9 | </el-descriptions-item> | 9 | </el-descriptions-item> |
| 10 | <el-descriptions-item label="姓名">{{ form.realName }}</el-descriptions-item> | 10 | <el-descriptions-item :label="language==0?'姓氏':'surname'">{{ form.xing }}</el-descriptions-item> |
| 11 | <el-descriptions-item label="性别">{{ form.sexStr }}</el-descriptions-item> | 11 | <el-descriptions-item :label="language==0?'名':'name'">{{ form.ming }}</el-descriptions-item> |
| 12 | <el-descriptions-item label="证件类型">{{ form.idcTypeStr }}</el-descriptions-item> | 12 | <el-descriptions-item :label="language==0?'短名':'short name'">{{ form.shortName }}</el-descriptions-item> |
| 13 | <el-descriptions-item label="证件号码">{{ form.idcCode }}</el-descriptions-item> | 13 | <el-descriptions-item :label="language==0?'性别':'sex'">{{ form.sexStr }}</el-descriptions-item> |
| 14 | <el-descriptions-item label="出生日期">{{ form.birth }}</el-descriptions-item> | 14 | <el-descriptions-item :label="language==0?'所属国家':'Nationality'">{{ form.countryName }}</el-descriptions-item> |
| 15 | <el-descriptions-item label="联系方式">{{ form.phone }}</el-descriptions-item> | 15 | <el-descriptions-item :label="language==0?'证件类型':'ID type'">{{ form.idcTypeStr }}</el-descriptions-item> |
| 16 | <el-descriptions-item label="国籍">{{ form.countryName }}</el-descriptions-item> | 16 | <el-descriptions-item :label="language==0?'证件号码':'ID NO'">{{ form.idcCode }}</el-descriptions-item> |
| 17 | <el-descriptions-item label="民族">{{ form.nation }}</el-descriptions-item> | 17 | <el-descriptions-item :label="language==0?'出生日期':'birth'">{{ form.birth }}</el-descriptions-item> |
| 18 | <el-descriptions-item :label="language==0?'手机号码':'Phone'">{{ form.phone }}</el-descriptions-item> | ||
| 19 | <el-descriptions-item :label="language==0?'邮箱':'Email'">{{ form.email }}</el-descriptions-item> | ||
| 20 | <el-descriptions-item :label="language==0?'详细地址':'Address'">{{ form.address }}</el-descriptions-item> | ||
| 18 | </el-descriptions> | 21 | </el-descriptions> |
| 19 | 22 | ||
| 20 | <el-row v-if="participantsInfoArr&&participantsInfoArr.length>0" class="mt20"> | 23 | <el-row v-if="participantsInfoArr&&participantsInfoArr.length>0" class="mt20"> |
| ... | @@ -62,6 +65,9 @@ const { proxy } = getCurrentInstance() | ... | @@ -62,6 +65,9 @@ const { proxy } = getCurrentInstance() |
| 62 | const emit = defineEmits(['submitForm']) | 65 | const emit = defineEmits(['submitForm']) |
| 63 | const uploadUrl = ref('/upload/upLoadToFileServer') | 66 | const uploadUrl = ref('/upload/upLoadToFileServer') |
| 64 | const route = useRoute() | 67 | const route = useRoute() |
| 68 | import cache from "@/plugins/cache" | ||
| 69 | const language = ref(cache.local.get('language') || 0) | ||
| 70 | |||
| 65 | const data = reactive({ | 71 | const data = reactive({ |
| 66 | form: {}, | 72 | form: {}, |
| 67 | show: false, | 73 | show: false, | ... | ... |
| ... | @@ -26,17 +26,28 @@ | ... | @@ -26,17 +26,28 @@ |
| 26 | </template> | 26 | </template> |
| 27 | 27 | ||
| 28 | <script setup> | 28 | <script setup> |
| 29 | import useUserStore from "@/store/modules/user"; | ||
| 30 | import cache from "@/plugins/cache"; | ||
| 31 | import {getGroup} from "@/api/match/CompetitionProject"; | ||
| 32 | import * as match from "@/apiPc/match"; | ||
| 33 | |||
| 34 | const language = ref(cache.local.get('language') || 0) | ||
| 29 | const props = defineProps({ | 35 | const props = defineProps({ |
| 30 | groupInfo: { | 36 | groupId: { |
| 31 | type: Object, | 37 | type: Object, |
| 32 | required: true | 38 | required: true |
| 33 | }, | ||
| 34 | language: { | ||
| 35 | type: Number, | ||
| 36 | required: true, | ||
| 37 | default: 0 | ||
| 38 | } | 39 | } |
| 39 | }) | 40 | }) |
| 41 | const user = useUserStore().user | ||
| 42 | const groupInfo = useUserStore().group | ||
| 43 | if(props.groupId!=0){ | ||
| 44 | getGroupInfo() | ||
| 45 | } | ||
| 46 | function getGroupInfo() { | ||
| 47 | match.getGroupInfo().then(res => { | ||
| 48 | groupInfo.value = res.data | ||
| 49 | }) | ||
| 50 | } | ||
| 40 | </script> | 51 | </script> |
| 41 | 52 | ||
| 42 | <style scoped lang="scss"> | 53 | <style scoped lang="scss"> | ... | ... |
| ... | @@ -2,11 +2,12 @@ | ... | @@ -2,11 +2,12 @@ |
| 2 | <el-dialog v-model="show" :title="title" width="500px" close-icon="CircleClose" | 2 | <el-dialog v-model="show" :title="title" width="500px" close-icon="CircleClose" |
| 3 | append-to-body :close-on-click-modal="false" class="pcloginpop" center> | 3 | append-to-body :close-on-click-modal="false" class="pcloginpop" center> |
| 4 | <el-form ref="dialogRef" label-width="100px"> | 4 | <el-form ref="dialogRef" label-width="100px"> |
| 5 | <el-form-item label="下载模板"> | 5 | <el-form-item :label="language==0?'下载模板':'Download template'"> |
| 6 | <el-link href="/file/sportsmanTemplate.xlsx" type="primary" target="_blank">人员模板</el-link> | 6 | <el-link href="/file/UserImport-ch.xlsx" v-if="language==0" type="primary" target="_blank">人员模板</el-link> |
| 7 | <el-link href="/file/UserImport-en.xlsx" v-else type="primary" target="_blank">Personnel template</el-link> | ||
| 7 | </el-form-item> | 8 | </el-form-item> |
| 8 | 9 | ||
| 9 | <el-form-item label="上传模板" prop="discount"> | 10 | <el-form-item :label="language==0?'上传模板':'Upload template'" prop="discount"> |
| 10 | <fileImport ref="upload" name="excel" :action="action" @uploadSuccess="uploadSuccess" /> | 11 | <fileImport ref="upload" name="excel" :action="action" @uploadSuccess="uploadSuccess" /> |
| 11 | </el-form-item> | 12 | </el-form-item> |
| 12 | </el-form> | 13 | </el-form> |
| ... | @@ -25,13 +26,17 @@ import { ElMessage, ElMessageBox } from 'element-plus' | ... | @@ -25,13 +26,17 @@ import { ElMessage, ElMessageBox } from 'element-plus' |
| 25 | const { proxy } = getCurrentInstance() | 26 | const { proxy } = getCurrentInstance() |
| 26 | import useUserStore from '@/store/modules/user' | 27 | import useUserStore from '@/store/modules/user' |
| 27 | const emit = defineEmits(['submitForm']) | 28 | const emit = defineEmits(['submitForm']) |
| 28 | 29 | import cache from "@/plugins/cache" | |
| 30 | const language = ref(cache.local.get('language') || 0) | ||
| 29 | const action = ref('') | 31 | const action = ref('') |
| 30 | const accept = ref('.xlsx') | 32 | const accept = ref('.xlsx') |
| 31 | const title = ref('') | 33 | const title = ref('') |
| 32 | const show = ref(false) | 34 | const show = ref(false) |
| 33 | const userStore = useUserStore() | 35 | const userStore = useUserStore() |
| 34 | const groupId = useUserStore().group.id || 0 | 36 | let groupId = 0 |
| 37 | if(useUserStore().group){ | ||
| 38 | groupId = useUserStore().group.id | ||
| 39 | } | ||
| 35 | function uploadSuccess(res) { | 40 | function uploadSuccess(res) { |
| 36 | console.log(res) | 41 | console.log(res) |
| 37 | cancel() | 42 | cancel() | ... | ... |
| ... | @@ -78,7 +78,7 @@ | ... | @@ -78,7 +78,7 @@ |
| 78 | </el-row> | 78 | </el-row> |
| 79 | <el-row> | 79 | <el-row> |
| 80 | <el-col :span="2" :offset="22"> | 80 | <el-col :span="2" :offset="22"> |
| 81 | <el-button type="text" class="fr" @click="editRank(r)">编辑</el-button> | 81 | <el-button type="primary" link class="fr" @click="editRank(r)">编辑</el-button> |
| 82 | </el-col> | 82 | </el-col> |
| 83 | </el-row> | 83 | </el-row> |
| 84 | </div> | 84 | </div> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div class="border-info" style="margin: 20px"> | 2 | <div class="border-info" style="margin: 20px" v-loading="loading"> |
| 3 | <el-row v-if="language==0"> | 3 | <el-row v-if="language==0"> |
| 4 | <el-col :lg="8"><div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col> | 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> | 5 | <el-col :lg="8"><div class="item"><label>赛事类型</label>{{matchInfo.name}}</div></el-col> |
| ... | @@ -18,17 +18,30 @@ | ... | @@ -18,17 +18,30 @@ |
| 18 | </template> | 18 | </template> |
| 19 | 19 | ||
| 20 | <script setup> | 20 | <script setup> |
| 21 | import {onMounted} from "@vue/runtime-core"; | ||
| 22 | import * as match from "@/apiPc/match"; | ||
| 23 | import cache from "@/plugins/cache"; | ||
| 24 | |||
| 25 | const language = ref(cache.local.get('language') || 0) | ||
| 21 | const props = defineProps({ | 26 | const props = defineProps({ |
| 22 | matchInfo: { | 27 | matchId: { |
| 23 | type: Object, | 28 | type: String, |
| 24 | required: true | 29 | required: true |
| 25 | }, | ||
| 26 | language: { | ||
| 27 | type: Number, | ||
| 28 | required: true, | ||
| 29 | default: 0 | ||
| 30 | } | 30 | } |
| 31 | }) | 31 | }) |
| 32 | const matchInfo = ref({}) | ||
| 33 | const loading = ref(false) | ||
| 34 | onMounted(()=>{ | ||
| 35 | loading.value = true | ||
| 36 | if(props.matchId) | ||
| 37 | getMatch() | ||
| 38 | }) | ||
| 39 | const getMatch = () => { | ||
| 40 | match.getMatchById({ id: props.matchId }).then(res => { | ||
| 41 | matchInfo.value = res.data | ||
| 42 | loading.value = false | ||
| 43 | }) | ||
| 44 | } | ||
| 32 | </script> | 45 | </script> |
| 33 | 46 | ||
| 34 | <style scoped lang="scss"> | 47 | <style scoped lang="scss"> | ... | ... |
| ... | @@ -98,7 +98,7 @@ | ... | @@ -98,7 +98,7 @@ |
| 98 | </div> | 98 | </div> |
| 99 | </el-collapse-item> | 99 | </el-collapse-item> |
| 100 | </el-collapse> | 100 | </el-collapse> |
| 101 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/> | 101 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/> |
| 102 | </div> | 102 | </div> |
| 103 | </div> | 103 | </div> |
| 104 | <div style="padding: 0 20px 20px" v-else> | 104 | <div style="padding: 0 20px 20px" v-else> |
| ... | @@ -200,7 +200,7 @@ | ... | @@ -200,7 +200,7 @@ |
| 200 | </div> | 200 | </div> |
| 201 | </el-collapse-item> | 201 | </el-collapse-item> |
| 202 | </el-collapse> | 202 | </el-collapse> |
| 203 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/> | 203 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/> |
| 204 | </div> | 204 | </div> |
| 205 | </div> | 205 | </div> |
| 206 | </template> | 206 | </template> | ... | ... |
| ... | @@ -24,7 +24,7 @@ | ... | @@ -24,7 +24,7 @@ |
| 24 | </el-timeline-item> | 24 | </el-timeline-item> |
| 25 | </el-timeline> | 25 | </el-timeline> |
| 26 | 26 | ||
| 27 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="matchData.cptScheduleList?.length==0" description="" /> | 27 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="matchData.cptScheduleList?.length==0" description="" /> |
| 28 | 28 | ||
| 29 | </div> | 29 | </div> |
| 30 | </template> | 30 | </template> | ... | ... |
| ... | @@ -16,7 +16,7 @@ | ... | @@ -16,7 +16,7 @@ |
| 16 | </el-radio> | 16 | </el-radio> |
| 17 | </div> | 17 | </div> |
| 18 | </el-radio-group> | 18 | </el-radio-group> |
| 19 | <el-empty v-if="projectList.length==0" image="@/assets/img/order_no.png" image-size="228" description="无可选项目" /> | 19 | <el-empty v-if="projectList.length==0" image="@/assets/img/order_no.png" :image-size="228" description="无可选项目" /> |
| 20 | 20 | ||
| 21 | </el-form-item> | 21 | </el-form-item> |
| 22 | </el-col> | 22 | </el-col> | ... | ... |
| 1 | <template> | ||
| 2 | <el-table :data="list" border style="width: 100%" v-loading="loading"> | ||
| 3 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="personInfo.countryName" min-width="100"/> | ||
| 4 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="personInfo.xing" min-width="100"/> | ||
| 5 | <el-table-column :label="language==0?'名':'First Name'" prop="personInfo.ming" min-width="100"/> | ||
| 6 | <el-table-column :label="language==0?'短名':'Short Name'" prop="personInfo.shortName" min-width="110"/> | ||
| 7 | <el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr"/> | ||
| 8 | <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/> | ||
| 9 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="personInfo.birth" width="110"/> | ||
| 10 | <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="personInfo.phone" width="120"/> | ||
| 11 | <el-table-column :label="language==0?'邮箱':'E-mail'" prop="personInfo.email" width="150"/> | ||
| 12 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="personInfo.idcTypeStr"/> | ||
| 13 | <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="personInfo.idcCode" width="200"/> | ||
| 14 | <el-table-column :label="language==0?'会员角色':'Role'" width="150"> | ||
| 15 | <template #default="scope"> | ||
| 16 | <div class="esp"> | ||
| 17 | <span v-for="item in scope.row.personInfo.label?.split(',')" :key="item.id" class="text-primary"> | ||
| 18 | <span v-if="item==='0'" class="ml5">{{ language == 0 ? '运动员' : 'athletes' }}</span> | ||
| 19 | <span v-if="item==='1'" class="ml5">{{ language == 0 ? '教练' : 'coach' }}</span> | ||
| 20 | <span v-if="item==='2'" class="ml5">{{ language == 0 ? '领队' : 'team leader' }}</span> | ||
| 21 | <span v-if="item==='3'" class="ml5">{{ language == 0 ? '队医' : 'team doctor' }}</span> | ||
| 22 | <span v-if="item==='4'" class="ml5">{{ language == 0 ? '翻译' : 'translator' }}</span> | ||
| 23 | <span v-if="item==='5'" class="ml5">{{ language == 0 ? '官员' : 'official' }}</span> | ||
| 24 | <span v-if="item==='6'" class="ml5">{{ language == 0 ? '其他' : 'other' }}</span> | ||
| 25 | </span> | ||
| 26 | </div> | ||
| 27 | </template> | ||
| 28 | </el-table-column> | ||
| 29 | <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="personInfo.address" min-width="140"/> | ||
| 30 | |||
| 31 | <el-table-column :label="language==0?'报项':'Entries'" min-width="300" :fixed="hasAction?false:'right'"> | ||
| 32 | <template #default="props"> | ||
| 33 | <ol> | ||
| 34 | <li v-for="s in props.row.signInfo"> | ||
| 35 | {{ s.cptProjectName }} | ||
| 36 | {{ s.cptGroupName }}{{ s.cptLevelName }} | ||
| 37 | <span v-show="s.cptSonLevelName">[{{ s.cptSonLevelName }}]</span> | ||
| 38 | <span v-show="s.zu">-{{ s.zu }}</span> | ||
| 39 | <!-- <el-button type="text" @click="editThis(s)">{{ language == 0 ? '修改' : 'Edit' }}</el-button>--> | ||
| 40 | <!-- <el-button type="text" @click="editMates(s)">更换队友</el-button>--> | ||
| 41 | <!-- <el-button type="text" @click="removeThis(s.id)">{{ language == 0 ? '删除' : 'Delete' }}</el-button>--> | ||
| 42 | </li> | ||
| 43 | </ol> | ||
| 44 | </template> | ||
| 45 | </el-table-column> | ||
| 46 | <el-table-column :fixed="hasAction?false:'right'" :label="language==0?'保险费':'Premium'" prop="insuranceFee"> | ||
| 47 | <template #default="scope"> | ||
| 48 | <span class="text-primary">¥{{ scope.row.insuranceFee }}</span> | ||
| 49 | </template> | ||
| 50 | </el-table-column> | ||
| 51 | <!-- 补充信息--> | ||
| 52 | <el-table-column v-for="(e,index) in extraTableHead" :key="index" :label="e" min-width="110" align="center"> | ||
| 53 | <template #default="scope"> | ||
| 54 | <el-link v-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='2'" | ||
| 55 | :herf="scope.row.signInfo[0].extraPersonInfoMapList[index].value.url"> | ||
| 56 | {{ scope.row.signInfo[0].extraPersonInfoMapList[index].value.name }} | ||
| 57 | </el-link> | ||
| 58 | <img v-else-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='3'" style="width: 50px;" | ||
| 59 | :src="scope.row.signInfo[0].extraPersonInfoMapList[index].value.url||scope.row.signInfo[0].extraPersonInfoMapList[index].value"> | ||
| 60 | <span v-else>{{ scope.row.signInfo[0].extraPersonInfoMapList[index]?.value }}</span> | ||
| 61 | </template> | ||
| 62 | </el-table-column> | ||
| 63 | <el-table-column v-if="hasAction" :label="language==0?'操作':'Actions'" fixed="right" width="150" align="center"> | ||
| 64 | <template #default="scope"> | ||
| 65 | <el-button v-if="extraform&&extraform.length>0" type="primary" link @click="goPersonInfo(scope.row)"> | ||
| 66 | <span v-if="scope.row.extraPersonInfo">{{ language == 0 ? '修改' : 'Edit' }}</span> | ||
| 67 | <span v-else class="red">{{ language == 0?'完善补充信息':'Additional Information' }}</span> | ||
| 68 | </el-button> | ||
| 69 | </template> | ||
| 70 | </el-table-column> | ||
| 71 | </el-table> | ||
| 72 | |||
| 73 | </template> | ||
| 74 | |||
| 75 | <script setup> | ||
| 76 | import * as match from "@/apiPc/match"; | ||
| 77 | import {onMounted} from "@vue/runtime-core"; | ||
| 78 | import {watch} from "vue"; | ||
| 79 | |||
| 80 | const emit = defineEmits(['editExtra']) | ||
| 81 | const props = defineProps({ | ||
| 82 | matchId: { | ||
| 83 | type: String, | ||
| 84 | required: true | ||
| 85 | }, | ||
| 86 | list: { | ||
| 87 | type: Array, | ||
| 88 | required: true | ||
| 89 | }, | ||
| 90 | extraform: { | ||
| 91 | type: Object, | ||
| 92 | required: false | ||
| 93 | }, | ||
| 94 | hasAction: { | ||
| 95 | type: Boolean, | ||
| 96 | required: false, | ||
| 97 | default: true | ||
| 98 | } | ||
| 99 | }) | ||
| 100 | import cache from "@/plugins/cache"; | ||
| 101 | const language = ref(cache.local.get('language') || 0) | ||
| 102 | const extraTableHead = ref([]) | ||
| 103 | const loading = ref(true) | ||
| 104 | getTableHead() | ||
| 105 | const goPersonInfo = (row) => { | ||
| 106 | emit('editExtra', row) | ||
| 107 | } | ||
| 108 | function getTableHead() { | ||
| 109 | match.getCptExtraInfo(props.matchId).then(res => { | ||
| 110 | extraTableHead.value = res.data | ||
| 111 | loading.value = false | ||
| 112 | }) | ||
| 113 | } | ||
| 114 | </script> | ||
| 115 | |||
| 116 | <style scoped> | ||
| 117 | |||
| 118 | </style> |
| 1 | <template> | ||
| 2 | <el-steps :active="activeStep" align-center> | ||
| 3 | <el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" /> | ||
| 4 | <el-step :title="language==0?'选手报名':'Participant Registration'" /> | ||
| 5 | <el-step :title="language==0?'提交审核':'Submit for review'" /> | ||
| 6 | </el-steps> | ||
| 7 | </template> | ||
| 8 | |||
| 9 | <script setup> | ||
| 10 | import cache from "@/plugins/cache"; | ||
| 11 | const language = ref(cache.local.get('language') || 0) | ||
| 12 | const props = defineProps({ | ||
| 13 | activeStep: { | ||
| 14 | type: Number, | ||
| 15 | required: true | ||
| 16 | } | ||
| 17 | }) | ||
| 18 | </script> | ||
| 19 | |||
| 20 | <style scoped> | ||
| 21 | |||
| 22 | </style> |
| ... | @@ -45,7 +45,7 @@ | ... | @@ -45,7 +45,7 @@ |
| 45 | </div> | 45 | </div> |
| 46 | </div> | 46 | </div> |
| 47 | 47 | ||
| 48 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="list?.length == 0" description=" "/> | 48 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="list?.length == 0" description=" "/> |
| 49 | </template> | 49 | </template> |
| 50 | 50 | ||
| 51 | <script setup> | 51 | <script setup> | ... | ... |
| ... | @@ -8,15 +8,12 @@ | ... | @@ -8,15 +8,12 @@ |
| 8 | </template> | 8 | </template> |
| 9 | 9 | ||
| 10 | <script setup> | 10 | <script setup> |
| 11 | import cache from "@/plugins/cache"; | ||
| 12 | const language = ref(cache.local.get('language') || 0) | ||
| 11 | const props = defineProps({ | 13 | const props = defineProps({ |
| 12 | activeStep: { | 14 | activeStep: { |
| 13 | type: Number, | 15 | type: Number, |
| 14 | required: true | 16 | required: true |
| 15 | }, | ||
| 16 | language: { | ||
| 17 | type: Number, | ||
| 18 | required: true, | ||
| 19 | default: 0 | ||
| 20 | } | 17 | } |
| 21 | }) | 18 | }) |
| 22 | </script> | 19 | </script> | ... | ... |
src/viewsPc/match/components/zu-table.vue
0 → 100644
| 1 | <template> | ||
| 2 | <el-table :data="list" border style="width: 100%"> | ||
| 3 | <el-table-column :label="language==0?'组别代码':'Group code'" width="120px" prop="zuName"/> | ||
| 4 | <el-table-column :label="language==0?'组别':'Group'" prop="project.name"/> | ||
| 5 | <el-table-column :label="language==0?'舞种':'Dance Style'" width="120px" prop="project.danceType"/> | ||
| 6 | <el-table-column :label="language==0?'参赛说明':'Participation Instructions'" prop="project.remarks"/> | ||
| 7 | <el-table-column :label="language==0?'参赛运动员':'Participating athletes'" width="120px"> | ||
| 8 | <template #default="scope"> | ||
| 9 | <div> | ||
| 10 | <span v-for="s in scope.row.athletes">{{ s.name }},</span> | ||
| 11 | </div> | ||
| 12 | </template> | ||
| 13 | </el-table-column> | ||
| 14 | <el-table-column :label="language==0?'报名费':'Registration Fee'" width="120px" prop=""> | ||
| 15 | <template #default="scope"> | ||
| 16 | <div class="text-primary"> | ||
| 17 | ¥{{ scope.row.project.serviceFee }} | ||
| 18 | </div> | ||
| 19 | </template> | ||
| 20 | </el-table-column> | ||
| 21 | <el-table-column v-if="hasAction" :label="language==0?'操作':'Actions'" fixed="right" width="150" align="center"> | ||
| 22 | <template #default="scope"> | ||
| 23 | <el-button type="primary" link @click="remove(scope.row.signId)"> | ||
| 24 | {{language == 0 ? '删除' : 'Delete' }} | ||
| 25 | </el-button> | ||
| 26 | |||
| 27 | </template> | ||
| 28 | </el-table-column> | ||
| 29 | </el-table> | ||
| 30 | |||
| 31 | </template> | ||
| 32 | |||
| 33 | <script setup> | ||
| 34 | const emit = defineEmits(['delete']) | ||
| 35 | const props = defineProps({ | ||
| 36 | list: { | ||
| 37 | type: Array, | ||
| 38 | required: true | ||
| 39 | }, | ||
| 40 | hasAction:{ | ||
| 41 | type: Boolean, | ||
| 42 | required: false, | ||
| 43 | default: true | ||
| 44 | } | ||
| 45 | }) | ||
| 46 | import cache from "@/plugins/cache"; | ||
| 47 | const language = ref(cache.local.get('language') || 0) | ||
| 48 | const remove = (id) => { | ||
| 49 | emit('delete', id) | ||
| 50 | } | ||
| 51 | </script> | ||
| 52 | |||
| 53 | <style scoped> | ||
| 54 | |||
| 55 | </style> |
| ... | @@ -111,7 +111,7 @@ | ... | @@ -111,7 +111,7 @@ |
| 111 | </table> | 111 | </table> |
| 112 | </div> | 112 | </div> |
| 113 | 113 | ||
| 114 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/> | 114 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/> |
| 115 | </div> | 115 | </div> |
| 116 | </div> | 116 | </div> |
| 117 | <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> | 117 | <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> |
| ... | @@ -141,11 +141,11 @@ | ... | @@ -141,11 +141,11 @@ |
| 141 | </div> | 141 | </div> |
| 142 | </el-col> | 142 | </el-col> |
| 143 | </el-row> | 143 | </el-row> |
| 144 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" /> | 144 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" /> |
| 145 | </div> | 145 | </div> |
| 146 | <div v-if="menu[4].active==1"> | 146 | <div v-if="menu[4].active==1"> |
| 147 | <!-- 成绩--> | 147 | <!-- 成绩--> |
| 148 | <el-empty image="@/assets/img/order_no.png" image-size="228" description="暂无成绩" /> | 148 | <el-empty image="@/assets/img/order_no.png" :image-size="228" description="暂无成绩" /> |
| 149 | </div> | 149 | </div> |
| 150 | <div v-if="menu[5].active==1" class="pd20"> | 150 | <div v-if="menu[5].active==1" class="pd20"> |
| 151 | <div class="xzbox" v-html="matchData.signKnow"> | 151 | <div class="xzbox" v-html="matchData.signKnow"> |
| ... | @@ -195,7 +195,7 @@ const router = useRouter() | ... | @@ -195,7 +195,7 @@ const router = useRouter() |
| 195 | const { proxy } = getCurrentInstance() | 195 | const { proxy } = getCurrentInstance() |
| 196 | import * as match from '@/apiPc/match' | 196 | import * as match from '@/apiPc/match' |
| 197 | import { toRefs } from '@vueuse/shared' | 197 | import { toRefs } from '@vueuse/shared' |
| 198 | import { ElMessage } from 'element-plus' | 198 | import {dayjs, ElMessage} from 'element-plus' |
| 199 | import useUserStore from "@/store/modules/user"; | 199 | import useUserStore from "@/store/modules/user"; |
| 200 | const data = reactive({ | 200 | const data = reactive({ |
| 201 | matchData: {}, | 201 | matchData: {}, |
| ... | @@ -205,13 +205,18 @@ const data = reactive({ | ... | @@ -205,13 +205,18 @@ const data = reactive({ |
| 205 | popupGroupList:false, | 205 | popupGroupList:false, |
| 206 | menu:[{name:'赛事详情',active:1},{name:'赛事设项',active:0},{name:'日程',active:0},{name:'参赛队',active:0},{name:'成绩',active:0},{name:'报名须知',active:0}], | 206 | menu:[{name:'赛事详情',active:1},{name:'赛事设项',active:0},{name:'日程',active:0},{name:'参赛队',active:0},{name:'成绩',active:0},{name:'报名须知',active:0}], |
| 207 | menu1:[{name:'分站赛',active:1},{name:'赛事详情',active:0},{name:'日程',active:0}], | 207 | menu1:[{name:'分站赛',active:1},{name:'赛事详情',active:0},{name:'日程',active:0}], |
| 208 | signDoneGroupList: [] | 208 | signDoneGroupList: [], |
| 209 | time:'' | ||
| 209 | }) | 210 | }) |
| 210 | const {matchData,matchId,groupId,activeName2,popupGroupList,menu,menu1,signDoneGroupList} = toRefs(data) | 211 | const {time,matchData,matchId,groupId,activeName2,popupGroupList,menu,menu1,signDoneGroupList} = toRefs(data) |
| 211 | const group = useUserStore().group | 212 | const group = useUserStore().group |
| 212 | const user = useUserStore().user | 213 | const user = useUserStore().user |
| 213 | onMounted(() => { | 214 | onMounted(() => { |
| 214 | groupId.value = group.id | 215 | if(group){ |
| 216 | groupId.value = group.id | ||
| 217 | } else { | ||
| 218 | groupId.value = 0 | ||
| 219 | } | ||
| 215 | match.getMaList().then((res) => { | 220 | match.getMaList().then((res) => { |
| 216 | if(route.params.id!=0){ | 221 | if(route.params.id!=0){ |
| 217 | matchId.value = route.params.id | 222 | matchId.value = route.params.id |
| ... | @@ -230,6 +235,8 @@ function getMatch(id) { | ... | @@ -230,6 +235,8 @@ function getMatch(id) { |
| 230 | if(id!=0) | 235 | if(id!=0) |
| 231 | match.getMatchById({ id: id }).then(res => { | 236 | match.getMatchById({ id: id }).then(res => { |
| 232 | matchData.value = res.data | 237 | matchData.value = res.data |
| 238 | var today = dayjs().format('YYYY-MM-DD HH:mm:ss') | ||
| 239 | time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond') | ||
| 233 | }) | 240 | }) |
| 234 | } | 241 | } |
| 235 | function getGroupListByCptId(id) { | 242 | function getGroupListByCptId(id) { |
| ... | @@ -255,8 +262,15 @@ function choseSignType() { | ... | @@ -255,8 +262,15 @@ function choseSignType() { |
| 255 | // checkIsSign().then(() => { | 262 | // checkIsSign().then(() => { |
| 256 | if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) { | 263 | if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) { |
| 257 | // 个人报名 | 264 | // 个人报名 |
| 265 | // router.push({ | ||
| 266 | // path: `${matchId.value}/singleSign` | ||
| 267 | // }) | ||
| 258 | router.push({ | 268 | router.push({ |
| 259 | path: `${matchId.value}/singleSign` | 269 | name: `chooseCoach`, |
| 270 | query: { | ||
| 271 | matchId: matchId.value, | ||
| 272 | signType: matchData.value.signType | ||
| 273 | } | ||
| 260 | }) | 274 | }) |
| 261 | } | 275 | } |
| 262 | if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){ | 276 | if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){ | ... | ... |
| ... | @@ -8,13 +8,13 @@ | ... | @@ -8,13 +8,13 @@ |
| 8 | <img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)" > | 8 | <img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)" > |
| 9 | </el-col> | 9 | </el-col> |
| 10 | <el-col :lg="9" :md="12" :xl="10"> | 10 | <el-col :lg="9" :md="12" :xl="10"> |
| 11 | <h3> | 11 | <h3 class="m0"> |
| 12 | {{ matchData.name }} | 12 | {{ matchData.name }} |
| 13 | </h3> | 13 | </h3> |
| 14 | <p class="ppl"><label class="bm1">Playing Time:</label>{{matchData.beginTime?.slice(0,10)}} ~ {{ matchData.endTime?.slice(0,10) }}</p> | 14 | <p class="ppl"><label class="bm1">Playing Time:</label>{{matchData.beginTime?.slice(0,10)}} ~ {{ matchData.endTime?.slice(0,10) }}</p> |
| 15 | <p class="ppl"><label class="bm2">Event Level:</label>{{ matchData.level }}</p> | 15 | <p class="ppl"><label class="bm2">Event Level:</label>{{ matchData.level }}</p> |
| 16 | <p class="ppl"><label class="bm3">Location:</label>{{ matchData.address }}</p> | 16 | <p class="ppl" v-if="matchData.address"><label class="bm3">Location:</label>{{ matchData.address }}</p> |
| 17 | <p class="ppl"><label class="bm4">Registration Deadline:</label>{{ matchData.signEndTime?.slice(0,10) }}</p> | 17 | <p class="ppl" v-if="matchData.signEndTime"><label class="bm4">Registration Deadline:</label>{{ matchData.signEndTime?.slice(0,10) }}</p> |
| 18 | </el-col> | 18 | </el-col> |
| 19 | <el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'"> | 19 | <el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'"> |
| 20 | <p class="countDownTitle"><span>Registration deadline countdown</span></p> | 20 | <p class="countDownTitle"><span>Registration deadline countdown</span></p> |
| ... | @@ -111,7 +111,7 @@ | ... | @@ -111,7 +111,7 @@ |
| 111 | </table> | 111 | </table> |
| 112 | </div> | 112 | </div> |
| 113 | 113 | ||
| 114 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/> | 114 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/> |
| 115 | </div> | 115 | </div> |
| 116 | </div> | 116 | </div> |
| 117 | <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> | 117 | <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> |
| ... | @@ -141,11 +141,11 @@ | ... | @@ -141,11 +141,11 @@ |
| 141 | </div> | 141 | </div> |
| 142 | </el-col> | 142 | </el-col> |
| 143 | </el-row> | 143 | </el-row> |
| 144 | <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" /> | 144 | <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" /> |
| 145 | </div> | 145 | </div> |
| 146 | <div v-if="menu[4].active==1"> | 146 | <div v-if="menu[4].active==1"> |
| 147 | <!-- 成绩--> | 147 | <!-- 成绩--> |
| 148 | <el-empty image="@/assets/img/order_no.png" image-size="228" description="" /> | 148 | <el-empty image="@/assets/img/order_no.png" :image-size="228" description="" /> |
| 149 | </div> | 149 | </div> |
| 150 | <div v-if="menu[5].active==1" class="pd20"> | 150 | <div v-if="menu[5].active==1" class="pd20"> |
| 151 | <div class="xzbox" v-html="matchData.signKnow"> | 151 | <div class="xzbox" v-html="matchData.signKnow"> |
| ... | @@ -197,7 +197,7 @@ const router = useRouter() | ... | @@ -197,7 +197,7 @@ const router = useRouter() |
| 197 | const { proxy } = getCurrentInstance() | 197 | const { proxy } = getCurrentInstance() |
| 198 | import * as match from '@/apiPc/match' | 198 | import * as match from '@/apiPc/match' |
| 199 | import { toRefs } from '@vueuse/shared' | 199 | import { toRefs } from '@vueuse/shared' |
| 200 | import { ElMessage } from 'element-plus' | 200 | import {dayjs, ElMessage} from 'element-plus' |
| 201 | import useUserStore from "@/store/modules/user"; | 201 | import useUserStore from "@/store/modules/user"; |
| 202 | const user = useUserStore().user || {} | 202 | const user = useUserStore().user || {} |
| 203 | const group = useUserStore().group || {} | 203 | const group = useUserStore().group || {} |
| ... | @@ -210,11 +210,16 @@ const data = reactive({ | ... | @@ -210,11 +210,16 @@ const data = reactive({ |
| 210 | menu:[{name:'Event details',active:1},{name:'Event settings',active:0},{name:'Schedule',active:0},{name:'Participating teams',active:0}, | 210 | menu:[{name:'Event details',active:1},{name:'Event settings',active:0},{name:'Schedule',active:0},{name:'Participating teams',active:0}, |
| 211 | {name:'Achievement',active:0},{name:'Notes',active:0}], | 211 | {name:'Achievement',active:0},{name:'Notes',active:0}], |
| 212 | menu1:[{name:'Station race',active:1},{name:'Event details',active:0},{name:'Schedule',active:0}], | 212 | menu1:[{name:'Station race',active:1},{name:'Event details',active:0},{name:'Schedule',active:0}], |
| 213 | signDoneGroupList: [] | 213 | signDoneGroupList: [], |
| 214 | time:'' | ||
| 214 | }) | 215 | }) |
| 215 | const {matchData,matchId,groupId,activeName2,popupGroupList,menu,menu1,signDoneGroupList} = toRefs(data) | 216 | const {matchData,matchId,groupId,activeName2,popupGroupList,menu,menu1,signDoneGroupList,time} = toRefs(data) |
| 216 | onMounted(() => { | 217 | onMounted(() => { |
| 217 | groupId.value = group.id | 218 | if(group){ |
| 219 | groupId.value = group.id | ||
| 220 | } else { | ||
| 221 | groupId.value = 0 | ||
| 222 | } | ||
| 218 | match.getMaList().then((res) => { | 223 | match.getMaList().then((res) => { |
| 219 | if(route.params.id!=0){ | 224 | if(route.params.id!=0){ |
| 220 | matchId.value = route.params.id | 225 | matchId.value = route.params.id |
| ... | @@ -232,6 +237,8 @@ function getMatch(id) { | ... | @@ -232,6 +237,8 @@ function getMatch(id) { |
| 232 | if(id!=0) | 237 | if(id!=0) |
| 233 | match.getMatchById({ id: id }).then(res => { | 238 | match.getMatchById({ id: id }).then(res => { |
| 234 | matchData.value = res.data | 239 | matchData.value = res.data |
| 240 | var today = dayjs().format('YYYY-MM-DD HH:mm:ss') | ||
| 241 | time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond') | ||
| 235 | }) | 242 | }) |
| 236 | } | 243 | } |
| 237 | function getGroupListByCptId(id) { | 244 | function getGroupListByCptId(id) { |
| ... | @@ -257,9 +264,13 @@ function choseSignType() { | ... | @@ -257,9 +264,13 @@ function choseSignType() { |
| 257 | // checkIsSign().then(() => { | 264 | // checkIsSign().then(() => { |
| 258 | if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) { | 265 | if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) { |
| 259 | // 个人报名 | 266 | // 个人报名 |
| 260 | router.push({ | 267 | router.push({ |
| 261 | path: `${route.params.id}/singleSign` | 268 | name: `chooseCoach`, |
| 262 | }) | 269 | query: { |
| 270 | matchId: matchId.value, | ||
| 271 | signType: matchData.value.signType | ||
| 272 | } | ||
| 273 | }) | ||
| 263 | } | 274 | } |
| 264 | if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){ | 275 | if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){ |
| 265 | router.push({ | 276 | router.push({ |
| ... | @@ -289,6 +300,7 @@ function checkIsSign() { | ... | @@ -289,6 +300,7 @@ function checkIsSign() { |
| 289 | </script> | 300 | </script> |
| 290 | 301 | ||
| 291 | <style scoped lang="scss"> | 302 | <style scoped lang="scss"> |
| 303 | .m0{margin: 0;} | ||
| 292 | .indexTitle{margin: 20px 0 12px; | 304 | .indexTitle{margin: 20px 0 12px; |
| 293 | h3{ | 305 | h3{ |
| 294 | font-size: 20px; | 306 | font-size: 20px; | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -5,56 +5,18 @@ | ... | @@ -5,56 +5,18 @@ |
| 5 | <team-sign-step :language="language" :active-step="activeStep"/> | 5 | <team-sign-step :language="language" :active-step="activeStep"/> |
| 6 | </el-card> | 6 | </el-card> |
| 7 | <el-card :body-style="{ padding: '0px' }"> | 7 | <el-card :body-style="{ padding: '0px' }"> |
| 8 | <match-info-row :matchInfo="matchInfo" :language="language"/> | 8 | <match-info-row v-if="matchId" :match-id="matchId"/> |
| 9 | <group-info-row :groupInfo="groupInfo" :language="language"/> | 9 | <group-info-row /> |
| 10 | <coach-info-row :names="names" :language="language"/> | 10 | <coach-info-row v-if="matchId" :match-id="matchId" :language="language"/> |
| 11 | <div style="margin: 20px"> | 11 | <div style="margin: 20px"> |
| 12 | 12 | ||
| 13 | <div class="mt20"> | 13 | <div class="mt20"> |
| 14 | <div class="leftboderTT">参赛人员清单</div> | 14 | <div class="leftboderTT">{{ language==0?'参赛人员清单':'Participant List' }}</div> |
| 15 | <el-table :data="tableData" border style="width: 100%" class="mt20" :span-method="arraySpanMethod"> | 15 | <sign-info-table class="mt20" :match-id="matchId" :list="signInfoList" :hasAction="false"/> |
| 16 | <el-table-column label="所属国家"/> | ||
| 17 | <el-table-column prop="name" label="姓氏" width="180" align="center"></el-table-column> | ||
| 18 | <el-table-column label="名"/> | ||
| 19 | <el-table-column label="短名"/> | ||
| 20 | <el-table-column prop="sex" label="性别" width="180" align="center"></el-table-column> | ||
| 21 | <el-table-column prop="age" label="年龄" width="180" align="center"></el-table-column> | ||
| 22 | <el-table-column label="出生日期" align="center"/> | ||
| 23 | <el-table-column prop="phone" label="手机号码" width="180" align="center"></el-table-column> | ||
| 24 | <el-table-column label="邮箱"/> | ||
| 25 | <el-table-column label="证件类型" align="center"/> | ||
| 26 | <el-table-column label="证件号码"/> | ||
| 27 | <el-table-column label="报项" fixed="right"> | ||
| 28 | <template #default="scope"> | ||
| 29 | <ol> | ||
| 30 | <li v-for="item in scope.row.items" :key="item.id">{{ item.name }}</li> | ||
| 31 | </ol> | ||
| 32 | </template> | ||
| 33 | </el-table-column> | ||
| 34 | <el-table-column label="保险费" fixed="right" align="center"> | ||
| 35 | <template #default="scope"> | ||
| 36 | <span class="text-primary">¥{{ scope.row.signFee }}/人</span> | ||
| 37 | </template> | ||
| 38 | </el-table-column> | ||
| 39 | </el-table> | ||
| 40 | |||
| 41 | </div> | 16 | </div> |
| 42 | <div class="mt20"> | 17 | <div class="mt20"> |
| 43 | <div class="leftboderTT">设项报名清单</div> | 18 | <div class="leftboderTT">{{ language==0?'设项报名清单':'Event Registration List' }}</div> |
| 44 | <!-- 报项列表--> | 19 | <zu-table class="mt20" :list="zuTableList" :hasAction="false"/> |
| 45 | <el-table :data="tableData" border style="width: 100%" class="mt20"> | ||
| 46 | <el-table-column label="组别代码" align="center"/> | ||
| 47 | <el-table-column label="组别" align="center"/> | ||
| 48 | <el-table-column label="舞种" align="center"/> | ||
| 49 | <el-table-column label="参赛说明"/> | ||
| 50 | <el-table-column label="参赛运动员"/> | ||
| 51 | <el-table-column label="补充信息"/> | ||
| 52 | <el-table-column label="报名费" align="center"> | ||
| 53 | <template #default="scope"> | ||
| 54 | <span class="text-primary">¥{{ scope.row.signFee }}/人</span> | ||
| 55 | </template> | ||
| 56 | </el-table-column> | ||
| 57 | </el-table> | ||
| 58 | </div> | 20 | </div> |
| 59 | </div> | 21 | </div> |
| 60 | 22 | ||
| ... | @@ -64,20 +26,22 @@ | ... | @@ -64,20 +26,22 @@ |
| 64 | <el-row class="priceBar"> | 26 | <el-row class="priceBar"> |
| 65 | <el-col :lg="16" :xs="24" class="pd20"> | 27 | <el-col :lg="16" :xs="24" class="pd20"> |
| 66 | <div class="flex"> | 28 | <div class="flex"> |
| 67 | <div class="item"><label>报名费:</label><span>¥3000</span></div> | 29 | <div class="item"><label>{{ language==0?'报名费':'Registration Fee' }}:</label><span>¥{{form.cptRegistrationFee?.totalFee}}</span></div> |
| 68 | <div class="item"><label>保险费:</label><span>¥3000</span></div> | 30 | <div class="item"><label>{{ language==0?'保险费':'Insurance Fee' }}:</label><span>¥{{form.cptInsuranceFee?.totalFee}}</span></div> |
| 69 | <div class="item"><label>费用总计:</label><span>¥6000</span></div> | 31 | <div class="item"><label>{{ language==0?'费用总计':'Total Cost' }}:</label><span>¥{{form.totalFee}}</span></div> |
| 70 | </div> | 32 | </div> |
| 71 | </el-col> | 33 | </el-col> |
| 72 | <el-col :lg="8" :xs="24" class="text-right pd20"> | 34 | <el-col :lg="8" :xs="24" class="text-right pd20"> |
| 73 | <el-link type="primary"><el-icon><Upload /></el-icon>导出参赛人员清单</el-link> | 35 | <el-link type="primary" @click="exportSignList(1)"><el-icon><Upload /></el-icon> |
| 74 | <el-link type="primary"><el-icon><Upload /></el-icon>导出设项报名清单</el-link> | 36 | {{ language==0?'导出参赛人员清单':'Export Participant List' }}</el-link> |
| 37 | <el-link type="primary" @click="exportSignList(2)"><el-icon><Upload /></el-icon> | ||
| 38 | {{ language==0?'导出设项报名清单':'Registration Fee for Event Entry' }}</el-link> | ||
| 75 | </el-col> | 39 | </el-col> |
| 76 | </el-row> | 40 | </el-row> |
| 77 | <div class="text-center pd20"> | 41 | <div class="text-center pd20"> |
| 78 | <el-button type="primary" class="" plain round @click="goPrev()">上一步</el-button> | 42 | <el-button type="primary" class="" plain round @click="goPrev()">{{ language == 0 ? "上一步" : 'Go back' }}</el-button> |
| 79 | <el-button type="primary" class="" plain round @click="submitForm()">保存暂不提交审核</el-button> | 43 | <el-button type="primary" class="" plain round @click="submitForm(0)">{{ language==0?'保存暂不提交审核':'Save, Do Not Submit for Review Yet' }}</el-button> |
| 80 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">提交审核</el-button> | 44 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm(1)">{{ language==0?'提交审核':'Submit for review' }}</el-button> |
| 81 | </div> | 45 | </div> |
| 82 | </el-card> | 46 | </el-card> |
| 83 | </div> | 47 | </div> |
| ... | @@ -89,64 +53,117 @@ import TeamSignStep from './components/teamSignStep' | ... | @@ -89,64 +53,117 @@ import TeamSignStep from './components/teamSignStep' |
| 89 | import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row" | 53 | import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row" |
| 90 | import GroupInfoRow from "@/viewsPc/match/components/groupInfo-row" | 54 | import GroupInfoRow from "@/viewsPc/match/components/groupInfo-row" |
| 91 | import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row" | 55 | import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row" |
| 92 | 56 | import SignInfoTable from "@/viewsPc/match/components/signInfo-table" | |
| 93 | import {ref} from "vue" | 57 | import {getCurrentInstance, ref} from "vue" |
| 94 | import cache from "@/plugins/cache"; | 58 | import cache from "@/plugins/cache"; |
| 95 | import {onMounted} from "@vue/runtime-core"; | 59 | import {onMounted} from "@vue/runtime-core"; |
| 96 | import * as match from "@/apiPc/match" | 60 | import * as match from "@/apiPc/match" |
| 97 | import {useRoute, useRouter} from "vue-router"; | 61 | import {useRoute, useRouter} from "vue-router"; |
| 98 | import useUserStore from "@/store/modules/user"; | 62 | import useUserStore from "@/store/modules/user"; |
| 63 | import ZuTable from "@/viewsPc/match/components/zu-table"; | ||
| 64 | import {ElMessageBox} from "element-plus"; | ||
| 65 | import {exportCn} from "@/apiPc/match"; | ||
| 99 | const route = useRoute() | 66 | const route = useRoute() |
| 100 | const router = useRouter() | 67 | const router = useRouter() |
| 101 | const activeStep = ref(3) | 68 | const activeStep = ref(3) |
| 102 | const matchInfo = ref({}) | ||
| 103 | const groupInfo = useUserStore().group || {} | 69 | const groupInfo = useUserStore().group || {} |
| 104 | const language = ref(cache.local.get('language') || 0) | 70 | const language = ref(cache.local.get('language') || 0) |
| 105 | const groupId = ref() | 71 | const groupId = ref() |
| 106 | const form = ref({}) | 72 | const form = ref({}) |
| 107 | const matchId = ref() | 73 | const matchId = ref(route.query.matchId) |
| 108 | const names = ref({}) | 74 | const signInfoList = ref([]) |
| 75 | const zuTableList = ref([]) | ||
| 76 | const {proxy} = getCurrentInstance() | ||
| 109 | onMounted(()=>{ | 77 | onMounted(()=>{ |
| 110 | console.log(route.query) | 78 | // console.log(route.query) |
| 111 | groupId.value = route.query.groupId || 0 | ||
| 112 | matchId.value = route.query.matchId | 79 | matchId.value = route.query.matchId |
| 113 | getMatch() | 80 | groupId.value = route.query.groupId || 0 |
| 114 | getFee() | 81 | getSignList() |
| 115 | if(groupId.value!=0){ | 82 | getFee(groupId.value) |
| 116 | tuandui() | ||
| 117 | } else { | ||
| 118 | geren() | ||
| 119 | } | ||
| 120 | }) | 83 | }) |
| 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 | 84 | ||
| 132 | function tuandui() { | 85 | |
| 133 | match.getChooseDoneGroupCoachs(matchId.value, groupId.value).then(res => { | 86 | function getSignList() { |
| 134 | names.value = res.data | 87 | match.getMySignInfoList({ |
| 88 | cptId: matchId.value, | ||
| 89 | groupId: groupId.value | ||
| 90 | }).then(res=>{ | ||
| 91 | signInfoList.value = res.data.singleData | ||
| 92 | zuTableList.value = res.data.zuData | ||
| 135 | }) | 93 | }) |
| 136 | } | 94 | } |
| 137 | const goPrev = () => { | 95 | const goPrev = () => { |
| 138 | router.go(-1) | 96 | // router.go(-1) |
| 97 | router.push({ | ||
| 98 | name: 'chooseSportsman', | ||
| 99 | query: { | ||
| 100 | matchId: matchId.value, | ||
| 101 | groupId: groupId.value | ||
| 102 | } | ||
| 103 | }) | ||
| 139 | } | 104 | } |
| 140 | const getFee = () => { | 105 | const getFee = (entryId) => { |
| 141 | console.log(groupId.value) | ||
| 142 | |||
| 143 | match.getTotalFee({ | 106 | match.getTotalFee({ |
| 144 | entryId: groupId.value, | 107 | entryId: entryId, |
| 145 | cptId: matchId.value | 108 | cptId: matchId.value |
| 146 | }).then(res => { | 109 | }).then(res => { |
| 147 | form.value = res.data | 110 | form.value = res.data |
| 148 | }) | 111 | }) |
| 149 | } | 112 | } |
| 113 | const submitForm = (n) => { | ||
| 114 | if(n==0){ | ||
| 115 | ElMessageBox.confirm(`您当前的操作为暂存,并不是提交审核,必须在报名截止时间XXXX-XX-XX之前完成提交。\n` + | ||
| 116 | '\n' + | ||
| 117 | '您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。','提示',{ | ||
| 118 | confirmButtonText: '去个人中心', | ||
| 119 | cancelButtonText: '知道了', | ||
| 120 | type: 'warning' | ||
| 121 | }).then((res)=>{ | ||
| 122 | console.log(res) | ||
| 123 | router.push({name: 'myMatch'}) | ||
| 124 | }) | ||
| 125 | return | ||
| 126 | } | ||
| 127 | match.commitSign({ | ||
| 128 | groupId: groupId.value, | ||
| 129 | cptId: matchId.value | ||
| 130 | }).then(res=>{ | ||
| 131 | router.push({ | ||
| 132 | name:`commitDone`, | ||
| 133 | params: { | ||
| 134 | orderId: res.data | ||
| 135 | } | ||
| 136 | }) | ||
| 137 | }) | ||
| 138 | } | ||
| 139 | function exportSignList(n) { | ||
| 140 | var obj = { | ||
| 141 | cptId: matchId.value, | ||
| 142 | groupId: groupId.value, | ||
| 143 | type:n | ||
| 144 | } | ||
| 145 | var fileName | ||
| 146 | if(language.value==0){ | ||
| 147 | if(n==1){ | ||
| 148 | fileName = '参赛人员清单' | ||
| 149 | }else { | ||
| 150 | fileName = '设项报名清单' | ||
| 151 | } | ||
| 152 | proxy.download('/league/sign/exportCn', { | ||
| 153 | ...obj | ||
| 154 | }, `${fileName}_${new Date().getTime()}.xlsx`) | ||
| 155 | } else { | ||
| 156 | if(n==1){ | ||
| 157 | fileName = 'Participant List' | ||
| 158 | }else { | ||
| 159 | fileName = 'Registration Fee for Event Entry' | ||
| 160 | } | ||
| 161 | proxy.download('/league/sign/exportEn', { | ||
| 162 | ...obj | ||
| 163 | }, `${fileName}_${new Date().getTime()}.xlsx`) | ||
| 164 | } | ||
| 165 | |||
| 166 | } | ||
| 150 | </script> | 167 | </script> |
| 151 | 168 | ||
| 152 | <style scoped lang="scss"> | 169 | <style scoped lang="scss"> | ... | ... |
| ... | @@ -7,7 +7,7 @@ | ... | @@ -7,7 +7,7 @@ |
| 7 | </el-card> | 7 | </el-card> |
| 8 | <div class="h20"></div> | 8 | <div class="h20"></div> |
| 9 | <div class="panel" style="box-shadow: var(--el-box-shadow)"> | 9 | <div class="panel" style="box-shadow: var(--el-box-shadow)"> |
| 10 | <match-info-row :matchInfo="matchInfo" :language="language"/> | 10 | <match-info-row :match-id="cptId" :language="language"/> |
| 11 | <div class="h20"></div> | 11 | <div class="h20"></div> |
| 12 | <el-form ref="ruleFormRef" label-width="120px" class="signForm" | 12 | <el-form ref="ruleFormRef" label-width="120px" class="signForm" |
| 13 | :model="form" :rules="rules" | 13 | :model="form" :rules="rules" |
| ... | @@ -108,8 +108,8 @@ const data = reactive({ | ... | @@ -108,8 +108,8 @@ const data = reactive({ |
| 108 | enBo:{} | 108 | enBo:{} |
| 109 | }, | 109 | }, |
| 110 | form: {}, | 110 | form: {}, |
| 111 | groupId: 0, | 111 | groupId: route.query.groupId||0, |
| 112 | cptId: 0, | 112 | cptId: route.query.matchId||0, |
| 113 | signType: false, | 113 | signType: false, |
| 114 | regionsList: [], | 114 | regionsList: [], |
| 115 | participantsInfoArr: [], | 115 | participantsInfoArr: [], |
| ... | @@ -143,9 +143,7 @@ const uploadUrl = ref('/upload/upLoadToFileServer') | ... | @@ -143,9 +143,7 @@ const uploadUrl = ref('/upload/upLoadToFileServer') |
| 143 | 143 | ||
| 144 | onMounted(() => { | 144 | onMounted(() => { |
| 145 | // 获取团体信息 | 145 | // 获取团体信息 |
| 146 | groupId.value = route.query.groupId | ||
| 147 | getGroupInfo() | 146 | getGroupInfo() |
| 148 | cptId.value = route.query.matchId | ||
| 149 | signType.value = route.query.signType | 147 | signType.value = route.query.signType |
| 150 | 148 | ||
| 151 | getRegionsList() | 149 | getRegionsList() | ... | ... |
| ... | @@ -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="language==0?'创建账号':'create an account'"/> |
| 9 | <el-step title="注册完成"/> | 9 | <el-step :title="language==0?'注册完成':'stered successfully'" /> |
| 10 | </el-steps> | 10 | </el-steps> |
| 11 | </el-card> | 11 | </el-card> |
| 12 | 12 | ||
| ... | @@ -14,37 +14,53 @@ | ... | @@ -14,37 +14,53 @@ |
| 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" | 17 | <el-form class="d-form" size="large" :label-width="language==0?120:180" |
| 18 | style="max-width: 500px;margin: auto"> | 18 | style="max-width: 500px;margin: auto"> |
| 19 | <el-form-item label="WDSF卡号" required> | 19 | <el-form-item :label="language==0?'WDSF卡号':'WDSF'" required> |
| 20 | <el-input type="text" v-model="form.WDSF" @change="resetCode(0)" @blur="verifyCode"> | 20 | <el-input type="text" v-model="form.card" @change="resetCode(0)" @blur="verifyCode"> |
| 21 | <template #append> | 21 | <template #append> |
| 22 | <el-button type="primary" plain style="width: 110px" @click="checkwdsf"> | 22 | <el-button type="primary" plain style="width: 110px" @click="checkCard"> |
| 23 | <span>校验卡号</span> | 23 | <el-icon v-if="checkStatus" size="16" color="#67C23A"><CircleCheckFilled /></el-icon> |
| 24 | <span v-else>{{ language==0?'校验卡号':'Check Code' }}</span> | ||
| 24 | </el-button> | 25 | </el-button> |
| 25 | </template> | 26 | </template> |
| 26 | </el-input> | 27 | </el-input> |
| 28 | |||
| 27 | </el-form-item> | 29 | </el-form-item> |
| 28 | <el-form-item label="手机/邮箱" required> | 30 | <el-form-item :label="language==0?'手机/邮箱':'E-mail / Phone number'" required> |
| 29 | <el-input type="text" v-model="form.account" @change="resetCode(1)" @blur="verifyCode"/> | 31 | <el-input type="text" v-model="form.account" @change="resetCode(1)" @blur="verifyCode"/> |
| 30 | </el-form-item> | 32 | </el-form-item> |
| 31 | <el-form-item label="验证码" required> | 33 | <el-form-item :label="language==0?'验证码':'Code'" required> |
| 32 | <el-input v-model="form.code"> | 34 | <el-input v-model="form.code"> |
| 33 | <template #append> | 35 | <template #append> |
| 34 | <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg"> | 36 | <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg"> |
| 35 | <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false"> | 37 | <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false"> |
| 36 | {{ totalSeconds }} 秒 | 38 | {{ totalSeconds }} {{ language==0?'秒':'s' }} |
| 37 | </count-down> | 39 | </count-down> |
| 38 | <span v-else>发送验证码</span> | 40 | <span v-else>{{ language==0?'发送验证码':'Send code' }}</span> |
| 39 | </el-button> | 41 | </el-button> |
| 40 | </template> | 42 | </template> |
| 41 | </el-input> | 43 | </el-input> |
| 42 | </el-form-item> | 44 | </el-form-item> |
| 45 | <div class="h30"></div> | ||
| 46 | <div class="leftboderTT">{{ language == 0 ? '登录密码' : 'Password' }} <span | ||
| 47 | v-if="language==0">(登录时需要验证,保护账户信息)</span></div> | ||
| 48 | <div class="h20"></div> | ||
| 49 | <el-form-item :label="language==0?'密码':'Password'" required> | ||
| 50 | <el-input type="password" show-password v-model="form.password" | ||
| 51 | :placeholder="language==0?'6-16位密码。区分大小写':''"/> | ||
| 52 | </el-form-item> | ||
| 53 | <el-form-item :label="language==0?'确认密码':'Confirm Password'" required> | ||
| 54 | <el-input type="password" show-password v-model="form.confirmPassword" @blur="vconfirmPassword" | ||
| 55 | :placeholder="language==0?'再次输入密码':'Confirm Password'"/> | ||
| 56 | </el-form-item> | ||
| 43 | </el-form> | 57 | </el-form> |
| 44 | </div> | 58 | </div> |
| 45 | <div class="text-center"> | 59 | <div class="text-center"> |
| 46 | <!-- <el-button class="primary-kx" round @click="goBack">取消</el-button>--> | 60 | <!-- <el-button class="primary-kx" round @click="goBack">取消</el-button>--> |
| 47 | <el-button type="primary" class="btn-lineG w200px" round @click="next">下一步</el-button> | 61 | <el-button type="primary" class="btn-lineG w200px" round @click="next"> |
| 62 | {{ language==0?'立即注册':'Register Now' }} | ||
| 63 | </el-button> | ||
| 48 | </div> | 64 | </div> |
| 49 | </el-card> | 65 | </el-card> |
| 50 | </div> | 66 | </div> |
| ... | @@ -66,19 +82,22 @@ import Vcode from "vue3-puzzle-vcode" | ... | @@ -66,19 +82,22 @@ import Vcode from "vue3-puzzle-vcode" |
| 66 | import { ElMessage } from 'element-plus' | 82 | import { ElMessage } from 'element-plus' |
| 67 | import CountDown from '@chenfengyuan/vue-countdown' | 83 | import CountDown from '@chenfengyuan/vue-countdown' |
| 68 | import cache from '@/plugins/cache' | 84 | import cache from '@/plugins/cache' |
| 85 | import {checkWdsf, getCaptchaSms, registerSingle} from "@/apiPc/match"; | ||
| 86 | import {setToken} from "@/utils/auth"; | ||
| 69 | const language = ref(cache.local.get('language') || 0) | 87 | const language = ref(cache.local.get('language') || 0) |
| 70 | 88 | ||
| 71 | const data = reactive({ | 89 | const data = reactive({ |
| 72 | isShow:false, | 90 | isShow:false, |
| 73 | isCodeTrue:0, | 91 | isCodeTrue:0, |
| 74 | counting:false, | 92 | counting:false, |
| 93 | checkStatus:false, | ||
| 75 | form:{}, | 94 | form:{}, |
| 76 | activeStep: 0, | 95 | activeStep: 0, |
| 77 | failVcode:'验证失败,请重试', | 96 | failVcode:'验证失败,请重试', |
| 78 | successVcode:'验证通过!', | 97 | successVcode:'验证通过!', |
| 79 | sliderText: '拖动滑块完成拼图', | 98 | sliderText: '拖动滑块完成拼图', |
| 80 | }) | 99 | }) |
| 81 | const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText} = toRefs(data) | 100 | const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText,checkStatus} = toRefs(data) |
| 82 | onMounted(()=>{ | 101 | onMounted(()=>{ |
| 83 | if(language.value==1){ | 102 | if(language.value==1){ |
| 84 | failVcode.value = 'Error!' | 103 | failVcode.value = 'Error!' |
| ... | @@ -95,14 +114,15 @@ function sendsmsMsg() { | ... | @@ -95,14 +114,15 @@ function sendsmsMsg() { |
| 95 | } | 114 | } |
| 96 | return | 115 | return |
| 97 | } | 116 | } |
| 117 | |||
| 98 | if(counting.value){ | 118 | if(counting.value){ |
| 99 | return | 119 | return |
| 100 | } else { | 120 | } else { |
| 101 | isShow.value = true | 121 | isShow.value = true |
| 102 | } | 122 | } |
| 103 | } | 123 | } |
| 104 | function checkwdsf() { | 124 | function checkCard() { |
| 105 | if(!form.value.WDSF){ | 125 | if(!form.value.card){ |
| 106 | if(language.value==0){ | 126 | if(language.value==0){ |
| 107 | ElMessage.error('请填写WDSF卡号') | 127 | ElMessage.error('请填写WDSF卡号') |
| 108 | } else { | 128 | } else { |
| ... | @@ -125,13 +145,15 @@ function codeSuccess(msg) { | ... | @@ -125,13 +145,15 @@ function codeSuccess(msg) { |
| 125 | isShow.value = false | 145 | isShow.value = false |
| 126 | isCodeTrue.value += 1 | 146 | isCodeTrue.value += 1 |
| 127 | if(isCodeTrue.value==1){ | 147 | if(isCodeTrue.value==1){ |
| 128 | 148 | checkWdsf({card:form.value.card}).then(res=>{ | |
| 149 | checkStatus.value = res.data | ||
| 150 | }) | ||
| 129 | } | 151 | } |
| 130 | if(isCodeTrue.value==2){ | 152 | if(isCodeTrue.value==2){ |
| 131 | counting.value = true | 153 | counting.value = true |
| 132 | // getCaptchaSms({account:form.value.account}).then(res=>{ | 154 | getCaptchaSms({account:form.value.account}).then(res=>{ |
| 133 | // | 155 | |
| 134 | // }) | 156 | }) |
| 135 | } | 157 | } |
| 136 | 158 | ||
| 137 | } | 159 | } |
| ... | @@ -139,10 +161,24 @@ function resetCode(n) { | ... | @@ -139,10 +161,24 @@ function resetCode(n) { |
| 139 | isCodeTrue.value = n | 161 | isCodeTrue.value = n |
| 140 | } | 162 | } |
| 141 | function next() { | 163 | function next() { |
| 142 | activeStep.value = 1 | 164 | registerSingle(form.value).then(res=>{ |
| 165 | setToken(res.data.token) | ||
| 166 | activeStep.value = 1 | ||
| 167 | }) | ||
| 143 | } | 168 | } |
| 144 | </script> | 169 | </script> |
| 145 | 170 | ||
| 146 | <style scoped> | 171 | <style scoped lang="scss"> |
| 172 | .leftboderTT { | ||
| 173 | color: var(--el-color-primary); | ||
| 174 | font-size: 16px; | ||
| 175 | font-weight: 600; | ||
| 147 | 176 | ||
| 177 | span { | ||
| 178 | color: #929AA0; | ||
| 179 | font-size: 14px; | ||
| 180 | } | ||
| 181 | } | ||
| 182 | .h20{height: 20px} | ||
| 183 | .h30{height: 30px} | ||
| 148 | </style> | 184 | </style> | ... | ... |
| ... | @@ -10,7 +10,7 @@ | ... | @@ -10,7 +10,7 @@ |
| 10 | <template #append> | 10 | <template #append> |
| 11 | <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg"> | 11 | <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg"> |
| 12 | <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false"> | 12 | <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false"> |
| 13 | {{ totalSeconds }} 秒 | 13 | {{ totalSeconds }} {{ language==0?'秒':'s' }} |
| 14 | </count-down> | 14 | </count-down> |
| 15 | <span v-else> | 15 | <span v-else> |
| 16 | {{ language==0?'发送验证码':'Send code' }} | 16 | {{ language==0?'发送验证码':'Send code' }} |
| ... | @@ -89,9 +89,9 @@ function codeSuccess(msg) { | ... | @@ -89,9 +89,9 @@ function codeSuccess(msg) { |
| 89 | isShow.value = false | 89 | isShow.value = false |
| 90 | isCodeTrue.value = true | 90 | isCodeTrue.value = true |
| 91 | counting.value = true | 91 | counting.value = true |
| 92 | // getCaptchaSms({account:form.value.account}).then(res=>{ | 92 | getCaptchaSms({account:form.value.account}).then(res=>{ |
| 93 | // | 93 | |
| 94 | // }) | 94 | }) |
| 95 | } | 95 | } |
| 96 | function resetCode() { | 96 | function resetCode() { |
| 97 | isCodeTrue.value = false | 97 | isCodeTrue.value = false | ... | ... |
| ... | @@ -167,6 +167,7 @@ const goStep3 = () => { | ... | @@ -167,6 +167,7 @@ const goStep3 = () => { |
| 167 | loading.value = true | 167 | loading.value = true |
| 168 | delete form.value.confirmPassword | 168 | delete form.value.confirmPassword |
| 169 | form.value.regionId = regionArr.value.pop() | 169 | form.value.regionId = regionArr.value.pop() |
| 170 | form.value.username= props.accont | ||
| 170 | match.pcRegisterTeam(form.value).then(res => { | 171 | match.pcRegisterTeam(form.value).then(res => { |
| 171 | setToken(res.data.token) | 172 | setToken(res.data.token) |
| 172 | emit('submit') | 173 | emit('submit') | ... | ... |
| ... | @@ -17,13 +17,14 @@ | ... | @@ -17,13 +17,14 @@ |
| 17 | </template> | 17 | </template> |
| 18 | 18 | ||
| 19 | <script setup> | 19 | <script setup> |
| 20 | import {reactive} from "@vue/runtime-core"; | 20 | import {reactive,toRefs} from "@vue/runtime-core"; |
| 21 | import {toRefs} from "@vueuse/shared/index"; | 21 | const router = useRouter() |
| 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' | 26 | import cache from '@/plugins/cache' |
| 27 | import {useRouter} from "vue-router"; | ||
| 27 | const language = ref(cache.local.get('language') || 0) | 28 | const language = ref(cache.local.get('language') || 0) |
| 28 | const props = defineProps({ | 29 | const props = defineProps({ |
| 29 | accont:{ | 30 | accont:{ |
| ... | @@ -42,10 +43,15 @@ const {isShow, isCodeTrue, counting, form, activeStep} = toRefs(data) | ... | @@ -42,10 +43,15 @@ const {isShow, isCodeTrue, counting, form, activeStep} = toRefs(data) |
| 42 | const emit = defineEmits(['submit', 'userName']) | 43 | const emit = defineEmits(['submit', 'userName']) |
| 43 | 44 | ||
| 44 | const goHome = () => { | 45 | const goHome = () => { |
| 45 | 46 | router.push({ | |
| 47 | name: `home` | ||
| 48 | }) | ||
| 46 | } | 49 | } |
| 47 | const goSign = () => { | 50 | const goSign = () => { |
| 48 | 51 | router.push({ | |
| 52 | name: `matchDetail`, | ||
| 53 | params:{id:0} | ||
| 54 | }) | ||
| 49 | } | 55 | } |
| 50 | 56 | ||
| 51 | </script> | 57 | </script> | ... | ... |
| ... | @@ -70,19 +70,19 @@ export default defineConfig(({ mode, command }) => { | ... | @@ -70,19 +70,19 @@ export default defineConfig(({ mode, command }) => { |
| 70 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '') | 70 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '') |
| 71 | }, | 71 | }, |
| 72 | '/dev-api/ztx-match': { | 72 | '/dev-api/ztx-match': { |
| 73 | target: 'http://192.168.1.132:8083', | 73 | target: 'http://192.168.1.131:8083', |
| 74 | // target: 'http://192.168.1.132:8081', | 74 | // target: 'http://192.168.1.132:8081', |
| 75 | changeOrigin: true, | 75 | changeOrigin: true, |
| 76 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '') | 76 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '') |
| 77 | }, | 77 | }, |
| 78 | '/dev-api/ztx-webSite': { | 78 | '/dev-api/ztx-webSite': { |
| 79 | // target: 'http://123.60.96.243:1897/stage-api/', | 79 | // target: 'http://123.60.96.243:1897/stage-api/', |
| 80 | target: 'http://192.168.1.130:8083/', | 80 | target: 'http://192.168.1.131:8083/', |
| 81 | changeOrigin: true, | 81 | changeOrigin: true, |
| 82 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') | 82 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') |
| 83 | }, | 83 | }, |
| 84 | '/dev-api': { | 84 | '/dev-api': { |
| 85 | target: 'http://192.168.1.130:8083', | 85 | target: 'http://192.168.1.131:8083', |
| 86 | // target: 'http://localhost:8787', | 86 | // target: 'http://localhost:8787', |
| 87 | changeOrigin: true, | 87 | changeOrigin: true, |
| 88 | rewrite: (p) => p.replace(/^\/dev-api/, '') | 88 | rewrite: (p) => p.replace(/^\/dev-api/, '') | ... | ... |
-
Please register or sign in to post a comment