no message
Showing
14 changed files
with
686 additions
and
40 deletions
| ... | @@ -105,6 +105,13 @@ export function registerSingle(data) { | ... | @@ -105,6 +105,13 @@ export function registerSingle(data) { |
| 105 | data:data | 105 | data:data |
| 106 | }) | 106 | }) |
| 107 | } | 107 | } |
| 108 | export function loginSingle(data) { | ||
| 109 | return request({ | ||
| 110 | url: `/userLoginAboard`, | ||
| 111 | method: 'post', | ||
| 112 | data:data | ||
| 113 | }) | ||
| 114 | } | ||
| 108 | 115 | ||
| 109 | // 根据Id获取我的团队 | 116 | // 根据Id获取我的团队 |
| 110 | export function getGroupInfo() { | 117 | export function getGroupInfo() { | ... | ... |
| ... | @@ -8,7 +8,7 @@ | ... | @@ -8,7 +8,7 @@ |
| 8 | <router-link to="/about">亚洲体育舞蹈节版权所有</router-link> | 8 | <router-link to="/about">亚洲体育舞蹈节版权所有</router-link> |
| 9 | </li> | 9 | </li> |
| 10 | <li> | 10 | <li> |
| 11 | <a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:苏ICP备17015770号-3</a> | 11 | <a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:苏ICP备2023054420号-2</a> |
| 12 | <!-- <a class="ffoot" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010102004192">--> | 12 | <!-- <a class="ffoot" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010102004192">--> |
| 13 | <!-- <img src="@/assets/v1/beian.png">--> | 13 | <!-- <img src="@/assets/v1/beian.png">--> |
| 14 | <!-- 京公网安备 11010102004192号</a>--> | 14 | <!-- 京公网安备 11010102004192号</a>--> | ... | ... |
| ... | @@ -176,7 +176,7 @@ function handleSelect(key, keyPath) { | ... | @@ -176,7 +176,7 @@ function handleSelect(key, keyPath) { |
| 176 | } | 176 | } |
| 177 | 177 | ||
| 178 | const logout = () => { | 178 | const logout = () => { |
| 179 | proxy.$modal.confirm('确定退出?').then(function() { | 179 | proxy.$modal.confirm(language.value==0?'确定退出?':'Are you sure to exit?').then(function() { |
| 180 | return useUserStore().logOut() | 180 | return useUserStore().logOut() |
| 181 | }).then(() => { | 181 | }).then(() => { |
| 182 | isLogin.value = true | 182 | isLogin.value = true | ... | ... |
| ... | @@ -147,7 +147,7 @@ function handleSelect(key, keyPath) { | ... | @@ -147,7 +147,7 @@ function handleSelect(key, keyPath) { |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | const logout = () => { | 149 | const logout = () => { |
| 150 | proxy.$modal.confirm('确定退出?').then(function() { | 150 | proxy.$modal.confirm(language.value==0?'确定退出?':'Are you sure to exit?').then(function() { |
| 151 | return useUserStore().logOut() | 151 | return useUserStore().logOut() |
| 152 | }).then(() => { | 152 | }).then(() => { |
| 153 | isLogin.value = true | 153 | isLogin.value = true | ... | ... |
| ... | @@ -20,26 +20,51 @@ | ... | @@ -20,26 +20,51 @@ |
| 20 | <el-form-item :label="language==0?'姓名':'Real Name'" required prop="realName"> | 20 | <el-form-item :label="language==0?'姓名':'Real Name'" required prop="realName"> |
| 21 | <el-input v-model="myform.realName"/> | 21 | <el-input v-model="myform.realName"/> |
| 22 | </el-form-item> | 22 | </el-form-item> |
| 23 | <el-form-item :label="language==0?'性别':'Sex'" required prop="sex"> | 23 | <el-form-item :label="language==0?'性别':'Sex'" required > |
| 24 | <el-radio-group v-model="myform.sex"> | 24 | <el-radio-group v-model="myform.sex"> |
| 25 | <el-radio label="0">{{ language == 0 ? '女' : 'female' }}</el-radio> | 25 | <el-radio label="0">{{ language == 0 ? '女' : 'female' }}</el-radio> |
| 26 | <el-radio label="1">{{ language == 0 ? '男' : 'male' }}</el-radio> | 26 | <el-radio label="1">{{ language == 0 ? '男' : 'male' }}</el-radio> |
| 27 | </el-radio-group> | 27 | </el-radio-group> |
| 28 | </el-form-item> | 28 | </el-form-item> |
| 29 | <el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType"> | 29 | <el-form-item :label="language==0?'出生日期':'Birthday'" required> |
| 30 | <el-select v-model="myform.idcType" style="width: 100%"> | 30 | <el-date-picker |
| 31 | <el-option | 31 | v-model="myform.birth" |
| 32 | v-for="item in certificates" | 32 | style="width: 100%;" |
| 33 | :key="item.value" | 33 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" |
| 34 | :label="item.label" | ||
| 35 | :value="item.value" | ||
| 36 | /> | 34 | /> |
| 37 | </el-select> | ||
| 38 | </el-form-item> | 35 | </el-form-item> |
| 39 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode"> | 36 | <el-form-item label="Representing"> |
| 40 | <el-input v-model="myform.idcCode" @blur="checkCode"/> | 37 | <el-input v-model="myform.representing" disabled/> |
| 38 | </el-form-item> | ||
| 39 | <el-form-item label="Age group"> | ||
| 40 | <el-input v-model="myform.ageGroup" disabled/> | ||
| 41 | </el-form-item> | ||
| 42 | <el-form-item label="Division"> | ||
| 43 | <el-input v-model="myform.division" disabled/> | ||
| 44 | </el-form-item> | ||
| 45 | <el-form-item label="Status"> | ||
| 46 | <el-input v-model="myform.status" disabled/> | ||
| 41 | </el-form-item> | 47 | </el-form-item> |
| 42 | <el-form-item :label="language==0?'类型':'Type'" prop="type"> | 48 | <el-form-item label="Passport" required> |
| 49 | <el-input v-model="myform.passportNumber"/> | ||
| 50 | </el-form-item> | ||
| 51 | <el-form-item label="Passport File"> | ||
| 52 | <file-upload v-model="myform.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/> | ||
| 53 | </el-form-item> | ||
| 54 | <!-- <el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType">--> | ||
| 55 | <!-- <el-select v-model="myform.idcType" style="width: 100%">--> | ||
| 56 | <!-- <el-option--> | ||
| 57 | <!-- v-for="item in certificates"--> | ||
| 58 | <!-- :key="item.value"--> | ||
| 59 | <!-- :label="item.label"--> | ||
| 60 | <!-- :value="item.value"--> | ||
| 61 | <!-- />--> | ||
| 62 | <!-- </el-select>--> | ||
| 63 | <!-- </el-form-item>--> | ||
| 64 | <!-- <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode">--> | ||
| 65 | <!-- <el-input v-model="myform.idcCode" @blur="checkCode"/>--> | ||
| 66 | <!-- </el-form-item>--> | ||
| 67 | <el-form-item :label="language==0?'类型':'Type'" required> | ||
| 43 | <el-select v-model="myform.type" style="width: 100%;"> | 68 | <el-select v-model="myform.type" style="width: 100%;"> |
| 44 | <el-option :label="language==0?'业余':'amateur'" value="0"/> | 69 | <el-option :label="language==0?'业余':'amateur'" value="0"/> |
| 45 | <el-option :label="language==0?'专业':'Professional'" value="1"/> | 70 | <el-option :label="language==0?'专业':'Professional'" value="1"/> |
| ... | @@ -47,9 +72,9 @@ | ... | @@ -47,9 +72,9 @@ |
| 47 | <el-option :label="language==0?'其他':'Other'" value="3"/> | 72 | <el-option :label="language==0?'其他':'Other'" value="3"/> |
| 48 | </el-select> | 73 | </el-select> |
| 49 | </el-form-item> | 74 | </el-form-item> |
| 50 | <el-form-item :label="language==0?'邮箱':'Email'" required prop="email"> | 75 | <!-- <el-form-item :label="language==0?'邮箱':'Email'" required prop="email">--> |
| 51 | <el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/> | 76 | <!-- <el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/>--> |
| 52 | </el-form-item> | 77 | <!-- </el-form-item>--> |
| 53 | </el-form> | 78 | </el-form> |
| 54 | <div class="text-center"> | 79 | <div class="text-center"> |
| 55 | <el-button type="primary" class="btn-lineG" round @click="save"> | 80 | <el-button type="primary" class="btn-lineG" round @click="save"> | ... | ... |
This diff is collapsed.
Click to expand it.
| 1 | <template> | ||
| 2 | <el-dialog | ||
| 3 | v-model="show" :title="title" width="800px" append-to-body close-icon="CircleClose" center | ||
| 4 | :close-on-click-modal="false" class="pcloginpop" | ||
| 5 | destroy-on-close | ||
| 6 | > | ||
| 7 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="160px" inline> | ||
| 8 | <el-row :gutter="30"> | ||
| 9 | <el-col :lg="24"> | ||
| 10 | |||
| 11 | <el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required> | ||
| 12 | <el-input v-model="form.xing"/> | ||
| 13 | </el-form-item> | ||
| 14 | <el-form-item :label="language==0?'名':'name'" prop="ming" required> | ||
| 15 | <el-input v-model="form.ming"/> | ||
| 16 | </el-form-item> | ||
| 17 | <!-- <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required>--> | ||
| 18 | <!-- <el-select v-model="form.idcType" style="width: 100%;">--> | ||
| 19 | <!-- <el-option--> | ||
| 20 | <!-- v-for="item in certificates"--> | ||
| 21 | <!-- :key="item.value"--> | ||
| 22 | <!-- :label="item.label"--> | ||
| 23 | <!-- :value="item.value"--> | ||
| 24 | <!-- />--> | ||
| 25 | <!-- </el-select>--> | ||
| 26 | <!-- </el-form-item>--> | ||
| 27 | <el-form-item :label="language==0?'护照号':'PassPort Number'" prop="idcCode" required> | ||
| 28 | <el-input v-model="form.idcCode"/> | ||
| 29 | </el-form-item> | ||
| 30 | |||
| 31 | <el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required> | ||
| 32 | <el-date-picker | ||
| 33 | v-model="form.birth" | ||
| 34 | style="width: 100%;" | ||
| 35 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" | ||
| 36 | /> | ||
| 37 | </el-form-item> | ||
| 38 | <el-form-item :label="language==0?'性别':'sex'" prop="sex"> | ||
| 39 | <el-radio-group v-model="form.sex"> | ||
| 40 | <el-radio label="0">{{ language == 0 ? '女' : 'female' }}</el-radio> | ||
| 41 | <el-radio label="1">{{ language == 0 ? '男' : 'male' }}</el-radio> | ||
| 42 | </el-radio-group> | ||
| 43 | </el-form-item> | ||
| 44 | |||
| 45 | <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr"> | ||
| 46 | <el-select v-model="form.labelArr" multiple> | ||
| 47 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> | ||
| 48 | </el-select> | ||
| 49 | </el-form-item> | ||
| 50 | |||
| 51 | |||
| 52 | </el-col> | ||
| 53 | </el-row> | ||
| 54 | </el-form> | ||
| 55 | <template #footer> | ||
| 56 | <div class="dialog-footer text-center"> | ||
| 57 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ | ||
| 58 | language == 0 ? '确定' : 'Save' | ||
| 59 | }} | ||
| 60 | </el-button> | ||
| 61 | </div> | ||
| 62 | </template> | ||
| 63 | </el-dialog> | ||
| 64 | </template> | ||
| 65 | |||
| 66 | <script setup> | ||
| 67 | import {reactive, ref, toRefs, watch} from 'vue' | ||
| 68 | import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' | ||
| 69 | import * as match from '@/apiPc/match' | ||
| 70 | import {ElMessage} from 'element-plus' | ||
| 71 | import {nationList} from '@/assets/js/data' | ||
| 72 | import _ from 'lodash' | ||
| 73 | import cache from "@/plugins/cache"; | ||
| 74 | |||
| 75 | const language = ref(cache.local.get('language') || 0) | ||
| 76 | const certificates = ref([ | ||
| 77 | { | ||
| 78 | value: '0', | ||
| 79 | label: language.value == 0 ? '居民身份证' : 'Resident ID card' | ||
| 80 | }, | ||
| 81 | { | ||
| 82 | value: '1', | ||
| 83 | label: language.value == 0 ? '护照' : 'Passport' | ||
| 84 | }, | ||
| 85 | { | ||
| 86 | value: '2', | ||
| 87 | label: language.value == 0 ? '其他' : 'Other' | ||
| 88 | } | ||
| 89 | ]) | ||
| 90 | const {proxy} = getCurrentInstance() | ||
| 91 | const emit = defineEmits(['submitForm']) | ||
| 92 | const data = reactive({ | ||
| 93 | form: { | ||
| 94 | idcType: '1', | ||
| 95 | sex:'0' | ||
| 96 | }, | ||
| 97 | rules: { | ||
| 98 | xing: [{required: true, message: '必填', trigger: 'blur'}], | ||
| 99 | ming: [{required: true, message: '必填', trigger: 'blur'}], | ||
| 100 | idcCode: [{required: true, message: '必填', trigger: 'blur'}], | ||
| 101 | birth: [{required: true, message: '必填', trigger: 'change'}], | ||
| 102 | sex: [{required: true, message: '必填', trigger: 'change'}], | ||
| 103 | labelArr: [{required: true, message: '必填', trigger: 'blur'}] | ||
| 104 | }, | ||
| 105 | rules_cn: { | ||
| 106 | xing: [{required: true, message: 'required', trigger: 'blur'}], | ||
| 107 | ming: [{required: true, message: 'required', trigger: 'blur'}], | ||
| 108 | idcCode: [{required: true, message: 'required', trigger: 'blur'}], | ||
| 109 | birth: [{required: true, message: 'required', trigger: 'change'}], | ||
| 110 | address: [{required: true, message: 'required', trigger: 'blur'}], | ||
| 111 | sex: [{required: true, message: 'required', trigger: 'change'}], | ||
| 112 | labelArr: [{required: true, message: 'required', trigger: 'blur'}] | ||
| 113 | }, | ||
| 114 | show: false, | ||
| 115 | labels: [ | ||
| 116 | // {value: '0', label: '运动员', enlabel: 'Sportsman'}, | ||
| 117 | {value: '1', label: '教练', enlabel: 'Coach'}, | ||
| 118 | {value: '2', label: '领队', enlabel: 'Leader'}, | ||
| 119 | {value: '4', label: '队医', enlabel: 'Nurse'}, | ||
| 120 | {value: '5', label: '翻译', enlabel: 'Translator'}, | ||
| 121 | {value: '6', label: '官员', enlabel: 'Official'}, | ||
| 122 | {value: '3', label: '其他', enlabel: 'Other'} | ||
| 123 | ], | ||
| 124 | title: 'Add accompanying personnel', | ||
| 125 | cptId:'' | ||
| 126 | }) | ||
| 127 | const { | ||
| 128 | form, | ||
| 129 | rules, | ||
| 130 | rules_cn, | ||
| 131 | show, | ||
| 132 | title, | ||
| 133 | cptId, | ||
| 134 | labels, | ||
| 135 | uType | ||
| 136 | } = toRefs(data) | ||
| 137 | let editgay = false | ||
| 138 | const open = (params) => { | ||
| 139 | console.log(params) | ||
| 140 | show.value = true | ||
| 141 | cptId.value = params.cptId | ||
| 142 | title.value = params.title | ||
| 143 | if (params.id != 0) { // 编辑 | ||
| 144 | editgay = true | ||
| 145 | match.getPersonInfoById(params.id).then(res => { | ||
| 146 | form.value = res.data | ||
| 147 | form.value.id = params.id | ||
| 148 | if (form.value.label) { | ||
| 149 | // {0:0,1:1,2:3} | ||
| 150 | form.value.labelArr = form.value.label.split(',') | ||
| 151 | } | ||
| 152 | }) | ||
| 153 | } | ||
| 154 | } | ||
| 155 | defineExpose({open}) | ||
| 156 | watch(show, (value) => { | ||
| 157 | if (!value) { | ||
| 158 | form.value = {} | ||
| 159 | } | ||
| 160 | nextTick(() => { | ||
| 161 | proxy.$refs['dialogRef'].clearValidate() | ||
| 162 | }) | ||
| 163 | }) | ||
| 164 | |||
| 165 | function submitForm() { | ||
| 166 | proxy.$refs['dialogRef'].validate((valid) => { | ||
| 167 | if (valid) { | ||
| 168 | form.value.label = form.value.labelArr.toString() | ||
| 169 | if (editgay) { | ||
| 170 | // id不是0 | ||
| 171 | match.editPersonInfo(form.value).then(res => { | ||
| 172 | ElMessage.success('保存成功') | ||
| 173 | show.value = false | ||
| 174 | emit('submitForm') | ||
| 175 | }) | ||
| 176 | } else { | ||
| 177 | form.value.cptId = cptId.value | ||
| 178 | match.savePersonForMyPerson(form.value).then(res => { | ||
| 179 | ElMessage.success('保存成功') | ||
| 180 | show.value = false | ||
| 181 | emit('submitForm') | ||
| 182 | }) | ||
| 183 | } | ||
| 184 | } | ||
| 185 | }) | ||
| 186 | } | ||
| 187 | |||
| 188 | function cancel() { | ||
| 189 | show.value = false | ||
| 190 | } | ||
| 191 | </script> | ||
| 192 | |||
| 193 | <style lang="scss"> | ||
| 194 | .threeFour { | ||
| 195 | width: 100%; | ||
| 196 | |||
| 197 | .el-upload--picture-card { | ||
| 198 | width: 120px; | ||
| 199 | height: 160px; | ||
| 200 | } | ||
| 201 | |||
| 202 | .el-upload-list--picture-card .el-upload-list__item { | ||
| 203 | width: 120px; | ||
| 204 | height: 160px; | ||
| 205 | } | ||
| 206 | } | ||
| 207 | |||
| 208 | .tip { | ||
| 209 | font-size: 13px; | ||
| 210 | color: #999; | ||
| 211 | margin: 10px 0; | ||
| 212 | |||
| 213 | i { | ||
| 214 | color: red; | ||
| 215 | margin: 0 4px 0 0; | ||
| 216 | } | ||
| 217 | } | ||
| 218 | |||
| 219 | .shenfen { | ||
| 220 | .el-upload--picture-card { | ||
| 221 | width: 320px; | ||
| 222 | height: 200px; | ||
| 223 | } | ||
| 224 | |||
| 225 | .el-upload-list--picture-card .el-upload-list__item { | ||
| 226 | width: 320px; | ||
| 227 | height: 200px; | ||
| 228 | } | ||
| 229 | } | ||
| 230 | |||
| 231 | .touxiang { | ||
| 232 | :deep(.el-upload--picture-card ) { | ||
| 233 | width: 140px; | ||
| 234 | height: 200px; | ||
| 235 | } | ||
| 236 | } | ||
| 237 | |||
| 238 | .touxiang { | ||
| 239 | :deep(.el-upload-list__item ) { | ||
| 240 | width: 140px; | ||
| 241 | height: 200px; | ||
| 242 | } | ||
| 243 | |||
| 244 | } | ||
| 245 | |||
| 246 | .el-form--inline .el-form-item { | ||
| 247 | width: 100% | ||
| 248 | } | ||
| 249 | |||
| 250 | |||
| 251 | .boxDialog { | ||
| 252 | .el-dialog__header { | ||
| 253 | background: linear-gradient(#ed2c22, #fe6d45); | ||
| 254 | margin-right: 0; | ||
| 255 | height: 52px; | ||
| 256 | |||
| 257 | span { | ||
| 258 | color: #fff; | ||
| 259 | } | ||
| 260 | } | ||
| 261 | } | ||
| 262 | |||
| 263 | </style> |
| ... | @@ -42,7 +42,7 @@ | ... | @@ -42,7 +42,7 @@ |
| 42 | /> | 42 | /> |
| 43 | </el-form-item> | 43 | </el-form-item> |
| 44 | <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr"> | 44 | <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr"> |
| 45 | <el-select v-model="form.labelArr" multiple @change="labelvalue"> | 45 | <el-select v-model="form.labelArr" multiple> |
| 46 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> | 46 | <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> |
| 47 | </el-select> | 47 | </el-select> |
| 48 | </el-form-item> | 48 | </el-form-item> |
| ... | @@ -63,6 +63,7 @@ | ... | @@ -63,6 +63,7 @@ |
| 63 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/> | 63 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/> |
| 64 | </el-select> | 64 | </el-select> |
| 65 | </el-form-item> | 65 | </el-form-item> |
| 66 | |||
| 66 | <el-form-item :label="language==0?'详细地址':'Address'" prop="address" required> | 67 | <el-form-item :label="language==0?'详细地址':'Address'" prop="address" required> |
| 67 | <el-cascader v-if="form.countryId == 240" | 68 | <el-cascader v-if="form.countryId == 240" |
| 68 | v-model="form.regionId" | 69 | v-model="form.regionId" |
| ... | @@ -201,7 +202,8 @@ const open = (params) => { | ... | @@ -201,7 +202,8 @@ const open = (params) => { |
| 201 | if (form.value.label) { | 202 | if (form.value.label) { |
| 202 | // {0:0,1:1,2:3} | 203 | // {0:0,1:1,2:3} |
| 203 | form.value.labelArr = form.value.label.split(',') | 204 | form.value.labelArr = form.value.label.split(',') |
| 204 | labelvalue(form.value.labelArr) | 205 | } else { |
| 206 | form.value.labelArr = ['0'] | ||
| 205 | } | 207 | } |
| 206 | }) | 208 | }) |
| 207 | } else { | 209 | } else { |
| ... | @@ -213,7 +215,6 @@ const open = (params) => { | ... | @@ -213,7 +215,6 @@ const open = (params) => { |
| 213 | if (form.value.label) { | 215 | if (form.value.label) { |
| 214 | // {0:0,1:1,2:3} | 216 | // {0:0,1:1,2:3} |
| 215 | form.value.labelArr = form.value.label.split(',') | 217 | form.value.labelArr = form.value.label.split(',') |
| 216 | labelvalue(form.value.labelArr) | ||
| 217 | } | 218 | } |
| 218 | }) | 219 | }) |
| 219 | } | 220 | } |
| ... | @@ -259,7 +260,6 @@ function checkCode() { | ... | @@ -259,7 +260,6 @@ function checkCode() { |
| 259 | form.value = res.data | 260 | form.value = res.data |
| 260 | if (form.value.label != null) { | 261 | if (form.value.label != null) { |
| 261 | form.value.labelArr = form.value.label.split(',') | 262 | form.value.labelArr = form.value.label.split(',') |
| 262 | labelvalue(form.value.labelArr) | ||
| 263 | } | 263 | } |
| 264 | form.value.groupId = groupId.value | 264 | form.value.groupId = groupId.value |
| 265 | } | 265 | } |
| ... | @@ -297,16 +297,6 @@ function giveBirthDay() { | ... | @@ -297,16 +297,6 @@ function giveBirthDay() { |
| 297 | } | 297 | } |
| 298 | } | 298 | } |
| 299 | 299 | ||
| 300 | function labelvalue(e) { | ||
| 301 | if (e.indexOf('1') > -1 || e.indexOf('2') > -1) { | ||
| 302 | // 联系方式必填 | ||
| 303 | showRequire.value = true | ||
| 304 | } else { | ||
| 305 | showRequire.value = false | ||
| 306 | } | ||
| 307 | console.log(showRequire.value) | ||
| 308 | } | ||
| 309 | |||
| 310 | function submitForm() { | 300 | function submitForm() { |
| 311 | proxy.$refs['dialogRef'].validate((valid) => { | 301 | proxy.$refs['dialogRef'].validate((valid) => { |
| 312 | if (valid) { | 302 | if (valid) { | ... | ... |
src/viewsPc/match/components/addWdsf.vue
0 → 100644
| 1 | <template> | ||
| 2 | <el-dialog | ||
| 3 | v-model="show" :title="title" width="800px" append-to-body close-icon="CircleClose" center | ||
| 4 | :close-on-click-modal="false" class="pcloginpop" @close="cancel" | ||
| 5 | destroy-on-close | ||
| 6 | > | ||
| 7 | <el-form ref="dialogRef" :model="form" :label-width="language==0?120:180" inline> | ||
| 8 | <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" v-if="form.id"> | ||
| 9 | {{ form.wdsfMin }} | ||
| 10 | </el-form-item> | ||
| 11 | <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" required v-else> | ||
| 12 | <el-input type="text" v-model="card" @change="resetCode" > | ||
| 13 | <template #append> | ||
| 14 | <el-button type="primary" plain style="width: 110px" @click="checkCard"> | ||
| 15 | <el-icon v-if="isCodeTrue" size="16" color="#67C23A"> | ||
| 16 | <CircleCheckFilled/> | ||
| 17 | </el-icon> | ||
| 18 | <span v-else>{{ language == 0 ? '校验卡号' : 'Check Code' }}</span> | ||
| 19 | </el-button> | ||
| 20 | </template> | ||
| 21 | </el-input> | ||
| 22 | <Vcode :show="showVcode" :z-index="2999" @success="codeSuccess()"></Vcode> | ||
| 23 | </el-form-item> | ||
| 24 | <div class="h30"></div> | ||
| 25 | <div class="leftboderTT">{{ language == 0 ? '个人信息' : 'Personal information' }} | ||
| 26 | <span v-if="language==0">(登录时需要验证,保护账户信息)</span> | ||
| 27 | <span v-else>(Obtain automatically according to the WDSF number)</span> | ||
| 28 | </div> | ||
| 29 | <div class="h20"></div> | ||
| 30 | <el-form-item :label="language==0?'名':'name'"> | ||
| 31 | <el-input v-model="form.ming" disabled/> | ||
| 32 | </el-form-item> | ||
| 33 | <el-form-item :label="language==0?'姓氏':'surname'"> | ||
| 34 | <el-input v-model="form.xing" disabled/> | ||
| 35 | </el-form-item> | ||
| 36 | <el-form-item label="Representing"> | ||
| 37 | <el-input v-model="form.representing" disabled/> | ||
| 38 | </el-form-item> | ||
| 39 | <el-form-item label="Age group"> | ||
| 40 | <el-input v-model="form.ageGroup" disabled/> | ||
| 41 | </el-form-item> | ||
| 42 | <el-form-item label="Division"> | ||
| 43 | <el-input v-model="form.division" disabled/> | ||
| 44 | </el-form-item> | ||
| 45 | <el-form-item label="Status"> | ||
| 46 | <el-input v-model="form.wdsfStatus" disabled/> | ||
| 47 | </el-form-item> | ||
| 48 | <div class="h30"></div> | ||
| 49 | <div class="leftboderTT"> | ||
| 50 | {{ language == 0 ? '补充信息' : 'Supplementary Information' }} | ||
| 51 | </div> | ||
| 52 | <div class="h20"></div> | ||
| 53 | <el-form-item :label="language==0?'性别':'Sex'" required> | ||
| 54 | <el-radio-group v-model="form.sex"> | ||
| 55 | <el-radio label="0">{{ language == 0 ? '女' : 'female' }}</el-radio> | ||
| 56 | <el-radio label="1">{{ language == 0 ? '男' : 'male' }}</el-radio> | ||
| 57 | </el-radio-group> | ||
| 58 | </el-form-item> | ||
| 59 | |||
| 60 | <el-form-item :label="language==0?'出生日期':'Birthday'" required> | ||
| 61 | <el-date-picker | ||
| 62 | v-model="form.birth" | ||
| 63 | style="width: 100%;" | ||
| 64 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" | ||
| 65 | /> | ||
| 66 | </el-form-item> | ||
| 67 | <el-form-item label="Passport number" required> | ||
| 68 | <el-input v-model="form.passportNumber"/> | ||
| 69 | </el-form-item> | ||
| 70 | <el-form-item label="Passport File"> | ||
| 71 | <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/> | ||
| 72 | </el-form-item> | ||
| 73 | </el-form> | ||
| 74 | <template #footer> | ||
| 75 | <div class="dialog-footer text-center"> | ||
| 76 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ | ||
| 77 | language == 0 ? '确定' : 'Save' | ||
| 78 | }} | ||
| 79 | </el-button> | ||
| 80 | </div> | ||
| 81 | </template> | ||
| 82 | </el-dialog> | ||
| 83 | </template> | ||
| 84 | |||
| 85 | <script setup> | ||
| 86 | import {reactive, ref, toRefs, watch} from 'vue' | ||
| 87 | import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' | ||
| 88 | import * as match from '@/apiPc/match' | ||
| 89 | import {ElMessage} from 'element-plus' | ||
| 90 | import _ from 'lodash' | ||
| 91 | import cache from "@/plugins/cache"; | ||
| 92 | import Vcode from "vue3-puzzle-vcode" | ||
| 93 | import {checkWdsf} from "@/apiPc/match"; | ||
| 94 | const language = ref(cache.local.get('language') || 0) | ||
| 95 | const certificates = ref([ | ||
| 96 | { | ||
| 97 | value: '0', | ||
| 98 | label: language.value == 0 ? '居民身份证' : 'Resident ID card' | ||
| 99 | }, | ||
| 100 | { | ||
| 101 | value: '1', | ||
| 102 | label: language.value == 0 ? '护照' : 'Passport' | ||
| 103 | }, | ||
| 104 | { | ||
| 105 | value: '2', | ||
| 106 | label: language.value == 0 ? '其他' : 'Other' | ||
| 107 | } | ||
| 108 | ]) | ||
| 109 | const {proxy} = getCurrentInstance() | ||
| 110 | const emit = defineEmits(['submitForm']) | ||
| 111 | const data = reactive({ | ||
| 112 | form: { | ||
| 113 | // countryId: 240 | ||
| 114 | sex:'0' | ||
| 115 | }, | ||
| 116 | card:'', | ||
| 117 | show: false, | ||
| 118 | showVcode: false, | ||
| 119 | labels: [ | ||
| 120 | {value: '0', label: '运动员', enlabel: 'Sportsman'}, | ||
| 121 | {value: '1', label: '教练', enlabel: 'Coach'}, | ||
| 122 | {value: '2', label: '领队', enlabel: 'Leader'}, | ||
| 123 | {value: '4', label: '队医', enlabel: 'Nurse'}, | ||
| 124 | {value: '5', label: '翻译', enlabel: 'Translator'}, | ||
| 125 | {value: '6', label: '官员', enlabel: 'Official'}, | ||
| 126 | {value: '3', label: '其他', enlabel: 'Other'} | ||
| 127 | ], | ||
| 128 | title: '添加选手信息', | ||
| 129 | isMe: false, | ||
| 130 | isCodeTrue: false, | ||
| 131 | cptId:'' | ||
| 132 | }) | ||
| 133 | const {form, show,showVcode, title, labels, uType, isMe,isCodeTrue,card,cptId} = toRefs(data) | ||
| 134 | |||
| 135 | let editgay = false | ||
| 136 | const open = (params) => { | ||
| 137 | console.log(params) | ||
| 138 | show.value = true | ||
| 139 | title.value = params.title | ||
| 140 | isMe.value = params.isMe | ||
| 141 | cptId.value = params.cptId | ||
| 142 | if (language.value == 0) { | ||
| 143 | form.value.countryId = 240 | ||
| 144 | } | ||
| 145 | if (isMe.value) { | ||
| 146 | //个人 | ||
| 147 | match.getMyPersonInfo().then(res => { | ||
| 148 | form.value = res.data | ||
| 149 | form.value.id = res.data.id | ||
| 150 | if (form.value.label) { | ||
| 151 | // {0:0,1:1,2:3} | ||
| 152 | form.value.labelArr = form.value.label.split(',') | ||
| 153 | } else { | ||
| 154 | form.value.labelArr = ['0'] | ||
| 155 | } | ||
| 156 | }) | ||
| 157 | } else { | ||
| 158 | if (params.id != 0) { // 编辑舞伴 | ||
| 159 | editgay = true | ||
| 160 | form.value = params.form | ||
| 161 | } | ||
| 162 | } | ||
| 163 | } | ||
| 164 | defineExpose({open}) | ||
| 165 | watch(show, (value) => { | ||
| 166 | if (!value) { | ||
| 167 | form.value = { | ||
| 168 | sex:'0' | ||
| 169 | } | ||
| 170 | } | ||
| 171 | nextTick(() => { | ||
| 172 | proxy.$refs['dialogRef'].clearValidate() | ||
| 173 | }) | ||
| 174 | }) | ||
| 175 | |||
| 176 | function submitForm() { | ||
| 177 | if (editgay) { | ||
| 178 | // id不是0 | ||
| 179 | form.value.cptId = cptId.value | ||
| 180 | match.editPersonInfo(form.value).then(res => { | ||
| 181 | ElMessage.success('保存成功') | ||
| 182 | show.value = false | ||
| 183 | emit('submitForm') | ||
| 184 | }) | ||
| 185 | } else { | ||
| 186 | if (!form.value.passportNumber) { | ||
| 187 | ElMessage.error('Please fill in your passport number') | ||
| 188 | return | ||
| 189 | } | ||
| 190 | if (!form.value.birth) { | ||
| 191 | ElMessage.error('Please fill in your birthday') | ||
| 192 | return | ||
| 193 | } | ||
| 194 | if(Array.isArray(form.value.passportUrl)){ | ||
| 195 | form.value.passportUrl = form.value.passportUrl[0].url | ||
| 196 | } | ||
| 197 | if (isMe.value) { | ||
| 198 | match.saveMyBaseInfo(form.value).then(res => { | ||
| 199 | ElMessage.success('保存成功') | ||
| 200 | show.value = false | ||
| 201 | emit('submitForm') | ||
| 202 | }) | ||
| 203 | } else { | ||
| 204 | delete form.value.status | ||
| 205 | delete form.value.id | ||
| 206 | form.value.label = '0' | ||
| 207 | form.value.cptId = cptId.value | ||
| 208 | form.value.wdsfMin = form.value.min | ||
| 209 | form.value.idcCode = form.value.passportNumber | ||
| 210 | form.value.idcType = '1' | ||
| 211 | match.savePersonForMyPerson(form.value).then(res => { | ||
| 212 | ElMessage.success('保存成功') | ||
| 213 | show.value = false | ||
| 214 | emit('submitForm', res.data) | ||
| 215 | }) | ||
| 216 | } | ||
| 217 | } | ||
| 218 | } | ||
| 219 | |||
| 220 | function cancel() { | ||
| 221 | show.value = false | ||
| 222 | showVcode.value = false | ||
| 223 | } | ||
| 224 | function resetCode() { | ||
| 225 | isCodeTrue.value = false | ||
| 226 | } | ||
| 227 | function checkCard() { | ||
| 228 | if(isCodeTrue.value){ | ||
| 229 | return | ||
| 230 | } | ||
| 231 | if (!card.value) { | ||
| 232 | if (language.value == 0) { | ||
| 233 | ElMessage.error('请填写WDSF卡号') | ||
| 234 | } else { | ||
| 235 | ElMessage.error('Please fill in your WDSF code') | ||
| 236 | } | ||
| 237 | return | ||
| 238 | } | ||
| 239 | showVcode.value = true | ||
| 240 | } | ||
| 241 | function codeSuccess(msg) { | ||
| 242 | console.log('验证通过' + msg); | ||
| 243 | showVcode.value = false | ||
| 244 | isCodeTrue.value = true | ||
| 245 | checkWdsf({card: card.value}).then(res => { | ||
| 246 | form.value = res.data | ||
| 247 | form.value.xing = form.value.surname | ||
| 248 | form.value.ming = form.value.name | ||
| 249 | form.value.wdsfStatus = form.value.status | ||
| 250 | if (!form.value.sex) { | ||
| 251 | form.value.sex = '0' | ||
| 252 | } | ||
| 253 | if (form.value.wdsfFlag == '0') { | ||
| 254 | isCodeTrue.value = false | ||
| 255 | if (language.value == 0) { | ||
| 256 | ElMessage.error('WDSF卡号错误') | ||
| 257 | } else { | ||
| 258 | ElMessage.error('WDSF ID is Error') | ||
| 259 | } | ||
| 260 | } | ||
| 261 | }) | ||
| 262 | } | ||
| 263 | </script> | ||
| 264 | |||
| 265 | <style lang="scss"> | ||
| 266 | .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover { | ||
| 267 | color: var(--el-color-primary); | ||
| 268 | background: #efefff; | ||
| 269 | border: var(--el-color-primary) solid 1px; | ||
| 270 | border-radius: 0; | ||
| 271 | } | ||
| 272 | |||
| 273 | .leftboderTT { | ||
| 274 | color: var(--el-color-primary); | ||
| 275 | font-size: 16px; | ||
| 276 | font-weight: 600; | ||
| 277 | |||
| 278 | span { | ||
| 279 | color: #929AA0; | ||
| 280 | font-size: 14px; | ||
| 281 | } | ||
| 282 | } | ||
| 283 | |||
| 284 | .threeFour { | ||
| 285 | width: 100%; | ||
| 286 | |||
| 287 | .el-upload--picture-card { | ||
| 288 | width: 120px; | ||
| 289 | height: 160px; | ||
| 290 | } | ||
| 291 | |||
| 292 | .el-upload-list--picture-card .el-upload-list__item { | ||
| 293 | width: 120px; | ||
| 294 | height: 160px; | ||
| 295 | } | ||
| 296 | } | ||
| 297 | |||
| 298 | .tip { | ||
| 299 | font-size: 13px; | ||
| 300 | color: #999; | ||
| 301 | margin: 10px 0; | ||
| 302 | |||
| 303 | i { | ||
| 304 | color: red; | ||
| 305 | margin: 0 4px 0 0; | ||
| 306 | } | ||
| 307 | } | ||
| 308 | |||
| 309 | .shenfen { | ||
| 310 | .el-upload--picture-card { | ||
| 311 | width: 320px; | ||
| 312 | height: 200px; | ||
| 313 | } | ||
| 314 | |||
| 315 | .el-upload-list--picture-card .el-upload-list__item { | ||
| 316 | width: 320px; | ||
| 317 | height: 200px; | ||
| 318 | } | ||
| 319 | } | ||
| 320 | |||
| 321 | .touxiang { | ||
| 322 | :deep(.el-upload--picture-card ) { | ||
| 323 | width: 140px; | ||
| 324 | height: 200px; | ||
| 325 | } | ||
| 326 | } | ||
| 327 | |||
| 328 | .touxiang { | ||
| 329 | :deep(.el-upload-list__item ) { | ||
| 330 | width: 140px; | ||
| 331 | height: 200px; | ||
| 332 | } | ||
| 333 | |||
| 334 | } | ||
| 335 | |||
| 336 | .el-form--inline .el-form-item { | ||
| 337 | width: 100% | ||
| 338 | } | ||
| 339 | |||
| 340 | |||
| 341 | .boxDialog { | ||
| 342 | .el-dialog__header { | ||
| 343 | background: linear-gradient(#ed2c22, #fe6d45); | ||
| 344 | margin-right: 0; | ||
| 345 | height: 52px; | ||
| 346 | |||
| 347 | span { | ||
| 348 | color: #fff; | ||
| 349 | } | ||
| 350 | } | ||
| 351 | } | ||
| 352 | |||
| 353 | </style> |
| ... | @@ -7,10 +7,10 @@ | ... | @@ -7,10 +7,10 @@ |
| 7 | <el-descriptions-item v-if="form.picUrl" :label="language==0?'个人照片':'photo'"> | 7 | <el-descriptions-item v-if="form.picUrl" :label="language==0?'个人照片':'photo'"> |
| 8 | <img style="width: 60px" :src="fillImgUrl(form.picUrl)"> | 8 | <img style="width: 60px" :src="fillImgUrl(form.picUrl)"> |
| 9 | </el-descriptions-item> | 9 | </el-descriptions-item> |
| 10 | <el-descriptions-item :label="language==0?'姓氏':'surname'">{{ form.xing }}</el-descriptions-item> | 10 | <el-descriptions-item v-if="form.xing" :label="language==0?'姓氏':'surname'">{{ form.xing }}</el-descriptions-item> |
| 11 | <el-descriptions-item :label="language==0?'名':'name'">{{ form.ming }}</el-descriptions-item> | 11 | <el-descriptions-item :label="language==0?'名':'name'">{{ form.ming }}</el-descriptions-item> |
| 12 | <el-descriptions-item :label="language==0?'性别':'sex'">{{ form.sexStr }}</el-descriptions-item> | 12 | <el-descriptions-item :label="language==0?'性别':'sex'">{{ form.sexStr }}</el-descriptions-item> |
| 13 | <el-descriptions-item :label="language==0?'所属国家':'Nationality'">{{ form.countryName }}</el-descriptions-item> | 13 | <el-descriptions-item v-if="form.countryName" :label="language==0?'所属国家':'Nationality'">{{ form.countryName }}</el-descriptions-item> |
| 14 | <el-descriptions-item :label="language==0?'证件类型':'ID type'">{{ form.idcTypeStr }}</el-descriptions-item> | 14 | <el-descriptions-item :label="language==0?'证件类型':'ID type'">{{ form.idcTypeStr }}</el-descriptions-item> |
| 15 | <el-descriptions-item :label="language==0?'证件号码':'ID NO'">{{ form.idcCode }}</el-descriptions-item> | 15 | <el-descriptions-item :label="language==0?'证件号码':'ID NO'">{{ form.idcCode }}</el-descriptions-item> |
| 16 | <el-descriptions-item :label="language==0?'出生日期':'birth'">{{ form.birth }}</el-descriptions-item> | 16 | <el-descriptions-item :label="language==0?'出生日期':'birth'">{{ form.birth }}</el-descriptions-item> | ... | ... |
| ... | @@ -2,9 +2,14 @@ | ... | @@ -2,9 +2,14 @@ |
| 2 | <div class="mt20"></div> | 2 | <div class="mt20"></div> |
| 3 | <el-table :data="list" :sum-text="sumText" border style="width: 100%" v-loading="loading"> | 3 | <el-table :data="list" :sum-text="sumText" border style="width: 100%" v-loading="loading"> |
| 4 | <el-table-column :label="language==0?'序号':'Index'" type="index" width="70" align="center"/> | 4 | <el-table-column :label="language==0?'序号':'Index'" type="index" width="70" align="center"/> |
| 5 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="personInfo.xing" min-width="100"/> | 5 | <el-table-column :label="language==0?'姓氏':'Surname'" prop="personInfo.xing" min-width="100"/> |
| 6 | <el-table-column :label="language==0?'名':'First Name'" prop="personInfo.ming" min-width="100"/> | 6 | <el-table-column :label="language==0?'名':'Name'" prop="personInfo.ming" min-width="100"/> |
| 7 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="personInfo.countryName" :min-width="language==0?'100':'120'"/> | 7 | <el-table-column :label="language==0?'所属国家':'Nationality'" prop="" :min-width="language==0?'100':'120'"> |
| 8 | <template #default="scope"> | ||
| 9 | <span v-if="scope.row.personInfo.countryName">{{scope.row.personInfo.countryName}}</span> | ||
| 10 | <span v-if="scope.row.personInfo.Representing">{{scope.row.personInfo.Representing}}</span> | ||
| 11 | </template> | ||
| 12 | </el-table-column> | ||
| 8 | <!-- <el-table-column :label="language==0?'短名':'Nick Name'" prop="personInfo.shortName" min-width="110"/>--> | 13 | <!-- <el-table-column :label="language==0?'短名':'Nick Name'" prop="personInfo.shortName" min-width="110"/>--> |
| 9 | <el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr"/> | 14 | <el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr"/> |
| 10 | <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/>--> | 15 | <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/>--> | ... | ... |
| ... | @@ -355,10 +355,9 @@ function goTeamSign() { | ... | @@ -355,10 +355,9 @@ function goTeamSign() { |
| 355 | function goPersonalSign() { | 355 | function goPersonalSign() { |
| 356 | // 选项目 | 356 | // 选项目 |
| 357 | router.push({ | 357 | router.push({ |
| 358 | name: `chooseCoach`, | 358 | name: 'chooseProject', |
| 359 | query: { | 359 | query: { |
| 360 | matchId: matchId.value, | 360 | matchId: matchId.value |
| 361 | signType: matchData.value.signType | ||
| 362 | } | 361 | } |
| 363 | }) | 362 | }) |
| 364 | } | 363 | } | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -5,6 +5,10 @@ | ... | @@ -5,6 +5,10 @@ |
| 5 | <el-form-item :label="language==0?'邮箱':'E-mail'" required> | 5 | <el-form-item :label="language==0?'邮箱':'E-mail'" required> |
| 6 | <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode" | 6 | <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode" |
| 7 | /> | 7 | /> |
| 8 | <div class="tip"> | ||
| 9 | (请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。 | ||
| 10 | 该邮箱后续会会作为您登录的账户,并接收您报名审核、支付账单、比赛邀请函等。) | ||
| 11 | </div> | ||
| 8 | </el-form-item> | 12 | </el-form-item> |
| 9 | <el-form-item :label="language==0?'验证码':'Code'" required> | 13 | <el-form-item :label="language==0?'验证码':'Code'" required> |
| 10 | <el-input v-model="form.code"> | 14 | <el-input v-model="form.code"> | ... | ... |
-
Please register or sign in to post a comment