添加姓名
Showing
7 changed files
with
430 additions
and
315 deletions
| ... | @@ -282,6 +282,7 @@ const form = ref({}) | ... | @@ -282,6 +282,7 @@ const form = ref({}) |
| 282 | const showPersonList = ref(false) | 282 | const showPersonList = ref(false) |
| 283 | const signEndTime = ref('') | 283 | const signEndTime = ref('') |
| 284 | const userId = ref('') | 284 | const userId = ref('') |
| 285 | |||
| 285 | onMounted(() => { | 286 | onMounted(() => { |
| 286 | if (useUserStore().user) { | 287 | if (useUserStore().user) { |
| 287 | userId.value = useUserStore().user.userId | 288 | userId.value = useUserStore().user.userId | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog | 2 | <el-dialog |
| 3 | v-model="show" :title="title" width="1100px" 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="1100px" | ||
| 6 | > | 7 | > |
| 7 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="150px" inline> | 8 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" inline label-width="150px"> |
| 8 | <el-row :gutter="30" class="mt30"> | 9 | <el-row :gutter="30" class="mt30"> |
| 9 | <el-col :lg="12" class="touxiang"> | 10 | <el-col :lg="12" class="touxiang"> |
| 10 | 11 | ||
| 11 | <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'"> | 12 | <el-form-item :label="language==0?'个人照片':'photo'" prop="picUrl"> |
| 12 | <ImageUpload2 | 13 | <ImageUpload2 |
| 13 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" | 14 | v-model="form.picUrl" :crop-height="280" :crop-width="200" :is-show-tip="false" :limit="1" |
| 14 | :is-show-tip="false" | 15 | class="threeFour" |
| 15 | /> | 16 | /> |
| 16 | </el-form-item> | 17 | </el-form-item> |
| 17 | <el-form-item v-if="language!=0" label="WDSF code" prop="wdsfMin"> | 18 | <el-form-item v-if="language!=0" label="WDSF code" prop="wdsfMin"> |
| 18 | <span v-if="form.wdsfMin">{{form.wdsfMin}}</span> | 19 | <span v-if="form.wdsfMin">{{ form.wdsfMin }}</span> |
| 19 | <el-input v-else v-model="form.wdsfMin" type="text"/> | 20 | <el-input v-else v-model="form.wdsfMin" type="text" /> |
| 20 | </el-form-item> | 21 | </el-form-item> |
| 21 | <el-form-item :label="language==0?'姓名':'Name'" prop="realName" required> | 22 | <el-form-item :label="language==0?'姓名':'Name'" prop="realName" required> |
| 22 | <el-input v-model="form.realName" :disabled="editgay&&form.labelArr.indexOf('0')>-1"/> | 23 | <el-input v-model="form.realName" :disabled="editgay&&form.labelArr.indexOf('0')>-1" /> |
| 23 | </el-form-item> | 24 | </el-form-item> |
| 24 | <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required> | 25 | <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required> |
| 25 | <el-select v-model="form.idcType" style="width: 100%;" :disabled="editgay"> | 26 | <el-select v-model="form.idcType" :disabled="editgay" style="width: 100%;"> |
| 26 | <el-option | 27 | <el-option |
| 27 | v-for="item in certificates" | 28 | v-for="item in certificates" |
| 28 | :key="item.value" | 29 | :key="item.value" |
| ... | @@ -32,16 +33,16 @@ | ... | @@ -32,16 +33,16 @@ |
| 32 | </el-select> | 33 | </el-select> |
| 33 | </el-form-item> | 34 | </el-form-item> |
| 34 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> | 35 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> |
| 35 | <el-input v-model="form.idcCode" @blur="giveBirthDay" :disabled="editgay"/> | 36 | <el-input v-model="form.idcCode" :disabled="editgay" @blur="giveBirthDay" /> |
| 36 | </el-form-item> | 37 | </el-form-item> |
| 37 | <el-form-item :label="language==0?'有效证件':'Valid Passport'" :required="form.idcType!='0'"> | 38 | <el-form-item :label="language==0?'有效证件':'Valid Passport'" :required="form.idcType!='0'"> |
| 38 | <image-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" /> | 39 | <image-upload v-model="form.passportUrl" :is-show-tip="false" :limit="1" /> |
| 39 | <span class="tip">*请上传有效证件扫描件</span> | 40 | <span class="tip">*请上传有效证件扫描件</span> |
| 40 | </el-form-item> | 41 | </el-form-item> |
| 41 | <el-form-item :label="language==0?'性别':'Gender'" prop="sex"> | 42 | <el-form-item :label="language==0?'性别':'Gender'" prop="sex"> |
| 42 | <el-radio-group v-model="form.sex" :disabled="editgay&&form.labelArr.indexOf('0')>-1"> | 43 | <el-radio-group v-model="form.sex" :disabled="editgay&&form.labelArr.indexOf('0')>-1"> |
| 43 | <el-radio value="0">{{ language==0?'女':'female' }}</el-radio> | 44 | <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> |
| 44 | <el-radio value="1">{{ language==0?'男':'male' }}</el-radio> | 45 | <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> |
| 45 | </el-radio-group> | 46 | </el-radio-group> |
| 46 | </el-form-item> | 47 | </el-form-item> |
| 47 | </el-col> | 48 | </el-col> |
| ... | @@ -49,47 +50,51 @@ | ... | @@ -49,47 +50,51 @@ |
| 49 | <el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth" required> | 50 | <el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth" required> |
| 50 | <el-date-picker | 51 | <el-date-picker |
| 51 | v-model="form.birth" :disabled="editgay&&form.labelArr.indexOf('0')>-1" | 52 | v-model="form.birth" :disabled="editgay&&form.labelArr.indexOf('0')>-1" |
| 52 | style="width: 100%;" | ||
| 53 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" | ||
| 54 | :disabled-date="disabledBirth" | 53 | :disabled-date="disabledBirth" |
| 54 | format="YYYY-MM-DD" style="width: 100%;" type="date" | ||
| 55 | value-format="YYYY-MM-DD" | ||
| 55 | /> | 56 | /> |
| 56 | </el-form-item> | 57 | </el-form-item> |
| 57 | <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr"> | 58 | <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr"> |
| 58 | <el-select v-model="form.labelArr" multiple> | 59 | <el-select v-model="form.labelArr" multiple> |
| 59 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> | 60 | <el-option v-for="l in labels" :key="l.value" :label="language==0?l.label:l.enlabel" :value="l.value" /> |
| 60 | </el-select> | 61 | </el-select> |
| 61 | </el-form-item> | 62 | </el-form-item> |
| 62 | <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required> | 63 | <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required> |
| 63 | <el-input v-model="form.phone" type="text"/> | 64 | <el-input v-model="form.phone" type="text" /> |
| 64 | <span class="tip">*若未成年人没有手机号,请填写家长号码</span> | 65 | <span class="tip">*若未成年人没有手机号,请填写家长号码</span> |
| 65 | </el-form-item> | 66 | </el-form-item> |
| 66 | 67 | ||
| 67 | 68 | ||
| 68 | <el-form-item :label="language==0?'所属国家/地区':'Country'" prop="countryId" required> | 69 | <el-form-item :label="language==0?'所属国家/地区':'Country'" prop="countryId" required> |
| 69 | <el-select filterable v-model="form.countryId" style="width: 100%;" @change="changeCountryId"> | 70 | <el-select v-model="form.countryId" filterable style="width: 100%;" @change="changeCountryId"> |
| 70 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/> | 71 | <el-option |
| 72 | v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" | ||
| 73 | :value="item.id" | ||
| 74 | /> | ||
| 71 | </el-select> | 75 | </el-select> |
| 72 | </el-form-item> | 76 | </el-form-item> |
| 73 | 77 | ||
| 74 | <el-form-item :label="language==0?'详细地址':'Address'" prop="address"> | 78 | <el-form-item :label="language==0?'详细地址':'Address'" prop="address"> |
| 75 | <el-cascader v-if="form.countryId == 240" | 79 | <el-cascader |
| 80 | v-if="form.countryId == 240" | ||
| 76 | v-model="form.regionId" | 81 | v-model="form.regionId" |
| 77 | style="width: 100%;margin-bottom: 15px" | ||
| 78 | :options="regionsList" | 82 | :options="regionsList" |
| 79 | :props="{ label:'text' }" | 83 | :props="{ label:'text' }" |
| 84 | style="width: 100%;margin-bottom: 15px" | ||
| 80 | /> | 85 | /> |
| 81 | <el-input v-model="form.address" type="textarea" :rows="4"/> | 86 | <el-input v-model="form.address" :rows="4" type="textarea" /> |
| 82 | 87 | ||
| 83 | </el-form-item> | 88 | </el-form-item> |
| 84 | <!-- <el-form-item v-if="language=='0'" :label="language==0?'WDSF会员号':'WDSF code'">--> | 89 | <!-- <el-form-item v-if="language=='0'" :label="language==0?'WDSF会员号':'WDSF code'">--> |
| 85 | <!-- <span v-if="editgay&&form.wdsfMin">{{form.wdsfMin}}</span>--> | 90 | <!-- <span v-if="editgay&&form.wdsfMin">{{form.wdsfMin}}</span>--> |
| 86 | <!-- <el-input v-else v-model="wdsfMin" type="text"/>--> | 91 | <!-- <el-input v-else v-model="wdsfMin" type="text"/>--> |
| 87 | <!-- </el-form-item>--> | 92 | <!-- </el-form-item>--> |
| 88 | 93 | ||
| 89 | 94 | ||
| 90 | <!-- <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required>--> | 95 | <!-- <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required>--> |
| 91 | <!-- <el-input v-model="form.email"/>--> | 96 | <!-- <el-input v-model="form.email"/>--> |
| 92 | <!-- </el-form-item>--> | 97 | <!-- </el-form-item>--> |
| 93 | 98 | ||
| 94 | 99 | ||
| 95 | </el-col> | 100 | </el-col> |
| ... | @@ -97,20 +102,24 @@ | ... | @@ -97,20 +102,24 @@ |
| 97 | </el-form> | 102 | </el-form> |
| 98 | <template #footer> | 103 | <template #footer> |
| 99 | <div class="dialog-footer text-center"> | 104 | <div class="dialog-footer text-center"> |
| 100 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ language==0?'确定':'Save' }}</el-button> | 105 | <el-button class="btn-lineG w200px" round type="primary" @click="submitForm">{{ |
| 106 | language == 0 ? '确定' : 'Save' | ||
| 107 | }} | ||
| 108 | </el-button> | ||
| 101 | </div> | 109 | </div> |
| 102 | </template> | 110 | </template> |
| 103 | </el-dialog> | 111 | </el-dialog> |
| 104 | </template> | 112 | </template> |
| 105 | 113 | ||
| 106 | <script setup> | 114 | <script setup> |
| 107 | import {reactive, ref, toRefs, watch} from 'vue' | 115 | import { reactive, ref, toRefs, watch } from 'vue' |
| 108 | import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' | 116 | import { getCurrentInstance, nextTick, onMounted } from '@vue/runtime-core' |
| 109 | import * as match from '@/apiPc/match' | 117 | import * as match from '@/apiPc/match' |
| 110 | import {dayjs, ElMessage} from 'element-plus' | 118 | import { dayjs, ElMessage } from 'element-plus' |
| 111 | import _ from 'lodash' | 119 | import _ from 'lodash' |
| 112 | import {useStorage} from "@vueuse/core/index"; | 120 | import { useStorage } from '@vueuse/core/index' |
| 113 | const language= useStorage('language',0) | 121 | |
| 122 | const language = useStorage('language', 0) | ||
| 114 | const certificates = ref([ | 123 | const certificates = ref([ |
| 115 | { | 124 | { |
| 116 | value: '0', | 125 | value: '0', |
| ... | @@ -125,61 +134,73 @@ const certificates = ref([ | ... | @@ -125,61 +134,73 @@ const certificates = ref([ |
| 125 | label: language.value == 0 ? '其他' : 'Other' | 134 | label: language.value == 0 ? '其他' : 'Other' |
| 126 | } | 135 | } |
| 127 | ]) | 136 | ]) |
| 128 | const {proxy} = getCurrentInstance() | 137 | const { proxy } = getCurrentInstance() |
| 129 | const emit = defineEmits(['submitForm']) | 138 | const emit = defineEmits(['submitForm']) |
| 130 | const data = reactive({ | 139 | const data = reactive({ |
| 131 | form: { | 140 | form: { |
| 132 | // countryId: 240 | 141 | // countryId: 240 |
| 133 | sex:'0' | 142 | sex: '0' |
| 134 | }, | 143 | }, |
| 135 | wdsfMin:'', | 144 | wdsfMin: '', |
| 136 | rules: { | 145 | rules: { |
| 137 | realName: [{required: true, message: '必填', trigger: 'blur'}], | 146 | realName: [{ required: true, message: '必填', trigger: 'blur' }], |
| 138 | // countryId: [{required: true, message: '必填', trigger: 'change'}], | 147 | // countryId: [{required: true, message: '必填', trigger: 'change'}], |
| 139 | idcType: [{required: true, message: '必填', trigger: 'change'}], | 148 | idcType: [{ required: true, message: '必填', trigger: 'change' }], |
| 140 | idcCode: [{required: true, message: '必填', trigger: 'blur'}], | 149 | idcCode: [{ required: true, message: '必填', trigger: 'blur' }], |
| 141 | phone: [{required: true, message: '必填', trigger: 'blur'}], | 150 | phone: [{ required: true, message: '必填', trigger: 'blur' }], |
| 142 | // regionId: [{ required: true, message: '必填', trigger: 'change' }], | 151 | // regionId: [{ required: true, message: '必填', trigger: 'change' }], |
| 143 | birth: [{required: true, message: '必填', trigger: 'change'}], | 152 | birth: [{ required: true, message: '必填', trigger: 'change' }], |
| 144 | // address: [{ required: true, message: '必填', trigger: 'blur' }], | 153 | // address: [{ required: true, message: '必填', trigger: 'blur' }], |
| 145 | // picUrl: [{required: true, message: '必填', trigger: 'blur'}], | 154 | // picUrl: [{required: true, message: '必填', trigger: 'blur'}], |
| 146 | sex: [{required: true, message: '必填', trigger: 'change'}], | 155 | sex: [{ required: true, message: '必填', trigger: 'change' }], |
| 147 | labelArr: [{required: true, message: '必填', trigger: 'change'}] | 156 | labelArr: [{ required: true, message: '必填', trigger: 'change' }] |
| 148 | }, | 157 | }, |
| 149 | rules_cn:{ | 158 | rules_cn: { |
| 150 | realName: [{required: true, message: 'required', trigger: 'blur'}], | 159 | realName: [{ required: true, message: 'required', trigger: 'blur' }], |
| 151 | // countryId: [{required: true, message: 'required', trigger: 'change'}], | 160 | // countryId: [{required: true, message: 'required', trigger: 'change'}], |
| 152 | idcType: [{required: true, message: 'required', trigger: 'change'}], | 161 | idcType: [{ required: true, message: 'required', trigger: 'change' }], |
| 153 | idcCode: [{required: true, message: 'required', trigger: 'blur'}], | 162 | idcCode: [{ required: true, message: 'required', trigger: 'blur' }], |
| 154 | phone: [{required: true, message: 'required', trigger: 'blur'}], | 163 | phone: [{ required: true, message: 'required', trigger: 'blur' }], |
| 155 | // regionId: [{ required: true, message: 'required', trigger: 'change' }], | 164 | // regionId: [{ required: true, message: 'required', trigger: 'change' }], |
| 156 | birth: [{required: true, message: 'required', trigger: 'change'}], | 165 | birth: [{ required: true, message: 'required', trigger: 'change' }], |
| 157 | // address: [{ required: true, message: 'required', trigger: 'blur' }], | 166 | // address: [{ required: true, message: 'required', trigger: 'blur' }], |
| 158 | // picUrl: [{required: true, message: 'required', trigger: 'blur'}], | 167 | // picUrl: [{required: true, message: 'required', trigger: 'blur'}], |
| 159 | sex: [{required: true, message: 'required', trigger: 'change'}], | 168 | sex: [{ required: true, message: 'required', trigger: 'change' }], |
| 160 | labelArr: [{required: true, message: 'required', trigger: 'change'}] | 169 | labelArr: [{ required: true, message: 'required', trigger: 'change' }] |
| 161 | }, | 170 | }, |
| 162 | show: false, | 171 | show: false, |
| 163 | countryList: [], | 172 | countryList: [], |
| 164 | regionsList: [], | 173 | regionsList: [], |
| 165 | labels: [ | 174 | labels: [ |
| 166 | {value: '0', label: '运动员', enlabel: 'Sportsman'}, | 175 | { value: '0', label: '运动员', enlabel: 'Sportsman' }, |
| 167 | {value: '1', label: '教练', enlabel: 'Coach'}, | 176 | { value: '1', label: '教练', enlabel: 'Coach' }, |
| 168 | {value: '2', label: '领队', enlabel: 'Head Of Team'}, | 177 | { value: '2', label: '领队', enlabel: 'Head Of Team' }, |
| 169 | {value: '4', label: '管理', enlabel: 'Team doctor'}, | 178 | { value: '4', label: '管理', enlabel: 'Team doctor' }, |
| 170 | {value: '5', label: '翻译', enlabel: 'Interpreter'}, | 179 | { value: '5', label: '翻译', enlabel: 'Interpreter' }, |
| 171 | {value: '6', label: '官员', enlabel: 'Official'}, | 180 | { value: '6', label: '官员', enlabel: 'Official' }, |
| 172 | {value: '3', label: '其他', enlabel: 'Other'} | 181 | { value: '3', label: '其他', enlabel: 'Other' } |
| 173 | ], | 182 | ], |
| 174 | title: '添加选手信息', | 183 | title: '添加选手信息', |
| 175 | groupId: '0', | 184 | groupId: '0', |
| 176 | isMe:false | 185 | isMe: false |
| 177 | }) | 186 | }) |
| 178 | const {wdsfMin, form, rules,rules_cn, show, countryList, regionsList, title, groupId, labels,uType,isMe} = toRefs(data) | 187 | const { |
| 188 | wdsfMin, | ||
| 189 | form, | ||
| 190 | rules, | ||
| 191 | rules_cn, | ||
| 192 | show, | ||
| 193 | countryList, | ||
| 194 | regionsList, | ||
| 195 | title, | ||
| 196 | groupId, | ||
| 197 | labels, | ||
| 198 | uType, | ||
| 199 | isMe | ||
| 200 | } = toRefs(data) | ||
| 179 | onMounted(() => { | 201 | onMounted(() => { |
| 180 | getCountryList() | 202 | getCountryList() |
| 181 | getRegionsList() | 203 | getRegionsList() |
| 182 | |||
| 183 | }) | 204 | }) |
| 184 | const editgay = ref(false) | 205 | const editgay = ref(false) |
| 185 | const open = (params) => { | 206 | const open = (params) => { |
| ... | @@ -188,17 +209,17 @@ const open = (params) => { | ... | @@ -188,17 +209,17 @@ const open = (params) => { |
| 188 | groupId.value = params.groupId || '0' | 209 | groupId.value = params.groupId || '0' |
| 189 | isMe.value = params.isMe | 210 | isMe.value = params.isMe |
| 190 | wdsfMin.value = '' | 211 | wdsfMin.value = '' |
| 191 | if(params.label){ | 212 | if (params.label) { |
| 192 | form.value.labelArr= [params.label] | 213 | form.value.labelArr = [params.label] |
| 193 | } else { | 214 | } else { |
| 194 | form.value.labelArr = [] | 215 | form.value.labelArr = [] |
| 195 | } | 216 | } |
| 196 | if(language.value == 0){ | 217 | if (language.value == 0) { |
| 197 | form.value.countryId = 240 | 218 | form.value.countryId = 240 |
| 198 | form.value.idcType = '0' | 219 | form.value.idcType = '0' |
| 199 | } | 220 | } |
| 200 | if(isMe.value){ | 221 | if (isMe.value) { |
| 201 | //个人 | 222 | // 个人 |
| 202 | match.getMyPersonInfo().then(res => { | 223 | match.getMyPersonInfo().then(res => { |
| 203 | form.value = res.data | 224 | form.value = res.data |
| 204 | form.value.id = res.data.id | 225 | form.value.id = res.data.id |
| ... | @@ -225,13 +246,13 @@ const open = (params) => { | ... | @@ -225,13 +246,13 @@ const open = (params) => { |
| 225 | } | 246 | } |
| 226 | } | 247 | } |
| 227 | } | 248 | } |
| 228 | defineExpose({open}) | 249 | defineExpose({ open }) |
| 229 | watch(show, (value) => { | 250 | watch(show, (value) => { |
| 230 | if (!value) { | 251 | if (!value) { |
| 231 | form.value = { | 252 | form.value = { |
| 232 | sex:'0' | 253 | sex: '0' |
| 233 | } | 254 | } |
| 234 | if(language.value == 0){ | 255 | if (language.value == 0) { |
| 235 | form.value.countryId = 240 | 256 | form.value.countryId = 240 |
| 236 | } | 257 | } |
| 237 | } | 258 | } |
| ... | @@ -239,8 +260,9 @@ watch(show, (value) => { | ... | @@ -239,8 +260,9 @@ watch(show, (value) => { |
| 239 | // proxy.$refs['dialogRef'].clearValidate() | 260 | // proxy.$refs['dialogRef'].clearValidate() |
| 240 | }) | 261 | }) |
| 241 | }) | 262 | }) |
| 242 | function reset(){ | 263 | |
| 243 | if( editgay.value ){ | 264 | function reset() { |
| 265 | if (editgay.value) { | ||
| 244 | match.getPersonInfoById(form.value.id).then(res => { | 266 | match.getPersonInfoById(form.value.id).then(res => { |
| 245 | form.value = res.data | 267 | form.value = res.data |
| 246 | if (form.value.label) { | 268 | if (form.value.label) { |
| ... | @@ -250,9 +272,11 @@ function reset(){ | ... | @@ -250,9 +272,11 @@ function reset(){ |
| 250 | }) | 272 | }) |
| 251 | } | 273 | } |
| 252 | } | 274 | } |
| 275 | |||
| 253 | function disabledBirth(time) { | 276 | function disabledBirth(time) { |
| 254 | return time.getTime() > new Date().getTime() | 277 | return time.getTime() > new Date().getTime() |
| 255 | } | 278 | } |
| 279 | |||
| 256 | function getCountryList() { | 280 | function getCountryList() { |
| 257 | match.countryList().then(res => { | 281 | match.countryList().then(res => { |
| 258 | countryList.value = res.data | 282 | countryList.value = res.data |
| ... | @@ -272,7 +296,7 @@ function getRegionsList() { | ... | @@ -272,7 +296,7 @@ function getRegionsList() { |
| 272 | } | 296 | } |
| 273 | 297 | ||
| 274 | function checkCode() { | 298 | function checkCode() { |
| 275 | if (form.value.idcType=='0' && form.value.idcCode) { | 299 | if (form.value.idcType == '0' && form.value.idcCode) { |
| 276 | var obj = { | 300 | var obj = { |
| 277 | idcCode: form.value.idcCode, | 301 | idcCode: form.value.idcCode, |
| 278 | name: form.value.realName | 302 | name: form.value.realName |
| ... | @@ -329,31 +353,31 @@ function submitForm() { | ... | @@ -329,31 +353,31 @@ function submitForm() { |
| 329 | return | 353 | return |
| 330 | } | 354 | } |
| 331 | // 验证手机号 | 355 | // 验证手机号 |
| 332 | if (form.value.idcType == 0&&form.value.phone) { | 356 | if (form.value.idcType == 0 && form.value.phone) { |
| 333 | var pattern = /^1[3456789]\d{9}$/ | 357 | var pattern = /^1[3456789]\d{9}$/ |
| 334 | if (!pattern.test(form.value.phone)) { | 358 | if (!pattern.test(form.value.phone)) { |
| 335 | ElMessage.warning(language.value == 0 ?'请输入正确的手机号':'Please enter the correct mobile phone number') | 359 | ElMessage.warning(language.value == 0 ? '请输入正确的手机号' : 'Please enter the correct mobile phone number') |
| 336 | return | 360 | return |
| 337 | } | 361 | } |
| 338 | } | 362 | } |
| 339 | if(form.value.idcType != 0&&!form.value.passportUrl){ | 363 | if (form.value.idcType != 0 && !form.value.passportUrl) { |
| 340 | ElMessage.warning(language.value == 0 ? '请上传有效证件' :'Please upload your passport file') | 364 | ElMessage.warning(language.value == 0 ? '请上传有效证件' : 'Please upload your passport file') |
| 341 | return | 365 | return |
| 342 | } | 366 | } |
| 343 | if (typeof (form.value.regionId) === 'object') { | 367 | if (typeof (form.value.regionId) === 'object') { |
| 344 | form.value.regionId = _.last(form.value.regionId) | 368 | form.value.regionId = _.last(form.value.regionId) |
| 345 | } | 369 | } |
| 346 | form.value.label = form.value.labelArr.toString() | 370 | form.value.label = form.value.labelArr.toString() |
| 347 | if(Array.isArray(form.value.passportUrl)){ | 371 | if (Array.isArray(form.value.passportUrl)) { |
| 348 | form.value.passportUrl = form.value.passportUrl[0].url | 372 | form.value.passportUrl = form.value.passportUrl[0].url |
| 349 | } | 373 | } |
| 350 | if(wdsfMin.value){ | 374 | if (wdsfMin.value) { |
| 351 | form.value.wdsfMin = wdsfMin.value | 375 | form.value.wdsfMin = wdsfMin.value |
| 352 | } | 376 | } |
| 353 | if (groupId.value != 0) { | 377 | if (groupId.value != 0) { |
| 354 | // 团队 | 378 | // 团队 |
| 355 | form.value.groupId = groupId.value | 379 | form.value.groupId = groupId.value |
| 356 | if (form.value.idcType=='0' && form.value.idcCode) { | 380 | if (form.value.idcType == '0' && form.value.idcCode) { |
| 357 | var obj = { | 381 | var obj = { |
| 358 | idcCode: form.value.idcCode, | 382 | idcCode: form.value.idcCode, |
| 359 | name: form.value.realName | 383 | name: form.value.realName |
| ... | @@ -371,20 +395,20 @@ function submitForm() { | ... | @@ -371,20 +395,20 @@ function submitForm() { |
| 371 | if (editgay.value) { | 395 | if (editgay.value) { |
| 372 | // id不是0 | 396 | // id不是0 |
| 373 | match.editPersonInfo(form.value).then(res => { | 397 | match.editPersonInfo(form.value).then(res => { |
| 374 | ElMessage.success(language.value == 0 ?'保存成功':'Save successful') | 398 | ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') |
| 375 | show.value = false | 399 | show.value = false |
| 376 | emit('submitForm') | 400 | emit('submitForm') |
| 377 | }) | 401 | }) |
| 378 | } else { | 402 | } else { |
| 379 | if(isMe.value){ | 403 | if (isMe.value) { |
| 380 | match.saveMyBaseInfo(form.value).then(res => { | 404 | match.saveMyBaseInfo(form.value).then(res => { |
| 381 | ElMessage.success(language.value == 0 ?'保存成功':'Save successful') | 405 | ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') |
| 382 | show.value = false | 406 | show.value = false |
| 383 | emit('submitForm') | 407 | emit('submitForm') |
| 384 | }) | 408 | }) |
| 385 | } else { | 409 | } else { |
| 386 | match.savePersonForMyPerson(form.value).then(res => { | 410 | match.savePersonForMyPerson(form.value).then(res => { |
| 387 | ElMessage.success(language.value == 0 ?'保存成功':'Save successful') | 411 | ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') |
| 388 | show.value = false | 412 | show.value = false |
| 389 | emit('submitForm') | 413 | emit('submitForm') |
| 390 | }) | 414 | }) |
| ... | @@ -394,15 +418,17 @@ function submitForm() { | ... | @@ -394,15 +418,17 @@ function submitForm() { |
| 394 | } | 418 | } |
| 395 | }) | 419 | }) |
| 396 | } | 420 | } |
| 421 | |||
| 397 | function saveGroupMember() { | 422 | function saveGroupMember() { |
| 398 | match.savePersonForMyGroup(form.value).then(res => { | 423 | match.savePersonForMyGroup(form.value).then(res => { |
| 399 | ElMessage.success(language.value == 0 ?'保存成功':'Save successful') | 424 | ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') |
| 400 | show.value = false | 425 | show.value = false |
| 401 | emit('submitForm') | 426 | emit('submitForm') |
| 402 | }).catch(err => { | 427 | }).catch(err => { |
| 403 | reset() | 428 | reset() |
| 404 | }) | 429 | }) |
| 405 | } | 430 | } |
| 431 | |||
| 406 | function cancel() { | 432 | function cancel() { |
| 407 | show.value = false | 433 | show.value = false |
| 408 | delete wdsfMin.value | 434 | delete wdsfMin.value | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog | 2 | <el-dialog |
| 3 | v-model="show" :title="title" width="1100px" 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 | > | 6 | width="1100px" |
| 7 | <!-- 国际赛事随行人员--> | ||
| 8 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules_cn:rules" label-width="140px" | ||
| 9 | > | 7 | > |
| 8 | <!-- 国际赛事随行人员--> | ||
| 9 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules_cn:rules" label-width="140px"> | ||
| 10 | <el-row :gutter="30" class="mt30"> | 10 | <el-row :gutter="30" class="mt30"> |
| 11 | <el-col :lg="12" class="touxiang"> | 11 | <el-col :lg="12" class="touxiang"> |
| 12 | 12 | ||
| 13 | <el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" v-if="form.wdsfMin"> | 13 | <el-form-item v-if="form.wdsfMin" :label="language==0?'WDSF会员号':'WDSF MIN'"> |
| 14 | {{ form.wdsfMin }} | 14 | {{ form.wdsfMin }} |
| 15 | </el-form-item> | 15 | </el-form-item> |
| 16 | <el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" v-else> | 16 | <el-form-item v-else :label="language==0?'WDSF会员号':'WDSF MIN'"> |
| 17 | <el-input type="number" v-model="card" @change="resetCode" > | 17 | <el-input v-model="card" type="number" @change="resetCode"> |
| 18 | <template #append> | 18 | <template #append> |
| 19 | <el-button type="primary" plain style="width: 110px" @click="checkCard"> | 19 | <el-button plain style="width: 110px" type="primary" @click="checkCard"> |
| 20 | <el-icon v-if="isCodeTrue" size="16" color="#67C23A"> | 20 | <el-icon v-if="isCodeTrue" color="#67C23A" size="16"> |
| 21 | <CircleCheckFilled/> | 21 | <CircleCheckFilled /> |
| 22 | </el-icon> | 22 | </el-icon> |
| 23 | <span v-else>{{ language == 0 ? '校验卡号' : 'Check Code' }}</span> | 23 | <span v-else>{{ language == 0 ? '校验卡号' : 'Check Code' }}</span> |
| 24 | </el-button> | 24 | </el-button> |
| 25 | </template> | 25 | </template> |
| 26 | </el-input> | 26 | </el-input> |
| 27 | <a class="text-primary text-sm mt10" href="https://www.worlddancesport.org/Athlete/List" target="_blank"> | 27 | <a class="text-primary text-sm mt10" href="https://www.worlddancesport.org/Athlete/List" target="_blank"> |
| 28 | <el-icon><Link /></el-icon> | 28 | <el-icon> |
| 29 | {{language==0?'去WDSF官网查询我的会员号':'Search my WSDF MIN on the WDSF official website'}} | 29 | <Link /> |
| 30 | </el-icon> | ||
| 31 | {{ language == 0 ? '去WDSF官网查询我的会员号' : 'Search my WSDF MIN on the WDSF official website' }} | ||
| 30 | </a> | 32 | </a> |
| 31 | </el-form-item> | 33 | </el-form-item> |
| 32 | <el-form-item :label="language==0?'姓氏':'Surname'" prop="xing" :required="!editDis"> | 34 | <el-form-item :label="language==0?'姓氏':'Surname'" :required="!editDis" prop="xing"> |
| 33 | <el-input v-model="form.xing" :disabled="editDis"/> | 35 | <el-input v-model="form.xing" :disabled="editDis" /> |
| 34 | </el-form-item> | 36 | </el-form-item> |
| 35 | <el-form-item :label="language==0?'名':'Name'" prop="ming" required> | 37 | <el-form-item :label="language==0?'名':'Name'" prop="ming" required> |
| 36 | <el-input v-model="form.ming" :disabled="editDis"/> | 38 | <el-input v-model="form.ming" :disabled="editDis" /> |
| 37 | </el-form-item> | 39 | </el-form-item> |
| 38 | <el-form-item :label="language==0?'性别':'Gender'" prop="sex"> | 40 | <el-form-item :label="language==0?'性别':'Gender'" prop="sex"> |
| 39 | <el-radio-group v-model="form.sex"> | 41 | <el-radio-group v-model="form.sex"> |
| ... | @@ -42,22 +44,26 @@ | ... | @@ -42,22 +44,26 @@ |
| 42 | </el-radio-group> | 44 | </el-radio-group> |
| 43 | </el-form-item> | 45 | </el-form-item> |
| 44 | <el-form-item v-if="form.wdsfMin" :label="language==0?'代表':'Representing'" required> | 46 | <el-form-item v-if="form.wdsfMin" :label="language==0?'代表':'Representing'" required> |
| 45 | <el-input v-model="form.representing" disabled/> | 47 | <el-input v-model="form.representing" disabled /> |
| 46 | </el-form-item> | 48 | </el-form-item> |
| 47 | <el-form-item v-else :label="language==0?'所属国家/地区':'Nationality'" prop="countryId" required> | 49 | <el-form-item v-else :label="language==0?'所属国家/地区':'Nationality'" prop="countryId" required> |
| 48 | <el-select filterable v-model="form.countryId" style="width: 100%;" @change="changeCountry"> | 50 | <el-select v-model="form.countryId" filterable style="width: 100%;" @change="changeCountry"> |
| 49 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" | 51 | <el-option |
| 50 | :value="item.id"/> | 52 | v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" |
| 53 | :value="item.id" | ||
| 54 | /> | ||
| 51 | </el-select> | 55 | </el-select> |
| 52 | </el-form-item> | 56 | </el-form-item> |
| 53 | <el-form-item :label="language==0?'主要会员角色':'Roles'" prop="labelArr"> | 57 | <el-form-item :label="language==0?'主要会员角色':'Roles'" prop="labelArr"> |
| 54 | <el-select v-model="form.labelArr" multiple> | 58 | <el-select v-model="form.labelArr" multiple> |
| 55 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> | 59 | <el-option v-for="l in labels" :key="l.value" :label="language==0?l.label:l.enlabel" :value="l.value" /> |
| 56 | </el-select> | 60 | </el-select> |
| 57 | </el-form-item> | 61 | </el-form-item> |
| 58 | <el-form-item :label="language==0?'有效证件':'Valid Passport'" required> | 62 | <el-form-item :label="language==0?'有效证件':'Valid Passport'" required> |
| 59 | <image-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" | 63 | <image-upload |
| 60 | :button-text="language==0?'上传':'Upload'"/> | 64 | v-model="form.passportUrl" :button-text="language==0?'上传':'Upload'" :is-show-tip="false" |
| 65 | :limit="1" | ||
| 66 | /> | ||
| 61 | <div class="tip"> | 67 | <div class="tip"> |
| 62 | <span v-if="language==0">请上传有效身份证件扫描件,用于核实身份信息、申请签证邀请函及购买保险等</span> | 68 | <span v-if="language==0">请上传有效身份证件扫描件,用于核实身份信息、申请签证邀请函及购买保险等</span> |
| 63 | <span v-else>Please upload a scanned copy of your valid passport for verification of identity information, | 69 | <span v-else>Please upload a scanned copy of your valid passport for verification of identity information, |
| ... | @@ -68,16 +74,18 @@ | ... | @@ -68,16 +74,18 @@ |
| 68 | 74 | ||
| 69 | </el-col> | 75 | </el-col> |
| 70 | <el-col :lg="12" class="touxiang"> | 76 | <el-col :lg="12" class="touxiang"> |
| 71 | <el-form-item prop="picUrl" :label="language==0?'个人照片':'Photo'"> | 77 | <el-form-item :label="language==0?'个人照片':'Photo'" prop="picUrl"> |
| 72 | <ImageUpload2 | 78 | <ImageUpload2 |
| 73 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" | 79 | v-model="form.picUrl" :crop-height="280" :crop-width="200" :is-show-tip="false" :limit="1" |
| 74 | :is-show-tip="false" | 80 | class="threeFour" |
| 75 | /> | 81 | /> |
| 76 | </el-form-item> | 82 | </el-form-item> |
| 77 | 83 | ||
| 78 | <el-form-item :label="language==0?'证件类型':'ID Type'" prop="idcType" | 84 | <el-form-item |
| 79 | :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1"> | 85 | :label="language==0?'证件类型':'ID Type'" :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1" |
| 80 | <el-select v-model="form.idcType" style="width: 100%;" :disabled="editgay"> | 86 | prop="idcType" |
| 87 | > | ||
| 88 | <el-select v-model="form.idcType" :disabled="editgay" style="width: 100%;"> | ||
| 81 | <el-option | 89 | <el-option |
| 82 | v-for="item in certificates" | 90 | v-for="item in certificates" |
| 83 | :key="item.value" | 91 | :key="item.value" |
| ... | @@ -86,32 +94,36 @@ | ... | @@ -86,32 +94,36 @@ |
| 86 | /> | 94 | /> |
| 87 | </el-select> | 95 | </el-select> |
| 88 | </el-form-item> | 96 | </el-form-item> |
| 89 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" | 97 | <el-form-item |
| 90 | :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1"> | 98 | :label="language==0?'证件号码':'ID NO'" :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1" |
| 91 | <el-input v-model="form.idcCode" :disabled="editgay" @blur="giveBirthDay"/> | 99 | prop="idcCode" |
| 100 | > | ||
| 101 | <el-input v-model="form.idcCode" :disabled="editgay" @blur="giveBirthDay" /> | ||
| 92 | </el-form-item> | 102 | </el-form-item> |
| 93 | <el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth" | 103 | <el-form-item |
| 94 | :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1" | 104 | :label="language==0?'出生日期':'Date of Birth'" :required="!form.wdsfMin&&form.labelArr.indexOf('0')>-1" |
| 105 | prop="birth" | ||
| 95 | > | 106 | > |
| 96 | <el-date-picker | 107 | <el-date-picker |
| 97 | v-model="form.birth" :disabled="form.idcType=='0'" | 108 | v-model="form.birth" :disabled="form.idcType=='0'" |
| 98 | style="width: 100%;" :disabled-date="disabledBirth" | 109 | :disabled-date="disabledBirth" format="YYYY-MM-DD" |
| 99 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" | 110 | style="width: 100%;" type="date" value-format="YYYY-MM-DD" |
| 100 | /> | 111 | /> |
| 101 | </el-form-item> | 112 | </el-form-item> |
| 102 | 113 | ||
| 103 | <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone"> | 114 | <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone"> |
| 104 | <el-input v-model="form.phone" type="text"/> | 115 | <el-input v-model="form.phone" type="text" /> |
| 105 | </el-form-item> | 116 | </el-form-item> |
| 106 | 117 | ||
| 107 | <el-form-item :label="language==0?'详细地址':'Address'" prop="address"> | 118 | <el-form-item :label="language==0?'详细地址':'Address'" prop="address"> |
| 108 | <el-cascader v-if="form.countryId == 240" | 119 | <el-cascader |
| 120 | v-if="form.countryId == 240" | ||
| 109 | v-model="form.regionId" | 121 | v-model="form.regionId" |
| 110 | style="width: 100%;margin-bottom: 15px" | ||
| 111 | :options="regionsList" | 122 | :options="regionsList" |
| 112 | :props="{ label:'text' }" | 123 | :props="{ label:'text' }" |
| 124 | style="width: 100%;margin-bottom: 15px" | ||
| 113 | /> | 125 | /> |
| 114 | <el-input v-model="form.address" type="textarea" :rows="4"/> | 126 | <el-input v-model="form.address" :rows="4" type="textarea" /> |
| 115 | 127 | ||
| 116 | </el-form-item> | 128 | </el-form-item> |
| 117 | 129 | ||
| ... | @@ -126,8 +138,8 @@ | ... | @@ -126,8 +138,8 @@ |
| 126 | 138 | ||
| 127 | <template #footer> | 139 | <template #footer> |
| 128 | <div class="dialog-footer text-center"> | 140 | <div class="dialog-footer text-center"> |
| 129 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm"> | 141 | <el-button class="btn-lineG w200px" round type="primary" @click="submitForm"> |
| 130 | {{language == 0 ? '确定' : 'Save'}} | 142 | {{ language == 0 ? '确定' : 'Save' }} |
| 131 | </el-button> | 143 | </el-button> |
| 132 | </div> | 144 | </div> |
| 133 | </template> | 145 | </template> |
| ... | @@ -135,19 +147,19 @@ | ... | @@ -135,19 +147,19 @@ |
| 135 | </template> | 147 | </template> |
| 136 | 148 | ||
| 137 | <script setup> | 149 | <script setup> |
| 138 | import {reactive, ref, toRefs, watch} from 'vue' | 150 | import { reactive, ref, toRefs, watch } from 'vue' |
| 139 | import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' | 151 | import { getCurrentInstance, nextTick, onMounted } from '@vue/runtime-core' |
| 140 | import * as match from '@/apiPc/match' | 152 | import * as match from '@/apiPc/match' |
| 141 | import {dayjs, ElMessage} from 'element-plus' | 153 | import { dayjs, ElMessage } from 'element-plus' |
| 142 | import _ from 'lodash' | 154 | import _ from 'lodash' |
| 143 | import {useStorage} from "@vueuse/core/index"; | 155 | import { useStorage } from '@vueuse/core/index' |
| 144 | import {checkWdsf, getCaptchaSms} from "@/apiPc/match"; | 156 | import { checkWdsf, getCaptchaSms } from '@/apiPc/match' |
| 145 | 157 | ||
| 146 | const language = useStorage('language', 0) | 158 | const language = useStorage('language', 0) |
| 147 | const certificates = ref([ | 159 | const certificates = ref([ |
| 148 | { | 160 | { |
| 149 | value: '0', | 161 | value: '0', |
| 150 | disabled: language.value == 0 ? false : true, | 162 | disabled: language.value != 0, |
| 151 | label: language.value == 0 ? '居民身份证' : 'Resident ID card' | 163 | label: language.value == 0 ? '居民身份证' : 'Resident ID card' |
| 152 | }, | 164 | }, |
| 153 | { | 165 | { |
| ... | @@ -159,7 +171,7 @@ const certificates = ref([ | ... | @@ -159,7 +171,7 @@ const certificates = ref([ |
| 159 | label: language.value == 0 ? '其他' : 'Other' | 171 | label: language.value == 0 ? '其他' : 'Other' |
| 160 | } | 172 | } |
| 161 | ]) | 173 | ]) |
| 162 | const {proxy} = getCurrentInstance() | 174 | const { proxy } = getCurrentInstance() |
| 163 | const emit = defineEmits(['submitForm']) | 175 | const emit = defineEmits(['submitForm']) |
| 164 | const data = reactive({ | 176 | const data = reactive({ |
| 165 | form: { | 177 | form: { |
| ... | @@ -167,9 +179,9 @@ const data = reactive({ | ... | @@ -167,9 +179,9 @@ const data = reactive({ |
| 167 | // sex: '0' | 179 | // sex: '0' |
| 168 | }, | 180 | }, |
| 169 | rules_cn: { | 181 | rules_cn: { |
| 170 | xing: [{required: true, message: '必填', trigger: 'blur'}], | 182 | xing: [{ required: true, message: '必填', trigger: 'blur' }], |
| 171 | ming: [{required: true, message: '必填', trigger: 'blur'}], | 183 | ming: [{ required: true, message: '必填', trigger: 'blur' }], |
| 172 | countryId: [{required: true, message: '必填', trigger: 'change'}], | 184 | countryId: [{ required: true, message: '必填', trigger: 'change' }], |
| 173 | // idcType: [{required: true, message: '必填', trigger: 'change'}], | 185 | // idcType: [{required: true, message: '必填', trigger: 'change'}], |
| 174 | // idcCode: [{required: true, message: '必填', trigger: 'blur'}], | 186 | // idcCode: [{required: true, message: '必填', trigger: 'blur'}], |
| 175 | // phone: [{required: true, message: '必填', trigger: 'blur'}], | 187 | // phone: [{required: true, message: '必填', trigger: 'blur'}], |
| ... | @@ -177,13 +189,13 @@ const data = reactive({ | ... | @@ -177,13 +189,13 @@ const data = reactive({ |
| 177 | // birth: [{required: true, message: '必填', trigger: 'change'}], | 189 | // birth: [{required: true, message: '必填', trigger: 'change'}], |
| 178 | // address: [{ required: true, message: '必填', trigger: 'blur' }], | 190 | // address: [{ required: true, message: '必填', trigger: 'blur' }], |
| 179 | // picUrl: [{required: true, message: '必填', trigger: 'blur'}], | 191 | // picUrl: [{required: true, message: '必填', trigger: 'blur'}], |
| 180 | sex: [{required: true, message: '必填', trigger: 'change'}], | 192 | sex: [{ required: true, message: '必填', trigger: 'change' }], |
| 181 | labelArr: [{required: true, message: '必填', trigger: 'change'}] | 193 | labelArr: [{ required: true, message: '必填', trigger: 'change' }] |
| 182 | }, | 194 | }, |
| 183 | rules: { | 195 | rules: { |
| 184 | xing: [{required: true, message: 'required', trigger: 'blur'}], | 196 | xing: [{ required: true, message: 'required', trigger: 'blur' }], |
| 185 | ming: [{required: true, message: 'required', trigger: 'blur'}], | 197 | ming: [{ required: true, message: 'required', trigger: 'blur' }], |
| 186 | countryId: [{required: true, message: 'required', trigger: 'change'}], | 198 | countryId: [{ required: true, message: 'required', trigger: 'change' }], |
| 187 | // idcType: [{required: true, message: 'required', trigger: 'change'}], | 199 | // idcType: [{required: true, message: 'required', trigger: 'change'}], |
| 188 | // idcCode: [{required: true, message: 'required', trigger: 'blur'}], | 200 | // idcCode: [{required: true, message: 'required', trigger: 'blur'}], |
| 189 | // phone: [{required: true, message: 'required', trigger: 'blur'}], | 201 | // phone: [{required: true, message: 'required', trigger: 'blur'}], |
| ... | @@ -191,20 +203,20 @@ const data = reactive({ | ... | @@ -191,20 +203,20 @@ const data = reactive({ |
| 191 | // birth: [{required: true, message: 'required', trigger: 'change'}], | 203 | // birth: [{required: true, message: 'required', trigger: 'change'}], |
| 192 | // address: [{ required: true, message: 'required', trigger: 'blur' }], | 204 | // address: [{ required: true, message: 'required', trigger: 'blur' }], |
| 193 | // picUrl: [{required: true, message: 'required', trigger: 'blur'}], | 205 | // picUrl: [{required: true, message: 'required', trigger: 'blur'}], |
| 194 | sex: [{required: true, message: 'required', trigger: 'change'}], | 206 | sex: [{ required: true, message: 'required', trigger: 'change' }], |
| 195 | labelArr: [{required: true, message: 'required', trigger: 'change'}] | 207 | labelArr: [{ required: true, message: 'required', trigger: 'change' }] |
| 196 | }, | 208 | }, |
| 197 | show: false, | 209 | show: false, |
| 198 | countryList: [], | 210 | countryList: [], |
| 199 | regionsList: [], | 211 | regionsList: [], |
| 200 | labels: [ | 212 | labels: [ |
| 201 | {value: '0', label: '运动员', enlabel: 'Athletes'}, | 213 | { value: '0', label: '运动员', enlabel: 'Athletes' }, |
| 202 | {value: '1', label: '教练', enlabel: 'Coach'}, | 214 | { value: '1', label: '教练', enlabel: 'Coach' }, |
| 203 | {value: '2', label: '领队', enlabel: 'Head of team'}, | 215 | { value: '2', label: '领队', enlabel: 'Head of team' }, |
| 204 | {value: '4', label: '队医', enlabel: 'Team doctor'}, | 216 | { value: '4', label: '队医', enlabel: 'Team doctor' }, |
| 205 | {value: '5', label: '翻译', enlabel: 'Interpreter'}, | 217 | { value: '5', label: '翻译', enlabel: 'Interpreter' }, |
| 206 | {value: '6', label: '官员', enlabel: 'Official'}, | 218 | { value: '6', label: '官员', enlabel: 'Official' }, |
| 207 | {value: '3', label: '其他', enlabel: 'Other'} | 219 | { value: '3', label: '其他', enlabel: 'Other' } |
| 208 | ], | 220 | ], |
| 209 | title: '添加选手信息', | 221 | title: '添加选手信息', |
| 210 | groupId: '0', | 222 | groupId: '0', |
| ... | @@ -224,13 +236,12 @@ const { | ... | @@ -224,13 +236,12 @@ const { |
| 224 | groupId, | 236 | groupId, |
| 225 | labels, | 237 | labels, |
| 226 | uType, | 238 | uType, |
| 227 | isMe,isCodeTrue | 239 | isMe, isCodeTrue |
| 228 | } = toRefs(data) | 240 | } = toRefs(data) |
| 229 | const card = ref('') | 241 | const card = ref('') |
| 230 | onMounted(() => { | 242 | onMounted(() => { |
| 231 | getCountryList() | 243 | getCountryList() |
| 232 | getRegionsList() | 244 | getRegionsList() |
| 233 | |||
| 234 | }) | 245 | }) |
| 235 | const editgay = ref(false) | 246 | const editgay = ref(false) |
| 236 | const editDis = ref(false) | 247 | const editDis = ref(false) |
| ... | @@ -252,10 +263,10 @@ const open = (params) => { | ... | @@ -252,10 +263,10 @@ const open = (params) => { |
| 252 | match.getPersonInfoById(params.id).then(res => { | 263 | match.getPersonInfoById(params.id).then(res => { |
| 253 | form.value = res.data | 264 | form.value = res.data |
| 254 | form.value.id = params.id | 265 | form.value.id = params.id |
| 255 | if(form.value.wdsfMin){ | 266 | if (form.value.wdsfMin) { |
| 256 | editDis.value = true | 267 | editDis.value = true |
| 257 | } | 268 | } |
| 258 | if(form.value.idcType=='3'){ | 269 | if (form.value.idcType == '3') { |
| 259 | form.value.idcType = '' | 270 | form.value.idcType = '' |
| 260 | form.value.idcCode = '' | 271 | form.value.idcCode = '' |
| 261 | } | 272 | } |
| ... | @@ -267,9 +278,8 @@ const open = (params) => { | ... | @@ -267,9 +278,8 @@ const open = (params) => { |
| 267 | } else { | 278 | } else { |
| 268 | editgay.value = false | 279 | editgay.value = false |
| 269 | } | 280 | } |
| 270 | |||
| 271 | } | 281 | } |
| 272 | defineExpose({open}) | 282 | defineExpose({ open }) |
| 273 | watch(show, (value) => { | 283 | watch(show, (value) => { |
| 274 | if (!value) { | 284 | if (!value) { |
| 275 | form.value = { | 285 | form.value = { |
| ... | @@ -285,17 +295,21 @@ watch(show, (value) => { | ... | @@ -285,17 +295,21 @@ watch(show, (value) => { |
| 285 | // proxy.$refs['dialogRef'].clearValidate() | 295 | // proxy.$refs['dialogRef'].clearValidate() |
| 286 | }) | 296 | }) |
| 287 | }) | 297 | }) |
| 298 | |||
| 288 | function disabledBirth(time) { | 299 | function disabledBirth(time) { |
| 289 | return time.getTime() > new Date().getTime() | 300 | return time.getTime() > new Date().getTime() |
| 290 | } | 301 | } |
| 302 | |||
| 291 | function resetCode() { | 303 | function resetCode() { |
| 292 | isCodeTrue.value = false | 304 | isCodeTrue.value = false |
| 293 | } | 305 | } |
| 306 | |||
| 294 | function getCountryList() { | 307 | function getCountryList() { |
| 295 | match.countryList().then(res => { | 308 | match.countryList().then(res => { |
| 296 | countryList.value = res.data | 309 | countryList.value = res.data |
| 297 | }) | 310 | }) |
| 298 | } | 311 | } |
| 312 | |||
| 299 | function checkCard() { | 313 | function checkCard() { |
| 300 | if (!card.value) { | 314 | if (!card.value) { |
| 301 | if (language.value == 0) { | 315 | if (language.value == 0) { |
| ... | @@ -306,7 +320,7 @@ function checkCard() { | ... | @@ -306,7 +320,7 @@ function checkCard() { |
| 306 | return | 320 | return |
| 307 | } | 321 | } |
| 308 | // isShow.value = true | 322 | // isShow.value = true |
| 309 | checkWdsf({card: card.value}).then(res => { | 323 | checkWdsf({ card: card.value }).then(res => { |
| 310 | if (res.data.wdsfFlag == '0') { | 324 | if (res.data.wdsfFlag == '0') { |
| 311 | if (language.value == 0) { | 325 | if (language.value == 0) { |
| 312 | ElMessage.warning('WDSF会员号错误') | 326 | ElMessage.warning('WDSF会员号错误') |
| ... | @@ -323,7 +337,7 @@ function checkCard() { | ... | @@ -323,7 +337,7 @@ function checkCard() { |
| 323 | } | 337 | } |
| 324 | return | 338 | return |
| 325 | } | 339 | } |
| 326 | if(res.data.min){ | 340 | if (res.data.min) { |
| 327 | editDis.value = true | 341 | editDis.value = true |
| 328 | form.value.wdsfMin = res.data.min | 342 | form.value.wdsfMin = res.data.min |
| 329 | form.value.xing = res.data.surname | 343 | form.value.xing = res.data.surname |
| ... | @@ -338,6 +352,7 @@ function checkCard() { | ... | @@ -338,6 +352,7 @@ function checkCard() { |
| 338 | } | 352 | } |
| 339 | }) | 353 | }) |
| 340 | } | 354 | } |
| 355 | |||
| 341 | function getRegionsList() { | 356 | function getRegionsList() { |
| 342 | match.regionsList().then(res => { | 357 | match.regionsList().then(res => { |
| 343 | regionsList.value = res.data | 358 | regionsList.value = res.data |
| ... | @@ -364,15 +379,16 @@ function checkCode() { | ... | @@ -364,15 +379,16 @@ function checkCode() { |
| 364 | } | 379 | } |
| 365 | 380 | ||
| 366 | function changeCountry() { | 381 | function changeCountry() { |
| 367 | if( form.value.countryId == 240 ){ | 382 | if (form.value.countryId == 240) { |
| 368 | form.value.idcType = '0' | 383 | form.value.idcType = '0' |
| 369 | } | 384 | } |
| 370 | } | 385 | } |
| 386 | |||
| 371 | function giveBirthDay() { | 387 | function giveBirthDay() { |
| 372 | // 判断身份证正确性/赋值生日 | 388 | // 判断身份证正确性/赋值生日 |
| 373 | if (form.value.idcType == '0') { | 389 | if (form.value.idcType == '0') { |
| 374 | if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(form.value.idcCode))) { | 390 | if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(form.value.idcCode))) { |
| 375 | ElMessage.warning(language.value == 0 ? '请输入正确的身份证号码' :'Please enter the correct Resident ID card') | 391 | ElMessage.warning(language.value == 0 ? '请输入正确的身份证号码' : 'Please enter the correct Resident ID card') |
| 376 | } else { | 392 | } else { |
| 377 | let tmpStr = '' | 393 | let tmpStr = '' |
| 378 | if (form.value.idcCode.length == 15) { | 394 | if (form.value.idcCode.length == 15) { |
| ... | @@ -397,6 +413,7 @@ function giveBirthDay() { | ... | @@ -397,6 +413,7 @@ function giveBirthDay() { |
| 397 | } | 413 | } |
| 398 | } | 414 | } |
| 399 | } | 415 | } |
| 416 | |||
| 400 | function submitForm() { | 417 | function submitForm() { |
| 401 | proxy.$refs['dialogRef'].validate((valid) => { | 418 | proxy.$refs['dialogRef'].validate((valid) => { |
| 402 | if (valid) { | 419 | if (valid) { |
| ... | @@ -413,20 +430,20 @@ function submitForm() { | ... | @@ -413,20 +430,20 @@ function submitForm() { |
| 413 | // return | 430 | // return |
| 414 | // } | 431 | // } |
| 415 | // } | 432 | // } |
| 416 | if(!editDis.value){ | 433 | if (!editDis.value) { |
| 417 | if(!form.value.xing){ | 434 | if (!form.value.xing) { |
| 418 | ElMessage.warning(language.value == 0 ? '请填写姓' :'Please fill in surname') | 435 | ElMessage.warning(language.value == 0 ? '请填写姓' : 'Please fill in surname') |
| 419 | return | 436 | return |
| 420 | } | 437 | } |
| 421 | } | 438 | } |
| 422 | if(!form.value.passportUrl){ | 439 | if (!form.value.passportUrl) { |
| 423 | ElMessage.warning(language.value == 0 ? '请上传护照文件' :'Please upload your passport file') | 440 | ElMessage.warning(language.value == 0 ? '请上传护照文件' : 'Please upload your passport file') |
| 424 | return | 441 | return |
| 425 | } | 442 | } |
| 426 | if (typeof (form.value.regionId) === 'object') { | 443 | if (typeof (form.value.regionId) === 'object') { |
| 427 | form.value.regionId = _.last(form.value.regionId) | 444 | form.value.regionId = _.last(form.value.regionId) |
| 428 | } | 445 | } |
| 429 | if(Array.isArray(form.value.passportUrl)){ | 446 | if (Array.isArray(form.value.passportUrl)) { |
| 430 | form.value.passportUrl = form.value.passportUrl[0].url | 447 | form.value.passportUrl = form.value.passportUrl[0].url |
| 431 | } | 448 | } |
| 432 | form.value.label = form.value.labelArr.toString() | 449 | form.value.label = form.value.labelArr.toString() |
| ... | @@ -542,6 +559,7 @@ function cancel() { | ... | @@ -542,6 +559,7 @@ function cancel() { |
| 542 | } | 559 | } |
| 543 | } | 560 | } |
| 544 | } | 561 | } |
| 562 | |||
| 545 | .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover { | 563 | .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover { |
| 546 | color: var(--el-color-primary); | 564 | color: var(--el-color-primary); |
| 547 | background: #efefff; | 565 | background: #efefff; | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog | 2 | <el-dialog |
| 3 | v-model="show" :title="title" width="1100px" 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="1100px" | ||
| 6 | > | 7 | > |
| 7 | <!-- 国际赛事--> | 8 | <!-- 国际赛事--> |
| 8 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline> | 9 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" inline label-width="120px"> |
| 9 | <el-row :gutter="30" class="mt30"> | 10 | <el-row :gutter="30" class="mt30"> |
| 10 | <el-col :lg="12" class="touxiang"> | 11 | <el-col :lg="12" class="touxiang"> |
| 11 | 12 | ||
| 12 | <el-form-item prop="picUrl" :label="language==0?'个人照片':'Photo'"> | 13 | <el-form-item :label="language==0?'个人照片':'Photo'" prop="picUrl"> |
| 13 | <ImageUpload2 | 14 | <ImageUpload2 |
| 14 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" | 15 | v-model="form.picUrl" :crop-height="280" :crop-width="200" :is-show-tip="false" :limit="1" |
| 15 | :is-show-tip="false" | 16 | class="threeFour" |
| 16 | /> | 17 | /> |
| 17 | </el-form-item> | 18 | </el-form-item> |
| 18 | <el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" v-if="form.id"> | 19 | <el-form-item v-if="form.id" :label="language==0?'WDSF会员号':'WDSF MIN'"> |
| 19 | {{ form.wdsfMin }} | 20 | {{ form.wdsfMin }} |
| 20 | </el-form-item> | 21 | </el-form-item> |
| 21 | <el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" required v-else> | 22 | <el-form-item v-else :label="language==0?'WDSF会员号':'WDSF MIN'" required> |
| 22 | <el-input type="text" v-model="form.wdsfMin" @change="resetCode" > | 23 | <el-input v-model="form.wdsfMin" type="text" @change="resetCode"> |
| 23 | <template #append> | 24 | <template #append> |
| 24 | <el-button type="primary" plain style="width: 110px" @click="checkCard"> | 25 | <el-button plain style="width: 110px" type="primary" @click="checkCard"> |
| 25 | <el-icon v-if="isCodeTrue" size="16" color="#67C23A"> | 26 | <el-icon v-if="isCodeTrue" color="#67C23A" size="16"> |
| 26 | <CircleCheckFilled/> | 27 | <CircleCheckFilled /> |
| 27 | </el-icon> | 28 | </el-icon> |
| 28 | <span v-else>{{ language == 0 ? '校验卡号' : 'Check Code' }}</span> | 29 | <span v-else>{{ language == 0 ? '校验卡号' : 'Check Code' }}</span> |
| 29 | </el-button> | 30 | </el-button> |
| ... | @@ -31,13 +32,13 @@ | ... | @@ -31,13 +32,13 @@ |
| 31 | </el-input> | 32 | </el-input> |
| 32 | </el-form-item> | 33 | </el-form-item> |
| 33 | <el-form-item :label="language==0?'姓氏':'Surname'" prop="xing"> | 34 | <el-form-item :label="language==0?'姓氏':'Surname'" prop="xing"> |
| 34 | <el-input v-model="form.xing" disabled/> | 35 | <el-input v-model="form.xing" disabled /> |
| 35 | </el-form-item> | 36 | </el-form-item> |
| 36 | <el-form-item :label="language==0?'名':'Name'" prop="ming" required> | 37 | <el-form-item :label="language==0?'名':'Name'" prop="ming" required> |
| 37 | <el-input v-model="form.ming" disabled/> | 38 | <el-input v-model="form.ming" disabled /> |
| 38 | </el-form-item> | 39 | </el-form-item> |
| 39 | <el-form-item :label="language==0?'证件类型':'ID Type'" prop="idcType" required> | 40 | <el-form-item :label="language==0?'证件类型':'ID Type'" prop="idcType" required> |
| 40 | <el-select v-model="form.idcType" style="width: 100%;" :disabled="editgay"> | 41 | <el-select v-model="form.idcType" :disabled="editgay" style="width: 100%;"> |
| 41 | <el-option | 42 | <el-option |
| 42 | v-for="item in certificates" | 43 | v-for="item in certificates" |
| 43 | :key="item.value" | 44 | :key="item.value" |
| ... | @@ -47,12 +48,12 @@ | ... | @@ -47,12 +48,12 @@ |
| 47 | </el-select> | 48 | </el-select> |
| 48 | </el-form-item> | 49 | </el-form-item> |
| 49 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> | 50 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> |
| 50 | <el-input v-model="form.idcCode" @blur="checkCode" :disabled="editgay"/> | 51 | <el-input v-model="form.idcCode" :disabled="editgay" @blur="checkCode" /> |
| 51 | </el-form-item> | 52 | </el-form-item> |
| 52 | <el-form-item :label="language==0?'性别':'Gender'" prop="sex"> | 53 | <el-form-item :label="language==0?'性别':'Gender'" prop="sex"> |
| 53 | <el-radio-group v-model="form.sex" :disabled="form.idcType=='0'"> | 54 | <el-radio-group v-model="form.sex" :disabled="form.idcType=='0'"> |
| 54 | <el-radio value="0">{{ language==0?'女':'female' }}</el-radio> | 55 | <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> |
| 55 | <el-radio value="1">{{ language==0?'男':'male' }}</el-radio> | 56 | <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> |
| 56 | </el-radio-group> | 57 | </el-radio-group> |
| 57 | </el-form-item> | 58 | </el-form-item> |
| 58 | </el-col> | 59 | </el-col> |
| ... | @@ -60,59 +61,65 @@ | ... | @@ -60,59 +61,65 @@ |
| 60 | <el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth"> | 61 | <el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth"> |
| 61 | <el-date-picker | 62 | <el-date-picker |
| 62 | v-model="form.birth" :disabled="form.idcType=='0'" | 63 | v-model="form.birth" :disabled="form.idcType=='0'" |
| 63 | style="width: 100%;" :disabled-date="disabledBirth" | 64 | :disabled-date="disabledBirth" format="YYYY-MM-DD" |
| 64 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" | 65 | style="width: 100%;" type="date" value-format="YYYY-MM-DD" |
| 65 | /> | 66 | /> |
| 66 | </el-form-item> | 67 | </el-form-item> |
| 67 | <el-form-item :label="language==0?'主要会员角色':'Roles'" prop="labelArr"> | 68 | <el-form-item :label="language==0?'主要会员角色':'Roles'" prop="labelArr"> |
| 68 | <el-select v-model="form.labelArr" multiple> | 69 | <el-select v-model="form.labelArr" multiple> |
| 69 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> | 70 | <el-option v-for="l in labels" :key="l.value" :label="language==0?l.label:l.enlabel" :value="l.value" /> |
| 70 | </el-select> | 71 | </el-select> |
| 71 | </el-form-item> | 72 | </el-form-item> |
| 72 | <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone"> | 73 | <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone"> |
| 73 | <el-input v-model="form.phone" type="number"/> | 74 | <el-input v-model="form.phone" type="number" /> |
| 74 | </el-form-item> | 75 | </el-form-item> |
| 75 | 76 | ||
| 76 | 77 | ||
| 77 | <el-form-item :label="language==0?'所属国家/地区':'Country'" prop="countryId" required> | 78 | <el-form-item :label="language==0?'所属国家/地区':'Country'" prop="countryId" required> |
| 78 | <el-select disabled filterable v-model="form.countryId" style="width: 100%;" @change="changeCountryId"> | 79 | <el-select v-model="form.countryId" disabled filterable style="width: 100%;" @change="changeCountryId"> |
| 79 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/> | 80 | <el-option |
| 81 | v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" | ||
| 82 | :value="item.id" | ||
| 83 | /> | ||
| 80 | </el-select> | 84 | </el-select> |
| 81 | </el-form-item> | 85 | </el-form-item> |
| 82 | 86 | ||
| 83 | <el-form-item :label="language==0?'详细地址':'Address'" prop="address"> | 87 | <el-form-item :label="language==0?'详细地址':'Address'" prop="address"> |
| 84 | <el-cascader v-if="form.countryId == 240" | 88 | <el-cascader |
| 89 | v-if="form.countryId == 240" | ||
| 85 | v-model="form.regionId" | 90 | v-model="form.regionId" |
| 86 | style="width: 100%;margin-bottom: 15px" | ||
| 87 | :options="regionsList" | 91 | :options="regionsList" |
| 88 | :props="{ label:'text' }" | 92 | :props="{ label:'text' }" |
| 93 | style="width: 100%;margin-bottom: 15px" | ||
| 89 | /> | 94 | /> |
| 90 | <el-input v-model="form.address" type="textarea" :rows="4"/> | 95 | <el-input v-model="form.address" :rows="4" type="textarea" /> |
| 91 | |||
| 92 | </el-form-item> | 96 | </el-form-item> |
| 93 | |||
| 94 | </el-col> | 97 | </el-col> |
| 95 | </el-row> | 98 | </el-row> |
| 96 | </el-form> | 99 | </el-form> |
| 97 | <Vcode :show="isShow" :z-index="3000" @success="codeSuccess()"></Vcode> | 100 | <Vcode :show="isShow" :z-index="3000" @success="codeSuccess()" /> |
| 98 | 101 | ||
| 99 | <template #footer> | 102 | <template #footer> |
| 100 | <div class="dialog-footer text-center"> | 103 | <div class="dialog-footer text-center"> |
| 101 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ language==0?'确定':'Save' }}</el-button> | 104 | <el-button class="btn-lineG w200px" round type="primary" @click="submitForm">{{ |
| 105 | language == 0 ? '确定' : 'Save' | ||
| 106 | }} | ||
| 107 | </el-button> | ||
| 102 | </div> | 108 | </div> |
| 103 | </template> | 109 | </template> |
| 104 | </el-dialog> | 110 | </el-dialog> |
| 105 | </template> | 111 | </template> |
| 106 | 112 | ||
| 107 | <script setup> | 113 | <script setup> |
| 108 | import {reactive, ref, toRefs, watch} from 'vue' | 114 | import { reactive, ref, toRefs, watch } from 'vue' |
| 109 | import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' | 115 | import { getCurrentInstance, nextTick, onMounted } from '@vue/runtime-core' |
| 110 | import * as match from '@/apiPc/match' | 116 | import * as match from '@/apiPc/match' |
| 111 | import {ElMessage} from 'element-plus' | 117 | import { ElMessage } from 'element-plus' |
| 112 | import _ from 'lodash' | 118 | import _ from 'lodash' |
| 113 | import {useStorage} from "@vueuse/core/index"; | 119 | import { useStorage } from '@vueuse/core/index' |
| 114 | import {checkWdsf, getCaptchaSms} from "@/apiPc/match"; | 120 | import { checkWdsf, getCaptchaSms } from '@/apiPc/match' |
| 115 | const language= useStorage('language',0) | 121 | |
| 122 | const language = useStorage('language', 0) | ||
| 116 | const certificates = ref([ | 123 | const certificates = ref([ |
| 117 | { | 124 | { |
| 118 | value: '0', | 125 | value: '0', |
| ... | @@ -127,50 +134,62 @@ const certificates = ref([ | ... | @@ -127,50 +134,62 @@ const certificates = ref([ |
| 127 | label: language.value == 0 ? '其他' : 'Other' | 134 | label: language.value == 0 ? '其他' : 'Other' |
| 128 | } | 135 | } |
| 129 | ]) | 136 | ]) |
| 130 | const {proxy} = getCurrentInstance() | 137 | const { proxy } = getCurrentInstance() |
| 131 | const emit = defineEmits(['submitForm']) | 138 | const emit = defineEmits(['submitForm']) |
| 132 | const data = reactive({ | 139 | const data = reactive({ |
| 133 | form: { | 140 | form: { |
| 134 | // countryId: 240 | 141 | // countryId: 240 |
| 135 | sex:'0' | 142 | sex: '0' |
| 136 | }, | 143 | }, |
| 137 | rules_cn:{ | 144 | rules_cn: { |
| 138 | // xing: [{required: true, message: 'required', trigger: 'blur'}], | 145 | // xing: [{required: true, message: 'required', trigger: 'blur'}], |
| 139 | ming: [{required: true, message: 'required', trigger: 'blur'}], | 146 | ming: [{ required: true, message: 'required', trigger: 'blur' }], |
| 140 | // countryId: [{required: true, message: 'required', trigger: 'change'}], | 147 | // countryId: [{required: true, message: 'required', trigger: 'change'}], |
| 141 | idcType: [{required: true, message: 'required', trigger: 'change'}], | 148 | idcType: [{ required: true, message: 'required', trigger: 'change' }], |
| 142 | idcCode: [{required: true, message: 'required', trigger: 'blur'}], | 149 | idcCode: [{ required: true, message: 'required', trigger: 'blur' }], |
| 143 | // phone: [{required: true, message: 'required', trigger: 'blur'}], | 150 | // phone: [{required: true, message: 'required', trigger: 'blur'}], |
| 144 | // regionId: [{ required: true, message: 'required', trigger: 'change' }], | 151 | // regionId: [{ required: true, message: 'required', trigger: 'change' }], |
| 145 | // birth: [{required: true, message: 'required', trigger: 'change'}], | 152 | // birth: [{required: true, message: 'required', trigger: 'change'}], |
| 146 | // address: [{ required: true, message: 'required', trigger: 'blur' }], | 153 | // address: [{ required: true, message: 'required', trigger: 'blur' }], |
| 147 | // picUrl: [{required: true, message: 'required', trigger: 'blur'}], | 154 | // picUrl: [{required: true, message: 'required', trigger: 'blur'}], |
| 148 | sex: [{required: true, message: 'required', trigger: 'change'}], | 155 | sex: [{ required: true, message: 'required', trigger: 'change' }], |
| 149 | labelArr: [{required: true, message: 'required', trigger: 'change'}] | 156 | labelArr: [{ required: true, message: 'required', trigger: 'change' }] |
| 150 | }, | 157 | }, |
| 151 | show: false, | 158 | show: false, |
| 152 | countryList: [], | 159 | countryList: [], |
| 153 | regionsList: [], | 160 | regionsList: [], |
| 154 | labels: [ | 161 | labels: [ |
| 155 | {value: '0', label: '运动员', enlabel: 'Sportsman'}, | 162 | { value: '0', label: '运动员', enlabel: 'Sportsman' }, |
| 156 | {value: '1', label: '教练', enlabel: 'Coach'}, | 163 | { value: '1', label: '教练', enlabel: 'Coach' }, |
| 157 | {value: '2', label: '领队', enlabel: 'Head Of Team'}, | 164 | { value: '2', label: '领队', enlabel: 'Head Of Team' }, |
| 158 | {value: '4', label: '队医', enlabel: 'Team Doctor'}, | 165 | { value: '4', label: '队医', enlabel: 'Team Doctor' }, |
| 159 | {value: '5', label: '翻译', enlabel: 'Interpreter'}, | 166 | { value: '5', label: '翻译', enlabel: 'Interpreter' }, |
| 160 | {value: '6', label: '官员', enlabel: 'Official'}, | 167 | { value: '6', label: '官员', enlabel: 'Official' }, |
| 161 | {value: '3', label: '其他', enlabel: 'Other'} | 168 | { value: '3', label: '其他', enlabel: 'Other' } |
| 162 | ], | 169 | ], |
| 163 | title: '添加选手信息', | 170 | title: '添加选手信息', |
| 164 | groupId: '0', | 171 | groupId: '0', |
| 165 | showRequire: false, | 172 | showRequire: false, |
| 166 | isMe:false | 173 | isMe: false |
| 167 | }) | 174 | }) |
| 168 | const {showRequire, form, rules,rules_cn, show, countryList, regionsList, title, groupId, labels,uType,isMe} = toRefs(data) | 175 | const { |
| 176 | showRequire, | ||
| 177 | form, | ||
| 178 | rules, | ||
| 179 | rules_cn, | ||
| 180 | show, | ||
| 181 | countryList, | ||
| 182 | regionsList, | ||
| 183 | title, | ||
| 184 | groupId, | ||
| 185 | labels, | ||
| 186 | uType, | ||
| 187 | isMe | ||
| 188 | } = toRefs(data) | ||
| 169 | const isShow = ref(false) | 189 | const isShow = ref(false) |
| 170 | onMounted(() => { | 190 | onMounted(() => { |
| 171 | getCountryList() | 191 | getCountryList() |
| 172 | getRegionsList() | 192 | getRegionsList() |
| 173 | |||
| 174 | }) | 193 | }) |
| 175 | const editgay = ref(false) | 194 | const editgay = ref(false) |
| 176 | const open = (params) => { | 195 | const open = (params) => { |
| ... | @@ -179,15 +198,15 @@ const open = (params) => { | ... | @@ -179,15 +198,15 @@ const open = (params) => { |
| 179 | title.value = params.title | 198 | title.value = params.title |
| 180 | groupId.value = params.groupId || '0' | 199 | groupId.value = params.groupId || '0' |
| 181 | isMe.value = params.isMe | 200 | isMe.value = params.isMe |
| 182 | if(params.label){ | 201 | if (params.label) { |
| 183 | form.value.labelArr= [params.label] | 202 | form.value.labelArr = [params.label] |
| 184 | } | 203 | } |
| 185 | if(language.value == 0){ | 204 | if (language.value == 0) { |
| 186 | form.value.countryId = 240 | 205 | form.value.countryId = 240 |
| 187 | form.value.idcType = '0' | 206 | form.value.idcType = '0' |
| 188 | } | 207 | } |
| 189 | if(isMe.value){ | 208 | if (isMe.value) { |
| 190 | //个人 | 209 | // 个人 |
| 191 | match.getMyPersonInfo().then(res => { | 210 | match.getMyPersonInfo().then(res => { |
| 192 | form.value = res.data | 211 | form.value = res.data |
| 193 | form.value.id = res.data.id | 212 | form.value.id = res.data.id |
| ... | @@ -214,13 +233,13 @@ const open = (params) => { | ... | @@ -214,13 +233,13 @@ const open = (params) => { |
| 214 | } | 233 | } |
| 215 | } | 234 | } |
| 216 | } | 235 | } |
| 217 | defineExpose({open}) | 236 | defineExpose({ open }) |
| 218 | watch(show, (value) => { | 237 | watch(show, (value) => { |
| 219 | if (!value) { | 238 | if (!value) { |
| 220 | form.value = { | 239 | form.value = { |
| 221 | sex:'0' | 240 | sex: '0' |
| 222 | } | 241 | } |
| 223 | if(language.value == 0){ | 242 | if (language.value == 0) { |
| 224 | form.value.countryId = 240 | 243 | form.value.countryId = 240 |
| 225 | } | 244 | } |
| 226 | } | 245 | } |
| ... | @@ -228,6 +247,7 @@ watch(show, (value) => { | ... | @@ -228,6 +247,7 @@ watch(show, (value) => { |
| 228 | // proxy.$refs['dialogRef'].clearValidate() | 247 | // proxy.$refs['dialogRef'].clearValidate() |
| 229 | }) | 248 | }) |
| 230 | }) | 249 | }) |
| 250 | |||
| 231 | function checkCard() { | 251 | function checkCard() { |
| 232 | if (!form.value.card) { | 252 | if (!form.value.card) { |
| 233 | if (language.value == 0) { | 253 | if (language.value == 0) { |
| ... | @@ -239,12 +259,13 @@ function checkCard() { | ... | @@ -239,12 +259,13 @@ function checkCard() { |
| 239 | } | 259 | } |
| 240 | isShow.value = true | 260 | isShow.value = true |
| 241 | } | 261 | } |
| 262 | |||
| 242 | function codeSuccess(msg) { | 263 | function codeSuccess(msg) { |
| 243 | console.log('验证通过' + msg); | 264 | console.log('验证通过' + msg) |
| 244 | isShow.value = false | 265 | isShow.value = false |
| 245 | checkWdsf({card: form.value.wdsfMin}).then(res => { | 266 | checkWdsf({ card: form.value.wdsfMin }).then(res => { |
| 246 | form.value = res.data | 267 | form.value = res.data |
| 247 | if(form.value.passportUrl){ | 268 | if (form.value.passportUrl) { |
| 248 | 269 | ||
| 249 | } | 270 | } |
| 250 | if (!form.value.sex) { | 271 | if (!form.value.sex) { |
| ... | @@ -281,7 +302,7 @@ function getRegionsList() { | ... | @@ -281,7 +302,7 @@ function getRegionsList() { |
| 281 | } | 302 | } |
| 282 | 303 | ||
| 283 | function checkCode() { | 304 | function checkCode() { |
| 284 | if (form.value.idcType=='0' && form.value.idcCode) { | 305 | if (form.value.idcType == '0' && form.value.idcCode) { |
| 285 | giveBirthDay() | 306 | giveBirthDay() |
| 286 | var obj = { | 307 | var obj = { |
| 287 | idcType: form.value.idcType, | 308 | idcType: form.value.idcType, |
| ... | @@ -341,7 +362,7 @@ function submitForm() { | ... | @@ -341,7 +362,7 @@ function submitForm() { |
| 341 | if (showRequire.value) { | 362 | if (showRequire.value) { |
| 342 | var pattern = /^1[3456789]\d{9}$/ | 363 | var pattern = /^1[3456789]\d{9}$/ |
| 343 | if (!pattern.test(form.value.phone)) { | 364 | if (!pattern.test(form.value.phone)) { |
| 344 | ElMessage.warning(language.value == 0 ?'请输入正确的手机号':'Please enter the correct mobile phone number') | 365 | ElMessage.warning(language.value == 0 ? '请输入正确的手机号' : 'Please enter the correct mobile phone number') |
| 345 | return | 366 | return |
| 346 | } | 367 | } |
| 347 | } | 368 | } |
| ... | @@ -355,7 +376,7 @@ function submitForm() { | ... | @@ -355,7 +376,7 @@ function submitForm() { |
| 355 | // 团队 | 376 | // 团队 |
| 356 | form.value.groupId = groupId.value | 377 | form.value.groupId = groupId.value |
| 357 | match.savePersonForMyGroup(form.value).then(res => { | 378 | match.savePersonForMyGroup(form.value).then(res => { |
| 358 | ElMessage.success(language.value == 0 ?'保存成功':'Save successful') | 379 | ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') |
| 359 | show.value = false | 380 | show.value = false |
| 360 | emit('submitForm') | 381 | emit('submitForm') |
| 361 | }) | 382 | }) |
| ... | @@ -363,20 +384,20 @@ function submitForm() { | ... | @@ -363,20 +384,20 @@ function submitForm() { |
| 363 | if (editgay.value) { | 384 | if (editgay.value) { |
| 364 | // id不是0 | 385 | // id不是0 |
| 365 | match.editPersonInfo(form.value).then(res => { | 386 | match.editPersonInfo(form.value).then(res => { |
| 366 | ElMessage.success(language.value == 0 ?'保存成功':'Save successful') | 387 | ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') |
| 367 | show.value = false | 388 | show.value = false |
| 368 | emit('submitForm') | 389 | emit('submitForm') |
| 369 | }) | 390 | }) |
| 370 | } else { | 391 | } else { |
| 371 | if(isMe.value){ | 392 | if (isMe.value) { |
| 372 | match.saveMyBaseInfo(form.value).then(res => { | 393 | match.saveMyBaseInfo(form.value).then(res => { |
| 373 | ElMessage.success(language.value == 0 ?'保存成功':'Save successful') | 394 | ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') |
| 374 | show.value = false | 395 | show.value = false |
| 375 | emit('submitForm') | 396 | emit('submitForm') |
| 376 | }) | 397 | }) |
| 377 | } else { | 398 | } else { |
| 378 | match.savePersonForMyPerson(form.value).then(res => { | 399 | match.savePersonForMyPerson(form.value).then(res => { |
| 379 | ElMessage.success(language.value == 0 ?'保存成功':'Save successful') | 400 | ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') |
| 380 | show.value = false | 401 | show.value = false |
| 381 | emit('submitForm') | 402 | emit('submitForm') |
| 382 | }) | 403 | }) |
| ... | @@ -390,6 +411,7 @@ function submitForm() { | ... | @@ -390,6 +411,7 @@ function submitForm() { |
| 390 | function cancel() { | 411 | function cancel() { |
| 391 | show.value = false | 412 | show.value = false |
| 392 | } | 413 | } |
| 414 | |||
| 393 | function disabledBirth(time) { | 415 | function disabledBirth(time) { |
| 394 | return time.getTime() > new Date().getTime() | 416 | return time.getTime() > new Date().getTime() |
| 395 | } | 417 | } |
| ... | @@ -464,6 +486,7 @@ function disabledBirth(time) { | ... | @@ -464,6 +486,7 @@ function disabledBirth(time) { |
| 464 | } | 486 | } |
| 465 | } | 487 | } |
| 466 | } | 488 | } |
| 489 | |||
| 467 | .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover { | 490 | .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover { |
| 468 | color: var(--el-color-primary); | 491 | color: var(--el-color-primary); |
| 469 | background: #efefff; | 492 | background: #efefff; | ... | ... |
| ... | @@ -72,7 +72,7 @@ | ... | @@ -72,7 +72,7 @@ |
| 72 | 72 | ||
| 73 | <el-form-item :label="language==0?'有效证件':'Valid Passport'" required> | 73 | <el-form-item :label="language==0?'有效证件':'Valid Passport'" required> |
| 74 | <image-upload | 74 | <image-upload |
| 75 | ref="uploadPassportRef" v-model="form.passportUrl" :action="'/common/getPersonInfoFromCert/3'" | 75 | ref="uploadPassportRef" v-model="form.passportUrl" :action="'/common/getPersonInfoFromCert/6'" |
| 76 | :button-text="language==0?'上传':'Upload'" | 76 | :button-text="language==0?'上传':'Upload'" |
| 77 | :is-show-tip="false" | 77 | :is-show-tip="false" |
| 78 | :limit="1" | 78 | :limit="1" |
| ... | @@ -87,6 +87,10 @@ | ... | @@ -87,6 +87,10 @@ |
| 87 | </div> | 87 | </div> |
| 88 | 88 | ||
| 89 | </el-form-item> | 89 | </el-form-item> |
| 90 | <el-form-item :label="language==0?'姓名':'Name'" required> | ||
| 91 | <el-input v-model="form.certName" /> | ||
| 92 | </el-form-item> | ||
| 93 | |||
| 90 | <el-form-item :label="language==0?'性别':'Gender'" required> | 94 | <el-form-item :label="language==0?'性别':'Gender'" required> |
| 91 | <el-radio-group v-model="form.sex"> | 95 | <el-radio-group v-model="form.sex"> |
| 92 | <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> | 96 | <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> |
| ... | @@ -275,6 +279,10 @@ function submitForm() { | ... | @@ -275,6 +279,10 @@ function submitForm() { |
| 275 | ElMessage.warning(language.value == 0 ? '请选择性别' : 'Please select your gender') | 279 | ElMessage.warning(language.value == 0 ? '请选择性别' : 'Please select your gender') |
| 276 | return | 280 | return |
| 277 | } | 281 | } |
| 282 | if (!form.value.certName) { | ||
| 283 | ElMessage.warning(language.value == 0 ? '请输入姓名' : 'Please enter your name') | ||
| 284 | return | ||
| 285 | } | ||
| 278 | if (!form.value.passportUrl || form.value.passportUrl == '' || form.value.passportUrl.length == 0) { | 286 | if (!form.value.passportUrl || form.value.passportUrl == '' || form.value.passportUrl.length == 0) { |
| 279 | ElMessage.warning(language.value == 0 ? '请上传证件' : 'Please upload passport file') | 287 | ElMessage.warning(language.value == 0 ? '请上传证件' : 'Please upload passport file') |
| 280 | return | 288 | return | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog v-model="show" :title="title" width="1000px" append-to-body @close="close"> | 2 | <el-dialog v-model="show" :title="title" append-to-body width="1000px" @close="close"> |
| 3 | <div class="funcBtns"> | 3 | <div class="funcBtns"> |
| 4 | <el-button type="primary" @click="addMember"> | 4 | <el-button type="primary" @click="addMember"> |
| 5 | {{ language == 0 ? '添加选手' : 'Add Player' }} | 5 | {{ language == 0 ? '添加选手' : 'Add Player' }} |
| 6 | </el-button> | 6 | </el-button> |
| 7 | <!-- <el-button type="primary" plain @click="importSportman" v-if="!isNational">--> | 7 | <!-- <el-button type="primary" plain @click="importSportman" v-if="!isNational">--> |
| 8 | <!-- {{language == 0 ? '导入选手' : 'Import Player'}}--> | 8 | <!-- {{language == 0 ? '导入选手' : 'Import Player'}}--> |
| 9 | <!-- </el-button>--> | 9 | <!-- </el-button>--> |
| 10 | </div> | 10 | </div> |
| 11 | <div class="from-Card"> | 11 | <div class="from-Card"> |
| 12 | <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small"> | 12 | <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small"> |
| 13 | <el-form-item :label="language==0?'姓名':'Name'"> | 13 | <el-form-item :label="language==0?'姓名':'Name'"> |
| 14 | <el-input v-model="query.realName" style="width: 120px;" clearable/> | 14 | <el-input v-model="query.realName" clearable style="width: 120px;" /> |
| 15 | </el-form-item> | 15 | </el-form-item> |
| 16 | <el-form-item :label="language==0?'证件类型':'ID Type'" v-if="!isNational"> | 16 | <el-form-item v-if="!isNational" :label="language==0?'证件类型':'ID Type'"> |
| 17 | <el-select v-model="query.idcType" style="width: 100px;" clearable @change="getList"> | 17 | <el-select v-model="query.idcType" clearable style="width: 100px;" @change="getList"> |
| 18 | <el-option | 18 | <el-option |
| 19 | v-for="item in certificates" | 19 | v-for="item in certificates" |
| 20 | :key="item.value" | 20 | :key="item.value" |
| ... | @@ -23,36 +23,60 @@ | ... | @@ -23,36 +23,60 @@ |
| 23 | /> | 23 | /> |
| 24 | </el-select> | 24 | </el-select> |
| 25 | </el-form-item> | 25 | </el-form-item> |
| 26 | <el-form-item :label="language==0?'证件号码':'ID NO.'" v-if="!isNational"> | 26 | <el-form-item v-if="!isNational" :label="language==0?'证件号码':'ID NO.'"> |
| 27 | <el-input v-model="query.idcCode" style="width: 120px;" clearable/> | 27 | <el-input v-model="query.idcCode" clearable style="width: 120px;" /> |
| 28 | </el-form-item> | 28 | </el-form-item> |
| 29 | <!-- <el-form-item label="角色">--> | 29 | <!-- <el-form-item label="角色">--> |
| 30 | <!-- <el-input v-model="query.label" style="width: 120px;" clearable/>--> | 30 | <!-- <el-input v-model="query.label" style="width: 120px;" clearable/>--> |
| 31 | <!-- </el-form-item>--> | 31 | <!-- </el-form-item>--> |
| 32 | <el-form-item> | 32 | <el-form-item> |
| 33 | <el-button type="primary" @click="getList">{{language==0?'查询':'Search'}}</el-button> | 33 | <el-button type="primary" @click="getList">{{ language == 0 ? '查询' : 'Search' }}</el-button> |
| 34 | </el-form-item> | 34 | </el-form-item> |
| 35 | </el-form> | 35 | </el-form> |
| 36 | </div> | 36 | </div> |
| 37 | <p v-if="noPhotoCanSign == 0" class="text-danger">{{ language==0?'*需上传照片才可报名':'*Please upload photo before sign up' }}</p> | 37 | <p v-if="noPhotoCanSign == 0" class="text-danger"> |
| 38 | <el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh" | 38 | {{ language == 0 ? '*需上传照片才可报名' : '*Please upload photo before sign up' }}</p> |
| 39 | @selection-change="handleSelectionChange"> | 39 | <el-table |
| 40 | <!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>--> | 40 | ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh" |
| 41 | <el-table-column align="center" type="index" :label="language==0?'序号':'Index'" width="70" :selectable="selectable"/> | 41 | @selection-change="handleSelectionChange" |
| 42 | <el-table-column v-if="isNational" :label="language==0?'WDSF 会员号':'WDSF MIN'" prop="wdsfMin" width="100"/> | 42 | > |
| 43 | <el-table-column align="center" v-if="!isNational" :label="language==0?'姓名':'Real Name'" prop="realName" min-width="100"/> | 43 | <!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>--> |
| 44 | <el-table-column align="center" v-if="isNational" :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/> | 44 | <el-table-column |
| 45 | <el-table-column align="center" v-if="isNational" :label="language==0?'名':'Name'" prop="ming" min-width="100"/> | 45 | :label="language==0?'序号':'Index'" :selectable="selectable" align="center" type="index" |
| 46 | <el-table-column align="center" v-if="isNational" :label="language==0?'代表':'Representing'" prop="representing" min-width="120"/> | 46 | width="70" |
| 47 | <el-table-column align="center" v-if="!isNational" :label="language==0?'所属国家/地区':'Nationality'" prop="countryName" min-width="110"/> | 47 | /> |
| 48 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> | 48 | <el-table-column v-if="isNational" :label="language==0?'WDSF 会员号':'WDSF MIN'" prop="wdsfMin" width="100" /> |
| 49 | <el-table-column align="center" v-if="isNational" :label="language==0?'年龄组':'Age group'" prop="ageGroup" min-width="100"/> | 49 | <el-table-column |
| 50 | <el-table-column align="center" v-if="isNational" :label="language==0?'舞种':'Division'" prop="division" min-width="100"/> | 50 | v-if="!isNational" :label="language==0?'姓名':'Real Name'" align="center" min-width="100" |
| 51 | prop="realName" | ||
| 52 | /> | ||
| 53 | <el-table-column | ||
| 54 | v-if="isNational" :label="language==0?'姓氏':'Surname'" align="center" min-width="100" | ||
| 55 | prop="xing" | ||
| 56 | /> | ||
| 57 | <el-table-column v-if="isNational" :label="language==0?'名':'Name'" align="center" min-width="100" prop="ming" /> | ||
| 58 | <el-table-column | ||
| 59 | v-if="isNational" :label="language==0?'代表':'Representing'" align="center" min-width="120" | ||
| 60 | prop="representing" | ||
| 61 | /> | ||
| 62 | <el-table-column | ||
| 63 | v-if="!isNational" :label="language==0?'所属国家/地区':'Nationality'" align="center" | ||
| 64 | min-width="110" prop="countryName" | ||
| 65 | /> | ||
| 66 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr" /> | ||
| 67 | <el-table-column | ||
| 68 | v-if="isNational" :label="language==0?'年龄组':'Age group'" align="center" min-width="100" | ||
| 69 | prop="ageGroup" | ||
| 70 | /> | ||
| 71 | <el-table-column | ||
| 72 | v-if="isNational" :label="language==0?'舞种':'Division'" align="center" min-width="100" | ||
| 73 | prop="division" | ||
| 74 | /> | ||
| 51 | 75 | ||
| 52 | <el-table-column v-if="!isNational" :label="language==0?'年龄':'Age'" prop="age"/> | 76 | <el-table-column v-if="!isNational" :label="language==0?'年龄':'Age'" prop="age" /> |
| 53 | <el-table-column v-if="!isNational" :label="language==0?'出生日期':'Date of Birth'" prop="birth" width="130"/> | 77 | <el-table-column v-if="!isNational" :label="language==0?'出生日期':'Date of Birth'" prop="birth" width="130" /> |
| 54 | <el-table-column v-if="!isNational" :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" width="120"/> | 78 | <el-table-column v-if="!isNational" :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" width="120" /> |
| 55 | <el-table-column v-if="!isNational" :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> | 79 | <el-table-column v-if="!isNational" :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200" /> |
| 56 | <!-- <el-table-column label="会员角色" width="200">--> | 80 | <!-- <el-table-column label="会员角色" width="200">--> |
| 57 | <!-- <template #default="scope">--> | 81 | <!-- <template #default="scope">--> |
| 58 | <!-- <div>--> | 82 | <!-- <div>--> |
| ... | @@ -70,60 +94,61 @@ | ... | @@ -70,60 +94,61 @@ |
| 70 | <!-- </div>--> | 94 | <!-- </div>--> |
| 71 | <!-- </template>--> | 95 | <!-- </template>--> |
| 72 | <!-- </el-table-column>--> | 96 | <!-- </el-table-column>--> |
| 73 | <el-table-column :label="language==0?'操作':'Actions'" width="180" fixed="right" align="center"> | 97 | <el-table-column :label="language==0?'操作':'Actions'" align="center" fixed="right" width="180"> |
| 74 | <template #default="scope"> | 98 | <template #default="scope"> |
| 75 | <el-button link v-if="!isNational&&(!scope.row.phone)" type="danger" @click="editPerson(scope.row)"> | 99 | <el-button v-if="!isNational&&(!scope.row.phone)" link type="danger" @click="editPerson(scope.row)"> |
| 76 | {{language==0?'完善信息':'Complete'}} | 100 | {{ language == 0 ? '完善信息' : 'Complete' }} |
| 77 | </el-button> | 101 | </el-button> |
| 78 | <el-button link v-else type="primary" @click="editPerson(scope.row)"> | 102 | <el-button v-else link type="primary" @click="editPerson(scope.row)"> |
| 79 | {{language==0?'编辑':'Edit'}} | 103 | {{ language == 0 ? '编辑' : 'Edit' }} |
| 80 | </el-button> | 104 | </el-button> |
| 81 | <el-button link type="primary" @click="delperson(scope.row)"> | 105 | <el-button link type="primary" @click="delperson(scope.row)"> |
| 82 | {{language==0?'删除':'Delete'}} | 106 | {{ language == 0 ? '删除' : 'Delete' }} |
| 83 | </el-button> | 107 | </el-button> |
| 84 | </template> | 108 | </template> |
| 85 | </el-table-column> | 109 | </el-table-column> |
| 86 | </el-table> | 110 | </el-table> |
| 87 | <paginationPc | 111 | <paginationPc |
| 88 | v-show="total>0" | 112 | v-show="total>0" |
| 89 | v-model:page="query.pageNum" | ||
| 90 | v-model:limit="query.pageSize" | 113 | v-model:limit="query.pageSize" |
| 114 | v-model:page="query.pageNum" | ||
| 91 | :total="total" | 115 | :total="total" |
| 92 | @pagination="getList" | 116 | @pagination="getList" |
| 93 | /> | 117 | /> |
| 94 | <!-- <template #footer>--> | 118 | <!-- <template #footer>--> |
| 95 | <!-- <div class="dialog-footer text-center">--> | 119 | <!-- <div class="dialog-footer text-center">--> |
| 96 | <!-- <el-button type="primary" @click="submit">{{language==0?'确定':'Confirm'}}</el-button>--> | 120 | <!-- <el-button type="primary" @click="submit">{{language==0?'确定':'Confirm'}}</el-button>--> |
| 97 | <!-- <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button>--> | 121 | <!-- <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button>--> |
| 98 | <!-- </div>--> | 122 | <!-- </div>--> |
| 99 | <!-- </template>--> | 123 | <!-- </template>--> |
| 100 | </el-dialog> | 124 | </el-dialog> |
| 101 | 125 | ||
| 102 | <!-- 国内赛运动员--> | 126 | <!-- 国内赛运动员--> |
| 103 | <add-coach ref="dialogAddCoach" @submitForm="getList"/> | 127 | <add-coach ref="dialogAddCoach" @submitForm="getList" /> |
| 104 | <!-- 国际赛运动员--> | 128 | <!-- 国际赛运动员--> |
| 105 | <add-wdsf ref="dialogAddWdsf" @submitForm="getList"/> | 129 | <add-wdsf ref="dialogAddWdsf" @submitForm="getList" /> |
| 106 | <Import ref="dialogImportProps" @submitForm="getList"/> | 130 | <Import ref="dialogImportProps" @submitForm="getList" /> |
| 107 | </template> | 131 | </template> |
| 108 | 132 | ||
| 109 | <script setup> | 133 | <script setup> |
| 110 | import {reactive, ref, toRefs, watch} from 'vue' | 134 | import { reactive, ref, toRefs, watch } from 'vue' |
| 111 | import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' | 135 | import { getCurrentInstance, nextTick, onMounted } from '@vue/runtime-core' |
| 112 | import * as match from '@/apiPc/match' | 136 | import * as match from '@/apiPc/match' |
| 113 | import AddCoach from '../components/addCoach' | 137 | import AddCoach from '../components/addCoach' |
| 114 | import AddWdsf from '../components/addWdsf' | 138 | import AddWdsf from '../components/addWdsf' |
| 115 | import Import from '../components/import' | 139 | import Import from '../components/import' |
| 116 | import {useStorage} from "@vueuse/core/index"; | 140 | import { useStorage } from '@vueuse/core/index' |
| 117 | import {ElMessage, ElMessageBox} from "element-plus"; | 141 | import { ElMessage, ElMessageBox } from 'element-plus' |
| 118 | const language= useStorage('language',0) | 142 | |
| 143 | const language = useStorage('language', 0) | ||
| 119 | 144 | ||
| 120 | const {proxy} = getCurrentInstance() | 145 | const { proxy } = getCurrentInstance() |
| 121 | const emit = defineEmits([ 'transfer']) | 146 | const emit = defineEmits(['transfer']) |
| 122 | const data = reactive({ | 147 | const data = reactive({ |
| 123 | query: { | 148 | query: { |
| 124 | label:'0', | 149 | label: '0', |
| 125 | pageSize: 10, | 150 | pageSize: 10, |
| 126 | pageNum:1 | 151 | pageNum: 1 |
| 127 | }, | 152 | }, |
| 128 | tableData: [], | 153 | tableData: [], |
| 129 | show: false, | 154 | show: false, |
| ... | @@ -131,9 +156,9 @@ const data = reactive({ | ... | @@ -131,9 +156,9 @@ const data = reactive({ |
| 131 | title: '选择运动员', | 156 | title: '选择运动员', |
| 132 | noPhotoCanSign: 0, | 157 | noPhotoCanSign: 0, |
| 133 | total: 0, | 158 | total: 0, |
| 134 | isNational:false | 159 | isNational: false |
| 135 | }) | 160 | }) |
| 136 | const {query, tableData, show, title, loading, noPhotoCanSign,total,isNational} = toRefs(data) | 161 | const { query, tableData, show, title, loading, noPhotoCanSign, total, isNational } = toRefs(data) |
| 137 | const certificates = ref([ | 162 | const certificates = ref([ |
| 138 | { | 163 | { |
| 139 | value: '0', | 164 | value: '0', |
| ... | @@ -201,9 +226,11 @@ function submit() { | ... | @@ -201,9 +226,11 @@ function submit() { |
| 201 | // emit('submitForm', choosedList) | 226 | // emit('submitForm', choosedList) |
| 202 | show.value = false | 227 | show.value = false |
| 203 | } | 228 | } |
| 229 | |||
| 204 | function close() { | 230 | function close() { |
| 205 | emit('submitForm') | 231 | emit('submitForm') |
| 206 | } | 232 | } |
| 233 | |||
| 207 | function cancel() { | 234 | function cancel() { |
| 208 | show.value = false | 235 | show.value = false |
| 209 | } | 236 | } |
| ... | @@ -212,24 +239,25 @@ function editPerson(row) { | ... | @@ -212,24 +239,25 @@ function editPerson(row) { |
| 212 | console.log(isNational.value) | 239 | console.log(isNational.value) |
| 213 | const params = { | 240 | const params = { |
| 214 | id: row.id, | 241 | id: row.id, |
| 215 | title: language.value == 0 ?'编辑人员':'Edit Person', | 242 | title: language.value == 0 ? '编辑人员' : 'Edit Person', |
| 216 | groupId: groupId, | 243 | groupId: groupId, |
| 217 | label: '0' | 244 | label: '0' |
| 218 | } | 245 | } |
| 219 | if (isNational.value){ | 246 | if (isNational.value) { |
| 220 | proxy.$refs['dialogAddWdsf'].open(params) | 247 | proxy.$refs['dialogAddWdsf'].open(params) |
| 221 | } else { | 248 | } else { |
| 222 | proxy.$refs['dialogAddCoach'].open(params) | 249 | proxy.$refs['dialogAddCoach'].open(params) |
| 223 | } | 250 | } |
| 224 | } | 251 | } |
| 252 | |||
| 225 | function delperson(p) { | 253 | function delperson(p) { |
| 226 | //删除团队下的人 | 254 | // 删除团队下的人 |
| 227 | let text = '' | 255 | let text = '' |
| 228 | let t = '提示' | 256 | let t = '提示' |
| 229 | let s = '确定' | 257 | let s = '确定' |
| 230 | let c = '取消' | 258 | let c = '取消' |
| 231 | let msg = '操作成功' | 259 | let msg = '操作成功' |
| 232 | if (language.value==0){ | 260 | if (language.value == 0) { |
| 233 | text = `确定删除${p.realName}吗?` | 261 | text = `确定删除${p.realName}吗?` |
| 234 | } else { | 262 | } else { |
| 235 | text = `Delete ${p.realName}?` | 263 | text = `Delete ${p.realName}?` |
| ... | @@ -249,15 +277,16 @@ function delperson(p) { | ... | @@ -249,15 +277,16 @@ function delperson(p) { |
| 249 | }) | 277 | }) |
| 250 | }) | 278 | }) |
| 251 | } | 279 | } |
| 280 | |||
| 252 | function addMember() { | 281 | function addMember() { |
| 253 | console.log(isNational.value) | 282 | console.log(isNational.value) |
| 254 | const params = { | 283 | const params = { |
| 255 | title: language.value == 0 ?'添加人员':'Add', | 284 | title: language.value == 0 ? '添加人员' : 'Add', |
| 256 | id: 0, | 285 | id: 0, |
| 257 | groupId: groupId, | 286 | groupId: groupId, |
| 258 | label: '0' | 287 | label: '0' |
| 259 | } | 288 | } |
| 260 | if (isNational.value){ | 289 | if (isNational.value) { |
| 261 | proxy.$refs['dialogAddWdsf'].open(params) | 290 | proxy.$refs['dialogAddWdsf'].open(params) |
| 262 | } else { | 291 | } else { |
| 263 | proxy.$refs['dialogAddCoach'].open(params) | 292 | proxy.$refs['dialogAddCoach'].open(params) |
| ... | @@ -272,7 +301,7 @@ function importSportman() { | ... | @@ -272,7 +301,7 @@ function importSportman() { |
| 272 | proxy.$refs['dialogImportProps'].open(params) | 301 | proxy.$refs['dialogImportProps'].open(params) |
| 273 | } | 302 | } |
| 274 | </script> | 303 | </script> |
| 275 | <style scoped lang="scss"> | 304 | <style lang="scss" scoped> |
| 276 | .el-form--inline .el-form-item { | 305 | .el-form--inline .el-form-item { |
| 277 | width: auto; | 306 | width: auto; |
| 278 | } | 307 | } | ... | ... |
| ... | @@ -71,7 +71,7 @@ | ... | @@ -71,7 +71,7 @@ |
| 71 | 71 | ||
| 72 | <el-form-item :label="language==0?'有效证件':'Valid Passport'" required> | 72 | <el-form-item :label="language==0?'有效证件':'Valid Passport'" required> |
| 73 | <image-upload | 73 | <image-upload |
| 74 | v-model="wdsfData.passportUrl" :action="'/common/getPersonInfoFromCert/3'" | 74 | v-model="wdsfData.passportUrl" :action="'/common/getPersonInfoFromCert/6'" |
| 75 | :button-text="language==0?'上传':'Upload'" | 75 | :button-text="language==0?'上传':'Upload'" |
| 76 | :is-show-tip="false" | 76 | :is-show-tip="false" |
| 77 | :limit="1" | 77 | :limit="1" |
| ... | @@ -87,6 +87,9 @@ | ... | @@ -87,6 +87,9 @@ |
| 87 | <el-form-item :label="language==0?'证件号':'Passport number'" required> | 87 | <el-form-item :label="language==0?'证件号':'Passport number'" required> |
| 88 | <el-input v-model="wdsfData.passportNumber" /> | 88 | <el-input v-model="wdsfData.passportNumber" /> |
| 89 | </el-form-item> | 89 | </el-form-item> |
| 90 | <el-form-item :label="language==0?'姓名':'Name'" required> | ||
| 91 | <el-input v-model.trim="wdsfData.certName" /> | ||
| 92 | </el-form-item> | ||
| 90 | <el-form-item :label="language==0?'性别':'Gender'" required> | 93 | <el-form-item :label="language==0?'性别':'Gender'" required> |
| 91 | <el-radio-group v-model="wdsfData.sex"> | 94 | <el-radio-group v-model="wdsfData.sex"> |
| 92 | <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> | 95 | <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> |
| ... | @@ -177,7 +180,8 @@ | ... | @@ -177,7 +180,8 @@ |
| 177 | </el-form> | 180 | </el-form> |
| 178 | </div> | 181 | </div> |
| 179 | <div class="text-center"> | 182 | <div class="text-center"> |
| 180 | <el-button class="primary-kx" round @click="goBack"> {{ language == 0 ? '取消' : 'Cancel' }}</el-button> | 183 | <el-button class="primary-kx" round @click="goBack"> {{ language == 0 ? '取消' : 'Cancel' }} |
| 184 | </el-button> | ||
| 181 | <el-button v-if="wdsfData.wdsfFlag=='1'" class="btn-lineG w200px" round type="primary" @click="bigNext"> | 185 | <el-button v-if="wdsfData.wdsfFlag=='1'" class="btn-lineG w200px" round type="primary" @click="bigNext"> |
| 182 | <span v-if="matchId=='0'">{{ language == 0 ? '立即注册' : 'Register Now' }}</span> | 186 | <span v-if="matchId=='0'">{{ language == 0 ? '立即注册' : 'Register Now' }}</span> |
| 183 | <span v-else>{{ language == 0 ? '下一步' : 'Next' }}</span> | 187 | <span v-else>{{ language == 0 ? '下一步' : 'Next' }}</span> |
| ... | @@ -361,14 +365,18 @@ function bigNext() { | ... | @@ -361,14 +365,18 @@ function bigNext() { |
| 361 | ElMessage.warning(language.value == 0 ? '请选择性别' : 'Please select your gender') | 365 | ElMessage.warning(language.value == 0 ? '请选择性别' : 'Please select your gender') |
| 362 | return | 366 | return |
| 363 | } | 367 | } |
| 368 | if (!wdsfData.value.certName) { | ||
| 369 | ElMessage.warning(language.value == 0 ? '请输入姓名' : 'Please enter your name') | ||
| 370 | return | ||
| 371 | } | ||
| 364 | if (user && user.utype == '3') { | 372 | if (user && user.utype == '3') { |
| 365 | const obj = { | 373 | const obj = { |
| 366 | card: form.value.card, | 374 | card: form.value.card, |
| 367 | userId: user.userId, | 375 | userId: user.userId, |
| 368 | picUrl: wdsfData.value.picUrl, | 376 | picUrl: wdsfData.value.picUrl, |
| 369 | code: form.value.code, | ||
| 370 | sex: wdsfData.value.sex, | 377 | sex: wdsfData.value.sex, |
| 371 | birth: wdsfData.value.birthday, | 378 | birth: wdsfData.value.birthday, |
| 379 | certName: wdsfData.value.certName, | ||
| 372 | passportNumber: wdsfData.value.passportNumber | 380 | passportNumber: wdsfData.value.passportNumber |
| 373 | } | 381 | } |
| 374 | if (Array.isArray(wdsfData.value.passportUrl)) { | 382 | if (Array.isArray(wdsfData.value.passportUrl)) { |
| ... | @@ -409,6 +417,7 @@ function next() { | ... | @@ -409,6 +417,7 @@ function next() { |
| 409 | code: form.value.code, | 417 | code: form.value.code, |
| 410 | password: form.value.password, | 418 | password: form.value.password, |
| 411 | sex: wdsfData.value.sex, | 419 | sex: wdsfData.value.sex, |
| 420 | certName: wdsfData.value.certName, | ||
| 412 | birth: wdsfData.value.birthday, | 421 | birth: wdsfData.value.birthday, |
| 413 | passportNumber: wdsfData.value.passportNumber | 422 | passportNumber: wdsfData.value.passportNumber |
| 414 | } | 423 | } |
| ... | @@ -485,6 +494,7 @@ const ocrSuccess = (res) => { | ... | @@ -485,6 +494,7 @@ const ocrSuccess = (res) => { |
| 485 | wdsfData.value.passportNumber = res.data.code | 494 | wdsfData.value.passportNumber = res.data.code |
| 486 | wdsfData.value.birthday = res.data.birth?.slice(0, 10) | 495 | wdsfData.value.birthday = res.data.birth?.slice(0, 10) |
| 487 | wdsfData.value.sex = res.data.sex | 496 | wdsfData.value.sex = res.data.sex |
| 497 | wdsfData.value.certName = res.data.name | ||
| 488 | } else if (res.code == 500) { | 498 | } else if (res.code == 500) { |
| 489 | ElMessage.warning(res.msg) | 499 | ElMessage.warning(res.msg) |
| 490 | } | 500 | } | ... | ... |
-
Please register or sign in to post a comment