815a2ac2 by 杨炀

no message

1 parent 05ebb5dc
Showing 48 changed files with 1277 additions and 368 deletions
No preview for this file type
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`,
......
...@@ -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>&ensp;&ensp;&ensp;&ensp;点:</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>&ensp;&ensp;&ensp;&ensp;箱:</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>
......
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 })
......
...@@ -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>
......
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>
......
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;
......
...@@ -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/, '')
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!