88074c19 by zhangmeng

前台保险

1 parent f0cdcd30
......@@ -506,7 +506,8 @@ export function commitSign(data) {
export function getTotalFee(data) {
return request({
url: `/league/expenseConfig/getTotalFee/${data.cptId}/${data.entryId}`,
method: 'get'
method: 'get',
params: data
})
}
......
......@@ -3,75 +3,95 @@
<!-- 个人报名-国外-->
<div class="box ph-30">
<el-card class="mb20">
<single-sign-step :activeStep="1" :language="language"/>
<single-sign-step :active-step="1" :language="language" />
</el-card>
<el-card :body-style="{'padding': '0'}">
<match-info-row :match-id="matchId"/>
<match-info-row :match-id="matchId" />
<div class="pd20">
<el-row :gutter="20">
<el-col :lg="6">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">完善我的信息</h3>
<h3 class="panel-title" v-else>My Information</h3>
<h3 v-if="language==0" class="panel-title">完善我的信息</h3>
<h3 v-else class="panel-title">My Information</h3>
</div>
<div class="panel-body">
<div class="chooseForm" style="display: flex;flex-wrap: wrap;">
<div style="width:50%;text-align: center;" v-for="s in choosedList">
<div>
<el-avatar fit="cover" v-if="s.picUrl" :size="60" :src="fillImgUrl(s.picUrl)"/>
<el-avatar fit="cover" v-else-if="s.sex == 0" :size="60"
src="/img/head1.png"/>
<el-avatar fit="cover" v-else-if="s.sex == 1" :size="60"
src="/img/head0.png"/>
<div class="text-center mt10" @click="editMate(s)">
<span class="mName">{{ s.realName }}</span>
<el-icon size="20">
<Edit/>
</el-icon>
</div>
</div>
<div v-for="s in choosedList" :key="s" style="width:50%;text-align: center;">
<div>
<el-avatar v-if="s.picUrl" :size="60" :src="fillImgUrl(s.picUrl)" fit="cover" />
<el-avatar
v-else-if="s.sex == 0" :size="60" fit="cover"
src="/img/head1.png"
/>
<el-avatar
v-else-if="s.sex == 1" :size="60" fit="cover"
src="/img/head0.png"
/>
<div class="text-center mt10" @click="editMate(s)">
<span class="mName">{{ s.realName }}</span>
<el-icon size="20">
<Edit />
</el-icon>
</div>
</div>
</div>
</div>
<div class="text-center mt20">
<el-button type="primary" class="w100" round @click="switchPerson">{{language==0?'切换':'Switch'}}</el-button>
<el-button class="w100" round type="primary" @click="switchPerson">
{{ language == 0 ? '切换' : 'Switch' }}
</el-button>
</div>
<div class="tip">
<span v-if="language==0">*如果您参加个人项目,或给其他组合/选手进行报名,请点击切换按钮重新选择人员</span>
<span
v-if="language==0"
>*如果您参加个人项目,或给其他组合/选手进行报名,请点击切换按钮重新选择人员</span>
<span v-else>*If you would like to register individual competitions for yourself or other couples/athletes, please click "Switch" button to re-select persons concerned.</span>
</div>
</div>
</div>
</el-col>
<el-col :lg="18">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">可参与报名的项目 <span v-if="signInfoList.length>0">已报项目在下方查看</span></h3>
<h3 class="panel-title" v-else>Search Events</h3>
<h3 v-if="language==0" class="panel-title">可参与报名的项目 <span v-if="signInfoList.length>0">已报项目在下方查看</span>
</h3>
<h3 v-else class="panel-title">Search Events</h3>
<div class="fr">
<el-input size="small" v-model="projectQuery.name" :prefix-icon="Search" @change="getProjectList"
clearable/>
<el-input
v-model="projectQuery.name" :prefix-icon="Search" clearable size="small"
@change="getProjectList"
/>
</div>
</div>
<div class="pl-15 text-danger fontsize14" v-if="cantBao.flag">*{{language==0?`请上传 ${ cantBao.name } 的有效证件`:`Please upload the Valid Passport of ${cantBao.name}`}}</div>
<div v-if="cantBao.flag" class="pl-15 text-danger fontsize14">
*{{
language == 0 ? `请上传 ${cantBao.name} 的有效证件` : `Please upload the Valid Passport of ${cantBao.name}`
}}
</div>
<div v-loading="loadingProject" style="height: 55vh;overflow: auto;">
<el-checkbox-group v-model="projectIds">
<el-checkbox class="flexBetweenBox" v-for="c in projectList" :label="c.id" :key="c.id"
:disabled="cantBao.flag">
<el-checkbox
v-for="c in projectList" :key="c.id" :disabled="cantBao.flag" :label="c.id"
class="flexBetweenBox"
>
<div class="flexBetween w100">
<div class="l">
{{ c.code }}:{{ c.name }} {{c.danceType}}
{{ c.code }}:{{ c.name }} {{ c.danceType }}
<div>{{ c.danceTypeDetailStr }}</div>
</div>
<div class="text-primary">{{ language == 0 ? '¥' : '€' }}{{ c.serviceFee }}</div>
</div>
</el-checkbox>
</el-checkbox-group>
<el-empty v-if="projectList.length==0" :image="`/img/order_no.png`" :image-size="228"
:description="language==0?'无可选项目':''"/>
<el-empty
v-if="projectList.length==0" :description="language==0?'无可选项目':''"
:image="`/img/order_no.png`"
:image-size="228"
/>
</div>
</div>
</el-col>
......@@ -80,13 +100,13 @@
<el-row class="mt20">
<el-col :span="24">
<div class="text-center">
<el-button type="primary" class="btn-lineG w200px" round @click="signUp">
<el-button class="btn-lineG w200px" round type="primary" @click="signUp">
{{ language == 0 ? '确定' : 'Confirm' }}
</el-button>
</div>
</el-col>
</el-row>
<div class="m20">
<!-- <el-button type="success" @click="importSportman">批量导入人员</el-button>-->
<!-- <el-button type="success" @click="addCoach">新增运动员</el-button>-->
......@@ -98,27 +118,29 @@
{{ language == 0 ? '按人员查看报项' : 'Check Registrations by Participant' }}
</div>
</div>
<sign-info-table v-if="tableType==0" :match-id="matchId"
:extraform="extraform" :language="language" :list="signInfoList"
@editExtra="goPersonInfo"/>
<zu-table v-else :list="zuTableList" :language="language" @delete="removeThis"/>
<sign-info-table
v-if="tableType==0" :extraform="extraform"
:language="language" :list="signInfoList" :match-id="matchId"
@editExtra="goPersonInfo"
/>
<zu-table v-else :language="language" :list="zuTableList" @delete="removeThis" />
<div v-if="showPersonList||myMemberTable.length>0">
<el-row class="mt20">
<el-col :span="24">
<el-button @click="addAccompany" type="primary" plain>
<el-button plain type="primary" @click="addAccompany">
{{ language == 0 ? '添加随行人员' : 'Add accompanying personnel' }}
</el-button>
</el-col>
</el-row>
<el-table class="mt20" :data="myMemberTable" border>
<el-table-column type="index" :label="language==0?'序号':'Index'" width="70" align="center"/>
<el-table-column :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/>
<el-table-column :label="language==0?'名':'Name'" prop="ming" min-width="100"/>
<el-table-column :label="language==0?'国家/地区':'Nationality'" prop="countryName" min-width="100"/>
<!-- <el-table-column :label="language==0?'证件号':'Valid Documents'" prop="idcCode" min-width="120"/>-->
<!-- <el-table-column label="Birthday" prop="birth"/>-->
<el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
<el-table :data="myMemberTable" border class="mt20">
<el-table-column :label="language==0?'序号':'Index'" align="center" type="index" width="70" />
<el-table-column :label="language==0?'姓氏':'Surname'" min-width="100" prop="xing" />
<el-table-column :label="language==0?'名':'Name'" min-width="100" prop="ming" />
<el-table-column :label="language==0?'国家/地区':'Nationality'" min-width="100" prop="countryName" />
<!-- <el-table-column :label="language==0?'证件号':'Valid Documents'" prop="idcCode" min-width="120"/>-->
<!-- <el-table-column label="Birthday" prop="birth"/>-->
<el-table-column :label="language==0?'性别':'Gender'" prop="sexStr" />
<el-table-column :label="language==0?'会员角色':'Role'" min-width="160">
<template #default="scope">
<div class="roletd">
......@@ -143,52 +165,72 @@
</el-table-column>
</el-table>
</div>
<div class="text-center mt20">
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">
<div class="text-center mt20 father">
<el-button class="btn-lineG w200px" round type="primary" @click="submitForm()">
{{ language == 0 ? '预览报名信息' : 'Preview Registration Information' }}
</el-button>
<span v-if="insuranceFlag!=0" class="checkbox">
<el-checkbox
v-model="checked"
:label="language==0?'我同意授权赛事方帮忙购买保险':'I agree to authorize the event organizer to purchase insurance on my behalf'"
false-value="0"
size="large" true-value="1"
/>
<br v-if="language == 1">
<span
@click="handelInsurance"
>{{ language == 0 ? '赛事购买协议' : 'Event Insurance Procurement Agreement' }} </span>
</span>
</div>
</div>
</el-card>
</div>
<DialogAllSportsmanListPerson ref="dialogAllSportsmanListPersonalRef" @transfer="getChoosed"/>
<dialogEditWdsf ref="dialogEditWdsfRef" @submitForm="changeMeDone"/>
<dialogEditAccompany ref="dialogEditAccompanyRef" @submitForm="getMyMemberTable"/>
<addCoachEn ref="dialogAddCoachEnRef" @submitForm="getMyMemberTable"/>
<dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/>
<DialogAllSportsmanListPerson ref="dialogAllSportsmanListPersonalRef" @transfer="getChoosed" />
<dialogEditWdsf ref="dialogEditWdsfRef" @submitForm="changeMeDone" />
<dialogEditAccompany ref="dialogEditAccompanyRef" @submitForm="getMyMemberTable" />
<addCoachEn ref="dialogAddCoachEnRef" @submitForm="getMyMemberTable" />
<dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList" />
<insuranceView ref="insuranceViewRef" />
</div>
</template>
<script setup>
import {ref, reactive, toRefs} from 'vue'
import { ref, reactive, toRefs } from 'vue'
import * as match from '@/apiPc/match'
import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core'
import { getCurrentInstance, onMounted } from '@vue/runtime-core'
import DialogEditWdsf from './components/addWdsf'
import DialogEditAccompany from './components/addAccompany'
import AddCoachEn from './components/addCoach_en'
import DialogAllSportsmanListPerson from './components/allSportsmanListForPersonal'
import DialogExtraForm from './components/extraForm'
import {Search, Switch} from "@element-plus/icons-vue";
import { Search } from '@element-plus/icons-vue'
import { useRouter, useRoute } from 'vue-router'
import insuranceView from './components/insuranceView.vue'
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const router = useRouter()
const route = useRoute()
import _ from 'lodash'
import {ElMessage, ElMessageBox} from 'element-plus'
import cache from "@/plugins/cache"
import TeamSignStep from "@/viewsPc/match/components/teamSignStep"
import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row"
import SignInfoTable from "@/viewsPc/match/components/signInfo-table"
import { ElMessage, ElMessageBox } from 'element-plus'
// import cache from '@/plugins/cache'
// import TeamSignStep from '@/viewsPc/match/components/teamSignStep'
// import CoachInfoRow from '@/viewsPc/match/components/coachInfo-row'
import SignInfoTable from '@/viewsPc/match/components/signInfo-table'
import ZuTable from '@/viewsPc/match/components/zu-table'
import SingleSignStep from "@/viewsPc/match/components/singleSignStep";
import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
import useUserStore from "@/store/modules/user";
import {getPerPersonList} from "@/apiPc/match";
import {useStorage} from "@vueuse/core/index";
import SingleSignStep from '@/viewsPc/match/components/singleSignStep'
import MatchInfoRow from '@/viewsPc/match/components/matchInfo-row'
import useUserStore from '@/store/modules/user'
import { getPerPersonList } from '@/apiPc/match'
import { useStorage } from '@vueuse/core/index'
const language= useStorage('language',0)
const language = useStorage('language', 0)
const checked = ref('0')
const insuranceFlag = ref()
const insuranceAgreement = ref()
const data = reactive({
coachForm: {}, activeStep: 2,
......@@ -212,29 +254,27 @@ const data = reactive({
projectIds: [],
projectList: [],
athletesList: [], projectQuery: {}, tableType: 1,
isNational:true,
isNational: true,
cantBao: {
flag: false,
name:''
name: ''
}
})
const {
names,
tableData,
myMemberTable,
signInfoList,
zuTableList,
choosedList,isNational,
choosedList, isNational,
extraform,
groupId,
coachOrLeaderFlag,
noPhotoCanSign,
projectIds,
activeStep,
projectList,
loadingProject,
projectQuery,
tableType,cantBao,athletesList
tableType, cantBao, athletesList
} = toRefs(data)
const matchId = ref(route.query.matchId)
let signInfoType = null
......@@ -257,29 +297,31 @@ onMounted(() => {
function getMyInfo() {
match.getMyPersonInfo().then(res => {
form.value = res.data
if(form.value.danceMate){
choosedList.value = [form.value,form.value.danceMate]
if(!form.value.danceMate.passportUrl){
cantBao.value.flag = true
cantBao.value.name = form.value.danceMate.realName
} else {
cantBao.value.flag = false
}
if (form.value.danceMate) {
choosedList.value = [form.value, form.value.danceMate]
if (!form.value.danceMate.passportUrl) {
cantBao.value.flag = true
cantBao.value.name = form.value.danceMate.realName
} else {
cantBao.value.flag = false
}
} else {
choosedList.value = [form.value]
}
getProjectList()
}).catch(err => {
router.push({name: 'home'})
console.log(err)
router.push({ name: 'home' })
})
}
const getAthletesList = () => {
getPerPersonList({label:'0',},userId.value).then(res => {
getPerPersonList({ label: '0' }, userId.value).then(res => {
athletesList.value = res.rows
if(res.total <= 2){
if (res.total <= 2) {
choosedList.value = athletesList.value
for (var a of choosedList.value){
if(!a.passportUrl){
for (var a of choosedList.value) {
if (!a.passportUrl) {
cantBao.value.flag = true
cantBao.value.name = a.realName
} else {
......@@ -291,16 +333,17 @@ const getAthletesList = () => {
}
})
}
function upDateChoosedList() {
for (var a of athletesList.value){
for (var b of choosedList.value){
if(a.id == b.id){
b = a
}
for (const a of athletesList.value) {
for (let b of choosedList.value) {
if (a.id == b.id) {
b = a
}
}
}
for (var a of choosedList.value){
if(!a.passportUrl){
for (const a of choosedList.value) {
if (!a.passportUrl) {
cantBao.value.flag = true
cantBao.value.name = a.realName
} else {
......@@ -308,10 +351,11 @@ function upDateChoosedList() {
}
}
}
function getMyMemberTable() {
match.getPerPersonList({cptId: matchId.value, searchLabels: '1,2,3,4,5,6'}, userId.value).then(res => {
match.getPerPersonList({ cptId: matchId.value, searchLabels: '1,2,3,4,5,6' }, userId.value).then(res => {
myMemberTable.value = res.rows
if(res.rows.length > 0){
if (res.rows.length > 0) {
showPersonList.value = true
}
})
......@@ -332,14 +376,14 @@ function changeMeDone(mateId) {
getProjectList()
}
let chargeFlag
function getMatch(id) {
match.getMatchById({
id: id
}).then(res => {
insuranceAgreement.value = res.data.insuranceAgreement
insuranceFlag.value = res.data.insuranceFlag
signEndTime.value = res.data.signEndTime
chargeFlag = res.data.chargeFlag
noPhotoCanSign.value = res.data.noPhotoCanSign
coachOrLeaderFlag.value = res.data.coachOrLeaderFlag
extraform.value = JSON.parse(res.data.participantsInfo)
......@@ -377,15 +421,15 @@ function submitForm(n) {
}
return
}
if (signInfoType == '1') {
ElMessageBox.confirm(language.value==0?'已报项,前往我的报项':'Reported items, go to my submission',
language.value==0?'提示':'Tips', {
confirmButtonText: language.value==0?'确定':'OK',
cancelButtonText: language.value==0?'取消':'Cancel',
type: 'warning'
}).then(() => {
router.push({name: 'myMatch'})
ElMessageBox.confirm(language.value == 0 ? '已报项,前往我的报项' : 'Reported items, go to my submission',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'OK',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
router.push({ name: 'myMatch' })
})
return
}
......@@ -404,15 +448,16 @@ function submitForm(n) {
}
}
}
if (showPersonList.value) {
if (myMemberTable.value.length == 0) {
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 ? '否,进入下一步' : 'NO,Go Next',
type: 'warning'
}).then(() => {
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '是' : 'Yes',
cancelButtonText: language.value == 0 ? '否,进入下一步' : 'NO,Go Next',
type: 'warning'
}).then(() => {
}).catch(() => {
commit()
})
......@@ -421,11 +466,11 @@ function submitForm(n) {
}
} else {
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 ? '否,进入下一步' : 'NO,Go Next',
type: 'warning'
}).then(() => {
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '是' : 'Yes',
cancelButtonText: language.value == 0 ? '否,进入下一步' : 'NO,Go Next',
type: 'warning'
}).then(() => {
showPersonList.value = true
}).catch(() => {
commit()
......@@ -434,36 +479,80 @@ function submitForm(n) {
}
function commit() {
router.push({
name: 'signPreview',
query: {
matchId: matchId.value
}
})
if (insuranceFlag.value == 2 && checked.value == '0') {
ElMessageBox.confirm(language.value == 0 ? '你是否同意赛事放帮忙购买保险?' : 'Do you agree to have the event organizer help purchase insurance?',
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '是' : 'Yes',
cancelButtonText: language.value == 0 ? '否,进入下一步' : 'NO,Go Next',
type: 'warning'
}).then(() => {
checked.value = '1'
router.push({
name: 'signPreview',
query: {
matchId: matchId.value,
buy: checked.value
}
})
}).catch(() => {
router.push({
name: 'signPreview',
query: {
matchId: matchId.value,
buy: checked.value
}
})
})
} else if (insuranceFlag.value == 1 && checked.value != '1') {
ElMessageBox.confirm(language.value == 0 ? '请阅读并勾选同意赛事保险购买协议' : 'Please read and tick to agree to the event insurance purchase agreement',
language.value == 0 ? '提示' : 'Tip', {
showCancelButton: false,
confirmButtonText: language.value == 0 ? '是' : 'Yes',
// cancelButtonText: language.value == 0 ? '否,进入下一步' : 'NO,Go Next',
type: 'warning'
}).then(() => {
}).catch(() => {
})
} else {
router.push({
name: 'signPreview',
query: {
matchId: matchId.value,
buy: checked.value
}
})
}
}
function getChoosed(list) {
console.log(list)
choosedList.value = list
getProjectList()
}
function getProjectList() {
if(choosedList.value.length==0){
if (choosedList.value.length == 0) {
return
}
let arr = []
for(var l of choosedList.value){
const arr = []
for (var l of choosedList.value) {
arr.push(l.id)
}
projectIds.value = []
loadingProject.value = true
//根据已选人员id 获取项目列表
// 根据已选人员id 获取项目列表
var obj = {}
obj = {
cptId: matchId.value,
perIds: arr.toString(),
name: projectQuery.value.name
}
obj = {
cptId: matchId.value,
perIds: arr.toString(),
name: projectQuery.value.name
}
match.getProjectPageByPerIds(obj).then(res => {
projectList.value = res.rows
loadingProject.value = false
......@@ -502,7 +591,7 @@ function addCoach() {
}
function delperson(p) {
//删除团队下的人
// 删除团队下的人
let text = ''
let t = '提示'
let s = '确定'
......@@ -532,18 +621,18 @@ function delperson(p) {
function signUp() {
if (projectIds.value.length == 0) {
if (language.value == 0) {
ElMessage.warning('请选择项目')
} else {
ElMessage.warning('Please select project')
}
if (language.value == 0) {
ElMessage.warning('请选择项目')
} else {
ElMessage.warning('Please select project')
}
return
}
let arr = []
for(var l of choosedList.value){
const arr = []
for (var l of choosedList.value) {
arr.push(l.id)
}
let obj = {
const obj = {
projectIds: projectIds.value.toString(),
groupId: 0,
athleteIds: arr.toString()
......@@ -556,11 +645,11 @@ function signUp() {
function removeThis(id) {
ElMessageBox.confirm(language.value == 0 ? '确定移除这条报项吗?' : 'Are you sure to remove this report item',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
match.deleteSign(id).then(res => {
// 重新获取已报名信息
ElMessage.success(language.value == 0 ? '已移除该报项' : 'success')
......@@ -570,8 +659,8 @@ function removeThis(id) {
})
}
function switchPerson(){
console.log( choosedList.value)
function switchPerson() {
console.log(choosedList.value)
const params = {
title: language.value == 0 ? '选择运动员' : 'Participating athletes',
matchId: matchId.value,
......@@ -579,7 +668,7 @@ function switchPerson(){
coachOrLeaderFlag: coachOrLeaderFlag.value,
choosedList: choosedList.value,
isNational: isNational.value,
mateId:form.value.danceMate?.id || 0,
mateId: form.value.danceMate?.id || 0
}
proxy.$refs['dialogAllSportsmanListPersonalRef'].open(params)
}
......@@ -587,24 +676,24 @@ function switchPerson(){
const goPersonInfo = (row) => {
if (signInfoType == '1') {
ElMessageBox.alert(
language.value == 0 ? '已报项,前往我的报项' : 'Reported items, go to my submission',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: 'OK',
callback: (Action) => {
router.push({name: 'myMatch'})
}
})
language.value == 0 ? '已报项,前往我的报项' : 'Reported items, go to my submission',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: 'OK',
callback: (Action) => {
router.push({ name: 'myMatch' })
}
})
return
}
// 完善补充信息
const params = {
matchId: matchId.value,
title: language.value==0?'完善补充信息':'Complete the supplementary information',
title: language.value == 0 ? '完善补充信息' : 'Complete the supplementary information',
participantsInfoArr: extraform.value,
personId: row.personInfo.id,
extraId: row.extraPersonInfo?.id || 0,
isNational:true
isNational: true
}
proxy.$refs['popExtraForm'].open(_.cloneDeep(params))
}
......@@ -621,7 +710,7 @@ function editMate(obj) {
title: language.value == 0 ? '编辑' : 'Edit',
isMe: false,
form: obj || {},
cptId:matchId.value,
cptId: matchId.value,
id: obj?.id || 0
})
}
......@@ -634,15 +723,20 @@ function switchTabletype() {
tableType.value = 0
}
}
function handelInsurance() {
proxy.$refs['insuranceViewRef'].open(insuranceAgreement.value)
}
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
:deep(.el-checkbox__label) {
flex: 1 1 auto;
}
.flexBetweenBox {
width: 100%;margin-right: 0;
width: 100%;
margin-right: 0;
height: auto;
border-bottom: 1px solid #eee;
padding: 0 10px;
......@@ -655,7 +749,7 @@ function switchTabletype() {
.flexBetween {
padding: 10px;
border-left: 1px solid #eee;
.l {
div {
margin: 4px 0 0;
......@@ -686,16 +780,16 @@ function switchTabletype() {
margin: 0 0 20px;
display: flex;
justify-content: space-between;
button {
position: relative;
margin: 10px;
}
.choseItem {
margin: 10px;
position: relative;
.poClose {
position: absolute;
right: -6px;
......@@ -710,18 +804,18 @@ function switchTabletype() {
background: rgba(245, 247, 249, 0.38);
padding: 20px 40px 10px;
}
.el-checkbox {
height: auto;
margin-right: 20px;
}
:deep(.el-checkbox__input) {
position: absolute;
right: 0;
top: 0;
}
.name {
text-align: center;
}
......@@ -740,7 +834,7 @@ function switchTabletype() {
margin: 5px 0;
color: #4C5359;
font-size: 14px;
label {
font-size: 14px;
margin-right: 14px
......@@ -753,13 +847,13 @@ function switchTabletype() {
color: #4C5359;
display: flex;
justify-content: center;
div {
padding: 20px;
position: relative;
cursor: pointer;
}
div:first-child::after {
content: '';
position: absolute;
......@@ -771,10 +865,10 @@ function switchTabletype() {
bottom: 0;
margin: auto;
}
.active {
color: var(--el-color-primary);
&::before {
width: 33px;
content: '';
......@@ -795,10 +889,38 @@ function switchTabletype() {
display: inline-block
}
}
.mName{color: #000;font-size: 15px;display: inline-block;max-width: 6.5em;text-overflow: ellipsis;
overflow: hidden;}
.panel h3.panel-title{
span{ color: #999;font-size: 12px;}
.mName {
color: #000;
font-size: 15px;
display: inline-block;
max-width: 6.5em;
text-overflow: ellipsis;
overflow: hidden;
}
.panel h3.panel-title {
span {
color: #999;
font-size: 12px;
}
}
.father {
position: relative;
height: 50px;
}
.checkbox {
position: absolute;
right: 5%;
text-align: left;
span {
color: #453DEA;
position: relative;
top: -1px;
cursor: pointer
}
}
</style>
......
......@@ -2,40 +2,50 @@
<div>
<div class="box ph-30">
<el-card class="mb20">
<team-sign-step :activeStep="activeStep" :language="language"/>
<team-sign-step :active-step="activeStep" :language="language" />
</el-card>
<el-card :body-style="{'padding-top': '0'}">
<el-row class="mt20" :gutter="20">
<el-row :gutter="20" class="mt20">
<el-col :lg="10">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3>
<h3 class="panel-title" v-else>Select list of participating athletes</h3>
<h3 v-if="language==0" class="panel-title">选择参赛运动员清单</h3>
<h3 v-else class="panel-title">Select list of participating athletes</h3>
<!-- <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>-->
<el-button type="primary" plain class="fr" @click="chooseSportman" size="small" style="top:12px">
<el-button
class="fr" plain size="small" style="top:12px" type="primary"
@click="chooseSportman"
>
{{ language == 0 ? '选手管理' : 'Athlete Management' }}
</el-button>
</div>
<div class="panel-body" style="padding: 10px">
<div class="tip text-right">
*{{ language == 0?'可通过[选手管理],增加和编辑运动员':'You can add and edit athletes through [Athlete Management]' }}
*{{
language == 0 ? '可通过[选手管理],增加和编辑运动员' : 'You can add and edit athletes through [Athlete Management]'
}}
</div>
<div style="margin: 0 4px 10px;display: flex">
<el-select multiple v-model="choosedchoosed" collapse-tags-tooltip filterable
@change="changechoosed">
<el-option v-for="c in athletesList" :key="c.id" :label="c.realName" :value="c.id" :disabled="c.disabled">
<el-select
v-model="choosedchoosed" collapse-tags-tooltip filterable multiple
@change="changechoosed"
>
<el-option
v-for="c in athletesList" :key="c.id" :disabled="c.disabled" :label="c.realName"
:value="c.id"
>
<div class="flexOption" style="width: 100%">
{{ c.realName }}
<img v-if="c.sex=='0'" src="@/assets/img/female.png"/>
<img v-if="c.sex=='1'" src="@/assets/img/male.png"/>
{{c.representing}}
{{c.ageGroup}}
{{c.division}}<span v-if="c.age"> -{{ c.age }}{{language==0 ? '岁' : 'years'}}</span>
<!-- @click="editPerson(c.id)"-->
<span v-if="c.disabled" class="text-danger po-right">需补全信息</span>
<img v-if="c.sex=='0'" src="@/assets/img/female.png">
<img v-if="c.sex=='1'" src="@/assets/img/male.png">
{{ c.representing }}
{{ c.ageGroup }}
{{ c.division }}<span v-if="c.age"> -{{ c.age }}{{ language == 0 ? '岁' : 'years' }}</span>
<!-- @click="editPerson(c.id)"-->
<span v-if="c.disabled" class="text-danger po-right">需补全信息</span>
</div>
</el-option>
<!-- <template #tag>-->
......@@ -48,15 +58,15 @@
{{ language == 0 ? '重选' : 'Re-select' }}
</el-button>
</div>
<!-- -->
<div class="pd20 text-center" v-if="athletesList.length==0">
<!-- -->
<div v-if="athletesList.length==0" class="pd20 text-center">
<span>{{ language == 0 ? '暂无参赛选手' : 'No athlete yet,' }}
</span>
<span class="text-primary" @click="chooseSportman">{{ language == 0 ? '去创建':' Create' }}</span>
<span class="text-primary" @click="chooseSportman">{{ language == 0 ? '去创建' : ' Create' }}</span>
</div>
<div class="pd20 text-center" v-if="choosedchoosed.length==0&&athletesList.length>0">
<div v-if="choosedchoosed.length==0&&athletesList.length>0" class="pd20 text-center">
<span class="text-warning">
{{ language == 0 ? '请在上面的下拉框中选择运动员' : 'Please select athletes in the drop-down box' }}
</span>
......@@ -65,7 +75,7 @@
根据选择的人员自动匹配项目,选择单人匹配单人项
目,选择双人匹配双人项目(注意男女),选择多人匹配多人项目。
</div>
<!-- <div class="noPicChooseForm" id="chooseArr">-->
<!-- <el-checkbox-group v-model="choosedchoosed" @change="changechoosed">-->
<!-- <el-checkbox v-for="c in choosedListBak" :value="c.id" border>-->
......@@ -83,34 +93,41 @@
<el-col :lg="14">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">可参与报名的项目
<span class="text-danger" v-if="signInfoList.length>0">已报项目在下方查看</span>
<h3 v-if="language==0" class="panel-title">可参与报名的项目
<span v-if="signInfoList.length>0" class="text-danger">已报项目在下方查看</span>
</h3>
<h3 class="panel-title" v-else>Search Events
<span class="text-danger" v-if="signInfoList.length>0">Slide down to view reported projects</span>
<h3 v-else class="panel-title">Search Events
<span v-if="signInfoList.length>0" class="text-danger">Slide down to view reported projects</span>
</h3>
<div class="fr">
<el-input size="small" v-model="projectQuery.name" :prefix-icon="Search"
@change="getProjectList"
clearable/>
<el-input
v-model="projectQuery.name" :prefix-icon="Search" clearable
size="small"
@change="getProjectList"
/>
</div>
</div>
<div v-loading="loadingProject" id="projectbox" style="height: 50vh;overflow: auto;">
<div id="projectbox" v-loading="loadingProject" style="height: 50vh;overflow: auto;">
<el-checkbox-group v-model="projectIds" @change="changeProject">
<el-checkbox class="flexBetweenBox" v-for="c in projectList" :value="c.id" :key="c.id"
v-show="!c.disabled" :disabled="c.disabled">
<el-checkbox
v-for="c in projectList" v-show="!c.disabled" :key="c.id" :disabled="c.disabled"
:value="c.id" class="flexBetweenBox"
>
<div class="flexBetween w100">
<div class="l">
{{ c.code }}:{{ c.name }}({{c.danceType}})
{{ c.code }}:{{ c.name }}({{ c.danceType }})
<div v-if="c.danceType=='Breaking'">--</div>
<div v-else>{{c.danceTypeDetailStr}}</div>
<div v-else>{{ c.danceTypeDetailStr }}</div>
</div>
<div class="text-primary">{{ language == 0 ? '¥' : '€' }}{{ c.serviceFee }}</div>
</div>
</el-checkbox>
</el-checkbox-group>
<el-empty v-if="projectList.length==0" :image="`/img/order_no.png`" :image-size="228"
:description="language==0?'无可选项目':''"/>
<el-empty
v-if="projectList.length==0" :description="language==0?'无可选项目':''"
:image="`/img/order_no.png`"
:image-size="228"
/>
</div>
</div>
</el-col>
......@@ -118,8 +135,11 @@
<el-row class="mt20">
<el-col :span="24">
<div class="text-center">
<el-button type="primary" class="btn-lineG w200px" id="signUpBtn"
:disabled="projectIds.length==0||choosedchoosed.length==0" round @click="signUp">
<el-button
id="signUpBtn" :disabled="projectIds.length==0||choosedchoosed.length==0"
class="btn-lineG w200px"
round type="primary" @click="signUp"
>
{{ language == 0 ? '确定' : 'Confirm' }}
</el-button>
</div>
......@@ -128,9 +148,9 @@
</el-card>
<!-- <el-button type="success" @click="importSportman">批量导入人员</el-button>-->
<!-- <el-button type="success" @click="addCoach">新增运动员</el-button>-->
<el-card class="mt20" :body-style="{'padding': '0'}">
<coach-info-row :match-id="matchId" :group-id="groupId" :language="language"/>
<el-card :body-style="{'padding': '0'}" class="mt20">
<coach-info-row :group-id="groupId" :language="language" :match-id="matchId" />
<div class="m20">
<div class="ttbb">
<div :class="tableType==1 ? 'active' : ''" @click="switchTabletype">
......@@ -148,69 +168,88 @@
<!-- {{ language == 0 ? '按组别查看报项' : 'Check Registrations by Group' }}-->
<!-- </el-button>-->
<!-- </div>-->
<sign-info-table v-if="tableType==0" :match-id="matchId"
:extraform="extraform" :list="signInfoList"
@editExtra="goPersonInfo" :isNational="isNational"/>
<zu-table v-else :list="zuTableList" @delete="removeThis"/>
<div class="text-center mt20">
<el-button type="primary" class="w200px" plain round @click="goPrev()">
<sign-info-table
v-if="tableType==0" :extraform="extraform"
:is-national="isNational" :list="signInfoList"
:match-id="matchId" @editExtra="goPersonInfo"
/>
<zu-table v-else :list="zuTableList" @delete="removeThis" />
<div class="text-center mt20 father">
<el-button class="w200px" plain round type="primary" @click="goPrev()">
{{ language == 0 ? "上一步" : 'Go back' }}
</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">
<el-button class="btn-lineG w200px" round type="primary" @click="submitForm()">
{{ language == 0 ? '预览报名信息' : 'Preview registration information' }}
</el-button>
<span v-if="insuranceFlag!=0" class="checkbox">
<el-checkbox
v-model="checked"
:label="language==0?'我同意授权赛事方帮忙购买保险':'I agree to authorize the event organizer to purchase insurance on my behalf'"
false-value="0"
size="large" true-value="1"
/>
<br v-if="language == 1">
<span
@click="handelInsurance"
>《{{ language == 0 ? '赛事购买协议' : 'Event Insurance Procurement Agreement' }} 》</span>
</span>
</div>
</div>
</el-card>
</div>
<dialogAddCoach ref="dialogAddCoachRef"/>
<dialogAddCoach ref="dialogAddCoachRef" />
<!-- <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @transfer="getChoosed" @submitForm="getSignInfoList"/>-->
<dialogAllSportsmanList ref="dialogAllSportsmanListRef" @submitForm="getAthletesList"/>
<dialogImport ref="dialogImportProps" @submitForm="getMySignInfo"/>
<dialogAllSportsmanList ref="dialogAllSportsmanListRef" @submitForm="getAthletesList" />
<dialogImport ref="dialogImportProps" @submitForm="getMySignInfo" />
<el-dialog v-model="showResult" :close-on-click-modal="false" :show-close="false">
<el-result icon="success" :title="language==0?'报名成功':'Sign up successful'">
<el-result :title="language==0?'报名成功':'Sign up successful'" icon="success">
<template #extra>
<el-button type="primary" @click="downloadVoucher">下载凭证</el-button>
<el-button type="primary" @click="goMySign">{{ language == 0 ? '查看报项' : 'View Entries' }}</el-button>
</template>
</el-result>
</el-dialog>
<dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/>
<dialogWdsf ref="popWdsf" @submitForm="getAthletesList" @cancel="removeCurproject"/>
<!-- <el-tour v-model="openTour" :current="tourCurrent">-->
<!-- <el-tour-step target="#addRef" title="第一步" description="点击选择运动员" :next-button-props="nextButtonProps"/>-->
<!-- <el-tour-step v-if="choosedList.length>0" target="#chooseArr" title="第二步" description="勾选报项运动员"/>-->
<!-- <el-tour-step v-if="projectList.length>0" target="#projectbox" title="第三步" description="选择报名项目"/>-->
<!-- <el-tour-step v-if="projectIds.length>0" target="#signUpBtn" title="第四步" description="点击报项"/>-->
<!-- </el-tour>-->
<dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList" />
<dialogWdsf ref="popWdsf" @cancel="removeCurproject" @submitForm="getAthletesList" />
<!-- <el-tour v-model="openTour" :current="tourCurrent">-->
<!-- <el-tour-step target="#addRef" title="第一步" description="点击选择运动员" :next-button-props="nextButtonProps"/>-->
<!-- <el-tour-step v-if="choosedList.length>0" target="#chooseArr" title="第二步" description="勾选报项运动员"/>-->
<!-- <el-tour-step v-if="projectList.length>0" target="#projectbox" title="第三步" description="选择报名项目"/>-->
<!-- <el-tour-step v-if="projectIds.length>0" target="#signUpBtn" title="第四步" description="点击报项"/>-->
<!-- </el-tour>-->
<insuranceView ref="insuranceViewRef" />
</div>
</template>
<script setup>
import {ref, reactive, toRefs, watch} from 'vue'
import { ref, reactive, toRefs, watch } from 'vue'
import * as match from '@/apiPc/match'
import {getCurrentInstance, onMounted} from '@vue/runtime-core'
import { getCurrentInstance, onMounted } from '@vue/runtime-core'
import DialogAddCoach from './components/addCoach'
import DialogAllSportsmanList from './components/allSportsmanList'
import DialogImport from './components/import'
import DialogExtraForm from './components/extraForm'
import DialogWdsf from './components/wdsfForm'
import {Search, Switch} from "@element-plus/icons-vue";
import { Search } from '@element-plus/icons-vue'
import { useRouter, useRoute } from 'vue-router'
import insuranceView from './components/insuranceView.vue'
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const router = useRouter()
const route = useRoute()
import _ from 'lodash'
import {ElMessage, ElMessageBox} from 'element-plus'
import cache from "@/plugins/cache"
import TeamSignStep from "@/viewsPc/match/components/teamSignStep"
import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row"
import SignInfoTable from "@/viewsPc/match/components/signInfo-table"
import { ElMessage, ElMessageBox } from 'element-plus'
// import cache from '@/plugins/cache'
import TeamSignStep from '@/viewsPc/match/components/teamSignStep'
import CoachInfoRow from '@/viewsPc/match/components/coachInfo-row'
import SignInfoTable from '@/viewsPc/match/components/signInfo-table'
import ZuTable from '@/viewsPc/match/components/zu-table'
import {signgetSignInfoConflict} from "@/apiPc/match";
import {useStorage} from "@vueuse/core/index";
import { signgetSignInfoConflict } from '@/apiPc/match'
import { useStorage } from '@vueuse/core/index'
const language = useStorage('language', 0)
const data = reactive({
......@@ -249,7 +288,7 @@ const data = reactive({
currProjectId: '',
openTour: false,
isNational: false,
languageSource:'',singlePersonEntryLimit:'',doublePersonEntryLimit:''
languageSource: '', singlePersonEntryLimit: '', doublePersonEntryLimit: ''
})
const {
activeTeam,
......@@ -277,10 +316,15 @@ const {
tableType,
zuQuery,
openTour, currProjectId,
tourCurrent, isNational,languageSource,singlePersonEntryLimit,doublePersonEntryLimit
tourCurrent, isNational, languageSource, singlePersonEntryLimit, doublePersonEntryLimit
} = toRefs(data)
const nextButtonProps = ref({})
const matchId = ref(route.query.matchId)
const checked = ref('0')
const insuranceFlag = ref()
const insuranceAgreement = ref()
let signInfoType = null
onMounted(() => {
signType.value = route.query.signType || 1
......@@ -293,11 +337,11 @@ onMounted(() => {
function getAthletesList() {
// athletesList.value
match.getGroupPersonList({label: '0'}, groupId.value).then(res => {
match.getGroupPersonList({ label: '0' }, groupId.value).then(res => {
athletesList.value = res.rows
if(!isNational.value){
for(let ath of athletesList.value){
if(!ath.phone){
if (!isNational.value) {
for (const ath of athletesList.value) {
if (!ath.phone) {
ath.disabled = true
} else {
ath.disabled = false
......@@ -316,6 +360,8 @@ function getMatch(id) {
noPhotoCanSign.value = res.data.noPhotoCanSign
coachOrLeaderFlag.value = res.data.coachOrLeaderFlag
extraform.value = JSON.parse(res.data.participantsInfo)
insuranceAgreement.value = res.data.insuranceAgreement
insuranceFlag.value = res.data.insuranceFlag
if (res.data.languageSource == '100') {
isNational.value = false
} else {
......@@ -348,12 +394,12 @@ function getSignInfoList() {
function submitForm() {
if (signInfoType == '1') {
ElMessageBox.confirm(language.value == 0 ? '已报项,前往我的报项' : 'Reported items, go to my submission',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'OK',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
router.push({name: 'myMatch'})
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'OK',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
router.push({ name: 'myMatch' })
})
return
}
......@@ -380,16 +426,58 @@ function submitForm() {
}
return
}
router.push({
name: 'signPreview',
query: {
matchId: matchId.value,
groupId: groupId.value,
isNational: isNational.value
}
})
if (insuranceFlag.value == '1' && checked.value == 0) {
ElMessageBox.confirm(language.value == 0 ? '请阅读并勾选同意赛事保险购买协议' : 'Please read and tick to agree to the event insurance purchase agreement',
language.value == 0 ? '提示' : 'Tip', {
showCancelButton: false,
confirmButtonText: language.value == 0 ? '是' : 'Yes',
// cancelButtonText: language.value == 0 ? '否,进入下一步' : 'NO,Go Next',
type: 'warning'
})
} else if (insuranceFlag.value == '2' && checked.value == 0) {
ElMessageBox.confirm(language.value == 0 ? '你是否同意赛事放帮忙购买保险?' : 'Do you agree to have the event organizer help purchase insurance?',
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '是' : 'Yes',
cancelButtonText: language.value == 0 ? '否,进入下一步' : 'NO,Go Next',
type: 'warning'
}).then(() => {
checked.value = '1'
router.push({
name: 'signPreview',
query: {
matchId: matchId.value,
groupId: groupId.value,
isNational: isNational.value,
buy: checked.value
}
})
}).catch(() => {
router.push({
name: 'signPreview',
query: {
matchId: matchId.value,
groupId: groupId.value,
isNational: isNational.value,
buy: checked.value
}
})
})
} else {
router.push({
name: 'signPreview',
query: {
matchId: matchId.value,
groupId: groupId.value,
isNational: isNational.value,
buy: checked.value
}
})
}
}
function goPrev() {
router.push({
name: `chooseCoach`,
......@@ -438,7 +526,7 @@ function getProjectList() {
return
}
loadingProject.value = true
//根据已选人员id 获取项目列表
// 根据已选人员id 获取项目列表
var obj = {
cptId: matchId.value,
perIds: choosedchoosed.value.toString()
......@@ -514,11 +602,11 @@ function signUp() {
function removeThis(id) {
ElMessageBox.confirm(language.value == 0 ? '确定移除这条报项吗?' : 'Are you sure to remove this report item',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
match.deleteSign(id).then(res => {
// 重新获取已报名信息
ElMessage.success(language.value == 0 ? '已移除该报项' : 'success')
......@@ -568,7 +656,7 @@ const goPersonInfo = (row) => {
function downloadVoucher() {
// 下载凭证
proxy.download(
`/pdf/getPayedOrderPdf/${matchId.value}/${groupId.value || 0}`, {}, '报项凭证.pdf'
`/pdf/getPayedOrderPdf/${matchId.value}/${groupId.value || 0}`, {}, '报项凭证.pdf'
)
}
......@@ -587,12 +675,13 @@ function switchTabletype() {
tableType.value = 0
}
}
let hasPproperty=''
let hasPlevel=''
let hasAlmighty={}
let hasPpropertyLength=0
let isDanNum=0
let isShuangNum=0
let hasPproperty = ''
let hasPlevel = ''
let hasAlmighty = {}
let hasPpropertyLength = 0
let isDanNum = 0
let isShuangNum = 0
watch(projectIds, (newVal, oldVal) => {
let currProject = {}
if (newVal.length > oldVal.length) {
......@@ -600,64 +689,65 @@ watch(projectIds, (newVal, oldVal) => {
} else {
currProjectId.value = ''
}
for(let p of projectList.value){
if(p.id==_.last(newVal)){
for (const p of projectList.value) {
if (p.id == _.last(newVal)) {
currProject = p
}
}
if(newVal.length>0){
hasPproperty=''
hasPlevel=''
hasAlmighty={}
if (newVal.length > 0) {
hasPproperty = ''
hasPlevel = ''
hasAlmighty = {}
isDanNum = 0
isShuangNum = 0
hasPpropertyLength=0
for(let hh of projectList.value){
if(projectIds.value.indexOf(hh.id)>-1&&hh.pproperty){
hasPpropertyLength = 0
for (const hh of projectList.value) {
if (projectIds.value.indexOf(hh.id) > -1 && hh.pproperty) {
hasPproperty = hh.pproperty
hasPpropertyLength = hh.danceTypeDetailStr.split(',').length
}
if(projectIds.value.indexOf(hh.id)>-1&&hh.plevel){
if (projectIds.value.indexOf(hh.id) > -1 && hh.plevel) {
hasPlevel = hh.plevel
}
if(projectIds.value.indexOf(hh.id)>-1&&hh.almightyFlag=='1'){
if (projectIds.value.indexOf(hh.id) > -1 && hh.almightyFlag == '1') {
hasAlmighty = hh
}
if(projectIds.value.indexOf(hh.id)>-1&&hh.singleFlag=='1'){
if (projectIds.value.indexOf(hh.id) > -1 && hh.singleFlag == '1') {
isDanNum += 1
}
if(projectIds.value.indexOf(hh.id)>-1&&hh.doubleSingleProjectFlag=='1'){
if (projectIds.value.indexOf(hh.id) > -1 && hh.doubleSingleProjectFlag == '1') {
isShuangNum += 1
}
}
console.log(hasPproperty,hasPlevel,hasPpropertyLength)
console.log(hasPproperty, hasPlevel, hasPpropertyLength)
filterProjectList(currProject)
} else {
resetProjectList()
}
})
function filterProjectList(currProject){
for(let pp of projectList.value){
if(
(hasPproperty&&pp.pproperty==hasPproperty)&&((pp.danceTypeDetailStr.split(',').length>=4&&hasPpropertyLength<4)||(pp.danceTypeDetailStr.split(',').length<4&&hasPpropertyLength>=4))
||(hasPproperty&&pp.pproperty&&pp.pproperty!=hasPproperty)
||(hasPlevel&&pp.plevel&&pp.plevel!=hasPlevel)
||(isDanNum==Number(singlePersonEntryLimit.value) && pp.singleFlag=='1'&&projectIds.value.indexOf(pp.id)==-1)
||(isShuangNum==Number(doublePersonEntryLimit.value) && pp.doubleSingleProjectFlag=='1'&&projectIds.value.indexOf(pp.id)==-1)
){
function filterProjectList(currProject) {
for (const pp of projectList.value) {
if (
(hasPproperty && pp.pproperty == hasPproperty) && ((pp.danceTypeDetailStr.split(',').length >= 4 && hasPpropertyLength < 4) || (pp.danceTypeDetailStr.split(',').length < 4 && hasPpropertyLength >= 4)) ||
(hasPproperty && pp.pproperty && pp.pproperty != hasPproperty) ||
(hasPlevel && pp.plevel && pp.plevel != hasPlevel) ||
(isDanNum == Number(singlePersonEntryLimit.value) && pp.singleFlag == '1' && projectIds.value.indexOf(pp.id) == -1) ||
(isShuangNum == Number(doublePersonEntryLimit.value) && pp.doubleSingleProjectFlag == '1' && projectIds.value.indexOf(pp.id) == -1)
) {
console.log(pp.name)
pp.disabled = true
} else if((hasAlmighty.almightyFlag=='1'&&pp.almightyFlag=='1')
&&(hasAlmighty.danceTypeDetailStr.split(',').length!=pp.danceTypeDetailStr.split(',').length)
){
} else if ((hasAlmighty.almightyFlag == '1' && pp.almightyFlag == '1') &&
(hasAlmighty.danceTypeDetailStr.split(',').length != pp.danceTypeDetailStr.split(',').length)
) {
console.log(pp.name)
pp.disabled = true
}else {
} else {
pp.disabled = false
}
}
}
// function refilterProjectList() {
// let arr = [] //已选项目
// for(let p of projectList.value){
......@@ -669,25 +759,26 @@ function filterProjectList(currProject){
// filterProjectList(a)
// }
// }
function resetProjectList(){
for(var p of projectList.value){
p.disabled = false
function resetProjectList() {
for (var p of projectList.value) {
p.disabled = false
}
}
function changeProject(e) {
var obj = {}
obj = _.find(projectList.value, (c) => {
return e.indexOf(c.id) > -1
})
//循环choosed2List 检查是否存在WDSF号
// 循环choosed2List 检查是否存在WDSF号
let n = 0
for (var cc of choosed2List.value) {
if (!cc.wdsfMin) {
n++
}
}
//obj需要wdsf 且 currProjectId非空
if (obj&&obj.checkMemberFlag == '1' && currProjectId.value != '' && n > 0) {
// obj需要wdsf 且 currProjectId非空
if (obj && obj.checkMemberFlag == '1' && currProjectId.value != '' && n > 0) {
const params = {
title: language.value == 0 ? '验证WDSF' : 'Verify WDSF',
groupId: groupId.value,
......@@ -702,31 +793,33 @@ function removeCurproject() {
// projectIds.value
projectIds.value = _.without(projectIds.value, currProjectId.value)
}
function checkTwo(a,b) {
match.checkMate({per1Id:a.id,per2Id:b.id,cptId:matchId.value}).then(res=>{
if(!res.data){
if(isNational.value){
ElMessage.warning(language.value == 0 ? '他们不是固定组合':'They\'re not a couple')
function checkTwo(a, b) {
match.checkMate({ per1Id: a.id, per2Id: b.id, cptId: matchId.value }).then(res => {
if (!res.data) {
if (isNational.value) {
ElMessage.warning(language.value == 0 ? '他们不是固定组合' : 'They\'re not a couple')
} else {
ElMessageBox.confirm(language.value == 0 ? `${a.realName}/${b.realName} 已经和其他人组成舞伴,无法报名,请重新选择`:`${a.realName}/${b.realName} has already formed a dancer with another person, cannot sign up: please select again`,
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
showCancelButton: false,
type: 'warning'
}).then(() => {
console.log('Confirm')
})
ElMessageBox.confirm(language.value == 0 ? `${a.realName}/${b.realName} 已经和其他人组成舞伴,无法报名,请重新选择` : `${a.realName}/${b.realName} has already formed a dancer with another person, cannot sign up: please select again`,
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
showCancelButton: false,
type: 'warning'
}).then(() => {
console.log('Confirm')
})
}
}
})
}
watch(choosedchoosed, (newVal, oldVal) => {
// console.log(choosedchoosed.value)
if(newVal.length==2){
//如果一男一女,判断是否舞伴
if(choosed2List.value.length==2){
if(choosed2List.value[0].sex!=choosed2List.value[1].sex){
checkTwo(choosed2List.value[0],choosed2List.value[1])
if (newVal.length == 2) {
// 如果一男一女,判断是否舞伴
if (choosed2List.value.length == 2) {
if (choosed2List.value[0].sex != choosed2List.value[1].sex) {
checkTwo(choosed2List.value[0], choosed2List.value[1])
}
}
}
......@@ -739,7 +832,7 @@ watch(choosedchoosed, (newVal, oldVal) => {
if (!res.data) {
ElMessage.warning(language.value == 0 ? '该人员已在其他团队中报名,请重新选择' : 'This person has already registered in another team, please select again')
choosedchoosed.value = _.without(choosedchoosed.value, _.last(newVal))
for (var c of choosed2List.value) {
if (c.id == _.last(newVal)) {
choosed2List.value = _.without(choosed2List.value, c)
......@@ -751,7 +844,6 @@ watch(choosedchoosed, (newVal, oldVal) => {
}
}
projectList.value = []
return
} else {
getProjectList()
}
......@@ -760,9 +852,13 @@ watch(choosedchoosed, (newVal, oldVal) => {
getProjectList()
}
})
function handelInsurance() {
proxy.$refs['insuranceViewRef'].open(insuranceAgreement.value)
}
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
:deep(.el-checkbox__label) {
flex: 1 1 auto;
}
......@@ -782,7 +878,7 @@ watch(choosedchoosed, (newVal, oldVal) => {
.flexBetween {
padding: 10px;
border-left: 1px solid #eee;
.l {
div {
margin: 4px 0 0;
......@@ -813,16 +909,16 @@ watch(choosedchoosed, (newVal, oldVal) => {
margin: 0 0 20px;
display: flex;
justify-content: space-between;
button {
position: relative;
margin: 10px;
}
.choseItem {
margin: 10px;
position: relative;
.poClose {
position: absolute;
right: -6px;
......@@ -837,18 +933,18 @@ watch(choosedchoosed, (newVal, oldVal) => {
background: rgba(245, 247, 249, 0.38);
padding: 20px 40px 10px;
}
.el-checkbox {
height: auto;
margin-right: 20px;
}
:deep(.el-checkbox__input) {
position: absolute;
right: 0;
top: 0;
}
.name {
text-align: center;
}
......@@ -867,7 +963,7 @@ watch(choosedchoosed, (newVal, oldVal) => {
margin: 5px 0;
color: #4C5359;
font-size: 14px;
label {
font-size: 14px;
margin-right: 14px
......@@ -880,13 +976,13 @@ watch(choosedchoosed, (newVal, oldVal) => {
color: #4C5359;
display: flex;
justify-content: center;
div {
padding: 20px;
position: relative;
cursor: pointer;
}
div:first-child::after {
content: '';
position: absolute;
......@@ -898,10 +994,10 @@ watch(choosedchoosed, (newVal, oldVal) => {
bottom: 0;
margin: auto;
}
.active {
color: var(--el-color-primary);
&::before {
width: 33px;
content: '';
......@@ -920,23 +1016,23 @@ watch(choosedchoosed, (newVal, oldVal) => {
.noPicChooseForm {
overflow: auto;
//height: 70vh;
.el-checkbox-group {
display: flex;
flex-wrap: wrap;
text-align: justify;
.el-button {
width: 31%;
margin: 1%;
}
.el-checkbox {
margin: 1%;
width: 31%;
overflow: hidden;
}
.name {
justify-content: left;
}
......@@ -947,7 +1043,7 @@ watch(choosedchoosed, (newVal, oldVal) => {
display: flex;
align-items: center;
justify-content: center;
img {
height: 20px;
margin-left: 4px;
......@@ -957,19 +1053,49 @@ watch(choosedchoosed, (newVal, oldVal) => {
.flexOption {
display: flex;
align-items: center;
img {
height: 18px;
}
}
:deep(.el-select){
--el-border-color:var(--el-color-primary);
--el-text-color-placeholder:var(--el-color-primary);
--el-input-icon-color:var(--el-color-primary);
:deep(.el-select) {
--el-border-color: var(--el-color-primary);
--el-text-color-placeholder: var(--el-color-primary);
--el-input-icon-color: var(--el-color-primary);
}
:deep(.el-select__tags-text) {
color: #000;
font-size: 14px;
}
:deep(.el-select__tags-text){color: #000;font-size: 14px;}
.po-right{position: absolute;right: 0;}
.panel h3.panel-title{
span{font-size: 13px;}
.po-right {
position: absolute;
right: 0;
}
.panel h3.panel-title {
span {
font-size: 13px;
}
}
.father {
position: relative;
height: 60px;
}
.checkbox {
position: absolute;
right: 5%;
text-align: left;
span {
color: #453DEA;
position: relative;
top: -1px;
cursor: pointer
}
}
</style>
......
<template>
<el-dialog
v-model="show" :title="title" width="800px" append-to-body close-icon="CircleClose" center
:close-on-click-modal="false" class="pcloginpop" @close="cancel"
destroy-on-close
v-model="show" :close-on-click-modal="false" :title="title" append-to-body center
class="pcloginpop"
close-icon="CircleClose" destroy-on-close width="800px"
@close="cancel"
>
<!-- wdsf 个人/舞伴/国际赛运动员-->
<div class="pd10"></div>
<el-form ref="dialogRef" :model="form" :label-width="language==0?120:180" inline>
<el-form-item :label="language==0?'WDSF卡号':'WDSF MIN'" v-if="form.id&&form.id!='0'">
<div class="pd10" />
<el-form ref="dialogRef" :label-width="language==0?120:180" :model="form" inline>
<el-form-item v-if="form.id&&form.id!='0'" :label="language==0?'WDSF卡号':'WDSF MIN'">
{{ form.wdsfMin }}
</el-form-item>
<el-form-item :label="language==0?'WDSF卡号':'WDSF MIN'" required v-else>
<el-input type="text" v-model="card" @change="resetCode">
<el-form-item v-else :label="language==0?'WDSF卡号':'WDSF MIN'" required>
<el-input v-model="card" type="text" @change="resetCode">
<template #append>
<el-button type="primary" plain style="width: 110px" @click="checkCard">
<el-icon v-if="isCodeTrue" size="16" color="#67C23A">
<CircleCheckFilled/>
<el-button plain style="width: 110px" type="primary" @click="checkCard">
<el-icon v-if="isCodeTrue" color="#67C23A" size="16">
<CircleCheckFilled />
</el-icon>
<span v-else>{{ language == 0 ? '校验卡号' : 'Check Code' }}</span>
</el-button>
......@@ -23,63 +24,68 @@
</el-input>
<a class="text-primary text-sm mt10" href="https://www.worlddancesport.org/Athlete/List" target="_blank">
<el-icon>
<Link/>
<Link />
</el-icon>
{{ language == 0 ? '去WDSF官网查询我的会员号' : 'Search my WSDF MIN on the WDSF official website' }}
</a>
<Vcode :successText="successVcode" :failText="failVcode" :slider-text="sliderText" :show="showVcode"
:z-index="2999" @success="codeSuccess()"></Vcode>
<Vcode
:fail-text="failVcode" :show="showVcode" :slider-text="sliderText" :success-text="successVcode"
:z-index="2999" @success="codeSuccess()"
/>
</el-form-item>
<div class="h30"></div>
<div class="h30" />
<div class="leftboderTT">{{ language == 0 ? '个人信息' : 'Personal information' }}
<span v-if="language==0">(登录时需要验证,保护账户信息)</span>
<span v-else>(Obtain automatically according to the WDSF number)</span>
</div>
<div class="h20"></div>
<div class="h20" />
<el-form-item :label="language==0?'名':'Name'">
<el-input v-model="form.ming" disabled/>
<el-input v-model="form.ming" disabled />
</el-form-item>
<el-form-item :label="language==0?'姓氏':'Surname'">
<el-input v-model="form.xing" disabled/>
<el-input v-model="form.xing" disabled />
</el-form-item>
<el-form-item :label="language==0?'代表':'Representing'">
<el-input v-model="form.representing" disabled/>
<el-input v-model="form.representing" disabled />
</el-form-item>
<el-form-item :label="language==1?'Age group':'年龄组'">
<el-input v-model="form.ageGroup" disabled/>
<el-input v-model="form.ageGroup" disabled />
</el-form-item>
<el-form-item :label="language==0?'舞种':'Division'">
<el-input v-model="form.division" disabled/>
<el-input v-model="form.division" disabled />
</el-form-item>
<el-form-item :label="language==0?'状态':'Status'">
<el-input v-model="form.wdsfStatus" disabled/>
<el-input v-model="form.wdsfStatus" disabled />
</el-form-item>
<div class="h30"></div>
<div class="h30" />
<div class="leftboderTT">
{{ language == 0 ? '补充信息' : 'ADDITIONAL INFORMATION' }}
</div>
<div class="h20"></div>
<el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'">
<div class="h20" />
<el-form-item :label="language==0?'个人照片':'photo'" prop="picUrl">
<ImageUpload2
v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1"
:is-show-tip="false"
v-model="form.picUrl" :crop-height="280" :crop-width="200" :is-show-tip="false" :limit="1"
class="threeFour"
/>
</el-form-item>
<el-form-item :label="language==0?'有效证件':'Valid Passport'" required>
<image-upload ref="uploadPassportRef" v-model="form.passportUrl" :limit="1" :is-show-tip="false"
:action="'/common/getPersonInfoFromCert/3'"
paramName="pic"
:button-text="language==0?'上传':'Upload'"
@response="ocrSuccess"/>
<image-upload
ref="uploadPassportRef" v-model="form.passportUrl" :action="'/common/getPersonInfoFromCert/3'"
:button-text="language==0?'上传':'Upload'"
:is-show-tip="false"
:limit="1"
param-name="pic"
@response="ocrSuccess"
/>
<div class="tip">
<span v-if="language==0">请上传有效身份证件扫描件,用于核实身份信息、申请签证邀请函及购买保险等 </span>
<span v-else>
Please upload a scanned copy of your valid passport for verification of identity information,
application of visa invitation letter and purchasing insurance etc.</span>
</div>
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" required>
<el-radio-group v-model="form.sex">
......@@ -87,23 +93,23 @@
<el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Date of Birth'" required>
<el-date-picker
v-model="form.birth"
style="width: 100%;" :disabled-date="disabledBirth"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-model="form.birth"
:disabled-date="disabledBirth" format="YYYY-MM-DD"
style="width: 100%;" type="date" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'证件号':'Passport number'" required>
<el-input v-model="form.passportNumber"/>
<el-input v-model="form.passportNumber" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm">
<el-button class="btn-lineG w200px" round type="primary" @click="submitForm">
{{ language == 0 ? '确定' : 'Save' }}
</el-button>
</div>
......@@ -112,14 +118,14 @@
</template>
<script setup>
import {reactive, ref, toRefs, watch} from 'vue'
import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core'
import { reactive, ref, toRefs, watch } from 'vue'
import { getCurrentInstance, nextTick, onMounted } from '@vue/runtime-core'
import * as match from '@/apiPc/match'
import {ElMessage} from 'element-plus'
import { ElMessage } from 'element-plus'
import _ from 'lodash'
import Vcode from "vue3-puzzle-vcode"
import {checkWdsf, checkWdsfAthletes} from "@/apiPc/match";
import {useStorage} from "@vueuse/core/index";
import Vcode from 'vue3-puzzle-vcode'
import { checkWdsf, checkWdsfAthletes } from '@/apiPc/match'
import { useStorage } from '@vueuse/core/index'
import ImageUpload from '@/components/ImageUpload/index.vue'
import ImageUpload2 from '@/components/ImageUpload/index2.vue'
......@@ -138,7 +144,7 @@ const certificates = ref([
label: language.value == 0 ? '其他' : 'Other'
}
])
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const emit = defineEmits(['submitForm'])
const data = reactive({
form: {
......@@ -149,13 +155,13 @@ const data = reactive({
show: false,
showVcode: false,
labels: [
{value: '0', label: '运动员', enlabel: 'Sportsman'},
{value: '1', label: '教练', enlabel: 'Coach'},
{value: '2', label: '领队', enlabel: 'Head of team'},
{value: '4', label: '队医', enlabel: 'Team Doctor'},
{value: '5', label: '翻译', enlabel: 'Interpreter'},
{value: '6', label: '官员', enlabel: 'Official'},
{value: '3', label: '其他', enlabel: 'Other'}
{ value: '0', label: '运动员', enlabel: 'Sportsman' },
{ value: '1', label: '教练', enlabel: 'Coach' },
{ value: '2', label: '领队', enlabel: 'Head of team' },
{ value: '4', label: '队医', enlabel: 'Team Doctor' },
{ value: '5', label: '翻译', enlabel: 'Interpreter' },
{ value: '6', label: '官员', enlabel: 'Official' },
{ value: '3', label: '其他', enlabel: 'Other' }
],
title: '添加选手信息',
isMe: false,
......@@ -167,7 +173,7 @@ const data = reactive({
})
const {
form, show, showVcode, title, labels, uType, isMe, isCodeTrue, card, cptId,
failVcode, successVcode, sliderText,uploadPassportRef
failVcode, successVcode, sliderText, uploadPassportRef
} = toRefs(data)
let editgay = false
......@@ -189,13 +195,13 @@ const open = (params) => {
sliderText.value = 'Drag the slider to complete the puzzle'
}
if (isMe.value) {
//个人
// 个人
getMyInfo()
} else {
if (params.id == 0) {
//新增
// 新增
editgay = false
} else {// 编辑舞伴
} else { // 编辑舞伴
editgay = true
if (params.form) {
form.value = params.form
......@@ -205,7 +211,7 @@ const open = (params) => {
}
}
}
defineExpose({open})
defineExpose({ open })
function getMyInfo() {
match.getMyPersonInfo().then(res => {
......@@ -234,22 +240,22 @@ watch(show, (value) => {
const ocrSuccess = (res) => {
// form.value.passportUrl = res.data.url
console.log(form.value.passportUrl)
if(res.code==200){
if (res.code == 200) {
form.value.passportUrl = res.data.url
form.value.passportNumber = res.data.code
form.value.birth = res.data.birth?.slice(0, 10)
form.value.sex = res.data.sex
} else if(res.code==500){
} else if (res.code == 500) {
ElMessage.warning(res.msg)
}
}
function submitForm() {
if(!form.value.wdsfMin&&!card.value){
if (!form.value.wdsfMin && !card.value) {
ElMessage.warning(language.value == 0 ? '请输入你的WDSF会员号' : 'Please fill in your WDSF MIN')
return
}
if(card.value&&!isCodeTrue.value){
if (card.value && !isCodeTrue.value) {
ElMessage.warning(language.value == 0 ? '请验证你的WDSF会员号' : 'Please verify your WDSF MIN')
return
}
......@@ -331,7 +337,6 @@ function addGroupMember() {
show.value = false
emit('submitForm')
})
}
function cancel() {
......@@ -359,16 +364,16 @@ function checkCard() {
}
function codeSuccess(msg) {
console.log('验证通过' + msg);
console.log('验证通过' + msg)
showVcode.value = false
isCodeTrue.value = true
checkWdsfAthletes({card: card.value, groupId: groupId}).then(res => {
checkWdsfAthletes({ card: card.value, groupId: groupId }).then(res => {
if (res.data.wdsfFlag == -1) {
ElMessage.warning(language.value == 0 ? '您添加的运动员代表国家/地区,与团体账号注册的国家/地区不符,无法添加' : 'The athlete \'s representing, does not match the group account‘s country/region and cannot be added.')
isCodeTrue.value = false
return
}
form.value = res.data
form.value.xing = form.value.surname
form.value.ming = form.value.name
......@@ -404,7 +409,7 @@ function disabledBirth(time) {
color: var(--el-color-primary);
font-size: 16px;
font-weight: 600;
span {
color: #929AA0;
font-size: 14px;
......@@ -413,12 +418,12 @@ function disabledBirth(time) {
.threeFour {
width: 100%;
.el-upload--picture-card {
width: 120px;
height: 160px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 120px;
height: 160px;
......@@ -427,9 +432,10 @@ function disabledBirth(time) {
.tip {
font-size: 13px;
color: #999; line-height: 1.6;
color: #999;
line-height: 1.6;
margin: 10px 0;
i {
color: red;
margin: 0 4px 0 0;
......@@ -441,7 +447,7 @@ function disabledBirth(time) {
width: 320px;
height: 200px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 320px;
height: 200px;
......@@ -460,7 +466,7 @@ function disabledBirth(time) {
width: 140px;
height: 200px;
}
}
.el-form--inline .el-form-item {
......@@ -473,7 +479,7 @@ function disabledBirth(time) {
background: linear-gradient(#ed2c22, #fe6d45);
margin-right: 0;
height: 52px;
span {
color: #fff;
}
......
<template>
<el-dialog
v-model="show" :close-on-click-modal="false" :title="language==0?'赛事购买协会':'Event Insurance Procurement Agreement'" append-to-body center
class="pcloginpop"
close-icon="CircleClose" destroy-on-close
width="1100px"
>
<div v-html="data" />
<template #footer>
<div class="dialog-footer text-center">
<el-button class="btn-lineG w200px" round type="primary" @click="submitForm">{{
language == 0 ? '确定' : 'Save'
}}
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { getCurrentInstance, ref } from '@vue/runtime-core'
import { useStorage } from '@vueuse/core/index'
const language = useStorage('language', 0)
const { proxy } = getCurrentInstance()
const emit = defineEmits(['submitForm'])
const show = ref(false)
const data = ref()
const open = (row) => {
show.value = true
data.value = row
}
function submitForm() {
show.value = false
}
defineExpose({ open })
</script>
<style lang="scss">
.threeFour {
width: 100%;
.el-upload--picture-card {
width: 120px;
height: 160px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 120px;
height: 160px;
}
}
.tip {
font-size: 13px;
color: #999;
margin: 10px 0;
i {
color: red;
margin: 0 4px 0 0;
}
}
.shenfen {
.el-upload--picture-card {
width: 320px;
height: 200px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 320px;
height: 200px;
}
}
.touxiang {
:deep(.el-upload--picture-card ) {
width: 140px;
height: 200px;
}
}
.touxiang {
:deep(.el-upload-list__item ) {
width: 140px;
height: 200px;
}
}
.el-form--inline .el-form-item {
width: 100%
}
.boxDialog {
.el-dialog__header {
background: linear-gradient(#ed2c22, #fe6d45);
margin-right: 0;
height: 52px;
span {
color: #fff;
}
}
}
</style>
<template>
<div class="mt20">
<!-- {{isNational}}-->
<!-- {{isNational}}-->
</div>
<el-table :data="list" :sum-text="sumText" border style="width: 100%" v-loading="loading">
<el-table-column :label="language==0?'序号':'Index'" type="index" width="70" align="center"/>
<el-table-column v-if="!isNational" :label="language==0?'姓名':'Real Name'" prop="personInfo.realName" align="center" min-width="100"/>
<el-table-column v-if="isNational" :label="language==0?'姓氏':'Surname'" prop="personInfo.xing" min-width="100"/>
<el-table-column v-if="isNational" :label="language==0?'名':'Name'" prop="personInfo.ming" min-width="100"/>
<el-table-column :label="language==0?'所属国家/地区':'Country'" min-width="120" header-align="center" align="center">
<!-- 参赛人员清单-->
<el-table v-loading="loading" :data="list" :sum-text="sumText" border style="width: 100%">
<el-table-column :label="language==0?'序号':'Index'" align="center" type="index" width="70" />
<el-table-column
v-if="!isNational" :label="language==0?'姓名':'Real Name'" align="center"
min-width="100" prop="personInfo.realName"
/>
<el-table-column v-if="isNational" :label="language==0?'姓氏':'Surname'" min-width="100" prop="personInfo.xing" />
<el-table-column v-if="isNational" :label="language==0?'名':'Name'" min-width="100" prop="personInfo.ming" />
<el-table-column
:label="language==0?'所属国家/地区':'Country'" align="center" header-align="center"
min-width="120"
>
<template #default="scope">
<span v-if="scope.row.personInfo.countryName">{{scope.row.personInfo.countryName}}</span>
<span v-if="scope.row.personInfo.representing">{{scope.row.personInfo.representing}}</span>
<span v-if="scope.row.personInfo.countryName">{{ scope.row.personInfo.countryName }}</span>
<span v-if="scope.row.personInfo.representing">{{ scope.row.personInfo.representing }}</span>
</template>
</el-table-column>
<el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr" align="center"/>
<el-table-column v-if="!isNational" :label="language==0?'证件类型':'ID Type'" align="center" :width="language==0?'':'140'" prop="personInfo.idcTypeStr" header-align="center"/>
<el-table-column v-if="!isNational" :label="language==0?'证件号码':'ID NO.'" prop="personInfo.idcCode" width="200" header-align="center"/>
<el-table-column v-if="isNational" :label="language==0?'WDSF 会员号':'WDSF MIN'" prop="personInfo.wdsfMin" width="200" header-align="center"/>
<el-table-column v-if="!isNational" :label="language==0?'出生日期':'Date of Birth'" align="center" prop="personInfo.birth" width="130" header-align="center"/>
<el-table-column v-if="isNational" :label="language==0?'年龄组':'Age group'" prop="personInfo.ageGroup" width="110" header-align="center">
</el-table-column>
<el-table-column v-if="isNational" :label="language==0?'舞种':'Division'" prop="personInfo.division" width="110" header-align="center"/>
<!-- <el-table-column :label="language==0?'会员角色':'Role'" width="150">-->
<!-- <template #default="scope">-->
<!-- <div class="esp">-->
<!-- <span v-for="item in scope.row.personInfo.label?.split(',')" :key="item.id" class="text-primary">-->
<!-- <span v-if="item==='0'" class="ml5">{{ language == 0 ? '运动员' : 'athletes' }}</span>-->
<!-- <span v-if="item==='1'" class="ml5">{{ language == 0 ? '教练' : 'coach' }}</span>-->
<!-- <span v-if="item==='2'" class="ml5">{{ language == 0 ? '领队' : 'head of team' }}</span>-->
<!-- <span v-if="item==='4'" class="ml5">{{ language == 0 ? '队医' : 'Team doctor' }}</span>-->
<!-- <span v-if="item==='5'" class="ml5">{{ language == 0 ? '翻译' : 'Interpreter' }}</span>-->
<!-- <span v-if="item==='6'" class="ml5">{{ language == 0 ? '官员' : 'official' }}</span>-->
<!-- <span v-if="item==='3'" class="ml5">{{ language == 0 ? '其他' : 'other' }}</span>-->
<!-- </span>-->
<!-- </div>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="personInfo.address" min-width="140"/>-->
<el-table-column :label="language==0?'报项':'REGISTERED COMPETITION'" min-width="300" header-align="center" :fixed="hasAction?false:'right'">
<el-table-column :label="language==0?'性别':'Gender'" align="center" prop="personInfo.sexStr" />
<el-table-column
v-if="!isNational" :label="language==0?'证件类型':'ID Type'" :width="language==0?'':'140'"
align="center" header-align="center" prop="personInfo.idcTypeStr"
/>
<el-table-column
v-if="!isNational" :label="language==0?'证件号码':'ID NO.'" header-align="center" prop="personInfo.idcCode"
width="200"
/>
<el-table-column
v-if="isNational" :label="language==0?'WDSF 会员号':'WDSF MIN'" header-align="center"
prop="personInfo.wdsfMin" width="200"
/>
<el-table-column
v-if="!isNational" :label="language==0?'出生日期':'Date of Birth'" align="center"
header-align="center" prop="personInfo.birth" width="130"
/>
<el-table-column
v-if="isNational" :label="language==0?'年龄组':'Age group'" header-align="center" prop="personInfo.ageGroup"
width="110"
/>
<el-table-column
v-if="isNational" :label="language==0?'舞种':'Division'" header-align="center" prop="personInfo.division"
width="110"
/>
<!-- <el-table-column :label="language==0?'会员角色':'Role'" width="150">-->
<!-- <template #default="scope">-->
<!-- <div class="esp">-->
<!-- <span v-for="item in scope.row.personInfo.label?.split(',')" :key="item.id" class="text-primary">-->
<!-- <span v-if="item==='0'" class="ml5">{{ language == 0 ? '运动员' : 'athletes' }}</span>-->
<!-- <span v-if="item==='1'" class="ml5">{{ language == 0 ? '教练' : 'coach' }}</span>-->
<!-- <span v-if="item==='2'" class="ml5">{{ language == 0 ? '领队' : 'head of team' }}</span>-->
<!-- <span v-if="item==='4'" class="ml5">{{ language == 0 ? '队医' : 'Team doctor' }}</span>-->
<!-- <span v-if="item==='5'" class="ml5">{{ language == 0 ? '翻译' : 'Interpreter' }}</span>-->
<!-- <span v-if="item==='6'" class="ml5">{{ language == 0 ? '官员' : 'official' }}</span>-->
<!-- <span v-if="item==='3'" class="ml5">{{ language == 0 ? '其他' : 'other' }}</span>-->
<!-- </span>-->
<!-- </div>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="personInfo.address" min-width="140"/>-->
<el-table-column
:fixed="hasAction?false:'right'" :label="language==0?'报项':'REGISTERED COMPETITION'" header-align="center"
min-width="300"
>
<template #default="props">
<ol>
<li v-for="s in props.row.signInfo">
<li v-for="s in props.row.signInfo" :key="s">
{{ s.cptProjectName }}
{{ s.cptGroupName }}{{ s.cptLevelName }}
<span v-show="s.cptSonLevelName">[{{ s.cptSonLevelName }}]</span>
......@@ -52,47 +79,60 @@
</ol>
</template>
</el-table-column>
<el-table-column :fixed="hasAction?false:'right'" min-width="100" align="center" :label="language==0?'保险费':'Premium'" prop="insuranceFee">
<el-table-column
v-if="showSummary"
:fixed="hasAction?false:'right'" :label="language==0?'保险费':'Premium'" align="center"
min-width="100" prop="insuranceFee"
>
<template #default="scope">
<span class="text-primary">{{ language==0?'¥':'€' }}{{ scope.row.insuranceFee }}</span>
<span class="text-primary">{{ language == 0 ? '¥' : '€' }}{{ scope.row.insuranceFee }}</span>
</template>
</el-table-column>
<!-- 补充信息-->
<el-table-column v-for="(e,index) in extraTableHead" :key="index" :label="e" min-width="110" align="center">
<el-table-column v-for="(e,index) in extraTableHead" :key="index" :label="e" align="center" min-width="110">
<template #default="scope">
<el-link v-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='2'"
target="_blank"
:href="fillImgUrl(scope.row.signInfo[0].extraPersonInfoMapList[index]?.value?.url)">
<el-link
v-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='2'"
:href="fillImgUrl(scope.row.signInfo[0].extraPersonInfoMapList[index]?.value?.url)"
target="_blank"
>
<span class="text-primary">{{ scope.row.signInfo[0].extraPersonInfoMapList[index]?.value?.name }}</span>
</el-link>
<img v-else-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='3'" style="width: 50px;"
:src="fillImgUrl(scope.row.signInfo[0].extraPersonInfoMapList[index]?.value?.url||scope.row.signInfo[0]?.extraPersonInfoMapList[index]?.value)">
<img
v-else-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='3'"
:src="fillImgUrl(scope.row.signInfo[0].extraPersonInfoMapList[index]?.value?.url||scope.row.signInfo[0]?.extraPersonInfoMapList[index]?.value)"
style="width: 50px;"
>
<span v-else>{{ scope.row.signInfo[0].extraPersonInfoMapList[index]?.value }}</span>
</template>
</el-table-column>
<el-table-column v-if="hasAction" :label="language==0?'操作':'Actions'" fixed="right" width="150" align="center">
<el-table-column v-if="hasAction" :label="language==0?'操作':'Actions'" align="center" fixed="right" width="150">
<template #default="scope">
<el-button v-if="extraform&&extraform.length>0" type="primary" link @click="goPersonInfo(scope.row)">
<el-button v-if="extraform&&extraform.length>0" link type="primary" @click="goPersonInfo(scope.row)">
<span v-if="scope.row.extraPersonInfo">{{ language == 0 ? '修改' : 'Edit' }}</span>
<span v-else class="red">{{ language == 0?'完善补充信息':'Additional Information' }}</span>
<span v-else class="red">{{ language == 0 ? '完善补充信息' : 'Additional Information' }}</span>
</el-button>
</template>
</el-table-column>
</el-table>
<div v-if="showSummary" class="rowSummary">
<div class="rowSummary">
<div>
{{ language==0?'总人数':'Count' }}: <span class="mr20">{{ list.length }}</span>
{{ language==0?'金额小计':'Amount' }}: <span>{{ language==0?'¥':'€' }}{{ total }}</span>
<div style="display: inline-block">
{{ language == 0 ? '总人数' : 'Count' }}: <span class="mr20">{{ list.length }}</span>
</div>
<div v-if="showSummary" style="display: inline-block">
{{ language == 0 ? '金额小计' : 'Amount' }}: <span>{{ language == 0 ? '¥' : '€' }}{{ total }}</span>
</div>
</div>
</div>
</template>
<script setup>
import * as match from "@/apiPc/match";
import {onMounted} from "@vue/runtime-core";
import {watch} from "vue";
import * as match from '@/apiPc/match'
import { ref } from 'vue'
const emit = defineEmits(['editExtra'])
const props = defineProps({
......@@ -113,19 +153,20 @@ const props = defineProps({
required: false,
default: true
},
showSummary:{
showSummary: {
type: Boolean,
required: false,
default: false
},
total:{
total: {
type: Number,
required: false,
default: '0'
default: 0
}
})
import {useStorage} from "@vueuse/core/index";
const language= useStorage('language',0)
import { useStorage } from '@vueuse/core/index'
const language = useStorage('language', 0)
const extraTableHead = ref([])
const loading = ref(true)
const isNational = ref(false)
......@@ -135,17 +176,19 @@ getMatch()
const goPersonInfo = (row) => {
emit('editExtra', row)
}
function getTableHead() {
match.getCptExtraInfo(props.matchId).then(res => {
extraTableHead.value = res.data
loading.value = false
})
}
function getMatch() {
match.getMatchById({ id: props.matchId }).then(res => {
if(res.data.languageSource == '100'){
if (res.data.languageSource == '100') {
isNational.value = false
}else {
} else {
isNational.value = true
}
})
......@@ -155,18 +198,27 @@ function totalMethod() {
}
</script>
<style scoped lang="scss">
.rowSummary{text-align: right;padding: 0 20px;
height: 40px;line-height: 40px;
background: #FAFBFD;font-size: 16px;
<style lang="scss" scoped>
.rowSummary {
text-align: right;
padding: 0 20px;
height: 40px;
line-height: 40px;
background: #FAFBFD;
font-size: 16px;
color: #95A1A6;
border: 1px solid #EEEFF0;
span{font-size: 18px;font-family: DIN Alternate;
color: #000;}
span {
font-size: 18px;
font-family: DIN Alternate;
color: #000;
}
}
:deep(.el-table){
th.cell{
:deep(.el-table) {
th.cell {
text-transform: uppercase;
}
}
}
</style>
......
......@@ -5,23 +5,23 @@
<div slot="header">
<div class="bg-lineg">{{ language == 0 ? '报名缴费清单' : 'Registration Payment List' }}</div>
</div>
<match-info-row v-if="matchId" :match-id="matchId"/>
<match-info-row v-if="matchId" :match-id="matchId" />
<div v-if="isLogin">
<group-info-row v-if="groupId" :group-id="groupId" :match-id="matchId"/>
<coach-info-row v-if="groupId" :group-id="groupId" :match-id="matchId"/>
<group-info-row v-if="groupId" :group-id="groupId" :match-id="matchId" />
<coach-info-row v-if="groupId" :group-id="groupId" :match-id="matchId" />
<div v-if="user.utype=='1'&&myMemberTable.length>0" class="pd20">
<div class="leftboderTT">{{ language == 0 ? '随行人员清单' : 'List of accompanying personnel' }}
</div>
<div>
<el-table :data="myMemberTable" border class="mt20">
<el-table-column :label="language=='0'?'序号':'Index'" align="center" type="index" width="70"/>
<el-table-column :label="language=='1'?'Surname':'姓氏'" min-width="100" prop="xing"/>
<el-table-column :label="language=='0'?'名':'Name'" min-width="100" prop="ming"/>
<el-table-column :label="language==0?'国家/地区':'Nationality'" min-width="100" prop="countryName"/>
<el-table-column :label="language=='0'?'序号':'Index'" align="center" type="index" width="70" />
<el-table-column :label="language=='1'?'Surname':'姓氏'" min-width="100" prop="xing" />
<el-table-column :label="language=='0'?'名':'Name'" min-width="100" prop="ming" />
<el-table-column :label="language==0?'国家/地区':'Nationality'" min-width="100" prop="countryName" />
<!-- <el-table-column :label="language=='1'?'Passport number':'护照号'" prop="idcCode" min-width="120"/>-->
<!-- <el-table-column :label="language=='1'?'Birthday':'生日'" prop="birth"/>-->
<el-table-column :label="language=='1'?'Gender':'性别'" prop="sexStr"/>
<el-table-column :label="language=='1'?'Gender':'性别'" prop="sexStr" />
<el-table-column :label="language=='1'?'Role':'角色'" min-width="160">
<template #default="scope">
<div class="roletd">
......@@ -43,42 +43,50 @@
<div v-if="signInfoList?.length>0||zuQuery.athName" class="pd20">
<div class="leftboderTT">{{ language == 0 ? '参赛人员保险费' : 'Participant Insurance Fee' }}
<div class="fr">
<el-input v-model="zuQuery.athName" :prefix-icon="Search" clearable
size="small" @change="getSignList"/>
<el-input
v-model="zuQuery.athName" :prefix-icon="Search" clearable
size="small" @change="getSignList"
/>
</div>
</div>
<!-- 人员列表-->
<sign-info-table v-if="matchId" :hasAction="false" :list="signInfoList" :match-id="matchId"
:show-summary="true" :total="insuranceFeeTotal" class="mt20"/>
<sign-info-table
v-if="matchId" :has-action="false" :list="signInfoList" :match-id="matchId"
:show-summary="true" :total="insuranceFeeTotal" class="mt20"
/>
</div>
<div v-if="zuTableList?.length>0||zuQuery.groName" class="pd20">
<div class="leftboderTT">{{ language == 0 ? '参赛设项服务费' : 'Registration Fee for Event Entry' }}
<div class="fr">
<el-input v-model="zuQuery.groName" :prefix-icon="Search" clearable
size="small" @change="getSignList"/>
<el-input
v-model="zuQuery.groName" :prefix-icon="Search" clearable
size="small" @change="getSignList"
/>
</div>
</div>
<zu-table :hasAction="false" :list="zuTableList" :show-summary="true" :total="serviceFeeTotal"
class="mt20"/>
<zu-table
:has-action="false" :list="zuTableList" :show-summary="true" :total="serviceFeeTotal"
class="mt20"
/>
</div>
<el-row class="priceBar">
<el-col :lg="12" :xs="24" class="pl-15">
<el-link class="mr10" type="primary" @click="exportSignList(1)">
<el-icon>
<Upload/>
<Upload />
</el-icon>
{{ language == 0 ? '导出参赛人员清单' : 'Export Participant List' }}
</el-link>
<el-link class="mr10" type="primary" @click="exportSignList(2)">
<el-icon>
<Upload/>
<Upload />
</el-icon>
{{ language == 0 ? '导出设项报名清单' : 'Export LIST OF REGISTERED COMPETITIONS' }}
</el-link>
<el-link type="primary" @click="exportPdf">
<el-icon>
<Upload/>
<Upload />
</el-icon>
{{ language == 0 ? '导出pdf' : 'Export PDF' }}
</el-link>
......@@ -86,26 +94,29 @@
<el-col :lg="12" :xs="24">
<div v-if="Number(form.totalFee)>0" class="flex">
<div v-if="signInfoList?.length>0" class="item"><label>{{
language == 0 ? '参赛服务费' : 'REGISTRATION FEE'
}}:</label><span>{{ language == 0 ? '¥' : '€' }}{{ serviceFeeTotal }}</span></div>
language == 0 ? '参赛服务费' : 'REGISTRATION FEE'
}}:</label><span>{{ language == 0 ? '¥' : '€' }}{{ serviceFeeTotal }}</span></div>
<div v-if="zuTableList?.length>0" class="item"><label>{{
language == 0 ? '保险费' : 'INSURANCE'
}}:</label><span>{{ language == 0 ? '¥' : '€' }}{{ insuranceFeeTotal }}</span></div>
language == 0 ? '保险费' : 'INSURANCE'
}}:</label><span>{{ language == 0 ? '¥' : '€' }}{{ insuranceFeeTotal }}</span></div>
<div class="item"><label>{{ language == 0 ? '费用总计' : 'Total Cost' }}:</label><span
class="size26">{{ language == 0 ? '¥' : '€' }}{{ form.totalFee }}</span></div>
class="size26"
>{{ language == 0 ? '¥' : '€' }}{{ form.totalFee }}</span></div>
</div>
</el-col>
</el-row>
</div>
<div v-else class="pd20 skeletonBox">
<el-skeleton :rows="8"/>
<el-button :style="language == 0 ?'width:200px':'width:400px'" class="btn-lineG" round size="large"
type="primary" @click="showLogin">
<el-skeleton :rows="8" />
<el-button
:style="language == 0 ?'width:200px':'width:400px'" class="btn-lineG" round size="large"
type="primary" @click="showLogin"
>
{{ language == 0 ? '登录后查看详细报项信息' : 'View detailed report information after logging in' }}
</el-button>
</div>
</el-card>
<el-card class="mt20 mb20">
<el-row class="result">
<el-col :lg="12">
......@@ -133,16 +144,20 @@
</el-col>
<el-col v-if="Number(form.totalFee)>0" :lg="12">
<div v-if="form.payStatus=='0'" class="priceb">{{ language == 0 ? '待支付金额' : 'Amount Due' }}:<span
class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
class="price"
>{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div v-else-if="form.payStatus=='1'" class="priceb">{{
language == 0 ? '线下支付待核销' : 'Amount Due'
}}:<span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
language == 0 ? '线下支付待核销' : 'Amount Due'
}}:<span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div v-else-if="form.payStatus=='3'" class="priceb">{{ language == 0 ? '已支付金额' : 'Amount Due' }}:<span
class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
class="price"
>{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div v-else-if="form.payStatus=='5'" class="priceb">{{ language == 0 ? '已退款' : 'Refunded' }}:<span
class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
class="price"
>{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div v-else class="priceb">{{ language == 0 ? '费用总计' : 'Amount Due' }}:<span
class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
class="price"
>{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
</el-col>
</el-row>
</el-card>
......@@ -156,86 +171,110 @@
<!-- </el-radio>-->
<el-radio v-if="form.payTypeArr.indexOf('2')>-1" border label="2">
<!-- 微信-->
<svg class="icon" height="40" p-id="24747" t="1709002960407"
version="1.1" viewBox="0 0 3152 1024" width="94" xmlns="http://www.w3.org/2000/svg">
<svg
class="icon" height="40" p-id="24747" t="1709002960407"
version="1.1" viewBox="0 0 3152 1024" width="94" xmlns="http://www.w3.org/2000/svg"
>
<path
d="M381.998922 630.960647c-4.416173 2.208086-8.832345 3.312129-14.352561 3.312129-12.144474 0-22.080863-7.17628-28.1531-17.66469l-2.208086-4.968194-87.771428-204.247978c-1.104043-2.208086-1.104043-4.416173-1.104043-6.624259 0-9.384367 6.624259-16.560647 15.456603-16.560647 3.312129 0 6.624259 1.104043 9.936388 3.312129l103.780054 78.387062c7.728302 4.968194 16.560647 8.280323 26.497035 8.280324 5.520216 0 11.040431-1.104043 16.560647-3.312129l486.330998-230.192992C819.752022 131.381132 676.226415 60.17035 513.380054 60.17035 248.409704 59.618329 32.017251 250.61779 32.017251 486.883019c0 128.069003 64.586523 244.545553 166.15849 322.932614 7.728302 6.072237 13.248518 16.560647 13.248518 27.601079 0 3.312129-1.104043 7.17628-2.208086 10.488409-7.728302 32.017251-20.976819 84.459299-20.97682 86.667386-1.104043 3.312129-2.208086 8.280323-2.208086 13.248517 0 9.384367 6.624259 16.560647 15.456604 16.560647 3.312129 0 6.624259-1.104043 8.832345-3.312129l104.884097-65.138545c7.728302-4.968194 16.560647-8.280323 25.392992-8.280323 4.416173 0 9.936388 1.104043 14.35256 2.208086 49.129919 15.456604 102.676011 23.736927 157.326146 23.736927 265.522372 0 481.362803-191.551482 481.362803-427.816711 0-71.210782-19.872776-139.109434-54.650135-198.175741L385.863073 628.752561l-3.864151 2.208086z"
fill="#09BB07" p-id="24748"></path>
fill="#09BB07" p-id="24748"
/>
<path
d="M1398.822642 381.998922c-9.384367 19.320755-20.424798 38.641509-32.017251 57.962264v263.866307h-31.465229V485.226954c-13.248518 18.216712-27.049057 34.225337-40.297574 48.025876-3.864151-7.17628-14.352561-23.736927-20.424798-30.361186 34.777358-33.673315 71.210782-82.803235 93.843666-131.933153l30.361186 11.040431z m-8.280324-91.63558c-22.632884 36.985445-59.066307 78.939084-91.635579 105.98814-4.416173-7.17628-13.248518-19.320755-19.320755-25.945013 29.809164-23.736927 62.378437-61.274394 78.939083-92.187601l32.017251 12.144474z m181.615094 289.811321c1.656065 7.728302 6.072237 19.320755 8.832345 24.84097-55.754178 37.537466-66.242588 46.369811-72.866846 54.650135-1.656065-7.728302-8.280323-22.080863-12.696496-28.705121 4.968194-3.312129 12.696496-10.48841 12.696496-28.705121v-54.098114h-60.17035v27.049057c0 38.641509-7.728302 91.083558-42.505661 128.069003-4.416173-7.17628-16.560647-19.320755-22.632884-23.184906 29.809164-31.465229 34.225337-72.866846 34.225337-105.436119v-54.098113h118.684636v82.251213l36.433423-22.632884z m123.100809-176.094879c-9.384367 73.970889-23.184906 136.349326-48.025876 187.687332 16.560647 36.433423 39.193531 66.242588 67.346631 83.355256-7.17628 6.072237-17.112668 18.216712-22.632884 27.049057-25.945013-18.216712-46.369811-45.265768-62.930459-78.939084-20.424798 32.017251-45.81779 59.066307-78.939083 81.699191-3.864151-6.624259-13.248518-19.872776-19.872776-25.392992 36.985445-22.632884 64.034501-52.99407 83.907277-89.979514-12.696496-34.777358-22.080863-73.418868-28.705121-115.372507-4.968194 11.040431-10.48841 22.632884-16.560647 31.465229-3.864151-4.416173-10.48841-13.248518-17.112668-20.424798v5.520216h-154.014017v-29.809165h154.014017v9.384367c24.84097-49.129919 37.537466-118.684636 44.713746-191.551483l31.465229 4.968195c-3.864151 31.465229-8.280323 61.274394-13.800539 90.531536h96.051752v29.809164h-14.904582z m-142.973585 22.632884h-145.181671v-110.404312h24.84097v82.251213h35.32938V278.770889h26.497035v119.78868h33.673316V316.308356h25.392992v110.404312z m55.202156-22.632884c-1.656065 6.624259-3.312129 12.696496-4.416172 18.768734 6.072237 46.369811 14.904582 91.083558 28.1531 130.277088 16.560647-43.057682 26.497035-91.63558 32.569272-149.045822h-56.3062zM1882.393531 289.259299c-10.48841 31.465229-24.288949 62.378437-39.193531 91.63558v324.036657h-32.017251V437.201078c-13.800539 22.632884-29.257143 42.50566-44.161725 60.170351-3.312129-7.728302-13.248518-24.288949-19.320754-32.017251 41.953639-45.265768 80.043127-114.820485 103.780053-184.927224l30.913208 8.832345z m288.707278 65.690566v29.257143h-294.779515v-29.257143h294.779515z m-267.730459 199.831806h235.713208v147.941779h-30.913208v-16.560647h-174.438814v18.216712h-30.361186v-149.597844z m231.297035-104.332075H1909.994609v-28.1531h224.672776v28.1531zM1909.994609 486.883019h224.672776v28.1531H1909.994609v-28.1531z m23.736927 96.603773V656.90566h174.438814v-73.418868h-174.438814z m81.699192-231.297035c-6.072237-16.560647-20.424798-43.057682-32.017251-61.826415l29.257143-12.144474c13.248518 19.320755 27.601078 44.161725 34.225337 60.722372l-31.465229 13.248517zM2586.221024 468.114286c-26.497035 63.48248-69.002695 111.508356-122.548787 147.941779 50.785984 25.945013 110.956334 43.609704 180.511051 52.442048-7.728302 8.280323-16.560647 23.184906-21.528841 33.673316-75.074933-11.592453-139.661456-32.569272-192.655525-64.034502-57.962264 32.017251-125.308895 52.99407-195.415634 66.794609-3.312129-9.384367-12.696496-25.392992-19.320754-33.121293 66.242588-10.48841 129.173046-28.1531 183.271159-55.202157-44.161725-32.017251-78.939084-72.866846-103.780054-123.65283l10.48841-3.864151h-49.12992v-34.225337h155.670081V383.654987h-176.6469v-34.225337h176.6469V278.770889h35.32938v70.658761h177.750944v34.225337h-177.750944v71.210781H2555.859838l7.176281-1.656064 23.184905 14.904582z m-255.033962 20.976819c23.184906 43.609704 56.858221 80.043127 100.467925 108.748248 44.161725-28.1531 80.043127-63.48248 104.332075-108.748248h-204.8zM2834.630728 292.571429c-13.800539 34.777358-30.361186 69.554717-49.129919 101.571967v308.580054h-34.225337V447.689488c-14.904582 20.976819-31.465229 40.297574-46.921833 56.306199-4.416173-7.728302-14.904582-25.945013-21.528841-34.225337 47.473854-45.265768 91.63558-115.924528 118.132614-188.239353l33.673316 11.040432z m270.490566 123.65283h-58.514286v240.12938c0 25.945013-7.728302 36.985445-24.84097 41.953639-18.216712 5.520216-49.129919 6.072237-99.915903 5.520215-1.656065-8.832345-8.280323-24.84097-13.248518-34.225337 39.193531 1.656065 77.283019 1.656065 88.32345 1.104043 10.48841-1.104043 14.352561-3.864151 14.352561-14.35256V416.224259h-187.687332v-34.225337h187.687332V283.739084h34.777359v97.707816h58.514285v34.777359z m-184.375202 178.854986c-13.800539-28.705121-43.609704-78.939084-67.346631-115.924528l29.809164-13.800539c24.288949 35.881402 55.202156 84.459299 70.106739 112.612399l-32.569272 17.112668z"
fill="#595757" p-id="24749"></path>
fill="#595757" p-id="24749"
/>
</svg>
</el-radio>
<el-radio v-if="form.payTypeArr.indexOf('0')>-1" border label="3">
<!-- 线下-->
<svg class="icon" height="40" p-id="32905" t="1709003441012"
version="1.1" viewBox="0 0 3527 1024" width="90" xmlns="http://www.w3.org/2000/svg">
<svg
class="icon" height="40" p-id="32905" t="1709003441012"
version="1.1" viewBox="0 0 3527 1024" width="90" xmlns="http://www.w3.org/2000/svg"
>
<path
d="M316.703858 1.763556h392.789333c54.840889 0 88.917333 45.966222 76.145778 102.542222l-182.897778 807.452444c-12.885333 56.405333-67.783111 102.4-122.652444 102.4H87.327858c-54.755556 0-88.917333-45.994667-76.145778-102.4L194.136747 104.305778C206.936747 47.729778 261.80608 1.763556 316.703858 1.763556"
fill="#E0002B" p-id="32906"></path>
fill="#E0002B" p-id="32906"
/>
<path
d="M679.569636 1.763556H1120.515413c53.532444 0 29.383111 45.966222 16.782223 102.542222l-178.460445 807.452444c-12.515556 56.405333-8.618667 102.4-62.264889 102.4H455.626524c-53.617778 0-86.812444-45.994667-74.211555-102.4L559.903858 104.305778C572.59008 47.729778 626.037191 1.763556 679.569636 1.763556"
fill="#004380" p-id="32907"></path>
fill="#004380" p-id="32907"
/>
<path
d="M1106.748302 1.763556h388.096c54.243556 0 87.921778 45.966222 75.178667 102.542222l-180.622222 807.452444c-12.771556 56.405333-67.043556 102.4-121.287111 102.4H880.245191c-54.272 0-87.921778-45.994667-75.235555-102.4L985.688747 104.305778C998.31808 47.729778 1052.504747 1.763556 1106.776747 1.763556"
fill="#007A8A" p-id="32908"></path>
fill="#007A8A" p-id="32908"
/>
<path
d="M1135.192747 604.416l-42.410667 173.568h11.434667l-8.874667 35.84h-11.320889l-2.673778 11.064889h-40.391111l2.759111-11.064889h-81.92l8.192-33.166222h8.334223l42.979555-176.241778 8.590222-35.527111h41.130667l-4.323556 17.92s10.979556-9.756444 21.361778-13.084445c10.382222-3.413333 70.001778-4.636444 70.001778-4.636444l-8.817778 35.328h-14.051555z m-72.533334 0l-10.894222 44.373333s12.231111-6.855111 18.858667-9.102222c6.741333-2.218667 16.839111-2.958222 16.839111-2.958222l7.879111-32.312889H1062.687858z m-16.327111 66.304l-11.264 46.193778s12.515556-7.879111 19.143111-10.382222a188.586667 188.586667 0 0 1 17.038223-3.470223l7.964444-32.341333h-32.881778z m-26.168889 107.690667h32.768l9.386667-38.968889H1029.692302l-9.500444 38.968889zM1186.108302 568.888889h40.704l0.398222 19.541333c-0.284444 3.328 1.934222 4.864 6.684445 4.864h8.277333l-7.566222 32.284445h-21.987556c-19.000889 1.763556-26.225778-8.789333-25.742222-20.650667L1186.108302 568.888889z"
fill="#FEFEFE" p-id="32909"></path>
fill="#FEFEFE" p-id="32909"
/>
<path
d="M1174.844302 721.635556h-46.08l7.907556-31.516445h52.650666l7.480889-28.814222h-51.968L1153.71008 625.777778h144.583111l-8.988444 35.555555H1240.75008l-7.566222 28.785778h48.64l-8.106667 31.516445h-52.508444l-9.386667 13.255111h21.333333l5.233778 39.708444c0.568889 3.953778 0.568889 6.542222 1.678222 8.248889 1.080889 1.393778 7.480889 2.133333 11.207111 2.133333h6.456889l-9.841777 38.599111h-16.440889c-2.503111 0-6.286222-0.199111-11.52-0.455111-4.892444-0.540444-8.362667-3.982222-11.690667-5.973333a18.403556 18.403556 0 0 1-8.590222-13.425778l-5.12-39.623111-23.950222 38.997333c-7.566222 12.373333-17.834667 21.788444-35.185778 21.788445h-33.422222l8.760888-34.503111h12.8c3.697778 0 6.912-1.706667 9.329778-3.214222a15.189333 15.189333 0 0 0 7.082667-7.025778l34.872889-58.510222zM677.635413 625.777778H793.603413l-8.590222 36.380444h-46.336l-7.224889 31.061334h47.416889l-8.675555 37.546666h-47.36l-11.52 50.517334c-1.393778 5.546667 11.264 6.257778 15.843555 6.257777l23.665778-4.266666L741.29408 824.888889h-53.418667c-4.323556 0-7.509333-0.824889-12.145777-2.190222-4.494222-1.507556-6.485333-4.152889-8.476445-8.135111-1.934222-4.124444-4.977778-7.480889-2.901333-16.327112l15.36-66.816h-26.339556l8.760889-38.200888h26.396445l7.025777-31.061334h-26.311111L677.635413 625.777778zM770.648747 583.822222h50.972444l-9.244444 27.363556h-69.632l-7.537778 5.745778c-3.242667 2.787556-4.352 1.649778-8.590222 3.640888a55.779556 55.779556 0 0 1-22.897778 5.205334h-22.300445l8.988445-26.282667h6.712889c5.632 0 9.528889-0.455111 11.491555-1.536 2.218667-1.28 4.721778-4.039111 7.452445-8.533333l12.885333-20.536889h50.602667l-8.903111 14.933333zM837.606969 569.088h48.355555l-7.082666 24.120889s15.303111-12.117333 25.998222-16.469333c10.638222-3.868444 34.730667-7.395556 34.730667-7.395556L1017.887858 568.888889l-26.652445 87.950222c-4.522667 15.018667-9.756444 24.746667-13.027555 29.212445a33.792 33.792 0 0 1-13.198222 12.032 49.806222 49.806222 0 0 1-18.119112 6.058666c-5.176889 0.369778-13.084444 0.483556-24.092444 0.654222H847.363413l-21.191111 69.461334c-2.019556 6.940444-2.986667 10.24-1.649778 12.117333a8.732444 8.732444 0 0 0 7.168 3.470222l33.28-3.100444L853.564302 824.888889h-37.148444c-11.861333 0-20.48-0.284444-26.510222-0.739556-5.745778-0.483556-11.719111 0-15.786667-3.015111-3.413333-3.043556-8.704-7.054222-8.590222-11.093333 0.369778-3.754667 1.991111-10.040889 4.380444-18.659556l67.697778-222.293333z m102.684444 88.746667H861.016747l-4.892445 15.815111h68.608c8.078222-0.938667 9.756444 0.199111 10.467556-0.170667l5.034666-15.644444z m-74.951111-14.279111s15.502222-14.023111 42.040889-18.545778c6.030222-1.137778 43.662222-0.739556 43.662222-0.739556l5.745778-18.830222H876.945636l-11.576889 38.115556z"
fill="#FEFEFE" p-id="32910"></path>
fill="#FEFEFE" p-id="32910"
/>
<path
d="M961.795413 711.111111l-4.494222 21.219556c-1.877333 6.656-3.555556 11.576889-8.561778 15.872-5.290667 4.465778-11.491556 9.159111-25.969777 9.159111l-26.823112 1.137778-0.199111 23.950222c-0.284444 6.741333 1.536 6.087111 2.588445 7.168 1.251556 1.223111 2.360889 1.678222 3.498666 2.161778l8.533334-0.483556 25.571555-1.422222L925.301191 824.888889h-29.383111c-20.536889 0-35.811556-0.483556-40.760889-4.408889-4.949333-3.128889-5.603556-7.025778-5.518222-13.767111l1.877333-93.496889h46.876445l-0.654223 19.114667h11.264c3.868444 0 6.485333-0.369778 8.078223-1.422223a8.448 8.448 0 0 0 3.128889-4.835555l4.721777-14.961778h36.835556zM368.529636 256c-1.564444 7.509333-30.976 142.933333-31.061334 143.075556-6.314667 27.392-10.922667 46.933333-26.567111 59.534222a47.388444 47.388444 0 0 1-31.288889 10.894222c-19.285333 0-30.549333-9.585778-32.426666-27.761778l-0.398223-6.257778s5.888-36.693333 5.888-36.892444c0 0 30.862222-123.448889 36.408889-139.776 0.284444-0.910222 0.341333-1.422222 0.426667-1.848889-60.046222 0.540444-70.712889 0-71.424-0.967111-0.398222 1.336889-1.905778 8.988444-1.905778 8.988444l-31.516444 139.093334-2.673778 11.832889-5.262222 38.599111c0 11.434667 2.275556 20.764444 6.741333 28.672C197.834524 508.245333 238.76608 512 261.919858 512c29.866667 0 57.856-6.314667 76.771555-17.891556 32.824889-19.370667 41.415111-49.664 49.095111-76.600888l3.527112-13.795556s31.800889-128.199111 37.205333-144.896c0.199111-0.910222 0.284444-1.422222 0.568889-1.848889-43.576889 0.455111-56.433778 0-60.558222-0.967111M548.042524 482.645333a453.518222 453.518222 0 0 0-45.397333 0.910223l-0.796444-1.763556c1.820444-8.846222 3.811556-17.521778 5.603555-26.453333l2.588445-12.060445c3.896889-18.716444 7.68-40.476444 8.106666-47.160889 0.426667-3.982222 1.706667-13.937778-8.732444-13.937777-4.352 0-8.903111 2.304-13.539556 4.693333-2.56 9.955556-7.651556 37.973333-10.097777 50.716444-5.205333 26.88-5.546667 29.980444-7.879112 43.264l-1.507555 1.792c-18.545778-0.341333-25.031111-0.341333-46.364445 0.910223l-0.938666-2.019556c3.527111-15.928889 7.111111-32.056889 10.496-48.042667 8.96-43.349333 11.093333-59.904 13.539555-81.948444l1.706667-1.28c20.849778-3.242667 25.884444-3.896889 48.440889-8.931556l1.905778 2.332445-3.470223 13.795555c3.84-2.503111 7.480889-5.034667 11.320889-7.196444 10.638222-5.745778 22.471111-7.452444 28.956445-7.452445 9.927111 0 20.736 3.015111 25.230222 15.587556 4.266667 11.207111 1.422222 24.974222-4.181333 52.110222l-2.901334 13.880889a1275.761778 1275.761778 0 0 0-9.955555 56.462222l-2.133334 1.792zM607.206969 482.645333c-8.362667-0.085333-13.767111-0.341333-18.972445-0.085333-5.205333 0.085333-10.296889 0.455111-18.062222 0.995556l-0.398222-0.995556-0.512-1.052444c2.133333-11.605333 3.271111-15.616 4.323556-19.740445 1.080889-4.152889 2.048-8.248889 3.925333-20.024889 2.446222-15.36 3.953778-26.083556 4.920889-35.498666 1.137778-9.102222 1.735111-16.867556 2.616889-25.827556l0.568889-0.682667 0.682666-0.881777c8.305778-1.678222 13.568-2.816 18.972445-4.067556 5.461333-1.024 10.922667-2.616889 19.512889-5.006222l0.312888 1.052444 0.256 1.137778c-1.592889 9.500444-3.242667 19.000889-4.807111 28.643556-1.507556 9.671111-3.128889 19.143111-4.608 28.643555-3.100444 20.195556-4.352 27.761778-5.091555 33.223111-0.711111 5.091556-0.910222 7.907556-2.104889 18.346667l-0.796445 0.938667-0.739555 0.853333zM790.474524 412.216889c6.684444-30.492444 1.450667-44.743111-5.12-53.418667-9.955556-13.226667-27.562667-17.464889-45.795555-17.464889-10.979556 0-37.148444 1.137778-57.571556 20.650667-14.677333 14.108444-21.447111 33.223111-25.543111 51.541333-4.124444 18.688-8.874667 52.309333 20.935111 64.796445 9.216 4.096 22.471111 5.233778 31.004445 5.233778 21.845333 0 44.259556-6.257778 61.098666-24.746667 12.970667-15.047111 18.887111-37.376 20.963556-46.592m-50.119111-2.190222c-0.967111 5.176889-5.319111 24.291556-11.178667 32.426666-4.096 6.030222-8.931556 9.671111-14.307555 9.671111-1.592889 0-11.093333 0-11.235556-14.620444-0.056889-7.224889 1.336889-14.592 3.100445-22.584889 5.034667-23.096889 10.951111-42.496 26.140444-42.496 11.889778 0 12.743111 14.449778 7.480889 37.603556M1249.653191 482.787556c-15.644444-0.170667-20.138667-0.170667-34.616889 0.768l-0.881778-1.820445c3.896889-23.011556 7.822222-45.937778 11.320889-69.205333 4.551111-30.179556 5.575111-43.008 7.054223-60.672l1.166222-1.479111c15.559111-3.413333 19.911111-4.408889 36.067555-9.045334l0.455111 2.076445c-2.958222 19.000889-5.859556 37.859556-8.760888 56.917333-5.944889 39.793778-8.106667 59.989333-10.382223 80.782222l-1.422222 1.706667z"
fill="#FEFEFE" p-id="32911"></path>
fill="#FEFEFE" p-id="32911"
/>
<path
d="M1231.078969 400.497778c-5.916444-15.644444-2.275556-47.217778-26.140445-57.827556-9.187556-4.181333-30.72 1.194667-49.265777 20.650667-13.056 13.880889-19.313778 32.938667-22.840889 51.2-3.754667 18.403556-8.049778 51.996444 18.631111 64 8.504889 4.152889 16.128 5.404444 23.893333 4.949333 26.794667-1.649778 47.217778-48.384 62.378667-66.844444 11.662222-14.620444-2.816-6.144-6.656-16.128z m-18.887111 10.439111c-1.052444 4.949333-5.006222 24.234667-10.268445 32.312889-3.527111 5.745778-11.889778 9.301333-16.725333 9.301333-1.365333 0-9.784889 0-10.097778-14.336-0.056889-7.139556 1.223111-14.506667 2.816-22.584889 4.579556-22.670222 9.870222-41.870222 23.552-41.870222 10.723556 0 15.303111 13.966222 10.723556 37.176889M912.472747 482.645333a452.408889 452.408889 0 0 0-45.368889 0.910223l-0.796445-1.763556c1.820444-8.846222 3.868444-17.521778 5.745778-26.453333l2.446222-12.060445c3.982222-18.716444 7.736889-40.476444 8.135111-47.160889 0.398222-3.982222 1.649778-13.937778-8.675555-13.937777-4.494222 0-8.988444 2.304-13.653333 4.693333-2.446222 9.955556-7.68 37.973333-10.183112 50.716444-5.063111 26.88-5.404444 29.980444-7.708444 43.264l-1.592889 1.792a469.788444 469.788444 0 0 0-46.307555 0.910223l-0.938667-2.019556c3.555556-15.928889 7.111111-32.056889 10.524444-48.042667 8.931556-43.349333 11.008-59.904 13.511111-81.948444l1.592889-1.28c20.821333-3.242667 25.969778-3.896889 48.526223-8.931556l1.706666 2.332445-3.214222 13.795555c3.697778-2.503111 7.509333-5.034667 11.292444-7.196444 10.552889-5.745778 22.471111-7.452444 28.956445-7.452445 9.784889 0 20.650667 3.015111 25.315555 15.587556 4.181333 11.207111 1.308444 24.974222-4.352 52.110222l-2.844444 13.880889a992.568889 992.568889 0 0 0-9.955556 56.462222l-2.161777 1.792zM1102.538524 335.815111c-3.043556 16.952889-12.032 31.175111-23.580444 38.087111-9.500444 5.831111-21.134222 6.314667-33.137778 6.314667h-7.765333l0.568889-3.811556 14.250666-75.918222 0.455112-3.896889 0.199111-2.986666 5.717333 0.739555 30.208 3.157333c11.662222 5.518222 16.440889 19.740444 13.084444 38.314667m-18.773333-79.445333l-14.478222 0.142222c-37.546667 0.568889-52.622222 0.426667-58.794667-0.512l-1.507555 9.301333-13.454223 76.458667-33.735111 169.955556c32.796444-0.483556 46.250667-0.483556 51.911111 0.284444 1.28-7.651556 8.874667-52.992 8.96-52.992 0 0 6.456889-33.251556 6.855112-34.474667 0 0 2.048-3.470222 4.067555-4.835555h3.015111c28.273778 0 60.216889 0 85.248-22.528 17.038222-15.473778 28.672-38.286222 33.848889-66.048 1.393778-6.798222 2.360889-14.876444 2.360889-22.983111 0-10.638222-1.735111-21.134222-6.769778-29.354667-12.771556-21.845333-38.200889-22.272-67.527111-22.414222M1438.438969 315.022222L1436.447858 312.888889c-25.429333 4.835556-30.037333 5.603556-53.447111 8.561778l-1.706667 1.621333c-0.085333 0.256-0.142222 0.654222-0.284444 1.024l-0.056889-0.369778c-17.436444 37.660444-16.924444 29.525333-31.089778 59.164445-0.085333-1.336889-0.085333-2.161778-0.142222-3.612445l-3.555556-64.284444-2.247111-2.104889c-26.652444 4.835556-27.306667 5.603556-51.911111 8.561778l-1.905778 1.621333c-0.284444 0.768-0.284444 1.592889-0.426667 2.531556l0.142223 0.312888c3.072 14.762667 2.332444 11.463111 5.404444 34.730667 1.479111 11.434667 3.384889 22.926222 4.835556 34.190222 2.417778 18.887111 3.783111 28.16 6.741333 57.002667-16.64 25.713778-20.565333 35.470222-36.579556 58.026667l1.024 2.133333c24.007111-0.853333 29.582222-0.853333 47.388445-0.853333l3.868444-4.124445c13.454222-27.192889 115.939556-192 115.939556-192M615.398969 363.832889c11.832889-6.4 13.312-15.217778 3.384889-19.797333-10.069333-4.636444-27.733333-3.128889-39.623111 3.242666-11.861333 6.257778-13.226667 15.160889-3.185778 19.854222 9.898667 4.494222 27.648 3.157333 39.424-3.299555M1298.264747 568.888889l-12.686223 35.555555c-3.982222 12.174222-11.434667 21.248-23.239111 21.333334l-20.167111-0.568889 5.888-32h3.953778c2.048 0 3.527111-0.170667 4.664889-1.109333 1.024-0.568889 1.763556-1.877333 2.588444-3.84l7.480889-19.370667h31.516445z"
fill="#FEFEFE" p-id="32912"></path>
fill="#FEFEFE" p-id="32912"
/>
<path
d="M3499.95008 747.576889c-5.148444-1.706667-10.524444-2.56-15.957333-2.503111a40.334222 40.334222 0 0 0-35.413334 30.151111v91.619555h-39.879111v-153.6h32.910222l2.730667 27.164445h0.995556a53.134222 53.134222 0 0 1 43.633777-31.004445c6.257778-0.170667 12.430222 0.938667 18.204445 3.328l-7.224889 34.844445z m-59.591111-179.114667h-63.800889a1286.144 1286.144 0 0 1-42.666667-204.231111h-14.193777v164.067556a16.184889 16.184889 0 0 0 15.957333 16.298666h17.720889v23.438223h-69.319111a27.676444 27.676444 0 0 1-28.16-27.619556v-176.184889h-27.676445v-23.836444h27.676445v-169.528889h63.800889v169.528889h121.656888v23.893333h-43.121777a1378.104889 1378.104889 0 0 0 42.126222 204.174222z m-104.675556-243.2a742.542222 742.542222 0 0 0 35.640889-143.530666h63.317334a835.811556 835.811556 0 0 1-34.673778 143.530666h-64.284445z m-106.467555 353.991111a50.062222 50.062222 0 0 0-16.213334-3.271111c-11.946667 0-18.688 7.111111-18.688 24.149334v13.169777h28.928v31.800889H3194.314524v121.770667h-40.135111v-121.742222h-20.679111v-29.952l20.679111-1.621334v-12.629333a49.863111 49.863111 0 0 1 53.361778-56.775111c9.955556 0 19.854222 1.848889 29.155556 5.461333l-7.480889 29.639111z m-59.335111-461.169777a12.458667 12.458667 0 0 0-13.454223-11.690667h-54.613333a11.946667 11.946667 0 0 0-12.686222 11.662222v217.656889h-49.379556v-225.564444a28.956444 28.956444 0 0 1 30.435556-28.046223h117.902222a29.098667 29.098667 0 0 1 30.919111 28.046223v225.564444h-49.123555V218.083556z m42.638222 351.488h-54.840889l-19.456-68.209778c-8.078222 23.893333-18.858667 46.791111-32.142222 68.209778h-62.577778a323.271111 323.271111 0 0 0 57.827556-195.413334V241.976889h55.580444v115.541333a583.964444 583.964444 0 0 1-6.968889 93.297778h28.444445l34.133333 118.727111z m-98.474667 158.663111l-17.948444 24.405333a59.192889 59.192889 0 0 0-33.393778-13.169778 16.327111 16.327111 0 0 0-20.195556 14.791111c0 11.264 15.189333 15.36 31.146667 21.418667 20.451556 7.68 42.894222 17.806222 42.894222 46.336 0 26.88-21.191111 48.554667-61.098666 48.554667a97.223111 97.223111 0 0 1-58.595556-21.674667l18.488889-25.230222c11.377778 10.097778 25.884444 15.985778 41.102222 16.725333 15.473778 0 22.186667-6.599111 22.186667-16.213333 0-11.491556-15.928889-16.696889-31.886222-23.011556a52.053333 52.053333 0 0 1-42.126223-44.686222 50.005333 50.005333 0 0 1 57.088-47.160889 85.589333 85.589333 0 0 1 52.337778 19.057778v-0.142222z m-249.031111-338.631111h106.183111a14.791111 14.791111 0 0 1 12.970667 6.712888c3.356444 4.266667 4.039111 10.040889 1.735111 14.961778l-75.292444 127.658667 16.952888 30.151111h-64.568888L2796.234524 449.422222h64.568889l16.952889 31.004445 41.870222-66.986667h-104.96a14.961778 14.961778 0 0 1-12.231111-6.286222 14.421333 14.421333 0 0 1-3.214222-12.970667l10.979556-51.854222h-41.159111v-24.32h46.648888l15.928889-73.671111H2781.016747v-24.263111h55.836444l10.979556-49.379556h64.568889l-10.979556 49.379556h80.014222v24.263111h-84.992l-16.213333 73.671111h112.440889v24.32h-117.418667l-10.24 47.274667z m-131.896889 179.086222H2670.083413v-74.922667l-78.279111 5.859556v-23.836445l78.279111-5.888v-61.098666h-59.818666a15.644444 15.644444 0 0 1-11.946667-4.977778 16.241778 16.241778 0 0 1-3.527111-12.970667l19.968-152.32h-22.698667v-23.893333h25.685334l5.973333-43.776h59.079111l-5.717333 43.918222h90.225777v23.864889h-93.724444l-18.204444 137.671111a7.480889 7.480889 0 0 0 1.991111 5.888 7.082667 7.082667 0 0 0 5.973333 2.929778h10.24V278.812444h59.562667v106.439112h29.667555v23.836444h-29.667555v56.092444l34.161777-2.503111v23.864889l-34.133333 2.503111v79.900445-0.284445z m-98.702222 140.629333c6.229333-0.199111 12.430222 0.910222 18.204444 3.271111l-7.224888 34.901334a47.616 47.616 0 0 0-15.729778-2.474667 40.106667 40.106667 0 0 0-35.384889 30.151111v91.591111h-40.135111v-153.571555h32.910222l2.730667 27.164444h0.995555a53.788444 53.788444 0 0 1 43.633778-30.890667v-0.142222z m-149.589333-168.618667a27.875556 27.875556 0 0 1-27.904 27.591112h-99.214223v-23.836445h46.848a15.815111 15.815111 0 0 0 15.957334-15.928889V333.653333h-128.853334v-23.808h252.501334v23.808h-59.335111v207.189334-0.142223z m-182.215111-349.013333h230.115555v24.064h-230.115555v-24.064z m-64.056889 151.523556h18.944v225.564444h-64.853334V398.506667h-48.839111a818.346667 818.346667 0 0 0 43.377778-90.823111h-43.377778a664.974222 664.974222 0 0 0 57.344-136.448h64.824889c-6.741333 26.026667-15.502222 51.484444-26.168889 76.174222h32.881778a569.685333 569.685333 0 0 1-34.133333 95.914666v-0.085333zM2169.233636 866.702222h-40.391112v-90.794666c0-23.580444-6.485333-32.085333-21.674666-32.085334a44.430222 44.430222 0 0 0-32.142222 17.294222v105.585778h-39.907556v-153.6h32.910222l2.730667 20.309334h0.995555a70.997333 70.997333 0 0 1 49.863112-24.120889c33.166222 0 47.616 23.04 47.616 61.696v95.715555z m-123.648-451.640889h49.863111a451.982222 451.982222 0 0 1-34.133334 87.893334c9.955556 21.390222 20.679111 42.752 32.398223 64.056889h-68.835556a747.861333 747.861333 0 0 1-72.760889-179.086223h-21.191111v140.202667c0.483556 8.96 7.964444 15.928889 16.952889 15.872l19.427555 0.426667v23.836444h-75.52a29.383111 29.383111 0 0 1-30.663111-27.619555V210.204444a29.098667 29.098667 0 0 1 30.663111-27.619555h166.769778a29.098667 29.098667 0 0 1 30.663111 27.619555v150.272a29.383111 29.383111 0 0 1-30.663111 27.619556h-38.4c4.750222 18.830222 10.723556 37.205333 16.952889 55.608889 3.584-9.272889 6.428444-18.801778 8.476445-28.529778v-0.113778z m-43.861334-209.635555H1947.878969a16.554667 16.554667 0 0 0-16.952889 15.900444v54.840889h88.462222V222.208a17.578667 17.578667 0 0 0-17.664-16.611556v-0.170666z m17.692445 94.606222h-88.490667v64.426667h70.798222a16.896 16.896 0 0 0 17.692445-15.872v-48.554667zM1761.909191 866.702222H1689.603413v-202.979555h67.072c41.614222 0 73.528889 12.088889 73.528889 49.863111a46.108444 46.108444 0 0 1-27.676444 43.889778v1.706666c23.04 4.039111 39.424 24.661333 38.144 47.985778 0 40.760889-33.905778 59.733333-78.791111 59.733333v-0.199111z m-7.736889-172.003555h-23.921778v51.541333h23.409778c25.941333 0 37.148444-10.410667 37.148445-26.595556 0-17.578667-12.231111-24.746667-36.636445-24.746666v-0.199111z m4.238222 81.720889h-28.16v58.965333h28.16c27.676444 0 42.638222-9.984 42.638223-31.004445 0-19.512889-14.734222-27.733333-42.666667-27.733333v-0.227555z m-13.454222-215.864889a28.586667 28.586667 0 0 1-8.476444-19.939556v-89.543111h-37.148445v-23.864889h37.148445v-76.856889h-37.148445v-24.291555h138.097778v24.291555H1802.527858v76.999111h34.901333v23.893334H1802.527858v77.368889a16.184889 16.184889 0 0 0 16.469333 16.327111h18.432v23.836444h-72.277333a28.785778 28.785778 0 0 1-20.195556-7.992889v-0.227555z m17.436445-247.608889h-66.048c14.506667-46.307556 24.092444-93.980444 28.672-142.279111h65.536c-1.991111 19.456-4.977778 38.855111-8.476445 58.168889h55.352889v23.836444h-59.818667a696.32 696.32 0 0 1-15.217777 60.501333v-0.227555z m191.203555 455.480889a23.921778 23.921778 0 0 0-25.912889-26.624 86.442667 86.442667 0 0 0-42.382222 14.535111l-14.478222-26.595556a121.742222 121.742222 0 0 1 64.085333-20.280889c38.883556 0 59.079111 23.324444 59.079111 67.726223v89.742222h-32.910222l-2.986667-16.497778h-0.995555a72.021333 72.021333 0 0 1-46.364445 20.337778 43.52 43.52 0 0 1-45.368888-45.539556c0-32.967111 26.652444-50.232889 88.234666-56.803555z m-29.667555 70.741333a40.675556 40.675556 0 0 0 29.667555-15.075556v-31.004444c-37.376 4.977778-49.863111 15.075556-49.863111 28.785778a17.152 17.152 0 0 0 20.195556 17.294222z m326.087111-59.505778h1.223111l53.105778-66.360889h43.889777l-53.105777 62.776889 58.083555 90.794667h-43.633778l-37.376-63.630222-22.186666 25.230222v38.4h-39.139556v-218.88h39.139556v131.669333z m201.415111-107.52h33.649778v41.159111h37.888v31.800889h-37.888v67.982222a20.707556 20.707556 0 0 0 20.707555 25.799112c5.205333-0.227556 10.353778-1.336889 15.189334-3.299556l6.485333 29.383111c-10.325333 3.697778-21.191111 5.632-32.142222 5.745778-36.664889 0-50.631111-23.04-50.631111-57.6v-67.982222h-21.674667v-29.952l23.694222-1.905778 4.721778-41.130667z m302.876444 96.284445a23.921778 23.921778 0 0 0-25.912889-26.624 86.442667 86.442667 0 0 0-42.382222 14.535111l-14.449778-26.595556a121.742222 121.742222 0 0 1 64.056889-20.280889c38.883556 0 59.079111 23.324444 59.079111 67.726223v89.742222h-32.910222l-2.986666-16.497778h-0.995556a72.021333 72.021333 0 0 1-46.364444 20.337778 43.52 43.52 0 0 1-45.368889-45.539556c0-32.967111 26.424889-50.232889 88.234666-56.803555z m-29.667555 70.741333a40.675556 40.675556 0 0 0 29.667555-15.075556v-31.004444c-37.376 4.977778-49.834667 15.075556-49.834666 28.785778a17.152 17.152 0 0 0 20.195555 17.294222z m146.858666-105.585778h0.995556a70.997333 70.997333 0 0 1 49.834667-24.120889c33.166222 0 47.616 23.04 47.616 61.696v95.715556h-40.391111v-90.794667c0-23.580444-6.456889-32.056889-21.674667-32.056889a44.430222 44.430222 0 0 0-32.142222 17.265778v105.585778h-39.907556v-153.6h32.910222l2.759111 20.309333z m439.751112-24.120889c42.382222 0 64.284444 31.004444 64.284444 73.472 0.056889 6.200889-0.597333 12.373333-1.991111 18.375111h-94.72a40.334222 40.334222 0 0 0 42.638222 38.4 63.203556 63.203556 0 0 0 34.417778-10.695111l13.681778 24.689778a96.113778 96.113778 0 0 1-53.589334 17.009778 74.410667 74.410667 0 0 1-76.288-80.355556 75.207111 75.207111 0 0 1 71.537778-80.896z m29.639111 65.251556a28.757333 28.757333 0 0 0-29.155556-33.991111 34.56 34.56 0 0 0-33.393778 33.991111h62.577778z"
fill="#4D4D4D" p-id="32913"></path>
fill="#4D4D4D" p-id="32913"
/>
</svg>
</el-radio>
<el-radio v-if="form.payTypeArr.indexOf('3')>-1" border label="4">
<!-- paypal-->
<svg class="icon" height="40" p-id="22654" t="1709002828937"
version="1.1" viewBox="0 0 4220 1024" width="94" xmlns="http://www.w3.org/2000/svg">
<svg
class="icon" height="40" p-id="22654" t="1709002828937"
version="1.1" viewBox="0 0 4220 1024" width="94" xmlns="http://www.w3.org/2000/svg"
>
<path
d="M3249.722604 229.409369h-232.537679c-15.641548 0-29.197556 11.470468-32.325865 27.112016l-93.849287 595.421589c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h118.875764c11.470468 0 20.855397-8.342159 21.898167-18.769858l27.112016-168.928717c2.08554-15.641548 15.641548-27.112016 32.325866-27.112016h72.99389c153.287169 0 240.879837-74.03666 263.820774-221.06721 10.427699-63.608961 0-114.704684-29.197556-150.158859-31.283096-38.582485-89.678208-58.395112-167.885947-58.395112z m27.112016 216.89613c-12.513238 83.421589-76.1222 83.421589-137.645621 83.421589h-35.454175l25.026476-155.372709c1.04277-9.384929 9.384929-16.684318 18.769858-16.684318h15.641547c41.710794 0 81.336049 0 102.191447 23.983707 12.513238 14.598778 15.641548 35.454175 11.470468 64.651731z"
fill="#009CDE" p-id="22655"></path>
fill="#009CDE" p-id="22655"
/>
<path
d="M1594.84684 229.409369h-232.537678c-15.641548 0-29.197556 11.470468-32.325866 27.112016l-93.849287 595.421589c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h110.533605c15.641548 0 29.197556-11.470468 32.325866-27.112017l25.026476-160.586558c2.08554-15.641548 15.641548-27.112016 32.325866-27.112016h72.99389c153.287169 0 240.879837-74.03666 263.820774-221.06721 10.427699-63.608961 0-114.704684-29.197556-150.158859-31.283096-38.582485-89.678208-58.395112-167.885947-58.395112z m27.112016 216.89613c-12.513238 83.421589-76.1222 83.421589-137.645621 83.421589h-35.454175l25.026476-155.372709c1.04277-9.384929 9.384929-16.684318 18.769858-16.684318h15.641548c41.710794 0 81.336049 0 102.191446 23.983707 12.513238 14.598778 15.641548 35.454175 11.470468 64.651731zM2288.288795 443.177189h-111.576375c-9.384929 0-17.727088 7.299389-18.769857 16.684318l-5.213849 31.283096-7.299389-11.470469c-23.983707-34.411405-77.164969-46.924644-131.389002-46.924643-123.046843 0-227.323829 92.806517-248.179226 223.152749-10.427699 64.651731 4.171079 127.217923 41.710794 171.014257 34.411405 39.625255 82.378819 56.309572 139.731161 56.309572 99.063136 0 153.287169-63.608961 153.287169-63.608961l-5.21385 31.283096c-2.08554 11.470468 7.299389 21.898167 18.769858 21.898167h100.105906c15.641548 0 29.197556-11.470468 32.325866-27.112017l60.480652-380.610998c2.08554-10.427699-6.256619-21.898167-18.769858-21.898167z m-154.329939 216.896131c-10.427699 63.608961-61.523422 106.362525-125.132383 106.362525-32.325866 0-58.395112-10.427699-75.079429-30.240326-16.684318-19.812627-22.940937-46.924644-17.727088-78.207739 10.427699-62.566191 61.523422-107.405295 124.089613-107.405295 31.283096 0 57.352342 10.427699 74.03666 30.240326 17.727088 20.855397 25.026477 47.967413 19.812627 79.250509z"
fill="#003087" p-id="22656"></path>
fill="#003087" p-id="22656"
/>
<path
d="M3943.164559 443.177189h-111.576375c-9.384929 0-17.727088 7.299389-18.769857 16.684318l-5.21385 31.283096-7.299389-11.470469c-23.983707-34.411405-77.164969-46.924644-131.389002-46.924643-123.046843 0-227.323829 92.806517-248.179226 223.152749-10.427699 64.651731 4.171079 127.217923 41.710795 171.014257 34.411405 39.625255 82.378819 56.309572 139.73116 56.309572 99.063136 0 153.287169-63.608961 153.28717-63.608961l-5.21385 31.283096c-2.08554 11.470468 7.299389 21.898167 18.769858 21.898167h100.105906c15.641548 0 29.197556-11.470468 32.325866-27.112017l60.480651-380.610998c2.08554-10.427699-6.256619-21.898167-18.769857-21.898167z m-154.329939 216.896131c-10.427699 63.608961-61.523422 106.362525-125.132383 106.362525-32.325866 0-58.395112-10.427699-75.07943-30.240326-16.684318-19.812627-22.940937-46.924644-17.727087-78.207739 10.427699-62.566191 61.523422-107.405295 124.089613-107.405295 31.283096 0 57.352342 10.427699 74.03666 30.240326 17.727088 20.855397 25.026477 47.967413 19.812627 79.250509z"
fill="#009CDE" p-id="22657"></path>
fill="#009CDE" p-id="22657"
/>
<path
d="M2880.582074 443.177189h-111.576375c-10.427699 0-20.855397 5.213849-27.112016 14.598778l-154.329939 227.323829-65.694501-217.9389c-4.171079-13.556008-16.684318-22.940937-31.283096-22.940937h-109.490835c-13.556008 0-22.940937 13.556008-18.769857 26.069247l123.046843 360.79837-115.747454 162.672098c-9.384929 12.513238 0 30.240326 15.641548 30.240326h111.576375c10.427699 0 20.855397-5.213849 26.069246-13.556008l371.226069-535.983707c11.470468-13.556008 2.08554-31.283096-13.556008-31.283096z"
fill="#003087" p-id="22658"></path>
fill="#003087" p-id="22658"
/>
<path
d="M4074.553561 245.050916l-94.892057 605.849288c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h95.934827c15.641548 0 29.197556-11.470468 32.325866-27.112017l93.849287-595.421588c2.08554-11.470468-7.299389-21.898167-18.769857-21.898167h-107.405296c-10.427699 1.04277-18.769857 7.299389-19.812627 16.684317z"
fill="#009CDE" p-id="22659"></path>
fill="#009CDE" p-id="22659"
/>
<path
d="M782.529121 259.649695c12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l-13.556008 85.507128c-2.08554 14.598778 9.384929 27.112016 23.983707 27.112016h165.800407c19.812627 0 36.496945-14.598778 39.625255-33.368635l2.08554-8.342159 31.283095-198.126273 2.08554-10.427699c3.12831-19.812627 19.812627-33.368635 39.625255-33.368635h25.026476c160.586558 0 285.718941-64.651731 322.215886-253.393075 15.641548-79.250509 7.299389-144.94501-33.368635-190.826884-12.513238-13.556008-28.154786-26.069246-45.881874-35.454175"
fill="#009CDE" p-id="22660"></path>
fill="#009CDE" p-id="22660"
/>
<path
d="M782.529121 259.649695c12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l49.010184-312.830958-1.04277 9.384929c3.12831-21.898167 21.898167-38.582485 44.839104-38.582485h93.849287c183.527495 0 327.429735-74.03666 369.140529-289.89002l3.12831-18.769857"
fill="#012169" p-id="22661"></path>
fill="#012169" p-id="22661"
/>
<path
d="M326.838693 260.692464c2.08554-13.556008 10.427699-23.983707 21.898167-30.240326 5.213849-2.08554 11.470468-4.171079 16.684318-4.171079h250.264766c29.197556 0 57.352342 2.08554 82.378819 6.256619 7.299389 1.04277 14.598778 2.08554 20.855397 4.17108 7.299389 1.04277 13.556008 3.12831 19.812627 5.213849l9.384929 3.128309c12.513238 4.171079 23.983707 9.384929 34.411405 14.598779 12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l49.010184-312.830958L326.838693 260.692464z"
fill="#003087" p-id="22662"></path>
fill="#003087" p-id="22662"
/>
</svg>
</el-radio>
</el-radio-group>
<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" width="260">
<img class="mt20" src="@/assets/img/sm.png">
</div>
<div class="ml20">
<img height="360" src="@/assets/img/rr.jpg"/>
<img height="360" src="@/assets/img/rr.jpg">
</div>
</div>
<div v-if="language==0" class="tip text-center text-danger">
......@@ -244,12 +283,12 @@
</div>
<div v-else class="tip text-center text-danger">
After payment, do not close this window and wait for confirmation of successful payment.
<br/>
<br>
If you have not received a notification of successful payment for a long time,
please refresh the page
</div>
</div>
<div v-if="payType == '3'">
<table cellpadding="0" cellspacing="0" class="table-border table">
<tr>
......@@ -262,8 +301,8 @@
<td>
{{ language == 0 ? '¥' : '€' }}{{ totalFee }}
<div class="text-gray">{{
language == 0 ? '请按照指定金额进行打款' : 'Please make the payment according to the specified amount'
}}
language == 0 ? '请按照指定金额进行打款' : 'Please make the payment according to the specified amount'
}}
</div>
</td>
</tr>
......@@ -271,8 +310,10 @@
<th>{{ language == 0 ? '收款账号' : `Receiver's Account Number` }}</th>
<td>
{{ form.payInformation?.receivingAccount }}
<span v-if="language==0" class="text-primary size12 pointer"
@click="copy(form.payInformation?.receivingAccount)">复制25位账号</span>
<span
v-if="language==0" class="text-primary size12 pointer"
@click="copy(form.payInformation?.receivingAccount)"
>复制25位账号</span>
<span v-else class="text-primary size12 pointer" @click="copy(form.payInformation?.receivingAccount)">Copy 25-digit Account Number</span>
<div v-if="language==0" class="text-gray">请勿重复打款</div>
<div v-else class="text-gray">Please do not make duplicate payments</div>
......@@ -305,20 +346,24 @@
<tr>
<th>{{ language == 0 ? '操作' : 'Actions' }}</th>
<td>
<file-upload v-model="voucherObj" :button-text="language==0?'上传汇款单':'Upload Remittance Receipt'"
:button-type="1" :is-show-tip="false"
:limit="1"/>
<span v-if="language==0"
class="text-danger size12">*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span>
<file-upload
v-model="voucherObj" :button-text="language==0?'上传汇款单':'Upload Remittance Receipt'"
:button-type="1" :is-show-tip="false"
:limit="1"
/>
<span
v-if="language==0"
class="text-danger size12"
>*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span>
<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>
</td>
</tr>
</table>
<div class="text-center">
<el-button class="btn-lineG w200px" round type="primary" @click="upRR">{{
language == 0 ? '保存' : 'Save'
}}
language == 0 ? '保存' : 'Save'
}}
</el-button>
</div>
</div>
......@@ -332,11 +377,11 @@
<el-card class="mb60">
<div v-if="form.payStatus == '3'" class="text-center">
<el-icon color="#32B16C" size="80">
<SuccessFilled/>
<SuccessFilled />
</el-icon>
<p class="text-success">{{ language == 0 ? '支付成功' : 'successful!' }}</p>
<h3 class="wePrice">{{ language == 0 ? '¥' : '€' }}{{ form.totalFee || 0 }}</h3>
<el-button v-if="language != 0" class="btn-lineG w200px" round type="primary" @click="downInvoice">
{{ language == 0 ? '下载收据' : 'DownLoad Invoice' }}
</el-button>
......@@ -347,17 +392,19 @@
<label>{{ language == 0 ? '线下支付' : 'Offline Payment' }}</label>
<div class="text-center">
<el-icon color="#32B16C" size="80">
<SuccessFilled/>
<SuccessFilled />
</el-icon>
<p class="text-success">{{ language == 0 ? '支付成功' : 'successfully!' }}</p>
<h3 class="wePrice">{{ language == 0 ? '¥' : '€' }}{{ form.totalFee }}</h3>
<span v-if="language==0"
class="text-danger size12">*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span>
<span
v-if="language==0"
class="text-danger size12"
>*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span>
<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>
</div>
</el-card>
</div>
<div v-if="errorBox" class="box">
<el-result
:sub-title="language==0?'请确认订单号是否正确':'Please confirm if the order number is correct'"
......@@ -371,13 +418,15 @@
</template>
</el-result>
</div>
<el-dialog v-model="showSJDialog" :close-on-click-modal="false" :close-on-press-escape="false"
:title="language==0?'开收据':'Issue a receipt'" width="460px">
<el-dialog
v-model="showSJDialog" :close-on-click-modal="false" :close-on-press-escape="false"
:title="language==0?'开收据':'Issue a receipt'" width="460px"
>
<div class="flex">
<el-form-item :label="language==0?'开票人':'Name'">
<div class="flex">
<el-input v-model="lpName" :placeholder="language==0?'请输入开票人':'Please enter your name'"></el-input>
<el-input v-model="lpName" :placeholder="language==0?'请输入开票人':'Please enter your name'" />
<el-button type="primary" @click="submitSJ">{{ language == 0 ? '提交并下载' : 'Submit' }}</el-button>
</div>
</el-form-item>
......@@ -389,34 +438,34 @@
</div>
</div>
</el-dialog>
</div>
</template>
<script setup>
import {Search} from "@element-plus/icons-vue"
import {getCurrentInstance, ref} from 'vue'
import {onMounted} from "@vue/runtime-core"
import {useRoute, useRouter} from "vue-router"
import * as match from "@/apiPc/match"
import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
const {proxy} = getCurrentInstance()
import { Search } from '@element-plus/icons-vue'
import { getCurrentInstance, ref } from 'vue'
import { onMounted } from '@vue/runtime-core'
import { useRoute, useRouter } from 'vue-router'
import * as match from '@/apiPc/match'
import MatchInfoRow from '@/viewsPc/match/components/matchInfo-row'
const { proxy } = getCurrentInstance()
const route = useRoute()
const router = useRouter()
const payType = ref('2')
const orderId = ref(route.query.orderId)
const matchId = ref()
const groupId = ref()
import GroupInfoRow from "@/viewsPc/match/components/groupInfo-row";
import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row";
import SignInfoTable from "@/viewsPc/match/components/signInfo-table"
import ZuTable from "@/viewsPc/match/components/zu-table";
import useUserStore from "@/store/modules/user";
import FileUpload from "@/components/FileUpload";
import {useStorage} from "@vueuse/core/index";
import {ElMessage, ElMessageBox} from "element-plus";
import {getBaseInfoByActiveId, getReceipt} from "@/apiPc/booking";
import GroupInfoRow from '@/viewsPc/match/components/groupInfo-row'
import CoachInfoRow from '@/viewsPc/match/components/coachInfo-row'
import SignInfoTable from '@/viewsPc/match/components/signInfo-table'
import ZuTable from '@/viewsPc/match/components/zu-table'
import useUserStore from '@/store/modules/user'
import FileUpload from '@/components/FileUpload'
import { useStorage } from '@vueuse/core/index'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getBaseInfoByActiveId, getReceipt } from '@/apiPc/booking'
const isLogin = ref(false)
const language = useStorage('language', 0)
......@@ -458,9 +507,9 @@ onMounted(() => {
language.value = 1
}
}
var is_mobile = navigator.userAgent.toLowerCase().match(/(ipod|ipad|iphone|android|coolpad|mmp|smartphone|midp|wap|xoom|symbian|j2me|blackberry|wince)/i) != null;
var is_mobile = navigator.userAgent.toLowerCase().match(/(ipod|ipad|iphone|android|coolpad|mmp|smartphone|midp|wap|xoom|symbian|j2me|blackberry|wince)/i) != null
console.log(is_mobile)
if (is_mobile) {
isphone.value = true
} else {
......@@ -472,7 +521,7 @@ if (useUserStore().user) {
}
function getData() {
return match.getMyOrderDetail({orderId: orderId.value}).then(res => {
return match.getMyOrderDetail({ orderId: orderId.value }).then(res => {
totalFee.value = res.data.totalFee
form.value = res.data
form.value.payTypeArr = res.data.payType.split(',')
......@@ -493,7 +542,7 @@ function getData() {
}
function getMyMemberTable() {
match.getPerPersonList({cptId: matchId.value, searchLabels: '1,2,3,4,5,6'}, user.userId).then(res => {
match.getPerPersonList({ cptId: matchId.value, searchLabels: '1,2,3,4,5,6' }, user.userId).then(res => {
myMemberTable.value = res.rows
})
}
......@@ -523,8 +572,7 @@ function getSignList() {
}
}).catch(err => {
if (isLogin.value) {
router.push({name: 'myMatch'})
router.push({ name: 'myMatch' })
}
})
}
......@@ -545,13 +593,13 @@ function changePaytype() {
function goPay() {
if (payType.value == '2' && form.value.payTypeArr.indexOf('2') > -1) {
if (isphone.value) {
//拉起移动支付
match.createWePayPhone({orderId: orderId.value}).then(res => {
// 拉起移动支付
match.createWePayPhone({ orderId: orderId.value }).then(res => {
hideconfirmbtn.value = true
window.location.href = res.data
})
} else {
match.createWePay({orderId: orderId.value}).then(res => {
match.createWePay({ orderId: orderId.value }).then(res => {
wePayCodeUrl.value = res.data
hideconfirmbtn.value = true
startforGetData()
......@@ -562,7 +610,7 @@ function goPay() {
return
}
if (payType.value == '4') {
match.createPalPay({orderId: orderId.value}).then(res => {
match.createPalPay({ orderId: orderId.value }).then(res => {
if (res.data) {
location.href = res.data
}
......@@ -570,7 +618,7 @@ function goPay() {
}
}
let handle;
let handle
function startforGetData() {
handle = setTimeout(() => {
......@@ -617,7 +665,6 @@ function exportSignList(n) {
...obj
}, `${fileName}_${new Date().getTime()}.xlsx`)
}
}
function exportPdf() {
......@@ -637,7 +684,6 @@ function exportPdf() {
...obj
}, `${fileName}_${new Date().getTime()}.pdf`)
}
}
function copy(str) {
......@@ -747,27 +793,27 @@ const showSJ = () => {
width: 100%;
max-width: 1000px;
margin: 20px auto;
.head {
background: #EFF2F7;
height: 50px;
font-size: 16px;
font-weight: 400;
}
th {
background: #FAFBFD;
font-size: 14px;
border-bottom: 1px solid #E5E5E5;
border-right: 1px solid #E5E5E5;
}
td {
border-bottom: 1px solid #E5E5E5;
border-right: 1px solid #E5E5E5;
padding: 10px;
}
&.table-border {
border-top: 1px solid #E5E5E5;
border-left: 1px solid #E5E5E5;
......@@ -786,23 +832,23 @@ const showSJ = () => {
.result {
font-size: 22px;
.flex {
display: flex;
align-items: center;
font-weight: 500;
img {
margin-right: 10px
}
}
.priceb {
color: #7B7F83;
font-size: 16px;
text-align: right;
line-height: 50px;
span {
font-weight: bold;
font-size: 22px;
......@@ -815,7 +861,7 @@ const showSJ = () => {
.skeletonBox {
position: relative;
overflow: hidden;
.btn-lineG {
position: absolute;
left: 0;
......@@ -825,7 +871,7 @@ const showSJ = () => {
bottom: 0;
width: 200px;
box-shadow: 0 0 1000px 500px rgba(255, 255, 255, 0.5);
}
}
......@@ -837,26 +883,26 @@ const showSJ = () => {
.priceBar {
padding: 0 0 20px;
.flex {
display: flex;
justify-content: right;
align-items: baseline;
.item {
font-size: 16px;
margin-right: 15px;
label {
color: #95A1A6;
}
span {
font-family: DIN Alternate;
}
}
}
.size26 {
font-size: 26px;
}
......
......@@ -2,26 +2,27 @@
<div>
<div class="box ph-30">
<el-card class="mb20">
<team-sign-step v-if="user.utype=='2'" :language="language" :active-step="activeStep"/>
<single-sign-step v-if="user.utype=='1'" :language="language" :active-step="2"/>
<team-sign-step v-if="user.utype=='2'" :active-step="activeStep" :language="language" />
<single-sign-step v-if="user.utype=='1'" :active-step="2" :language="language" />
</el-card>
<el-card :body-style="{ padding: '0px' }">
<match-info-row v-if="matchId" :match-id="matchId"/>
<group-info-row v-if="matchId&&groupId!=0" :match-id="matchId" :group-id="groupId"/>
<coach-info-row v-if="matchId&&user.utype=='2'" :match-id="matchId" :language="language"/>
<match-info-row v-if="matchId" :match-id="matchId" />
<group-info-row v-if="matchId&&groupId!=0" :group-id="groupId" :match-id="matchId" />
<coach-info-row v-if="matchId&&user.utype=='2'" :language="language" :match-id="matchId" />
<div style="margin: 20px">
<div class="leftboderTT" v-if="user.utype=='1'&&myMemberTable.length>0">{{ language==0?'随行人员清单':'List of accompanying personnel' }}
<div v-if="user.utype=='1'&&myMemberTable.length>0" class="leftboderTT">
{{ language == 0 ? '随行人员清单' : 'List of accompanying personnel' }}
</div>
<div v-if="user.utype=='1'&&myMemberTable.length>0">
<el-table class="mt20" :data="myMemberTable" border>
<el-table-column type="index" :label="language==0?'序号':'Index'" width="70" align="center"/>
<el-table-column :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/>
<el-table-column :label="language==0?'名':'Name'" prop="ming" min-width="100"/>
<el-table-column :label="language==0?'国家/地区':'Nationality'" prop="countryName" min-width="100"/>
<!-- <el-table-column :label="language==0?'国家':'Nationality'" prop="countryStr" min-width="120"/>-->
<!-- <el-table-column :label="language==0?'护照号':'Passport Number'" prop="idcCode" min-width="120"/>-->
<!-- <el-table-column v-show="!isNational" :label="language==0?'出生日期':'Birthday'" prop="birth"/>-->
<el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
<el-table :data="myMemberTable" border class="mt20">
<el-table-column :label="language==0?'序号':'Index'" align="center" type="index" width="70" />
<el-table-column :label="language==0?'姓氏':'Surname'" min-width="100" prop="xing" />
<el-table-column :label="language==0?'名':'Name'" min-width="100" prop="ming" />
<el-table-column :label="language==0?'国家/地区':'Nationality'" min-width="100" prop="countryName" />
<!-- <el-table-column :label="language==0?'国家':'Nationality'" prop="countryStr" min-width="120"/>-->
<!-- <el-table-column :label="language==0?'护照号':'Passport Number'" prop="idcCode" min-width="120"/>-->
<!-- <el-table-column v-show="!isNational" :label="language==0?'出生日期':'Birthday'" prop="birth"/>-->
<el-table-column :label="language==0?'性别':'Gender'" prop="sexStr" />
<el-table-column :label="language==0?'角色':'Role'" min-width="160">
<template #default="scope">
<div class="roletd">
......@@ -39,82 +40,134 @@
</el-table-column>
</el-table>
</div>
<div class="mt20">
<div class="leftboderTT">{{ language==0?'参赛人员清单':'Participant List' }}
<div class="fr">
<el-input size="small" v-model="zuQuery.athName" :prefix-icon="Search"
@change="getSignList" clearable/>
<div class="mt20">
<div class="leftboderTT">{{ language == 0 ? '参赛人员清单' : 'Participant List' }}
<div class="fr">
<el-input
v-model="zuQuery.athName" :prefix-icon="Search" clearable
size="small" @change="getSignList"
/>
</div>
</div>
<sign-info-table
:has-action="false"
:is-national="isNational"
:list="signInfoList"
:match-id="matchId"
:show-summary="route.query.buy=='1'"
:total="signTotal" class="mt20"
/>
</div>
<sign-info-table class="mt20" :showSummary="true" :total="signTotal" :match-id="matchId"
:list="signInfoList" :hasAction="false" :is-national="isNational"/>
</div>
<div class="mt20">
<div class="leftboderTT">{{ language==0?'设项报名清单':'LIST OF REGISTERED COMPETITIONS' }}
<div class="fr">
<el-input size="small" v-model="zuQuery.groName" :prefix-icon="Search"
@change="getSignList" clearable/>
<div class="mt20">
<div class="leftboderTT">{{ language == 0 ? '设项报名清单' : 'LIST OF REGISTERED COMPETITIONS' }}
<div class="fr">
<el-input
v-model="zuQuery.groName" :prefix-icon="Search" clearable
size="small" @change="getSignList"
/>
</div>
</div>
<zu-table
:has-action="false"
:list="zuTableList"
:show-summary="true"
:total="zuTotal"
class="mt20"
/>
</div>
<zu-table class="mt20" :showSummary="true" :total="zuTotal" :list="zuTableList" :hasAction="false"/>
</div>
</div>
</el-card>
<el-card class="mt20" :body-style="{padding: '0px'}">
<!-- 参赛服务费-->
<el-card :body-style="{padding: '0px'}" class="mt20">
<el-row class="priceBar">
<el-col :lg="12" :xs="24" class="pd20">
<div class="flex">
<div class="item" v-if="form.cptRegistrationFee?.totalFee>0"><label>{{ language==0?'参赛服务费':'REGISTRATION FEE' }}:</label><span>{{ language==0?'¥':'€' }}{{form.cptRegistrationFee?.totalFee}}</span></div>
<div class="item" v-if="form.cptInsuranceFee?.totalFee>0"><label>{{ language==0?'保险费':'INSURANCE' }}:</label><span>{{ language==0?'¥':'€' }}{{form.cptInsuranceFee?.totalFee}}</span></div>
<div class="item" v-if="form.totalFee>0"><label>{{ language==0?'费用总计':'Total Cost' }}:</label><span>{{ language==0?'¥':'€' }}{{form.totalFee}}</span></div>
<div v-if="form.cptRegistrationFee?.totalFee>0" class="item">
<label>{{
language == 0 ? '参赛服务费' : 'REGISTRATION FEE'
}}:</label>
<span>{{ language == 0 ? '¥' : '€' }}{{ form.cptRegistrationFee?.totalFee }}</span>
</div>
<div v-if="route.query.buy=='1'&& form.cptInsuranceFee?.totalFee>0" class="item">
<label>{{
language == 0 ? '保险费' : 'INSURANCE'
}}:</label>
<span>{{ language == 0 ? '¥' : '€' }}{{ form.cptInsuranceFee?.totalFee }}</span>
</div>
<div v-if="form.totalFee>0" class="item">
<label>{{
language == 0 ? '费用总计' : 'Total Cost'
}}:</label>
<span>{{ language == 0 ? '¥' : '€' }}{{ form.totalFee }}</span>
</div>
</div>
</el-col>
<el-col :lg="12" :xs="24" class="text-right pd20">
<el-link type="primary" @click="exportSignList(1)"><el-icon><Upload /></el-icon>
{{ language==0?'导出参赛人员清单':'Export Participant List' }}</el-link>
<el-link type="primary" @click="exportSignList(2)"><el-icon><Upload /></el-icon>
{{ language==0?'导出设项报名清单':'EXPORT LIST OF REGISTERED COMPETITIONS' }}</el-link>
<el-link type="primary" @click="exportPdf"><el-icon><Upload /></el-icon>
{{ language==0?'导出pdf':'Export PDF' }}
<el-link type="primary" @click="exportSignList(1)">
<el-icon>
<Upload />
</el-icon>
{{ language == 0 ? '导出参赛人员清单' : 'Export Participant List' }}
</el-link>
<el-link type="primary" @click="exportSignList(2)">
<el-icon>
<Upload />
</el-icon>
{{ language == 0 ? '导出设项报名清单' : 'EXPORT LIST OF REGISTERED COMPETITIONS' }}
</el-link>
<el-link type="primary" @click="exportPdf">
<el-icon>
<Upload />
</el-icon>
{{ language == 0 ? '导出pdf' : 'Export PDF' }}
</el-link>
</el-col>
</el-row>
<div class="text-center pd20">
<el-button type="primary" class="" plain round @click="goPrev()">{{ language == 0 ? "上一步" : 'Go back' }}</el-button>
<el-button type="primary" class="" plain round @click="submitForm(0)">{{ language==0?'保存暂不提交审核':'Save, Do Not Submit for Review Yet' }}</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm(1)">{{ language==0?'提交审核':'Submit for review' }}</el-button>
<el-button class="" plain round type="primary" @click="goPrev()">{{
language == 0 ? "上一步" : 'Go back'
}}
</el-button>
<el-button class="" plain round type="primary" @click="submitForm(0)">
{{ language == 0 ? '保存暂不提交审核' : 'Save, Do Not Submit for Review Yet' }}
</el-button>
<el-button class="btn-lineG w200px" round type="primary" @click="submitForm(1)">
{{ language == 0 ? '提交审核' : 'Submit for review' }}
</el-button>
</div>
</el-card>
</div>
<insuranceView ref="insuranceViewRef" />
</div>
</template>
<script setup>
import {Search} from "@element-plus/icons-vue";
import { Search } from '@element-plus/icons-vue'
import TeamSignStep from './components/teamSignStep'
import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"
import GroupInfoRow from "@/viewsPc/match/components/groupInfo-row"
import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row"
import SignInfoTable from "@/viewsPc/match/components/signInfo-table"
import {getCurrentInstance, ref} from "vue"
import cache from "@/plugins/cache";
import {onMounted} from "@vue/runtime-core";
import * as match from "@/apiPc/match"
import {useRoute, useRouter} from "vue-router";
import useUserStore from "@/store/modules/user";
import ZuTable from "@/viewsPc/match/components/zu-table";
import {ElMessageBox} from "element-plus";
import SingleSignStep from "@/viewsPc/match/components/singleSignStep";
import {useStorage} from "@vueuse/core/index";
import MatchInfoRow from '@/viewsPc/match/components/matchInfo-row'
import GroupInfoRow from '@/viewsPc/match/components/groupInfo-row'
import CoachInfoRow from '@/viewsPc/match/components/coachInfo-row'
import SignInfoTable from '@/viewsPc/match/components/signInfo-table'
import insuranceView from './components/insuranceView.vue'
import { getCurrentInstance, ref } from 'vue'
import cache from '@/plugins/cache'
import { onMounted } from '@vue/runtime-core'
import * as match from '@/apiPc/match'
import { useRoute, useRouter } from 'vue-router'
import useUserStore from '@/store/modules/user'
import ZuTable from '@/viewsPc/match/components/zu-table'
import { ElMessageBox } from 'element-plus'
import SingleSignStep from '@/viewsPc/match/components/singleSignStep'
import { useStorage } from '@vueuse/core/index'
const route = useRoute()
const router = useRouter()
const activeStep = ref(3)
const groupInfo = useUserStore().group || {}
const language= useStorage('language',0)
const language = useStorage('language', 0)
const form = ref({})
const signInfoList = ref([])
const signEndTime = ref('')
......@@ -123,55 +176,65 @@ const zuTotal = ref(0)
const signTotal = ref(0)
const groupId = ref(route.query.groupId || 0)
const matchId = ref(route.query.matchId)
const isNational = ref(route.query.isNational||false)
const isNational = ref(route.query.isNational || false)
const myMemberTable = ref([])
const user = useUserStore().user
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const zuQuery = ref({
cptId: matchId.value,
groupId: groupId.value
groupId: groupId.value,
buy: route.query.buy// 0不购买,1购买
})
onMounted(()=>{
const matchData = ref({})
onMounted(() => {
Promise.all([
getMatch(),
getSignList(),
getFee(groupId.value)
])
if(user.utype=='1'){
if (user.utype == '1') {
getMyMemberTable()
}
})
function getMatch() {
match.getMatchById({
id: matchId.value
}).then(res => {
signEndTime.value = res.data.signEndTime
}).catch(err=>{
router.push({name: 'matchList'})
return
matchData.value = res.data
if (matchData.value.insuranceFlag == '2' && route.query.buy == '1') {
proxy.$refs['insuranceViewRef'].open(matchData.value.insuranceAgreement)
}
}).catch(err => {
router.push({ name: 'matchList' })
})
}
function getMyMemberTable() {
match.getPerPersonList({cptId: matchId.value, searchLabels: '1,2,3,4,5,6'}, user.userId).then(res => {
match.getPerPersonList({ cptId: matchId.value, searchLabels: '1,2,3,4,5,6' }, user.userId).then(res => {
myMemberTable.value = res.rows
})
}
function getSignList() {
match.getMySignInfoList(zuQuery.value).then(res=>{
match.getMySignInfoList(zuQuery.value).then(res => {
zuTotal.value = 0
signTotal.value = 0
signInfoList.value = res.data.singleData
console.log(signInfoList.value)
zuTableList.value = res.data.zuData
for(var s of signInfoList.value){
for (var s of signInfoList.value) {
signTotal.value = (Number(signTotal.value) + Number(s.insuranceFee)).toFixed(2)
}
for(var z of zuTableList.value){
for (var z of zuTableList.value) {
zuTotal.value = (Number(zuTotal.value) + Number(z.project.serviceFee)).toFixed(2)
}
})
}
const goPrev = () => {
if(user.utype=='2'){
if (user.utype == '2') {
router.push({
name: 'chooseSportsman',
query: {
......@@ -180,23 +243,23 @@ const goPrev = () => {
}
})
}
if(user.utype=='1'){
if (user.utype == '1') {
router.push({
name: 'chooseProject',
params:{
id:matchId.value
params: {
id: matchId.value
},
query: {
matchId: matchId.value
}
})
}
}
const getFee = (entryId) => {
match.getTotalFee({
entryId: entryId,
cptId: matchId.value
cptId: matchId.value,
buy: route.query.buy// 0不购买,1购买"
}).then(res => {
form.value = res.data
// zuTotal.value = form.value.cptRegistrationFee?.totalFee
......@@ -204,77 +267,82 @@ const getFee = (entryId) => {
})
}
const submitForm = (n) => {
if(n==0){
ElMessageBox.confirm(language.value==0?`您当前的操作为暂存,并不是提交审核,
必须在报名截止时间${signEndTime.value.substring(0,10)}之前完成提交。
您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。`:
`Your current operation is temporary and not submitted for review,
Submission must be completed before the registration deadline${signEndTime.value.substring(0,10)}
if (n == 0) {
ElMessageBox.confirm(language.value == 0 ? `您当前的操作为暂存,并不是提交审核,
必须在报名截止时间${signEndTime.value.substring(0, 10)}之前完成提交。
您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。`
: `Your current operation is temporary and not submitted for review,
Submission must be completed before the registration deadline${signEndTime.value.substring(0, 10)}
You can also find this registration in the My Registration section of your personal center and click submit for review.`,
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '去个人中心' : 'Go My Registration ',
cancelButtonText: language.value == 0 ? '知道了' : 'OK',
type: 'warning'
}).then((res) => {
console.log(res)
router.push({name: 'myMatch'})
})
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '去个人中心' : 'Go My Registration ',
cancelButtonText: language.value == 0 ? '知道了' : 'OK',
type: 'warning'
}).then((res) => {
console.log(res)
router.push({ name: 'myMatch' })
})
return
}
ElMessageBox.confirm(language.value == 0 ? '请谨慎提交!请务必确保所有成员全部报名后,一次性提交。提交后不可修改!' : 'Please be cautious! Please make sure that all members have signed up ,it cannot be modified after submission!',
language.value == 0 ? '注意' : 'Note',
{
confirmButtonText: language.value == 0 ? '确定' : 'Yes',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
}).then(()=>{
match.commitSign({
groupId: groupId.value||0,
cptId: matchId.value
}).then(res => {
router.push({
name: `commitDone`,
params: {
orderId: res.data
}
})
})}
language.value == 0 ? '注意' : 'Note',
{
confirmButtonText: language.value == 0 ? '确定' : 'Yes',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel'
}).then(() => {
match.commitSign({
groupId: groupId.value || 0,
cptId: matchId.value,
buy: route.query.buy// 0不购买,1购买
}).then(res => {
router.push({
name: `commitDone`,
params: {
orderId: res.data
}
})
})
}
)
}
function exportSignList(n) {
var obj = {
cptId: matchId.value,
groupId: groupId.value,
type:n
type: n,
buy: route.query.buy// 0不购买,1购买
}
var fileName
if(language.value==0){
if(n==1){
if (language.value == 0) {
if (n == 1) {
fileName = '参赛人员清单'
}else {
} else {
fileName = '设项报名清单'
}
proxy.download('/league/sign/exportCn', {
...obj
}, `${fileName}_${new Date().getTime()}.xlsx`)
} else {
if(n==1){
if (n == 1) {
fileName = 'Participant List'
}else {
} else {
fileName = 'Export LIST OF REGISTERED COMPETITIONS'
}
proxy.download('/league/sign/exportEn', {
...obj
}, `${fileName}_${new Date().getTime()}.xlsx`)
}
}
function exportPdf() {
var obj = {
cptId: matchId.value,
groupId: groupId.value
groupId: groupId.value,
buy: route.query.buy// 0不购买,1购买
}
var fileName
if(language.value==0){
if (language.value == 0) {
fileName = '设项报名清单'
proxy.download('/pdf/exportMySignInfoList', {
...obj
......@@ -285,35 +353,63 @@ function exportPdf() {
...obj
}, `${fileName}_${new Date().getTime()}.pdf`)
}
}
</script>
<style scoped lang="scss">
.leftboderTT{font-weight: 600;
<style lang="scss" scoped>
.leftboderTT {
font-weight: 600;
font-size: 16px;
color: #453DEA;}
color: #453DEA;
}
.bg-lineg {
height: 40px;
line-height: 40px;
font-size: 18px;
text-align: center;
}
.priceBar{
.priceBar {
background: #FAFBFD;
.flex{display: flex;
.item{font-size: 16px;margin-right: 15px;
label{color: #95A1A6; }
span{font-family: DIN Alternate;}
.flex {
display: flex;
.item {
font-size: 16px;
margin-right: 15px;
label {
color: #95A1A6;
}
span {
font-family: DIN Alternate;
}
}
}
}
.text-right{text-align: right;
a{margin-left: 20px;}
.text-right {
text-align: right;
a {
margin-left: 20px;
}
}
.border-info{
.item{margin: 5px 0;color: #4C5359; font-size: 14px;
label{font-size: 14px;margin-right: 14px;text-transform: uppercase;}
.border-info {
.item {
margin: 5px 0;
color: #4C5359;
font-size: 14px;
label {
font-size: 14px;
margin-right: 14px;
text-transform: uppercase;
}
}
}
</style>
......
......@@ -2,75 +2,82 @@
<div>
<div class="mt30 mb60">
<div class="box">
<personal-step v-if="matchId!=0" :active-step="activeStep"/>
<div class="mt20"></div>
<personal-step v-if="matchId!=0" :active-step="activeStep" />
<div class="mt20" />
<div>
<el-card style="min-height: 50vh">
<div class="pt30">
<el-form ref="wdsfDataRef" class="d-form" size="large" :label-width="language==0?120:180"
style="max-width: 560px;margin: auto" :rules="wdsfDataRule">
<el-form
ref="wdsfDataRef" :label-width="language==0?120:180" :rules="wdsfDataRule" class="d-form"
size="large" style="max-width: 560px;margin: auto"
>
<el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" required>
<el-input type="text" v-model="form.card" @change="resetCode(0)" @blur="verifyCode">
<el-input v-model="form.card" type="text" @blur="verifyCode" @change="resetCode(0)">
<template #append>
<el-button type="primary" plain style="width: 110px" @click="checkCard">
<el-icon v-if="wdsfData.wdsfFlag=='1'" size="16" color="#67C23A">
<CircleCheckFilled/>
<el-button plain style="width: 110px" type="primary" @click="checkCard">
<el-icon v-if="wdsfData.wdsfFlag=='1'" color="#67C23A" size="16">
<CircleCheckFilled />
</el-icon>
<span v-else>{{ language == 0 ? '校验卡号' : 'Check Code' }}</span>
</el-button>
</template>
</el-input>
<a class="text-primary text-sm mt10" href="https://www.worlddancesport.org/Athlete/List"
target="_blank">
<a
class="text-primary text-sm mt10" href="https://www.worlddancesport.org/Athlete/List"
target="_blank"
>
<el-icon>
<Link/>
<Link />
</el-icon>
{{ language == 0 ? '去WDSF官网查询我的会员号' : 'Search my WSDF MIN on the WDSF official website' }}
</a>
</el-form-item>
<div class="h30"></div>
<div class="h30" />
<div class="leftboderTT">{{ language == 0 ? '个人信息' : 'Personal information' }}
<span v-if="language==0">(登录时需要验证,保护账户信息)</span>
<span v-else>(Obtain automatically according to the WDSF MIN)</span>
</div>
<div class="h20"></div>
<div class="h20" />
<el-form-item :label="language==0?'姓氏':'Surname'">
<el-input v-model="wdsfData.surname" disabled/>
<el-input v-model="wdsfData.surname" disabled />
</el-form-item>
<el-form-item :label="language==0?'名':'Name'">
<el-input v-model="wdsfData.name" disabled/>
<el-input v-model="wdsfData.name" disabled />
</el-form-item>
<el-form-item :label="language==0?'代表':'Representing'">
<el-input v-model="wdsfData.representing" disabled/>
<el-input v-model="wdsfData.representing" disabled />
</el-form-item>
<el-form-item :label="language==1?'Age group':'年龄组'">
<el-input v-model="wdsfData.ageGroup" disabled/>
<el-input v-model="wdsfData.ageGroup" disabled />
</el-form-item>
<el-form-item :label="language==0?'舞种':'Division'">
<el-input v-model="wdsfData.division" disabled/>
<el-input v-model="wdsfData.division" disabled />
</el-form-item>
<el-form-item :label="language==0?'状态':'Status'">
<el-input v-model="wdsfData.status" disabled/>
<el-input v-model="wdsfData.status" disabled />
</el-form-item>
<div class="h30"></div>
<div class="h30" />
<div class="leftboderTT">
{{ language == 0 ? '补充信息' : 'ADDITIONAL INFORMATION' }}
</div>
<div class="h20"></div>
<el-form-item prop="picUrl" :label="language==0?'个人照片':'Photo'">
<div class="h20" />
<el-form-item :label="language==0?'个人照片':'Photo'" prop="picUrl">
<ImageUpload2
v-model="wdsfData.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1"
:is-show-tip="false"
v-model="wdsfData.picUrl" :crop-height="280" :crop-width="200" :is-show-tip="false" :limit="1"
class="threeFour"
/>
</el-form-item>
<el-form-item :label="language==0?'有效证件':'Valid Passport'" required>
<image-upload v-model="wdsfData.passportUrl" :limit="1" :is-show-tip="false"
:action="'/common/getPersonInfoFromCert/3'"
paramName="pic"
:button-text="language==0?'上传':'Upload'"
@response="ocrSuccess"/>
<image-upload
v-model="wdsfData.passportUrl" :action="'/common/getPersonInfoFromCert/3'"
:button-text="language==0?'上传':'Upload'"
:is-show-tip="false"
:limit="1"
param-name="pic"
@response="ocrSuccess"
/>
<div class="tip">
<span v-if="language==0">请上传有效身份证件扫描件,用于核实身份信息、申请签证邀请函及购买保险等</span>
<span v-else>Please upload a scanned copy of your valid passport for verification of identity information,
......@@ -78,7 +85,7 @@
</div>
</el-form-item>
<el-form-item :label="language==0?'证件号':'Passport number'" required>
<el-input v-model="wdsfData.passportNumber"/>
<el-input v-model="wdsfData.passportNumber" />
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" required>
<el-radio-group v-model="wdsfData.sex">
......@@ -88,29 +95,35 @@
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Date of Birth'" required>
<el-date-picker
v-model="wdsfData.birthday"
style="width: 100%;"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-model="wdsfData.birthday"
format="YYYY-MM-DD"
style="width: 100%;" type="date" value-format="YYYY-MM-DD"
/>
</el-form-item>
<div class="h30"></div>
<div class="h30" />
<div v-if="!user">
<div class="leftboderTT">{{ language == 0 ? '登录密码' : 'Login Information' }} <span
v-if="language==0">(登录时需要验证,保护账户信息)</span></div>
<div class="h20"></div>
v-if="language==0"
>(登录时需要验证,保护账户信息)</span></div>
<div class="h20" />
<el-form-item :label="language==0?'邮箱':'E-mail'" required>
<div class="pvbox">
<el-input type="text" v-model="wdsfData.email" @change="resetCode(1)" autocomplete="false"
@blur="verifyCode" :disabled="wdsfData.personFlag=='1'"/>
<span class="text-primary" v-if="wdsfData.personFlag=='1'"
@click="forgetPassword(wdsfData.email)">忘记密码</span>
<el-input
v-model="wdsfData.email" :disabled="wdsfData.personFlag=='1'" autocomplete="false"
type="text"
@blur="verifyCode" @change="resetCode(1)"
/>
<span
v-if="wdsfData.personFlag=='1'" class="text-primary"
@click="forgetPassword(wdsfData.email)"
>忘记密码</span>
</div>
<div class="tip" v-if="wdsfData.personFlag=='0'">
<div v-if="wdsfData.personFlag=='0'" class="tip">
<div v-if="language==0">
(请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。该邮箱后续会作为您登录的账户,
并接收报名审核结果、支付账单、签证邀请函等相关信息)
......@@ -121,13 +134,13 @@
results of registration review, payment bills, visa invitation letters, etc.
</div>
</div>
</el-form-item>
<el-form-item :label="language==0?'验证码':'Code'" required v-if="wdsfData.personFlag=='0'">
<el-form-item v-if="wdsfData.personFlag=='0'" :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>
......@@ -136,62 +149,73 @@
</template>
</el-input>
</el-form-item>
<el-form-item :label="language==0?'密码':'Password'" required>
<el-input type="password" show-password v-model="form.password" autocomplete="false"
:placeholder="language==0?'6-16位密码。区分大小写':'Password'"/>
<el-input
v-model="form.password" :placeholder="language==0?'6-16位密码。区分大小写':'Password'"
autocomplete="false" show-password
type="password"
/>
</el-form-item>
<el-form-item :label="language==0?'确认密码':'Confirm Password'" required
v-if="wdsfData.personFlag=='0'">
<el-input type="password" show-password v-model="form.confirmPassword" autocomplete="false"
@change="vconfirmPassword"
:placeholder="language==0?'再次输入密码':'Confirm Password'"/>
<div class="text-danger" v-if="showError">
<el-form-item
v-if="wdsfData.personFlag=='0'" :label="language==0?'确认密码':'Confirm Password'"
required
>
<el-input
v-model="form.confirmPassword"
:placeholder="language==0?'再次输入密码':'Confirm Password'" autocomplete="false"
show-password
type="password"
@change="vconfirmPassword"
/>
<div v-if="showError" class="text-danger">
{{ language == 0 ? '密码不一致' : 'Password inconsistency' }}
</div>
</el-form-item>
</div>
</el-form>
</div>
<div class="text-center">
<el-button class="primary-kx" round @click="goBack"> {{ language == 0 ? '取消' : 'Cancel' }}</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="bigNext" v-if="wdsfData.wdsfFlag=='1'">
<el-button v-if="wdsfData.wdsfFlag=='1'" class="btn-lineG w200px" round type="primary" @click="bigNext">
<span v-if="matchId=='0'">{{ language == 0 ? '立即注册' : 'Register Now' }}</span>
<span v-else>{{ language == 0 ? '下一步' : 'Next' }}</span>
</el-button>
</div>
</el-card>
</div>
<Vcode :show="isShow" :z-index="3000" @success="codeSuccess()"
:successText="successVcode" :failText="failVcode" :slider-text="sliderText"></Vcode>
<Vcode
:fail-text="failVcode" :show="isShow" :slider-text="sliderText"
:success-text="successVcode" :z-index="3000" @success="codeSuccess()"
/>
</div>
</div>
</div>
</template>
<script setup>
import {ref, toRefs, reactive} from "vue"
import {getCurrentInstance, onMounted} from "@vue/runtime-core";
import Step3 from "./team/step3"
import Vcode from "vue3-puzzle-vcode"
import {ElMessage, ElMessageBox} from 'element-plus'
import { ref, toRefs, reactive } from 'vue'
import { getCurrentInstance, onMounted } from '@vue/runtime-core'
import Step3 from './team/step3'
import Vcode from 'vue3-puzzle-vcode'
import { ElMessage, ElMessageBox } from 'element-plus'
import CountDown from '@chenfengyuan/vue-countdown'
import {checkWdsf, getCaptchaSms, loginSingle, registerSingle} from "@/apiPc/match";
import {setToken} from "@/utils/auth";
import PersonalStep from "@/viewsPc/register/components/personal-step";
import FileUpload from "@/components/FileUpload";
import {useRouter, useRoute} from "vue-router";
import {useStorage} from "@vueuse/core/index";
import useUserStore from "@/store/modules/user";
import {upgradePersonal} from "@/apiPc/common";
import { checkWdsf, getCaptchaSms, loginSingle, registerSingle } from '@/apiPc/match'
import { setToken } from '@/utils/auth'
import PersonalStep from '@/viewsPc/register/components/personal-step'
import FileUpload from '@/components/FileUpload'
import { useRouter, useRoute } from 'vue-router'
import { useStorage } from '@vueuse/core/index'
import useUserStore from '@/store/modules/user'
import { upgradePersonal } from '@/apiPc/common'
const language = useStorage('language', 0)
const router = useRouter()
const route = useRoute()
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const userStore = useUserStore()
const user = useUserStore().user
const data = reactive({
......@@ -209,8 +233,8 @@ const data = reactive({
// sex: '0'
},
wdsfDataRule: {
birthday: [{required: true, message: 'required', trigger: 'blur'}],
passportNumber: [{required: true, message: 'required', trigger: 'blur'}],
birthday: [{ required: true, message: 'required', trigger: 'blur' }],
passportNumber: [{ required: true, message: 'required', trigger: 'blur' }]
}
})
const {
......@@ -219,8 +243,8 @@ const {
} = toRefs(data)
const matchId = ref('0')
onMounted(() => {
if(user?.utype=='1'||user?.utype=='2'){
router.push({name: 'matchList'})
if (user?.utype == '1' || user?.utype == '2') {
router.push({ name: 'matchList' })
}
if (language.value == 1) {
failVcode.value = 'Error!'
......@@ -239,14 +263,13 @@ function sendsmsMsg() {
}
return
}
if (counting.value) {
if (language.value == 0) {
ElMessage.warning('请等待倒计时结束')
} else {
ElMessage.warning('Please wait for the countdown to end')
}
return
} else {
isShow.value = true
}
......@@ -269,7 +292,7 @@ function verifyCode() {
return
}
if (form.value.account.indexOf('@') > -1) {
//邮箱
// 邮箱
}
}
......@@ -277,7 +300,7 @@ function codeSuccess(msg) {
isShow.value = false
isCodeTrue.value += 1
if (isCodeTrue.value == 1) {
checkWdsf({card: form.value.card}).then(res => {
checkWdsf({ card: form.value.card }).then(res => {
wdsfData.value = res.data
if (wdsfData.value.passportUrl) {
}
......@@ -295,7 +318,7 @@ function codeSuccess(msg) {
}
if (isCodeTrue.value >= 2) {
counting.value = true
getCaptchaSms({account: wdsfData.value.email}).then(res => {
getCaptchaSms({ account: wdsfData.value.email }).then(res => {
isCodeTrue.value = 1
ElMessage.success(language.value == 0 ? '发送成功,请关注邮箱邮件' : 'Send success, please check your email')
}).catch(err => {
......@@ -319,16 +342,17 @@ function vconfirmPassword() {
function goBack() {
router.go(-1)
}
function bigNext(){
function bigNext() {
if (!wdsfData.value.passportNumber) {
ElMessage.warning(language.value == 0 ?'请填写护照号':'Please fill in your passport number')
ElMessage.warning(language.value == 0 ? '请填写护照号' : 'Please fill in your passport number')
return
}
if (!wdsfData.value.birthday) {
ElMessage.warning(language.value == 0 ?'请填写出生年月':'Please fill in your birthday')
ElMessage.warning(language.value == 0 ? '请填写出生年月' : 'Please fill in your birthday')
return
}
if (!wdsfData.value.passportUrl) {
ElMessage.warning(language.value == 0 ? '请上传护照文件' : 'Please upload your passport file')
return
......@@ -337,24 +361,24 @@ function bigNext(){
ElMessage.warning(language.value == 0 ? '请选择性别' : 'Please select your gender')
return
}
if(user&&user.utype=='3'){
let obj = {
if (user && user.utype == '3') {
const obj = {
card: form.value.card,
userId: user.userId,
picUrl: wdsfData.value.picUrl,
code: form.value.code,
sex: wdsfData.value.sex,
birth: wdsfData.value.birthday,
passportNumber: wdsfData.value.passportNumber,
passportNumber: wdsfData.value.passportNumber
}
if (Array.isArray(wdsfData.value.passportUrl)) {
obj.passportUrl = wdsfData.value.passportUrl[0].url
} else {
obj.passportUrl = wdsfData.value.passportUrl || ''
}
upgradePersonal(obj).then(res=>{
if(res.data){
userStore.getInfo().then(res=>{
upgradePersonal(obj).then(res => {
if (res.data) {
userStore.getInfo().then(res => {
afterR()
})
}
......@@ -365,20 +389,20 @@ function bigNext(){
}
function next() {
if(!form.value.code){
ElMessage.warning(language.value == 0 ?'请填写验证码':'Please fill in your verification code')
if (!form.value.code) {
ElMessage.warning(language.value == 0 ? '请填写验证码' : 'Please fill in your verification code')
return
}
if(!form.value.password){
ElMessage.warning(language.value == 0 ?'请填写密码':'Please fill in your password')
if (!form.value.password) {
ElMessage.warning(language.value == 0 ? '请填写密码' : 'Please fill in your password')
return
}
if(!form.value.confirmPassword){
ElMessage.warning(language.value == 0 ?'请再次填写密码':'Please fill in Confirm Password')
if (!form.value.confirmPassword) {
ElMessage.warning(language.value == 0 ? '请再次填写密码' : 'Please fill in Confirm Password')
return
}
if (wdsfData.value.personFlag == '0') {
let obj = {
const obj = {
card: form.value.card,
account: wdsfData.value.email,
picUrl: wdsfData.value.picUrl,
......@@ -386,7 +410,7 @@ function next() {
password: form.value.password,
sex: wdsfData.value.sex,
birth: wdsfData.value.birthday,
passportNumber: wdsfData.value.passportNumber,
passportNumber: wdsfData.value.passportNumber
}
if (Array.isArray(wdsfData.value.passportUrl)) {
obj.passportUrl = wdsfData.value.passportUrl[0].url
......@@ -403,14 +427,14 @@ function next() {
ElMessage.warning('Please fill in your password')
return
}
let obj = {
const obj = {
sex: wdsfData.value.sex,
passportNumber: wdsfData.value.passportNumber,
picUrl: wdsfData.value.picUrl,
birth: wdsfData.value.birthday,
personId: wdsfData.value.personId,
username: wdsfData.value.email,
password: form.value.password,
password: form.value.password
}
if (Array.isArray(wdsfData.value.passportUrl)) {
obj.passportUrl = wdsfData.value.passportUrl[0].url
......@@ -421,7 +445,7 @@ function next() {
setToken(res.data.token)
afterR()
}).catch(err => {
})
}
}
......@@ -452,8 +476,9 @@ function afterR() {
}
function forgetPassword(account) {
useUserStore().setReLogin({account: account, active: 2})
useUserStore().setReLogin({ account: account, active: 2 })
}
const ocrSuccess = (res) => {
if (res.code == 200) {
wdsfData.value.passportUrl = res.data.url
......@@ -466,11 +491,11 @@ const ocrSuccess = (res) => {
}
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
.pvbox {
position: relative;
width: 100%;
.text-primary {
position: absolute;
right: -5em;
......@@ -490,7 +515,7 @@ const ocrSuccess = (res) => {
color: var(--el-color-primary);
font-size: 16px;
font-weight: 600;
span {
color: #929AA0;
font-size: 14px;
......
......@@ -64,33 +64,33 @@ export default defineConfig(({ mode, command }) => {
proxy: {
// https://cn.vitejs.dev/config/#server-proxy
'/dev-api/ztx-train': {
// target: 'http://123.60.96.243:1896/stage-api',
target: 'https://jijin.wtwuxicenter.com/stage-api',
target: 'http://192.168.1.243:1896/stage-api',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '')
},
'/dev-api/ztx-match': {
target: 'http://192.168.1.253:8081',
target: 'http://192.168.1.243:8081',
// target: 'https://wdsfwuxicenter.com/stage-api/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '')
},
'/dev-api/ztx-webSite': {
target: 'http://192.168.1.253:8081',
target: 'http://192.168.1.243:8081',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
},
'/dev-api': {
target: 'http://192.168.1.118:8081/',
// target: 'http://192.168.1.253:8081',
// target: 'http://192.168.1.118:8081/',
target: 'http://192.168.1.243:8081',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
// target: 'https://wdsfwuxicenter.com/stage-api/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
},
'/ticket': {
// target: 'http://192.168.1.131:8081/',
target: 'https://jijin.wtwuxicenter.com/h5/',
target: 'http://192.168.1.243:8081/',
// target: 'https://jijin.wtwuxicenter.com/h5/',
// target: 'https://ticketh5.wdsfwuxicenter.com/h5/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/ticket/, '')
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!