f48a867f by 杨炀

Merge branch 'dev' into order

2 parents c151cb5e cea07e06
......@@ -635,3 +635,10 @@ export function signgetSignInfoConflict(query) {
params:query
})
}
export function addInvitation(data) {
return request({
url: `/league/person`,
method: 'post',
data: data
})
}
......
......@@ -1029,6 +1029,20 @@ img{display: block;}
.bg-lineg{position: relative;border-radius: 15px;}
.cover{position: absolute;width: 100%;z-index: 1;height: 100%;background: red;opacity: 0;top:0;}
}
.fixed_gg_l{
position: fixed;left:5px;
top: 25%;
z-index: 10;
animation: pop 4s ease infinite;
img{height: 150px;cursor: pointer;}
}
@keyframes pop {
80%{transform: translateY(0px);}
85%{transform: translateY(-3px);}
90%{transform: translateY(0px);}
95%{transform: translateY(-3px);}
100%{transform: translateY(0px);}
}
.smallToday{display: flex;align-items: center;
.type{margin-right: 20px;}
h3{margin: 0 0 10px;}
......
......@@ -2,11 +2,11 @@
<div class="sidebar-logo-container" :class="{ 'collapse': collapse }" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
<transition name="sidebarLogoFade">
<div v-if="collapse" key="collapse" class="sidebar-logo-link">
<img v-if="logo" :src="logoIco" class="sidebar-logo" style="height: 50px">
<h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }}</h1>
<!-- <img v-if="logo" :src="logoIco" class="sidebar-logo" style="height: 50px">-->
<h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }}</h1>
</div>
<div v-else key="expand" class="sidebar-logo-link">
<img v-if="logo" :src="logo" class="sidebar-logo">
<!-- <img v-if="logo" :src="logo" class="sidebar-logo">-->
<!-- <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }}</h1> -->
</div>
</transition>
......@@ -15,8 +15,6 @@
<script setup>
import variables from '@/assets/styles/variables.module.scss'
import logo from '@/assets/logo/logo@2x.png'
// import logoIco from '@/assets/logo/ico.png'
import useSettingsStore from '@/store/modules/settings'
defineProps({
......
......@@ -2,7 +2,6 @@
<div class="login">
<el-row :inline="true" justify="space-between" class="title">
<div class="imgBox">
<!-- <img class="img" src="@/assets/images/logo@2x.png" alt="">-->
</div>
<div class="title-right">
<router-link to="login" class="tilt-btn">
......
......@@ -346,9 +346,9 @@ function sendsmsMsg() {
// 忘记密码发信息
if (!changePasswordForm.value.username) {
if (language.value == 0) {
ElMessage.warning('请填写手机/邮箱')
ElMessage.warning('请填写邮箱')
} else {
ElMessage.warning('Please fill in your phone/email address')
ElMessage.warning('Please fill in your Email address')
}
return
}
......
......@@ -407,7 +407,7 @@ function submitForm(n) {
ElMessageBox.confirm(language.value == 0 ? '是否继续添加随行人员?' : 'Do you want to add casual personnel?',
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '是' : 'Yes',
cancelButtonText: language.value == 0 ? '否,进入下一步' : 'N0,Go Next',
cancelButtonText: language.value == 0 ? '否,进入下一步' : 'NO,Go Next',
type: 'warning'
}).then(() => {
......@@ -421,7 +421,7 @@ function submitForm(n) {
ElMessageBox.confirm(language.value == 0 ? '是否添加随行人员?' : 'Do you want to add casual personnel?',
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '是' : 'Yes',
cancelButtonText: language.value == 0 ? '否,进入下一步' : 'N0,Go Next',
cancelButtonText: language.value == 0 ? '否,进入下一步' : 'NO,Go Next',
type: 'warning'
}).then(() => {
showPersonList.value = true
......
<template>
<el-dialog
v-model="show" :title="title" width="600px" append-to-body close-icon="CircleClose" center
:close-on-click-modal="false" class="pcloginpop"
destroy-on-close
>
<div class="boxInvitation pd20">
<div class="text-center pd20" v-if="showR">
<img class="mauto" src="@/assets/dance/ok.png"/>
<h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>
<el-button size="large" type="primary" @click="conti" round class="btn-lineG">
{{ language == 0 ? '继续提交' : 'Continue To Submit' }}
</el-button>
</div>
<el-form :model="form" :rules="rules" ref="iformRef" label-position="right" label-width="150px" v-else>
<el-form-item :label="language==0?'姓名':'Name'" required prop="name">
<el-input v-model="form.name"/>
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" required prop="gender">
<el-radio-group v-model="form.gender">
<el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
<el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="language==0?'国籍':'Nationality'" required prop="nationality">
<el-select filterable v-model="form.nationality" style="width: 100%;">
<el-option v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName"
:value="item.id"/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Date of Birth'" required prop="birth">
<el-date-picker
v-model="form.birth"
style="width: 100%;" placeholder="YYYY-MM-DD"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
<el-input v-model="form.email" type="email"/>
</el-form-item>
<el-form-item :label="language==0?'护照号':'Passport No.'" required prop="passportNo">
<el-input v-model="form.passportNo"/>
</el-form-item>
<el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy">
<file-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false"
:button-text="language==0?'上传':'Upload'"/>
</el-form-item>
<el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">
<el-date-picker
v-model="form.arrival" placeholder="YYYY-MM-DD"
style="width: 100%;"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'出发日期':'Date of Departure'" required prop="departure">
<el-date-picker
v-model="form.departure"
style="width: 100%;" placeholder="YYYY-MM-DD"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'备注':'Remark '">
<el-input type="textarea" v-model="form.remark" rows="3"/>
</el-form-item>
<div class="text-center">
<el-button type="primary" size="large" @click="submit" round class="btn-lineG">
{{ language == 0 ? '提交' : 'SUBMIT' }}
</el-button>
</div>
</el-form>
</div>
</el-dialog>
</template>
<script setup>
import {useStorage} from "@vueuse/core/index";
import {getCurrentInstance, watch} from "vue";
import {nextTick} from "@vue/runtime-core";
import {ElMessage, ElMessageBox} from "element-plus";
import {addInvitation, countryList} from "@/apiPc/match";
const {proxy} = getCurrentInstance()
const language = useStorage('language', 0)
const form = ref({
gender:'0'
})
const show = ref(false)
const showR = ref(false)
const title = ref('')
const countrys = ref([])
const cptId = ref('')
const rules = ref(
{
nationality: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
name: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
email: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
birth: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
passportNo: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
passportCopy: [{required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload'},],
arrival: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
departure: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
})
const open = (params) => {
console.log(params)
show.value = true
title.value = params.title
cptId.value = params.cptId
}
defineExpose({open})
watch(show, (value) => {
if (!value) {
form.value = {
sex: '0'
}
if (language.value == 0) {
form.value.countryId = 240
}
}
nextTick(() => {
// proxy.$refs['dialogRef'].clearValidate()
})
})
getCountryList()
function getCountryList() {
countryList().then(res => {
countrys.value = res.data
})
}
const submit = () => {
proxy.$refs.iformRef.validate(valid => {
if (valid) {
ElMessageBox.confirm(
language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
form.value.cptId = cptId.value
if (Array.isArray(form.value.passportCopy)) {
form.value.passportCopy = form.value.passportCopy[0].url
}
addInvitation(form.value).then((res) => {
ElMessage.success('提交成功')
showR.value = true
})
})
}
})
}
const conti = () => {
showR.value = false
form.value = {
gender: '0'
}
}
</script>
<style scoped>
.boxInvitation {
width: 90%;
margin: auto
}
</style>
......@@ -7,7 +7,7 @@
<el-form-item required :label="item.realName" v-for="item in list">
<div v-show="item.checked==2">{{ item.wdsfMin }}</div>
<el-input :disabled="item.checked==1" type="number" v-show="item.checked!=2"
v-model="item.wdsfMin" :placeholder="language==0?'绑定WDSF会员号':'Bind WDSF Number'"
v-model="item.wdsfMin" :placeholder="language==0?'绑定WDSF会员号':'Bind WDSF MIN'"
>
<template #append>
<view @click="checkCode(item)" class="checkbb">
......
......@@ -2,7 +2,7 @@
<div class="mt20"></div>
<el-table :data="list" border style="width: 100%">
<el-table-column :label="language==0?'序号':'Index'" type="index" width="70" align="center"/>
<el-table-column :label="language==0?'组别代码':'Group code'" width="120px" prop="zuName"/>
<el-table-column :label="language==0?'组别代码':'Group code'" width="120px" prop="project.code"/>
<el-table-column :label="language==0?'组别':'Group'" prop="project.name"/>
<el-table-column :label="language==0?'舞种':'Dance Style'" width="120px" prop="project.danceType"/>
<el-table-column :label="language==0?'参赛说明':'Participation Instructions'" min-width="160px">
......
......@@ -261,6 +261,12 @@
</el-row>
</div>
<div class="fixed_gg_l" @click="applyInvitation" v-if="matchData.leagueId==0">
<img src="@/assets/logo/Invitation_c.png" v-if="language==0"/>
<img src="@/assets/logo/Invitation_e.png" v-else/>
</div>
<affix-invitation ref="dialogInvitationRef"/>
<div style="height: 50px"></div>
<el-dialog v-model="signTypePop" class="pcloginpop" close-icon="CircleClose"
......@@ -274,6 +280,8 @@
</div>
</div>
</el-dialog>
</div>
</template>
......@@ -288,7 +296,7 @@ import QuickRow from "@/viewsPc/match/components/quick-row";
import {getCurrentInstance, ref} from 'vue'
import {reactive, onMounted} from '@vue/runtime-core'
import {useRoute, useRouter} from 'vue-router'
import AffixInvitation from '@/viewsPc/match/components/affix-invitation'
const language = useStorage('language', 0)
const route = useRoute()
const router = useRouter()
......@@ -627,6 +635,14 @@ function reSign(){
}
})
}
function applyInvitation() {
var obj = {
title: language.value==0?'邀请函申请':'Invitation letter application',
cptId: matchId.value,
}
proxy.$refs['dialogInvitationRef'].open(obj)
}
</script>
<style scoped lang="scss">
......
......@@ -59,7 +59,7 @@
<div class="item"><label>Event Name</label>{{ matchInfo.name }}</div>
</div>
<div>
<div class="item"><label>Event Type</label>{{ matchInfo.level }}</div>
<div class="item"><label>Event Level</label>{{ matchInfo.level }}</div>
</div>
<div>
<div class="item"><label>Event Date</label>{{ matchInfo.beginTime?.slice(0, 10) }} ~
......
......@@ -154,7 +154,9 @@
</el-card>
</div>
<Vcode :show="isShow" :z-index="3000" @success="codeSuccess()"></Vcode>
<Vcode :show="isShow" :z-index="3000" @success="codeSuccess()"
:successText="successVcode" :failText="failVcode" :slider-text="sliderText"></Vcode>
</div>
</div>
</div>
......
......@@ -99,7 +99,7 @@
I have read and accepted the Registration
<a class="text-primary" @click.stop="showAgreeMent">Agreement</a>
and
<a class="text-primary" @click.stop="showAgreeMent">Personal Information Protection Policy
<a class="text-primary" @click.stop="showPolicy">Personal Information Protection Policy
</a>
</div>
</div>
......@@ -123,7 +123,8 @@ import * as match from "@/apiPc/match";
import {ElMessage} from "element-plus";
import {setToken} from "@/utils/auth";
import {useStorage} from "@vueuse/core/index";
import {useRouter} from "vue-router";
const router = useRouter()
const {proxy} = getCurrentInstance()
const emit = defineEmits(['submit', 'prev'])
const language= useStorage('language',0)
......@@ -222,8 +223,8 @@ const goStep3 = () => {
ElMessage.warning(language.value == 0?'请输入密码':'Please enter password')
return
}
if (!form.value.password) {
ElMessage.warning(language.value == 0?'请输入密码':'Please enter password')
if (!form.value.confirmPassword) {
ElMessage.warning(language.value == 0?'请再次输入密码':'Please enter password')
return
}
loading.value = true
......@@ -244,7 +245,16 @@ const goStep3 = () => {
}
const showAgreeMent = () => {
console.log('111')
const routeLocation = router.resolve({
name: 'userAgreement',
})
window.open(routeLocation.href, '_blank')
}
const showPolicy = () => {
const routeLocation = router.resolve({
name: 'policy',
})
window.open(routeLocation.href, '_blank')
}
onMounted(() => {
console.log(props)
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!