a0288c1b by zhangmeng

Merge branch '线上版本修复' into devmatch

2 parents 42f91580 fd3f4520
......@@ -469,11 +469,11 @@
<div v-if="payType == '2'&&wePayCodeUrl">
<div class="payImgbox flexCenter">
<div>
<img :src="wePayCodeUrl" class="border" width="260">
<img class="mt20" src="@/assets/img/sm.png">
<img :src="wePayCodeUrl" class="border payImg1" width="260">
<img class="mt20 payImg2" src="@/assets/img/sm.png">
</div>
<div class="ml20">
<img height="360" src="@/assets/img/rr.jpg">
<img class="payImg3" height="360" src="@/assets/img/rr.jpg">
</div>
</div>
<div v-if="language==0" class="tip text-center text-danger">
......@@ -1186,4 +1186,24 @@ const showSJ = () => {
.price {
color: orange;
}
@media screen and (max-width: 768px) {
.payImgbox {
width: 100%;
.payImg1 {
width: 40vw;
}
.payImg2 {
width: 40vw;
}
.payImg3 {
width: 40vw;
height: auto;
}
}
}
</style>
......
......@@ -22,7 +22,7 @@
<div>
<p>票档:{{ ticketForm.extJson?.atName }}</p>
<p>场馆:{{ ticketForm.extJson?.atsName }}</p>
<p>场次:{{ ticketForm.extJson?.sessionType =='1000'? '日间场' : '夜间场' }}</p>
<p>场次:{{ ticketForm.extJson?.sessionType == '1000' ? '日间场' : '夜间场' }}</p>
<p>票型:{{ ticketForm.extJson?.atstName }}</p>
</div>
<div>
......@@ -34,7 +34,7 @@
<el-col :lg="8" :md="12" :sm="12" :xs="24">联系方式:{{ ticketForm.phone }}
</el-col>
<el-col :lg="8" :md="12" :sm="12" :xs="24">
共计:{{ (totalMoney*1).toFixed(2) }}{{
共计:{{ (totalMoney * 1).toFixed(2) }}{{
paymentType == 1 ? '¥' : '€'
}}
</el-col>
......@@ -51,7 +51,9 @@
class="mw500"
>
<el-form-item :label="language==0 ?'开票金额':'Amount'">
<span class="bigprice">{{ paymentType != 3 ? '¥' : '€' }}{{ paymentType != 3?ticketForm.total:ticketForm.totalEn }}</span>
<span class="bigprice">{{
paymentType != 3 ? '¥' : '€'
}}{{ paymentType != 3 ? ticketForm.total : ticketForm.totalEn }}</span>
</el-form-item>
<el-form-item :label="language==0 ?`发票形式`:'Invoice Form'" prop="invoiceForm" required>
......@@ -475,4 +477,5 @@ function goBack() {
line-height: 1;
font-family: "DIN Alternate";
}
</style>
......
......@@ -23,7 +23,7 @@
</div>
<div class="form">
<el-form ref="formRef" :model="orderForm" :rules="rules" label-width="140px">
<el-form ref="formRef" :model="orderForm" :rules="rules" label-position="top" label-width="130px">
<div v-if="TickForm2.ticketType == '1'">
<el-form-item :label="language == 0 ? '桌号' : 'Table'">
......@@ -725,12 +725,6 @@ div {
cursor: pointer
}
@media screen and (max-width: 768px) {
.container {
width: 100%;
}
}
.rightBox {
.info {
background: rgba(69, 61, 234, 0.04);
......@@ -741,4 +735,49 @@ div {
margin-top: 30px;
}
}
@media screen and (max-width: 768px) {
.container {
width: 100%;
:deep(.form) {
padding: 30px 0 !important;
form {
padding: 10px;
}
}
.footer {
display: block;
width: 100%;
height: auto;
padding: 20px;
div {
width: 100%;
}
.goBack {
width: 140px;
position: relative;
height: 40px;
top: 0;
left: 0%;
margin: 10px 0;
}
.pay {
width: 140px;
position: relative;
height: 40px;
top: -50px;
left: 55%;
}
}
}
}
</style>
......
......@@ -2,7 +2,11 @@
<div>
<!-- top -->
<div class="container top ">
<el-row :gutter="20" style="width: 100%">
<el-col :lg="12" :md="12" :sm="24" :xs="24">
<img :src="fillImgUrl(matchForm.ticketImg)" alt="" class="cover_img">
</el-col>
<el-col :lg="12" :md="12" :sm="24" :xs="24">
<div class="info">
<div class="title">{{ matchForm.name }}</div>
<div class="time">
......@@ -231,6 +235,10 @@
</template>
</div>
</div>
</el-col>
</el-row>
</div>
<div class="container bottom">
......@@ -430,7 +438,6 @@ function selectTick(v) {
selectForm.value.latstId = v.id
selectForm.value.price = v.price
selectForm.value.priceEn = v.priceEn
// vip票
if (currTick.value.ticketType == '1') {
showUrl.value = v.images
......@@ -438,10 +445,12 @@ function selectTick(v) {
leftCount.value = -999
} else {
checkNonPayment().then(res => {
// debugger
if (res.data) {
getListByAtstId({
atstId: selectForm.value.latstId
}).then(res => {
console.log(res.data)
leftCount.value = res.data
if (leftCount.value > 0) {
showUrl.value = v.images
......@@ -544,7 +553,7 @@ getmatchData()
width: 500px;
height: 667px;
object-fit: fill;
margin-right: 36px;
//margin-right: 36px;
}
.info {
......@@ -696,78 +705,6 @@ getmatchData()
}
}
@media screen and (max-width: 768px) {
.container {
width: 100%;
}
.forWei {
display: block
}
.top {
//transform: scale(0.5);transform-origin: left top;
.cover_img {
width: 120px;
height: 160px;
margin-right: 15px;
}
.info {
padding: 0;
.title {
font-size: 14px;
margin: 0;
}
.time, .address, .label, .tip {
font-size: 12px;
}
.title, .time, .address, .tip, .select_item_box {
margin-bottom: 3px;
}
.select_item_box {
.label {
font-size: 12px;
}
.select_item .tag {
padding: 2px 10px;
font-size: 12px;
}
.select_item .tagActive {
padding: 2px 10px;
font-size: 12px;
}
.select_item .tagDisabled {
padding: 2px 10px;
font-size: 12px;
}
}
.btn {
display: inline-block;
margin: 10px 0 0;
background: linear-gradient(270deg, #493ceb 0%, #8623fc 100%);
border-radius: 20px;
line-height: 40px;
text-align: center;
font-weight: 500;
font-size: 16px;
color: #ffffff;
cursor: pointer;
}
}
}
.bottom {
padding: 0
}
}
.countDownTitle {
text-align: center;
......@@ -850,4 +787,85 @@ getmatchData()
color: #4a4a4a !important;
cursor: no-drop !important;
}
@media screen and (max-width: 768px) {
.container {
width: 100%;
}
.forWei {
display: block
}
.top {
//transform: scale(0.5);transform-origin: left top;
.cover_img {
width: 120px;
height: 160px;
margin-right: 15px;
}
.info {
padding: 0;
.title {
font-size: 14px;
margin: 0;
}
.time, .address, .label, .tip {
font-size: 12px;
}
.title, .time, .address, .tip, .select_item_box {
margin-bottom: 3px;
}
.select_item_box {
.label {
font-size: 12px;
}
.select_item .tag {
padding: 2px 10px;
font-size: 12px;
}
.select_item .tagActive {
padding: 2px 10px;
font-size: 12px;
}
.select_item .tagDisabled {
padding: 2px 10px;
font-size: 12px;
}
}
.btn {
display: inline-block;
margin: 10px 0 0;
background: linear-gradient(270deg, #493ceb 0%, #8623fc 100%);
border-radius: 20px;
line-height: 40px;
text-align: center;
font-weight: 500;
font-size: 16px;
color: #ffffff;
cursor: pointer;
}
}
}
.bottom {
padding: 0
}
.father {
.son {
width: 85px !important;
height: 67.5px !important;
left: 50px;
top: 10px;
}
}
}
</style>
......
......@@ -30,7 +30,7 @@
v-model="show"
:title="language==0?'新增观影人':'New moviegoers'"
center
width="700"
style="max-width: 700px;min-width: 350px;"
>
<el-form
ref="formRef" :model="form" :rules="rules" label-width="100px" size="large"
......@@ -51,12 +51,19 @@
</el-form-item>
</el-form>
<span class="dialog-footer">
<div class="dialog-footer">
<div style="text-align: center">
<el-button class="can_pay" @click="show = false">{{ language == 0 ? '取 消' : 'cancel' }}</el-button>
<el-button class="pay" type="primary" @click="submit">{{ language == 0 ? '确 定' : 'confirm' }}</el-button>
<el-button class="can_pay marginBtn" @click="show = false">{{
language == 0 ? '取 消' : 'cancel'
}}
</el-button>
<el-button class="pay marginBtn" type="primary" @click="submit">{{
language == 0 ? '确 定' : 'confirm'
}}
</el-button>
</div>
</span>
</div>
<br>
</el-dialog>
</el-card>
......@@ -302,5 +309,12 @@ div {
.container {
width: 100%;
}
form {
margin: 20px 20px 0 0 !important;
}
}
.marginBtn {
margin: 5px
}
</style>
......
<template>
<el-dialog v-model="show" :title="title" destroy-on-close width="400px" @close="close">
<el-dialog
v-model="show" :title="title" destroy-on-close style="min-width: 350px;max-width: 450px"
@close="close"
>
<div>
<h2 v-if="cptName" class="text-warning text-center">{{ cptName }}</h2>
......
......@@ -25,7 +25,7 @@
</el-button>
</div>
<div v-if="list.length>0">
<div v-if="list.length>0" class="rollY">
<div v-for="(form, index) in list" :key="index" class="nowteamItem">
<div class="info">
<div class="nowName text-center">
......@@ -69,7 +69,7 @@
<div v-if="showGroupList" class="text-danger text-center">
{{ language == 0 ? '找到多个团体' : 'Found multiple teams' }}
</div>
<div v-if="showGroupList" class="groupList">
<div v-if="showGroupList" class="groupList rollY">
<ul>
<li v-for="(item, index) in groupList" :key="index" @click="showDetail(item)">{{ item }}
<el-icon class="fr">
......@@ -83,6 +83,7 @@
<el-collapse-item
v-for="(team,index) in teamlist" :key="index" :name="index"
:title="team[0][0].groupName"
class="rollY"
>
<div v-for="(p,jndex) in team" :key="jndex" class="nowteamItem">
<div class="fontSize14 text-bold">{{ p[0].zuInfo }}</div>
......@@ -289,8 +290,13 @@ function showDetail(name) {
}
.searchBox {
height: 50vh;
//height: 50vh;
//overflow: hidden;
overflow-y: hidden;
}
.rollY {
height: 45vh;
overflow-y: auto;
}
</style>
......
......@@ -26,7 +26,7 @@
</el-button>
</div>
<div v-if="list.length>0" class="mt30">
<div v-if="list.length>0" class="mt30 rollY">
<el-timeline>
<el-timeline-item
v-for="(form, index) in list"
......@@ -66,7 +66,7 @@
<div v-if="showGroupList" class="text-danger text-center">
{{ language == 0 ? '找到多个团体' : 'Found multiple teams' }}
</div>
<div v-if="showGroupList" class="groupList">
<div v-if="showGroupList" class="groupList rollY">
<ul>
<li v-for="(item, index) in groupList" :key="index" @click="showDetail(item)">{{ item }}
<el-icon class="fr">
......@@ -75,7 +75,7 @@
</li>
</ul>
</div>
<div v-if="teamlist.length>0" class="temell mt20">
<div v-if="teamlist.length>0" class="temell mt20 rollY">
<el-collapse accordion>
<el-collapse-item v-for="(team,index) in teamlist" :key="index" :name="index" :title="team[0].title">
<el-timeline>
......@@ -109,7 +109,7 @@
}}
</el-button>
</div>
<div v-if="list.length>0" class="temell mt20">
<div v-if="list.length>0" class="temell mt20 rollY">
<el-timeline>
<el-timeline-item v-for="(team,j) in list" :key="j" placement="top">
<div v-for="(form, index) in team" v-show="index==0" :key="index">
......@@ -362,6 +362,11 @@ function showDetail(name) {
.searchBox {
height: 50vh;
//overflow-y: auto;
}
.rollY {
height: 45vh;
overflow-y: auto;
}
</style>
......
......@@ -9,7 +9,7 @@
class="pcloginpop"
close-icon="CircleClose"
destroy-on-close
width="450px"
style="max-width: 450px;min-width: 350px"
@close="close"
>
<div class="pd10" />
......@@ -589,7 +589,8 @@ const goPolicy = () => {
.rItem {
height: 130px;
cursor: pointer;
width: 350px;
max-width: 350px;
min-width: 300px;
padding: 1px;
margin: 20px auto;
......
<template>
<el-dialog v-model="show" :title="language==0?'快捷注册':'Quick Login'" close-icon="CircleClose"
width="480" :append-to-body="true" destroy-on-close @close="close">
<el-dialog
v-model="show" :append-to-body="true" :title="language==0?'快捷注册':'Quick Login'"
close-icon="CircleClose" destroy-on-close style="max-width: 480px;min-width: 350px"
@close="close"
>
<div>
<el-form class="d-form" size="large" :label-width="language==0?80:150" :label-position="language==0?'right':'top'" style="max-width: 500px;margin: auto">
<el-form
:label-position="language==0?'right':'top'" :label-width="language==0?80:150" class="d-form" size="large"
style="max-width: 500px;margin: auto"
>
<el-form-item :label="language==0?'邮箱':'E-mail'" required>
<el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"
/>
<div class="tip" v-if="language==0">
<el-input v-model="form.account" type="text" @blur="verifyCode" @change="resetCode" />
<div v-if="language==0" class="tip">
(请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。
该邮箱后续会作为您登录的账户,
并接收报名审核结果、支付账单、签证邀请函等相关信息。)
</div>
<div v-else class="tip">
Please fill in the correct email, which cannot be changed after the registration is completed. The email will be used as your login account and to receive relevant information including results of registration review, payment bills, visa invitation letters, etc.
Please fill in the correct email, which cannot be changed after the registration is completed. The email
will be used as your login account and to receive relevant information including results of registration
review, payment bills, visa invitation letters, etc.
</div>
</el-form-item>
<el-form-item :label="language==0?'验证码':'Code'" required>
<el-input v-model="form.code">
<template #append>
<el-button type="primary" plain style="width: 110px" @click="sendsmsMsg">
<el-button plain style="width: 110px" type="primary" @click="sendsmsMsg">
<count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
{{ totalSeconds }} {{ language == 0 ? '秒' : 's' }}
</count-down>
......@@ -28,26 +35,36 @@
</el-button>
</template>
</el-input>
<div class="vcodeBox" :style="isShow?'height:240px':'height:0'">
<Vcode :show="isShow" :successText="successVcode" :failText="failVcode" :slider-text="sliderText"
type="inside" @success="codeSuccess"></Vcode>
<div :style="isShow?'height:240px':'height:0'" class="vcodeBox">
<Vcode
:fail-text="failVcode" :show="isShow" :slider-text="sliderText" :success-text="successVcode"
type="inside" @success="codeSuccess"
/>
</div>
</el-form-item>
<el-form-item :label="language==0?'密码':'Password'" required>
<el-input type="password" show-password v-model="form.password"
:placeholder="language==0?'6-16位密码。区分大小写':''"/>
<el-input
v-model="form.password" :placeholder="language==0?'6-16位密码。区分大小写':''" show-password
type="password"
/>
</el-form-item>
<el-form-item :label="language==0?'确认密码':'Confirm Password'" required>
<el-input type="password" show-password v-model="form.password2" @blur="vconfirmPassword"
:placeholder="language==0?'再次输入密码':''"/>
<el-input
v-model="form.password2" :placeholder="language==0?'再次输入密码':''" show-password type="password"
@blur="vconfirmPassword"
/>
</el-form-item>
</el-form>
</div>
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" class="btn-lineG w200px" round @click="register">{{language==0?'登录':'Confirm'}}</el-button>
<div class="text-primary underline mt20 pointer" @click="goLogin">{{language==0?'已有账号去登录':'Already have an account? Login'}}</div>
<el-button class="btn-lineG w200px" round type="primary" @click="register">
{{ language == 0 ? '登录' : 'Confirm' }}
</el-button>
<div class="text-primary underline mt20 pointer" @click="goLogin">
{{ language == 0 ? '已有账号去登录' : 'Already have an account? Login' }}
</div>
</div>
</template>
......@@ -55,16 +72,16 @@
</template>
<script setup>
import {reactive, toRefs} from 'vue'
import Vcode from "vue3-puzzle-vcode"
import {ElMessage} from 'element-plus'
import { reactive, toRefs } from 'vue'
import Vcode from 'vue3-puzzle-vcode'
import { ElMessage } from 'element-plus'
import CountDown from '@chenfengyuan/vue-countdown'
import {getCaptchaSms} from "@/apiPc/match";
import {onMounted} from "@vue/runtime-core";
import {useStorage} from "@vueuse/core/index";
import {vistorRegister} from "@/apiPc/common";
import {setToken} from "@/utils/auth";
import useUserStore from "@/store/modules/user";
import { getCaptchaSms } from '@/apiPc/match'
import { onMounted } from '@vue/runtime-core'
import { useStorage } from '@vueuse/core/index'
import { vistorRegister } from '@/apiPc/common'
import { setToken } from '@/utils/auth'
import useUserStore from '@/store/modules/user'
const language = useStorage('language', 0)
......@@ -77,9 +94,9 @@ const data = reactive({
failVcode: '验证失败,请重试',
successVcode: '验证通过!',
sliderText: '拖动滑块完成拼图',
show:false
show: false
})
const {isShow, isCodeTrue, counting, form, activeStep, failVcode, successVcode, sliderText,show} = toRefs(data)
const { isShow, isCodeTrue, counting, form, activeStep, failVcode, successVcode, sliderText, show } = toRefs(data)
const emit = defineEmits(['submit'])
onMounted(() => {
if (language.value == 1) {
......@@ -113,7 +130,7 @@ function sendsmsMsg() {
return
}
if (counting.value) {
return
} else {
isShow.value = true
}
......@@ -124,29 +141,31 @@ function verifyCode() {
return
}
if (form.value.account.indexOf('@') > -1) {
//邮箱
// 邮箱
}
}
function codeSuccess(msg) {
console.log('验证通过' + msg);
console.log('验证通过' + msg)
isShow.value = false
getCaptchaSms({account: form.value.account}).then(res => {
getCaptchaSms({ account: form.value.account }).then(res => {
counting.value = true
isCodeTrue.value = true
ElMessage.success(language.value == 0 ? '发送成功,请关注邮箱邮件' :'Send success, please check your email')
ElMessage.success(language.value == 0 ? '发送成功,请关注邮箱邮件' : 'Send success, please check your email')
})
}
function resetCode() {
isCodeTrue.value = false
}
function goLogin() {
show.value = false
useUserStore().setReLogin()
}
function register() {
//游客注册
// 游客注册
if (!form.value.account) {
if (language.value == 0) {
ElMessage.warning('请填写邮箱')
......@@ -164,29 +183,33 @@ function register() {
return
}
if (!form.value.password) {
ElMessage.warning(language.value == 0?'请输入密码':'Please enter password')
ElMessage.warning(language.value == 0 ? '请输入密码' : 'Please enter password')
return
}
if (!form.value.password2) {
ElMessage.warning(language.value == 0?'请再次输入密码':'Please enter password')
ElMessage.warning(language.value == 0 ? '请再次输入密码' : 'Please enter password')
return
}
delete form.value.password2
vistorRegister(form.value).then(res=>{
vistorRegister(form.value).then(res => {
setToken(res.data.token)
emit('submitForm')
})
}
const vconfirmPassword = () => {
if (form.value.password !== form.value.password2) {
ElMessage.warning(language.value == 0 ? '两次输入的密码不一致' :'The two passwords entered are inconsistent')
ElMessage.warning(language.value == 0 ? '两次输入的密码不一致' : 'The two passwords entered are inconsistent')
}
}
function close() {
show.value = false
}
</script>
<style scoped lang="scss">
.tip{line-height: 1.6}
<style lang="scss" scoped>
.tip {
line-height: 1.6
}
</style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!