5f4bdea4 by zhangmeng

添加姓名

1 parent 4852d228
......@@ -282,6 +282,7 @@ const form = ref({})
const showPersonList = ref(false)
const signEndTime = ref('')
const userId = ref('')
onMounted(() => {
if (useUserStore().user) {
userId.value = useUserStore().user.userId
......
<template>
<el-dialog
v-model="show" :title="title" width="1100px" 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="1100px"
>
<el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="150px" inline>
<el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" inline label-width="150px">
<el-row :gutter="30" class="mt30">
<el-col :lg="12" class="touxiang">
<el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'">
<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 v-if="language!=0" label="WDSF code" prop="wdsfMin">
<span v-if="form.wdsfMin">{{form.wdsfMin}}</span>
<el-input v-else v-model="form.wdsfMin" type="text"/>
<span v-if="form.wdsfMin">{{ form.wdsfMin }}</span>
<el-input v-else v-model="form.wdsfMin" type="text" />
</el-form-item>
<el-form-item :label="language==0?'姓名':'Name'" prop="realName" required>
<el-input v-model="form.realName" :disabled="editgay&&form.labelArr.indexOf('0')>-1"/>
<el-form-item :label="language==0?'姓名':'Name'" prop="realName" required>
<el-input v-model="form.realName" :disabled="editgay&&form.labelArr.indexOf('0')>-1" />
</el-form-item>
<el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required>
<el-select v-model="form.idcType" style="width: 100%;" :disabled="editgay">
<el-select v-model="form.idcType" :disabled="editgay" style="width: 100%;">
<el-option
v-for="item in certificates"
:key="item.value"
:label="item.label"
:value="item.value"
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" required>
<el-input v-model="form.idcCode" @blur="giveBirthDay" :disabled="editgay"/>
<el-input v-model="form.idcCode" :disabled="editgay" @blur="giveBirthDay" />
</el-form-item>
<el-form-item :label="language==0?'有效证件':'Valid Passport'" :required="form.idcType!='0'">
<image-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" />
<image-upload v-model="form.passportUrl" :is-show-tip="false" :limit="1" />
<span class="tip">*请上传有效证件扫描件</span>
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" prop="sex">
<el-radio-group v-model="form.sex" :disabled="editgay&&form.labelArr.indexOf('0')>-1">
<el-radio value="0">{{ language==0?'女':'female' }}</el-radio>
<el-radio value="1">{{ language==0?'男':'male' }}</el-radio>
<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-col>
<el-col :lg="12">
<el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth" required>
<el-date-picker
v-model="form.birth" :disabled="editgay&&form.labelArr.indexOf('0')>-1"
style="width: 100%;"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
:disabled-date="disabledBirth"
v-model="form.birth" :disabled="editgay&&form.labelArr.indexOf('0')>-1"
: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?'主要会员角色':'roles'" prop="labelArr">
<el-select v-model="form.labelArr" multiple>
<el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/>
<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?'手机号码':'Phone'" prop="phone" required>
<el-input v-model="form.phone" type="text"/>
<el-input v-model="form.phone" type="text" />
<span class="tip">*若未成年人没有手机号,请填写家长号码</span>
</el-form-item>
<el-form-item :label="language==0?'所属国家/地区':'Country'" prop="countryId" required>
<el-select filterable v-model="form.countryId" style="width: 100%;" @change="changeCountryId">
<el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/>
<el-select v-model="form.countryId" filterable style="width: 100%;" @change="changeCountryId">
<el-option
v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'详细地址':'Address'" prop="address">
<el-cascader v-if="form.countryId == 240"
v-model="form.regionId"
style="width: 100%;margin-bottom: 15px"
:options="regionsList"
:props="{ label:'text' }"
<el-cascader
v-if="form.countryId == 240"
v-model="form.regionId"
:options="regionsList"
:props="{ label:'text' }"
style="width: 100%;margin-bottom: 15px"
/>
<el-input v-model="form.address" type="textarea" :rows="4"/>
<el-input v-model="form.address" :rows="4" type="textarea" />
</el-form-item>
<!-- <el-form-item v-if="language=='0'" :label="language==0?'WDSF会员号':'WDSF code'">-->
<!-- <span v-if="editgay&&form.wdsfMin">{{form.wdsfMin}}</span>-->
<!-- <el-input v-else v-model="wdsfMin" type="text"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required>-->
<!-- <el-input v-model="form.email"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item v-if="language=='0'" :label="language==0?'WDSF会员号':'WDSF code'">-->
<!-- <span v-if="editgay&&form.wdsfMin">{{form.wdsfMin}}</span>-->
<!-- <el-input v-else v-model="wdsfMin" type="text"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required>-->
<!-- <el-input v-model="form.email"/>-->
<!-- </el-form-item>-->
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ language==0?'确定':'Save' }}</el-button>
<el-button class="btn-lineG w200px" round type="primary" @click="submitForm">{{
language == 0 ? '确定' : 'Save'
}}
</el-button>
</div>
</template>
</el-dialog>
</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 {dayjs, ElMessage} from 'element-plus'
import { dayjs, ElMessage } from 'element-plus'
import _ from 'lodash'
import {useStorage} from "@vueuse/core/index";
const language= useStorage('language',0)
import { useStorage } from '@vueuse/core/index'
const language = useStorage('language', 0)
const certificates = ref([
{
value: '0',
......@@ -125,61 +134,73 @@ const certificates = ref([
label: language.value == 0 ? '其他' : 'Other'
}
])
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const emit = defineEmits(['submitForm'])
const data = reactive({
form: {
// countryId: 240
sex:'0'
sex: '0'
},
wdsfMin:'',
wdsfMin: '',
rules: {
realName: [{required: true, message: '必填', trigger: 'blur'}],
realName: [{ required: true, message: '必填', trigger: 'blur' }],
// countryId: [{required: true, message: '必填', trigger: 'change'}],
idcType: [{required: true, message: '必填', trigger: 'change'}],
idcCode: [{required: true, message: '必填', trigger: 'blur'}],
phone: [{required: true, message: '必填', trigger: 'blur'}],
idcType: [{ required: true, message: '必填', trigger: 'change' }],
idcCode: [{ required: true, message: '必填', trigger: 'blur' }],
phone: [{ required: true, message: '必填', trigger: 'blur' }],
// regionId: [{ required: true, message: '必填', trigger: 'change' }],
birth: [{required: true, message: '必填', trigger: 'change'}],
birth: [{ required: true, message: '必填', trigger: 'change' }],
// address: [{ required: true, message: '必填', trigger: 'blur' }],
// picUrl: [{required: true, message: '必填', trigger: 'blur'}],
sex: [{required: true, message: '必填', trigger: 'change'}],
labelArr: [{required: true, message: '必填', trigger: 'change'}]
sex: [{ required: true, message: '必填', trigger: 'change' }],
labelArr: [{ required: true, message: '必填', trigger: 'change' }]
},
rules_cn:{
realName: [{required: true, message: 'required', trigger: 'blur'}],
rules_cn: {
realName: [{ required: true, message: 'required', trigger: 'blur' }],
// countryId: [{required: true, message: 'required', trigger: 'change'}],
idcType: [{required: true, message: 'required', trigger: 'change'}],
idcCode: [{required: true, message: 'required', trigger: 'blur'}],
phone: [{required: true, message: 'required', trigger: 'blur'}],
idcType: [{ required: true, message: 'required', trigger: 'change' }],
idcCode: [{ required: true, message: 'required', trigger: 'blur' }],
phone: [{ required: true, message: 'required', trigger: 'blur' }],
// regionId: [{ required: true, message: 'required', trigger: 'change' }],
birth: [{required: true, message: 'required', trigger: 'change'}],
birth: [{ required: true, message: 'required', trigger: 'change' }],
// address: [{ required: true, message: 'required', trigger: 'blur' }],
// picUrl: [{required: true, message: 'required', trigger: 'blur'}],
sex: [{required: true, message: 'required', trigger: 'change'}],
labelArr: [{required: true, message: 'required', trigger: 'change'}]
sex: [{ required: true, message: 'required', trigger: 'change' }],
labelArr: [{ required: true, message: 'required', trigger: 'change' }]
},
show: false,
countryList: [],
regionsList: [],
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: '添加选手信息',
groupId: '0',
isMe:false
isMe: false
})
const {wdsfMin, form, rules,rules_cn, show, countryList, regionsList, title, groupId, labels,uType,isMe} = toRefs(data)
const {
wdsfMin,
form,
rules,
rules_cn,
show,
countryList,
regionsList,
title,
groupId,
labels,
uType,
isMe
} = toRefs(data)
onMounted(() => {
getCountryList()
getRegionsList()
})
const editgay = ref(false)
const open = (params) => {
......@@ -188,17 +209,17 @@ const open = (params) => {
groupId.value = params.groupId || '0'
isMe.value = params.isMe
wdsfMin.value = ''
if(params.label){
form.value.labelArr= [params.label]
if (params.label) {
form.value.labelArr = [params.label]
} else {
form.value.labelArr = []
}
if(language.value == 0){
if (language.value == 0) {
form.value.countryId = 240
form.value.idcType = '0'
}
if(isMe.value){
//个人
if (isMe.value) {
// 个人
match.getMyPersonInfo().then(res => {
form.value = res.data
form.value.id = res.data.id
......@@ -225,13 +246,13 @@ const open = (params) => {
}
}
}
defineExpose({open})
defineExpose({ open })
watch(show, (value) => {
if (!value) {
form.value = {
sex:'0'
sex: '0'
}
if(language.value == 0){
if (language.value == 0) {
form.value.countryId = 240
}
}
......@@ -239,8 +260,9 @@ watch(show, (value) => {
// proxy.$refs['dialogRef'].clearValidate()
})
})
function reset(){
if( editgay.value ){
function reset() {
if (editgay.value) {
match.getPersonInfoById(form.value.id).then(res => {
form.value = res.data
if (form.value.label) {
......@@ -250,9 +272,11 @@ function reset(){
})
}
}
function disabledBirth(time) {
return time.getTime() > new Date().getTime()
}
function getCountryList() {
match.countryList().then(res => {
countryList.value = res.data
......@@ -272,7 +296,7 @@ function getRegionsList() {
}
function checkCode() {
if (form.value.idcType=='0' && form.value.idcCode) {
if (form.value.idcType == '0' && form.value.idcCode) {
var obj = {
idcCode: form.value.idcCode,
name: form.value.realName
......@@ -302,7 +326,7 @@ function giveBirthDay() {
tmpStr = tmpStr.substring(0, 4) + '-' + tmpStr.substring(4, 6) + '-' + tmpStr.substring(6)
}
form.value.birth = tmpStr
const res = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/
if (form.value.idcCode && res.test(form.value.idcCode)) {
const genderCode = form.value.idcCode.charAt(16)
......@@ -329,31 +353,31 @@ function submitForm() {
return
}
// 验证手机号
if (form.value.idcType == 0&&form.value.phone) {
if (form.value.idcType == 0 && form.value.phone) {
var pattern = /^1[3456789]\d{9}$/
if (!pattern.test(form.value.phone)) {
ElMessage.warning(language.value == 0 ?'请输入正确的手机号':'Please enter the correct mobile phone number')
ElMessage.warning(language.value == 0 ? '请输入正确的手机号' : 'Please enter the correct mobile phone number')
return
}
}
if(form.value.idcType != 0&&!form.value.passportUrl){
ElMessage.warning(language.value == 0 ? '请上传有效证件' :'Please upload your passport file')
if (form.value.idcType != 0 && !form.value.passportUrl) {
ElMessage.warning(language.value == 0 ? '请上传有效证件' : 'Please upload your passport file')
return
}
if (typeof (form.value.regionId) === 'object') {
form.value.regionId = _.last(form.value.regionId)
}
form.value.label = form.value.labelArr.toString()
if(Array.isArray(form.value.passportUrl)){
if (Array.isArray(form.value.passportUrl)) {
form.value.passportUrl = form.value.passportUrl[0].url
}
if(wdsfMin.value){
if (wdsfMin.value) {
form.value.wdsfMin = wdsfMin.value
}
if (groupId.value != 0) {
// 团队
form.value.groupId = groupId.value
if (form.value.idcType=='0' && form.value.idcCode) {
if (form.value.idcType == '0' && form.value.idcCode) {
var obj = {
idcCode: form.value.idcCode,
name: form.value.realName
......@@ -371,20 +395,20 @@ function submitForm() {
if (editgay.value) {
// id不是0
match.editPersonInfo(form.value).then(res => {
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
emit('submitForm')
})
} else {
if(isMe.value){
if (isMe.value) {
match.saveMyBaseInfo(form.value).then(res => {
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
emit('submitForm')
})
} else {
match.savePersonForMyPerson(form.value).then(res => {
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
emit('submitForm')
})
......@@ -394,15 +418,17 @@ function submitForm() {
}
})
}
function saveGroupMember() {
match.savePersonForMyGroup(form.value).then(res => {
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
emit('submitForm')
}).catch(err => {
reset()
})
}
function cancel() {
show.value = false
delete wdsfMin.value
......@@ -412,12 +438,12 @@ function cancel() {
<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;
......@@ -428,7 +454,7 @@ function cancel() {
font-size: 13px;
color: #999;
margin: 10px 0;
i {
color: red;
margin: 0 4px 0 0;
......@@ -440,7 +466,7 @@ function cancel() {
width: 320px;
height: 200px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 320px;
height: 200px;
......@@ -459,7 +485,7 @@ function cancel() {
width: 140px;
height: 200px;
}
}
.el-form--inline .el-form-item {
......@@ -472,7 +498,7 @@ function cancel() {
background: linear-gradient(#ed2c22, #fe6d45);
margin-right: 0;
height: 52px;
span {
color: #fff;
}
......
<template>
<el-dialog
v-model="show" :title="title" width="1100px" 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="1100px"
>
<!-- 国际赛事随行人员-->
<el-form ref="dialogRef" :model="form" :rules="language==0?rules_cn:rules" label-width="140px"
>
<!-- 国际赛事随行人员-->
<el-form ref="dialogRef" :model="form" :rules="language==0?rules_cn:rules" label-width="140px">
<el-row :gutter="30" class="mt30">
<el-col :lg="12" class="touxiang">
<el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" v-if="form.wdsfMin">
<el-form-item v-if="form.wdsfMin" :label="language==0?'WDSF会员号':'WDSF MIN'">
{{ form.wdsfMin }}
</el-form-item>
<el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" v-else>
<el-input type="number" v-model="card" @change="resetCode" >
<el-form-item v-else :label="language==0?'WDSF会员号':'WDSF MIN'">
<el-input v-model="card" type="number" @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>
</template>
</el-input>
<a class="text-primary text-sm mt10" href="https://www.worlddancesport.org/Athlete/List" target="_blank">
<el-icon><Link /></el-icon>
{{language==0?'去WDSF官网查询我的会员号':'Search my WSDF MIN on the WDSF official website'}}
<el-icon>
<Link />
</el-icon>
{{ language == 0 ? '去WDSF官网查询我的会员号' : 'Search my WSDF MIN on the WDSF official website' }}
</a>
</el-form-item>
<el-form-item :label="language==0?'姓氏':'Surname'" prop="xing" :required="!editDis">
<el-input v-model="form.xing" :disabled="editDis"/>
<el-form-item :label="language==0?'姓氏':'Surname'" :required="!editDis" prop="xing">
<el-input v-model="form.xing" :disabled="editDis" />
</el-form-item>
<el-form-item :label="language==0?'名':'Name'" prop="ming" required>
<el-input v-model="form.ming" :disabled="editDis"/>
<el-input v-model="form.ming" :disabled="editDis" />
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" prop="sex">
<el-radio-group v-model="form.sex">
......@@ -42,92 +44,102 @@
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.wdsfMin" :label="language==0?'代表':'Representing'" required>
<el-input v-model="form.representing" disabled/>
<el-input v-model="form.representing" disabled />
</el-form-item>
<el-form-item v-else :label="language==0?'所属国家/地区':'Nationality'" prop="countryId" required>
<el-select filterable v-model="form.countryId" style="width: 100%;" @change="changeCountry">
<el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName"
:value="item.id"/>
<el-select v-model="form.countryId" filterable style="width: 100%;" @change="changeCountry">
<el-option
v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'主要会员角色':'Roles'" prop="labelArr">
<el-select v-model="form.labelArr" multiple>
<el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/>
<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>
<image-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false"
:button-text="language==0?'上传':'Upload'"/>
<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-col>
<el-col :lg="12" class="touxiang">
<el-form-item prop="picUrl" :label="language==0?'个人照片':'Photo'">
<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?'证件类型':'ID Type'" prop="idcType"
:required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1">
<el-select v-model="form.idcType" style="width: 100%;" :disabled="editgay">
<el-form-item
:label="language==0?'证件类型':'ID Type'" :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1"
prop="idcType"
>
<el-select v-model="form.idcType" :disabled="editgay" style="width: 100%;">
<el-option
v-for="item in certificates"
:key="item.value"
:label="item.label"
:value="item.value"
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"
:required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1">
<el-input v-model="form.idcCode" :disabled="editgay" @blur="giveBirthDay"/>
<el-form-item
:label="language==0?'证件号码':'ID NO'" :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1"
prop="idcCode"
>
<el-input v-model="form.idcCode" :disabled="editgay" @blur="giveBirthDay" />
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth"
:required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1"
>
<el-form-item
:label="language==0?'出生日期':'Date of Birth'" :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1"
prop="birth"
>
<el-date-picker
v-model="form.birth" :disabled="form.idcType=='0'"
style="width: 100%;" :disabled-date="disabledBirth"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-model="form.birth" :disabled="form.idcType=='0'"
: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?'手机号码':'Phone'" prop="phone">
<el-input v-model="form.phone" type="text"/>
<el-input v-model="form.phone" type="text" />
</el-form-item>
<el-form-item :label="language==0?'详细地址':'Address'" prop="address">
<el-cascader v-if="form.countryId == 240"
v-model="form.regionId"
style="width: 100%;margin-bottom: 15px"
:options="regionsList"
:props="{ label:'text' }"
<el-cascader
v-if="form.countryId == 240"
v-model="form.regionId"
:options="regionsList"
:props="{ label:'text' }"
style="width: 100%;margin-bottom: 15px"
/>
<el-input v-model="form.address" type="textarea" :rows="4"/>
<el-input v-model="form.address" :rows="4" type="textarea" />
</el-form-item>
<!-- <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required>-->
<!-- <el-input v-model="form.email"/>-->
<!-- </el-form-item>-->
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm">
{{language == 0 ? '确定' : 'Save'}}
<el-button class="btn-lineG w200px" round type="primary" @click="submitForm">
{{ language == 0 ? '确定' : 'Save' }}
</el-button>
</div>
</template>
......@@ -135,19 +147,19 @@
</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 {dayjs, ElMessage} from 'element-plus'
import { dayjs, ElMessage } from 'element-plus'
import _ from 'lodash'
import {useStorage} from "@vueuse/core/index";
import {checkWdsf, getCaptchaSms} from "@/apiPc/match";
import { useStorage } from '@vueuse/core/index'
import { checkWdsf, getCaptchaSms } from '@/apiPc/match'
const language = useStorage('language', 0)
const certificates = ref([
{
value: '0',
disabled: language.value == 0 ? false : true,
disabled: language.value != 0,
label: language.value == 0 ? '居民身份证' : 'Resident ID card'
},
{
......@@ -159,7 +171,7 @@ const certificates = ref([
label: language.value == 0 ? '其他' : 'Other'
}
])
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const emit = defineEmits(['submitForm'])
const data = reactive({
form: {
......@@ -167,9 +179,9 @@ const data = reactive({
// sex: '0'
},
rules_cn: {
xing: [{required: true, message: '必填', trigger: 'blur'}],
ming: [{required: true, message: '必填', trigger: 'blur'}],
countryId: [{required: true, message: '必填', trigger: 'change'}],
xing: [{ required: true, message: '必填', trigger: 'blur' }],
ming: [{ required: true, message: '必填', trigger: 'blur' }],
countryId: [{ required: true, message: '必填', trigger: 'change' }],
// idcType: [{required: true, message: '必填', trigger: 'change'}],
// idcCode: [{required: true, message: '必填', trigger: 'blur'}],
// phone: [{required: true, message: '必填', trigger: 'blur'}],
......@@ -177,13 +189,13 @@ const data = reactive({
// birth: [{required: true, message: '必填', trigger: 'change'}],
// address: [{ required: true, message: '必填', trigger: 'blur' }],
// picUrl: [{required: true, message: '必填', trigger: 'blur'}],
sex: [{required: true, message: '必填', trigger: 'change'}],
labelArr: [{required: true, message: '必填', trigger: 'change'}]
sex: [{ required: true, message: '必填', trigger: 'change' }],
labelArr: [{ required: true, message: '必填', trigger: 'change' }]
},
rules: {
xing: [{required: true, message: 'required', trigger: 'blur'}],
ming: [{required: true, message: 'required', trigger: 'blur'}],
countryId: [{required: true, message: 'required', trigger: 'change'}],
xing: [{ required: true, message: 'required', trigger: 'blur' }],
ming: [{ required: true, message: 'required', trigger: 'blur' }],
countryId: [{ required: true, message: 'required', trigger: 'change' }],
// idcType: [{required: true, message: 'required', trigger: 'change'}],
// idcCode: [{required: true, message: 'required', trigger: 'blur'}],
// phone: [{required: true, message: 'required', trigger: 'blur'}],
......@@ -191,20 +203,20 @@ const data = reactive({
// birth: [{required: true, message: 'required', trigger: 'change'}],
// address: [{ required: true, message: 'required', trigger: 'blur' }],
// picUrl: [{required: true, message: 'required', trigger: 'blur'}],
sex: [{required: true, message: 'required', trigger: 'change'}],
labelArr: [{required: true, message: 'required', trigger: 'change'}]
sex: [{ required: true, message: 'required', trigger: 'change' }],
labelArr: [{ required: true, message: 'required', trigger: 'change' }]
},
show: false,
countryList: [],
regionsList: [],
labels: [
{value: '0', label: '运动员', enlabel: 'Athletes'},
{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: 'Athletes' },
{ 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: '添加选手信息',
groupId: '0',
......@@ -224,13 +236,12 @@ const {
groupId,
labels,
uType,
isMe,isCodeTrue
isMe, isCodeTrue
} = toRefs(data)
const card = ref('')
onMounted(() => {
getCountryList()
getRegionsList()
})
const editgay = ref(false)
const editDis = ref(false)
......@@ -252,10 +263,10 @@ const open = (params) => {
match.getPersonInfoById(params.id).then(res => {
form.value = res.data
form.value.id = params.id
if(form.value.wdsfMin){
if (form.value.wdsfMin) {
editDis.value = true
}
if(form.value.idcType=='3'){
if (form.value.idcType == '3') {
form.value.idcType = ''
form.value.idcCode = ''
}
......@@ -267,9 +278,8 @@ const open = (params) => {
} else {
editgay.value = false
}
}
defineExpose({open})
defineExpose({ open })
watch(show, (value) => {
if (!value) {
form.value = {
......@@ -285,17 +295,21 @@ watch(show, (value) => {
// proxy.$refs['dialogRef'].clearValidate()
})
})
function disabledBirth(time) {
return time.getTime() > new Date().getTime()
}
function resetCode() {
isCodeTrue.value = false
}
function getCountryList() {
match.countryList().then(res => {
countryList.value = res.data
})
}
function checkCard() {
if (!card.value) {
if (language.value == 0) {
......@@ -306,7 +320,7 @@ function checkCard() {
return
}
// isShow.value = true
checkWdsf({card: card.value}).then(res => {
checkWdsf({ card: card.value }).then(res => {
if (res.data.wdsfFlag == '0') {
if (language.value == 0) {
ElMessage.warning('WDSF会员号错误')
......@@ -323,7 +337,7 @@ function checkCard() {
}
return
}
if(res.data.min){
if (res.data.min) {
editDis.value = true
form.value.wdsfMin = res.data.min
form.value.xing = res.data.surname
......@@ -338,6 +352,7 @@ function checkCard() {
}
})
}
function getRegionsList() {
match.regionsList().then(res => {
regionsList.value = res.data
......@@ -364,15 +379,16 @@ function checkCode() {
}
function changeCountry() {
if( form.value.countryId == 240 ){
if (form.value.countryId == 240) {
form.value.idcType = '0'
}
}
function giveBirthDay() {
// 判断身份证正确性/赋值生日
if (form.value.idcType == '0') {
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(form.value.idcCode))) {
ElMessage.warning(language.value == 0 ? '请输入正确的身份证号码' :'Please enter the correct Resident ID card')
ElMessage.warning(language.value == 0 ? '请输入正确的身份证号码' : 'Please enter the correct Resident ID card')
} else {
let tmpStr = ''
if (form.value.idcCode.length == 15) {
......@@ -384,7 +400,7 @@ function giveBirthDay() {
tmpStr = tmpStr.substring(0, 4) + '-' + tmpStr.substring(4, 6) + '-' + tmpStr.substring(6)
}
form.value.birth = tmpStr
const res = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/
if (form.value.idcCode && res.test(form.value.idcCode)) {
const genderCode = form.value.idcCode.charAt(16)
......@@ -397,6 +413,7 @@ function giveBirthDay() {
}
}
}
function submitForm() {
proxy.$refs['dialogRef'].validate((valid) => {
if (valid) {
......@@ -413,24 +430,24 @@ function submitForm() {
// return
// }
// }
if(!editDis.value){
if(!form.value.xing){
ElMessage.warning(language.value == 0 ? '请填写姓' :'Please fill in surname')
if (!editDis.value) {
if (!form.value.xing) {
ElMessage.warning(language.value == 0 ? '请填写姓' : 'Please fill in surname')
return
}
}
if(!form.value.passportUrl){
ElMessage.warning(language.value == 0 ? '请上传护照文件' :'Please upload your passport file')
if (!form.value.passportUrl) {
ElMessage.warning(language.value == 0 ? '请上传护照文件' : 'Please upload your passport file')
return
}
if (typeof (form.value.regionId) === 'object') {
form.value.regionId = _.last(form.value.regionId)
}
if(Array.isArray(form.value.passportUrl)){
if (Array.isArray(form.value.passportUrl)) {
form.value.passportUrl = form.value.passportUrl[0].url
}
form.value.label = form.value.labelArr.toString()
if (groupId.value != 0) {
// 团队
form.value.groupId = groupId.value
......@@ -476,12 +493,12 @@ function cancel() {
<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;
......@@ -492,7 +509,7 @@ function cancel() {
font-size: 13px;
color: #999;
margin: 10px 0;
i {
color: red;
margin: 0 4px 0 0;
......@@ -504,7 +521,7 @@ function cancel() {
width: 320px;
height: 200px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 320px;
height: 200px;
......@@ -523,7 +540,7 @@ function cancel() {
width: 140px;
height: 200px;
}
}
.el-form--inline .el-form-item {
......@@ -536,12 +553,13 @@ function cancel() {
background: linear-gradient(#ed2c22, #fe6d45);
margin-right: 0;
height: 52px;
span {
color: #fff;
}
}
}
.el-input-group__append button.el-button, .el-input-group__append button.el-button:hover {
color: var(--el-color-primary);
background: #efefff;
......
<template>
<el-dialog
v-model="show" :title="title" width="1100px" 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="1100px"
>
<!-- 国际赛事-->
<el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline>
<!-- 国际赛事-->
<el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" inline label-width="120px">
<el-row :gutter="30" class="mt30">
<el-col :lg="12" class="touxiang">
<el-form-item prop="picUrl" :label="language==0?'个人照片':'Photo'">
<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?'WDSF会员号':'WDSF MIN'" v-if="form.id">
<el-form-item v-if="form.id" :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="form.wdsfMin" @change="resetCode" >
<el-form-item v-else :label="language==0?'WDSF会员号':'WDSF MIN'" required>
<el-input v-model="form.wdsfMin" 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>
......@@ -31,88 +32,94 @@
</el-input>
</el-form-item>
<el-form-item :label="language==0?'姓氏':'Surname'" prop="xing">
<el-input v-model="form.xing" disabled/>
<el-input v-model="form.xing" disabled />
</el-form-item>
<el-form-item :label="language==0?'名':'Name'" prop="ming" required>
<el-input v-model="form.ming" disabled/>
<el-input v-model="form.ming" disabled />
</el-form-item>
<el-form-item :label="language==0?'证件类型':'ID Type'" prop="idcType" required>
<el-select v-model="form.idcType" style="width: 100%;" :disabled="editgay">
<el-select v-model="form.idcType" :disabled="editgay" style="width: 100%;">
<el-option
v-for="item in certificates"
:key="item.value"
:label="item.label"
:value="item.value"
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" required>
<el-input v-model="form.idcCode" @blur="checkCode" :disabled="editgay"/>
<el-input v-model="form.idcCode" :disabled="editgay" @blur="checkCode" />
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" prop="sex">
<el-radio-group v-model="form.sex" :disabled="form.idcType=='0'">
<el-radio value="0">{{ language==0?'女':'female' }}</el-radio>
<el-radio value="1">{{ language==0?'男':'male' }}</el-radio>
<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-col>
<el-col :lg="12">
<el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth">
<el-date-picker
v-model="form.birth" :disabled="form.idcType=='0'"
style="width: 100%;" :disabled-date="disabledBirth"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-model="form.birth" :disabled="form.idcType=='0'"
: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?'主要会员角色':'Roles'" prop="labelArr">
<el-select v-model="form.labelArr" multiple>
<el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/>
<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?'手机号码':'Phone'" prop="phone">
<el-input v-model="form.phone" type="number"/>
<el-input v-model="form.phone" type="number" />
</el-form-item>
<el-form-item :label="language==0?'所属国家/地区':'Country'" prop="countryId" required>
<el-select disabled filterable v-model="form.countryId" style="width: 100%;" @change="changeCountryId">
<el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/>
<el-select v-model="form.countryId" disabled filterable style="width: 100%;" @change="changeCountryId">
<el-option
v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'详细地址':'Address'" prop="address">
<el-cascader v-if="form.countryId == 240"
v-model="form.regionId"
style="width: 100%;margin-bottom: 15px"
:options="regionsList"
:props="{ label:'text' }"
<el-cascader
v-if="form.countryId == 240"
v-model="form.regionId"
:options="regionsList"
:props="{ label:'text' }"
style="width: 100%;margin-bottom: 15px"
/>
<el-input v-model="form.address" type="textarea" :rows="4"/>
<el-input v-model="form.address" :rows="4" type="textarea" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<Vcode :show="isShow" :z-index="3000" @success="codeSuccess()"></Vcode>
<Vcode :show="isShow" :z-index="3000" @success="codeSuccess()" />
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ language==0?'确定':'Save' }}</el-button>
<el-button class="btn-lineG w200px" round type="primary" @click="submitForm">{{
language == 0 ? '确定' : 'Save'
}}
</el-button>
</div>
</template>
</el-dialog>
</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 {useStorage} from "@vueuse/core/index";
import {checkWdsf, getCaptchaSms} from "@/apiPc/match";
const language= useStorage('language',0)
import { useStorage } from '@vueuse/core/index'
import { checkWdsf, getCaptchaSms } from '@/apiPc/match'
const language = useStorage('language', 0)
const certificates = ref([
{
value: '0',
......@@ -127,50 +134,62 @@ const certificates = ref([
label: language.value == 0 ? '其他' : 'Other'
}
])
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const emit = defineEmits(['submitForm'])
const data = reactive({
form: {
// countryId: 240
sex:'0'
sex: '0'
},
rules_cn:{
rules_cn: {
// xing: [{required: true, message: 'required', trigger: 'blur'}],
ming: [{required: true, message: 'required', trigger: 'blur'}],
ming: [{ required: true, message: 'required', trigger: 'blur' }],
// countryId: [{required: true, message: 'required', trigger: 'change'}],
idcType: [{required: true, message: 'required', trigger: 'change'}],
idcCode: [{required: true, message: 'required', trigger: 'blur'}],
idcType: [{ required: true, message: 'required', trigger: 'change' }],
idcCode: [{ required: true, message: 'required', trigger: 'blur' }],
// phone: [{required: true, message: 'required', trigger: 'blur'}],
// regionId: [{ required: true, message: 'required', trigger: 'change' }],
// birth: [{required: true, message: 'required', trigger: 'change'}],
// address: [{ required: true, message: 'required', trigger: 'blur' }],
// picUrl: [{required: true, message: 'required', trigger: 'blur'}],
sex: [{required: true, message: 'required', trigger: 'change'}],
labelArr: [{required: true, message: 'required', trigger: 'change'}]
sex: [{ required: true, message: 'required', trigger: 'change' }],
labelArr: [{ required: true, message: 'required', trigger: 'change' }]
},
show: false,
countryList: [],
regionsList: [],
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: '添加选手信息',
groupId: '0',
showRequire: false,
isMe:false
isMe: false
})
const {showRequire, form, rules,rules_cn, show, countryList, regionsList, title, groupId, labels,uType,isMe} = toRefs(data)
const {
showRequire,
form,
rules,
rules_cn,
show,
countryList,
regionsList,
title,
groupId,
labels,
uType,
isMe
} = toRefs(data)
const isShow = ref(false)
onMounted(() => {
getCountryList()
getRegionsList()
})
const editgay = ref(false)
const open = (params) => {
......@@ -179,15 +198,15 @@ const open = (params) => {
title.value = params.title
groupId.value = params.groupId || '0'
isMe.value = params.isMe
if(params.label){
form.value.labelArr= [params.label]
if (params.label) {
form.value.labelArr = [params.label]
}
if(language.value == 0){
if (language.value == 0) {
form.value.countryId = 240
form.value.idcType = '0'
}
if(isMe.value){
//个人
if (isMe.value) {
// 个人
match.getMyPersonInfo().then(res => {
form.value = res.data
form.value.id = res.data.id
......@@ -214,13 +233,13 @@ const open = (params) => {
}
}
}
defineExpose({open})
defineExpose({ open })
watch(show, (value) => {
if (!value) {
form.value = {
sex:'0'
sex: '0'
}
if(language.value == 0){
if (language.value == 0) {
form.value.countryId = 240
}
}
......@@ -228,6 +247,7 @@ watch(show, (value) => {
// proxy.$refs['dialogRef'].clearValidate()
})
})
function checkCard() {
if (!form.value.card) {
if (language.value == 0) {
......@@ -239,26 +259,27 @@ function checkCard() {
}
isShow.value = true
}
function codeSuccess(msg) {
console.log('验证通过' + msg);
console.log('验证通过' + msg)
isShow.value = false
checkWdsf({card: form.value.wdsfMin}).then(res => {
form.value = res.data
if(form.value.passportUrl){
}
if (!form.value.sex) {
form.value.sex = '0'
}
if (form.value.wdsfFlag == '0') {
form.value = 0
if (language.value == 0) {
ElMessage.warning('WDSF卡号错误')
} else {
ElMessage.warning('WDSF MIN is Error')
}
checkWdsf({ card: form.value.wdsfMin }).then(res => {
form.value = res.data
if (form.value.passportUrl) {
}
if (!form.value.sex) {
form.value.sex = '0'
}
if (form.value.wdsfFlag == '0') {
form.value = 0
if (language.value == 0) {
ElMessage.warning('WDSF卡号错误')
} else {
ElMessage.warning('WDSF MIN is Error')
}
})
}
})
}
......@@ -281,7 +302,7 @@ function getRegionsList() {
}
function checkCode() {
if (form.value.idcType=='0' && form.value.idcCode) {
if (form.value.idcType == '0' && form.value.idcCode) {
giveBirthDay()
var obj = {
idcType: form.value.idcType,
......@@ -315,7 +336,7 @@ function giveBirthDay() {
tmpStr = tmpStr.substring(0, 4) + '-' + tmpStr.substring(4, 6) + '-' + tmpStr.substring(6)
}
form.value.birth = tmpStr
const res = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/
if (form.value.idcCode && res.test(form.value.idcCode)) {
const genderCode = form.value.idcCode.charAt(16)
......@@ -341,21 +362,21 @@ function submitForm() {
if (showRequire.value) {
var pattern = /^1[3456789]\d{9}$/
if (!pattern.test(form.value.phone)) {
ElMessage.warning(language.value == 0 ?'请输入正确的手机号':'Please enter the correct mobile phone number')
ElMessage.warning(language.value == 0 ? '请输入正确的手机号' : 'Please enter the correct mobile phone number')
return
}
}
if (typeof (form.value.regionId) === 'object') {
form.value.regionId = _.last(form.value.regionId)
}
form.value.label = form.value.labelArr.toString()
if (groupId.value != 0) {
// 团队
form.value.groupId = groupId.value
match.savePersonForMyGroup(form.value).then(res => {
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
emit('submitForm')
})
......@@ -363,20 +384,20 @@ function submitForm() {
if (editgay.value) {
// id不是0
match.editPersonInfo(form.value).then(res => {
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
emit('submitForm')
})
} else {
if(isMe.value){
if (isMe.value) {
match.saveMyBaseInfo(form.value).then(res => {
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
emit('submitForm')
})
} else {
match.savePersonForMyPerson(form.value).then(res => {
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
show.value = false
emit('submitForm')
})
......@@ -390,6 +411,7 @@ function submitForm() {
function cancel() {
show.value = false
}
function disabledBirth(time) {
return time.getTime() > new Date().getTime()
}
......@@ -398,12 +420,12 @@ function disabledBirth(time) {
<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;
......@@ -414,7 +436,7 @@ function disabledBirth(time) {
font-size: 13px;
color: #999;
margin: 10px 0;
i {
color: red;
margin: 0 4px 0 0;
......@@ -426,7 +448,7 @@ function disabledBirth(time) {
width: 320px;
height: 200px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 320px;
height: 200px;
......@@ -445,7 +467,7 @@ function disabledBirth(time) {
width: 140px;
height: 200px;
}
}
.el-form--inline .el-form-item {
......@@ -458,12 +480,13 @@ function disabledBirth(time) {
background: linear-gradient(#ed2c22, #fe6d45);
margin-right: 0;
height: 52px;
span {
color: #fff;
}
}
}
.el-input-group__append button.el-button, .el-input-group__append button.el-button:hover {
color: var(--el-color-primary);
background: #efefff;
......
......@@ -72,7 +72,7 @@
<el-form-item :label="language==0?'有效证件':'Valid Passport'" required>
<image-upload
ref="uploadPassportRef" v-model="form.passportUrl" :action="'/common/getPersonInfoFromCert/3'"
ref="uploadPassportRef" v-model="form.passportUrl" :action="'/common/getPersonInfoFromCert/6'"
:button-text="language==0?'上传':'Upload'"
:is-show-tip="false"
:limit="1"
......@@ -87,6 +87,10 @@
</div>
</el-form-item>
<el-form-item :label="language==0?'姓名':'Name'" required>
<el-input v-model="form.certName" />
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" required>
<el-radio-group v-model="form.sex">
<el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
......@@ -275,6 +279,10 @@ function submitForm() {
ElMessage.warning(language.value == 0 ? '请选择性别' : 'Please select your gender')
return
}
if (!form.value.certName) {
ElMessage.warning(language.value == 0 ? '请输入姓名' : 'Please enter your name')
return
}
if (!form.value.passportUrl || form.value.passportUrl == '' || form.value.passportUrl.length == 0) {
ElMessage.warning(language.value == 0 ? '请上传证件' : 'Please upload passport file')
return
......
<template>
<el-dialog v-model="show" :title="title" width="1000px" append-to-body @close="close">
<el-dialog v-model="show" :title="title" append-to-body width="1000px" @close="close">
<div class="funcBtns">
<el-button type="primary" @click="addMember">
{{ language == 0 ? '添加选手' : 'Add Player' }}
</el-button>
<!-- <el-button type="primary" plain @click="importSportman" v-if="!isNational">-->
<!-- {{language == 0 ? '导入选手' : 'Import Player'}}-->
<!-- </el-button>-->
<!-- <el-button type="primary" plain @click="importSportman" v-if="!isNational">-->
<!-- {{language == 0 ? '导入选手' : 'Import Player'}}-->
<!-- </el-button>-->
</div>
<div class="from-Card">
<el-form :inline="true" :model="query" class="mt20" label-width="60" size="small">
<el-form-item :label="language==0?'姓名':'Name'">
<el-input v-model="query.realName" style="width: 120px;" clearable/>
<el-input v-model="query.realName" clearable style="width: 120px;" />
</el-form-item>
<el-form-item :label="language==0?'证件类型':'ID Type'" v-if="!isNational">
<el-select v-model="query.idcType" style="width: 100px;" clearable @change="getList">
<el-form-item v-if="!isNational" :label="language==0?'证件类型':'ID Type'">
<el-select v-model="query.idcType" clearable style="width: 100px;" @change="getList">
<el-option
v-for="item in certificates"
:key="item.value"
:label="item.label"
:value="item.value"
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.'" v-if="!isNational">
<el-input v-model="query.idcCode" style="width: 120px;" clearable/>
<el-form-item v-if="!isNational" :label="language==0?'证件号码':'ID NO.'">
<el-input v-model="query.idcCode" clearable style="width: 120px;" />
</el-form-item>
<!-- <el-form-item label="角色">-->
<!-- <el-input v-model="query.label" style="width: 120px;" clearable/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="角色">-->
<!-- <el-input v-model="query.label" style="width: 120px;" clearable/>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" @click="getList">{{language==0?'查询':'Search'}}</el-button>
<el-button type="primary" @click="getList">{{ language == 0 ? '查询' : 'Search' }}</el-button>
</el-form-item>
</el-form>
</div>
<p v-if="noPhotoCanSign == 0" class="text-danger">{{ language==0?'*需上传照片才可报名':'*Please upload photo before sign up' }}</p>
<el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh"
@selection-change="handleSelectionChange">
<!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>-->
<el-table-column align="center" type="index" :label="language==0?'序号':'Index'" width="70" :selectable="selectable"/>
<el-table-column v-if="isNational" :label="language==0?'WDSF 会员号':'WDSF MIN'" prop="wdsfMin" width="100"/>
<el-table-column align="center" v-if="!isNational" :label="language==0?'姓名':'Real Name'" prop="realName" min-width="100"/>
<el-table-column align="center" v-if="isNational" :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/>
<el-table-column align="center" v-if="isNational" :label="language==0?'名':'Name'" prop="ming" min-width="100"/>
<el-table-column align="center" v-if="isNational" :label="language==0?'代表':'Representing'" prop="representing" min-width="120"/>
<el-table-column align="center" v-if="!isNational" :label="language==0?'所属国家/地区':'Nationality'" prop="countryName" min-width="110"/>
<el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
<el-table-column align="center" v-if="isNational" :label="language==0?'年龄组':'Age group'" prop="ageGroup" min-width="100"/>
<el-table-column align="center" v-if="isNational" :label="language==0?'舞种':'Division'" prop="division" min-width="100"/>
<el-table-column v-if="!isNational" :label="language==0?'年龄':'Age'" prop="age"/>
<el-table-column v-if="!isNational" :label="language==0?'出生日期':'Date of Birth'" prop="birth" width="130"/>
<el-table-column v-if="!isNational" :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" width="120"/>
<el-table-column v-if="!isNational" :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/>
<p v-if="noPhotoCanSign == 0" class="text-danger">
{{ language == 0 ? '*需上传照片才可报名' : '*Please upload photo before sign up' }}</p>
<el-table
ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh"
@selection-change="handleSelectionChange"
>
<!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>-->
<el-table-column
:label="language==0?'序号':'Index'" :selectable="selectable" align="center" type="index"
width="70"
/>
<el-table-column v-if="isNational" :label="language==0?'WDSF 会员号':'WDSF MIN'" prop="wdsfMin" width="100" />
<el-table-column
v-if="!isNational" :label="language==0?'姓名':'Real Name'" align="center" min-width="100"
prop="realName"
/>
<el-table-column
v-if="isNational" :label="language==0?'姓氏':'Surname'" align="center" min-width="100"
prop="xing"
/>
<el-table-column v-if="isNational" :label="language==0?'名':'Name'" align="center" min-width="100" prop="ming" />
<el-table-column
v-if="isNational" :label="language==0?'代表':'Representing'" align="center" min-width="120"
prop="representing"
/>
<el-table-column
v-if="!isNational" :label="language==0?'所属国家/地区':'Nationality'" align="center"
min-width="110" prop="countryName"
/>
<el-table-column :label="language==0?'性别':'Gender'" prop="sexStr" />
<el-table-column
v-if="isNational" :label="language==0?'年龄组':'Age group'" align="center" min-width="100"
prop="ageGroup"
/>
<el-table-column
v-if="isNational" :label="language==0?'舞种':'Division'" align="center" min-width="100"
prop="division"
/>
<el-table-column v-if="!isNational" :label="language==0?'年龄':'Age'" prop="age" />
<el-table-column v-if="!isNational" :label="language==0?'出生日期':'Date of Birth'" prop="birth" width="130" />
<el-table-column v-if="!isNational" :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" width="120" />
<el-table-column v-if="!isNational" :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200" />
<!-- <el-table-column label="会员角色" width="200">-->
<!-- <template #default="scope">-->
<!-- <div>-->
......@@ -70,60 +94,61 @@
<!-- </div>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column :label="language==0?'操作':'Actions'" width="180" fixed="right" align="center">
<el-table-column :label="language==0?'操作':'Actions'" align="center" fixed="right" width="180">
<template #default="scope">
<el-button link v-if="!isNational&&(!scope.row.phone)" type="danger" @click="editPerson(scope.row)">
{{language==0?'完善信息':'Complete'}}
<el-button v-if="!isNational&&(!scope.row.phone)" link type="danger" @click="editPerson(scope.row)">
{{ language == 0 ? '完善信息' : 'Complete' }}
</el-button>
<el-button link v-else type="primary" @click="editPerson(scope.row)">
{{language==0?'编辑':'Edit'}}
<el-button v-else link type="primary" @click="editPerson(scope.row)">
{{ language == 0 ? '编辑' : 'Edit' }}
</el-button>
<el-button link type="primary" @click="delperson(scope.row)">
{{language==0?'删除':'Delete'}}
<el-button link type="primary" @click="delperson(scope.row)">
{{ language == 0 ? '删除' : 'Delete' }}
</el-button>
</template>
</el-table-column>
</el-table>
<paginationPc
v-show="total>0"
v-model:page="query.pageNum"
v-model:limit="query.pageSize"
:total="total"
@pagination="getList"
v-show="total>0"
v-model:limit="query.pageSize"
v-model:page="query.pageNum"
:total="total"
@pagination="getList"
/>
<!-- <template #footer>-->
<!-- <div class="dialog-footer text-center">-->
<!-- <el-button type="primary" @click="submit">{{language==0?'确定':'Confirm'}}</el-button>-->
<!-- <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button>-->
<!-- </div>-->
<!-- </template>-->
<!-- <template #footer>-->
<!-- <div class="dialog-footer text-center">-->
<!-- <el-button type="primary" @click="submit">{{language==0?'确定':'Confirm'}}</el-button>-->
<!-- <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button>-->
<!-- </div>-->
<!-- </template>-->
</el-dialog>
<!-- 国内赛运动员-->
<add-coach ref="dialogAddCoach" @submitForm="getList"/>
<add-coach ref="dialogAddCoach" @submitForm="getList" />
<!-- 国际赛运动员-->
<add-wdsf ref="dialogAddWdsf" @submitForm="getList"/>
<Import ref="dialogImportProps" @submitForm="getList"/>
<add-wdsf ref="dialogAddWdsf" @submitForm="getList" />
<Import ref="dialogImportProps" @submitForm="getList" />
</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 AddCoach from '../components/addCoach'
import AddWdsf from '../components/addWdsf'
import Import from '../components/import'
import {useStorage} from "@vueuse/core/index";
import {ElMessage, ElMessageBox} from "element-plus";
const language= useStorage('language',0)
import { useStorage } from '@vueuse/core/index'
import { ElMessage, ElMessageBox } from 'element-plus'
const {proxy} = getCurrentInstance()
const emit = defineEmits([ 'transfer'])
const language = useStorage('language', 0)
const { proxy } = getCurrentInstance()
const emit = defineEmits(['transfer'])
const data = reactive({
query: {
label:'0',
label: '0',
pageSize: 10,
pageNum:1
pageNum: 1
},
tableData: [],
show: false,
......@@ -131,9 +156,9 @@ const data = reactive({
title: '选择运动员',
noPhotoCanSign: 0,
total: 0,
isNational:false
isNational: false
})
const {query, tableData, show, title, loading, noPhotoCanSign,total,isNational} = toRefs(data)
const { query, tableData, show, title, loading, noPhotoCanSign, total, isNational } = toRefs(data)
const certificates = ref([
{
value: '0',
......@@ -201,9 +226,11 @@ function submit() {
// emit('submitForm', choosedList)
show.value = false
}
function close() {
emit('submitForm')
}
function cancel() {
show.value = false
}
......@@ -212,24 +239,25 @@ function editPerson(row) {
console.log(isNational.value)
const params = {
id: row.id,
title: language.value == 0 ?'编辑人员':'Edit Person',
title: language.value == 0 ? '编辑人员' : 'Edit Person',
groupId: groupId,
label: '0'
}
if (isNational.value){
if (isNational.value) {
proxy.$refs['dialogAddWdsf'].open(params)
} else {
proxy.$refs['dialogAddCoach'].open(params)
}
}
function delperson(p) {
//删除团队下的人
// 删除团队下的人
let text = ''
let t = '提示'
let s = '确定'
let c = '取消'
let msg = '操作成功'
if (language.value==0){
if (language.value == 0) {
text = `确定删除${p.realName}吗?`
} else {
text = `Delete ${p.realName}?`
......@@ -249,15 +277,16 @@ function delperson(p) {
})
})
}
function addMember() {
console.log(isNational.value)
const params = {
title: language.value == 0 ?'添加人员':'Add',
title: language.value == 0 ? '添加人员' : 'Add',
id: 0,
groupId: groupId,
label: '0'
}
if (isNational.value){
if (isNational.value) {
proxy.$refs['dialogAddWdsf'].open(params)
} else {
proxy.$refs['dialogAddCoach'].open(params)
......@@ -272,7 +301,7 @@ function importSportman() {
proxy.$refs['dialogImportProps'].open(params)
}
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
.el-form--inline .el-form-item {
width: auto;
}
......
......@@ -71,7 +71,7 @@
<el-form-item :label="language==0?'有效证件':'Valid Passport'" required>
<image-upload
v-model="wdsfData.passportUrl" :action="'/common/getPersonInfoFromCert/3'"
v-model="wdsfData.passportUrl" :action="'/common/getPersonInfoFromCert/6'"
:button-text="language==0?'上传':'Upload'"
:is-show-tip="false"
:limit="1"
......@@ -87,6 +87,9 @@
<el-form-item :label="language==0?'证件号':'Passport number'" required>
<el-input v-model="wdsfData.passportNumber" />
</el-form-item>
<el-form-item :label="language==0?'姓名':'Name'" required>
<el-input v-model.trim="wdsfData.certName" />
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" required>
<el-radio-group v-model="wdsfData.sex">
<el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
......@@ -177,7 +180,8 @@
</el-form>
</div>
<div class="text-center">
<el-button class="primary-kx" round @click="goBack"> {{ language == 0 ? '取消' : 'Cancel' }}</el-button>
<el-button class="primary-kx" round @click="goBack"> {{ language == 0 ? '取消' : 'Cancel' }}
</el-button>
<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>
......@@ -361,14 +365,18 @@ function bigNext() {
ElMessage.warning(language.value == 0 ? '请选择性别' : 'Please select your gender')
return
}
if (!wdsfData.value.certName) {
ElMessage.warning(language.value == 0 ? '请输入姓名' : 'Please enter your name')
return
}
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,
certName: wdsfData.value.certName,
passportNumber: wdsfData.value.passportNumber
}
if (Array.isArray(wdsfData.value.passportUrl)) {
......@@ -409,6 +417,7 @@ function next() {
code: form.value.code,
password: form.value.password,
sex: wdsfData.value.sex,
certName: wdsfData.value.certName,
birth: wdsfData.value.birthday,
passportNumber: wdsfData.value.passportNumber
}
......@@ -485,6 +494,7 @@ const ocrSuccess = (res) => {
wdsfData.value.passportNumber = res.data.code
wdsfData.value.birthday = res.data.birth?.slice(0, 10)
wdsfData.value.sex = res.data.sex
wdsfData.value.certName = res.data.name
} else if (res.code == 500) {
ElMessage.warning(res.msg)
}
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!