You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1332 lines
51 KiB

<template>
<div class="wrap">
<div class="header">
<el-avatar :size="80" :src="avatar" class="Headtop"></el-avatar>
<div style="color:#9278FF;font-size:14px;font-family:MicrosoftYaHei;margin-top:5px;">
<el-upload
class="upload-demo"
:headers="{token}"
:action="this.api.updateUserAvatars"
name="file"
:limit="1"
:on-success="getRes"
>
<div>点击更改头像</div>
</el-upload>
</div>
</div>
<div class="card" style="margin-top: -65px">
<p class="block-title" style="display: flex;justify-content: space-between;align-items: center;">
<span><img src="../../assets/img/person/user.png" alt=""> 用户信息</span>
<el-button type="primary" size="small" v-preventReClick @click="save">更新资料</el-button>
</p>
<p class="meta-title">
<span>个人信息</span>
</p>
<div class="information">
<div class="line">
<div class="item">
<span>姓名</span>
<input id="username" class="username" placeholder="请输入姓名" type="text" v-model="form.userName"/>
</div>
<div class="item">
<span>所在国家</span>
<el-select
v-model="form.countries"
placeholder
>
<el-option
v-for="item in countryList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="line">
<div class="item">
<span>性别</span>
<div class="sexRadio">
<el-radio v-model="form.sex" :label="1">男</el-radio>
<el-radio v-model="form.sex" :label="2">女</el-radio>
</div>
</div>
<div class="item">
<span>所在地</span>
<div class="selects">
<el-select
v-model="form.countries"
placeholder
>
<el-option
v-for="item in countryList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<el-select
v-model="form.provinceId"
placeholder
@change="id => getCity(id,1)"
>
<el-option
v-for="item in provinceList"
:key="item.provinceId"
:label="item.provinceName"
:value="item.provinceId"
></el-option>
</el-select>
<el-select
v-model="form.cityId"
placeholder
:disabled="form.provinceId ? false : true"
>
<el-option
v-for="item in cityList"
:key="item.cityId"
:label="item.cityName"
:value="item.cityId"
></el-option>
</el-select>
</div>
</div>
</div>
<div class="line">
<div class="item">
<span>出生年月日</span>
<el-date-picker
v-model="form.dateBirth"
:clearable="false"
class="block-right"
type="date">
</el-date-picker>
</div>
<div class="item">
<span>证件</span>
<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')" id="idnumber" class="idnumber" placeholder="请输入证件" type="text" v-model="form.idNumber"/>
</div>
</div>
<div class="line">
<div class="item">
<span>教育程度</span>
<el-select
v-model="form.educationDegree"
placeholder="请选择教育程度"
>
<el-option
v-for="(item,index) in educationDegreeList"
:key="index"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="item">
<span>所在学校</span>
<el-select
v-model="form.schoolId"
filterable
placeholder="请选择所在学校"
>
<el-option
v-for="item in schoolList"
:key="item.value"
:label="item.schoolName"
:value="item.schoolId"
></el-option>
</el-select>
</div>
</div>
<div class="line">
<div class="item">
<span>手机号</span>
<div class="btns flex-between">
<span>{{form.phone}}</span>
<el-button v-if="form.phone" type="primary" size="small" @click="bindPhone">更换</el-button>
<el-button v-else type="primary" size="small" @click="bindPhone">绑定</el-button>
</div>
</div>
<div class="item">
<span>邮箱</span>
<div class="btns flex-between">
<span>{{form.email}}</span>
<el-button v-if="form.email" type="primary" size="small" @click="bindEmail">更换</el-button>
<el-button v-else type="primary" size="small" @click="bindEmail">绑定</el-button>
</div>
</div>
</div>
<div class="line">
<div class="item">
<span>微信号</span>
<input type="text" class="username" placeholder="请输入微信号" v-model="form.wechatId"/>
</div>
</div>
<p class="meta-title plus">
<span>个人档案</span>
<el-button type="text" icon="el-icon-plus" @click="addArch">新增</el-button>
</p>
</div>
<div class="information" style="margin-top: 20px;">
<div class="archives" v-for="(archive,index) in archivesList" :key="index" v-show="index == 0 || showArch">
<div class="line">
<div class="item">
<span>职业</span>
<el-select
v-model="archive.personalCareerId"
placeholder="选择职业"
>
<el-option
v-for="item in occupationList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="item">
<span>国家</span>
<el-select
v-model="form.countries"
placeholder
>
<el-option
v-for="item in countryList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="line">
<div class="item">
<span>学校名称</span>
<el-select
v-model="archive.schoolId"
filterable
placeholder="选择学校"
@change="id => getSchoolName(id,index)"
>
<el-option
v-for="item in schoolList"
:key="item.value"
:label="item.schoolName"
:value="item.schoolId"
></el-option>
</el-select>
</div>
<div class="item">
<span>专业学科</span>
<el-select
v-model="archive.disciplineId"
placeholder="选择专业学科"
@change="id => getItemProfessionalClass(id,index)"
@clear="() => clearItemClass(index)"
>
<el-option
v-for="item in subjectList"
:key="item.value"
:label="item.disciplineName"
:value="item.disciplineId"
></el-option>
</el-select>
</div>
</div>
<div class="line">
<div class="item">
<span>专业类</span>
<el-select
v-model="archive.professionalClassId"
placeholder="选择专业类"
:disabled="archive.disciplineId ? false : true"
@change="id => getItemProfessional(id,index)"
@clear="() => clearItemProfess(index)"
>
<el-option
v-for="item in archive.ProfessionalClassList"
:key="item.professionalClassId"
:label="item.professionalClassName"
:value="item.professionalClassId"
></el-option>
</el-select>
</div>
<div class="item">
<span>专业</span>
<el-select
v-model="archive.professionalId"
placeholder="选择专业"
:disabled="archive.professionalClassId ? false : true"
@change="getItemStuGrade"
>
<el-option
v-for="item in archive.ProfessionalList"
:key="item.professionalId"
:label="item.professionalName"
:value="item.professionalId"
></el-option>
</el-select>
</div>
</div>
</div>
</div>
<div class="fold" v-if="archivesList.length > 1">
<img :class="{ 'arrowTransform': showArch, 'arrowTransformReturn': !showArch}" style="width: 21px;height: 17px;" src="../../assets/img/person/open.png" alt="" @click="foldArch">
</div>
</div>
<div class="card mgb20">
<p class="block-title" style="margin-bottom: 15px">
<span><img src="../../assets/img/person/manag.png" alt=""> 账号信息</span>
</p>
<div class="information">
<div class="line">
<div class="item">
<span>用户账号</span>
<input
id="account"
type="text"
class="username" placeholder="请输入用户账号"
v-model="form.account"
/>
</div>
<div class="item">
<span>密码</span>
<div class="btns flex-between">
<p>******</p>
<el-button type="primary" size="small" @click="bindPassword">更换</el-button>
</div>
</div>
</div>
</div>
</div>
<el-dialog
:title="form.email ? '更换邮箱' : '绑定邮箱'"
:visible.sync="emailVisible"
:close-on-click-modal="false"
@close="closeEmail"
width="30%">
<el-form ref="form" :model="form" label-width="60px">
<el-form-item label="邮箱">
<el-input placeholder="请输入邮箱" v-model="email"></el-input>
</el-form-item>
<el-form-item label="验证码">
<div class="flex-between">
<el-input v-model="emailCode" placeholder="请输入验证码" maxlength="6"></el-input>
<el-button style="margin-left: 10px" type="text" @click="sendEmailCode" :disabled="emailDisabled">{{emailBtnText}}</el-button>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="emailVisible = false">取 消</el-button>
<el-button type="primary" @click="emailSubmit">确 定</el-button>
</span>
</el-dialog>
<el-dialog
:title="form.phone ? '更换手机号' : '绑定手机号'"
:visible.sync="phoneVisible"
:close-on-click-modal="false"
@close="closePhone"
width="30%">
<el-form ref="form" :model="form" label-width="60px">
<el-form-item label="手机号">
<el-input placeholder="请输入手机号" v-model="phone" maxlength="11"></el-input>
</el-form-item>
<el-form-item label="验证码">
<div class="flex-between">
<el-input v-model="phoneCode" placeholder="请输入验证码" maxlength="6"></el-input>
<el-button style="margin-left: 10px" type="text" @click="sendPhoneCode" :disabled="phoneDisabled">{{phoneBtnText}}</el-button>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="phoneVisible = false"> </el-button>
<el-button type="primary" @click="phoneSubmit"> </el-button>
</span>
</el-dialog>
<el-dialog
title="更换密码"
:visible.sync="passwordVisible"
:close-on-click-modal="false"
@close="closePassword"
width="30%">
<el-form ref="passwordForm" :model="form" label-width="60px">
<el-form-item label="原密码">
<el-input type="password" v-model="passwordForm.password" placeholder="请输入原密码"></el-input>
</el-form-item>
<el-form-item label="新密码">
<el-input type="password" v-model="passwordForm.newPassword" placeholder="请输入新密码" @keyup.enter.native="editPassword"></el-input>
</el-form-item>
<el-form-item label="新密码">
<el-input type="password" v-model="passwordForm.reNewPassword" placeholder="请确认新密码" @keyup.enter.native="editPassword"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="passwordVisible = false">取 消</el-button>
<el-button type="primary" @click="editPassword"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
avatar: 'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png',
token: sessionStorage.getItem('token'),
form: {
name:'',
workNumber:'',
password:"",
phone:'',
email:'',
provinceName:'',
cityName:'',
schoolName:'',
professionalName:'',
experimentName:'',
sex: 1,
dateBirth: '',
educationDegree: ''
},
profession: [
{
value: '1',
label: '学生'
},
{
value: '2',
label: '老师'
}
],
emailVisible: false,
passwordVisible: false,
phoneVisible: false,
showArch: false,
passwordForm: {
password: '',
newPassword: '',
reNewPassword: ''
},
sexList: [
{
name: '男',
value: 1
},
{
name: '女',
value: 2
}
],
countryList: [
{
label: '中国'
}
],
form: {},
occupationList: [{
value: 1,
label: '学生'
},
{
value: 2,
label: '老师'
}],
provinceList: this.$store.state.provinceList, //省份
cityList: [], //城市
// 教育程度
educationDegreeList: [
{
name: '专科',
value: 1
},
{
name: '本科',
value: 2
},
{
name: '硕士',
value: 3
},
{
name: '博士',
value: 4
},
{
name: '其他',
value: 5
}
],
subjectList: [], //专业学科
ProfessionalClassList: [], //专业类
ProfessionalList: [], //专业
schoolList: [],
archivesList: [],
archivesForm: {
//个人档案
personalCareerId: '', //职业
schoolId: '', //院校
schoolName: '', //院校名称
professionalClassId: '', //专业类
professionalClassName: '', //专业类名称
disciplineId: '', //专业学科
disciplineName: '', //专业学科名称
professionalId: '', //专业
professionalName: '', //专业名称
},
email: '',
emailBtnText: '发送验证码',
emailCode: '',
emailDisabled: false,
emailTimer: null,
phone: '',
phoneBtnText: '发送验证码',
phoneCode: '',
phoneDisabled: false,
phoneTimer: null,
originAccount: '',
accountReapeat: false
};
},
mounted() {
this.getdata()
this.getProvince()
this.getSchoolData()
this.getSubject()
},
methods: {
getProvince(){
this.$get(this.api.queryProvince).then(res => {
this.provinceList = res.list
this.$store.commit("provinceData", { provinceList : this.provinceList});
}).catch(res => {});
},
// 获取城市
getCity(id,type,index){
if(type == 1){
if(this.form.provinceId){
this.form.cityId = 1
this.getCityData(type,index)
}
}else{
if(this.archivesList[index].provinceId){
this.archivesList[index].provinceName = this.provinceList[id-1].provinceName
this.archivesList[index].cityId = 1
this.getCityData(type,index)
}
}
},
getCityData(type,index){
let provinceId = type == 1 ? this.form.provinceId : this.archivesList[index].provinceId
this.$get(this.api.queryCity,{provinceId}).then(res => {
if(type == 1){
this.cityList = res.list
}else{
this.archivesList[index].cityList = res.list
}
}).catch(res => {});
},
getCityName(id,index){
this.archivesList[index].cityName = this.archivesList[index].cityList[id-1].cityName
},
getSchoolName(id,index){
this.archivesList[index].schoolName = this.schoolList[id-1].schoolName
},
// 获取学校名称
getSchoolData(){
this.$get(this.api.querySchoolData,{schoolName: '',provinceId: '',cityId: ''}).then(res => {
this.schoolList = res.list
}).catch(res => {})
},
async accountChange(){
if(this.originAccount != this.form.account){
let res = await this.$get(this.api.queryAccountIsExist, {
account: this.form.account,
schoolId: this.form.schoolId
});
if(res.message.user.length){
this.$message.warning('该账号已存在');
this.accountReapeat = true
}else{
this.accountReapeat = false
}
}else{
this.accountReapeat = false
}
},
//取得头像地址
getRes(res) {
this.avatar = res.message
this.$store.commit('userPhoto',{avatar:res.message})
},
getdata() {
this.$get(this.api.queryUserInfoDetails).then(res => {
let userInfo = res.result.hrUserInfo
let schoolId = userInfo.schoolId
this.form = Object.assign(userInfo,res.result.userAccountList[0])
this.form.schoolId = schoolId
this.form.accountId = userInfo.id
this.originAccount = this.form.account
this.archivesList = res.result.personalFileList
if(userInfo.userAvatars) this.avatar = userInfo.userAvatars
this.$nextTick(() => {
if(this.form.provinceId){
this.getCityData(1)
}
if(this.archivesList.length != 0){
this.archivesList.forEach((e,k) =>{
this.$set(e, 'subjectList', this.subjectList);
this.$set(e, 'disciplineId', e.disciplineId ? e.disciplineId : '');
this.$set(e, 'disciplineName', e.disciplineName ? e.disciplineName : '');
this.$set(e, 'professionalClassId', e.professionalClassId ? e.professionalClassId : '');
this.$set(e, 'professionalClassName', e.professionalClassName ? e.professionalClassName : '');
this.$set(e, 'professionalId', e.professionalId ? e.professionalId : '');
this.$set(e, 'professionalName', e.professionalName ? e.professionalName : '');
this.$set(e, 'schoolId', e.schoolId ? e.schoolId : '');
this.$set(e, 'schoolName', e.schoolName ? e.schoolName : '');
if(e.disciplineId){
this.$post(this.api.queryCourseProfessionalClass,[e.disciplineId]).then(res => {
this.$set(e, 'ProfessionalClassList', res.result);
}).catch(res => {});
}else{
this.$set(e, 'ProfessionalClassList', []);
}
if(e.professionalClassId){
this.$get(this.api.queryCourseProfessional,{ professionalClassId: e.professionalClassId }).then(res => {
this.$set(e, 'ProfessionalList', res.result);
}).catch(res => {});
}else{
this.$set(e, 'ProfessionalList', []);
}
})
}else{
this.concatArch(1)
}
})
}).catch(err => {})
},
concatArch(isLoadData) {
this.archivesList = this.archivesList.concat({
isNew: true,
personalCareerId: '',
schoolId: '',
schoolName: '',
subjectList: this.subjectList,
disciplineId: '',
disciplineName: '',
ProfessionalClassList: [],
professionalClassId: '',
professionalClassName: '',
ProfessionalList: [],
professionalId: '',
professionalName: '',
personalFileId: ''
})
// if(!isLoadData){
// this.$nextTick(() => {
// document.body.scrollTop = document.querySelector('.content-box').scrollHeight
// document.documentElement.scrollTop = document.querySelector('.content-box').scrollHeight
// })
// }
},
addArch() {
let isEmpty = false
this.archivesList.forEach((n,k) => {
if(!n.personalCareerId) isEmpty = true
})
if(isEmpty) return this.$message.warning('请选择职业')
this.showArch = true
this.concatArch()
},
bindEmail() {
this.email = this.form.email
this.emailVisible = true
},
bindPhone() {
this.phone = this.form.phone
this.phoneVisible = true
},
bindPassword() {
this.passwordVisible = true
},
editPassword() {
if(!this.passwordForm.password) return this.$message.warning('请输入原密码')
if(!this.passwordForm.newPassword) return this.$message.warning('请输入新密码')
if(!this.passwordForm.reNewPassword) return this.$message.warning('请确认新密码')
if(this.passwordForm.newPassword.length < 6 || this.passwordForm.reNewPassword.length < 6) return this.$message.warning('请输入6位数以上的密码')
if(this.passwordForm.newPassword !== this.passwordForm.reNewPassword) return this.$message.warning('输入的新密码不一致,请重新确认')
if(this.passwordForm.password === this.passwordForm.newPassword) return this.$message.warning('原密码跟新密码不能一致')
let data = this.passwordForm
data.accountId = this.form.userId
this.$post(this.api.examinePassword,data).then(res => {
if(res.status == 200){
this.$message.success('更换成功')
this.passwordVisible = false
}else{
this.$message.error(res.message)
}
}).catch(err => {})
},
closePassword() {
this.passwordForm = {
password: '',
newPassword: '',
reNewPassword: ''
}
},
foldArch() {
this.showArch = !this.showArch
// this.$nextTick(() => {
// document.body.scrollTop = document.querySelector('.content-box').scrollHeight
// document.documentElement.scrollTop = document.querySelector('.content-box').scrollHeight
// })
},
// 获取学科类别
getSubject(){
this.$post(this.api.queryCourseDiscipline).then(res => {
this.subjectList = res.result
}).catch(res => {})
},
// 清除学科类别
clearClass(){
this.archivesForm.professionalClassId = '',
this.archivesForm.professionalId = ''
},
// 获取专业类
getProfessionalClass(val){
this.clearClass()
if(val){
let obj = {}
obj = this.subjectList.find((item)=>{
return item.disciplineId === val
});
this.archivesForm.disciplineName = obj.disciplineName
this.getProfessionalClassData(val)
}
},
clearItemClass(index){
this.archivesList[index].professionalClassId = ''
this.archivesList[index].professionalClassName = ''
this.archivesList[index].professionalId = ''
this.archivesList[index].professionalName = ''
// this.archivesList.map(e =>{
// if(e.disciplineId == item){
// e.professionalClassId = '',
// e.professionalClassName = '',
// e.professionalId = '',
// e.professionalName = ''
// }
// })
},
getItemProfessionalClass(item,index){
this.clearItemClass(index)
if(item){
let obj = {}
obj = this.subjectList.find(r =>{
return r.disciplineId === item
});
this.$post(this.api.queryCourseProfessionalClass,[item]).then(res => {
this.archivesList.map(e =>{
if(e.disciplineId == item){
e.ProfessionalClassList = res.result
e.disciplineName = obj.disciplineName
}
})
}).catch(res => {})
}
},
getProfessionalClassData(value){
this.$post(this.api.queryCourseProfessionalClass,[value]).then(res => {
this.ProfessionalClassList = res.result
}).catch(res => {})
},
// 清除专业类
clearProfess(){
this.archivesForm.professionalId = ''
},
// 获取专业
getProfessional(val){
this.clearProfess()
if(val){
let obj = {}
obj = this.ProfessionalClassList.find((item)=>{
return item.professionalClassId === val
})
this.archivesForm.professionalClassName = obj.professionalClassName
this.getProfessionalData(val)
}
},
clearItemProfess(index){
this.archivesList[index].professionalId = ''
this.archivesList[index].professionalName = ''
// this.archivesList.map(e =>{
// if(e.professionalClassId == item){
// e.professionalId = '',
// e.professionalName = ''
// }
// })
},
getItemProfessional(item,index){
this.clearItemProfess(index)
if(item){
this.$get(this.api.queryCourseProfessional,{ professionalClassId: item }).then(res => {
this.archivesList.map(e =>{
if(e.professionalClassId == item){
let obj = {}
obj = e.ProfessionalClassList.find(r =>{
return r.professionalClassId === item
})
e.ProfessionalList = res.result
e.professionalClassName = obj.professionalClassName
}
})
}).catch(res => {})
}
},
getProfessionalData(value){
this.$get(this.api.queryCourseProfessional,{professionalClassId: value}).then(res => {
this.ProfessionalList = res.result
}).catch(res => {})
},
// 获取专业名称
getStuGrade(val){
if(val){
let obj = {}
obj = this.ProfessionalList.find(r =>{
return r.professionalId === val;
})
this.archivesForm.professionalName = obj.professionalName
}
},
getItemStuGrade(item){
if(item){
this.archivesList.map(e =>{
if(e.professionalId == item){
let obj = {}
obj = e.ProfessionalList.find(r =>{
return r.professionalId === item;
})
e.professionalName = obj.professionalName
}
})
}
},
save() {
let isEmpty = false
// this.archivesList.forEach((n,k) => {
// if(!n.personalCareerId) isEmpty = true
// n.userId = this.form.userId
// })
// if(isEmpty) return this.$message.warning('请选择职业')
if(this.accountReapeat) return this.$message.warning('该账号已存在')
if(this.form.idNumber && !/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/.test(this.form.idNumber)) return this.$message.warning('请输入正确的证件号码')
let form = this.form
let personalFileList = []
this.archivesList.forEach((n,k) => {
n.personalCareerId && personalFileList.push({
disciplineId: n.disciplineId,
disciplineName: n.disciplineName,
personalCareerId: n.personalCareerId,
personalFileId: n.personalFileId,
professionalClassId: n.professionalClassId,
professionalClassName: n.professionalClassName,
professionalId: n.professionalId,
professionalName: n.professionalName,
provinceId: n.provinceId,
provinceName: n.provinceName,
schoolId: n.schoolId,
schoolName: n.schoolName,
userId: form.userId
})
})
let data = {
userId: form.userId,
userAccountList: [{
id: form.accountId,
account: form.account,
userId: form.userId,
}],
hrUserInfo: {
provinceId: form.provinceId,
cityId: form.cityId,
countries: form.countries,
dateBirth: form.dateBirth,
educationDegree: form.educationDegree,
idNumber: form.idNumber,
schoolId: form.schoolId,
sex: form.sex,
userId: form.userId,
userName: form.userName,
wechatId: form.wechatId
},
personalFileList,
}
this.$post(this.api.updatePersonCenter,data).then(res => {
this.$message.success('提交成功!')
}).catch(res => {})
},
emailCountdown(){
let count = 60
if(!this.emailTimer){
this.emailDisabled = true
this.emailTimer = setInterval(() => {
console.log('倒计时中')
if(count > 0){
count--
this.emailBtnText = `${count}秒后重试`
}else{
this.emailDisabled = false
clearInterval(this.emailTimer)
this.emailTimer = null
this.emailBtnText = `发送验证码`
}
},1000)
}
},
phoneCountdown(){
let count = 60
if(!this.phoneTimer){
this.phoneDisabled = true
this.phoneTimer = setInterval(() => {
console.log('倒计时中')
if(count > 0){
count--
this.phoneBtnText = `${count}秒后重试`
}else{
this.phoneDisabled = false
clearInterval(this.phoneTimer)
this.phoneTimer = null
this.phoneBtnText = `发送验证码`
}
},1000)
}
},
closeEmail(){
if(!this.emailDisabled){
this.emailCode = ''
}
},
sendEmailCode(){
if(!this.email) return this.$message.warning('请输入邮箱')
if(!/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(this.email)) return this.$message.warning('请输入正确的邮箱')
let data = {
userId: this.form.userId,
email: this.email,
types: 1
}
this.$post(this.api.sendPhoneOrEmailCode,data).then(res => {
if(res.message.opener){
this.emailCountdown()
this.emailOpener = res.message.opener
}else{
this.$message.error(res.message)
}
}).catch(res => {});
},
emailSubmit(){
if(!this.email) return this.$message.warning('请输入邮箱')
if(!/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(this.email)) return this.$message.warning('请输入正确的邮箱')
if(!this.emailCode) return this.$message.warning('请输入验证码')
let data = {
userId: this.form.userId,
email: this.email,
types: 1,
code: this.emailCode,
opener: this.emailOpener
}
this.$post(this.api.bindPhoneOrEmail,data).then(res => {
if(res.status == 200){
this.$message.success('绑定成功')
this.form.email = this.email
this.emailVisible = false
}
}).catch(res => {});
},
closePhone(){
if(!this.emailDisabled){
this.emailCode = ''
}
},
sendPhoneCode(){
if(!this.phone) return this.$message.warning('请输入手机号')
if(!/^1[3456789]\d{9}$/.test(this.phone)) return this.$message.warning('请输入正确的手机号')
this.$post(this.api.sendPhoneOrEmailCode,{
userId: this.form.userId,
phone: this.phone,
types: 2
}).then(res => {
if(res.message.opener){
this.phoneCountdown()
this.phoneOpener = res.message.opener
}else{
this.$message.error(res.message)
}
}).catch(res => {})
},
phoneSubmit(){
if(!this.phone) return this.$message.warning('请输入手机号')
if(!/^1[3456789]\d{9}$/.test(this.phone)) return this.$message.warning('请输入正确的手机号')
if(!this.phoneCode) return this.$message.warning('请输入验证码')
let data = {
userId: this.form.userId,
phone: this.phone,
types: 2,
code: this.phoneCode,
opener: this.phoneOpener
}
this.$post(this.api.bindPhoneOrEmail,data).then(res => {
if(res.status == 200){
this.$message.success('绑定成功')
this.form.phone = this.phone
this.phoneVisible = false
}
}).catch(res => {});
},
}
};
</script>
<style lang="scss" scoped>
.arrowTransform{
transition: 0.5s;
transform-origin: center;
transform: rotateZ(180deg);
}
.arrowTransformReturn{
transition: 0.5s;
transform-origin: center;
transform: rotateZ(0deg);
}
.wrap{
padding-top: 170px;
overflow: auto;
display:flex;
align-items: center;
flex-direction:column;
margin: -20px;
background: #f6f6f6 url(../../assets/img/person/bg.png) 0 0/100% 500px no-repeat;
box-sizing: border-box;
}
.header{
z-index: 2;
background-color: transparent;
}
.header /deep/.el-upload-list__item-name {
display: none;
}
.header /deep/.el-icon-upload-success{
display: none;
}
.header /deep/.el-upload-list__item-status-label{
display: none;
}
.header /deep/ .el-upload-list{
display: none;
}
/deep/.el-input__inner{
height: 32px !important;
}
/deep/.el-select .el-input .el-select__caret{
line-height: 32px;
}
input:focus {
outline: 0;
}
.openfile {
cursor: pointer;
}
.Headtop {
margin-top: 10px;
// width: 80px;
// height: 80px;
// background: url('../../assets/img/img.jpg');
// border-radius: 50%;
.head {
width: 34px;
height: 34px;
background: rgba(255, 255, 255, 1);
border-radius: 50%;
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
position: relative;
.eee {
height: 10px;
width: 16px;
background-color: rgba(255, 255, 255, 1);
margin-bottom: -10px;
position: absolute;
top: 8px;
z-index: 2;
}
.Semicircle {
width: 12px;
height: 12px;
border: 2px solid #9278ff;
border-radius: 50px;
margin-bottom: 10px;
position: absolute;
}
}
.body {
color: #9278ff;
width: 30px;
height: 20px;
border: 3px solid #f5f5f5;
border-radius: 100%;
margin-top: 5px;
margin-bottom: -10px;
}
.body::after {
content: '';
width: 40px;
height: 30px;
display: inline-block;
background-color: #9278ff;
margin-top: 8px;
margin-left: -6px;
}
}
.card {
width: 1000px;
margin-top: 10px;
padding: 60px 100px;
background: rgba(255, 255, 255, 1);
box-shadow: 0px 0px 21px 0px rgba(48, 115, 248, 0.1);
border-radius: 4px;
position: relative;
box-sizing: border-box;
.block-title{
span{
display: inline-flex;
align-items: center;
color: #444;
font-size: 18px;
img{
width: 20px;
margin-right: 5px;
}
}
}
.meta-title{
padding-left: 6px;
margin: 20px 0 10px 0;
line-height: 1;
border-left: 4px solid #9278ff;
span{
font-size: 16px;
color: #9278ff;
}
/deep/ .el-button{
padding: 0 0;
font-size: 16px;
color: #9278ff;
}
}
.el-icon-document {
color: #9278ff;
font-size: 30px;
}
.el-icon-collection {
color: #9278ff;
position: absolute;
left: 31px;
top: 31px;
font-size: 30px;
}
span {
color: #333333;
font-size: 20px;
}
.plus{
display: flex;
justify-content: space-between;
i{
font-size: 22px;
color: #21d749;
cursor: pointer;
}
}
.information {
.archives{
padding: 15px;
margin-bottom: 20px;
border: 1px dashed #c9c9c9;
border-radius: 8px;
}
.line {
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
.item{
display: inline-flex;
align-items: center;
margin-bottom: 20px;
span{
width: 90px;
margin-right: 15px;
text-align: right;
font-size: 15px;
color: #656565;
white-space: nowrap;
}
.username {
background:url('~@/assets/img/person/edit.png') no-repeat 10px center;
background-size: 16px 15px;
background-position: 98% 50%;
box-sizing: border-box;
}
.idnumber {
background:url('~@/assets/img/person/idcard.png') no-repeat 10px center;
background-size: 20px 16px;
background-position: 98% 50%;
box-sizing: border-box;
}
.school {
background: url('~@/assets/img/person/school.png') no-repeat;
background-size: 22px 17px;
background-position: 98% 50%;
box-sizing: border-box;
}
.weChat{
background: url('~@/assets/img/person/bind.png') no-repeat;
background-size: 19px 18px;
background-position: 98% 50%;
box-sizing: border-box;
}
input {
height: 36px;
width: 260px;
color: #727272;
border: 0;
border-bottom: 1px solid #b5b5b5;
outline: none;
padding-left: 15px;
}
.read{
width: 260px;
color: #727272;
}
.el-select,.btns{
width: 260px;
}
.btns{
display: inline-flex;
align-items: center;
border-bottom: 1px solid #b5b5b5;
padding: 5px 0;
}
.selects{
display: inline-flex;
align-items: center;
width: 260px;
.el-select{
width: 100px;
font-size: 12px;
&:first-child{
width: 82px;
}
}
}
}
/deep/.el-date-editor{
width: 260px;
}
/deep/.el-date-editor .el-input__prefix{
line-height: 32px;
}
/deep/.el-input__prefix,/deep/.el-input__suffix{
left: auto;
right: 0;
}
/deep/.el-input__inner {
color: #656565;
font-size: 14px;
border-radius: 0 !important;
border: 0px;
border-bottom: 1px solid #b5b5b5;
}
/deep/.el-input--prefix .el-input__inner{
padding-left: 15px;
}
/deep/.el-input__icon {
color: #9278ff;
&.el-icon-date{
font-size: 14px;
&:before{
content: "";
background: url('~@/assets/img/person/date.png') center center no-repeat;
position: absolute;
width: 20px;
height: 18px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
}
/deep/.el-icon-arrow-up:before {
content: "";
background: url('~@/assets/img/person/select.png') center center no-repeat;
position: absolute;
width: 12px;
height: 7px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
}
.fold{
margin-top: 20px;
text-align: center;
i{
font-size: 22px;
color: #8e8e8e;
cursor: pointer;
&:hover{
opacity: .8;
}
}
}
.sexRadio /deep/ .el-radio__input.is-checked .el-radio__inner{
border-color: #9278ff;
background: #9278ff;
}
.sexRadio /deep/ .el-radio__input.is-checked + .el-radio__label{
color: #9278ff;
}
.sexRadio /deep/ .el-radio__inner:hover{
border-color: #9278ff;
}
/deep/ input::-webkit-input-placeholder {
color: #c0c0c0;
}
/deep/ input::-moz-input-placeholder {
color: #c0c0c0;
}
/deep/ input::-ms-input-placeholder {
color: #c0c0c0;
}
}
</style>