fb8342d4 by 杨炀

Merge branch 'dev' of https://code.itechtop.cn/yangyang/dance-pc into dev

2 parents 24537552 f3e5beef
......@@ -2,13 +2,14 @@
<div class="app-container">
<div class="box">
<el-row :gutter="20">
<el-col :lg="5" :md="5" :xl="6" :sm="8" :xs="8">
<el-col :lg="5" :md="5" :sm="8" :xl="6" :xs="8">
<el-card class="mb20">
<div :class="language==0?'center-menu':'center-menu en-menu'">
<ul v-if="user.utype=='2'&&language==0">
<li v-for="(m, i) in menus"
:key="i"
:class="{ active: m.isActive }"
<li
v-for="(m, i) in menus"
:key="i"
:class="{ active: m.isActive }"
>
<a href="javascript:void(0)" @click="toInfo(m,menus)">
<img :src="m.isActive ? m.picUrl2 : m.picUrl1">
......@@ -17,9 +18,10 @@
</li>
</ul>
<ul v-if="user.utype=='2'&&language==1">
<li v-for="(m, i) in menusEn"
:key="i"
:class="{ active: m.isActive }"
<li
v-for="(m, i) in menusEn"
:key="i"
:class="{ active: m.isActive }"
>
<a href="javascript:void(0)" @click="toInfo(m,menusEn)">
<img :src="m.isActive ? m.picUrl2 : m.picUrl1">
......@@ -29,9 +31,9 @@
</ul>
<ul v-if="user.utype=='1'&&language==0">
<li
v-for="(m, i) in menusPersonal"
:key="i"
:class="{ active: m.isActive }"
v-for="(m, i) in menusPersonal"
:key="i"
:class="{ active: m.isActive }"
>
<a href="javascript:void(0)" @click="toInfo(m,menusPersonal)">
<img :src="m.isActive ? m.picUrl2 : m.picUrl1">
......@@ -41,9 +43,9 @@
</ul>
<ul v-if="user.utype=='1'&&language==1">
<li
v-for="(m, i) in menusPersonalEn"
:key="i"
:class="{ active: m.isActive }"
v-for="(m, i) in menusPersonalEn"
:key="i"
:class="{ active: m.isActive }"
>
<a href="javascript:void(0)" @click="toInfo(m,menusPersonalEn)">
<img :src="m.isActive ? m.picUrl2 : m.picUrl1">
......@@ -53,9 +55,9 @@
</ul>
<ul v-if="user.utype=='3'&&language==0">
<li
v-for="(m, i) in menus3"
:key="i"
:class="{ active: m.isActive }"
v-for="(m, i) in menus3"
:key="i"
:class="{ active: m.isActive }"
>
<a href="javascript:void(0)" @click="toInfo(m,menus3)">
<img :src="m.isActive ? m.picUrl2 : m.picUrl1">
......@@ -65,9 +67,9 @@
</ul>
<ul v-if="user.utype=='3'&&language==1">
<li
v-for="(m, i) in menus3En"
:key="i"
:class="{ active: m.isActive }"
v-for="(m, i) in menus3En"
:key="i"
:class="{ active: m.isActive }"
>
<a href="javascript:void(0)" @click="toInfo(m,menus3En)">
<img :src="m.isActive ? m.picUrl2 : m.picUrl1">
......@@ -78,8 +80,8 @@
</div>
</el-card>
</el-col>
<el-col :lg="19" :md="19" :xl="18" :sm="16" :xs="16">
<router-view :user="user" class="rightPart"/>
<el-col :lg="19" :md="19" :sm="16" :xl="18" :xs="16">
<router-view :user="user" class="rightPart" />
</el-col>
</el-row>
</div>
......@@ -87,12 +89,12 @@
</template>
<script setup>
import {ref} from 'vue'
import {useRoute, useRouter} from 'vue-router'
import {onMounted} from '@vue/runtime-core'
import { ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { onMounted } from '@vue/runtime-core'
import useUserStore from '@/store/modules/user'
import _ from 'lodash'
import {useStorage} from "@vueuse/core/index";
import { useStorage } from '@vueuse/core/index'
const language = useStorage('language', 0)
......@@ -245,13 +247,13 @@ const menus3 = ref([
picUrl2: '/img/nav_29_dwn.png',
isActive: false
},
{
name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
routeName: 'seat_order',
picUrl1: '/img/c7.png',
picUrl2: '/img/c7.png',
isActive: false
},
// {
// name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
// routeName: 'seat_order',
// picUrl1: '/img/c7.png',
// picUrl2: '/img/c7.png',
// isActive: false
// },
{
name: language.value == 0 ? '发票申请' : 'Electronic invoice',
routeName: 'myKP',
......@@ -281,14 +283,14 @@ const menus3En = ref([
picUrl1: '/img/nav_29.png',
picUrl2: '/img/nav_29_dwn.png',
isActive: false
},
{
name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
routeName: 'seat_order',
picUrl1: '/img/c7.png',
picUrl2: '/img/c7.png',
isActive: false
}
// {
// name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
// routeName: 'seat_order',
// picUrl1: '/img/c7.png',
// picUrl2: '/img/c7.png',
// isActive: false
// }
])
const menusPersonal = ref([
{
......@@ -319,13 +321,13 @@ const menusPersonal = ref([
picUrl2: '/img/nav_29_dwn.png',
isActive: false
},
{
name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
routeName: 'seat_order',
picUrl1: '/img/c7.png',
picUrl2: '/img/c7.png',
isActive: false
},
// {
// name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
// routeName: 'seat_order',
// picUrl1: '/img/c7.png',
// picUrl2: '/img/c7.png',
// isActive: false
// },
{
name: language.value == 0 ? '系统消息' : 'System messages',
routeName: 'mySms',
......@@ -370,13 +372,13 @@ const menusPersonalEn = ref([
picUrl2: '/img/nav_29_dwn.png',
isActive: false
},
{
name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
routeName: 'seat_order',
picUrl1: '/img/c7.png',
picUrl2: '/img/c7.png',
isActive: false
},
// {
// name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
// routeName: 'seat_order',
// picUrl1: '/img/c7.png',
// picUrl2: '/img/c7.png',
// isActive: false
// },
{
name: language.value == 0 ? '系统消息' : 'System messages',
routeName: 'mySms',
......@@ -389,7 +391,7 @@ let currMenu
onMounted(() => {
console.log(route.query)
if (!user.utype) {
router.push({name: 'home'})
router.push({ name: 'home' })
return
}
if (user.utype == '1') {
......@@ -399,7 +401,7 @@ onMounted(() => {
currMenu.isActive = true
}
console.log(route.name)
if (user.utype == '2') {
currMenu = _.find(menus.value, (m) => {
return m.routeName === route.name
......@@ -412,7 +414,6 @@ onMounted(() => {
})
currMenu.isActive = true
}
})
const toInfo = (item, list) => {
......@@ -420,37 +421,37 @@ const toInfo = (item, list) => {
m.isActive = false
})
item.isActive = true
router.push({
name: item.routeName
})
}
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
:deep(.el-tabs__nav-wrap) {
padding: 0 15px;
}
.center-menu {
text-align: center;
li {
margin-bottom: 15px;
}
&.en-menu {
text-align: left;
li {
padding: 6px 0 6px 14px;
a {
display: flex;
align-items: center;
}
}
img {
padding: 0;
width: 26px;
......@@ -477,7 +478,7 @@ li img {
}
.el-card {
box-shadow: none !important;
:deep(.el-card__body) {
padding: 0 !important;
}
......@@ -495,16 +496,16 @@ li img {
top: 80px;
width: 100px;
border-right: 1px solid #eee;
li {
font-size: 13px;
padding: 8px 10px;
border-radius: 0;
img {
display: none
}
&.active {
background: #fff;
border-left: 2px solid var(--el-color-primary);
......
......@@ -2,26 +2,29 @@
<div class="mb20">
<el-card :body-style="{'padding':'0'}">
<div class="indexTitle">
<h3 class="leftboderTT" v-if="user.utype=='2'">
{{ language == 0 ? '机构基础信息' : 'ORGANIZATION BASIC INFORMATION' }}</h3>
<h3 class="leftboderTT" v-if="user.utype=='1'">{{
language == 0 ? '个人基础信息' : 'Personal Basic Information'
}}</h3>
<h3 v-if="user.utype=='2'" class="leftboderTT">
{{ language == 0 ? '机构基础信息' : 'ORGANIZATION BASIC INFORMATION' }}
</h3>
<h3 v-if="user.utype=='1'" class="leftboderTT">
{{ language == 0 ? '个人基础信息' : 'Personal Basic Information' }}
</h3>
</div>
<!-- uType字段 1 是个人 2是团体-->
<!-- {{user}}-->
<team-info :form="myform" v-if="user.utype=='2'"/>
<div class="pd20" v-else>
<team-info v-if="user.utype=='2'" :form="myform" />
<div v-else class="pd20">
<div class="d-form-border" style="margin-top: 0">
<el-form class="d-form" label-width="120" :rules="rules" ref="formref"
:label-position="language==0?'left':'top'" style="max-width: 500px;margin: auto">
<el-form
ref="formref" :label-position="language==0?'left':'top'" :rules="rules" class="d-form"
label-width="120" style="max-width: 500px;margin: auto"
>
<el-form-item :label="language==0?'用户名':'Account'">
{{ user.userName }}
</el-form-item>
<el-form-item :label="language==0?'姓名':'Real Name'" required prop="realName" v-if="user.utype=='1'">
<el-input v-model="myform.realName" disabled/>
<el-form-item v-if="user.utype=='1'" :label="language==0?'姓名':'Real Name'" prop="realName" required>
<el-input v-model="myform.realName" disabled />
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" required >
<el-form-item :label="language==0?'性别':'Gender'" required>
<el-radio-group v-model="myform.sex">
<el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
<el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
......@@ -29,86 +32,91 @@
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Date of Birth'">
<el-date-picker
v-model="myform.birth"
style="width: 100%;"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-model="myform.birth"
format="YYYY-MM-DD"
style="width: 100%;" type="date" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'代表':'Representing'" required v-if="user.utype=='1'">
<el-input v-model="myform.representing" disabled/>
<el-form-item v-if="user.utype=='1'" :label="language==0?'代表':'Representing'" required>
<el-input v-model="myform.representing" disabled />
</el-form-item>
<el-form-item :label="language==1?'Age group':'年龄组'" required v-if="user.utype=='1'">
<el-input v-model="myform.ageGroup" disabled/>
<el-form-item v-if="user.utype=='1'" :label="language==1?'Age group':'年龄组'" required>
<el-input v-model="myform.ageGroup" disabled />
</el-form-item>
<el-form-item :label="language==0?'舞种':'Division'" required v-if="user.utype=='1'">
<el-input v-model="myform.division" disabled/>
<el-form-item v-if="user.utype=='1'" :label="language==0?'舞种':'Division'" required>
<el-input v-model="myform.division" disabled />
</el-form-item>
<el-form-item :label="language==0?'状态':'Status'" required v-if="user.utype=='1'">
<el-input v-model="myform.wdsfStatus" disabled/>
<el-form-item v-if="user.utype=='1'" :label="language==0?'状态':'Status'" required>
<el-input v-model="myform.wdsfStatus" disabled />
</el-form-item>
<el-form-item :label="language==0?'证件号':'Passport number'" required v-if="user.utype=='1'">
<el-input v-model="myform.passportNumber" disabled/>
<el-form-item v-if="user.utype=='1'" :label="language==0?'证件号':'Passport number'" required>
<el-input v-model="myform.passportNumber" disabled />
</el-form-item>
<el-form-item :label="language==0?'有效证件':'Valid Passport'" required v-if="user.utype=='1'">
<image-upload v-model="myform.passportUrl" :limit="1" :is-show-tip="false"
:button-text="language==0?'上传':'Upload'"/>
<el-form-item v-if="user.utype=='1'" :label="language==0?'证件姓名':'Name on Document'" required>
<el-input v-model="myform.certName" disabled />
</el-form-item>
<el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" prop="wdsfMin" v-if="user.utype=='1'">
{{myform.wdsfMin}}
<el-form-item v-if="user.utype=='1'" :label="language==0?'有效证件':'Valid Passport'" required>
<image-upload
v-model="myform.passportUrl" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"
:limit="1"
/>
</el-form-item>
<el-form-item v-if="user.utype=='1'" :label="language==0?'WDSF会员号':'WDSF MIN'" prop="wdsfMin">
{{ myform.wdsfMin }}
</el-form-item>
<!-- <el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType">-->
<!-- <el-select v-model="myform.idcType" style="width: 100%">-->
<!-- <el-option-->
<!-- v-for="item in certificates"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode">-->
<!-- <el-input v-model="myform.idcCode" @blur="checkCode"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'类型':'Type'" required>-->
<!-- <el-select v-model="myform.type" style="width: 100%;">-->
<!-- <el-option :label="language==0?'业余':'amateur'" value="0"/>-->
<!-- <el-option :label="language==0?'专业':'Professional'" value="1"/>-->
<!-- <el-option :label="language==0?'大专院校':'Colleges and universities'" value="2"/>-->
<!-- <el-option :label="language==0?'其他':'Other'" value="3"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'邮箱':'Email'" required prop="email">-->
<!-- <el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType">-->
<!-- <el-select v-model="myform.idcType" style="width: 100%">-->
<!-- <el-option-->
<!-- v-for="item in certificates"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode">-->
<!-- <el-input v-model="myform.idcCode" @blur="checkCode"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'类型':'Type'" required>-->
<!-- <el-select v-model="myform.type" style="width: 100%;">-->
<!-- <el-option :label="language==0?'业余':'amateur'" value="0"/>-->
<!-- <el-option :label="language==0?'专业':'Professional'" value="1"/>-->
<!-- <el-option :label="language==0?'大专院校':'Colleges and universities'" value="2"/>-->
<!-- <el-option :label="language==0?'其他':'Other'" value="3"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'邮箱':'Email'" required prop="email">-->
<!-- <el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/>-->
<!-- </el-form-item>-->
</el-form>
<div class="text-center" v-if="user.utype=='1'||user.utype=='2'">
<el-button type="primary" class="btn-lineG" round @click="save">
{{language == 0 ? '确定修改' : 'Save'}}
<div v-if="user.utype=='1'||user.utype=='2'" class="text-center">
<el-button class="btn-lineG" round type="primary" @click="save">
{{ language == 0 ? '确定修改' : 'Save' }}
</el-button>
</div>
</div>
</div>
</el-card>
</div>
</template>
<script setup>
import {ref} from 'vue'
import {useRouter} from 'vue-router'
import {getCurrentInstance, onMounted} from '@vue/runtime-core'
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { getCurrentInstance, onMounted } from '@vue/runtime-core'
import * as match from '@/apiPc/match'
import {ElMessage, ElMessageBox} from 'element-plus'
import {nationList} from '@/assets/js/data'
import {getGroupInfo} from "@/apiPc/match";
import TeamInfo from "@/viewsPc/center/teamInfo";
import useUserStore from "@/store/modules/user";
import {useStorage} from "@vueuse/core/index";
const language= useStorage('language',0)
import { ElMessage, ElMessageBox } from 'element-plus'
import { nationList } from '@/assets/js/data'
import { getGroupInfo } from '@/apiPc/match'
import TeamInfo from '@/viewsPc/center/teamInfo'
import useUserStore from '@/store/modules/user'
import { useStorage } from '@vueuse/core/index'
const language = useStorage('language', 0)
const router = useRouter()
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const props = defineProps({
user: {
type: Object,
......@@ -116,13 +124,14 @@ const props = defineProps({
}
})
const rules = ref({
realName: [{required: true, message: '必填', trigger: 'blur'}],
sex: [{required: true, message: '必填', trigger: 'change'}],
idcType: [{required: true, message: '必填', trigger: 'change'}],
type: [{required: true, message: '必填', trigger: 'change'}],
idcCode: [{required: true, message: '必填', trigger: 'blur'}],
email: [{required: true, message: '必填', trigger: 'blur'}],
realName: [{ required: true, message: '必填', trigger: 'blur' }],
certName: [{ required: true, message: '必填', trigger: 'blur' }],
sex: [{ required: true, message: '必填', trigger: 'change' }],
idcType: [{ required: true, message: '必填', trigger: 'change' }],
type: [{ required: true, message: '必填', trigger: 'change' }],
idcCode: [{ required: true, message: '必填', trigger: 'blur' }],
email: [{ required: true, message: '必填', trigger: 'blur' }]
})
const activeName = ref('first')
const myform = ref({
......@@ -158,18 +167,17 @@ function getData() {
if (user.utype == '1') {
match.getMyPersonInfo().then(res => {
myform.value = res.data
if(language.value=='1'){
if (language.value == '1') {
myform.value.type = '1'
}
})
}
}
function save() {
match.saveMyBaseInfo(myform.value).then(res => {
ElMessage.success(language.value==0?'保存成功':'Save successfully')
})
match.saveMyBaseInfo(myform.value).then(res => {
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successfully')
})
}
function checkCode() {
......@@ -187,7 +195,7 @@ function checkCode() {
tmpStr = tmpStr.substring(0, 4) + '-' + tmpStr.substring(4, 6) + '-' + tmpStr.substring(6)
}
myform.value.birth = tmpStr
const res = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/
if (myform.value.idcCode && res.test(myform.value.idcCode)) {
const genderCode = myform.value.idcCode.charAt(16)
......@@ -204,12 +212,12 @@ function checkCode() {
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
.indexTitle {
margin: 20px 0 12px;
padding: 0 20px 15px;
border-bottom: 1px solid #e5e5e5;
h3 {
font-size: 16px;
color: var(--el-color-primary);
......
......@@ -59,19 +59,36 @@
<el-option v-for="l in labels" :key="l.value" :label="language==0?l.label:l.enlabel" :value="l.value" />
</el-select>
</el-form-item>
<el-form-item :label="language==0?'有效证件':'Valid Passport'" required>
<!-- <el-form-item :label="language==0?'有效证件':'Valid Passport'" required>-->
<!-- <image-upload-->
<!-- v-model="form.passportUrl" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"-->
<!-- :limit="1"-->
<!-- />-->
<!-- <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?'有效证件':'Valid Passport'" prop="" required>
<image-upload
v-model="form.passportUrl" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"
ref="uploadPassportRef"
v-model="form.passportUrl"
:action="'/common/getPersonInfoFromCert/6'"
: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,
<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-col>
<el-col :lg="12" class="touxiang">
<el-form-item :label="language==0?'个人照片':'Photo'" prop="picUrl">
......@@ -80,7 +97,9 @@
class="threeFour"
/>
</el-form-item>
<el-form-item :label="language==0?'证件姓名':'Name'" prop="certName">
<el-input v-model="form.certName" :disabled="editgay" />
</el-form-item>
<el-form-item
:label="language==0?'证件类型':'ID Type'" :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1"
prop="idcType"
......@@ -154,6 +173,7 @@ import { dayjs, ElMessage } from 'element-plus'
import _ from 'lodash'
import { useStorage } from '@vueuse/core/index'
import { checkWdsf, getCaptchaSms } from '@/apiPc/match'
import ImageUpload from '/@/components/ImageUpload/index.vue'
const language = useStorage('language', 0)
const certificates = ref([
......@@ -414,6 +434,23 @@ function giveBirthDay() {
}
}
// 有效证件
const ocrSuccess = (res) => {
// form.value.passportUrl = res.data.url
console.log(form.value.passportUrl)
if (res.code == 200) {
form.value.passportUrl = res.data.url
form.value.idcCode = res.data.code
form.value.birth = res.data.birth?.slice(0, 10)
form.value.sex = res.data.sex
form.value.certName = res.data.name
form.value.idcType = res.data.type == '3' ? '1' : '0'
} else if (res.code == 500) {
ElMessage.warning(res.msg)
form.value.passportCopy = ''
}
}
function submitForm() {
proxy.$refs['dialogRef'].validate((valid) => {
if (valid) {
......@@ -451,6 +488,7 @@ function submitForm() {
if (groupId.value != 0) {
// 团队
form.value.groupId = groupId.value
form.value.ocrFlag = '1'
match.savePersonForMyGroup(form.value).then(res => {
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
......@@ -466,6 +504,7 @@ function submitForm() {
})
} else {
if (isMe.value) {
form.value.ocrFlag = '1'
match.saveMyBaseInfo(form.value).then(res => {
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
......@@ -473,6 +512,7 @@ function submitForm() {
})
} else {
form.value.cptId = cptId.value
form.value.ocrFlag = '1'
match.savePersonForMyPerson(form.value).then(res => {
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
......
<template>
<el-dialog
v-model="show" :title="title" width="600px" append-to-body close-icon="CircleClose" center
:close-on-click-modal="false" class="pcloginpop"
destroy-on-close
v-model="show" :close-on-click-modal="false" :title="title" append-to-body center
class="pcloginpop"
close-icon="CircleClose" destroy-on-close
width="600px"
>
<div class="boxInvitation pd20">
<div class="text-center pd20" v-if="showR">
<img class="mauto" src="@/assets/dance/ok.png"/>
<!-- <h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>-->
<h4 class="text-center" v-if="language == 0">
<div v-if="showR" class="text-center pd20">
<img class="mauto" src="@/assets/dance/ok.png">
<!-- <h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>-->
<h4 v-if="language == 0" class="text-center">
我们已收到您的邀请函申请,并将尽快处理。请耐心等待。
</h4>
<h4 v-else>
Your invitation letter application has been received,<br/>
Your invitation letter application has been received,<br>
and we will process it as soon as possible.
<br/>
<br>
Please be patient while waiting.
</h4>
<el-button size="large" type="primary" @click="conti" round class="btn-lineG">
<el-button class="btn-lineG" round size="large" type="primary" @click="conti">
{{ language == 0 ? '继续提交' : 'Continue To Submit' }}
</el-button>
</div>
<el-form :model="form" :rules="rules" ref="iformRef" label-position="right" label-width="150px" v-else>
<el-form-item :label="language==0?'姓名':'Name'" required prop="name">
<el-input v-model="form.name" @input="handleInput"/>
<el-form
v-else ref="iformRef" :model="form" :rules="rules" label-position="right"
label-width="150px"
>
<!-- <el-form-item :label="language==0?'有效证件':'Passport Copy'" prop="passportCopy" required>-->
<!-- <image-upload-->
<!-- v-model="form.passportCopy" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"-->
<!-- :limit="1"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item :label="language==0?'有效证件':'Valid Passport'" prop="passportCopy" required>
<image-upload
ref="uploadPassportRef"
v-model="form.passportCopy"
:action="'/common/getPersonInfoFromCert/6'"
: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?'姓名':'Name'" prop="name" required>
<el-input v-model="form.name" @input="handleInput" />
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" required prop="gender">
<el-form-item :label="language==0?'护照号':'Passport No.'" prop="passportNo" required>
<el-input v-model="form.passportNo" />
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" prop="gender" required>
<el-radio-group v-model="form.gender">
<el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
<el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="language==0?'国籍':'Nationality'" required prop="nationality">
<el-select filterable v-model="form.nationality" style="width: 100%;">
<el-option v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName"
:value="item.id"/>
<el-form-item :label="language==0?'国籍':'Nationality'" prop="nationality" required>
<el-select v-model="form.nationality" filterable style="width: 100%;">
<el-option
v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Date of Birth'" required prop="birth">
<el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth" required>
<el-date-picker
v-model="form.birth"
style="width: 100%;" placeholder="YYYY-MM-DD"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-model="form.birth"
format="YYYY-MM-DD" placeholder="YYYY-MM-DD"
style="width: 100%;" type="date" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
<el-input v-model="form.email" type="email"/>
<div class="tip" v-if="language == 0">如以团队名义申请邀请函,建议统一填写领队邮箱。</div>
<div class="tip" v-else>
If a visa invitation letter is applied by the organization, it is recommended to fill in the email of the head of team.
<el-form-item :label="language==0?'邮箱':'Email'" prop="email" required>
<el-input v-model="form.email" type="email" />
<div v-if="language == 0" class="tip">如以团队名义申请邀请函,建议统一填写领队邮箱。</div>
<div v-else class="tip">
If a visa invitation letter is applied by the organization, it is recommended to fill in the email of the
head of team.
</div>
</el-form-item>
<el-form-item :label="language==0?'护照号':'Passport No.'" required prop="passportNo">
<el-input v-model="form.passportNo"/>
</el-form-item>
<el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy">
<image-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false"
:button-text="language==0?'上传':'Upload'"/>
</el-form-item>
<el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">
<el-form-item :label="language==0?'抵达日期':'Date of Arrival'" prop="arrival" required>
<el-date-picker
v-model="form.arrival" placeholder="YYYY-MM-DD"
style="width: 100%;"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-model="form.arrival" format="YYYY-MM-DD"
placeholder="YYYY-MM-DD"
style="width: 100%;" type="date" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'出发日期':'Date of Departure'" required prop="departure">
<el-form-item :label="language==0?'出发日期':'Date of Departure'" prop="departure" required>
<el-date-picker
v-model="form.departure"
style="width: 100%;" placeholder="YYYY-MM-DD"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-model="form.departure"
format="YYYY-MM-DD" placeholder="YYYY-MM-DD"
style="width: 100%;" type="date" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'备注':'Remark '">
<el-input type="textarea" v-model="form.remark" rows="3"/>
<el-input v-model="form.remark" rows="3" type="textarea" />
</el-form-item>
<div class="text-center">
<el-button type="primary" size="large" @click="submit" round class="btn-lineG">
<el-button class="btn-lineG" round size="large" type="primary" @click="submit">
{{ language == 0 ? '提交' : 'SUBMIT' }}
</el-button>
</div>
......@@ -90,17 +120,17 @@
</template>
<script setup>
import {useStorage} from "@vueuse/core/index";
import {getCurrentInstance, watch} from "vue";
import {nextTick} from "@vue/runtime-core";
import {ElMessage, ElMessageBox} from "element-plus";
import {addInvitation, countryList} from "@/apiPc/match";
import ImageUpload from "@/components/ImageUpload";
import { useStorage } from '@vueuse/core/index'
import { getCurrentInstance, watch, ref } from 'vue'
import { nextTick } from '@vue/runtime-core'
import { ElMessage, ElMessageBox } from 'element-plus'
import { addInvitation, countryList } from '@/apiPc/match'
import ImageUpload from '@/components/ImageUpload'
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const language = useStorage('language', 0)
const form = ref({
gender:'0'
gender: '0'
})
const show = ref(false)
const showR = ref(false)
......@@ -108,23 +138,24 @@ const title = ref('')
const countrys = ref([])
const cptId = ref('')
const rules = ref(
{
nationality: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
name: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
email: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
birth: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
passportNo: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
passportCopy: [{required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload'},],
arrival: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
departure: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
})
{
nationality: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }],
name: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter' }],
email: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter' }],
birth: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }],
passportNo: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter' }],
passportCopy: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload' }],
arrival: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }],
departure: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }]
})
const open = (params) => {
console.log(params)
show.value = true
title.value = params.title
cptId.value = params.cptId
}
defineExpose({open})
defineExpose({ open })
watch(show, (value) => {
if (!value) {
form.value = {
......@@ -145,10 +176,11 @@ function getCountryList() {
countrys.value = res.data
})
}
const handleInput = (value) => {
const regex = /^[a-zA-Z]*$/;
const regexCh = /^[\u4e00-\u9fa5]+$/;
if(language.value==0){
const regex = /^[a-zA-Z]*$/
const regexCh = /^[\u4e00-\u9fa5]+$/
if (language.value == 0) {
if (!regexCh.test(value)) {
form.value.name = ''
ElMessage.warning('请输入中文')
......@@ -172,24 +204,41 @@ const submit = () => {
}
if (valid) {
ElMessageBox.confirm(
language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
form.value.cptId = cptId.value
if (Array.isArray(form.value.passportCopy)) {
form.value.passportCopy = form.value.passportCopy[0].url
}
form.value.ocrFlag = '1'
addInvitation(form.value).then((res) => {
ElMessage.success(language.value == 0 ?'提交成功':'Successfully!')
ElMessage.success(language.value == 0 ? '提交成功' : 'Successfully!')
showR.value = true
})
})
}
})
}
const ocrSuccess = (res) => {
// form.value.passportUrl = res.data.url
console.log(form.value.passportUrl)
if (res.code == 200) {
form.value.passportCopy = res.data.url
form.value.passportNo = res.data.code
form.value.birth = res.data.birth?.slice(0, 10)
form.value.gender = res.data.sex
form.value.name = res.data.name
} else if (res.code == 500) {
ElMessage.warning(res.msg)
form.value.passportCopy = ''
}
}
const conti = () => {
showR.value = false
form.value = {
......@@ -198,11 +247,18 @@ const conti = () => {
}
</script>
<style scoped lang="scss">
.tip{font-size: 12px;}
<style lang="scss" scoped>
.tip {
font-size: 12px;
}
.boxInvitation {
width: 90%;
margin: auto
}
h4{font-size: 15px;line-height: 1.6;}
h4 {
font-size: 15px;
line-height: 1.6;
}
</style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!