fb8342d4 by 杨炀

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

2 parents 24537552 f3e5beef
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
2 <div class="app-container"> 2 <div class="app-container">
3 <div class="box"> 3 <div class="box">
4 <el-row :gutter="20"> 4 <el-row :gutter="20">
5 <el-col :lg="5" :md="5" :xl="6" :sm="8" :xs="8"> 5 <el-col :lg="5" :md="5" :sm="8" :xl="6" :xs="8">
6 <el-card class="mb20"> 6 <el-card class="mb20">
7 <div :class="language==0?'center-menu':'center-menu en-menu'"> 7 <div :class="language==0?'center-menu':'center-menu en-menu'">
8 <ul v-if="user.utype=='2'&&language==0"> 8 <ul v-if="user.utype=='2'&&language==0">
9 <li v-for="(m, i) in menus" 9 <li
10 v-for="(m, i) in menus"
10 :key="i" 11 :key="i"
11 :class="{ active: m.isActive }" 12 :class="{ active: m.isActive }"
12 > 13 >
...@@ -17,7 +18,8 @@ ...@@ -17,7 +18,8 @@
17 </li> 18 </li>
18 </ul> 19 </ul>
19 <ul v-if="user.utype=='2'&&language==1"> 20 <ul v-if="user.utype=='2'&&language==1">
20 <li v-for="(m, i) in menusEn" 21 <li
22 v-for="(m, i) in menusEn"
21 :key="i" 23 :key="i"
22 :class="{ active: m.isActive }" 24 :class="{ active: m.isActive }"
23 > 25 >
...@@ -78,8 +80,8 @@ ...@@ -78,8 +80,8 @@
78 </div> 80 </div>
79 </el-card> 81 </el-card>
80 </el-col> 82 </el-col>
81 <el-col :lg="19" :md="19" :xl="18" :sm="16" :xs="16"> 83 <el-col :lg="19" :md="19" :sm="16" :xl="18" :xs="16">
82 <router-view :user="user" class="rightPart"/> 84 <router-view :user="user" class="rightPart" />
83 </el-col> 85 </el-col>
84 </el-row> 86 </el-row>
85 </div> 87 </div>
...@@ -87,12 +89,12 @@ ...@@ -87,12 +89,12 @@
87 </template> 89 </template>
88 90
89 <script setup> 91 <script setup>
90 import {ref} from 'vue' 92 import { ref } from 'vue'
91 import {useRoute, useRouter} from 'vue-router' 93 import { useRoute, useRouter } from 'vue-router'
92 import {onMounted} from '@vue/runtime-core' 94 import { onMounted } from '@vue/runtime-core'
93 import useUserStore from '@/store/modules/user' 95 import useUserStore from '@/store/modules/user'
94 import _ from 'lodash' 96 import _ from 'lodash'
95 import {useStorage} from "@vueuse/core/index"; 97 import { useStorage } from '@vueuse/core/index'
96 98
97 const language = useStorage('language', 0) 99 const language = useStorage('language', 0)
98 100
...@@ -245,13 +247,13 @@ const menus3 = ref([ ...@@ -245,13 +247,13 @@ const menus3 = ref([
245 picUrl2: '/img/nav_29_dwn.png', 247 picUrl2: '/img/nav_29_dwn.png',
246 isActive: false 248 isActive: false
247 }, 249 },
248 { 250 // {
249 name: language.value == 0 ? '票务预订' : 'Ticket Reservation', 251 // name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
250 routeName: 'seat_order', 252 // routeName: 'seat_order',
251 picUrl1: '/img/c7.png', 253 // picUrl1: '/img/c7.png',
252 picUrl2: '/img/c7.png', 254 // picUrl2: '/img/c7.png',
253 isActive: false 255 // isActive: false
254 }, 256 // },
255 { 257 {
256 name: language.value == 0 ? '发票申请' : 'Electronic invoice', 258 name: language.value == 0 ? '发票申请' : 'Electronic invoice',
257 routeName: 'myKP', 259 routeName: 'myKP',
...@@ -281,14 +283,14 @@ const menus3En = ref([ ...@@ -281,14 +283,14 @@ const menus3En = ref([
281 picUrl1: '/img/nav_29.png', 283 picUrl1: '/img/nav_29.png',
282 picUrl2: '/img/nav_29_dwn.png', 284 picUrl2: '/img/nav_29_dwn.png',
283 isActive: false 285 isActive: false
284 },
285 {
286 name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
287 routeName: 'seat_order',
288 picUrl1: '/img/c7.png',
289 picUrl2: '/img/c7.png',
290 isActive: false
291 } 286 }
287 // {
288 // name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
289 // routeName: 'seat_order',
290 // picUrl1: '/img/c7.png',
291 // picUrl2: '/img/c7.png',
292 // isActive: false
293 // }
292 ]) 294 ])
293 const menusPersonal = ref([ 295 const menusPersonal = ref([
294 { 296 {
...@@ -319,13 +321,13 @@ const menusPersonal = ref([ ...@@ -319,13 +321,13 @@ const menusPersonal = ref([
319 picUrl2: '/img/nav_29_dwn.png', 321 picUrl2: '/img/nav_29_dwn.png',
320 isActive: false 322 isActive: false
321 }, 323 },
322 { 324 // {
323 name: language.value == 0 ? '票务预订' : 'Ticket Reservation', 325 // name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
324 routeName: 'seat_order', 326 // routeName: 'seat_order',
325 picUrl1: '/img/c7.png', 327 // picUrl1: '/img/c7.png',
326 picUrl2: '/img/c7.png', 328 // picUrl2: '/img/c7.png',
327 isActive: false 329 // isActive: false
328 }, 330 // },
329 { 331 {
330 name: language.value == 0 ? '系统消息' : 'System messages', 332 name: language.value == 0 ? '系统消息' : 'System messages',
331 routeName: 'mySms', 333 routeName: 'mySms',
...@@ -370,13 +372,13 @@ const menusPersonalEn = ref([ ...@@ -370,13 +372,13 @@ const menusPersonalEn = ref([
370 picUrl2: '/img/nav_29_dwn.png', 372 picUrl2: '/img/nav_29_dwn.png',
371 isActive: false 373 isActive: false
372 }, 374 },
373 { 375 // {
374 name: language.value == 0 ? '票务预订' : 'Ticket Reservation', 376 // name: language.value == 0 ? '票务预订' : 'Ticket Reservation',
375 routeName: 'seat_order', 377 // routeName: 'seat_order',
376 picUrl1: '/img/c7.png', 378 // picUrl1: '/img/c7.png',
377 picUrl2: '/img/c7.png', 379 // picUrl2: '/img/c7.png',
378 isActive: false 380 // isActive: false
379 }, 381 // },
380 { 382 {
381 name: language.value == 0 ? '系统消息' : 'System messages', 383 name: language.value == 0 ? '系统消息' : 'System messages',
382 routeName: 'mySms', 384 routeName: 'mySms',
...@@ -389,7 +391,7 @@ let currMenu ...@@ -389,7 +391,7 @@ let currMenu
389 onMounted(() => { 391 onMounted(() => {
390 console.log(route.query) 392 console.log(route.query)
391 if (!user.utype) { 393 if (!user.utype) {
392 router.push({name: 'home'}) 394 router.push({ name: 'home' })
393 return 395 return
394 } 396 }
395 if (user.utype == '1') { 397 if (user.utype == '1') {
...@@ -412,7 +414,6 @@ onMounted(() => { ...@@ -412,7 +414,6 @@ onMounted(() => {
412 }) 414 })
413 currMenu.isActive = true 415 currMenu.isActive = true
414 } 416 }
415
416 }) 417 })
417 418
418 const toInfo = (item, list) => { 419 const toInfo = (item, list) => {
...@@ -427,7 +428,7 @@ const toInfo = (item, list) => { ...@@ -427,7 +428,7 @@ const toInfo = (item, list) => {
427 } 428 }
428 </script> 429 </script>
429 430
430 <style scoped lang="scss"> 431 <style lang="scss" scoped>
431 :deep(.el-tabs__nav-wrap) { 432 :deep(.el-tabs__nav-wrap) {
432 padding: 0 15px; 433 padding: 0 15px;
433 } 434 }
......
...@@ -2,26 +2,29 @@ ...@@ -2,26 +2,29 @@
2 <div class="mb20"> 2 <div class="mb20">
3 <el-card :body-style="{'padding':'0'}"> 3 <el-card :body-style="{'padding':'0'}">
4 <div class="indexTitle"> 4 <div class="indexTitle">
5 <h3 class="leftboderTT" v-if="user.utype=='2'"> 5 <h3 v-if="user.utype=='2'" class="leftboderTT">
6 {{ language == 0 ? '机构基础信息' : 'ORGANIZATION BASIC INFORMATION' }}</h3> 6 {{ language == 0 ? '机构基础信息' : 'ORGANIZATION BASIC INFORMATION' }}
7 <h3 class="leftboderTT" v-if="user.utype=='1'">{{ 7 </h3>
8 language == 0 ? '个人基础信息' : 'Personal Basic Information' 8 <h3 v-if="user.utype=='1'" class="leftboderTT">
9 }}</h3> 9 {{ language == 0 ? '个人基础信息' : 'Personal Basic Information' }}
10 </h3>
10 </div> 11 </div>
11 <!-- uType字段 1 是个人 2是团体--> 12 <!-- uType字段 1 是个人 2是团体-->
12 <!-- {{user}}--> 13 <!-- {{user}}-->
13 <team-info :form="myform" v-if="user.utype=='2'"/> 14 <team-info v-if="user.utype=='2'" :form="myform" />
14 <div class="pd20" v-else> 15 <div v-else class="pd20">
15 <div class="d-form-border" style="margin-top: 0"> 16 <div class="d-form-border" style="margin-top: 0">
16 <el-form class="d-form" label-width="120" :rules="rules" ref="formref" 17 <el-form
17 :label-position="language==0?'left':'top'" style="max-width: 500px;margin: auto"> 18 ref="formref" :label-position="language==0?'left':'top'" :rules="rules" class="d-form"
19 label-width="120" style="max-width: 500px;margin: auto"
20 >
18 <el-form-item :label="language==0?'用户名':'Account'"> 21 <el-form-item :label="language==0?'用户名':'Account'">
19 {{ user.userName }} 22 {{ user.userName }}
20 </el-form-item> 23 </el-form-item>
21 <el-form-item :label="language==0?'姓名':'Real Name'" required prop="realName" v-if="user.utype=='1'"> 24 <el-form-item v-if="user.utype=='1'" :label="language==0?'姓名':'Real Name'" prop="realName" required>
22 <el-input v-model="myform.realName" disabled/> 25 <el-input v-model="myform.realName" disabled />
23 </el-form-item> 26 </el-form-item>
24 <el-form-item :label="language==0?'性别':'Gender'" required > 27 <el-form-item :label="language==0?'性别':'Gender'" required>
25 <el-radio-group v-model="myform.sex"> 28 <el-radio-group v-model="myform.sex">
26 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> 29 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
27 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> 30 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
...@@ -30,60 +33,65 @@ ...@@ -30,60 +33,65 @@
30 <el-form-item :label="language==0?'出生日期':'Date of Birth'"> 33 <el-form-item :label="language==0?'出生日期':'Date of Birth'">
31 <el-date-picker 34 <el-date-picker
32 v-model="myform.birth" 35 v-model="myform.birth"
33 style="width: 100%;" 36 format="YYYY-MM-DD"
34 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 37 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
35 /> 38 />
36 </el-form-item> 39 </el-form-item>
37 <el-form-item :label="language==0?'代表':'Representing'" required v-if="user.utype=='1'"> 40 <el-form-item v-if="user.utype=='1'" :label="language==0?'代表':'Representing'" required>
38 <el-input v-model="myform.representing" disabled/> 41 <el-input v-model="myform.representing" disabled />
39 </el-form-item> 42 </el-form-item>
40 <el-form-item :label="language==1?'Age group':'年龄组'" required v-if="user.utype=='1'"> 43 <el-form-item v-if="user.utype=='1'" :label="language==1?'Age group':'年龄组'" required>
41 <el-input v-model="myform.ageGroup" disabled/> 44 <el-input v-model="myform.ageGroup" disabled />
42 </el-form-item> 45 </el-form-item>
43 <el-form-item :label="language==0?'舞种':'Division'" required v-if="user.utype=='1'"> 46 <el-form-item v-if="user.utype=='1'" :label="language==0?'舞种':'Division'" required>
44 <el-input v-model="myform.division" disabled/> 47 <el-input v-model="myform.division" disabled />
45 </el-form-item> 48 </el-form-item>
46 <el-form-item :label="language==0?'状态':'Status'" required v-if="user.utype=='1'"> 49 <el-form-item v-if="user.utype=='1'" :label="language==0?'状态':'Status'" required>
47 <el-input v-model="myform.wdsfStatus" disabled/> 50 <el-input v-model="myform.wdsfStatus" disabled />
48 </el-form-item> 51 </el-form-item>
49 <el-form-item :label="language==0?'证件号':'Passport number'" required v-if="user.utype=='1'"> 52 <el-form-item v-if="user.utype=='1'" :label="language==0?'证件号':'Passport number'" required>
50 <el-input v-model="myform.passportNumber" disabled/> 53 <el-input v-model="myform.passportNumber" disabled />
51 </el-form-item> 54 </el-form-item>
52 <el-form-item :label="language==0?'有效证件':'Valid Passport'" required v-if="user.utype=='1'"> 55 <el-form-item v-if="user.utype=='1'" :label="language==0?'证件姓名':'Name on Document'" required>
53 <image-upload v-model="myform.passportUrl" :limit="1" :is-show-tip="false" 56 <el-input v-model="myform.certName" disabled />
54 :button-text="language==0?'上传':'Upload'"/>
55 </el-form-item> 57 </el-form-item>
56 <el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" prop="wdsfMin" v-if="user.utype=='1'"> 58 <el-form-item v-if="user.utype=='1'" :label="language==0?'有效证件':'Valid Passport'" required>
57 {{myform.wdsfMin}} 59 <image-upload
60 v-model="myform.passportUrl" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"
61 :limit="1"
62 />
63 </el-form-item>
64 <el-form-item v-if="user.utype=='1'" :label="language==0?'WDSF会员号':'WDSF MIN'" prop="wdsfMin">
65 {{ myform.wdsfMin }}
58 </el-form-item> 66 </el-form-item>
59 <!-- <el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType">--> 67 <!-- <el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType">-->
60 <!-- <el-select v-model="myform.idcType" style="width: 100%">--> 68 <!-- <el-select v-model="myform.idcType" style="width: 100%">-->
61 <!-- <el-option--> 69 <!-- <el-option-->
62 <!-- v-for="item in certificates"--> 70 <!-- v-for="item in certificates"-->
63 <!-- :key="item.value"--> 71 <!-- :key="item.value"-->
64 <!-- :label="item.label"--> 72 <!-- :label="item.label"-->
65 <!-- :value="item.value"--> 73 <!-- :value="item.value"-->
66 <!-- />--> 74 <!-- />-->
67 <!-- </el-select>--> 75 <!-- </el-select>-->
68 <!-- </el-form-item>--> 76 <!-- </el-form-item>-->
69 <!-- <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode">--> 77 <!-- <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode">-->
70 <!-- <el-input v-model="myform.idcCode" @blur="checkCode"/>--> 78 <!-- <el-input v-model="myform.idcCode" @blur="checkCode"/>-->
71 <!-- </el-form-item>--> 79 <!-- </el-form-item>-->
72 <!-- <el-form-item :label="language==0?'类型':'Type'" required>--> 80 <!-- <el-form-item :label="language==0?'类型':'Type'" required>-->
73 <!-- <el-select v-model="myform.type" style="width: 100%;">--> 81 <!-- <el-select v-model="myform.type" style="width: 100%;">-->
74 <!-- <el-option :label="language==0?'业余':'amateur'" value="0"/>--> 82 <!-- <el-option :label="language==0?'业余':'amateur'" value="0"/>-->
75 <!-- <el-option :label="language==0?'专业':'Professional'" value="1"/>--> 83 <!-- <el-option :label="language==0?'专业':'Professional'" value="1"/>-->
76 <!-- <el-option :label="language==0?'大专院校':'Colleges and universities'" value="2"/>--> 84 <!-- <el-option :label="language==0?'大专院校':'Colleges and universities'" value="2"/>-->
77 <!-- <el-option :label="language==0?'其他':'Other'" value="3"/>--> 85 <!-- <el-option :label="language==0?'其他':'Other'" value="3"/>-->
78 <!-- </el-select>--> 86 <!-- </el-select>-->
79 <!-- </el-form-item>--> 87 <!-- </el-form-item>-->
80 <!-- <el-form-item :label="language==0?'邮箱':'Email'" required prop="email">--> 88 <!-- <el-form-item :label="language==0?'邮箱':'Email'" required prop="email">-->
81 <!-- <el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/>--> 89 <!-- <el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/>-->
82 <!-- </el-form-item>--> 90 <!-- </el-form-item>-->
83 </el-form> 91 </el-form>
84 <div class="text-center" v-if="user.utype=='1'||user.utype=='2'"> 92 <div v-if="user.utype=='1'||user.utype=='2'" class="text-center">
85 <el-button type="primary" class="btn-lineG" round @click="save"> 93 <el-button class="btn-lineG" round type="primary" @click="save">
86 {{language == 0 ? '确定修改' : 'Save'}} 94 {{ language == 0 ? '确定修改' : 'Save' }}
87 </el-button> 95 </el-button>
88 </div> 96 </div>
89 97
...@@ -95,20 +103,20 @@ ...@@ -95,20 +103,20 @@
95 </template> 103 </template>
96 104
97 <script setup> 105 <script setup>
98 import {ref} from 'vue' 106 import { ref } from 'vue'
99 import {useRouter} from 'vue-router' 107 import { useRouter } from 'vue-router'
100 import {getCurrentInstance, onMounted} from '@vue/runtime-core' 108 import { getCurrentInstance, onMounted } from '@vue/runtime-core'
101 import * as match from '@/apiPc/match' 109 import * as match from '@/apiPc/match'
102 import {ElMessage, ElMessageBox} from 'element-plus' 110 import { ElMessage, ElMessageBox } from 'element-plus'
103 import {nationList} from '@/assets/js/data' 111 import { nationList } from '@/assets/js/data'
104 import {getGroupInfo} from "@/apiPc/match"; 112 import { getGroupInfo } from '@/apiPc/match'
105 import TeamInfo from "@/viewsPc/center/teamInfo"; 113 import TeamInfo from '@/viewsPc/center/teamInfo'
106 import useUserStore from "@/store/modules/user"; 114 import useUserStore from '@/store/modules/user'
107 import {useStorage} from "@vueuse/core/index"; 115 import { useStorage } from '@vueuse/core/index'
108 116
109 const language= useStorage('language',0) 117 const language = useStorage('language', 0)
110 const router = useRouter() 118 const router = useRouter()
111 const {proxy} = getCurrentInstance() 119 const { proxy } = getCurrentInstance()
112 const props = defineProps({ 120 const props = defineProps({
113 user: { 121 user: {
114 type: Object, 122 type: Object,
...@@ -116,12 +124,13 @@ const props = defineProps({ ...@@ -116,12 +124,13 @@ const props = defineProps({
116 } 124 }
117 }) 125 })
118 const rules = ref({ 126 const rules = ref({
119 realName: [{required: true, message: '必填', trigger: 'blur'}], 127 realName: [{ required: true, message: '必填', trigger: 'blur' }],
120 sex: [{required: true, message: '必填', trigger: 'change'}], 128 certName: [{ required: true, message: '必填', trigger: 'blur' }],
121 idcType: [{required: true, message: '必填', trigger: 'change'}], 129 sex: [{ required: true, message: '必填', trigger: 'change' }],
122 type: [{required: true, message: '必填', trigger: 'change'}], 130 idcType: [{ required: true, message: '必填', trigger: 'change' }],
123 idcCode: [{required: true, message: '必填', trigger: 'blur'}], 131 type: [{ required: true, message: '必填', trigger: 'change' }],
124 email: [{required: true, message: '必填', trigger: 'blur'}], 132 idcCode: [{ required: true, message: '必填', trigger: 'blur' }],
133 email: [{ required: true, message: '必填', trigger: 'blur' }]
125 134
126 }) 135 })
127 const activeName = ref('first') 136 const activeName = ref('first')
...@@ -158,17 +167,16 @@ function getData() { ...@@ -158,17 +167,16 @@ function getData() {
158 if (user.utype == '1') { 167 if (user.utype == '1') {
159 match.getMyPersonInfo().then(res => { 168 match.getMyPersonInfo().then(res => {
160 myform.value = res.data 169 myform.value = res.data
161 if(language.value=='1'){ 170 if (language.value == '1') {
162 myform.value.type = '1' 171 myform.value.type = '1'
163 } 172 }
164 }) 173 })
165 } 174 }
166
167 } 175 }
168 176
169 function save() { 177 function save() {
170 match.saveMyBaseInfo(myform.value).then(res => { 178 match.saveMyBaseInfo(myform.value).then(res => {
171 ElMessage.success(language.value==0?'保存成功':'Save successfully') 179 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successfully')
172 }) 180 })
173 } 181 }
174 182
...@@ -204,7 +212,7 @@ function checkCode() { ...@@ -204,7 +212,7 @@ function checkCode() {
204 212
205 </script> 213 </script>
206 214
207 <style scoped lang="scss"> 215 <style lang="scss" scoped>
208 .indexTitle { 216 .indexTitle {
209 margin: 20px 0 12px; 217 margin: 20px 0 12px;
210 padding: 0 20px 15px; 218 padding: 0 20px 15px;
......
...@@ -59,19 +59,36 @@ ...@@ -59,19 +59,36 @@
59 <el-option v-for="l in labels" :key="l.value" :label="language==0?l.label:l.enlabel" :value="l.value" /> 59 <el-option v-for="l in labels" :key="l.value" :label="language==0?l.label:l.enlabel" :value="l.value" />
60 </el-select> 60 </el-select>
61 </el-form-item> 61 </el-form-item>
62 <el-form-item :label="language==0?'有效证件':'Valid Passport'" required> 62 <!-- <el-form-item :label="language==0?'有效证件':'Valid Passport'" required>-->
63 <!-- <image-upload-->
64 <!-- v-model="form.passportUrl" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"-->
65 <!-- :limit="1"-->
66 <!-- />-->
67 <!-- <div class="tip">-->
68 <!-- <span v-if="language==0">请上传有效身份证件扫描件,用于核实身份信息、申请签证邀请函及购买保险等</span>-->
69 <!-- <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>-->
70 <!-- </div>-->
71 <!-- </el-form-item>-->
72
73 <el-form-item :label="language==0?'有效证件':'Valid Passport'" prop="" required>
63 <image-upload 74 <image-upload
64 v-model="form.passportUrl" :button-text="language==0?'上传':'Upload'" :is-show-tip="false" 75 ref="uploadPassportRef"
76 v-model="form.passportUrl"
77 :action="'/common/getPersonInfoFromCert/6'"
78 :button-text="language==0?'上传':'Upload'"
79 :is-show-tip="false"
65 :limit="1" 80 :limit="1"
81 param-name="pic"
82 @response="ocrSuccess"
66 /> 83 />
67 <div class="tip"> 84 <div class="tip">
68 <span v-if="language==0">请上传有效身份证件扫描件,用于核实身份信息、申请签证邀请函及购买保险等</span> 85 <span v-if="language==0">请上传有效身份证件扫描件,用于核实身份信息、申请签证邀请函及购买保险等 </span>
69 <span v-else>Please upload a scanned copy of your valid passport for verification of identity information, 86 <span v-else>
87 Please upload a scanned copy of your valid passport for verification of identity information,
70 application of visa invitation letter and purchasing insurance etc.</span> 88 application of visa invitation letter and purchasing insurance etc.</span>
71 </div> 89 </div>
72 </el-form-item>
73
74 90
91 </el-form-item>
75 </el-col> 92 </el-col>
76 <el-col :lg="12" class="touxiang"> 93 <el-col :lg="12" class="touxiang">
77 <el-form-item :label="language==0?'个人照片':'Photo'" prop="picUrl"> 94 <el-form-item :label="language==0?'个人照片':'Photo'" prop="picUrl">
...@@ -80,7 +97,9 @@ ...@@ -80,7 +97,9 @@
80 class="threeFour" 97 class="threeFour"
81 /> 98 />
82 </el-form-item> 99 </el-form-item>
83 100 <el-form-item :label="language==0?'证件姓名':'Name'" prop="certName">
101 <el-input v-model="form.certName" :disabled="editgay" />
102 </el-form-item>
84 <el-form-item 103 <el-form-item
85 :label="language==0?'证件类型':'ID Type'" :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1" 104 :label="language==0?'证件类型':'ID Type'" :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1"
86 prop="idcType" 105 prop="idcType"
...@@ -154,6 +173,7 @@ import { dayjs, ElMessage } from 'element-plus' ...@@ -154,6 +173,7 @@ import { dayjs, ElMessage } from 'element-plus'
154 import _ from 'lodash' 173 import _ from 'lodash'
155 import { useStorage } from '@vueuse/core/index' 174 import { useStorage } from '@vueuse/core/index'
156 import { checkWdsf, getCaptchaSms } from '@/apiPc/match' 175 import { checkWdsf, getCaptchaSms } from '@/apiPc/match'
176 import ImageUpload from '/@/components/ImageUpload/index.vue'
157 177
158 const language = useStorage('language', 0) 178 const language = useStorage('language', 0)
159 const certificates = ref([ 179 const certificates = ref([
...@@ -414,6 +434,23 @@ function giveBirthDay() { ...@@ -414,6 +434,23 @@ function giveBirthDay() {
414 } 434 }
415 } 435 }
416 436
437 // 有效证件
438 const ocrSuccess = (res) => {
439 // form.value.passportUrl = res.data.url
440 console.log(form.value.passportUrl)
441 if (res.code == 200) {
442 form.value.passportUrl = res.data.url
443 form.value.idcCode = res.data.code
444 form.value.birth = res.data.birth?.slice(0, 10)
445 form.value.sex = res.data.sex
446 form.value.certName = res.data.name
447 form.value.idcType = res.data.type == '3' ? '1' : '0'
448 } else if (res.code == 500) {
449 ElMessage.warning(res.msg)
450 form.value.passportCopy = ''
451 }
452 }
453
417 function submitForm() { 454 function submitForm() {
418 proxy.$refs['dialogRef'].validate((valid) => { 455 proxy.$refs['dialogRef'].validate((valid) => {
419 if (valid) { 456 if (valid) {
...@@ -451,6 +488,7 @@ function submitForm() { ...@@ -451,6 +488,7 @@ function submitForm() {
451 if (groupId.value != 0) { 488 if (groupId.value != 0) {
452 // 团队 489 // 团队
453 form.value.groupId = groupId.value 490 form.value.groupId = groupId.value
491 form.value.ocrFlag = '1'
454 match.savePersonForMyGroup(form.value).then(res => { 492 match.savePersonForMyGroup(form.value).then(res => {
455 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') 493 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
456 show.value = false 494 show.value = false
...@@ -466,6 +504,7 @@ function submitForm() { ...@@ -466,6 +504,7 @@ function submitForm() {
466 }) 504 })
467 } else { 505 } else {
468 if (isMe.value) { 506 if (isMe.value) {
507 form.value.ocrFlag = '1'
469 match.saveMyBaseInfo(form.value).then(res => { 508 match.saveMyBaseInfo(form.value).then(res => {
470 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') 509 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
471 show.value = false 510 show.value = false
...@@ -473,6 +512,7 @@ function submitForm() { ...@@ -473,6 +512,7 @@ function submitForm() {
473 }) 512 })
474 } else { 513 } else {
475 form.value.cptId = cptId.value 514 form.value.cptId = cptId.value
515 form.value.ocrFlag = '1'
476 match.savePersonForMyPerson(form.value).then(res => { 516 match.savePersonForMyPerson(form.value).then(res => {
477 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') 517 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
478 show.value = false 518 show.value = false
......
1 <template> 1 <template>
2 <el-dialog 2 <el-dialog
3 v-model="show" :title="title" width="600px" append-to-body close-icon="CircleClose" center 3 v-model="show" :close-on-click-modal="false" :title="title" append-to-body center
4 :close-on-click-modal="false" class="pcloginpop" 4 class="pcloginpop"
5 destroy-on-close 5 close-icon="CircleClose" destroy-on-close
6 width="600px"
6 > 7 >
7 <div class="boxInvitation pd20">
8 8
9 <div class="text-center pd20" v-if="showR"> 9 <div class="boxInvitation pd20">
10 <img class="mauto" src="@/assets/dance/ok.png"/> 10 <div v-if="showR" class="text-center pd20">
11 <!-- <h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>--> 11 <img class="mauto" src="@/assets/dance/ok.png">
12 <h4 class="text-center" v-if="language == 0"> 12 <!-- <h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>-->
13 <h4 v-if="language == 0" class="text-center">
13 我们已收到您的邀请函申请,并将尽快处理。请耐心等待。 14 我们已收到您的邀请函申请,并将尽快处理。请耐心等待。
14 </h4> 15 </h4>
15 <h4 v-else> 16 <h4 v-else>
16 Your invitation letter application has been received,<br/> 17 Your invitation letter application has been received,<br>
17 and we will process it as soon as possible. 18 and we will process it as soon as possible.
18 <br/> 19 <br>
19 Please be patient while waiting. 20 Please be patient while waiting.
20 </h4> 21 </h4>
21 <el-button size="large" type="primary" @click="conti" round class="btn-lineG"> 22 <el-button class="btn-lineG" round size="large" type="primary" @click="conti">
22 {{ language == 0 ? '继续提交' : 'Continue To Submit' }} 23 {{ language == 0 ? '继续提交' : 'Continue To Submit' }}
23 </el-button> 24 </el-button>
24 </div> 25 </div>
25 26
26 <el-form :model="form" :rules="rules" ref="iformRef" label-position="right" label-width="150px" v-else> 27 <el-form
27 <el-form-item :label="language==0?'姓名':'Name'" required prop="name"> 28 v-else ref="iformRef" :model="form" :rules="rules" label-position="right"
28 <el-input v-model="form.name" @input="handleInput"/> 29 label-width="150px"
30 >
31 <!-- <el-form-item :label="language==0?'有效证件':'Passport Copy'" prop="passportCopy" required>-->
32 <!-- <image-upload-->
33 <!-- v-model="form.passportCopy" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"-->
34 <!-- :limit="1"-->
35 <!-- />-->
36 <!-- </el-form-item>-->
37
38 <el-form-item :label="language==0?'有效证件':'Valid Passport'" prop="passportCopy" required>
39 <image-upload
40 ref="uploadPassportRef"
41 v-model="form.passportCopy"
42 :action="'/common/getPersonInfoFromCert/6'"
43 :button-text="language==0?'上传':'Upload'"
44 :is-show-tip="false"
45 :limit="1"
46 param-name="pic"
47 @response="ocrSuccess"
48 />
49 <div class="tip">
50 <span v-if="language==0">请上传有效身份证件扫描件,用于核实身份信息、申请签证邀请函及购买保险等 </span>
51 <span v-else>
52 Please upload a scanned copy of your valid passport for verification of identity information,
53 application of visa invitation letter and purchasing insurance etc.</span>
54 </div>
55
29 </el-form-item> 56 </el-form-item>
30 <el-form-item :label="language==0?'性别':'Gender'" required prop="gender"> 57 <el-form-item :label="language==0?'姓名':'Name'" prop="name" required>
58 <el-input v-model="form.name" @input="handleInput" />
59 </el-form-item>
60 <el-form-item :label="language==0?'护照号':'Passport No.'" prop="passportNo" required>
61 <el-input v-model="form.passportNo" />
62 </el-form-item>
63 <el-form-item :label="language==0?'性别':'Gender'" prop="gender" required>
31 <el-radio-group v-model="form.gender"> 64 <el-radio-group v-model="form.gender">
32 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> 65 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
33 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> 66 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
34 </el-radio-group> 67 </el-radio-group>
35 </el-form-item> 68 </el-form-item>
36 <el-form-item :label="language==0?'国籍':'Nationality'" required prop="nationality"> 69 <el-form-item :label="language==0?'国籍':'Nationality'" prop="nationality" required>
37 <el-select filterable v-model="form.nationality" style="width: 100%;"> 70 <el-select v-model="form.nationality" filterable style="width: 100%;">
38 <el-option v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName" 71 <el-option
39 :value="item.id"/> 72 v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName"
73 :value="item.id"
74 />
40 </el-select> 75 </el-select>
41 </el-form-item> 76 </el-form-item>
42 <el-form-item :label="language==0?'出生日期':'Date of Birth'" required prop="birth"> 77 <el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth" required>
43 <el-date-picker 78 <el-date-picker
44 v-model="form.birth" 79 v-model="form.birth"
45 style="width: 100%;" placeholder="YYYY-MM-DD" 80 format="YYYY-MM-DD" placeholder="YYYY-MM-DD"
46 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 81 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
47 /> 82 />
48 </el-form-item> 83 </el-form-item>
49 <el-form-item :label="language==0?'邮箱':'Email'" required prop="email"> 84 <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required>
50 <el-input v-model="form.email" type="email"/> 85 <el-input v-model="form.email" type="email" />
51 <div class="tip" v-if="language == 0">如以团队名义申请邀请函,建议统一填写领队邮箱。</div> 86 <div v-if="language == 0" class="tip">如以团队名义申请邀请函,建议统一填写领队邮箱。</div>
52 <div class="tip" v-else> 87 <div v-else class="tip">
53 If a visa invitation letter is applied by the organization, it is recommended to fill in the email of the head of team. 88 If a visa invitation letter is applied by the organization, it is recommended to fill in the email of the
89 head of team.
54 </div> 90 </div>
55 </el-form-item> 91 </el-form-item>
56 <el-form-item :label="language==0?'护照号':'Passport No.'" required prop="passportNo"> 92
57 <el-input v-model="form.passportNo"/> 93 <el-form-item :label="language==0?'抵达日期':'Date of Arrival'" prop="arrival" required>
58 </el-form-item>
59 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy">
60 <image-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false"
61 :button-text="language==0?'上传':'Upload'"/>
62 </el-form-item>
63 <el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">
64 <el-date-picker 94 <el-date-picker
65 v-model="form.arrival" placeholder="YYYY-MM-DD" 95 v-model="form.arrival" format="YYYY-MM-DD"
66 style="width: 100%;" 96 placeholder="YYYY-MM-DD"
67 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 97 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
68 /> 98 />
69 </el-form-item> 99 </el-form-item>
70 <el-form-item :label="language==0?'出发日期':'Date of Departure'" required prop="departure"> 100 <el-form-item :label="language==0?'出发日期':'Date of Departure'" prop="departure" required>
71 <el-date-picker 101 <el-date-picker
72 v-model="form.departure" 102 v-model="form.departure"
73 style="width: 100%;" placeholder="YYYY-MM-DD" 103 format="YYYY-MM-DD" placeholder="YYYY-MM-DD"
74 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 104 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
75 /> 105 />
76 </el-form-item> 106 </el-form-item>
77 <el-form-item :label="language==0?'备注':'Remark '"> 107 <el-form-item :label="language==0?'备注':'Remark '">
78 <el-input type="textarea" v-model="form.remark" rows="3"/> 108 <el-input v-model="form.remark" rows="3" type="textarea" />
79 </el-form-item> 109 </el-form-item>
80 110
81 <div class="text-center"> 111 <div class="text-center">
82 <el-button type="primary" size="large" @click="submit" round class="btn-lineG"> 112 <el-button class="btn-lineG" round size="large" type="primary" @click="submit">
83 {{ language == 0 ? '提交' : 'SUBMIT' }} 113 {{ language == 0 ? '提交' : 'SUBMIT' }}
84 </el-button> 114 </el-button>
85 </div> 115 </div>
...@@ -90,17 +120,17 @@ ...@@ -90,17 +120,17 @@
90 </template> 120 </template>
91 121
92 <script setup> 122 <script setup>
93 import {useStorage} from "@vueuse/core/index"; 123 import { useStorage } from '@vueuse/core/index'
94 import {getCurrentInstance, watch} from "vue"; 124 import { getCurrentInstance, watch, ref } from 'vue'
95 import {nextTick} from "@vue/runtime-core"; 125 import { nextTick } from '@vue/runtime-core'
96 import {ElMessage, ElMessageBox} from "element-plus"; 126 import { ElMessage, ElMessageBox } from 'element-plus'
97 import {addInvitation, countryList} from "@/apiPc/match"; 127 import { addInvitation, countryList } from '@/apiPc/match'
98 import ImageUpload from "@/components/ImageUpload"; 128 import ImageUpload from '@/components/ImageUpload'
99 129
100 const {proxy} = getCurrentInstance() 130 const { proxy } = getCurrentInstance()
101 const language = useStorage('language', 0) 131 const language = useStorage('language', 0)
102 const form = ref({ 132 const form = ref({
103 gender:'0' 133 gender: '0'
104 }) 134 })
105 const show = ref(false) 135 const show = ref(false)
106 const showR = ref(false) 136 const showR = ref(false)
...@@ -109,14 +139,14 @@ const countrys = ref([]) ...@@ -109,14 +139,14 @@ const countrys = ref([])
109 const cptId = ref('') 139 const cptId = ref('')
110 const rules = ref( 140 const rules = ref(
111 { 141 {
112 nationality: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 142 nationality: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }],
113 name: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},], 143 name: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter' }],
114 email: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},], 144 email: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter' }],
115 birth: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 145 birth: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }],
116 passportNo: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},], 146 passportNo: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter' }],
117 passportCopy: [{required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload'},], 147 passportCopy: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload' }],
118 arrival: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 148 arrival: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }],
119 departure: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 149 departure: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }]
120 }) 150 })
121 const open = (params) => { 151 const open = (params) => {
122 console.log(params) 152 console.log(params)
...@@ -124,7 +154,8 @@ const open = (params) => { ...@@ -124,7 +154,8 @@ const open = (params) => {
124 title.value = params.title 154 title.value = params.title
125 cptId.value = params.cptId 155 cptId.value = params.cptId
126 } 156 }
127 defineExpose({open}) 157 defineExpose({ open })
158
128 watch(show, (value) => { 159 watch(show, (value) => {
129 if (!value) { 160 if (!value) {
130 form.value = { 161 form.value = {
...@@ -145,10 +176,11 @@ function getCountryList() { ...@@ -145,10 +176,11 @@ function getCountryList() {
145 countrys.value = res.data 176 countrys.value = res.data
146 }) 177 })
147 } 178 }
179
148 const handleInput = (value) => { 180 const handleInput = (value) => {
149 const regex = /^[a-zA-Z]*$/; 181 const regex = /^[a-zA-Z]*$/
150 const regexCh = /^[\u4e00-\u9fa5]+$/; 182 const regexCh = /^[\u4e00-\u9fa5]+$/
151 if(language.value==0){ 183 if (language.value == 0) {
152 if (!regexCh.test(value)) { 184 if (!regexCh.test(value)) {
153 form.value.name = '' 185 form.value.name = ''
154 ElMessage.warning('请输入中文') 186 ElMessage.warning('请输入中文')
...@@ -182,14 +214,31 @@ const submit = () => { ...@@ -182,14 +214,31 @@ const submit = () => {
182 if (Array.isArray(form.value.passportCopy)) { 214 if (Array.isArray(form.value.passportCopy)) {
183 form.value.passportCopy = form.value.passportCopy[0].url 215 form.value.passportCopy = form.value.passportCopy[0].url
184 } 216 }
217 form.value.ocrFlag = '1'
185 addInvitation(form.value).then((res) => { 218 addInvitation(form.value).then((res) => {
186 ElMessage.success(language.value == 0 ?'提交成功':'Successfully!') 219 ElMessage.success(language.value == 0 ? '提交成功' : 'Successfully!')
187 showR.value = true 220 showR.value = true
188 }) 221 })
189 }) 222 })
190 } 223 }
191 }) 224 })
192 } 225 }
226
227 const ocrSuccess = (res) => {
228 // form.value.passportUrl = res.data.url
229 console.log(form.value.passportUrl)
230 if (res.code == 200) {
231 form.value.passportCopy = res.data.url
232 form.value.passportNo = res.data.code
233 form.value.birth = res.data.birth?.slice(0, 10)
234 form.value.gender = res.data.sex
235 form.value.name = res.data.name
236 } else if (res.code == 500) {
237 ElMessage.warning(res.msg)
238 form.value.passportCopy = ''
239 }
240 }
241
193 const conti = () => { 242 const conti = () => {
194 showR.value = false 243 showR.value = false
195 form.value = { 244 form.value = {
...@@ -198,11 +247,18 @@ const conti = () => { ...@@ -198,11 +247,18 @@ const conti = () => {
198 } 247 }
199 </script> 248 </script>
200 249
201 <style scoped lang="scss"> 250 <style lang="scss" scoped>
202 .tip{font-size: 12px;} 251 .tip {
252 font-size: 12px;
253 }
254
203 .boxInvitation { 255 .boxInvitation {
204 width: 90%; 256 width: 90%;
205 margin: auto 257 margin: auto
206 } 258 }
207 h4{font-size: 15px;line-height: 1.6;} 259
260 h4 {
261 font-size: 15px;
262 line-height: 1.6;
263 }
208 </style> 264 </style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!