no message
Showing
29 changed files
with
1214 additions
and
882 deletions
src/assets/img/female.png
0 → 100644
463 Bytes
src/assets/img/male.png
0 → 100644
478 Bytes
| ... | @@ -548,12 +548,6 @@ export const constantRoutes = [ | ... | @@ -548,12 +548,6 @@ export const constantRoutes = [ |
| 548 | meta: { title: '选择参赛项目' } | 548 | meta: { title: '选择参赛项目' } |
| 549 | }, | 549 | }, |
| 550 | { | 550 | { |
| 551 | path: 'list/:id/expenseDetails', | ||
| 552 | component: () => import('@/viewsPc/match/expenseDetails'), | ||
| 553 | name: 'expenseDetails', | ||
| 554 | meta: { title: '费用明细' } | ||
| 555 | }, | ||
| 556 | { | ||
| 557 | path: 'list/:id/signPreview', | 551 | path: 'list/:id/signPreview', |
| 558 | component: () => import('@/viewsPc/match/signPreview'), | 552 | component: () => import('@/viewsPc/match/signPreview'), |
| 559 | name: 'signPreview', | 553 | name: 'signPreview', | ... | ... |
| ... | @@ -453,12 +453,6 @@ export const constantRoutes = [ | ... | @@ -453,12 +453,6 @@ export const constantRoutes = [ |
| 453 | meta: { title: '选择参赛项目' } | 453 | meta: { title: '选择参赛项目' } |
| 454 | }, | 454 | }, |
| 455 | { | 455 | { |
| 456 | path: 'list/:id/expenseDetails', | ||
| 457 | component: () => import('@/viewsPc/match/expenseDetails'), | ||
| 458 | name: 'expenseDetails', | ||
| 459 | meta: { title: '费用明细' } | ||
| 460 | }, | ||
| 461 | { | ||
| 462 | path: 'list/:id/signPreview', | 456 | path: 'list/:id/signPreview', |
| 463 | component: () => import('@/viewsPc/match/signPreview'), | 457 | component: () => import('@/viewsPc/match/signPreview'), |
| 464 | name: 'signPreview', | 458 | name: 'signPreview', | ... | ... |
| ... | @@ -438,12 +438,6 @@ export const constantRoutes = [ | ... | @@ -438,12 +438,6 @@ export const constantRoutes = [ |
| 438 | component: () => import('@/viewsPc/match/chooseProject'), | 438 | component: () => import('@/viewsPc/match/chooseProject'), |
| 439 | name: 'chooseProject', | 439 | name: 'chooseProject', |
| 440 | meta: { title: '选择参赛项目' } | 440 | meta: { title: '选择参赛项目' } |
| 441 | }, | ||
| 442 | { | ||
| 443 | path: 'list/:id/expenseDetails', | ||
| 444 | component: () => import('@/viewsPc/match/expenseDetails'), | ||
| 445 | name: 'expenseDetails', | ||
| 446 | meta: { title: '费用明细' } | ||
| 447 | } | 441 | } |
| 448 | ] | 442 | ] |
| 449 | }, | 443 | }, | ... | ... |
| ... | @@ -9,15 +9,16 @@ | ... | @@ -9,15 +9,16 @@ |
| 9 | <el-form-item :label="language==0?'姓名':'Name'"> | 9 | <el-form-item :label="language==0?'姓名':'Name'"> |
| 10 | <el-input v-model="query.realName" style="width: 120px;" clearable/> | 10 | <el-input v-model="query.realName" style="width: 120px;" clearable/> |
| 11 | </el-form-item> | 11 | </el-form-item> |
| 12 | <el-form-item :label="language==0?'短名':'Nick Name'"> | 12 | <!-- <el-form-item :label="language==0?'短名':'Nick Name'">--> |
| 13 | <el-input v-model="query.shortName" style="width: 120px;" clearable/> | 13 | <!-- <el-input v-model="query.shortName" style="width: 120px;" clearable/>--> |
| 14 | </el-form-item> | 14 | <!-- </el-form-item>--> |
| 15 | <el-form-item :label="language==0?'手机号码':'Phone'"> | 15 | <!-- <el-form-item :label="language==0?'手机号码':'Phone'">--> |
| 16 | <el-input v-model="query.phone" style="width: 120px;" clearable/> | 16 | <!-- <el-input v-model="query.phone" style="width: 120px;" clearable/>--> |
| 17 | </el-form-item> | 17 | <!-- </el-form-item>--> |
| 18 | <el-form-item :label="language==0?'邮箱':'E-mail'"> | 18 | <!-- <el-form-item :label="language==0?'邮箱':'E-mail'">--> |
| 19 | <el-input v-model="query.email" style="width: 120px;" clearable/> | 19 | <!-- <el-input v-model="query.email" style="width: 120px;" clearable/>--> |
| 20 | </el-form-item> | 20 | <!-- </el-form-item>--> |
| 21 | |||
| 21 | <el-form-item :label="language==0?'证件类型':'ID Type'"> | 22 | <el-form-item :label="language==0?'证件类型':'ID Type'"> |
| 22 | <el-input v-model="query.idcType" style="width: 120px;" clearable/> | 23 | <el-input v-model="query.idcType" style="width: 120px;" clearable/> |
| 23 | </el-form-item> | 24 | </el-form-item> |
| ... | @@ -29,6 +30,9 @@ | ... | @@ -29,6 +30,9 @@ |
| 29 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?(l.label):(l.enlabel)"/> | 30 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?(l.label):(l.enlabel)"/> |
| 30 | </el-select> | 31 | </el-select> |
| 31 | </el-form-item> | 32 | </el-form-item> |
| 33 | <el-form-item :label="language==0?'WDSF':'WDSF'"> | ||
| 34 | <el-input v-model="query.wdsfMin" style="width: 120px;" clearable/> | ||
| 35 | </el-form-item> | ||
| 32 | <el-form-item> | 36 | <el-form-item> |
| 33 | <el-button type="primary" @click="getList">{{ language==0?'查询':'Search' }}</el-button> | 37 | <el-button type="primary" @click="getList">{{ language==0?'查询':'Search' }}</el-button> |
| 34 | </el-form-item> | 38 | </el-form-item> | ... | ... |
| ... | @@ -23,6 +23,15 @@ | ... | @@ -23,6 +23,15 @@ |
| 23 | <el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name"> | 23 | <el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name"> |
| 24 | <el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/> | 24 | <el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/> |
| 25 | </el-form-item> | 25 | </el-form-item> |
| 26 | <el-form-item :label="language==0?'团体类型':'Group type'" prop="type" required> | ||
| 27 | <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;"> | ||
| 28 | <el-option :label="language==0?'普通院校':'School'" value="0" /> | ||
| 29 | <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" /> | ||
| 30 | <el-option :label="language==0?'培训机构/俱乐部':'Company/Club'" value="2" /> | ||
| 31 | <el-option :label="language==0?'地方协会':'Local Association'" value="3" /> | ||
| 32 | <el-option :label="language==0?'国家协会':'National Association'" value="4" /> | ||
| 33 | </el-select> | ||
| 34 | </el-form-item> | ||
| 26 | <el-form-item :label="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson"> | 35 | <el-form-item :label="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson"> |
| 27 | <el-input type="text" v-model="form.contactPerson" :placeholder="language==0?'请输入内容':''"/> | 36 | <el-input type="text" v-model="form.contactPerson" :placeholder="language==0?'请输入内容':''"/> |
| 28 | </el-form-item> | 37 | </el-form-item> | ... | ... |
| ... | @@ -11,7 +11,7 @@ | ... | @@ -11,7 +11,7 @@ |
| 11 | v-model.trim="loginForm.username" | 11 | v-model.trim="loginForm.username" |
| 12 | size="large" | 12 | size="large" |
| 13 | auto-complete="off" | 13 | auto-complete="off" |
| 14 | :placeholder="language==0?'账号(注册时使用的邮箱/手机号码)':'Account (e-mail/ cell-phone number)'" | 14 | :placeholder="language==0?'账号(注册时使用的邮箱)':'Account (e-mail)'" |
| 15 | > | 15 | > |
| 16 | 16 | ||
| 17 | </el-input> | 17 | </el-input> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <!-- 个人报名-国外--> | ||
| 3 | <div class="box ph-30"> | 4 | <div class="box ph-30"> |
| 4 | <el-card class="mb20"> | 5 | <el-card class="mb20"> |
| 5 | <single-sign-step :activeStep="2" :language="language"/> | 6 | <single-sign-step :activeStep="2" :language="language"/> |
| ... | @@ -16,19 +17,34 @@ | ... | @@ -16,19 +17,34 @@ |
| 16 | <h3 class="panel-title" v-else>My Information</h3> | 17 | <h3 class="panel-title" v-else>My Information</h3> |
| 17 | </div> | 18 | </div> |
| 18 | <div class="panel-body"> | 19 | <div class="panel-body"> |
| 19 | <div class="chooseForm"> | 20 | <div class="chooseForm" style="display: flex"> |
| 20 | <div @click="editPerson" style="width: 60px"> | 21 | <div @click="editPerson" style="width: 60px" class="mr20"> |
| 21 | <el-avatar fit="cover" v-if="form.picUrl" :size="60" :src="fillImgUrl(form.picUrl)"/> | 22 | <el-avatar fit="cover" v-if="form.picUrl" :size="60" :src="fillImgUrl(form.picUrl)"/> |
| 22 | <div class="addBttn" v-else>+</div> | 23 | <div class="addBttn" v-else>+</div> |
| 23 | 24 | ||
| 24 | <div class="text-center mt10"> | 25 | <div class="text-center mt10"> |
| 25 | <span v-if="form.shortName">{{form.shortName}}</span> | 26 | <span>{{ form.name }}</span> |
| 26 | <el-icon> | 27 | <el-icon> |
| 27 | <Edit/> | 28 | <Edit/> |
| 28 | </el-icon> | 29 | </el-icon> |
| 29 | </div> | 30 | </div> |
| 31 | </div> | ||
| 32 | <!-- 舞伴--> | ||
| 33 | <el-checkbox-group style="width: 60px"> | ||
| 34 | <el-checkbox> | ||
| 35 | <div> | ||
| 36 | <el-avatar fit="cover" v-if="form.picUrl" :size="60" :src="fillImgUrl(form.picUrl)"/> | ||
| 37 | <div class="addBttn" v-else>+</div> | ||
| 30 | 38 | ||
| 39 | <div class="text-center mt10"> | ||
| 40 | <span>{{ form.name }}</span> | ||
| 41 | <el-icon> | ||
| 42 | <Edit/> | ||
| 43 | </el-icon> | ||
| 31 | </div> | 44 | </div> |
| 45 | </div> | ||
| 46 | </el-checkbox> | ||
| 47 | </el-checkbox-group> | ||
| 32 | 48 | ||
| 33 | </div> | 49 | </div> |
| 34 | </div> | 50 | </div> |
| ... | @@ -45,7 +61,7 @@ | ... | @@ -45,7 +61,7 @@ |
| 45 | clearable/> | 61 | clearable/> |
| 46 | </div> | 62 | </div> |
| 47 | </div> | 63 | </div> |
| 48 | <div v-loading="loadingProject" style="min-height: 200px;max-height: 60vh"> | 64 | <div v-loading="loadingProject" style="height: 60vh"> |
| 49 | <el-checkbox-group v-model="projectIds"> | 65 | <el-checkbox-group v-model="projectIds"> |
| 50 | <el-checkbox class="flexBetweenBox" v-for="c in projectList" :label="c.id" :key="c.id"> | 66 | <el-checkbox class="flexBetweenBox" v-for="c in projectList" :label="c.id" :key="c.id"> |
| 51 | <div class="flexBetween w100"> | 67 | <div class="flexBetween w100"> |
| ... | @@ -53,7 +69,7 @@ | ... | @@ -53,7 +69,7 @@ |
| 53 | {{ c.code }}:{{ c.name }} | 69 | {{ c.code }}:{{ c.name }} |
| 54 | <div>{{ c.danceTypeDetailStr }}</div> | 70 | <div>{{ c.danceTypeDetailStr }}</div> |
| 55 | </div> | 71 | </div> |
| 56 | <div class="text-primary">¥{{ c.serviceFee }}</div> | 72 | <div class="text-primary">{{ language == 0 ? '¥' : '£' }}{{ c.serviceFee }}</div> |
| 57 | </div> | 73 | </div> |
| 58 | </el-checkbox> | 74 | </el-checkbox> |
| 59 | </el-checkbox-group> | 75 | </el-checkbox-group> |
| ... | @@ -89,19 +105,59 @@ | ... | @@ -89,19 +105,59 @@ |
| 89 | :extraform="extraform" :language="language" :list="signInfoList" | 105 | :extraform="extraform" :language="language" :list="signInfoList" |
| 90 | @editExtra="goPersonInfo"/> | 106 | @editExtra="goPersonInfo"/> |
| 91 | <zu-table v-else :list="zuTableList" :language="language" @delete="removeThis"/> | 107 | <zu-table v-else :list="zuTableList" :language="language" @delete="removeThis"/> |
| 108 | |||
| 109 | <div v-if="showPersonList"> | ||
| 110 | <el-row class="mt20"> | ||
| 111 | <el-col :span="24"> | ||
| 112 | <el-button type="primary" plain>{{ language == 0 ? '添加随行人员' : 'Add accompanying personnel' }} | ||
| 113 | </el-button> | ||
| 114 | </el-col> | ||
| 115 | </el-row> | ||
| 116 | <el-table class="mt20"> | ||
| 117 | <el-table-column type="index" label="Index" width="60"/> | ||
| 118 | <el-table-column label="Name"/> | ||
| 119 | <el-table-column label="Passport number"/> | ||
| 120 | <el-table-column label="Birthday"/> | ||
| 121 | <el-table-column label="Sex"/> | ||
| 122 | <el-table-column label="Role"> | ||
| 123 | <template #default="scope"> | ||
| 124 | <div class="esp"> | ||
| 125 | <span v-for="item in scope.row.label?.split(',')" :key="item.id" class="text-primary"> | ||
| 126 | <span v-if="item==='0'" class="ml5">{{ language == 0 ? '运动员' : 'athletes' }}</span> | ||
| 127 | <span v-if="item==='1'" class="ml5">{{ language == 0 ? '教练' : 'coach' }}</span> | ||
| 128 | <span v-if="item==='2'" class="ml5">{{ language == 0 ? '领队' : 'team leader' }}</span> | ||
| 129 | <span v-if="item==='3'" class="ml5">{{ language == 0 ? '队医' : 'team doctor' }}</span> | ||
| 130 | <span v-if="item==='4'" class="ml5">{{ language == 0 ? '翻译' : 'translator' }}</span> | ||
| 131 | <span v-if="item==='5'" class="ml5">{{ language == 0 ? '官员' : 'official' }}</span> | ||
| 132 | <span v-if="item==='6'" class="ml5">{{ language == 0 ? '其他' : 'other' }}</span> | ||
| 133 | </span> | ||
| 134 | </div> | ||
| 135 | </template> | ||
| 136 | </el-table-column> | ||
| 137 | <el-table-column label="Actions"> | ||
| 138 | <template #default="scope"> | ||
| 139 | <a class="text-primary pd10" @click="delperson(scope.row)"> | ||
| 140 | {{ language == 0 ? '删除' : 'Delete' }} | ||
| 141 | </a> | ||
| 142 | </template> | ||
| 143 | </el-table-column> | ||
| 144 | </el-table> | ||
| 145 | </div> | ||
| 146 | |||
| 92 | <div class="text-center mt20"> | 147 | <div class="text-center mt20"> |
| 93 | <el-button type="primary" class="" plain round @click="submitForm(0)">{{ language==0?'保存暂不提交审核':'Save, Do Not Submit for Review Yet' }}</el-button> | 148 | <el-button type="primary" class="" plain round @click="submitForm(0)"> |
| 94 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm(1)">{{ language==0?'提交审核':'Submit for review' }}</el-button> | 149 | {{ language == 0 ? '保存暂不提交审核' : 'Save, Do Not Submit for Review Yet' }} |
| 150 | </el-button> | ||
| 151 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm(1)"> | ||
| 152 | {{ language == 0 ? '提交审核' : 'Submit for review' }} | ||
| 153 | </el-button> | ||
| 95 | </div> | 154 | </div> |
| 96 | </div> | 155 | </div> |
| 97 | </el-card> | 156 | </el-card> |
| 98 | </div> | 157 | </div> |
| 99 | 158 | ||
| 100 | <dialogAddCoach ref="dialogAddCoachRef" @submitForm="changeMeDone"/> | 159 | <dialogAddCoach ref="dialogAddCoachRef" @submitForm="changeMeDone"/> |
| 101 | |||
| 102 | |||
| 103 | <!-- <dialogChangeCoach ref="popChangeCoach" @submitForm="getMySignInfo"/>--> | 160 | <!-- <dialogChangeCoach ref="popChangeCoach" @submitForm="getMySignInfo"/>--> |
| 104 | |||
| 105 | <dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/> | 161 | <dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/> |
| 106 | </div> | 162 | </div> |
| 107 | </template> | 163 | </template> |
| ... | @@ -131,6 +187,7 @@ import ZuTable from '@/viewsPc/match/components/zu-table' | ... | @@ -131,6 +187,7 @@ import ZuTable from '@/viewsPc/match/components/zu-table' |
| 131 | import SingleSignStep from "@/viewsPc/match/components/singleSignStep"; | 187 | import SingleSignStep from "@/viewsPc/match/components/singleSignStep"; |
| 132 | import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"; | 188 | import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"; |
| 133 | import useUserStore from "@/store/modules/user"; | 189 | import useUserStore from "@/store/modules/user"; |
| 190 | |||
| 134 | const language = ref(cache.local.get('language') || 0) | 191 | const language = ref(cache.local.get('language') || 0) |
| 135 | 192 | ||
| 136 | const data = reactive({ | 193 | const data = reactive({ |
| ... | @@ -165,11 +222,12 @@ const { | ... | @@ -165,11 +222,12 @@ const { |
| 165 | const matchId = ref(route.query.matchId) | 222 | const matchId = ref(route.query.matchId) |
| 166 | let signInfoType = null | 223 | let signInfoType = null |
| 167 | const form = ref({}) | 224 | const form = ref({}) |
| 225 | const showPersonList = ref(false) | ||
| 168 | const signEndTime = ref('') | 226 | const signEndTime = ref('') |
| 169 | const userId = ref('') | 227 | const userId = ref('') |
| 170 | const myId = ref('') | 228 | const myId = ref('') |
| 171 | onMounted(() => { | 229 | onMounted(() => { |
| 172 | if(useUserStore().user){ | 230 | if (useUserStore().user) { |
| 173 | userId.value = useUserStore().user.userId | 231 | userId.value = useUserStore().user.userId |
| 174 | } | 232 | } |
| 175 | signType.value = route.query.signType | 233 | signType.value = route.query.signType |
| ... | @@ -179,17 +237,20 @@ onMounted(() => { | ... | @@ -179,17 +237,20 @@ onMounted(() => { |
| 179 | 237 | ||
| 180 | getMySignInfo() | 238 | getMySignInfo() |
| 181 | }) | 239 | }) |
| 182 | function getMyInfo(){ | 240 | |
| 241 | function getMyInfo() { | ||
| 183 | match.getMyPersonInfo().then(res => { | 242 | match.getMyPersonInfo().then(res => { |
| 184 | form.value = res.data | 243 | form.value = res.data |
| 185 | myId.value = res.data.id | 244 | myId.value = res.data.id |
| 186 | getProjectList() | 245 | getProjectList() |
| 187 | }) | 246 | }) |
| 188 | } | 247 | } |
| 189 | function changeMeDone(){ | 248 | |
| 249 | function changeMeDone() { | ||
| 190 | getMyInfo() | 250 | getMyInfo() |
| 191 | getProjectList() | 251 | getProjectList() |
| 192 | } | 252 | } |
| 253 | |||
| 193 | let chargeFlag | 254 | let chargeFlag |
| 194 | 255 | ||
| 195 | function getMatch(id) { | 256 | function getMatch(id) { |
| ... | @@ -226,7 +287,6 @@ function getSignInfoList() { | ... | @@ -226,7 +287,6 @@ function getSignInfoList() { |
| 226 | } | 287 | } |
| 227 | 288 | ||
| 228 | 289 | ||
| 229 | |||
| 230 | function submitForm(n) { | 290 | function submitForm(n) { |
| 231 | if (signInfoType == '1') { | 291 | if (signInfoType == '1') { |
| 232 | ElMessageBox.confirm('已报项,前往我的报项', '提示', { | 292 | ElMessageBox.confirm('已报项,前往我的报项', '提示', { |
| ... | @@ -238,15 +298,15 @@ function submitForm(n) { | ... | @@ -238,15 +298,15 @@ function submitForm(n) { |
| 238 | }) | 298 | }) |
| 239 | return | 299 | return |
| 240 | } | 300 | } |
| 241 | if(n==0){ | 301 | if (n == 0) { |
| 242 | ElMessageBox.confirm(`您当前的操作为暂存,并不是提交审核, | 302 | ElMessageBox.confirm(`您当前的操作为暂存,并不是提交审核, |
| 243 | 必须在报名截止时间${signEndTime.value}之前完成提交。 | 303 | 必须在报名截止时间${signEndTime.value}之前完成提交。 |
| 244 | 您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。`, | 304 | 您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。`, |
| 245 | language.value==0?'提示':'Tip',{ | 305 | language.value == 0 ? '提示' : 'Tip', { |
| 246 | confirmButtonText: language.value==0?'去个人中心':'Go My Eegistration ', | 306 | confirmButtonText: language.value == 0 ? '去个人中心' : 'Go My Eegistration ', |
| 247 | cancelButtonText: language.value==0?'知道了':'OK', | 307 | cancelButtonText: language.value == 0 ? '知道了' : 'OK', |
| 248 | type: 'warning' | 308 | type: 'warning' |
| 249 | }).then((res)=>{ | 309 | }).then((res) => { |
| 250 | console.log(res) | 310 | console.log(res) |
| 251 | router.push({name: 'myMatch'}) | 311 | router.push({name: 'myMatch'}) |
| 252 | }) | 312 | }) |
| ... | @@ -260,24 +320,38 @@ function submitForm(n) { | ... | @@ -260,24 +320,38 @@ function submitForm(n) { |
| 260 | } | 320 | } |
| 261 | for (const s of signInfoList.value) { | 321 | for (const s of signInfoList.value) { |
| 262 | if (s.extraPersonInfo == null && needBuchong) { | 322 | if (s.extraPersonInfo == null && needBuchong) { |
| 263 | ElMessage.error(language.value==0?'请完善运动员补充信息':'Complete Supplementary Information') | 323 | ElMessage.error(language.value == 0 ? '请完善运动员补充信息' : 'Complete Supplementary Information') |
| 264 | tableType.value = 0 | 324 | tableType.value = 0 |
| 265 | return | 325 | return |
| 266 | } | 326 | } |
| 267 | } | 327 | } |
| 268 | 328 | ||
| 329 | if(showPersonList.value){ | ||
| 269 | commit() | 330 | commit() |
| 331 | } else { | ||
| 332 | ElMessageBox.confirm(language.value==0?'是否添加随性人员?':'Do you want to add casual personnel?', | ||
| 333 | language.value==0?'提示':'Tip', { | ||
| 334 | confirmButtonText: language.value==0?'确定':'Yes', | ||
| 335 | cancelButtonText: language.value==0?'取消':'Cancel', | ||
| 336 | type: 'warning' | ||
| 337 | }).then(() => { | ||
| 338 | showPersonList.value = true | ||
| 339 | }).catch(() => { | ||
| 340 | commit() | ||
| 341 | }) | ||
| 342 | } | ||
| 270 | } | 343 | } |
| 271 | 344 | ||
| 272 | } | 345 | } |
| 273 | } | 346 | } |
| 347 | |||
| 274 | function commit() { | 348 | function commit() { |
| 275 | match.commitSign({ | 349 | match.commitSign({ |
| 276 | groupId: 0, | 350 | groupId: 0, |
| 277 | cptId: matchId.value | 351 | cptId: matchId.value |
| 278 | }).then(res=>{ | 352 | }).then(res => { |
| 279 | router.push({ | 353 | router.push({ |
| 280 | name:`commitDone`, | 354 | name: `commitDone`, |
| 281 | params: { | 355 | params: { |
| 282 | orderId: res.data | 356 | orderId: res.data |
| 283 | } | 357 | } |
| ... | @@ -292,7 +366,7 @@ function getProjectList() { | ... | @@ -292,7 +366,7 @@ function getProjectList() { |
| 292 | var obj = { | 366 | var obj = { |
| 293 | cptId: matchId.value, | 367 | cptId: matchId.value, |
| 294 | perIds: myId.value, | 368 | perIds: myId.value, |
| 295 | name:projectQuery.value.name | 369 | name: projectQuery.value.name |
| 296 | } | 370 | } |
| 297 | match.getProjectPageByPerIds(obj).then(res => { | 371 | match.getProjectPageByPerIds(obj).then(res => { |
| 298 | projectList.value = res.rows | 372 | projectList.value = res.rows |
| ... | @@ -337,7 +411,7 @@ function signUp() { | ... | @@ -337,7 +411,7 @@ function signUp() { |
| 337 | return | 411 | return |
| 338 | } | 412 | } |
| 339 | const obj = { | 413 | const obj = { |
| 340 | athleteIds:myId.value, | 414 | athleteIds: myId.value, |
| 341 | projectIds: projectIds.value.toString(), | 415 | projectIds: projectIds.value.toString(), |
| 342 | groupId: groupId.value | 416 | groupId: groupId.value |
| 343 | } | 417 | } |
| ... | @@ -348,15 +422,15 @@ function signUp() { | ... | @@ -348,15 +422,15 @@ function signUp() { |
| 348 | } | 422 | } |
| 349 | 423 | ||
| 350 | function removeThis(id) { | 424 | function removeThis(id) { |
| 351 | ElMessageBox.confirm(language.value==0?'确定移除这条报项吗?':'Are you sure to remove this report item', | 425 | ElMessageBox.confirm(language.value == 0 ? '确定移除这条报项吗?' : 'Are you sure to remove this report item', |
| 352 | language.value==0?'提示':'Tips', { | 426 | language.value == 0 ? '提示' : 'Tips', { |
| 353 | confirmButtonText: language.value==0?'确定':'Confirm', | 427 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', |
| 354 | cancelButtonText: language.value==0?'取消':'Cancel', | 428 | cancelButtonText: language.value == 0 ? '取消' : 'Cancel', |
| 355 | type: 'warning' | 429 | type: 'warning' |
| 356 | }).then(() => { | 430 | }).then(() => { |
| 357 | match.deleteSign(id).then(res => { | 431 | match.deleteSign(id).then(res => { |
| 358 | // 重新获取已报名信息 | 432 | // 重新获取已报名信息 |
| 359 | ElMessage.success(language.value==0?'已移除该报项':'success') | 433 | ElMessage.success(language.value == 0 ? '已移除该报项' : 'success') |
| 360 | getSignInfoList() | 434 | getSignInfoList() |
| 361 | getProjectList() | 435 | getProjectList() |
| 362 | }) | 436 | }) |
| ... | @@ -411,7 +485,7 @@ function downloadVoucher() { | ... | @@ -411,7 +485,7 @@ function downloadVoucher() { |
| 411 | 485 | ||
| 412 | function editPerson() { | 486 | function editPerson() { |
| 413 | proxy.$refs['dialogAddCoachRef'].open({ | 487 | proxy.$refs['dialogAddCoachRef'].open({ |
| 414 | title: language.value==0?'编辑个人信息':'Edit My Information', | 488 | title: language.value == 0 ? '编辑个人信息' : 'Edit My Information', |
| 415 | isMe: true | 489 | isMe: true |
| 416 | }) | 490 | }) |
| 417 | } | 491 | } | ... | ... |
| ... | @@ -14,22 +14,15 @@ | ... | @@ -14,22 +14,15 @@ |
| 14 | <h3 class="panel-title" v-else>Select list of participating athletes</h3> | 14 | <h3 class="panel-title" v-else>Select list of participating athletes</h3> |
| 15 | <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a> | 15 | <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a> |
| 16 | </div> | 16 | </div> |
| 17 | <div class="panel-body"> | 17 | <div class="panel-body" style="padding: 10px"> |
| 18 | <div class="chooseForm"> | 18 | <div class="noPicChooseForm"> |
| 19 | <el-checkbox-group v-model="choosedchoosed" @change="changechoosed"> | 19 | <el-checkbox-group v-model="choosedchoosed" @change="changechoosed"> |
| 20 | <div class="addBttn" @click="chooseSportman">+</div> | 20 | <el-button plain @click="chooseSportman">+{{ language == 0 ?'选择':'add' }}</el-button> |
| 21 | <el-checkbox v-for="c in choosedList" :label="c.id"> | 21 | <el-checkbox v-for="c in choosedList" :label="c.id" border> |
| 22 | <el-avatar fit="cover" v-if="c.picUrl" :size="60" :src="fillImgUrl(c.picUrl)"/> | 22 | <p class="name">{{ c.realName }} |
| 23 | <el-avatar fit="cover" v-else-if="c.sex == 0" :size="60" src="@/assets/img/head1.png"/> | 23 | <!-- ({{ c.sexStr }})--> |
| 24 | <el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="@/assets/img/head0.png"/> | 24 | <img v-if="c.sex=='0'" src="@/assets/img/female.png"/> |
| 25 | 25 | <img v-if="c.sex=='1'" src="@/assets/img/male.png"/> | |
| 26 | <p class="name">{{ c.shortName }}({{ c.sexStr }}) | ||
| 27 | <!-- <el-icon @click.stop="editPerson(c.id)">--> | ||
| 28 | <!-- <Edit/>--> | ||
| 29 | <!-- </el-icon>--> | ||
| 30 | <!-- <el-icon @click.stop="delthischoosed(c)">--> | ||
| 31 | <!-- <Delete/>--> | ||
| 32 | <!-- </el-icon>--> | ||
| 33 | </p> | 26 | </p> |
| 34 | </el-checkbox> | 27 | </el-checkbox> |
| 35 | </el-checkbox-group> | 28 | </el-checkbox-group> |
| ... | @@ -42,6 +35,7 @@ | ... | @@ -42,6 +35,7 @@ |
| 42 | <div class="panel-header "> | 35 | <div class="panel-header "> |
| 43 | <h3 class="panel-title" v-if="language==0">选择一个参赛组合</h3> | 36 | <h3 class="panel-title" v-if="language==0">选择一个参赛组合</h3> |
| 44 | <h3 class="panel-title" v-else>Select a Participating team</h3> | 37 | <h3 class="panel-title" v-else>Select a Participating team</h3> |
| 38 | <a class="fr" @click="emptyChangechoosed">{{ language == 0 ? '清空' : 'Empty' }}</a> | ||
| 45 | </div> | 39 | </div> |
| 46 | <div class="panel-body"> | 40 | <div class="panel-body"> |
| 47 | <div class="chooseForm"> | 41 | <div class="chooseForm"> |
| ... | @@ -51,7 +45,10 @@ | ... | @@ -51,7 +45,10 @@ |
| 51 | <el-avatar fit="cover" v-if="c.picUrl" :size="60" :src="fillImgUrl(c.picUrl)"/> | 45 | <el-avatar fit="cover" v-if="c.picUrl" :size="60" :src="fillImgUrl(c.picUrl)"/> |
| 52 | <el-avatar fit="cover" v-else-if="c.sex == 0" :size="60" src="@/assets/img/head1.png"/> | 46 | <el-avatar fit="cover" v-else-if="c.sex == 0" :size="60" src="@/assets/img/head1.png"/> |
| 53 | <el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="@/assets/img/head0.png"/> | 47 | <el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="@/assets/img/head0.png"/> |
| 54 | <p class="name">{{ c.shortName }}({{ c.sexStr }}) | 48 | <p class="name">{{ c.realName }} |
| 49 | <!-- ({{ c.sexStr }})--> | ||
| 50 | <img v-if="c.sex=='0'" src="@/assets/img/female.png"/> | ||
| 51 | <img v-if="c.sex=='1'" src="@/assets/img/male.png"/> | ||
| 55 | <!-- <el-icon @click.stop="editPerson(c.id)">--> | 52 | <!-- <el-icon @click.stop="editPerson(c.id)">--> |
| 56 | <!-- <Edit/>--> | 53 | <!-- <Edit/>--> |
| 57 | <!-- </el-icon>--> | 54 | <!-- </el-icon>--> |
| ... | @@ -68,11 +65,12 @@ | ... | @@ -68,11 +65,12 @@ |
| 68 | <h3 class="panel-title" v-if="language==0">可参与报名的项目</h3> | 65 | <h3 class="panel-title" v-if="language==0">可参与报名的项目</h3> |
| 69 | <h3 class="panel-title" v-else>Eligible Events for Registration</h3> | 66 | <h3 class="panel-title" v-else>Eligible Events for Registration</h3> |
| 70 | <div class="fr"> | 67 | <div class="fr"> |
| 71 | <el-input size="small" v-model="projectQuery.name" :prefix-icon="Search" @change="getProjectList" | 68 | <el-input size="small" v-model="projectQuery.name" :prefix-icon="Search" |
| 69 | @change="getProjectList" | ||
| 72 | clearable/> | 70 | clearable/> |
| 73 | </div> | 71 | </div> |
| 74 | </div> | 72 | </div> |
| 75 | <div v-loading="loadingProject"> | 73 | <div v-loading="loadingProject" style="height: 60vh"> |
| 76 | <el-checkbox-group v-model="projectIds"> | 74 | <el-checkbox-group v-model="projectIds"> |
| 77 | <el-checkbox class="flexBetweenBox" v-for="c in projectList" :label="c.id" :key="c.id"> | 75 | <el-checkbox class="flexBetweenBox" v-for="c in projectList" :label="c.id" :key="c.id"> |
| 78 | <div class="flexBetween w100"> | 76 | <div class="flexBetween w100"> |
| ... | @@ -80,7 +78,7 @@ | ... | @@ -80,7 +78,7 @@ |
| 80 | {{ c.code }}:{{ c.name }} | 78 | {{ c.code }}:{{ c.name }} |
| 81 | <div>{{ c.danceTypeDetailStr }}</div> | 79 | <div>{{ c.danceTypeDetailStr }}</div> |
| 82 | </div> | 80 | </div> |
| 83 | <div class="text-primary">¥{{ c.serviceFee }}</div> | 81 | <div class="text-primary">{{ language==0?'¥':'£' }}{{ c.serviceFee }}</div> |
| 84 | </div> | 82 | </div> |
| 85 | </el-checkbox> | 83 | </el-checkbox> |
| 86 | </el-checkbox-group> | 84 | </el-checkbox-group> |
| ... | @@ -336,26 +334,6 @@ function afterRecover() { | ... | @@ -336,26 +334,6 @@ function afterRecover() { |
| 336 | } | 334 | } |
| 337 | return | 335 | return |
| 338 | } | 336 | } |
| 339 | // 判断是否收费 | ||
| 340 | if (chargeFlag == '0') { | ||
| 341 | var obj = { | ||
| 342 | cptId: matchId.value, | ||
| 343 | groupId: groupId.value | ||
| 344 | } | ||
| 345 | match.commitSign(obj).then(res => { | ||
| 346 | console.log(res.data) | ||
| 347 | showResult.value = true | ||
| 348 | }) | ||
| 349 | } else { | ||
| 350 | // 生成账单 | ||
| 351 | router.push({ | ||
| 352 | name: 'expenseDetails', | ||
| 353 | query: { | ||
| 354 | matchId: matchId.value, | ||
| 355 | groupId: groupId.value | ||
| 356 | } | ||
| 357 | }) | ||
| 358 | } | ||
| 359 | } | 337 | } |
| 360 | 338 | ||
| 361 | function goPrev() { | 339 | function goPrev() { |
| ... | @@ -472,6 +450,10 @@ function delthischoosed(p) { | ... | @@ -472,6 +450,10 @@ function delthischoosed(p) { |
| 472 | function emptyChoosed() { | 450 | function emptyChoosed() { |
| 473 | choosedList.value = [] | 451 | choosedList.value = [] |
| 474 | } | 452 | } |
| 453 | function emptyChangechoosed() { | ||
| 454 | choosedchoosed.value = [] | ||
| 455 | choosed2List.value = [] | ||
| 456 | } | ||
| 475 | 457 | ||
| 476 | function delchoosedchoosed() { | 458 | function delchoosedchoosed() { |
| 477 | console.log(choosedchoosed.value) | 459 | console.log(choosedchoosed.value) |
| ... | @@ -514,6 +496,7 @@ function signUp() { | ... | @@ -514,6 +496,7 @@ function signUp() { |
| 514 | groupId: groupId.value | 496 | groupId: groupId.value |
| 515 | } | 497 | } |
| 516 | match.sportsmanDone(obj).then(res => { | 498 | match.sportsmanDone(obj).then(res => { |
| 499 | choosedchoosed.value = [] | ||
| 517 | getSignInfoList() | 500 | getSignInfoList() |
| 518 | getProjectList() | 501 | getProjectList() |
| 519 | }) | 502 | }) |
| ... | @@ -756,4 +739,14 @@ function switchTabletype() { | ... | @@ -756,4 +739,14 @@ function switchTabletype() { |
| 756 | } | 739 | } |
| 757 | } | 740 | } |
| 758 | } | 741 | } |
| 742 | .noPicChooseForm{ | ||
| 743 | .el-checkbox-group{display: flex;flex-wrap: wrap;text-align: justify; | ||
| 744 | .el-button{width: 31%;margin:1%;} | ||
| 745 | .el-checkbox{margin: 1%;width: 31%;overflow: hidden;} | ||
| 746 | .name{justify-content: left;} | ||
| 747 | } | ||
| 748 | } | ||
| 749 | .name{display: flex;align-items: center;justify-content: center; | ||
| 750 | img{height: 20px;margin-left: 4px;} | ||
| 751 | } | ||
| 759 | </style> | 752 | </style> | ... | ... |
| ... | @@ -7,24 +7,12 @@ | ... | @@ -7,24 +7,12 @@ |
| 7 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline> | 7 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="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="language==0?'个人照片':'photo'" required> | 10 | |
| 11 | <ImageUpload2 | ||
| 12 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" | ||
| 13 | :is-show-tip="false" | ||
| 14 | /> | ||
| 15 | </el-form-item> | ||
| 16 | <el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required> | 11 | <el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required> |
| 17 | <el-input v-model="form.xing"/> | 12 | <el-input v-model="form.xing"/> |
| 18 | </el-form-item> | 13 | </el-form-item> |
| 19 | <el-form-item :label="language==0?'短名':'nike name'" prop="shortName" required> | 14 | <el-form-item :label="language==0?'名':'name'" prop="ming" required> |
| 20 | <el-input v-model="form.shortName" :placeholder="language==0?'赛事用名':''"/> | 15 | <el-input v-model="form.ming"/> |
| 21 | </el-form-item> | ||
| 22 | <el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required> | ||
| 23 | <el-date-picker | ||
| 24 | v-model="form.birth" | ||
| 25 | style="width: 100%;" | ||
| 26 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" | ||
| 27 | /> | ||
| 28 | </el-form-item> | 16 | </el-form-item> |
| 29 | <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required> | 17 | <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required> |
| 30 | <el-select v-model="form.idcType" style="width: 100%;"> | 18 | <el-select v-model="form.idcType" style="width: 100%;"> |
| ... | @@ -36,16 +24,42 @@ | ... | @@ -36,16 +24,42 @@ |
| 36 | /> | 24 | /> |
| 37 | </el-select> | 25 | </el-select> |
| 38 | </el-form-item> | 26 | </el-form-item> |
| 39 | <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required> | 27 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> |
| 40 | <el-input v-model="form.phone" type="number"/> | 28 | <el-input v-model="form.idcCode" @blur="checkCode"/> |
| 41 | </el-form-item> | 29 | </el-form-item> |
| 42 | <el-form-item :label="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin"> | 30 | <el-form-item :label="language==0?'性别':'sex'" prop="sex"> |
| 43 | <el-input v-model="form.wdsfMin" type="number"/> | 31 | <el-radio-group v-model="form.sex"> |
| 32 | <el-radio label="0">{{ language==0?'女':'female' }}</el-radio> | ||
| 33 | <el-radio label="1">{{ language==0?'男':'male' }}</el-radio> | ||
| 34 | </el-radio-group> | ||
| 35 | </el-form-item> | ||
| 36 | |||
| 37 | <el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required> | ||
| 38 | <el-date-picker | ||
| 39 | v-model="form.birth" | ||
| 40 | style="width: 100%;" | ||
| 41 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" | ||
| 42 | /> | ||
| 44 | </el-form-item> | 43 | </el-form-item> |
| 44 | <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr"> | ||
| 45 | <el-select v-model="form.labelArr" multiple @change="labelvalue"> | ||
| 46 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> | ||
| 47 | </el-select> | ||
| 48 | </el-form-item> | ||
| 49 | <!-- <el-form-item :label="language==0?'短名':'nike name'" prop="shortName" required>--> | ||
| 50 | <!-- <el-input v-model="form.shortName" :placeholder="language==0?'赛事用名':''"/>--> | ||
| 51 | <!-- </el-form-item>--> | ||
| 52 | |||
| 53 | |||
| 45 | </el-col> | 54 | </el-col> |
| 46 | <el-col :lg="12"> | 55 | <el-col :lg="12"> |
| 56 | <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required> | ||
| 57 | <el-input v-model="form.phone" type="number"/> | ||
| 58 | </el-form-item> | ||
| 59 | |||
| 60 | |||
| 47 | <el-form-item :label="language==0?'所属国家':'Nationality'" prop="countryId" required> | 61 | <el-form-item :label="language==0?'所属国家':'Nationality'" prop="countryId" required> |
| 48 | <el-select filterable v-model="form.countryId" style="width: 100%;" @change="changeCountryId"> | 62 | <el-select :disabled="language==0" filterable v-model="form.countryId" style="width: 100%;" @change="changeCountryId"> |
| 49 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/> | 63 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/> |
| 50 | </el-select> | 64 | </el-select> |
| 51 | </el-form-item> | 65 | </el-form-item> |
| ... | @@ -59,26 +73,21 @@ | ... | @@ -59,26 +73,21 @@ |
| 59 | <el-input v-model="form.address" type="textarea" :rows="4"/> | 73 | <el-input v-model="form.address" type="textarea" :rows="4"/> |
| 60 | 74 | ||
| 61 | </el-form-item> | 75 | </el-form-item> |
| 62 | <el-form-item :label="language==0?'名':'name'" prop="ming" required> | 76 | <el-form-item :label="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin"> |
| 63 | <el-input v-model="form.ming"/> | 77 | <el-input v-model="form.wdsfMin" type="number"/> |
| 64 | </el-form-item> | ||
| 65 | <el-form-item :label="language==0?'性别':'sex'" prop="sex"> | ||
| 66 | <el-radio-group v-model="form.sex"> | ||
| 67 | <el-radio label="0">{{ language==0?'女':'female' }}</el-radio> | ||
| 68 | <el-radio label="1">{{ language==0?'男':'male' }}</el-radio> | ||
| 69 | </el-radio-group> | ||
| 70 | </el-form-item> | ||
| 71 | <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required> | ||
| 72 | <el-input v-model="form.email"/> | ||
| 73 | </el-form-item> | ||
| 74 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> | ||
| 75 | <el-input v-model="form.idcCode" @blur="checkCode"/> | ||
| 76 | </el-form-item> | 78 | </el-form-item> |
| 77 | <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr"> | 79 | <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'"> |
| 78 | <el-select v-model="form.labelArr" multiple @change="labelvalue"> | 80 | <ImageUpload2 |
| 79 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> | 81 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" |
| 80 | </el-select> | 82 | :is-show-tip="false" |
| 83 | /> | ||
| 81 | </el-form-item> | 84 | </el-form-item> |
| 85 | |||
| 86 | <!-- <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required>--> | ||
| 87 | <!-- <el-input v-model="form.email"/>--> | ||
| 88 | <!-- </el-form-item>--> | ||
| 89 | |||
| 90 | |||
| 82 | </el-col> | 91 | </el-col> |
| 83 | </el-row> | 92 | </el-row> |
| 84 | </el-form> | 93 | </el-form> |
| ... | @@ -117,13 +126,13 @@ const {proxy} = getCurrentInstance() | ... | @@ -117,13 +126,13 @@ const {proxy} = getCurrentInstance() |
| 117 | const emit = defineEmits(['submitForm']) | 126 | const emit = defineEmits(['submitForm']) |
| 118 | const data = reactive({ | 127 | const data = reactive({ |
| 119 | form: { | 128 | form: { |
| 120 | countryId: 240 | 129 | // countryId: 240 |
| 121 | }, | 130 | }, |
| 122 | rules: { | 131 | rules: { |
| 123 | xing: [{required: true, message: '必填', trigger: 'blur'}], | 132 | xing: [{required: true, message: '必填', trigger: 'blur'}], |
| 124 | ming: [{required: true, message: '必填', trigger: 'blur'}], | 133 | ming: [{required: true, message: '必填', trigger: 'blur'}], |
| 125 | shortName: [{required: true, message: '必填', trigger: 'blur'}], | 134 | // shortName: [{required: true, message: '必填', trigger: 'blur'}], |
| 126 | email: [{required: true, message: '必填', trigger: 'blur'}], | 135 | // email: [{required: true, message: '必填', trigger: 'blur'}], |
| 127 | countryId: [{required: true, message: '必填', trigger: 'change'}], | 136 | countryId: [{required: true, message: '必填', trigger: 'change'}], |
| 128 | idcType: [{required: true, message: '必填', trigger: 'change'}], | 137 | idcType: [{required: true, message: '必填', trigger: 'change'}], |
| 129 | idcCode: [{required: true, message: '必填', trigger: 'blur'}], | 138 | idcCode: [{required: true, message: '必填', trigger: 'blur'}], |
| ... | @@ -131,15 +140,15 @@ const data = reactive({ | ... | @@ -131,15 +140,15 @@ const data = reactive({ |
| 131 | // regionId: [{ required: true, message: '必填', trigger: 'change' }], | 140 | // regionId: [{ required: true, message: '必填', trigger: 'change' }], |
| 132 | birth: [{required: true, message: '必填', trigger: 'change'}], | 141 | birth: [{required: true, message: '必填', trigger: 'change'}], |
| 133 | address: [{ required: true, message: '必填', trigger: 'blur' }], | 142 | address: [{ required: true, message: '必填', trigger: 'blur' }], |
| 134 | picUrl: [{required: true, message: '必填', trigger: 'blur'}], | 143 | // picUrl: [{required: true, message: '必填', trigger: 'blur'}], |
| 135 | sex: [{required: true, message: '必填', trigger: 'change'}], | 144 | sex: [{required: true, message: '必填', trigger: 'change'}], |
| 136 | labelArr: [{required: true, message: '必填', trigger: 'change'}] | 145 | labelArr: [{required: true, message: '必填', trigger: 'change'}] |
| 137 | }, | 146 | }, |
| 138 | rules_cn:{ | 147 | rules_cn:{ |
| 139 | xing: [{required: true, message: 'required', trigger: 'blur'}], | 148 | xing: [{required: true, message: 'required', trigger: 'blur'}], |
| 140 | ming: [{required: true, message: 'required', trigger: 'blur'}], | 149 | ming: [{required: true, message: 'required', trigger: 'blur'}], |
| 141 | shortName: [{required: true, message: 'required', trigger: 'blur'}], | 150 | // shortName: [{required: true, message: 'required', trigger: 'blur'}], |
| 142 | email: [{required: true, message: 'required', trigger: 'blur'}], | 151 | // email: [{required: true, message: 'required', trigger: 'blur'}], |
| 143 | countryId: [{required: true, message: 'required', trigger: 'change'}], | 152 | countryId: [{required: true, message: 'required', trigger: 'change'}], |
| 144 | idcType: [{required: true, message: 'required', trigger: 'change'}], | 153 | idcType: [{required: true, message: 'required', trigger: 'change'}], |
| 145 | idcCode: [{required: true, message: 'required', trigger: 'blur'}], | 154 | idcCode: [{required: true, message: 'required', trigger: 'blur'}], |
| ... | @@ -147,7 +156,7 @@ const data = reactive({ | ... | @@ -147,7 +156,7 @@ const data = reactive({ |
| 147 | // regionId: [{ required: true, message: 'required', trigger: 'change' }], | 156 | // regionId: [{ required: true, message: 'required', trigger: 'change' }], |
| 148 | birth: [{required: true, message: 'required', trigger: 'change'}], | 157 | birth: [{required: true, message: 'required', trigger: 'change'}], |
| 149 | address: [{ required: true, message: 'required', trigger: 'blur' }], | 158 | address: [{ required: true, message: 'required', trigger: 'blur' }], |
| 150 | picUrl: [{required: true, message: 'required', trigger: 'blur'}], | 159 | // picUrl: [{required: true, message: 'required', trigger: 'blur'}], |
| 151 | sex: [{required: true, message: 'required', trigger: 'change'}], | 160 | sex: [{required: true, message: 'required', trigger: 'change'}], |
| 152 | labelArr: [{required: true, message: 'required', trigger: 'change'}] | 161 | labelArr: [{required: true, message: 'required', trigger: 'change'}] |
| 153 | }, | 162 | }, |
| ... | @@ -172,6 +181,7 @@ const {showRequire, form, rules,rules_cn, show, countryList, regionsList, title, | ... | @@ -172,6 +181,7 @@ const {showRequire, form, rules,rules_cn, show, countryList, regionsList, title, |
| 172 | onMounted(() => { | 181 | onMounted(() => { |
| 173 | getCountryList() | 182 | getCountryList() |
| 174 | getRegionsList() | 183 | getRegionsList() |
| 184 | |||
| 175 | }) | 185 | }) |
| 176 | let editgay = false | 186 | let editgay = false |
| 177 | const open = (params) => { | 187 | const open = (params) => { |
| ... | @@ -180,6 +190,9 @@ const open = (params) => { | ... | @@ -180,6 +190,9 @@ const open = (params) => { |
| 180 | title.value = params.title | 190 | title.value = params.title |
| 181 | groupId.value = params.groupId || '0' | 191 | groupId.value = params.groupId || '0' |
| 182 | isMe.value = params.isMe | 192 | isMe.value = params.isMe |
| 193 | if(language.value == 0){ | ||
| 194 | form.value.countryId = 240 | ||
| 195 | } | ||
| 183 | if(isMe.value){ | 196 | if(isMe.value){ |
| 184 | //个人 | 197 | //个人 |
| 185 | match.getMyPersonInfo().then(res => { | 198 | match.getMyPersonInfo().then(res => { | ... | ... |
| ... | @@ -13,15 +13,6 @@ | ... | @@ -13,15 +13,6 @@ |
| 13 | <el-form-item :label="language==0?'姓名':'Name'"> | 13 | <el-form-item :label="language==0?'姓名':'Name'"> |
| 14 | <el-input v-model="query.realName" style="width: 120px;" clearable/> | 14 | <el-input v-model="query.realName" style="width: 120px;" clearable/> |
| 15 | </el-form-item> | 15 | </el-form-item> |
| 16 | <el-form-item :label="language==0?'短名':'Nick Name'"> | ||
| 17 | <el-input v-model="query.shortName" style="width: 120px;" clearable/> | ||
| 18 | </el-form-item> | ||
| 19 | <el-form-item :label="language==0?'手机号码':'Phone Number'"> | ||
| 20 | <el-input v-model="query.phone" style="width: 120px;" clearable/> | ||
| 21 | </el-form-item> | ||
| 22 | <el-form-item :label="language==0?'邮箱':'E-mail'"> | ||
| 23 | <el-input v-model="query.email" style="width: 120px;" clearable/> | ||
| 24 | </el-form-item> | ||
| 25 | <el-form-item :label="language==0?'证件类型':'ID Type'"> | 16 | <el-form-item :label="language==0?'证件类型':'ID Type'"> |
| 26 | <el-input v-model="query.idcType" style="width: 120px;" clearable/> | 17 | <el-input v-model="query.idcType" style="width: 120px;" clearable/> |
| 27 | </el-form-item> | 18 | </el-form-item> |
| ... | @@ -40,15 +31,12 @@ | ... | @@ -40,15 +31,12 @@ |
| 40 | <el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh" | 31 | <el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh" |
| 41 | @selection-change="handleSelectionChange"> | 32 | @selection-change="handleSelectionChange"> |
| 42 | <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/> | 33 | <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/> |
| 43 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/> | ||
| 44 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> | 34 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> |
| 45 | <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> | 35 | <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> |
| 46 | <el-table-column :label="language==0?'短名':'Nick Name'" prop="shortName" min-width="110"/> | 36 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/> |
| 47 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> | 37 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> |
| 48 | <el-table-column :label="language==0?'年龄':'Age'" prop="age"/> | 38 | <el-table-column :label="language==0?'年龄':'Age'" prop="age"/> |
| 49 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> | 39 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> |
| 50 | <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="phone" width="120"/> | ||
| 51 | <el-table-column :label="language==0?'邮箱':'E-mail'" prop="email" width="150"/> | ||
| 52 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr"/> | 40 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr"/> |
| 53 | <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> | 41 | <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> |
| 54 | <!-- <el-table-column label="会员角色" width="200">--> | 42 | <!-- <el-table-column label="会员角色" width="200">--> |
| ... | @@ -68,7 +56,6 @@ | ... | @@ -68,7 +56,6 @@ |
| 68 | <!-- </div>--> | 56 | <!-- </div>--> |
| 69 | <!-- </template>--> | 57 | <!-- </template>--> |
| 70 | <!-- </el-table-column>--> | 58 | <!-- </el-table-column>--> |
| 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"> | 59 | <el-table-column :label="language==0?'操作':'Actions'" width="120" fixed="right" align="center"> |
| 73 | <template #default="scope"> | 60 | <template #default="scope"> |
| 74 | <el-button link type="primary" @click="editPerson(scope.row)"> | 61 | <el-button link type="primary" @click="editPerson(scope.row)"> |
| ... | @@ -77,6 +64,13 @@ | ... | @@ -77,6 +64,13 @@ |
| 77 | </template> | 64 | </template> |
| 78 | </el-table-column> | 65 | </el-table-column> |
| 79 | </el-table> | 66 | </el-table> |
| 67 | <paginationPc | ||
| 68 | v-show="total>0" | ||
| 69 | v-model:page="query.pageNum" | ||
| 70 | v-model:limit="query.pageSize" | ||
| 71 | :total="total" | ||
| 72 | @pagination="getList" | ||
| 73 | /> | ||
| 80 | <template #footer> | 74 | <template #footer> |
| 81 | <div class="dialog-footer text-center"> | 75 | <div class="dialog-footer text-center"> |
| 82 | <el-button type="primary" @click="submitForm">{{language==0?'确定':'Confirm'}}</el-button> | 76 | <el-button type="primary" @click="submitForm">{{language==0?'确定':'Confirm'}}</el-button> |
| ... | @@ -104,16 +98,18 @@ const {proxy} = getCurrentInstance() | ... | @@ -104,16 +98,18 @@ const {proxy} = getCurrentInstance() |
| 104 | const emit = defineEmits(['submitForm', 'transfer']) | 98 | const emit = defineEmits(['submitForm', 'transfer']) |
| 105 | const data = reactive({ | 99 | const data = reactive({ |
| 106 | query: { | 100 | query: { |
| 107 | label:'0' | 101 | label:'0', |
| 102 | pageNum:1, | ||
| 103 | pageSize:10 | ||
| 108 | }, | 104 | }, |
| 109 | tableData: [], | 105 | tableData: [], |
| 110 | birthArr: [], | ||
| 111 | show: false, | 106 | show: false, |
| 112 | loading: false, | 107 | loading: false, |
| 113 | title: '选择运动员', | 108 | title: '选择运动员', |
| 114 | noPhotoCanSign: 0 | 109 | noPhotoCanSign: 0, |
| 110 | total: 0 | ||
| 115 | }) | 111 | }) |
| 116 | const {query, tableData, show, title, birthArr, loading, noPhotoCanSign} = toRefs(data) | 112 | const {query, tableData, show, title, loading, noPhotoCanSign,total} = toRefs(data) |
| 117 | let matchId | 113 | let matchId |
| 118 | let groupId | 114 | let groupId |
| 119 | let choosedList = [] | 115 | let choosedList = [] |
| ... | @@ -142,12 +138,9 @@ const selectable = (row) => { | ... | @@ -142,12 +138,9 @@ const selectable = (row) => { |
| 142 | } | 138 | } |
| 143 | const getList = () => { | 139 | const getList = () => { |
| 144 | loading.value = true | 140 | loading.value = true |
| 145 | if (birthArr.value) { | ||
| 146 | query.value.birthBegin = birthArr.value[0] | ||
| 147 | query.value.birthEnd = birthArr.value[1] | ||
| 148 | } | ||
| 149 | match.getGroupPersonList(query.value, groupId).then(res => { | 141 | match.getGroupPersonList(query.value, groupId).then(res => { |
| 150 | tableData.value = res.rows | 142 | tableData.value = res.rows |
| 143 | total.value = res.total | ||
| 151 | nextTick(() => { | 144 | nextTick(() => { |
| 152 | for (const n in tableData.value) { | 145 | for (const n in tableData.value) { |
| 153 | if (choosedIds.indexOf(tableData.value[n].id) > -1) { | 146 | if (choosedIds.indexOf(tableData.value[n].id) > -1) { | ... | ... |
| ... | @@ -3,23 +3,23 @@ | ... | @@ -3,23 +3,23 @@ |
| 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.realName}}, </span> |
| 7 | <span v-if="!names.coachList">--</span> | 7 | <span v-if="!names.coachList">--</span> |
| 8 | </div> | 8 | </div> |
| 9 | <div class="item"><label>{{ language == 0 ? '翻译' : 'Translator' }}</label> | 9 | <div class="item"><label>{{ language == 0 ? '翻译' : 'Translator' }}</label> |
| 10 | <span v-for="c in names.translatorList">{{ c.shortName }}</span> | 10 | <span v-for="c in names.translatorList">{{ c.realName }}</span> |
| 11 | <span v-if="!names.translatorList">--</span> | 11 | <span v-if="!names.translatorList">--</span> |
| 12 | </div> | 12 | </div> |
| 13 | </el-col> | 13 | </el-col> |
| 14 | <el-col :lg="8"> | 14 | <el-col :lg="8"> |
| 15 | <div class="item"> | 15 | <div class="item"> |
| 16 | <label>{{ language == 0 ? '领队' : 'Team leader' }}</label> | 16 | <label>{{ language == 0 ? '领队' : 'Team leader' }}</label> |
| 17 | <span v-for="c in names.leaderList">{{ c.shortName }}</span> | 17 | <span v-for="c in names.leaderList">{{ c.realName }}</span> |
| 18 | <span v-if="!names.leaderList">--</span> | 18 | <span v-if="!names.leaderList">--</span> |
| 19 | </div> | 19 | </div> |
| 20 | <div class="item"> | 20 | <div class="item"> |
| 21 | <label>{{ language == 0 ? '官员' : 'Official' }}</label> | 21 | <label>{{ language == 0 ? '官员' : 'Official' }}</label> |
| 22 | <span class="mr5" v-for="c in names.officialList">{{ c.shortName }}</span> | 22 | <span class="mr5" v-for="c in names.officialList">{{ c.realName }}</span> |
| 23 | <span v-if="!names.officialList">--</span> | 23 | <span v-if="!names.officialList">--</span> |
| 24 | </div> | 24 | </div> |
| 25 | </el-col> | 25 | </el-col> |
| ... | @@ -27,7 +27,7 @@ | ... | @@ -27,7 +27,7 @@ |
| 27 | <div class="item"> | 27 | <div class="item"> |
| 28 | <label>{{ language == 0 ? '队医' : 'Team doctor' }}</label> | 28 | <label>{{ language == 0 ? '队医' : 'Team doctor' }}</label> |
| 29 | <span class="mr5" v-for="c in names.teamDoctorList"> | 29 | <span class="mr5" v-for="c in names.teamDoctorList"> |
| 30 | {{ c.shortName }} | 30 | {{ c.realName }} |
| 31 | </span> | 31 | </span> |
| 32 | <span v-if="!names.teamDoctorList">--</span> | 32 | <span v-if="!names.teamDoctorList">--</span> |
| 33 | </div> | 33 | </div> | ... | ... |
| ... | @@ -9,15 +9,11 @@ | ... | @@ -9,15 +9,11 @@ |
| 9 | </el-descriptions-item> | 9 | </el-descriptions-item> |
| 10 | <el-descriptions-item :label="language==0?'姓氏':'surname'">{{ form.xing }}</el-descriptions-item> | 10 | <el-descriptions-item :label="language==0?'姓氏':'surname'">{{ form.xing }}</el-descriptions-item> |
| 11 | <el-descriptions-item :label="language==0?'名':'name'">{{ form.ming }}</el-descriptions-item> | 11 | <el-descriptions-item :label="language==0?'名':'name'">{{ form.ming }}</el-descriptions-item> |
| 12 | <el-descriptions-item :label="language==0?'短名':'short name'">{{ form.shortName }}</el-descriptions-item> | ||
| 13 | <el-descriptions-item :label="language==0?'性别':'sex'">{{ form.sexStr }}</el-descriptions-item> | 12 | <el-descriptions-item :label="language==0?'性别':'sex'">{{ form.sexStr }}</el-descriptions-item> |
| 14 | <el-descriptions-item :label="language==0?'所属国家':'Nationality'">{{ form.countryName }}</el-descriptions-item> | 13 | <el-descriptions-item :label="language==0?'所属国家':'Nationality'">{{ form.countryName }}</el-descriptions-item> |
| 15 | <el-descriptions-item :label="language==0?'证件类型':'ID type'">{{ form.idcTypeStr }}</el-descriptions-item> | 14 | <el-descriptions-item :label="language==0?'证件类型':'ID type'">{{ form.idcTypeStr }}</el-descriptions-item> |
| 16 | <el-descriptions-item :label="language==0?'证件号码':'ID NO'">{{ form.idcCode }}</el-descriptions-item> | 15 | <el-descriptions-item :label="language==0?'证件号码':'ID NO'">{{ form.idcCode }}</el-descriptions-item> |
| 17 | <el-descriptions-item :label="language==0?'出生日期':'birth'">{{ form.birth }}</el-descriptions-item> | 16 | <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> | ||
| 21 | </el-descriptions> | 17 | </el-descriptions> |
| 22 | 18 | ||
| 23 | <el-row v-if="participantsInfoArr&&participantsInfoArr.length>0" class="mt20"> | 19 | <el-row v-if="participantsInfoArr&&participantsInfoArr.length>0" class="mt20"> | ... | ... |
| ... | @@ -35,12 +35,12 @@ const language = ref(cache.local.get('language') || 0) | ... | @@ -35,12 +35,12 @@ const language = ref(cache.local.get('language') || 0) |
| 35 | const props = defineProps({ | 35 | const props = defineProps({ |
| 36 | groupId: { | 36 | groupId: { |
| 37 | type: Object, | 37 | type: Object, |
| 38 | required: true | 38 | required: false |
| 39 | } | 39 | } |
| 40 | }) | 40 | }) |
| 41 | const user = useUserStore().user | 41 | const user = useUserStore().user |
| 42 | const groupInfo = useUserStore().group | 42 | const groupInfo = useUserStore().group |
| 43 | if(props.groupId!=0){ | 43 | if(props.groupId){ |
| 44 | getGroupInfo() | 44 | getGroupInfo() |
| 45 | } | 45 | } |
| 46 | function getGroupInfo() { | 46 | function getGroupInfo() { | ... | ... |
| ... | @@ -55,7 +55,7 @@ | ... | @@ -55,7 +55,7 @@ |
| 55 | <td>{{ p.danceTypeDetailStr }}</td> | 55 | <td>{{ p.danceTypeDetailStr }}</td> |
| 56 | <td>{{ p.playTypeStr }}</td> | 56 | <td>{{ p.playTypeStr }}</td> |
| 57 | <td>{{ p.birthPeriod }}</td> | 57 | <td>{{ p.birthPeriod }}</td> |
| 58 | <td>¥{{ p.serviceFee }}</td> | 58 | <td>{{ language==0?'¥':'£' }}{{ p.serviceFee }}</td> |
| 59 | </tr> | 59 | </tr> |
| 60 | </table> | 60 | </table> |
| 61 | </div> | 61 | </div> |
| ... | @@ -122,7 +122,7 @@ | ... | @@ -122,7 +122,7 @@ |
| 122 | <td>{{ p.danceTypeDetailStr }}</td> | 122 | <td>{{ p.danceTypeDetailStr }}</td> |
| 123 | <td>{{ p.playTypeStr }}</td> | 123 | <td>{{ p.playTypeStr }}</td> |
| 124 | <td>{{ p.birthPeriod }}</td> | 124 | <td>{{ p.birthPeriod }}</td> |
| 125 | <td>¥{{ p.serviceFee }}</td> | 125 | <td>{{ language==0?'¥':'£' }}{{ p.serviceFee }}</td> |
| 126 | </tr> | 126 | </tr> |
| 127 | </table> | 127 | </table> |
| 128 | </div> | 128 | </div> | ... | ... |
| ... | @@ -2,18 +2,17 @@ | ... | @@ -2,18 +2,17 @@ |
| 2 | <!-- 人员表格--> | 2 | <!-- 人员表格--> |
| 3 | <el-table :data="tableData" class="mt20"> | 3 | <el-table :data="tableData" class="mt20"> |
| 4 | <el-table-column type="index" :label="language==0?'序号':'index'" width="80" align="center"/> | 4 | <el-table-column type="index" :label="language==0?'序号':'index'" width="80" align="center"/> |
| 5 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/> | ||
| 6 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> | 5 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> |
| 7 | <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> | 6 | <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> |
| 8 | <el-table-column :label="language==0?'短名':'Nick Name'" prop="shortName" min-width="110"/> | 7 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/> |
| 8 | <!-- <el-table-column :label="language==0?'短名':'Nick Name'" prop="shortName" min-width="110"/>--> | ||
| 9 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> | 9 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> |
| 10 | <el-table-column :label="language==0?'年龄':'Age'" prop="age"/> | 10 | <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>--> |
| 11 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> | 11 | <!-- <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="phone" width="120"/>--> |
| 12 | <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="phone" width="120"/> | 12 | <!-- <el-table-column :label="language==0?'邮箱':'E-mail'" prop="email" width="150"/>--> |
| 13 | <el-table-column :label="language==0?'邮箱':'E-mail'" prop="email" width="150"/> | ||
| 14 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" :min-width="language==0?'80':'160'"/> | 13 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" :min-width="language==0?'80':'160'"/> |
| 15 | <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> | 14 | <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> |
| 16 | <el-table-column :label="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin" width="200"/> | 15 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> |
| 17 | <el-table-column :label="language==0?'会员角色':'Role'" width="150"> | 16 | <el-table-column :label="language==0?'会员角色':'Role'" width="150"> |
| 18 | <template #default="scope"> | 17 | <template #default="scope"> |
| 19 | <div class="esp"> | 18 | <div class="esp"> |
| ... | @@ -29,7 +28,8 @@ | ... | @@ -29,7 +28,8 @@ |
| 29 | </div> | 28 | </div> |
| 30 | </template> | 29 | </template> |
| 31 | </el-table-column> | 30 | </el-table-column> |
| 32 | <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/> | 31 | <el-table-column :label="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin" width="200"/> |
| 32 | <!-- <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/>--> | ||
| 33 | <el-table-column :label="language==0?'操作':'Actions'" fixed="right" width="160" header-align="center" | 33 | <el-table-column :label="language==0?'操作':'Actions'" fixed="right" width="160" header-align="center" |
| 34 | align="center"> | 34 | align="center"> |
| 35 | <template #default="scope"> | 35 | <template #default="scope"> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-table :data="list" border style="width: 100%" v-loading="loading"> | 2 | <div class="mt20"></div> |
| 3 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="personInfo.countryName" min-width="100"/> | 3 | <el-table :data="list" :sum-text="sumText" border style="width: 100%" v-loading="loading"> |
| 4 | <el-table-column :label="language==0?'序号':'Index'" type="index" width="70" align="center"/> | ||
| 4 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="personInfo.xing" min-width="100"/> | 5 | <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?'名':'First Name'" prop="personInfo.ming" min-width="100"/> |
| 6 | <el-table-column :label="language==0?'短名':'Nick Name'" prop="personInfo.shortName" min-width="110"/> | 7 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="personInfo.countryName" :min-width="language==0?'100':'120'"/> |
| 8 | <!-- <el-table-column :label="language==0?'短名':'Nick Name'" prop="personInfo.shortName" min-width="110"/>--> | ||
| 7 | <el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr"/> | 9 | <el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr"/> |
| 8 | <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/> | 10 | <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/>--> |
| 9 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="personInfo.birth" width="110"/> | 11 | <!-- <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="personInfo.phone" min-width="130"/>--> |
| 10 | <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="personInfo.phone" min-width="130"/> | 12 | <!-- <el-table-column :label="language==0?'邮箱':'E-mail'" prop="personInfo.email" width="150"/>--> |
| 11 | <el-table-column :label="language==0?'邮箱':'E-mail'" prop="personInfo.email" width="150"/> | 13 | <el-table-column :label="language==0?'证件类型':'ID Type'" :width="language==0?'':'140'" prop="personInfo.idcTypeStr"/> |
| 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?'证件号码':'ID NO.'" prop="personInfo.idcCode" width="200"/> |
| 15 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="personInfo.birth" width="110"/> | ||
| 14 | <el-table-column :label="language==0?'会员角色':'Role'" width="150"> | 16 | <el-table-column :label="language==0?'会员角色':'Role'" width="150"> |
| 15 | <template #default="scope"> | 17 | <template #default="scope"> |
| 16 | <div class="esp"> | 18 | <div class="esp"> |
| ... | @@ -26,8 +28,7 @@ | ... | @@ -26,8 +28,7 @@ |
| 26 | </div> | 28 | </div> |
| 27 | </template> | 29 | </template> |
| 28 | </el-table-column> | 30 | </el-table-column> |
| 29 | <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="personInfo.address" min-width="140"/> | 31 | <!-- <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 | <el-table-column :label="language==0?'报项':'Entries'" min-width="300" :fixed="hasAction?false:'right'"> |
| 32 | <template #default="props"> | 33 | <template #default="props"> |
| 33 | <ol> | 34 | <ol> |
| ... | @@ -45,7 +46,7 @@ | ... | @@ -45,7 +46,7 @@ |
| 45 | </el-table-column> | 46 | </el-table-column> |
| 46 | <el-table-column :fixed="hasAction?false:'right'" min-width="100" :label="language==0?'保险费':'Premium'" prop="insuranceFee"> | 47 | <el-table-column :fixed="hasAction?false:'right'" min-width="100" :label="language==0?'保险费':'Premium'" prop="insuranceFee"> |
| 47 | <template #default="scope"> | 48 | <template #default="scope"> |
| 48 | <span class="text-primary">¥{{ scope.row.insuranceFee }}</span> | 49 | <span class="text-primary">{{ language==0?'¥':'£' }}{{ scope.row.insuranceFee }}</span> |
| 49 | </template> | 50 | </template> |
| 50 | </el-table-column> | 51 | </el-table-column> |
| 51 | <!-- 补充信息--> | 52 | <!-- 补充信息--> |
| ... | @@ -69,6 +70,11 @@ | ... | @@ -69,6 +70,11 @@ |
| 69 | </template> | 70 | </template> |
| 70 | </el-table-column> | 71 | </el-table-column> |
| 71 | </el-table> | 72 | </el-table> |
| 73 | <div v-if="showSummary" class="rowSummary"> | ||
| 74 | <div> | ||
| 75 | {{ language==0?'金额小计':'Amount' }}: <span>{{ language==0?'¥':'£' }}{{ total }}</span> | ||
| 76 | </div> | ||
| 77 | </div> | ||
| 72 | 78 | ||
| 73 | </template> | 79 | </template> |
| 74 | 80 | ||
| ... | @@ -95,12 +101,23 @@ const props = defineProps({ | ... | @@ -95,12 +101,23 @@ const props = defineProps({ |
| 95 | type: Boolean, | 101 | type: Boolean, |
| 96 | required: false, | 102 | required: false, |
| 97 | default: true | 103 | default: true |
| 104 | }, | ||
| 105 | showSummary:{ | ||
| 106 | type: Boolean, | ||
| 107 | required: false, | ||
| 108 | default: false | ||
| 109 | }, | ||
| 110 | total:{ | ||
| 111 | type: String, | ||
| 112 | required: false, | ||
| 113 | default: '0' | ||
| 98 | } | 114 | } |
| 99 | }) | 115 | }) |
| 100 | import cache from "@/plugins/cache"; | 116 | import cache from "@/plugins/cache"; |
| 101 | const language = ref(cache.local.get('language') || 0) | 117 | const language = ref(cache.local.get('language') || 0) |
| 102 | const extraTableHead = ref([]) | 118 | const extraTableHead = ref([]) |
| 103 | const loading = ref(true) | 119 | const loading = ref(true) |
| 120 | const sumText = ref('保险费') | ||
| 104 | getTableHead() | 121 | getTableHead() |
| 105 | const goPersonInfo = (row) => { | 122 | const goPersonInfo = (row) => { |
| 106 | emit('editExtra', row) | 123 | emit('editExtra', row) |
| ... | @@ -111,8 +128,17 @@ function getTableHead() { | ... | @@ -111,8 +128,17 @@ function getTableHead() { |
| 111 | loading.value = false | 128 | loading.value = false |
| 112 | }) | 129 | }) |
| 113 | } | 130 | } |
| 131 | function totalMethod() { | ||
| 132 | } | ||
| 114 | </script> | 133 | </script> |
| 115 | 134 | ||
| 116 | <style scoped> | 135 | <style scoped lang="scss"> |
| 117 | 136 | .rowSummary{text-align: right;padding: 0 20px; | |
| 137 | height: 40px;line-height: 40px; | ||
| 138 | background: #FAFBFD;font-size: 16px; | ||
| 139 | color: #95A1A6; | ||
| 140 | border: 1px solid #EEEFF0; | ||
| 141 | span{font-size: 18px;font-family: DIN Alternate; | ||
| 142 | color: #000;} | ||
| 143 | } | ||
| 118 | </style> | 144 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div class="mt20"></div> | ||
| 2 | <el-table :data="list" border style="width: 100%"> | 3 | <el-table :data="list" border style="width: 100%"> |
| 4 | <el-table-column :label="language==0?'序号':'Index'" type="index" width="70" align="center"/> | ||
| 3 | <el-table-column :label="language==0?'组别代码':'Group code'" width="120px" prop="zuName"/> | 5 | <el-table-column :label="language==0?'组别代码':'Group code'" width="120px" prop="zuName"/> |
| 4 | <el-table-column :label="language==0?'组别':'Group'" prop="project.name"/> | 6 | <el-table-column :label="language==0?'组别':'Group'" prop="project.name"/> |
| 5 | <el-table-column :label="language==0?'舞种':'Dance Style'" width="120px" prop="project.danceType"/> | 7 | <el-table-column :label="language==0?'舞种':'Dance Style'" width="120px" prop="project.danceType"/> |
| ... | @@ -14,7 +16,7 @@ | ... | @@ -14,7 +16,7 @@ |
| 14 | <el-table-column :label="language==0?'报名费':'Registration Fee'" width="120px" prop=""> | 16 | <el-table-column :label="language==0?'报名费':'Registration Fee'" width="120px" prop=""> |
| 15 | <template #default="scope"> | 17 | <template #default="scope"> |
| 16 | <div class="text-primary"> | 18 | <div class="text-primary"> |
| 17 | ¥{{ scope.row.project.serviceFee }} | 19 | {{ language==0?'¥':'£' }}{{ scope.row.project.serviceFee }} |
| 18 | </div> | 20 | </div> |
| 19 | </template> | 21 | </template> |
| 20 | </el-table-column> | 22 | </el-table-column> |
| ... | @@ -27,7 +29,11 @@ | ... | @@ -27,7 +29,11 @@ |
| 27 | </template> | 29 | </template> |
| 28 | </el-table-column> | 30 | </el-table-column> |
| 29 | </el-table> | 31 | </el-table> |
| 30 | 32 | <div v-if="showSummary" class="rowSummary"> | |
| 33 | <div> | ||
| 34 | {{ language==0?'金额小计':'Amount' }}: <span>{{ language==0?'¥':'£' }}{{ total }}</span> | ||
| 35 | </div> | ||
| 36 | </div> | ||
| 31 | </template> | 37 | </template> |
| 32 | 38 | ||
| 33 | <script setup> | 39 | <script setup> |
| ... | @@ -41,6 +47,16 @@ const props = defineProps({ | ... | @@ -41,6 +47,16 @@ const props = defineProps({ |
| 41 | type: Boolean, | 47 | type: Boolean, |
| 42 | required: false, | 48 | required: false, |
| 43 | default: true | 49 | default: true |
| 50 | }, | ||
| 51 | showSummary:{ | ||
| 52 | type: Boolean, | ||
| 53 | required: false, | ||
| 54 | default: false | ||
| 55 | }, | ||
| 56 | total:{ | ||
| 57 | type: String, | ||
| 58 | required: false, | ||
| 59 | default: '0' | ||
| 44 | } | 60 | } |
| 45 | }) | 61 | }) |
| 46 | import cache from "@/plugins/cache"; | 62 | import cache from "@/plugins/cache"; |
| ... | @@ -50,6 +66,12 @@ const remove = (id) => { | ... | @@ -50,6 +66,12 @@ const remove = (id) => { |
| 50 | } | 66 | } |
| 51 | </script> | 67 | </script> |
| 52 | 68 | ||
| 53 | <style scoped> | 69 | <style scoped lang="scss"> |
| 54 | 70 | .rowSummary{text-align: right;padding: 0 20px; | |
| 71 | height: 40px;line-height: 40px; | ||
| 72 | background: #FAFBFD;font-size: 16px; | ||
| 73 | color: #95A1A6; | ||
| 74 | border: 1px solid #EEEFF0; | ||
| 75 | span{font-size: 18px;font-family: DIN Alternate;color: #000;} | ||
| 76 | } | ||
| 55 | </style> | 77 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div class="app-container"> | 2 | <div class="app-container" v-loading="loading"> |
| 3 | <div class="mt30" /> | 3 | <div class="mt30"/> |
| 4 | <div class="box mb20 "> | 4 | <div v-if="error"> |
| 5 | <el-result | ||
| 6 | icon="error" | ||
| 7 | title="未找到赛事" | ||
| 8 | > | ||
| 9 | <template #extra> | ||
| 10 | </template> | ||
| 11 | </el-result> | ||
| 12 | </div> | ||
| 13 | <div class="box mb20 " v-else> | ||
| 5 | <el-card class="mb20"> | 14 | <el-card class="mb20"> |
| 6 | <el-row :gutter="20"> | 15 | <el-row :gutter="20"> |
| 7 | <el-col :lg="7" :md="24" :xl="6" > | 16 | <el-col :lg="7" :md="24" :xl="6"> |
| 8 | <img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)" > | 17 | <img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)"> |
| 9 | </el-col> | 18 | </el-col> |
| 10 | <el-col :lg="9" :md="12" :xl="10"> | 19 | <el-col :lg="9" :md="12" :xl="10"> |
| 11 | <h3> | 20 | <h3> |
| 12 | {{ matchData.name }} | 21 | {{ matchData.name }} |
| 13 | </h3> | 22 | </h3> |
| 14 | <p class="ppl"><label class="bm1">比赛时间:</label>{{matchData.beginTime?.slice(0,10)}} 至 {{ matchData.endTime?.slice(0,10) }}</p> | 23 | <p class="ppl"><label class="bm1">比赛时间:</label>{{ matchData.beginTime?.slice(0, 10) }} 至 |
| 24 | {{ matchData.endTime?.slice(0, 10) }}</p> | ||
| 15 | <p class="ppl"><label class="bm2">赛事级别:</label>{{ matchData.level }}</p> | 25 | <p class="ppl"><label class="bm2">赛事级别:</label>{{ matchData.level }}</p> |
| 16 | <p class="ppl"><label class="bm3">地    点:</label>{{ matchData.address }}</p> | 26 | <p class="ppl"><label class="bm3">地    点:</label>{{ matchData.address }}</p> |
| 17 | <p class="ppl"><label class="bm4">报名截止:</label>{{ matchData.signEndTime?.slice(0,10) }}</p> | 27 | <p class="ppl"><label class="bm4">报名截止:</label>{{ matchData.signEndTime?.slice(0, 10) }}</p> |
| 18 | </el-col> | 28 | </el-col> |
| 19 | <el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'"> | 29 | <el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'"> |
| 20 | <p class="countDownTitle"><span>报名截止倒计时</span></p> | 30 | <p class="countDownTitle"><span>报名截止倒计时</span></p> |
| ... | @@ -45,7 +55,9 @@ | ... | @@ -45,7 +55,9 @@ |
| 45 | <el-card :body-style="{'padding':'0'}"> | 55 | <el-card :body-style="{'padding':'0'}"> |
| 46 | <div class="lineHead"> | 56 | <div class="lineHead"> |
| 47 | <ul> | 57 | <ul> |
| 48 | <li v-for="l in menu" :key="l.name" @click="changeMenu(menu,l)" :class="l.active==1?'active':''">{{l.name}}</li> | 58 | <li v-for="l in menu" :key="l.name" @click="changeMenu(menu,l)" :class="l.active==1?'active':''"> |
| 59 | {{ l.name }} | ||
| 60 | </li> | ||
| 49 | </ul> | 61 | </ul> |
| 50 | </div> | 62 | </div> |
| 51 | <matchInfo :form="matchData" v-if="menu[0].active==1"/> | 63 | <matchInfo :form="matchData" v-if="menu[0].active==1"/> |
| ... | @@ -69,12 +81,13 @@ | ... | @@ -69,12 +81,13 @@ |
| 69 | <td>{{ p.danceTypeDetailStr }}</td> | 81 | <td>{{ p.danceTypeDetailStr }}</td> |
| 70 | <td>{{ p.playTypeStr }}</td> | 82 | <td>{{ p.playTypeStr }}</td> |
| 71 | <td>{{ p.birthPeriod }}</td> | 83 | <td>{{ p.birthPeriod }}</td> |
| 72 | <td>¥{{ p.serviceFee }}</td> | 84 | <td>{{ language==0?'¥':'£' }}{{ p.serviceFee }}</td> |
| 73 | </tr> | 85 | </tr> |
| 74 | </table> | 86 | </table> |
| 75 | </div> | 87 | </div> |
| 76 | 88 | ||
| 77 | <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/> | 89 | <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptProjectList?.length == 0" |
| 90 | description=" "/> | ||
| 78 | </div> | 91 | </div> |
| 79 | </div> | 92 | </div> |
| 80 | <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> | 93 | <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> |
| ... | @@ -82,7 +95,7 @@ | ... | @@ -82,7 +95,7 @@ |
| 82 | <el-row :gutter="20" v-if="matchData.signType == '0'"> | 95 | <el-row :gutter="20" v-if="matchData.signType == '0'"> |
| 83 | <el-col v-for="t in signDoneGroupList" :key="t.id" :span="8"> | 96 | <el-col v-for="t in signDoneGroupList" :key="t.id" :span="8"> |
| 84 | <div class="teamItem"> | 97 | <div class="teamItem"> |
| 85 | <el-avatar :size="60" :src="t.imgUrl||t.avatar" /> | 98 | <el-avatar :size="60" :src="t.imgUrl||t.avatar"/> |
| 86 | <span class="name">{{ t.name }}</span> | 99 | <span class="name">{{ t.name }}</span> |
| 87 | </div> | 100 | </div> |
| 88 | </el-col> | 101 | </el-col> |
| ... | @@ -90,32 +103,35 @@ | ... | @@ -90,32 +103,35 @@ |
| 90 | <el-row :gutter="20" v-else> | 103 | <el-row :gutter="20" v-else> |
| 91 | <el-col :span="24" v-for="(t,index) in signDoneGroupList" :key="t.id"> | 104 | <el-col :span="24" v-for="(t,index) in signDoneGroupList" :key="t.id"> |
| 92 | <div class="nowteamItem"> | 105 | <div class="nowteamItem"> |
| 93 | <span>{{index+1}}.</span> | 106 | <span>{{ index + 1 }}.</span> |
| 94 | <el-avatar :size="80" :src="t.imgUrl||t.avatar" :fit="cover"/> | 107 | <el-avatar :size="80" :src="t.imgUrl||t.avatar" :fit="cover"/> |
| 95 | <div class="info"> | 108 | <div class="info"> |
| 96 | <h3 class="name">{{ t.name }}</h3> | 109 | <h3 class="name">{{ t.name }}</h3> |
| 97 | <p v-if="t.extraInfo"> | 110 | <p v-if="t.extraInfo"> |
| 98 | <span v-for="(ee,index) in JSON.parse(t.extraInfo)" :key="index" v-show="(ee?.type == '0'||ee?.type == '4')&&index<2"> | 111 | <span v-for="(ee,index) in JSON.parse(t.extraInfo)" :key="index" |
| 99 | {{ee.value}}   | 112 | v-show="(ee?.type == '0'||ee?.type == '4')&&index<2"> |
| 113 | {{ ee.value }}   | ||
| 100 | </span> | 114 | </span> |
| 101 | </p> | 115 | </p> |
| 102 | </div> | 116 | </div> |
| 103 | <p class="rr"><span>{{t.renCi}}</span> 人参赛</p> | 117 | <p class="rr"><span>{{ t.renCi }}</span> 人参赛</p> |
| 104 | </div> | 118 | </div> |
| 105 | </el-col> | 119 | </el-col> |
| 106 | </el-row> | 120 | </el-row> |
| 107 | <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" /> | 121 | <el-empty :image="`/img/order_no.png`" :image-size="228" |
| 122 | v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description=""/> | ||
| 108 | </div> | 123 | </div> |
| 109 | <div v-if="menu[4].active==1"> | 124 | <div v-if="menu[4].active==1"> |
| 110 | <!-- 成绩--> | 125 | <!-- 成绩--> |
| 111 | <el-empty :image="`/img/order_no.png`" :image-size="228"/> | 126 | <el-empty :image="`/img/order_no.png`" :image-size="228"/> |
| 112 | </div> | 127 | </div> |
| 113 | <div v-if="menu[5].active==1" class="pd20"> | 128 | <div v-if="menu[5].active==1" class="pd20"> |
| 114 | <div class="xzbox"> | 129 | <div class="xzbox"> |
| 115 | <div v-html="matchData.signKnow"></div> | 130 | <div v-html="matchData.signKnow"></div> |
| 116 | <el-link v-if="matchData.signKnowUrl" type="primary" :href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank"> | 131 | <el-link v-if="matchData.signKnowUrl" type="primary" |
| 132 | :href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank"> | ||
| 117 | <el-icon :size="20"> | 133 | <el-icon :size="20"> |
| 118 | <Download /> | 134 | <Download/> |
| 119 | </el-icon> | 135 | </el-icon> |
| 120 | {{ JSON.parse(matchData.signKnowUrl)[0]?.name }} | 136 | {{ JSON.parse(matchData.signKnowUrl)[0]?.name }} |
| 121 | </el-link> | 137 | </el-link> |
| ... | @@ -135,10 +151,12 @@ | ... | @@ -135,10 +151,12 @@ |
| 135 | <el-card :body-style="{'padding':'0'}"> | 151 | <el-card :body-style="{'padding':'0'}"> |
| 136 | <div class="lineHead"> | 152 | <div class="lineHead"> |
| 137 | <ul> | 153 | <ul> |
| 138 | <li v-for="l in menu1" :key="l.name" @click="changeMenu(menu1,l)" :class="l.active==1?'active':''">{{l.name}}</li> | 154 | <li v-for="l in menu1" :key="l.name" @click="changeMenu(menu1,l)" :class="l.active==1?'active':''"> |
| 155 | {{ l.name }} | ||
| 156 | </li> | ||
| 139 | </ul> | 157 | </ul> |
| 140 | </div> | 158 | </div> |
| 141 | <!-- 分站赛--> | 159 | <!-- 分站赛--> |
| 142 | <substation-list v-if="menu1[0].active==1" :list="matchData.cpts"/> | 160 | <substation-list v-if="menu1[0].active==1" :list="matchData.cpts"/> |
| 143 | <matchInfo :form="matchData" v-if="menu1[1].active==1"/> | 161 | <matchInfo :form="matchData" v-if="menu1[1].active==1"/> |
| 144 | <match-schedule-list :match-data="matchData" v-if="menu1[2].active==1"/> | 162 | <match-schedule-list :match-data="matchData" v-if="menu1[2].active==1"/> |
| ... | @@ -146,6 +164,7 @@ | ... | @@ -146,6 +164,7 @@ |
| 146 | </el-col> | 164 | </el-col> |
| 147 | </el-row> | 165 | </el-row> |
| 148 | </div> | 166 | </div> |
| 167 | |||
| 149 | </div> | 168 | </div> |
| 150 | </template> | 169 | </template> |
| 151 | 170 | ||
| ... | @@ -155,40 +174,49 @@ import MatchScheduleList from "@/viewsPc/match/components/matchScheduleList"; | ... | @@ -155,40 +174,49 @@ import MatchScheduleList from "@/viewsPc/match/components/matchScheduleList"; |
| 155 | import MatchNews from "@/viewsPc/match/components/matchNews"; | 174 | import MatchNews from "@/viewsPc/match/components/matchNews"; |
| 156 | import SubstationList from "@/viewsPc/match/components/substation-list"; | 175 | import SubstationList from "@/viewsPc/match/components/substation-list"; |
| 157 | 176 | ||
| 158 | import { getCurrentInstance, ref } from 'vue' | 177 | import {getCurrentInstance, ref} from 'vue' |
| 159 | import { reactive, onMounted } from '@vue/runtime-core' | 178 | import {reactive, onMounted} from '@vue/runtime-core' |
| 160 | import { useRoute, useRouter } from 'vue-router' | 179 | import {useRoute, useRouter} from 'vue-router' |
| 161 | 180 | ||
| 162 | const route = useRoute() | 181 | const route = useRoute() |
| 163 | const router = useRouter() | 182 | const router = useRouter() |
| 164 | const { proxy } = getCurrentInstance() | 183 | const {proxy} = getCurrentInstance() |
| 165 | import * as match from '@/apiPc/match' | 184 | import * as match from '@/apiPc/match' |
| 166 | import { toRefs } from '@vueuse/shared' | 185 | import {toRefs} from '@vueuse/shared' |
| 167 | import {dayjs, ElMessage} from 'element-plus' | 186 | import {dayjs, ElMessage, ElMessageBox} from 'element-plus' |
| 168 | import useUserStore from "@/store/modules/user"; | 187 | import useUserStore from "@/store/modules/user"; |
| 169 | import QuickRow from "@/viewsPc/match/components/quick-row"; | 188 | import QuickRow from "@/viewsPc/match/components/quick-row"; |
| 189 | import {isRelogin} from "@/utils/request"; | ||
| 190 | |||
| 170 | const data = reactive({ | 191 | const data = reactive({ |
| 192 | loading:false, | ||
| 193 | error:false, | ||
| 171 | matchData: {}, | 194 | matchData: {}, |
| 172 | matchId: 0, | 195 | matchId: 0, |
| 173 | groupId: '', | 196 | groupId: '', |
| 174 | activeName2:'first', | 197 | activeName2: 'first', |
| 175 | popupGroupList:false, | 198 | popupGroupList: false, |
| 176 | menu:[{name:'赛事详情',active:1},{name:'赛事设项',active:0},{name:'日程',active:0},{name:'参赛队',active:0},{name:'成绩',active:0},{name:'报名须知',active:0}], | 199 | menu: [{name: '赛事详情', active: 1}, {name: '赛事设项', active: 0}, {name: '日程', active: 0}, { |
| 177 | menu1:[{name:'分站赛',active:1},{name:'赛事详情',active:0},{name:'日程',active:0}], | 200 | name: '参赛队', |
| 201 | active: 0 | ||
| 202 | }, {name: '成绩', active: 0}, {name: '报名须知', active: 0}], | ||
| 203 | menu1: [{name: '分站赛', active: 1}, {name: '赛事详情', active: 0}, {name: '日程', active: 0}], | ||
| 178 | signDoneGroupList: [], | 204 | signDoneGroupList: [], |
| 179 | time:'' | 205 | time: '' |
| 180 | }) | 206 | }) |
| 181 | const {time,matchData,matchId,groupId,activeName2,popupGroupList,menu,menu1,signDoneGroupList} = toRefs(data) | 207 | const {loading,error,time, matchData, matchId, groupId, activeName2, popupGroupList, menu, menu1, signDoneGroupList} = toRefs(data) |
| 208 | import cache from "@/plugins/cache" | ||
| 209 | const language = ref(cache.local.get('language') || 0) | ||
| 182 | const group = useUserStore().group | 210 | const group = useUserStore().group |
| 183 | const user = useUserStore().user | 211 | const user = useUserStore().user |
| 184 | onMounted(() => { | 212 | onMounted(() => { |
| 185 | if(group){ | 213 | if (group) { |
| 186 | groupId.value = group.id | 214 | groupId.value = group.id |
| 187 | } else { | 215 | } else { |
| 188 | groupId.value = 0 | 216 | groupId.value = 0 |
| 189 | } | 217 | } |
| 190 | match.getMaList().then((res) => { | 218 | match.getMaList().then((res) => { |
| 191 | if(route.params.id!=0){ | 219 | if (route.params.id != 0) { |
| 192 | matchId.value = route.params.id | 220 | matchId.value = route.params.id |
| 193 | } else { | 221 | } else { |
| 194 | matchId.value = res.rows[0].id | 222 | matchId.value = res.rows[0].id |
| ... | @@ -198,39 +226,49 @@ onMounted(() => { | ... | @@ -198,39 +226,49 @@ onMounted(() => { |
| 198 | }) | 226 | }) |
| 199 | 227 | ||
| 200 | }) | 228 | }) |
| 229 | |||
| 201 | function building() { | 230 | function building() { |
| 202 | ElMessage.warning('暂未开发,敬请期待!') | 231 | ElMessage.warning('暂未开发,敬请期待!') |
| 203 | } | 232 | } |
| 233 | |||
| 204 | function getMatch(id) { | 234 | function getMatch(id) { |
| 205 | if(id!=0) | 235 | loading.value = true |
| 206 | match.getMatchById({ id: id }).then(res => { | 236 | match.getMatchById({id: id}).then(res => { |
| 207 | matchData.value = res.data | 237 | matchData.value = res.data |
| 238 | loading.value = false | ||
| 208 | var today = dayjs().format('YYYY-MM-DD HH:mm:ss') | 239 | var today = dayjs().format('YYYY-MM-DD HH:mm:ss') |
| 209 | time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond') | 240 | time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond') |
| 241 | }).catch(res=>{ | ||
| 242 | error.value = true | ||
| 243 | loading.value = false | ||
| 244 | |||
| 210 | }) | 245 | }) |
| 211 | } | 246 | } |
| 247 | |||
| 212 | function getGroupListByCptId(id) { | 248 | function getGroupListByCptId(id) { |
| 213 | match.getGroupListByCptId(id).then(res => { | 249 | match.getGroupListByCptId(id).then(res => { |
| 214 | signDoneGroupList.value = res.data | 250 | signDoneGroupList.value = res.data |
| 215 | }) | 251 | }) |
| 216 | } | 252 | } |
| 217 | function changeMenu(menu,l){ | 253 | |
| 218 | for(const n of menu){ | 254 | function changeMenu(menu, l) { |
| 219 | if(n==l){ | 255 | for (const n of menu) { |
| 256 | if (n == l) { | ||
| 220 | n.active = 1 | 257 | n.active = 1 |
| 221 | } else { | 258 | } else { |
| 222 | n.active = 0 | 259 | n.active = 0 |
| 223 | } | 260 | } |
| 224 | } | 261 | } |
| 225 | } | 262 | } |
| 263 | |||
| 226 | function choseSignType() { | 264 | function choseSignType() { |
| 227 | if(!user){ | 265 | console.log(matchData.value.signType,user) |
| 228 | ElMessage.warning('请登录') | 266 | if (!user) { |
| 267 | useUserStore().setReLogin(true) | ||
| 229 | return | 268 | return |
| 230 | } | 269 | } |
| 231 | console.log(matchData.value.signType) | ||
| 232 | checkIsSign().then(() => { | 270 | checkIsSign().then(() => { |
| 233 | if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) { | 271 | if (matchData.value.signType == '0' || (matchData.value.signType == '2' && user.utype == '1')) { |
| 234 | // 个人报名 | 272 | // 个人报名 |
| 235 | // router.push({ | 273 | // router.push({ |
| 236 | // path: `${matchId.value}/singleSign` | 274 | // path: `${matchId.value}/singleSign` |
| ... | @@ -245,7 +283,7 @@ function choseSignType() { | ... | @@ -245,7 +283,7 @@ function choseSignType() { |
| 245 | }) | 283 | }) |
| 246 | window.open(routeData.href, '_blank') | 284 | window.open(routeData.href, '_blank') |
| 247 | } | 285 | } |
| 248 | if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){ | 286 | if (matchData.value.signType == '1' || (matchData.value.signType == '2' && user.utype == '2')) { |
| 249 | const routeData = router.resolve({ | 287 | const routeData = router.resolve({ |
| 250 | path: `${matchId.value}/teamSign`, | 288 | path: `${matchId.value}/teamSign`, |
| 251 | query: { | 289 | query: { |
| ... | @@ -267,7 +305,18 @@ function checkIsSign() { | ... | @@ -267,7 +305,18 @@ function checkIsSign() { |
| 267 | } | 305 | } |
| 268 | return match.getMySignInfo(obj).then(res => { | 306 | return match.getMySignInfo(obj).then(res => { |
| 269 | if (res.data.type == '1') { | 307 | if (res.data.type == '1') { |
| 270 | ElMessage.error('已报名,不能重复报名') | 308 | ElMessageBox.confirm( |
| 309 | '已报名,不能重复报名,是否前往个人中心查看', | ||
| 310 | '提示', | ||
| 311 | { | ||
| 312 | confirmButtonText: '确定', | ||
| 313 | cancelButtonText: '取消', | ||
| 314 | type: 'warning', | ||
| 315 | } | ||
| 316 | ).then(() => { | ||
| 317 | router.push({name: 'myMatch'}) | ||
| 318 | }) | ||
| 319 | |||
| 271 | return Promise.reject('rejected message') | 320 | return Promise.reject('rejected message') |
| 272 | } | 321 | } |
| 273 | }) | 322 | }) |
| ... | @@ -275,22 +324,49 @@ function checkIsSign() { | ... | @@ -275,22 +324,49 @@ function checkIsSign() { |
| 275 | </script> | 324 | </script> |
| 276 | 325 | ||
| 277 | <style scoped lang="scss"> | 326 | <style scoped lang="scss"> |
| 327 | .app-container{min-height: 80vh;} | ||
| 328 | .indexTitle { | ||
| 329 | margin: 20px 0 12px; | ||
| 278 | 330 | ||
| 279 | .indexTitle{margin: 20px 0 12px; | 331 | h3 { |
| 280 | h3{ | ||
| 281 | font-size: 20px; | 332 | font-size: 20px; |
| 282 | color:var(--el-color-primary); | 333 | color: var(--el-color-primary); |
| 334 | } | ||
| 335 | } | ||
| 336 | |||
| 337 | |||
| 338 | .ppl { | ||
| 339 | color: #29343C; | ||
| 340 | |||
| 341 | label { | ||
| 342 | color: #929AA0; | ||
| 283 | } | 343 | } |
| 284 | } | 344 | } |
| 285 | 345 | ||
| 346 | .bm1 { | ||
| 347 | background: url("@/assets/dance/bm1.png") no-repeat left; | ||
| 348 | background-size: contain; | ||
| 349 | padding-left: 24px; | ||
| 350 | } | ||
| 351 | |||
| 352 | .bm2 { | ||
| 353 | background: url("@/assets/dance/bm2.png") no-repeat left; | ||
| 354 | background-size: contain; | ||
| 355 | padding-left: 24px; | ||
| 356 | } | ||
| 357 | |||
| 358 | .bm3 { | ||
| 359 | background: url("@/assets/dance/bm3.png") no-repeat left; | ||
| 360 | background-size: contain; | ||
| 361 | padding-left: 24px; | ||
| 362 | } | ||
| 286 | 363 | ||
| 287 | .ppl{color: #29343C; | 364 | .bm4 { |
| 288 | label{color: #929AA0;} | 365 | background: url("@/assets/dance/bm4.png") no-repeat left; |
| 366 | background-size: contain; | ||
| 367 | padding-left: 24px; | ||
| 289 | } | 368 | } |
| 290 | .bm1{background: url("@/assets/dance/bm1.png") no-repeat left;background-size: contain;padding-left: 24px;} | 369 | |
| 291 | .bm2{background: url("@/assets/dance/bm2.png") no-repeat left;background-size: contain;padding-left: 24px;} | ||
| 292 | .bm3{background: url("@/assets/dance/bm3.png") no-repeat left;background-size: contain;padding-left: 24px;} | ||
| 293 | .bm4{background: url("@/assets/dance/bm4.png") no-repeat left;background-size: contain;padding-left: 24px;} | ||
| 294 | .app-container { | 370 | .app-container { |
| 295 | padding: 0; | 371 | padding: 0; |
| 296 | background: #F5F7F9; | 372 | background: #F5F7F9; |
| ... | @@ -455,7 +531,11 @@ function checkIsSign() { | ... | @@ -455,7 +531,11 @@ function checkIsSign() { |
| 455 | color: #000000; | 531 | color: #000000; |
| 456 | margin: 0 0 10px; | 532 | margin: 0 0 10px; |
| 457 | font-size: 24px; | 533 | font-size: 24px; |
| 458 | img{margin-right: 10px} | 534 | |
| 535 | img { | ||
| 536 | margin-right: 10px | ||
| 537 | } | ||
| 538 | |||
| 459 | .typeTag { | 539 | .typeTag { |
| 460 | border-radius: 13px 13px 13px 0; | 540 | border-radius: 13px 13px 13px 0; |
| 461 | margin-left: 10px; | 541 | margin-left: 10px; |
| ... | @@ -466,7 +546,11 @@ function checkIsSign() { | ... | @@ -466,7 +546,11 @@ function checkIsSign() { |
| 466 | color: #7B7F83; | 546 | color: #7B7F83; |
| 467 | font-size: 16px; | 547 | font-size: 16px; |
| 468 | } | 548 | } |
| 469 | .countDownTitle{font-size: 14px;} | 549 | |
| 550 | .countDownTitle { | ||
| 551 | font-size: 14px; | ||
| 552 | } | ||
| 553 | |||
| 470 | .el-button.el-button--primary { | 554 | .el-button.el-button--primary { |
| 471 | background: #CA171D; | 555 | background: #CA171D; |
| 472 | border: none; | 556 | border: none; |
| ... | @@ -477,7 +561,9 @@ function checkIsSign() { | ... | @@ -477,7 +561,9 @@ function checkIsSign() { |
| 477 | .gg { | 561 | .gg { |
| 478 | margin: 0 0 28px; | 562 | margin: 0 0 28px; |
| 479 | 563 | ||
| 480 | h3 {border-left: 2px solid #BA2E29; padding: 0 0 0 12px; | 564 | h3 { |
| 565 | border-left: 2px solid #BA2E29; | ||
| 566 | padding: 0 0 0 12px; | ||
| 481 | margin: 20px 0 8px; | 567 | margin: 20px 0 8px; |
| 482 | font-weight: 500; | 568 | font-weight: 500; |
| 483 | font-size: 16px; | 569 | font-size: 16px; |
| ... | @@ -488,7 +574,10 @@ function checkIsSign() { | ... | @@ -488,7 +574,10 @@ function checkIsSign() { |
| 488 | color: #000; | 574 | color: #000; |
| 489 | margin: 0 0 8px; | 575 | margin: 0 0 8px; |
| 490 | line-height: 24px; | 576 | line-height: 24px; |
| 491 | label{color: #7D8790;} | 577 | |
| 578 | label { | ||
| 579 | color: #7D8790; | ||
| 580 | } | ||
| 492 | } | 581 | } |
| 493 | 582 | ||
| 494 | .pp { | 583 | .pp { |
| ... | @@ -611,8 +700,11 @@ function checkIsSign() { | ... | @@ -611,8 +700,11 @@ function checkIsSign() { |
| 611 | margin: 0 0 20px; | 700 | margin: 0 0 20px; |
| 612 | 701 | ||
| 613 | button { | 702 | button { |
| 614 | width: 90%;background: var(--el-color-primary); | 703 | width: 90%; |
| 615 | font-size: 20px;margin: 30px auto 0;display: block; | 704 | background: var(--el-color-primary); |
| 705 | font-size: 20px; | ||
| 706 | margin: 30px auto 0; | ||
| 707 | display: block; | ||
| 616 | height: 50px; | 708 | height: 50px; |
| 617 | } | 709 | } |
| 618 | } | 710 | } |
| ... | @@ -638,24 +730,50 @@ function checkIsSign() { | ... | @@ -638,24 +730,50 @@ function checkIsSign() { |
| 638 | height: 1px; | 730 | height: 1px; |
| 639 | } | 731 | } |
| 640 | 732 | ||
| 641 | .table{width: 100%;border-left: 1px solid #e1e1e1;border-top:1px solid #e1e1e1; | 733 | .table { |
| 642 | th{background: #eee;padding: 6px 10px; | 734 | width: 100%; |
| 735 | border-left: 1px solid #e1e1e1; | ||
| 736 | border-top: 1px solid #e1e1e1; | ||
| 737 | |||
| 738 | th { | ||
| 739 | background: #eee; | ||
| 740 | padding: 6px 10px; | ||
| 643 | border-right: 1px solid #e1e1e1; | 741 | border-right: 1px solid #e1e1e1; |
| 644 | border-bottom:1px solid #e1e1e1; | 742 | border-bottom: 1px solid #e1e1e1; |
| 645 | font-size: 15px; | 743 | font-size: 15px; |
| 646 | } | 744 | } |
| 647 | td{padding: 6px 10px;border-right: 1px solid #e1e1e1;font-size: 15px; | 745 | |
| 648 | border-bottom:1px solid #e1e1e1;vertical-align: middle;text-align: center; | 746 | td { |
| 649 | span{margin-right: 10px} | 747 | padding: 6px 10px; |
| 650 | span::after{content: ','} | 748 | border-right: 1px solid #e1e1e1; |
| 651 | span:last-child::after{content: ''} | 749 | font-size: 15px; |
| 750 | border-bottom: 1px solid #e1e1e1; | ||
| 751 | vertical-align: middle; | ||
| 752 | text-align: center; | ||
| 753 | |||
| 754 | span { | ||
| 755 | margin-right: 10px | ||
| 756 | } | ||
| 757 | |||
| 758 | span::after { | ||
| 759 | content: ',' | ||
| 760 | } | ||
| 761 | |||
| 762 | span:last-child::after { | ||
| 763 | content: '' | ||
| 764 | } | ||
| 652 | } | 765 | } |
| 653 | } | 766 | } |
| 654 | .flexLine{display: flex; | 767 | |
| 655 | label{font-weight: normal} | 768 | .flexLine { |
| 769 | display: flex; | ||
| 770 | |||
| 771 | label { | ||
| 772 | font-weight: normal | ||
| 773 | } | ||
| 656 | } | 774 | } |
| 657 | 775 | ||
| 658 | .nowteamItem{ | 776 | .nowteamItem { |
| 659 | height: 100px; | 777 | height: 100px; |
| 660 | background: #FBFCFD; | 778 | background: #FBFCFD; |
| 661 | border-radius: 10px; | 779 | border-radius: 10px; |
| ... | @@ -665,39 +783,89 @@ function checkIsSign() { | ... | @@ -665,39 +783,89 @@ function checkIsSign() { |
| 665 | padding: 0 20px; | 783 | padding: 0 20px; |
| 666 | overflow: hidden; | 784 | overflow: hidden; |
| 667 | text-overflow: ellipsis; | 785 | text-overflow: ellipsis; |
| 668 | .el-avatar {margin: 0 20px} | 786 | |
| 669 | .info{ | 787 | .el-avatar { |
| 670 | h3{margin: 0 0 15px;} | 788 | margin: 0 20px |
| 671 | p{margin: 0;color: #1ab394} | 789 | } |
| 790 | |||
| 791 | .info { | ||
| 792 | h3 { | ||
| 793 | margin: 0 0 15px; | ||
| 794 | } | ||
| 795 | |||
| 796 | p { | ||
| 797 | margin: 0; | ||
| 798 | color: #1ab394 | ||
| 799 | } | ||
| 800 | } | ||
| 801 | |||
| 802 | .rr { | ||
| 803 | text-align: right; | ||
| 804 | flex: 1; | ||
| 805 | |||
| 806 | span { | ||
| 807 | color: #1ab394 | ||
| 672 | } | 808 | } |
| 673 | .rr{text-align: right; flex: 1; | ||
| 674 | span{color: #1ab394} | ||
| 675 | } | 809 | } |
| 676 | } | 810 | } |
| 677 | 811 | ||
| 678 | .collapsebox{ | 812 | .collapsebox { |
| 679 | .el-collapse-item{margin-bottom: 15px;--el-collapse-content-bg-color:#F4F9FE; | 813 | .el-collapse-item { |
| 814 | margin-bottom: 15px; | ||
| 815 | --el-collapse-content-bg-color: #F4F9FE; | ||
| 680 | border: 2px solid #DDECFB; | 816 | border: 2px solid #DDECFB; |
| 681 | .table{background: #fff;} | 817 | |
| 818 | .table { | ||
| 819 | background: #fff; | ||
| 820 | } | ||
| 821 | } | ||
| 822 | |||
| 823 | .is-active { | ||
| 824 | --el-collapse-header-bg-color: #F4F9FE | ||
| 825 | } | ||
| 826 | |||
| 827 | :deep(.el-collapse-item__header) { | ||
| 828 | padding: 0 20px; | ||
| 682 | } | 829 | } |
| 683 | .is-active{--el-collapse-header-bg-color:#F4F9FE} | ||
| 684 | :deep(.el-collapse-item__header){padding: 0 20px;} | ||
| 685 | } | 830 | } |
| 686 | .funcBtns{display: flex; justify-content: space-around; | 831 | |
| 687 | div{text-align: center;background: #F7FAFF;box-shadow:0 0 10px #d4cae4; | 832 | .funcBtns { |
| 688 | border-radius: 15px;padding: 0px 10px 5px; | 833 | display: flex; |
| 689 | img{} | 834 | justify-content: space-around; |
| 690 | h4{margin: 0;font-size: 16px;} | 835 | |
| 836 | div { | ||
| 837 | text-align: center; | ||
| 838 | background: #F7FAFF; | ||
| 839 | box-shadow: 0 0 10px #d4cae4; | ||
| 840 | border-radius: 15px; | ||
| 841 | padding: 0px 10px 5px; | ||
| 842 | |||
| 843 | img { | ||
| 844 | } | ||
| 845 | |||
| 846 | h4 { | ||
| 847 | margin: 0; | ||
| 848 | font-size: 16px; | ||
| 849 | } | ||
| 691 | } | 850 | } |
| 692 | } | 851 | } |
| 693 | .table{white-space: nowrap} | 852 | |
| 853 | .table { | ||
| 854 | white-space: nowrap | ||
| 855 | } | ||
| 856 | |||
| 694 | @media (max-width: 800px) { | 857 | @media (max-width: 800px) { |
| 695 | .van-count-down{ | 858 | .van-count-down { |
| 696 | .block{margin: 0 10px;} | 859 | .block { |
| 860 | margin: 0 10px; | ||
| 861 | } | ||
| 862 | } | ||
| 863 | .colon { | ||
| 864 | display: none; | ||
| 697 | } | 865 | } |
| 698 | .colon{display: none;} | 866 | .funcBtns { |
| 699 | .funcBtns{ | 867 | div { |
| 700 | div{padding: 0 0 10px; | 868 | padding: 0 0 10px; |
| 701 | margin: 0 5px; | 869 | margin: 0 5px; |
| 702 | 870 | ||
| 703 | } | 871 | } | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div class="app-container" v-loading="loading"> | 2 | <div class="app-container" v-loading="loading"> |
| 3 | <div class="mt30" /> | 3 | <div class="mt30"/> |
| 4 | <div class="box mb20 "> | 4 | <div v-if="error"> |
| 5 | <el-result | ||
| 6 | icon="error" | ||
| 7 | :title="'No Data'" | ||
| 8 | > | ||
| 9 | <template #extra> | ||
| 10 | </template> | ||
| 11 | </el-result> | ||
| 12 | </div> | ||
| 13 | <div class="box mb20" v-else> | ||
| 5 | <el-card class="mb20"> | 14 | <el-card class="mb20"> |
| 6 | <el-row :gutter="20"> | 15 | <el-row :gutter="20"> |
| 7 | <el-col :lg="7" :md="12" :xl="6" > | 16 | <el-col :lg="7" :md="12" :xl="6"> |
| 8 | <img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)" > | 17 | <img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)"> |
| 9 | </el-col> | 18 | </el-col> |
| 10 | <el-col :lg="9" :md="12" :xl="10"> | 19 | <el-col :lg="9" :md="12" :xl="10"> |
| 11 | <h3 class="m0"> | 20 | <h3 class="m0"> |
| 12 | {{ matchData.name }} | 21 | {{ matchData.name }} |
| 13 | </h3> | 22 | </h3> |
| 14 | <p class="ppl"><label class="bm1">Playing Time:</label>{{matchData.beginTime?.slice(0,10)}} ~ {{ matchData.endTime?.slice(0,10) }}</p> | 23 | <p class="ppl"><label class="bm1">Playing Time:</label>{{ matchData.beginTime?.slice(0, 10) }} ~ |
| 24 | {{ matchData.endTime?.slice(0, 10) }}</p> | ||
| 15 | <p class="ppl"><label class="bm2">Event Level:</label>{{ matchData.level }}</p> | 25 | <p class="ppl"><label class="bm2">Event Level:</label>{{ matchData.level }}</p> |
| 16 | <p class="ppl" v-if="matchData.address"><label class="bm3">Location:</label>{{ matchData.address }}</p> | 26 | <p class="ppl" v-if="matchData.address"><label class="bm3">Location:</label>{{ matchData.address }}</p> |
| 17 | <p class="ppl" v-if="matchData.signEndTime"><label class="bm4">Registration Deadline:</label>{{ matchData.signEndTime?.slice(0,10) }}</p> | 27 | <p class="ppl" v-if="matchData.signEndTime"><label class="bm4">Registration |
| 28 | Deadline:</label>{{ matchData.signEndTime?.slice(0, 10) }}</p> | ||
| 18 | </el-col> | 29 | </el-col> |
| 19 | <el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'"> | 30 | <el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'"> |
| 20 | <p class="countDownTitle"><span>Registration deadline countdown</span></p> | 31 | <p class="countDownTitle"><span>Registration deadline countdown</span></p> |
| ... | @@ -33,7 +44,8 @@ | ... | @@ -33,7 +44,8 @@ |
| 33 | 44 | ||
| 34 | <div class="flexCenter"> | 45 | <div class="flexCenter"> |
| 35 | <el-button ref="RegisterRef" type="primary" round size="large" class="btn-lineG mb20 mt30 w100" | 46 | <el-button ref="RegisterRef" type="primary" round size="large" class="btn-lineG mb20 mt30 w100" |
| 36 | @click="choseSignType" style="font-size: 16px">Register</el-button> | 47 | @click="choseSignType" style="font-size: 16px">Register |
| 48 | </el-button> | ||
| 37 | </div> | 49 | </div> |
| 38 | </el-col> | 50 | </el-col> |
| 39 | </el-row> | 51 | </el-row> |
| ... | @@ -46,7 +58,9 @@ | ... | @@ -46,7 +58,9 @@ |
| 46 | <el-card :body-style="{'padding':'0'}"> | 58 | <el-card :body-style="{'padding':'0'}"> |
| 47 | <div class="lineHead"> | 59 | <div class="lineHead"> |
| 48 | <ul> | 60 | <ul> |
| 49 | <li v-for="l in menu" :key="l.name" @click="changeMenu(menu,l)" :class="l.active==1?'active':''">{{l.name}}</li> | 61 | <li v-for="l in menu" :key="l.name" @click="changeMenu(menu,l)" :class="l.active==1?'active':''"> |
| 62 | {{ l.name }} | ||
| 63 | </li> | ||
| 50 | </ul> | 64 | </ul> |
| 51 | </div> | 65 | </div> |
| 52 | <matchInfo :form="matchData" v-if="menu[0].active==1"/> | 66 | <matchInfo :form="matchData" v-if="menu[0].active==1"/> |
| ... | @@ -70,12 +84,13 @@ | ... | @@ -70,12 +84,13 @@ |
| 70 | <td>{{ p.danceTypeDetailStr }}</td> | 84 | <td>{{ p.danceTypeDetailStr }}</td> |
| 71 | <td>{{ p.playTypeStr }}</td> | 85 | <td>{{ p.playTypeStr }}</td> |
| 72 | <td>{{ p.birthPeriod }}</td> | 86 | <td>{{ p.birthPeriod }}</td> |
| 73 | <td>¥{{ p.serviceFee }}</td> | 87 | <td>{{ language==0?'¥':'£' }}{{ p.serviceFee }}</td> |
| 74 | </tr> | 88 | </tr> |
| 75 | </table> | 89 | </table> |
| 76 | </div> | 90 | </div> |
| 77 | 91 | ||
| 78 | <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/> | 92 | <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptProjectList?.length == 0" |
| 93 | description=" "/> | ||
| 79 | </div> | 94 | </div> |
| 80 | </div> | 95 | </div> |
| 81 | <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> | 96 | <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> |
| ... | @@ -83,7 +98,7 @@ | ... | @@ -83,7 +98,7 @@ |
| 83 | <el-row :gutter="20" v-if="matchData.signType == '0'"> | 98 | <el-row :gutter="20" v-if="matchData.signType == '0'"> |
| 84 | <el-col v-for="t in signDoneGroupList" :key="t.id" :span="8"> | 99 | <el-col v-for="t in signDoneGroupList" :key="t.id" :span="8"> |
| 85 | <div class="teamItem"> | 100 | <div class="teamItem"> |
| 86 | <el-avatar :size="60" :src="fillImgUrl(t.imgUrl||t.avatar)" /> | 101 | <el-avatar :size="60" :src="fillImgUrl(t.imgUrl||t.avatar)"/> |
| 87 | <span class="name">{{ t.name }}</span> | 102 | <span class="name">{{ t.name }}</span> |
| 88 | </div> | 103 | </div> |
| 89 | </el-col> | 104 | </el-col> |
| ... | @@ -91,32 +106,35 @@ | ... | @@ -91,32 +106,35 @@ |
| 91 | <el-row :gutter="20" v-else> | 106 | <el-row :gutter="20" v-else> |
| 92 | <el-col :span="24" v-for="(t,index) in signDoneGroupList" :key="t.id"> | 107 | <el-col :span="24" v-for="(t,index) in signDoneGroupList" :key="t.id"> |
| 93 | <div class="nowteamItem"> | 108 | <div class="nowteamItem"> |
| 94 | <span>{{index+1}}.</span> | 109 | <span>{{ index + 1 }}.</span> |
| 95 | <el-avatar :size="80" :src="fillImgUrl(t.imgUrl||t.avatar)" :fit="cover"/> | 110 | <el-avatar :size="80" :src="fillImgUrl(t.imgUrl||t.avatar)" :fit="cover"/> |
| 96 | <div class="info"> | 111 | <div class="info"> |
| 97 | <h3 class="name">{{ t.name }}</h3> | 112 | <h3 class="name">{{ t.name }}</h3> |
| 98 | <p v-if="t.extraInfo"> | 113 | <p v-if="t.extraInfo"> |
| 99 | <span v-for="(ee,index) in JSON.parse(t.extraInfo)" :key="index" v-show="(ee?.type == '0'||ee?.type == '4')&&index<2"> | 114 | <span v-for="(ee,index) in JSON.parse(t.extraInfo)" :key="index" |
| 100 | {{ee.value}}   | 115 | v-show="(ee?.type == '0'||ee?.type == '4')&&index<2"> |
| 116 | {{ ee.value }}   | ||
| 101 | </span> | 117 | </span> |
| 102 | </p> | 118 | </p> |
| 103 | </div> | 119 | </div> |
| 104 | <p class="rr"><span>{{t.renCi}}</span> registrants</p> | 120 | <p class="rr"><span>{{ t.renCi }}</span> registrants</p> |
| 105 | </div> | 121 | </div> |
| 106 | </el-col> | 122 | </el-col> |
| 107 | </el-row> | 123 | </el-row> |
| 108 | <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" /> | 124 | <el-empty :image="`/img/order_no.png`" :image-size="228" |
| 125 | v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description=""/> | ||
| 109 | </div> | 126 | </div> |
| 110 | <div v-if="menu[4].active==1"> | 127 | <div v-if="menu[4].active==1"> |
| 111 | <!-- 成绩--> | 128 | <!-- 成绩--> |
| 112 | <el-empty :image="`/img/order_no.png`" :image-size="228" description="" /> | 129 | <el-empty :image="`/img/order_no.png`" :image-size="228" description=""/> |
| 113 | </div> | 130 | </div> |
| 114 | <div v-if="menu[5].active==1" class="pd20"> | 131 | <div v-if="menu[5].active==1" class="pd20"> |
| 115 | <div class="xzbox"> | 132 | <div class="xzbox"> |
| 116 | <div v-html="matchData.signKnow"></div> | 133 | <div v-html="matchData.signKnow"></div> |
| 117 | <el-link v-if="matchData.signKnowUrl" type="primary" :href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank"> | 134 | <el-link v-if="matchData.signKnowUrl" type="primary" |
| 135 | :href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank"> | ||
| 118 | <el-icon :size="20"> | 136 | <el-icon :size="20"> |
| 119 | <Download /> | 137 | <Download/> |
| 120 | </el-icon> | 138 | </el-icon> |
| 121 | {{ JSON.parse(matchData.signKnowUrl)[0]?.name }} | 139 | {{ JSON.parse(matchData.signKnowUrl)[0]?.name }} |
| 122 | </el-link> | 140 | </el-link> |
| ... | @@ -136,7 +154,9 @@ | ... | @@ -136,7 +154,9 @@ |
| 136 | <el-card :body-style="{'padding':'0'}"> | 154 | <el-card :body-style="{'padding':'0'}"> |
| 137 | <div class="lineHead"> | 155 | <div class="lineHead"> |
| 138 | <ul> | 156 | <ul> |
| 139 | <li v-for="l in menu1" :key="l.name" @click="changeMenu(menu1,l)" :class="l.active==1?'active':''">{{l.name}}</li> | 157 | <li v-for="l in menu1" :key="l.name" @click="changeMenu(menu1,l)" :class="l.active==1?'active':''"> |
| 158 | {{ l.name }} | ||
| 159 | </li> | ||
| 140 | </ul> | 160 | </ul> |
| 141 | </div> | 161 | </div> |
| 142 | <!-- 分站赛--> | 162 | <!-- 分站赛--> |
| ... | @@ -147,8 +167,20 @@ | ... | @@ -147,8 +167,20 @@ |
| 147 | </el-col> | 167 | </el-col> |
| 148 | </el-row> | 168 | </el-row> |
| 149 | </div> | 169 | </div> |
| 170 | |||
| 150 | <div style="height: 50px"></div> | 171 | <div style="height: 50px"></div> |
| 151 | 172 | ||
| 173 | <el-dialog v-model="signTypePop" class="pcloginpop" close-icon="CircleClose" | ||
| 174 | center width="450px" title="Choose Type"> | ||
| 175 | <div> | ||
| 176 | <div class="rItem r1" @click="goLogin"> | ||
| 177 | <h3>{{language==0?'机构用户':'Organization'}}</h3> | ||
| 178 | </div> | ||
| 179 | <div class="rItem r2" @click="goGeren"> | ||
| 180 | <h3>{{language==0?'个人用户':'Individual'}}</h3> | ||
| 181 | </div> | ||
| 182 | </div> | ||
| 183 | </el-dialog> | ||
| 152 | </div> | 184 | </div> |
| 153 | </template> | 185 | </template> |
| 154 | 186 | ||
| ... | @@ -158,41 +190,60 @@ import MatchScheduleList from "@/viewsPc/match/components/matchScheduleList"; | ... | @@ -158,41 +190,60 @@ import MatchScheduleList from "@/viewsPc/match/components/matchScheduleList"; |
| 158 | import MatchNews from "@/viewsPc/match/components/matchNews"; | 190 | import MatchNews from "@/viewsPc/match/components/matchNews"; |
| 159 | import SubstationList from "@/viewsPc/match/components/substation-list"; | 191 | import SubstationList from "@/viewsPc/match/components/substation-list"; |
| 160 | 192 | ||
| 161 | import { getCurrentInstance, ref } from 'vue' | 193 | import {getCurrentInstance, ref} from 'vue' |
| 162 | import { reactive, onMounted } from '@vue/runtime-core' | 194 | import {reactive, onMounted} from '@vue/runtime-core' |
| 163 | import { useRoute, useRouter } from 'vue-router' | 195 | import {useRoute, useRouter} from 'vue-router' |
| 196 | |||
| 164 | const route = useRoute() | 197 | const route = useRoute() |
| 165 | const router = useRouter() | 198 | const router = useRouter() |
| 166 | const { proxy } = getCurrentInstance() | 199 | const {proxy} = getCurrentInstance() |
| 167 | import * as match from '@/apiPc/match' | 200 | import * as match from '@/apiPc/match' |
| 168 | import { toRefs } from '@vueuse/shared' | 201 | import {toRefs} from '@vueuse/shared' |
| 169 | import {dayjs, ElMessage} from 'element-plus' | 202 | import {dayjs, ElMessage, ElMessageBox} from 'element-plus' |
| 170 | import useUserStore from "@/store/modules/user"; | 203 | import useUserStore from "@/store/modules/user"; |
| 171 | import QuickRow from "@/viewsPc/match/components/quick-row"; | 204 | import QuickRow from "@/viewsPc/match/components/quick-row"; |
| 172 | const user = useUserStore().user || {} | 205 | |
| 173 | const group = useUserStore().group || {} | 206 | const user = useUserStore().user |
| 207 | const group = useUserStore().group | ||
| 174 | const data = reactive({ | 208 | const data = reactive({ |
| 175 | loading:false, | 209 | error: false, |
| 210 | loading: false, | ||
| 176 | matchData: {}, | 211 | matchData: {}, |
| 177 | matchId: 0, | 212 | matchId: 0, |
| 178 | groupId: '', | 213 | groupId: '', |
| 179 | activeName2:'first', | 214 | activeName2: 'first', |
| 180 | popupGroupList:false, | 215 | popupGroupList: false, |
| 181 | menu:[{name:'Event details',active:1},{name:'Event settings',active:0},{name:'Schedule',active:0},{name:'Participating teams',active:0}, | 216 | menu: [{name: 'Event details', active: 1}, {name: 'Event settings', active: 0}, { |
| 182 | {name:'Achievement',active:0},{name:'Notes',active:0}], | 217 | name: 'Schedule', |
| 183 | menu1:[{name:'Station race',active:1},{name:'Event details',active:0},{name:'Schedule',active:0}], | 218 | active: 0 |
| 219 | }, {name: 'Participating teams', active: 0}, | ||
| 220 | {name: 'Achievement', active: 0}, {name: 'Notes', active: 0}], | ||
| 221 | menu1: [{name: 'Station race', active: 1}, {name: 'Event details', active: 0}, {name: 'Schedule', active: 0}], | ||
| 184 | signDoneGroupList: [], | 222 | signDoneGroupList: [], |
| 185 | time:'' | 223 | time: '' |
| 186 | }) | 224 | }) |
| 187 | const {loading,matchData,matchId,groupId,activeName2,popupGroupList,menu,menu1,signDoneGroupList,time} = toRefs(data) | 225 | const { |
| 226 | error, | ||
| 227 | loading, | ||
| 228 | matchData, | ||
| 229 | matchId, | ||
| 230 | groupId, | ||
| 231 | activeName2, | ||
| 232 | popupGroupList, | ||
| 233 | menu, | ||
| 234 | menu1, | ||
| 235 | signDoneGroupList, | ||
| 236 | time | ||
| 237 | } = toRefs(data) | ||
| 238 | const signTypePop = false | ||
| 188 | onMounted(() => { | 239 | onMounted(() => { |
| 189 | if(group){ | 240 | if (group) { |
| 190 | groupId.value = group.id | 241 | groupId.value = group.id |
| 191 | } else { | 242 | } else { |
| 192 | groupId.value = 0 | 243 | groupId.value = 0 |
| 193 | } | 244 | } |
| 194 | match.getMaList().then((res) => { | 245 | match.getMaList().then((res) => { |
| 195 | if(route.params.id!=0){ | 246 | if (route.params.id != 0) { |
| 196 | matchId.value = route.params.id | 247 | matchId.value = route.params.id |
| 197 | } else { | 248 | } else { |
| 198 | matchId.value = res.rows[0].id | 249 | matchId.value = res.rows[0].id |
| ... | @@ -204,45 +255,94 @@ onMounted(() => { | ... | @@ -204,45 +255,94 @@ onMounted(() => { |
| 204 | 255 | ||
| 205 | function getMatch() { | 256 | function getMatch() { |
| 206 | loading.value = true | 257 | loading.value = true |
| 207 | match.getMatchById({ id: matchId.value }).then(res => { | 258 | match.getMatchById({id: matchId.value}).then(res => { |
| 208 | matchData.value = res.data | 259 | matchData.value = res.data |
| 209 | loading.value = false | 260 | loading.value = false |
| 210 | var today = dayjs().format('YYYY-MM-DD HH:mm:ss') | 261 | var today = dayjs().format('YYYY-MM-DD HH:mm:ss') |
| 211 | time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond') | 262 | time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond') |
| 263 | }).catch(res => { | ||
| 264 | error.value = true | ||
| 265 | loading.value = false | ||
| 266 | |||
| 212 | }) | 267 | }) |
| 213 | } | 268 | } |
| 269 | |||
| 214 | function getGroupListByCptId(id) { | 270 | function getGroupListByCptId(id) { |
| 215 | match.getGroupListByCptId(id).then(res => { | 271 | match.getGroupListByCptId(id).then(res => { |
| 216 | signDoneGroupList.value = res.data | 272 | signDoneGroupList.value = res.data |
| 217 | }) | 273 | }) |
| 218 | } | 274 | } |
| 219 | function changeMenu(menu,l){ | 275 | |
| 220 | for(const n of menu){ | 276 | function changeMenu(menu, l) { |
| 221 | if(n==l){ | 277 | for (const n of menu) { |
| 278 | if (n == l) { | ||
| 222 | n.active = 1 | 279 | n.active = 1 |
| 223 | } else { | 280 | } else { |
| 224 | n.active = 0 | 281 | n.active = 0 |
| 225 | } | 282 | } |
| 226 | } | 283 | } |
| 227 | } | 284 | } |
| 285 | |||
| 228 | function choseSignType() { | 286 | function choseSignType() { |
| 229 | if(!user){ | 287 | console.log(matchData.value.signType, user) |
| 230 | ElMessage.warning('Please login') | 288 | if (!user) { |
| 231 | return | 289 | //判断signType,如1个人注册-报名; |
| 290 | switch (matchData.value.signType) { | ||
| 291 | case '0': | ||
| 292 | goGeren() | ||
| 293 | break | ||
| 294 | case '1': | ||
| 295 | goLogin() | ||
| 296 | break | ||
| 297 | case '2': | ||
| 298 | popChangeType() | ||
| 299 | break | ||
| 232 | } | 300 | } |
| 233 | //判断signType,如果是2且utype是2,则跳转到团体报名 | 301 | } else { |
| 234 | checkIsSign().then(() => { | 302 | checkIsSign().then(() => { |
| 235 | if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) { | 303 | switch (matchData.value.signType) { |
| 236 | // 个人报名 | 304 | case '0': |
| 237 | router.push({ | 305 | if (user.utype == '1') { |
| 238 | name: `chooseCoach`, | 306 | goPersonalSign() |
| 239 | query: { | 307 | } else { |
| 240 | matchId: matchId.value, | 308 | ElMessageBox.confirm( |
| 241 | signType: matchData.value.signType | 309 | 'The current event is a personal event, cannot register', |
| 310 | 'Warning', | ||
| 311 | { | ||
| 312 | confirmButtonText: 'OK', | ||
| 313 | cancelButtonText: 'Cancel', | ||
| 314 | type: 'warning', | ||
| 315 | } | ||
| 316 | ) | ||
| 317 | } | ||
| 318 | break | ||
| 319 | case '1': | ||
| 320 | if (user.utype == '1') { | ||
| 321 | ElMessageBox.confirm( | ||
| 322 | 'The current event is a team event, cannot register', | ||
| 323 | 'Warning', | ||
| 324 | { | ||
| 325 | confirmButtonText: 'OK', | ||
| 326 | cancelButtonText: 'Cancel', | ||
| 327 | type: 'warning', | ||
| 328 | } | ||
| 329 | ) | ||
| 330 | } else { | ||
| 331 | goTeamSign() | ||
| 332 | } | ||
| 333 | break | ||
| 334 | case '2': | ||
| 335 | if (user.utype == '1') { | ||
| 336 | goPersonalSign() | ||
| 337 | } else { | ||
| 338 | goTeamSign() | ||
| 339 | } | ||
| 340 | break | ||
| 242 | } | 341 | } |
| 243 | }) | 342 | }) |
| 244 | } | 343 | } |
| 245 | if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){ | 344 | } |
| 345 | function goTeamSign() { | ||
| 246 | router.push({ | 346 | router.push({ |
| 247 | path: `${route.params.id}/teamSign`, | 347 | path: `${route.params.id}/teamSign`, |
| 248 | query: { | 348 | query: { |
| ... | @@ -251,9 +351,30 @@ function choseSignType() { | ... | @@ -251,9 +351,30 @@ function choseSignType() { |
| 251 | signType: matchData.value.signType | 351 | signType: matchData.value.signType |
| 252 | } | 352 | } |
| 253 | }) | 353 | }) |
| 354 | } | ||
| 355 | function goPersonalSign() { | ||
| 356 | // 选项目 | ||
| 357 | router.push({ | ||
| 358 | name: `chooseCoach`, | ||
| 359 | query: { | ||
| 360 | matchId: matchId.value, | ||
| 361 | signType: matchData.value.signType | ||
| 254 | } | 362 | } |
| 255 | }) | 363 | }) |
| 256 | } | 364 | } |
| 365 | function goLogin() { | ||
| 366 | useUserStore().setReLogin(true) | ||
| 367 | } | ||
| 368 | function goGeren() { | ||
| 369 | //注册 | ||
| 370 | router.push({name: 'personalRegister', query: {matchId: matchId.value}}) | ||
| 371 | } | ||
| 372 | |||
| 373 | function popChangeType() { | ||
| 374 | //选择登录类型 | ||
| 375 | signTypePop.value = true | ||
| 376 | } | ||
| 377 | |||
| 257 | // 获取已报信息 | 378 | // 获取已报信息 |
| 258 | function checkIsSign() { | 379 | function checkIsSign() { |
| 259 | var obj = { | 380 | var obj = { |
| ... | @@ -262,7 +383,17 @@ function checkIsSign() { | ... | @@ -262,7 +383,17 @@ function checkIsSign() { |
| 262 | } | 383 | } |
| 263 | return match.getMySignInfo(obj).then(res => { | 384 | return match.getMySignInfo(obj).then(res => { |
| 264 | if (res.data.type == '1') { | 385 | if (res.data.type == '1') { |
| 265 | ElMessage.error('Registered, cannot be duplicated') | 386 | ElMessageBox.confirm( |
| 387 | 'Registered, cannot be duplicated. Do you want to go to the personal center to check', | ||
| 388 | 'Warning', | ||
| 389 | { | ||
| 390 | confirmButtonText: 'OK', | ||
| 391 | cancelButtonText: 'Cancel', | ||
| 392 | type: 'warning', | ||
| 393 | } | ||
| 394 | ).then(() => { | ||
| 395 | router.push({name: 'myMatch'}) | ||
| 396 | }) | ||
| 266 | return Promise.reject('rejected message') | 397 | return Promise.reject('rejected message') |
| 267 | } | 398 | } |
| 268 | }) | 399 | }) |
| ... | @@ -270,37 +401,95 @@ function checkIsSign() { | ... | @@ -270,37 +401,95 @@ function checkIsSign() { |
| 270 | </script> | 401 | </script> |
| 271 | 402 | ||
| 272 | <style scoped lang="scss"> | 403 | <style scoped lang="scss"> |
| 273 | .m0{margin: 0;} | 404 | .app-container { |
| 274 | .indexTitle{margin: 20px 0 12px; | 405 | min-height: 80vh; |
| 275 | h3{ | 406 | } |
| 407 | |||
| 408 | .m0 { | ||
| 409 | margin: 0; | ||
| 410 | } | ||
| 411 | |||
| 412 | .indexTitle { | ||
| 413 | margin: 20px 0 12px; | ||
| 414 | |||
| 415 | h3 { | ||
| 276 | font-size: 20px; | 416 | font-size: 20px; |
| 277 | color:var(--el-color-primary); | 417 | color: var(--el-color-primary); |
| 278 | } | 418 | } |
| 279 | } | 419 | } |
| 280 | .xzbox{border: 2px solid #DDECFB;padding: 20px;line-height: 2; | 420 | |
| 421 | .xzbox { | ||
| 422 | border: 2px solid #DDECFB; | ||
| 423 | padding: 20px; | ||
| 424 | line-height: 2; | ||
| 281 | color: #29343C; | 425 | color: #29343C; |
| 282 | font-size: 16px;} | 426 | font-size: 16px; |
| 283 | .dlbox{background: url("@/assets/dance/ds_bg.png") no-repeat left;background-size: 100% 100%; | 427 | } |
| 284 | padding: 0 0 20px;margin: 0 0 20px;height: 90%; | 428 | |
| 285 | dl{min-height: 120px;margin: 0; | 429 | .dlbox { |
| 286 | dt{ | 430 | background: url("@/assets/dance/ds_bg.png") no-repeat left; |
| 431 | background-size: 100% 100%; | ||
| 432 | padding: 0 0 20px; | ||
| 433 | margin: 0 0 20px; | ||
| 434 | height: 90%; | ||
| 435 | |||
| 436 | dl { | ||
| 437 | min-height: 120px; | ||
| 438 | margin: 0; | ||
| 439 | |||
| 440 | dt { | ||
| 287 | height: 30px; | 441 | height: 30px; |
| 288 | font-size: 16px;margin: 0 0 18px; | 442 | font-size: 16px; |
| 289 | font-weight: 600;line-height: 30px;display: inline-block;padding:0 20px 0 14px; | 443 | margin: 0 0 18px; |
| 444 | font-weight: 600; | ||
| 445 | line-height: 30px; | ||
| 446 | display: inline-block; | ||
| 447 | padding: 0 20px 0 14px; | ||
| 290 | background: linear-gradient(90deg, #8623FC, #453DEA); | 448 | background: linear-gradient(90deg, #8623FC, #453DEA); |
| 291 | border-radius: 0px 0px 15px 0px;color: #fff;} | 449 | border-radius: 0px 0px 15px 0px; |
| 450 | color: #fff; | ||
| 451 | } | ||
| 452 | } | ||
| 453 | |||
| 454 | dd { | ||
| 455 | font-size: 14px; | ||
| 456 | line-height: 1.6; | ||
| 457 | color: #29343C; | ||
| 292 | } | 458 | } |
| 293 | dd{ | ||
| 294 | font-size: 14px;line-height: 1.6; | ||
| 295 | color: #29343C;} | ||
| 296 | } | 459 | } |
| 297 | .ppl{color: #29343C; | 460 | |
| 298 | label{color: #929AA0;} | 461 | .ppl { |
| 462 | color: #29343C; | ||
| 463 | |||
| 464 | label { | ||
| 465 | color: #929AA0; | ||
| 466 | } | ||
| 467 | } | ||
| 468 | |||
| 469 | .bm1 { | ||
| 470 | background: url("@/assets/dance/bm1.png") no-repeat left; | ||
| 471 | background-size: contain; | ||
| 472 | padding-left: 24px; | ||
| 473 | } | ||
| 474 | |||
| 475 | .bm2 { | ||
| 476 | background: url("@/assets/dance/bm2.png") no-repeat left; | ||
| 477 | background-size: contain; | ||
| 478 | padding-left: 24px; | ||
| 479 | } | ||
| 480 | |||
| 481 | .bm3 { | ||
| 482 | background: url("@/assets/dance/bm3.png") no-repeat left; | ||
| 483 | background-size: contain; | ||
| 484 | padding-left: 24px; | ||
| 299 | } | 485 | } |
| 300 | .bm1{background: url("@/assets/dance/bm1.png") no-repeat left;background-size: contain;padding-left: 24px;} | 486 | |
| 301 | .bm2{background: url("@/assets/dance/bm2.png") no-repeat left;background-size: contain;padding-left: 24px;} | 487 | .bm4 { |
| 302 | .bm3{background: url("@/assets/dance/bm3.png") no-repeat left;background-size: contain;padding-left: 24px;} | 488 | background: url("@/assets/dance/bm4.png") no-repeat left; |
| 303 | .bm4{background: url("@/assets/dance/bm4.png") no-repeat left;background-size: contain;padding-left: 24px;} | 489 | background-size: contain; |
| 490 | padding-left: 24px; | ||
| 491 | } | ||
| 492 | |||
| 304 | .app-container { | 493 | .app-container { |
| 305 | padding: 0; | 494 | padding: 0; |
| 306 | background: #F5F7F9; | 495 | background: #F5F7F9; |
| ... | @@ -465,7 +654,11 @@ function checkIsSign() { | ... | @@ -465,7 +654,11 @@ function checkIsSign() { |
| 465 | color: #000000; | 654 | color: #000000; |
| 466 | margin: 0 0 10px; | 655 | margin: 0 0 10px; |
| 467 | font-size: 24px; | 656 | font-size: 24px; |
| 468 | img{margin-right: 10px} | 657 | |
| 658 | img { | ||
| 659 | margin-right: 10px | ||
| 660 | } | ||
| 661 | |||
| 469 | .typeTag { | 662 | .typeTag { |
| 470 | border-radius: 13px 13px 13px 0; | 663 | border-radius: 13px 13px 13px 0; |
| 471 | margin-left: 10px; | 664 | margin-left: 10px; |
| ... | @@ -476,7 +669,11 @@ function checkIsSign() { | ... | @@ -476,7 +669,11 @@ function checkIsSign() { |
| 476 | color: #7B7F83; | 669 | color: #7B7F83; |
| 477 | font-size: 16px; | 670 | font-size: 16px; |
| 478 | } | 671 | } |
| 479 | .countDownTitle{font-size: 14px;} | 672 | |
| 673 | .countDownTitle { | ||
| 674 | font-size: 14px; | ||
| 675 | } | ||
| 676 | |||
| 480 | .el-button.el-button--primary { | 677 | .el-button.el-button--primary { |
| 481 | background: #CA171D; | 678 | background: #CA171D; |
| 482 | border: none; | 679 | border: none; |
| ... | @@ -487,7 +684,9 @@ function checkIsSign() { | ... | @@ -487,7 +684,9 @@ function checkIsSign() { |
| 487 | .gg { | 684 | .gg { |
| 488 | margin: 0 0 28px; | 685 | margin: 0 0 28px; |
| 489 | 686 | ||
| 490 | h3 {border-left: 2px solid #BA2E29; padding: 0 0 0 12px; | 687 | h3 { |
| 688 | border-left: 2px solid #BA2E29; | ||
| 689 | padding: 0 0 0 12px; | ||
| 491 | margin: 20px 0 8px; | 690 | margin: 20px 0 8px; |
| 492 | font-weight: 500; | 691 | font-weight: 500; |
| 493 | font-size: 16px; | 692 | font-size: 16px; |
| ... | @@ -498,7 +697,10 @@ function checkIsSign() { | ... | @@ -498,7 +697,10 @@ function checkIsSign() { |
| 498 | color: #000; | 697 | color: #000; |
| 499 | margin: 0 0 8px; | 698 | margin: 0 0 8px; |
| 500 | line-height: 24px; | 699 | line-height: 24px; |
| 501 | label{color: #7D8790;} | 700 | |
| 701 | label { | ||
| 702 | color: #7D8790; | ||
| 703 | } | ||
| 502 | } | 704 | } |
| 503 | 705 | ||
| 504 | .pp { | 706 | .pp { |
| ... | @@ -621,8 +823,11 @@ function checkIsSign() { | ... | @@ -621,8 +823,11 @@ function checkIsSign() { |
| 621 | margin: 0 0 20px; | 823 | margin: 0 0 20px; |
| 622 | 824 | ||
| 623 | button { | 825 | button { |
| 624 | width: 90%;background: var(--el-color-primary); | 826 | width: 90%; |
| 625 | font-size: 20px;margin: 30px auto 0;display: block; | 827 | background: var(--el-color-primary); |
| 828 | font-size: 20px; | ||
| 829 | margin: 30px auto 0; | ||
| 830 | display: block; | ||
| 626 | height: 50px; | 831 | height: 50px; |
| 627 | } | 832 | } |
| 628 | } | 833 | } |
| ... | @@ -648,24 +853,50 @@ function checkIsSign() { | ... | @@ -648,24 +853,50 @@ function checkIsSign() { |
| 648 | height: 1px; | 853 | height: 1px; |
| 649 | } | 854 | } |
| 650 | 855 | ||
| 651 | .table{width: 100%;border-left: 1px solid #e1e1e1;border-top:1px solid #e1e1e1; | 856 | .table { |
| 652 | th{background: #eee;padding: 6px 10px; | 857 | width: 100%; |
| 858 | border-left: 1px solid #e1e1e1; | ||
| 859 | border-top: 1px solid #e1e1e1; | ||
| 860 | |||
| 861 | th { | ||
| 862 | background: #eee; | ||
| 863 | padding: 6px 10px; | ||
| 653 | border-right: 1px solid #e1e1e1; | 864 | border-right: 1px solid #e1e1e1; |
| 654 | border-bottom:1px solid #e1e1e1; | 865 | border-bottom: 1px solid #e1e1e1; |
| 655 | font-size: 15px; | 866 | font-size: 15px; |
| 656 | } | 867 | } |
| 657 | td{padding: 6px 10px;border-right: 1px solid #e1e1e1;font-size: 15px; | 868 | |
| 658 | border-bottom:1px solid #e1e1e1;vertical-align: middle;text-align: center; | 869 | td { |
| 659 | span{margin-right: 10px} | 870 | padding: 6px 10px; |
| 660 | span::after{content: ','} | 871 | border-right: 1px solid #e1e1e1; |
| 661 | span:last-child::after{content: ''} | 872 | font-size: 15px; |
| 873 | border-bottom: 1px solid #e1e1e1; | ||
| 874 | vertical-align: middle; | ||
| 875 | text-align: center; | ||
| 876 | |||
| 877 | span { | ||
| 878 | margin-right: 10px | ||
| 879 | } | ||
| 880 | |||
| 881 | span::after { | ||
| 882 | content: ',' | ||
| 883 | } | ||
| 884 | |||
| 885 | span:last-child::after { | ||
| 886 | content: '' | ||
| 887 | } | ||
| 662 | } | 888 | } |
| 663 | } | 889 | } |
| 664 | .flexLine{display: flex; | 890 | |
| 665 | label{font-weight: normal} | 891 | .flexLine { |
| 892 | display: flex; | ||
| 893 | |||
| 894 | label { | ||
| 895 | font-weight: normal | ||
| 896 | } | ||
| 666 | } | 897 | } |
| 667 | 898 | ||
| 668 | .nowteamItem{ | 899 | .nowteamItem { |
| 669 | height: 100px; | 900 | height: 100px; |
| 670 | background: #FBFCFD; | 901 | background: #FBFCFD; |
| 671 | border-radius: 10px; | 902 | border-radius: 10px; |
| ... | @@ -675,40 +906,91 @@ function checkIsSign() { | ... | @@ -675,40 +906,91 @@ function checkIsSign() { |
| 675 | padding: 0 20px; | 906 | padding: 0 20px; |
| 676 | overflow: hidden; | 907 | overflow: hidden; |
| 677 | text-overflow: ellipsis; | 908 | text-overflow: ellipsis; |
| 678 | .el-avatar {margin: 0 20px} | 909 | |
| 679 | .info{ | 910 | .el-avatar { |
| 680 | h3{margin: 0 0 15px;} | 911 | margin: 0 20px |
| 681 | p{margin: 0;color: #1ab394} | 912 | } |
| 913 | |||
| 914 | .info { | ||
| 915 | h3 { | ||
| 916 | margin: 0 0 15px; | ||
| 917 | } | ||
| 918 | |||
| 919 | p { | ||
| 920 | margin: 0; | ||
| 921 | color: #1ab394 | ||
| 922 | } | ||
| 923 | } | ||
| 924 | |||
| 925 | .rr { | ||
| 926 | text-align: right; | ||
| 927 | flex: 1; | ||
| 928 | |||
| 929 | span { | ||
| 930 | color: #1ab394 | ||
| 682 | } | 931 | } |
| 683 | .rr{text-align: right; flex: 1; | ||
| 684 | span{color: #1ab394} | ||
| 685 | } | 932 | } |
| 686 | } | 933 | } |
| 687 | 934 | ||
| 688 | .collapsebox{ | 935 | .collapsebox { |
| 689 | .el-collapse-item{margin-bottom: 15px;--el-collapse-content-bg-color:#F4F9FE; | 936 | .el-collapse-item { |
| 937 | margin-bottom: 15px; | ||
| 938 | --el-collapse-content-bg-color: #F4F9FE; | ||
| 690 | border: 2px solid #DDECFB; | 939 | border: 2px solid #DDECFB; |
| 691 | .table{background: #fff;} | 940 | |
| 941 | .table { | ||
| 942 | background: #fff; | ||
| 943 | } | ||
| 944 | } | ||
| 945 | |||
| 946 | .is-active { | ||
| 947 | --el-collapse-header-bg-color: #F4F9FE | ||
| 948 | } | ||
| 949 | |||
| 950 | :deep(.el-collapse-item__header) { | ||
| 951 | padding: 0 20px; | ||
| 692 | } | 952 | } |
| 693 | .is-active{--el-collapse-header-bg-color:#F4F9FE} | ||
| 694 | :deep(.el-collapse-item__header){padding: 0 20px;} | ||
| 695 | } | 953 | } |
| 696 | .funcBtns{display: flex; justify-content: space-around; | 954 | |
| 697 | div{text-align: center;background: #F7FAFF;box-shadow:0 0 10px #d4cae4;margin: 0 5px; | 955 | .funcBtns { |
| 698 | border-radius: 15px;padding:0 10px 15px; | 956 | display: flex; |
| 699 | img{margin: auto} | 957 | justify-content: space-around; |
| 700 | h4{margin: 0;font-size: 14px;} | 958 | |
| 959 | div { | ||
| 960 | text-align: center; | ||
| 961 | background: #F7FAFF; | ||
| 962 | box-shadow: 0 0 10px #d4cae4; | ||
| 963 | margin: 0 5px; | ||
| 964 | border-radius: 15px; | ||
| 965 | padding: 0 10px 15px; | ||
| 966 | |||
| 967 | img { | ||
| 968 | margin: auto | ||
| 969 | } | ||
| 970 | |||
| 971 | h4 { | ||
| 972 | margin: 0; | ||
| 973 | font-size: 14px; | ||
| 974 | } | ||
| 701 | } | 975 | } |
| 702 | } | 976 | } |
| 703 | .table{white-space: nowrap} | 977 | |
| 978 | .table { | ||
| 979 | white-space: nowrap | ||
| 980 | } | ||
| 704 | 981 | ||
| 705 | @media (max-width: 800px) { | 982 | @media (max-width: 800px) { |
| 706 | .van-count-down{ | 983 | .van-count-down { |
| 707 | .block{margin: 0 10px;} | 984 | .block { |
| 985 | margin: 0 10px; | ||
| 986 | } | ||
| 987 | } | ||
| 988 | .colon { | ||
| 989 | display: none; | ||
| 708 | } | 990 | } |
| 709 | .colon{display: none;} | 991 | .funcBtns { |
| 710 | .funcBtns{ | 992 | div { |
| 711 | div{padding: 0 0 10px; | 993 | padding: 0 0 10px; |
| 712 | margin: 0 5px; | 994 | margin: 0 5px; |
| 713 | 995 | ||
| 714 | } | 996 | } | ... | ... |
src/viewsPc/match/expenseDetails.vue
deleted
100644 → 0
| 1 | <template> | ||
| 2 | <div class="app-container"> | ||
| 3 | |||
| 4 | <div class="box ph-30"> | ||
| 5 | <div class="panel"> | ||
| 6 | <div class="panel-header"> | ||
| 7 | <h3 class="panel-title">费用明细</h3> | ||
| 8 | </div> | ||
| 9 | <div class="panel-body"> | ||
| 10 | <el-row> | ||
| 11 | <el-col :span="24"> | ||
| 12 | |||
| 13 | <el-collapse v-model="activeCollapse"> | ||
| 14 | <!-- 报名费--> | ||
| 15 | <el-collapse-item v-if="form.cptRegistrationFee?.totalFee>0" name="1"> | ||
| 16 | <template #title> | ||
| 17 | <div class="titlebar"> | ||
| 18 | {{ form.cptRegistrationFee?.name }} | ||
| 19 | <div class="fr"> | ||
| 20 | <span class="num">{{ form.cptRegistrationFee?.count }}人</span> | ||
| 21 | 合计:<span class="money">{{ form.cptRegistrationFee?.totalFee }}元</span> | ||
| 22 | </div> | ||
| 23 | </div> | ||
| 24 | </template> | ||
| 25 | <div> | ||
| 26 | <el-table border :data="form.cptRegistrationFee?.info" style="width: 100%"> | ||
| 27 | <el-table-column type="index" label="序号" width="50" /> | ||
| 28 | <el-table-column label="姓名" prop="personInfo.realName" /> | ||
| 29 | <el-table-column label="性别"> | ||
| 30 | <template #default="scope"> | ||
| 31 | <span v-if="scope.row.personInfo.sex=='0'">女</span> | ||
| 32 | <span v-else>男</span> | ||
| 33 | </template> | ||
| 34 | </el-table-column> | ||
| 35 | <el-table-column label="证件号码" prop="personInfo.idcType"> | ||
| 36 | <template #default="scope"> | ||
| 37 | <span v-if="scope.row.personInfo.idcType=='0'">身份证</span> | ||
| 38 | <span v-if="scope.row.personInfo.idcType=='1'">护照</span> | ||
| 39 | <span v-if="scope.row.personInfo.idcType=='2'">其他</span> | ||
| 40 | <div>{{ scope.row.personInfo.idcCode }}</div> | ||
| 41 | </template> | ||
| 42 | </el-table-column> | ||
| 43 | <el-table-column label="出生日期"> | ||
| 44 | <template #default="scope"> | ||
| 45 | {{ scope.row.personInfo.birth.substring(0,10) }} | ||
| 46 | </template> | ||
| 47 | </el-table-column> | ||
| 48 | <el-table-column label="费用"> | ||
| 49 | <template #default="scope"> | ||
| 50 | ¥{{ scope.row.registrationFee }} | ||
| 51 | </template> | ||
| 52 | </el-table-column> | ||
| 53 | </el-table> | ||
| 54 | </div> | ||
| 55 | </el-collapse-item> | ||
| 56 | <el-collapse-item v-if="form.cptCompatibleFee?.totalFee>0" name="3"> | ||
| 57 | <template #title> | ||
| 58 | <div class="titlebar"> | ||
| 59 | {{ form.cptCompatibleFee?.name }} | ||
| 60 | <div class="fr"> | ||
| 61 | <span class="num">{{ form.cptCompatibleFee?.count }}人</span> | ||
| 62 | 合计:<span class="money">{{ form.cptCompatibleFee?.totalFee }}元</span> | ||
| 63 | </div> | ||
| 64 | </div> | ||
| 65 | </template> | ||
| 66 | <div> | ||
| 67 | <el-table border :data="form.cptCompatibleFee?.info" style="width: 100%"> | ||
| 68 | <el-table-column type="index" label="序号" width="50" /> | ||
| 69 | <el-table-column label="姓名" prop="personInfo.realName" /> | ||
| 70 | <el-table-column label="性别"> | ||
| 71 | <template #default="scope"> | ||
| 72 | <span v-if="scope.row.personInfo.sex=='0'">女</span> | ||
| 73 | <span v-else>男</span> | ||
| 74 | </template> | ||
| 75 | </el-table-column> | ||
| 76 | <el-table-column label="证件类型"> | ||
| 77 | <template #default="scope"> | ||
| 78 | <span v-if="scope.row.personInfo.idcType=='0'">身份证</span> | ||
| 79 | <span v-if="scope.row.personInfo.idcType=='1'">护照</span> | ||
| 80 | <span v-if="scope.row.personInfo.idcType=='2'">其他</span> | ||
| 81 | <div>{{ scope.row.personInfo.idcCode }}</div> | ||
| 82 | </template> | ||
| 83 | </el-table-column> | ||
| 84 | <el-table-column label="费用" prop="compatibleFee" /> | ||
| 85 | </el-table> | ||
| 86 | </div> | ||
| 87 | </el-collapse-item> | ||
| 88 | <el-collapse-item name="2"> | ||
| 89 | <template #title> | ||
| 90 | <div class="titlebar"> | ||
| 91 | {{ form.cptInsuranceFee?.name }} | ||
| 92 | <div class="fr"> | ||
| 93 | 合计:<span class="money">{{ cptInsuranceFee }}元</span> | ||
| 94 | </div> | ||
| 95 | </div> | ||
| 96 | </template> | ||
| 97 | <div> | ||
| 98 | <el-checkbox-group v-model="buyInsurancePersonIds" @change="choseInsuranceFee"> | ||
| 99 | <el-table border :data="form.cptInsuranceFee?.info" style="width: 100%"> | ||
| 100 | <el-table-column type="index" label="序号" width="50" /> | ||
| 101 | <el-table-column label="姓名" prop="personInfo.realName" /> | ||
| 102 | <el-table-column label="性别"> | ||
| 103 | <template #default="scope"> | ||
| 104 | <span v-if="scope.row.personInfo.sex=='0'">女</span> | ||
| 105 | <span v-else>男</span> | ||
| 106 | </template> | ||
| 107 | </el-table-column> | ||
| 108 | <el-table-column label="证件类型"> | ||
| 109 | <template #default="scope"> | ||
| 110 | <span v-if="scope.row.personInfo.idcType=='0'">身份证</span> | ||
| 111 | <span v-if="scope.row.personInfo.idcType=='1'">护照</span> | ||
| 112 | <span v-if="scope.row.personInfo.idcType=='2'">其他</span> | ||
| 113 | <div>{{ scope.row.personInfo.idcCode }}</div> | ||
| 114 | </template> | ||
| 115 | </el-table-column> | ||
| 116 | <el-table-column label="出生日期"> | ||
| 117 | <template #default="scope"> | ||
| 118 | {{ scope.row.personInfo.birth.substring(0,10) }} | ||
| 119 | </template> | ||
| 120 | </el-table-column> | ||
| 121 | <el-table-column v-if="form.cptInsuranceFee?.must=='0'" label="购买保险" align="center"> | ||
| 122 | <template #default="scope"> | ||
| 123 | <span v-if="scope.row.lastBuyFlag=='1'">已购</span> | ||
| 124 | <el-checkbox v-else :label="scope.row.personId"> | ||
| 125 | ¥{{ scope.row.insuranceFee }} | ||
| 126 | </el-checkbox> | ||
| 127 | </template> | ||
| 128 | </el-table-column> | ||
| 129 | <!-- <el-table-column label="费用" prop="insuranceFee" />--> | ||
| 130 | </el-table> | ||
| 131 | </el-checkbox-group> | ||
| 132 | </div> | ||
| 133 | </el-collapse-item> | ||
| 134 | <el-collapse-item v-if="form.otherFee?.totalFee>0" name="4"> | ||
| 135 | <template #title> | ||
| 136 | <div class="titlebar"> | ||
| 137 | {{ form.otherFee?.name }} | ||
| 138 | <div class="fr"> | ||
| 139 | <span class="num">{{ form.otherFee?.count }}人</span> | ||
| 140 | 合计:<span class="money">{{ othermm }}元</span> | ||
| 141 | </div> | ||
| 142 | </div> | ||
| 143 | </template> | ||
| 144 | <div> | ||
| 145 | <el-checkbox-group v-model="hasOthersPersonIds" @change="choseOtherFee"> | ||
| 146 | <el-table border :data="form.otherFee?.info" style="width: 100%"> | ||
| 147 | <el-table-column type="index" label="序号" width="50" /> | ||
| 148 | <el-table-column label="姓名" prop="personInfo.realName" /> | ||
| 149 | <el-table-column label="性别"> | ||
| 150 | <template #default="scope"> | ||
| 151 | <span v-if="scope.row.personInfo.sex=='0'">女</span> | ||
| 152 | <span v-else>男</span> | ||
| 153 | </template> | ||
| 154 | </el-table-column> | ||
| 155 | <el-table-column label="证件类型"> | ||
| 156 | <template #default="scope"> | ||
| 157 | <span v-if="scope.row.personInfo.idcType=='0'">身份证</span> | ||
| 158 | <span v-if="scope.row.personInfo.idcType=='1'">护照</span> | ||
| 159 | <span v-if="scope.row.personInfo.idcType=='2'">其他</span> | ||
| 160 | <div>{{ scope.row.personInfo.idcCode }}</div> | ||
| 161 | </template> | ||
| 162 | </el-table-column> | ||
| 163 | <el-table-column label="是否自备"> | ||
| 164 | <template #default="scope"> | ||
| 165 | <span v-if="scope.row.allBringOwn=='0'">¥{{ scope.row.otherFee }}</span> | ||
| 166 | <el-checkbox v-else :label="scope.row.personId" checked> | ||
| 167 | ¥{{ scope.row.otherFee }} | ||
| 168 | </el-checkbox> | ||
| 169 | </template> | ||
| 170 | </el-table-column> | ||
| 171 | </el-table> | ||
| 172 | </el-checkbox-group> | ||
| 173 | </div> | ||
| 174 | </el-collapse-item> | ||
| 175 | </el-collapse> | ||
| 176 | <el-divider /> | ||
| 177 | <div> | ||
| 178 | <h3>支付方式</h3> | ||
| 179 | <el-radio-group v-model="form.payType"> | ||
| 180 | <el-radio v-if="myBalance>'0'" label="0" size="large" border><img src="@/assets/img/zf02.png" style="width: 30px;"> | ||
| 181 | 会员卡支付<span>(余额 <i class="orange">¥{{ myBalance }}</i>)</span> | ||
| 182 | </el-radio> | ||
| 183 | <el-radio label="1" size="large" border><img src="@/assets/img/zf_wx.png">微信</el-radio> | ||
| 184 | <el-radio label="2" size="large" border><img src="@/assets/img/zf_xj.png">线下支付</el-radio> | ||
| 185 | </el-radio-group> | ||
| 186 | </div> | ||
| 187 | </el-col> | ||
| 188 | </el-row> | ||
| 189 | |||
| 190 | |||
| 191 | </div> | ||
| 192 | <div class="panel-footer text-center" style="justify-content: space-between;padding: 0 20px"> | ||
| 193 | <p class="footFee"> | ||
| 194 | <span v-if="form.cptRegistrationFee?.totalFee>0">{{ form.cptRegistrationFee?.name }}:{{ form.cptRegistrationFee.totalFee }}元</span> | ||
| 195 | <span v-if="form.cptCompatibleFee?.totalFee>0">{{ form.cptCompatibleFee?.name }}:{{ form.cptCompatibleFee.totalFee }}元</span> | ||
| 196 | <span>{{ form.cptInsuranceFee?.name }}:{{ cptInsuranceFee }}元</span> | ||
| 197 | <span v-if="form.otherFee?.totalFee>0">{{ form.otherFee?.name }}:{{ othermm }}元</span> | ||
| 198 | <span v-if="form.teamFee?.totalFee>0">{{ form.teamFee?.name }}:{{ form.teamFee?.totalFee }}元</span> | ||
| 199 | <span v-if="form.cptDepositFee?.totalFee>0">{{ form.cptDepositFee?.name }}:{{ form.cptDepositFee.totalFee }}元</span> | ||
| 200 | </p> | ||
| 201 | <p class="footTotal"> | ||
| 202 | 合计:<span>¥{{ finialFee }}</span> | ||
| 203 | </p> | ||
| 204 | <!-- <el-button type="success" plain round @click="goPrev()">上一步</el-button>--> | ||
| 205 | <el-button type="success" round @click="submitForm()">提交订单</el-button> | ||
| 206 | </div> | ||
| 207 | </div> | ||
| 208 | </div> | ||
| 209 | <el-dialog v-model="showResult" :close-on-click-modal="false"> | ||
| 210 | <el-result icon="success" title="支付成功" /> | ||
| 211 | <template #extra> | ||
| 212 | <el-button type="primary" @click="downloadVoucher">下载报名凭证</el-button> | ||
| 213 | <el-button type="primary" @click="goMyMatch">查看订单</el-button> | ||
| 214 | </template> | ||
| 215 | </el-dialog> | ||
| 216 | <el-dialog v-model="showOrganizerInfo" title=" 线下支付" width="400px"> | ||
| 217 | <ul class="orgbox"> | ||
| 218 | <li>单位:{{ org.organizerName }}</li> | ||
| 219 | <li>开户行:{{ org.organizerBank }}</li> | ||
| 220 | <li>账户:{{ org.organizerAccount }}</li> | ||
| 221 | <li>打款金额:<span class="orange">¥{{ org.organizerFee }}</span></li> | ||
| 222 | </ul> | ||
| 223 | <template #footer> | ||
| 224 | <div class="dialog-footer text-center"> | ||
| 225 | <el-button type="primary" @click="downloadVoucher">下载报名凭证</el-button> | ||
| 226 | <el-button type="primary" @click="goMyMatch">查看订单</el-button> | ||
| 227 | </div> | ||
| 228 | </template> | ||
| 229 | </el-dialog> | ||
| 230 | <we-pay ref="wePayRef" @close="goMyMatch" /> | ||
| 231 | </div> | ||
| 232 | </template> | ||
| 233 | |||
| 234 | <script setup> | ||
| 235 | import { reactive, toRefs } from 'vue' | ||
| 236 | import { getCurrentInstance, onMounted } from '@vue/runtime-core' | ||
| 237 | const { proxy } = getCurrentInstance() | ||
| 238 | const router = useRouter() | ||
| 239 | const route = useRoute() | ||
| 240 | import * as match from '@/apiPc/match' | ||
| 241 | import { useRoute, useRouter } from 'vue-router' | ||
| 242 | import { ElMessage } from 'element-plus' | ||
| 243 | const data = reactive({ | ||
| 244 | form: {}, | ||
| 245 | activeCollapse: ['1', '2', '3', '4'], | ||
| 246 | myBalance: '', | ||
| 247 | finialFee: '', | ||
| 248 | cptInsuranceFee: '', | ||
| 249 | othermm: '', | ||
| 250 | buyInsurancePersonIds: [], | ||
| 251 | hasOthersPersonIds: [], | ||
| 252 | org: {}, | ||
| 253 | showOrganizerInfo: false, | ||
| 254 | showResult: false | ||
| 255 | }) | ||
| 256 | const { form, activeCollapse, myBalance, finialFee, org, showOrganizerInfo, showResult, cptInsuranceFee, othermm, buyInsurancePersonIds, hasOthersPersonIds } = toRefs(data) | ||
| 257 | |||
| 258 | let entryId | ||
| 259 | let groupId = '' | ||
| 260 | let cptId | ||
| 261 | let baseTotal | ||
| 262 | let bxdanjia | ||
| 263 | let otherdanjia | ||
| 264 | onMounted(() => { | ||
| 265 | cptId = route.params.id | ||
| 266 | if (route.query.personId) { | ||
| 267 | entryId = route.query.personId | ||
| 268 | } | ||
| 269 | if (route.query.groupId) { | ||
| 270 | groupId = route.query.groupId | ||
| 271 | entryId = route.query.groupId | ||
| 272 | } | ||
| 273 | getTotalFee() | ||
| 274 | // getMemberInfoByCptId() | ||
| 275 | }) | ||
| 276 | function getTotalFee() { | ||
| 277 | match.getTotalFee({ | ||
| 278 | entryId: groupId, | ||
| 279 | cptId: cptId | ||
| 280 | }).then(res => { | ||
| 281 | form.value = res.data | ||
| 282 | finialFee.value = form.value.totalFee | ||
| 283 | baseTotal = parseFloat(form.value.totalFee) - parseFloat(form.value.otherFee?.totalFee || 0) | ||
| 284 | cptInsuranceFee.value = form.value.cptInsuranceFee.totalFee | ||
| 285 | othermm.value = form.value.otherFee.totalFee | ||
| 286 | bxdanjia = form.value.cptInsuranceFee.info[0]?.insuranceFee | ||
| 287 | if (form.value.otherFee.info.length > 0) { | ||
| 288 | otherdanjia = form.value.otherFee.info[0]?.otherFee | ||
| 289 | for (const ren of form.value.otherFee.info) { | ||
| 290 | hasOthersPersonIds.value.push(ren.personId) | ||
| 291 | } | ||
| 292 | } | ||
| 293 | }) | ||
| 294 | } | ||
| 295 | // function getMemberInfoByCptId() { | ||
| 296 | // match.getMemberInfoByCptId(cptId).then((res) => { | ||
| 297 | // myBalance.value = res.data.balance | ||
| 298 | // }) | ||
| 299 | // } | ||
| 300 | function getTotal() { | ||
| 301 | finialFee.value = parseFloat(baseTotal) + parseFloat(cptInsuranceFee.value) + parseFloat(othermm.value) | ||
| 302 | } | ||
| 303 | // 保险费 | ||
| 304 | function choseInsuranceFee(e) { | ||
| 305 | console.log(e, buyInsurancePersonIds.value) | ||
| 306 | cptInsuranceFee.value = e.length * bxdanjia | ||
| 307 | getTotal() | ||
| 308 | // finialFee.value = parseFloat(cptInsuranceFee.value) + parseFloat(form.value.totalFee) | ||
| 309 | } | ||
| 310 | // 其他费用 | ||
| 311 | function choseOtherFee(e) { | ||
| 312 | console.log(e, hasOthersPersonIds.value) | ||
| 313 | othermm.value = e.length * otherdanjia | ||
| 314 | getTotal() | ||
| 315 | } | ||
| 316 | function submitForm() { | ||
| 317 | // 提交订单 | ||
| 318 | var obj = { | ||
| 319 | insruanceFee: cptInsuranceFee.value, | ||
| 320 | buyInsurancePersonIds: buyInsurancePersonIds.value.toString() || '', | ||
| 321 | otherFee: othermm.value, | ||
| 322 | bringPersonIds: hasOthersPersonIds.value.toString() || '', | ||
| 323 | cptId: cptId, | ||
| 324 | groupId: groupId | ||
| 325 | } | ||
| 326 | console.log(obj) | ||
| 327 | creatBill(obj) | ||
| 328 | } | ||
| 329 | let orderId | ||
| 330 | function creatBill(obj) { | ||
| 331 | if (!form.value.payType) { | ||
| 332 | ElMessage.error('请选择支付方式') | ||
| 333 | return | ||
| 334 | } | ||
| 335 | match.commitSign(obj).then(res => { | ||
| 336 | orderId = res.data | ||
| 337 | match.payMatch({ orderId: orderId, payType: form.value.payType }).then(res => { | ||
| 338 | console.log(res.data) | ||
| 339 | if (form.value.payType == 2) { | ||
| 340 | org.value = res.data.org | ||
| 341 | showOrganizerInfo.value = true | ||
| 342 | } else if (form.value.payType == 1) { | ||
| 343 | // 微信 | ||
| 344 | proxy.$refs['wePayRef'].open(res.data) | ||
| 345 | } else { | ||
| 346 | showResult.value = true | ||
| 347 | } | ||
| 348 | }) | ||
| 349 | }) | ||
| 350 | } | ||
| 351 | function goMyMatch() { | ||
| 352 | router.push({ | ||
| 353 | name: 'myMatch' | ||
| 354 | }) | ||
| 355 | } | ||
| 356 | function downloadVoucher() { | ||
| 357 | // 下载报名凭证 | ||
| 358 | proxy.download( | ||
| 359 | `/pdf/getPayedOrderPdf/${cptId}/${groupId || 0}`, {}, '报项凭证.pdf' | ||
| 360 | ) | ||
| 361 | } | ||
| 362 | </script> | ||
| 363 | |||
| 364 | <style scoped lang="scss"> | ||
| 365 | .footFee{ | ||
| 366 | color: #95A1A6; | ||
| 367 | font-size: 16px; | ||
| 368 | span{margin: 0 20px} | ||
| 369 | } | ||
| 370 | .footTotal{ | ||
| 371 | color: #000000; | ||
| 372 | font-size: 16px; | ||
| 373 | span{ | ||
| 374 | color: #EB6100; | ||
| 375 | font-size: 22px;} | ||
| 376 | } | ||
| 377 | |||
| 378 | .app-container{ padding: 0;background: #F5F7F9;} | ||
| 379 | .panel-footer .el-button--success{background: #254385;border: none; | ||
| 380 | padding: 0 40px; | ||
| 381 | font-size: 16px; | ||
| 382 | } | ||
| 383 | .panel-footer .el-button--success.is-plain{background: #fff;border:1px solid #2ED981;color: #2ED981;} | ||
| 384 | .el-collapse{--el-collapse-border-color:transparent} | ||
| 385 | .el-collapse-item{ margin: 0 0 30px;padding: 0 20px; | ||
| 386 | border-radius: 10px; | ||
| 387 | background: #FBFCFD; | ||
| 388 | --el-collapse-border-color:transparent; | ||
| 389 | --el-collapse-header-bg-color:transparent; | ||
| 390 | --el-collapse-content-bg-color:transparent; | ||
| 391 | } | ||
| 392 | .titlebar{width: 100%; | ||
| 393 | font-size: 18px; | ||
| 394 | .fr{ | ||
| 395 | .num{color: #7B7F83;margin-right: 20px ;} | ||
| 396 | .money{color: #FF8124;margin:0 6px;} | ||
| 397 | } | ||
| 398 | } | ||
| 399 | :deep(.el-radio.el-radio--large .el-radio__label){display: flex; align-items: center; | ||
| 400 | img{margin-right: 6px;} | ||
| 401 | } | ||
| 402 | :deep(.el-radio.is-bordered.el-radio--large .el-radio__inner){ | ||
| 403 | width: 25px;height: 25px; | ||
| 404 | } | ||
| 405 | :deep(.el-radio__inner::after){ | ||
| 406 | width: 7px;height: 7px; | ||
| 407 | } | ||
| 408 | .fixCollapseItem{padding: 20px;font-weight: 500;} | ||
| 409 | .orange{font-size: 16px;font-style: normal;font-weight: bold} | ||
| 410 | </style> |
| ... | @@ -12,16 +12,25 @@ | ... | @@ -12,16 +12,25 @@ |
| 12 | <div class="pd20" v-if="signInfoList?.length>0"> | 12 | <div class="pd20" v-if="signInfoList?.length>0"> |
| 13 | <div class="leftboderTT">{{ language == 0 ? '参赛人员保险费' : 'Participant Insurance Fee' }}</div> | 13 | <div class="leftboderTT">{{ language == 0 ? '参赛人员保险费' : 'Participant Insurance Fee' }}</div> |
| 14 | <!-- 人员列表--> | 14 | <!-- 人员列表--> |
| 15 | <sign-info-table class="mt20" v-if="matchId" :match-id="matchId" :list="signInfoList" :hasAction="false"/> | 15 | <sign-info-table class="mt20" v-if="matchId" :show-summary="true" :total="insuranceFeeTotal" :match-id="matchId" :list="signInfoList" :hasAction="false"/> |
| 16 | </div> | 16 | </div> |
| 17 | <div class="pd20" v-if="zuTableList?.length>0"> | 17 | <div class="pd20" v-if="zuTableList?.length>0"> |
| 18 | <div class="leftboderTT">{{ language == 0 ? '参赛设项报名费' : 'Registration Fee for Event Entry' }}</div> | 18 | <div class="leftboderTT">{{ language == 0 ? '参赛设项报名费' : 'Registration Fee for Event Entry' }}</div> |
| 19 | <zu-table class="mt20" :list="zuTableList" :hasAction="false"/> | 19 | <zu-table class="mt20" :list="zuTableList" :show-summary="true" :total="serviceFeeTotal" :hasAction="false"/> |
| 20 | </div> | 20 | </div> |
| 21 | <el-row class="priceBar"> | ||
| 22 | <el-col :lg="24" :xs="24"> | ||
| 23 | <div class="flex"> | ||
| 24 | <div class="item" v-if="signInfoList?.length>0"><label>{{ language==0?'报名费':'Registration Fee' }}:</label><span>{{ language==0?'¥':'£' }}{{serviceFeeTotal}}</span></div> | ||
| 25 | <div class="item" v-if="zuTableList?.length>0"><label>{{ language==0?'保险费':'Insurance Fee' }}:</label><span>{{ language==0?'¥':'£' }}{{insuranceFeeTotal}}</span></div> | ||
| 26 | <div class="item"><label>{{ language==0?'费用总计':'Total Cost' }}:</label><span class="size26">{{ language==0?'¥':'£' }}{{form.totalFee}}</span></div> | ||
| 27 | </div> | ||
| 28 | </el-col> | ||
| 29 | </el-row> | ||
| 21 | </div> | 30 | </div> |
| 22 | <div v-else class="pd20 skeletonBox"> | 31 | <div v-else class="pd20 skeletonBox"> |
| 23 | <el-skeleton :rows="8"/> | 32 | <el-skeleton :rows="8"/> |
| 24 | <el-button type="primary" class="w200px btn-lineG" round @click="showLogin"> | 33 | <el-button type="primary" class="btn-lineG" size="large" :style="language == 0 ?'width:200px':'width:400px'" round @click="showLogin"> |
| 25 | {{ language == 0 ?'登录后查看详细报项信息':'View detailed report information after logging in' }} | 34 | {{ language == 0 ?'登录后查看详细报项信息':'View detailed report information after logging in' }} |
| 26 | </el-button> | 35 | </el-button> |
| 27 | </div> | 36 | </div> |
| ... | @@ -41,11 +50,12 @@ | ... | @@ -41,11 +50,12 @@ |
| 41 | <div class="text-danger flex" v-if="form.auditStatus=='3'"> | 50 | <div class="text-danger flex" v-if="form.auditStatus=='3'"> |
| 42 | <img src="@/assets/img/w.png"> | 51 | <img src="@/assets/img/w.png"> |
| 43 | {{ language==0?'报名信息审核拒绝':'Registration Information rejected' }} | 52 | {{ language==0?'报名信息审核拒绝':'Registration Information rejected' }} |
| 53 | <div>{{ language==0?'驳回理由:':'Reason:'}}</div> | ||
| 44 | </div> | 54 | </div> |
| 45 | </el-col> | 55 | </el-col> |
| 46 | <el-col :lg="12"> | 56 | <el-col :lg="12"> |
| 47 | <div class="priceb" v-if="form.payStatus=='0'">{{ language==0?'待支付金额':'Amount Due' }}:<span class="price">¥{{ Number(totalFee).toFixed(2) }}</span></div> | 57 | <div class="priceb" v-if="form.payStatus=='0'">{{ language==0?'待支付金额':'Amount Due' }}:<span class="price">{{ language==0?'¥':'£' }}{{ Number(totalFee).toFixed(2) }}</span></div> |
| 48 | <div class="priceb" v-if="form.payStatus=='1'">{{ language==0?'已支付金额':'Amount Due' }}:<span class="price">¥{{ Number(totalFee).toFixed(2) }}</span></div> | 58 | <div class="priceb" v-if="form.payStatus=='1'">{{ language==0?'已支付金额':'Amount Due' }}:<span class="price">{{ language==0?'¥':'£' }}{{ Number(totalFee).toFixed(2) }}</span></div> |
| 49 | </el-col> | 59 | </el-col> |
| 50 | </el-row> | 60 | </el-row> |
| 51 | </el-card> | 61 | </el-card> |
| ... | @@ -147,7 +157,7 @@ | ... | @@ -147,7 +157,7 @@ |
| 147 | <tr> | 157 | <tr> |
| 148 | <th>{{ language==0?'付款金额':'Payment Amount' }}</th> | 158 | <th>{{ language==0?'付款金额':'Payment Amount' }}</th> |
| 149 | <td> | 159 | <td> |
| 150 | ¥{{ totalFee }} | 160 | {{ language==0?'¥':'£' }}{{ totalFee }} |
| 151 | <div class="text-gray">{{ language==0?'请按照指定金额进行打款':'Please make the payment according to the specified amount' }}</div> | 161 | <div class="text-gray">{{ language==0?'请按照指定金额进行打款':'Please make the payment according to the specified amount' }}</div> |
| 152 | </td> | 162 | </td> |
| 153 | </tr> | 163 | </tr> |
| ... | @@ -211,7 +221,7 @@ | ... | @@ -211,7 +221,7 @@ |
| 211 | <div class="text-center"> | 221 | <div class="text-center"> |
| 212 | <el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon> | 222 | <el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon> |
| 213 | <p class="text-success">{{ language==0?'支付成功':'successful!' }}</p> | 223 | <p class="text-success">{{ language==0?'支付成功':'successful!' }}</p> |
| 214 | <h3 class="wePrice">¥{{form.totalFee}}</h3> | 224 | <h3 class="wePrice">{{ language==0?'¥':'£' }}{{form.totalFee}}</h3> |
| 215 | </div> | 225 | </div> |
| 216 | </el-card> | 226 | </el-card> |
| 217 | <el-card class="mb60" v-if="form.payStatus == '1' && form.curPayType=='2'"> | 227 | <el-card class="mb60" v-if="form.payStatus == '1' && form.curPayType=='2'"> |
| ... | @@ -219,7 +229,7 @@ | ... | @@ -219,7 +229,7 @@ |
| 219 | <div class="text-center"> | 229 | <div class="text-center"> |
| 220 | <el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon> | 230 | <el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon> |
| 221 | <p class="text-success">{{ language==0?'支付成功':'successful!' }}</p> | 231 | <p class="text-success">{{ language==0?'支付成功':'successful!' }}</p> |
| 222 | <h3 class="wePrice">¥{{form.totalFee}}</h3> | 232 | <h3 class="wePrice">{{ language==0?'¥':'£' }}{{form.totalFee}}</h3> |
| 223 | <span v-if="language==0" class="text-danger size12">*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span> | 233 | <span v-if="language==0" class="text-danger size12">*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span> |
| 224 | <span v-else class="text-danger size12">*You can confirm with the contact person by phone after uploading the remittance form. The specific payment results can be viewed in the My Registration section of the personal center to check the progress</span> | 234 | <span v-else class="text-danger size12">*You can confirm with the contact person by phone after uploading the remittance form. The specific payment results can be viewed in the My Registration section of the personal center to check the progress</span> |
| 225 | 235 | ||
| ... | @@ -279,6 +289,8 @@ const upForm = ref({ | ... | @@ -279,6 +289,8 @@ const upForm = ref({ |
| 279 | }) | 289 | }) |
| 280 | const errorBox = ref(false) | 290 | const errorBox = ref(false) |
| 281 | const hideconfirmbtn = ref(false) | 291 | const hideconfirmbtn = ref(false) |
| 292 | const insuranceFeeTotal = ref(0) | ||
| 293 | const serviceFeeTotal = ref(0) | ||
| 282 | console.log(route.query.orderId) | 294 | console.log(route.query.orderId) |
| 283 | // 1763462073870237698 | 295 | // 1763462073870237698 |
| 284 | getData() | 296 | getData() |
| ... | @@ -310,8 +322,17 @@ function getSignList() { | ... | @@ -310,8 +322,17 @@ function getSignList() { |
| 310 | cptId: matchId.value, | 322 | cptId: matchId.value, |
| 311 | groupId: groupId.value | 323 | groupId: groupId.value |
| 312 | }).then(res => { | 324 | }).then(res => { |
| 325 | insuranceFeeTotal.value = 0 | ||
| 326 | serviceFeeTotal.value = 0 | ||
| 313 | signInfoList.value = res.data.singleData | 327 | signInfoList.value = res.data.singleData |
| 314 | zuTableList.value = res.data.zuData | 328 | zuTableList.value = res.data.zuData |
| 329 | for(var s of signInfoList.value){ | ||
| 330 | insuranceFeeTotal.value = insuranceFeeTotal.value + Number(s.insuranceFee) | ||
| 331 | } | ||
| 332 | for(var z of zuTableList.value){ | ||
| 333 | serviceFeeTotal.value = serviceFeeTotal.value + Number(z.project.serviceFee) | ||
| 334 | } | ||
| 335 | |||
| 315 | }) | 336 | }) |
| 316 | } | 337 | } |
| 317 | function goHome() { | 338 | function goHome() { |
| ... | @@ -456,4 +477,13 @@ function showLogin(){ | ... | @@ -456,4 +477,13 @@ function showLogin(){ |
| 456 | } | 477 | } |
| 457 | } | 478 | } |
| 458 | .payImgbox{text-align: center;border: 1px solid #fff;padding: 20px;} | 479 | .payImgbox{text-align: center;border: 1px solid #fff;padding: 20px;} |
| 480 | .priceBar{padding: 0 0 20px; | ||
| 481 | .flex{display: flex;justify-content: right;align-items: baseline; | ||
| 482 | .item{font-size: 16px;margin-right: 15px; | ||
| 483 | label{color: #95A1A6;} | ||
| 484 | span{font-family: DIN Alternate;} | ||
| 485 | } | ||
| 486 | } | ||
| 487 | .size26{font-size: 26px;} | ||
| 488 | } | ||
| 459 | </style> | 489 | </style> | ... | ... |
| ... | @@ -11,12 +11,22 @@ | ... | @@ -11,12 +11,22 @@ |
| 11 | <div style="margin: 20px"> | 11 | <div style="margin: 20px"> |
| 12 | 12 | ||
| 13 | <div class="mt20"> | 13 | <div class="mt20"> |
| 14 | <div class="leftboderTT">{{ language==0?'参赛人员清单':'Participant List' }}</div> | 14 | <div class="leftboderTT">{{ language==0?'参赛人员清单':'Participant List' }} |
| 15 | <sign-info-table class="mt20" :match-id="matchId" :list="signInfoList" :hasAction="false"/> | 15 | <div class="fr"> |
| 16 | <el-input size="small" v-model="zuQuery.name" :prefix-icon="Search" | ||
| 17 | @change="getSignList" clearable/> | ||
| 18 | </div> | ||
| 19 | </div> | ||
| 20 | <sign-info-table class="mt20" :showSummary="true" :total="form.cptInsuranceFee?.totalFee" :match-id="matchId" :list="signInfoList" :hasAction="false"/> | ||
| 16 | </div> | 21 | </div> |
| 17 | <div class="mt20"> | 22 | <div class="mt20"> |
| 18 | <div class="leftboderTT">{{ language==0?'设项报名清单':'Event Registration List' }}</div> | 23 | <div class="leftboderTT">{{ language==0?'设项报名清单':'Event Registration List' }} |
| 19 | <zu-table class="mt20" :list="zuTableList" :hasAction="false"/> | 24 | <div class="fr"> |
| 25 | <el-input size="small" v-model="zuQuery.groupName" :prefix-icon="Search" | ||
| 26 | @change="getSignList" clearable/> | ||
| 27 | </div> | ||
| 28 | </div> | ||
| 29 | <zu-table class="mt20" :showSummary="true" :total="form.cptRegistrationFee?.totalFee" :list="zuTableList" :hasAction="false"/> | ||
| 20 | </div> | 30 | </div> |
| 21 | </div> | 31 | </div> |
| 22 | 32 | ||
| ... | @@ -26,9 +36,9 @@ | ... | @@ -26,9 +36,9 @@ |
| 26 | <el-row class="priceBar"> | 36 | <el-row class="priceBar"> |
| 27 | <el-col :lg="16" :xs="24" class="pd20"> | 37 | <el-col :lg="16" :xs="24" class="pd20"> |
| 28 | <div class="flex"> | 38 | <div class="flex"> |
| 29 | <div class="item"><label>{{ language==0?'报名费':'Registration Fee' }}:</label><span>¥{{form.cptRegistrationFee?.totalFee}}</span></div> | 39 | <div class="item"><label>{{ language==0?'报名费':'Registration Fee' }}:</label><span>{{ language==0?'¥':'£' }}{{form.cptRegistrationFee?.totalFee}}</span></div> |
| 30 | <div class="item"><label>{{ language==0?'保险费':'Insurance Fee' }}:</label><span>¥{{form.cptInsuranceFee?.totalFee}}</span></div> | 40 | <div class="item"><label>{{ language==0?'保险费':'Insurance Fee' }}:</label><span>{{ language==0?'¥':'£' }}{{form.cptInsuranceFee?.totalFee}}</span></div> |
| 31 | <div class="item"><label>{{ language==0?'费用总计':'Total Cost' }}:</label><span>¥{{form.totalFee}}</span></div> | 41 | <div class="item"><label>{{ language==0?'费用总计':'Total Cost' }}:</label><span>{{ language==0?'¥':'£' }}{{form.totalFee}}</span></div> |
| 32 | </div> | 42 | </div> |
| 33 | </el-col> | 43 | </el-col> |
| 34 | <el-col :lg="8" :xs="24" class="text-right pd20"> | 44 | <el-col :lg="8" :xs="24" class="text-right pd20"> |
| ... | @@ -49,6 +59,7 @@ | ... | @@ -49,6 +59,7 @@ |
| 49 | </template> | 59 | </template> |
| 50 | 60 | ||
| 51 | <script setup> | 61 | <script setup> |
| 62 | import {Search} from "@element-plus/icons-vue"; | ||
| 52 | import TeamSignStep from './components/teamSignStep' | 63 | import TeamSignStep from './components/teamSignStep' |
| 53 | import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row" | 64 | import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row" |
| 54 | import GroupInfoRow from "@/viewsPc/match/components/groupInfo-row" | 65 | import GroupInfoRow from "@/viewsPc/match/components/groupInfo-row" |
| ... | @@ -68,32 +79,32 @@ const router = useRouter() | ... | @@ -68,32 +79,32 @@ const router = useRouter() |
| 68 | const activeStep = ref(3) | 79 | const activeStep = ref(3) |
| 69 | const groupInfo = useUserStore().group || {} | 80 | const groupInfo = useUserStore().group || {} |
| 70 | const language = ref(cache.local.get('language') || 0) | 81 | const language = ref(cache.local.get('language') || 0) |
| 71 | const groupId = ref() | 82 | const groupId = ref(route.query.groupId || 0) |
| 72 | const form = ref({}) | 83 | const form = ref({}) |
| 73 | const matchId = ref(route.query.matchId) | 84 | const matchId = ref(route.query.matchId) |
| 74 | const signInfoList = ref([]) | 85 | const signInfoList = ref([]) |
| 75 | const zuTableList = ref([]) | 86 | const zuTableList = ref([]) |
| 76 | const {proxy} = getCurrentInstance() | 87 | const {proxy} = getCurrentInstance() |
| 88 | const zuQuery = ref({ | ||
| 89 | cptId: matchId.value, | ||
| 90 | groupId: groupId.value, | ||
| 91 | name:'', | ||
| 92 | groupName:'' | ||
| 93 | }) | ||
| 77 | onMounted(()=>{ | 94 | onMounted(()=>{ |
| 78 | // console.log(route.query) | 95 | // console.log(route.query) |
| 79 | matchId.value = route.query.matchId | ||
| 80 | groupId.value = route.query.groupId || 0 | ||
| 81 | getSignList() | 96 | getSignList() |
| 82 | getFee(groupId.value) | 97 | getFee(groupId.value) |
| 83 | }) | 98 | }) |
| 84 | 99 | ||
| 85 | 100 | ||
| 86 | function getSignList() { | 101 | function getSignList() { |
| 87 | match.getMySignInfoList({ | 102 | match.getMySignInfoList(zuQuery.value).then(res=>{ |
| 88 | cptId: matchId.value, | ||
| 89 | groupId: groupId.value | ||
| 90 | }).then(res=>{ | ||
| 91 | signInfoList.value = res.data.singleData | 103 | signInfoList.value = res.data.singleData |
| 92 | zuTableList.value = res.data.zuData | 104 | zuTableList.value = res.data.zuData |
| 93 | }) | 105 | }) |
| 94 | } | 106 | } |
| 95 | const goPrev = () => { | 107 | const goPrev = () => { |
| 96 | // router.go(-1) | ||
| 97 | router.push({ | 108 | router.push({ |
| 98 | name: 'chooseSportsman', | 109 | name: 'chooseSportsman', |
| 99 | query: { | 110 | query: { |
| ... | @@ -181,6 +192,7 @@ function exportSignList(n) { | ... | @@ -181,6 +192,7 @@ function exportSignList(n) { |
| 181 | .flex{display: flex; | 192 | .flex{display: flex; |
| 182 | .item{font-size: 16px;margin-right: 15px; | 193 | .item{font-size: 16px;margin-right: 15px; |
| 183 | label{color: #95A1A6;} | 194 | label{color: #95A1A6;} |
| 195 | span{font-family: DIN Alternate;} | ||
| 184 | } | 196 | } |
| 185 | } | 197 | } |
| 186 | } | 198 | } | ... | ... |
| ... | @@ -23,6 +23,9 @@ | ... | @@ -23,6 +23,9 @@ |
| 23 | </el-form-item> | 23 | </el-form-item> |
| 24 | </el-col> | 24 | </el-col> |
| 25 | <el-col :lg="10"> | 25 | <el-col :lg="10"> |
| 26 | <el-form-item :label="language==0?'参赛队名称':'Name of participating team'" required prop="abreviations"> | ||
| 27 | <el-input type="text" v-model="form.abreviations" :placeholder="language==0?'请输入内容':''"/> | ||
| 28 | </el-form-item> | ||
| 26 | <el-form-item :label="language==0?'团体名称':'Team Name'" prop="name"> | 29 | <el-form-item :label="language==0?'团体名称':'Team Name'" prop="name"> |
| 27 | <el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" /> | 30 | <el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" /> |
| 28 | </el-form-item> | 31 | </el-form-item> |
| ... | @@ -32,9 +35,6 @@ | ... | @@ -32,9 +35,6 @@ |
| 32 | <el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail"> | 35 | <el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail"> |
| 33 | <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/> | 36 | <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/> |
| 34 | </el-form-item> | 37 | </el-form-item> |
| 35 | <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address"> | ||
| 36 | <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/> | ||
| 37 | </el-form-item> | ||
| 38 | <el-form-item :label="language==0?'团体类型':'Group type'" prop="type"> | 38 | <el-form-item :label="language==0?'团体类型':'Group type'" prop="type"> |
| 39 | <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;"> | 39 | <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;"> |
| 40 | <el-option :label="language==0?'普通院校':'School'" value="0" /> | 40 | <el-option :label="language==0?'普通院校':'School'" value="0" /> |
| ... | @@ -44,10 +44,12 @@ | ... | @@ -44,10 +44,12 @@ |
| 44 | <el-option :label="language==0?'国家协会':'National Association'" value="4" /> | 44 | <el-option :label="language==0?'国家协会':'National Association'" value="4" /> |
| 45 | </el-select> | 45 | </el-select> |
| 46 | </el-form-item> | 46 | </el-form-item> |
| 47 | <el-form-item :label="language==0?'参赛队名称':'Name of participating team'" required prop="abreviations"> | 47 | <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address"> |
| 48 | <el-input type="text" v-model="form.abreviations" :placeholder="language==0?'请输入内容':''"/> | 48 | <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/> |
| 49 | </el-form-item> | 49 | </el-form-item> |
| 50 | 50 | ||
| 51 | |||
| 52 | |||
| 51 | </el-col> | 53 | </el-col> |
| 52 | </el-row> | 54 | </el-row> |
| 53 | <el-row v-if="participantsInfoArr&&participantsInfoArr.length>0"> | 55 | <el-row v-if="participantsInfoArr&&participantsInfoArr.length>0"> | ... | ... |
| 1 | <template> | ||
| 2 | <el-card> | ||
| 3 | <el-steps :active="activeStep" finish-status="success" align-center> | ||
| 4 | <el-step :title="language==0?'创建账号':'Check WDSF ID'"/> | ||
| 5 | <el-step :title="language==0?'选手报名':'Participant Registration'" /> | ||
| 6 | <el-step :title="language==0?'提交审核':'Submit for review'" /> | ||
| 7 | <!-- <el-step :title="language==0?'注册完成':'stered successfully'" />--> | ||
| 8 | </el-steps> | ||
| 9 | </el-card> | ||
| 10 | </template> | ||
| 11 | |||
| 12 | <script setup> | ||
| 13 | import {ref} from "vue"; | ||
| 14 | import cache from "@/plugins/cache"; | ||
| 15 | |||
| 16 | const language = ref(cache.local.get('language') || 0) | ||
| 17 | const props = defineProps({ | ||
| 18 | activeStep: { | ||
| 19 | type: Number, | ||
| 20 | required: true | ||
| 21 | } | ||
| 22 | }) | ||
| 23 | </script> | ||
| 24 | |||
| 25 | <style scoped> | ||
| 26 | |||
| 27 | </style> |
| ... | @@ -2,21 +2,14 @@ | ... | @@ -2,21 +2,14 @@ |
| 2 | <div> | 2 | <div> |
| 3 | <div class="mt30 mb60"> | 3 | <div class="mt30 mb60"> |
| 4 | <div class="box"> | 4 | <div class="box"> |
| 5 | <!-- 国内-机构注册--> | 5 | <personal-step :active-step="activeStep"/> |
| 6 | <el-card> | ||
| 7 | <el-steps :active="activeStep" finish-status="success" align-center> | ||
| 8 | <el-step :title="language==0?'创建账号':'create an account'"/> | ||
| 9 | <el-step :title="language==0?'注册完成':'stered successfully'" /> | ||
| 10 | </el-steps> | ||
| 11 | </el-card> | ||
| 12 | |||
| 13 | <div class="mt20"></div> | 6 | <div class="mt20"></div> |
| 14 | <div v-if="activeStep==0"> | 7 | <div> |
| 15 | <el-card style="min-height: 50vh"> | 8 | <el-card style="min-height: 50vh"> |
| 16 | <div class="pt30"> | 9 | <div class="pt30"> |
| 17 | <el-form class="d-form" size="large" :label-width="language==0?120:180" | 10 | <el-form class="d-form" size="large" :label-width="language==0?120:180" |
| 18 | style="max-width: 500px;margin: auto"> | 11 | style="max-width: 560px;margin: auto"> |
| 19 | <el-form-item :label="language==0?'WDSF卡号':'WDSF'" required> | 12 | <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" required> |
| 20 | <el-input type="text" v-model="form.card" @change="resetCode(0)" @blur="verifyCode"> | 13 | <el-input type="text" v-model="form.card" @change="resetCode(0)" @blur="verifyCode"> |
| 21 | <template #append> | 14 | <template #append> |
| 22 | <el-button type="primary" plain style="width: 110px" @click="checkCard"> | 15 | <el-button type="primary" plain style="width: 110px" @click="checkCard"> |
| ... | @@ -25,10 +18,73 @@ | ... | @@ -25,10 +18,73 @@ |
| 25 | </el-button> | 18 | </el-button> |
| 26 | </template> | 19 | </template> |
| 27 | </el-input> | 20 | </el-input> |
| 21 | </el-form-item> | ||
| 22 | <div class="h30"></div> | ||
| 23 | <div class="leftboderTT">{{ language == 0 ? '个人信息' : 'Personal information' }} | ||
| 24 | <span v-if="language==0">(登录时需要验证,保护账户信息)</span> | ||
| 25 | <span v-else>(Obtain automatically according to the WDSF number)</span> | ||
| 26 | </div> | ||
| 27 | <div class="h20"></div> | ||
| 28 | <el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required> | ||
| 29 | <el-input v-model="form.xing" disabled/> | ||
| 30 | </el-form-item> | ||
| 31 | <el-form-item :label="language==0?'名':'name'" prop="ming" required> | ||
| 32 | <el-input v-model="form.ming" disabled/> | ||
| 33 | </el-form-item> | ||
| 34 | <el-form-item label="Representing" required> | ||
| 35 | <el-input v-model="form.Representing" disabled/> | ||
| 36 | </el-form-item> | ||
| 37 | <el-form-item label="Age group" required> | ||
| 38 | <el-input v-model="form.ageGroup" disabled/> | ||
| 39 | </el-form-item> | ||
| 40 | <el-form-item label="Division" required> | ||
| 41 | <el-input v-model="form.division" disabled/> | ||
| 42 | </el-form-item> | ||
| 43 | <el-form-item label="Status" required> | ||
| 44 | <el-input v-model="form.status" disabled/> | ||
| 45 | </el-form-item> | ||
| 46 | <div class="h30"></div> | ||
| 47 | <div class="leftboderTT"> | ||
| 48 | {{ language == 0 ? '补充信息' : 'Supplementary Information' }} | ||
| 49 | </div> | ||
| 50 | <div class="h20"></div> | ||
| 51 | <el-form-item :label="language==0?'性别':'Sex'" prop="sex" required> | ||
| 52 | <el-radio-group v-model="form.sex"> | ||
| 53 | <el-radio label="0">{{ language==0?'女':'female' }}</el-radio> | ||
| 54 | <el-radio label="1">{{ language==0?'男':'male' }}</el-radio> | ||
| 55 | </el-radio-group> | ||
| 56 | </el-form-item> | ||
| 28 | 57 | ||
| 58 | <el-form-item :label="language==0?'出生日期':'Birthday'" prop="birth" required> | ||
| 59 | <el-date-picker | ||
| 60 | v-model="form.birth" | ||
| 61 | style="width: 100%;" | ||
| 62 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" | ||
| 63 | /> | ||
| 64 | </el-form-item> | ||
| 65 | <el-form-item label="Passport number" required prop="idcCode"> | ||
| 66 | <el-input v-model="form.idcCode"/> | ||
| 29 | </el-form-item> | 67 | </el-form-item> |
| 30 | <el-form-item :label="language==0?'手机/邮箱':'E-mail / Phone number'" required> | 68 | <el-form-item label="Passport File"> |
| 31 | <el-input type="text" v-model="form.account" @change="resetCode(1)" @blur="verifyCode"/> | 69 | <file-upload :is-show-tip="false" :button-text="'Upload'"/> |
| 70 | </el-form-item> | ||
| 71 | |||
| 72 | |||
| 73 | <div class="h30"></div> | ||
| 74 | <div class="leftboderTT">{{ language == 0 ? '登录密码' : 'Login Information' }} <span | ||
| 75 | v-if="language==0">(登录时需要验证,保护账户信息)</span></div> | ||
| 76 | <div class="h20"></div> | ||
| 77 | <el-form-item :label="language==0?'邮箱':'E-mail'" required> | ||
| 78 | <el-input type="text" v-model="form.account" @change="resetCode(1)" | ||
| 79 | @blur="verifyCode"/> | ||
| 80 | <div class="tip" v-if="language==0"> | ||
| 81 | (请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。 | ||
| 82 | 该邮箱后续会接收您报名审核、支付账单、比赛邀请函等。) | ||
| 83 | </div> | ||
| 84 | <div class="tip" v-else> | ||
| 85 | Please fill in a correct mailbox information, which cannot be modified after registration. | ||
| 86 | The mailbox will receive your registration review, payment of bills, competition invitation and so on. | ||
| 87 | </div> | ||
| 32 | </el-form-item> | 88 | </el-form-item> |
| 33 | <el-form-item :label="language==0?'验证码':'Code'" required> | 89 | <el-form-item :label="language==0?'验证码':'Code'" required> |
| 34 | <el-input v-model="form.code"> | 90 | <el-input v-model="form.code"> |
| ... | @@ -42,31 +98,29 @@ | ... | @@ -42,31 +98,29 @@ |
| 42 | </template> | 98 | </template> |
| 43 | </el-input> | 99 | </el-input> |
| 44 | </el-form-item> | 100 | </el-form-item> |
| 45 | <div class="h30"></div> | 101 | |
| 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> | 102 | <el-form-item :label="language==0?'密码':'Password'" required> |
| 50 | <el-input type="password" show-password v-model="form.password" | 103 | <el-input type="password" show-password v-model="form.password" |
| 51 | :placeholder="language==0?'6-16位密码。区分大小写':''"/> | 104 | :placeholder="language==0?'6-16位密码。区分大小写':'Password'"/> |
| 52 | </el-form-item> | 105 | </el-form-item> |
| 53 | <el-form-item :label="language==0?'确认密码':'Confirm Password'" required> | 106 | <el-form-item :label="language==0?'确认密码':'Confirm Password'" required> |
| 54 | <el-input type="password" show-password v-model="form.confirmPassword" @blur="vconfirmPassword" | 107 | <el-input type="password" show-password v-model="form.confirmPassword" @change="vconfirmPassword" |
| 55 | :placeholder="language==0?'再次输入密码':'Confirm Password'"/> | 108 | :placeholder="language==0?'再次输入密码':'Confirm Password'"/> |
| 109 | <div class="text-danger" v-if="showError">{{ language==0?'密码不一致':'Password inconsistency' }}</div> | ||
| 56 | </el-form-item> | 110 | </el-form-item> |
| 57 | </el-form> | 111 | </el-form> |
| 58 | </div> | 112 | </div> |
| 59 | <div class="text-center"> | 113 | <div class="text-center"> |
| 60 | <!-- <el-button class="primary-kx" round @click="goBack">取消</el-button>--> | 114 | <el-button class="primary-kx" round @click="goBack"> {{ language==0?'取消':'Cancel'}}</el-button> |
| 61 | <el-button type="primary" class="btn-lineG w200px" round @click="next"> | 115 | <el-button type="primary" class="btn-lineG w200px" round @click="next" v-if="matchId=='0'"> |
| 62 | {{ language==0?'立即注册':'Register Now' }} | 116 | {{ language==0?'立即注册':'Register Now' }} |
| 63 | </el-button> | 117 | </el-button> |
| 118 | <el-button type="primary" class="btn-lineG w200px" round @click="next" v-else> | ||
| 119 | {{ language==0?'下一步':'Next' }} | ||
| 120 | </el-button> | ||
| 64 | </div> | 121 | </div> |
| 65 | </el-card> | 122 | </el-card> |
| 66 | </div> | 123 | </div> |
| 67 | <div v-if="activeStep==1"> | ||
| 68 | <Step3 :accont="form.account"/> | ||
| 69 | </div> | ||
| 70 | 124 | ||
| 71 | <Vcode :show="isShow" @success="codeSuccess()"></Vcode> | 125 | <Vcode :show="isShow" @success="codeSuccess()"></Vcode> |
| 72 | </div> | 126 | </div> |
| ... | @@ -84,26 +138,35 @@ import CountDown from '@chenfengyuan/vue-countdown' | ... | @@ -84,26 +138,35 @@ import CountDown from '@chenfengyuan/vue-countdown' |
| 84 | import cache from '@/plugins/cache' | 138 | import cache from '@/plugins/cache' |
| 85 | import {checkWdsf, getCaptchaSms, registerSingle} from "@/apiPc/match"; | 139 | import {checkWdsf, getCaptchaSms, registerSingle} from "@/apiPc/match"; |
| 86 | import {setToken} from "@/utils/auth"; | 140 | import {setToken} from "@/utils/auth"; |
| 141 | import PersonalStep from "@/viewsPc/register/components/personal-step"; | ||
| 142 | import FileUpload from "@/components/FileUpload"; | ||
| 143 | import {useRouter,useRoute} from "vue-router"; | ||
| 87 | const language = ref(cache.local.get('language') || 0) | 144 | const language = ref(cache.local.get('language') || 0) |
| 88 | 145 | const router = useRouter() | |
| 146 | const route = useRoute() | ||
| 89 | const data = reactive({ | 147 | const data = reactive({ |
| 90 | isShow:false, | 148 | isShow:false, |
| 91 | isCodeTrue:0, | 149 | isCodeTrue:0, |
| 92 | counting:false, | 150 | counting:false, |
| 93 | checkStatus:false, | 151 | checkStatus:false, |
| 94 | form:{}, | 152 | form:{ |
| 153 | sex:'0' | ||
| 154 | }, | ||
| 95 | activeStep: 0, | 155 | activeStep: 0, |
| 96 | failVcode:'验证失败,请重试', | 156 | failVcode:'验证失败,请重试', |
| 97 | successVcode:'验证通过!', | 157 | successVcode:'验证通过!', |
| 98 | sliderText: '拖动滑块完成拼图', | 158 | sliderText: '拖动滑块完成拼图', |
| 159 | showError: false | ||
| 99 | }) | 160 | }) |
| 100 | const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText,checkStatus} = toRefs(data) | 161 | const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText,checkStatus,showError} = toRefs(data) |
| 162 | const matchId = ref('0') | ||
| 101 | onMounted(()=>{ | 163 | onMounted(()=>{ |
| 102 | if(language.value==1){ | 164 | if(language.value==1){ |
| 103 | failVcode.value = 'Error!' | 165 | failVcode.value = 'Error!' |
| 104 | successVcode.value = 'Success!' | 166 | successVcode.value = 'Success!' |
| 105 | sliderText.value = 'Drag the slider to complete the puzzle' | 167 | sliderText.value = 'Drag the slider to complete the puzzle' |
| 106 | } | 168 | } |
| 169 | matchId.value = route.query.matchId | ||
| 107 | }) | 170 | }) |
| 108 | function sendsmsMsg() { | 171 | function sendsmsMsg() { |
| 109 | if(!form.value.account){ | 172 | if(!form.value.account){ |
| ... | @@ -160,15 +223,43 @@ function codeSuccess(msg) { | ... | @@ -160,15 +223,43 @@ function codeSuccess(msg) { |
| 160 | function resetCode(n) { | 223 | function resetCode(n) { |
| 161 | isCodeTrue.value = n | 224 | isCodeTrue.value = n |
| 162 | } | 225 | } |
| 226 | function vconfirmPassword() { | ||
| 227 | if(form.value.password != form.value.confirmPassword){ | ||
| 228 | showError.value = true | ||
| 229 | } else { | ||
| 230 | showError.value = false | ||
| 231 | } | ||
| 232 | } | ||
| 233 | function goBack() { | ||
| 234 | router.go(-1) | ||
| 235 | } | ||
| 163 | function next() { | 236 | function next() { |
| 164 | registerSingle(form.value).then(res=>{ | 237 | // registerSingle(form.value).then(res=>{ |
| 165 | setToken(res.data.token) | 238 | // setToken(res.data.token) |
| 166 | activeStep.value = 1 | 239 | if(matchId.value!='0'){ |
| 240 | router.push({ | ||
| 241 | name: 'chooseProject', | ||
| 242 | params:{ | ||
| 243 | id: matchId.value | ||
| 244 | }, | ||
| 245 | query: { | ||
| 246 | matchId: matchId.value | ||
| 247 | } | ||
| 167 | }) | 248 | }) |
| 249 | } else { | ||
| 250 | router.push({ | ||
| 251 | name: 'matchDetail', | ||
| 252 | params:{ | ||
| 253 | id: 0 | ||
| 254 | } | ||
| 255 | }) | ||
| 256 | } | ||
| 257 | // }) | ||
| 168 | } | 258 | } |
| 169 | </script> | 259 | </script> |
| 170 | 260 | ||
| 171 | <style scoped lang="scss"> | 261 | <style scoped lang="scss"> |
| 262 | .tip{line-height: 1.6;font-size: 12px;margin-top: 6px;color: #666;} | ||
| 172 | .leftboderTT { | 263 | .leftboderTT { |
| 173 | color: var(--el-color-primary); | 264 | color: var(--el-color-primary); |
| 174 | font-size: 16px; | 265 | font-size: 16px; |
| ... | @@ -181,4 +272,12 @@ span { | ... | @@ -181,4 +272,12 @@ span { |
| 181 | } | 272 | } |
| 182 | .h20{height: 20px} | 273 | .h20{height: 20px} |
| 183 | .h30{height: 30px} | 274 | .h30{height: 30px} |
| 275 | |||
| 276 | .el-input-group__append{ flex: 1 1 auto;} | ||
| 277 | .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover{ | ||
| 278 | color: var(--el-color-primary); | ||
| 279 | background: #efefff; | ||
| 280 | border: var(--el-color-primary) solid 1px; | ||
| 281 | border-radius: 0; | ||
| 282 | } | ||
| 184 | </style> | 283 | </style> | ... | ... |
| ... | @@ -2,8 +2,9 @@ | ... | @@ -2,8 +2,9 @@ |
| 2 | <el-card style="min-height: 50vh"> | 2 | <el-card style="min-height: 50vh"> |
| 3 | <div class="pt30"> | 3 | <div class="pt30"> |
| 4 | <el-form class="d-form" size="large" :label-width="language==0?120:200" style="max-width: 500px;margin: auto"> | 4 | <el-form class="d-form" size="large" :label-width="language==0?120:200" style="max-width: 500px;margin: auto"> |
| 5 | <el-form-item :label="language==0?'手机/邮箱':'E-mail / Phone number'" required> | 5 | <el-form-item :label="language==0?'邮箱':'E-mail'" required> |
| 6 | <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"/> | 6 | <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode" |
| 7 | /> | ||
| 7 | </el-form-item> | 8 | </el-form-item> |
| 8 | <el-form-item :label="language==0?'验证码':'Code'" required> | 9 | <el-form-item :label="language==0?'验证码':'Code'" required> |
| 9 | <el-input v-model="form.code"> | 10 | <el-input v-model="form.code"> | ... | ... |
| ... | @@ -42,6 +42,15 @@ | ... | @@ -42,6 +42,15 @@ |
| 42 | <el-form-item :label="language==0?'机构名称':'Institution name'" required prop="teamName"> | 42 | <el-form-item :label="language==0?'机构名称':'Institution name'" required prop="teamName"> |
| 43 | <el-input type="text" v-model="form.teamName" :placeholder="language==0?'请输入内容':''"/> | 43 | <el-input type="text" v-model="form.teamName" :placeholder="language==0?'请输入内容':''"/> |
| 44 | </el-form-item> | 44 | </el-form-item> |
| 45 | <el-form-item :label="language==0?'团体类型':'Group type'" prop="type" required> | ||
| 46 | <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;"> | ||
| 47 | <el-option :label="language==0?'普通院校':'School'" value="0" /> | ||
| 48 | <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" /> | ||
| 49 | <el-option :label="language==0?'培训机构/俱乐部':'Company/Club'" value="2" /> | ||
| 50 | <el-option :label="language==0?'地方协会':'Local Association'" value="3" /> | ||
| 51 | <el-option :label="language==0?'国家协会':'National Association'" value="4" /> | ||
| 52 | </el-select> | ||
| 53 | </el-form-item> | ||
| 45 | <el-form-item :label="language==0?'联系人姓名':'Contact Name'" required prop="contactName"> | 54 | <el-form-item :label="language==0?'联系人姓名':'Contact Name'" required prop="contactName"> |
| 46 | <el-input type="text" v-model="form.contactName" :placeholder="language==0?'请输入内容':''"/> | 55 | <el-input type="text" v-model="form.contactName" :placeholder="language==0?'请输入内容':''"/> |
| 47 | </el-form-item> | 56 | </el-form-item> | ... | ... |
-
Please register or sign in to post a comment