|
|
|
<template>
|
|
|
|
<!-- 个人中心 -->
|
|
|
|
<div class="wrap">
|
|
|
|
<!-- 头像部分 -->
|
|
|
|
<div class="header">
|
|
|
|
<el-avatar :size="80" :src="this.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.uploadUserAvatars"
|
|
|
|
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" @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="personalInformation.userName" />
|
|
|
|
<!-- <label for="username">
|
|
|
|
<i class="el-icon-edit"></i>
|
|
|
|
</label> -->
|
|
|
|
</div>
|
|
|
|
<div class="item">
|
|
|
|
<span>所在国家</span>
|
|
|
|
<el-select
|
|
|
|
v-model="personalInformation.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="personalInformation.sex" :label="1">男</el-radio>
|
|
|
|
<el-radio v-model="personalInformation.sex" :label="2">女</el-radio>
|
|
|
|
</div>
|
|
|
|
<!-- <el-select
|
|
|
|
v-model="personalInformation.sex"
|
|
|
|
placeholder
|
|
|
|
>
|
|
|
|
<el-option
|
|
|
|
v-for="item in sexList"
|
|
|
|
:key="item.value"
|
|
|
|
:label="item.name"
|
|
|
|
:value="item.value"
|
|
|
|
></el-option>
|
|
|
|
</el-select> -->
|
|
|
|
</div>
|
|
|
|
<div class="item">
|
|
|
|
<span>所在地</span>
|
|
|
|
<div class="selects">
|
|
|
|
<el-select
|
|
|
|
v-model="personalInformation.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="personalInformation.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="personalInformation.cityId"
|
|
|
|
placeholder
|
|
|
|
:disabled="personalInformation.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="personalInformation.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="personalInformation.idNumber" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="line">
|
|
|
|
<div class="item">
|
|
|
|
<span>教育程度</span>
|
|
|
|
<el-select
|
|
|
|
v-model="personalInformation.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>
|
|
|
|
<input id="schoolName" class="school" disabled placeholder="所在学校" type="text"
|
|
|
|
v-model="personalInformation.schoolName" />
|
|
|
|
</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="personalInformation.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/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="personalInformation.account"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<div class="item">
|
|
|
|
<span>手机号</span>
|
|
|
|
<div class="btns flex-between">
|
|
|
|
<span>{{ personalInformation.phone }}</span>
|
|
|
|
<el-button v-if="personalInformation.phone" type="primary" size="small" @click="bindPhone">
|
|
|
|
更换
|
|
|
|
</el-button>
|
|
|
|
<el-button v-else type="primary" size="small" @click="bindPhone">绑定</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="line">
|
|
|
|
<div class="item">
|
|
|
|
<span>邮箱</span>
|
|
|
|
<div class="btns flex-between">
|
|
|
|
<span>{{ personalInformation.email }}</span>
|
|
|
|
<el-button v-if="personalInformation.email" type="primary" size="small" @click="bindEmail">
|
|
|
|
更换
|
|
|
|
</el-button>
|
|
|
|
<el-button v-else type="primary" size="small" @click="bindEmail">绑定</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- <div class="item">
|
|
|
|
<span>微信</span>
|
|
|
|
<input id="weChat" class="weChat" disabled placeholder="微信" type="text" v-model="personalInformation.weChatID"/>
|
|
|
|
</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 class="item"></div> -->
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<el-dialog
|
|
|
|
:title="personalInformation.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="personalInformation.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>
|
|
|
|
import Setting from "@/setting";
|
|
|
|
import util from "@/libs/util";
|
|
|
|
import { mapState, mapActions } from "vuex";
|
|
|
|
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
token: util.local.get(Setting.tokenKey),
|
|
|
|
personalInformation: {
|
|
|
|
userName: "",
|
|
|
|
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: [],
|
|
|
|
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: "", //专业名称
|
|
|
|
userId: this.userId
|
|
|
|
},
|
|
|
|
email: "",
|
|
|
|
emailBtnText: "发送验证码",
|
|
|
|
emailCode: "",
|
|
|
|
emailDisabled: false,
|
|
|
|
emailTimer: null,
|
|
|
|
phone: "",
|
|
|
|
phoneBtnText: "发送验证码",
|
|
|
|
phoneCode: "",
|
|
|
|
phoneDisabled: false,
|
|
|
|
phoneTimer: null,
|
|
|
|
emailOpener: "",
|
|
|
|
phoneOpener: "",
|
|
|
|
originAccount: "",
|
|
|
|
accountReapeat: false
|
|
|
|
};
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
...mapState("user", [
|
|
|
|
"userId", "avatar"
|
|
|
|
])
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
this.getdata();
|
|
|
|
this.getProvince();
|
|
|
|
this.getSchoolData();
|
|
|
|
this.getSubject();
|
|
|
|
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
...mapActions("user", [
|
|
|
|
"setAvatar", "setUserName"
|
|
|
|
]),
|
|
|
|
getProvince() {
|
|
|
|
this.$get(this.api.queryProvince).then(res => {
|
|
|
|
this.provinceList = res.list;
|
|
|
|
}).catch(res => {
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// 获取城市
|
|
|
|
getCity(id, type, index) {
|
|
|
|
if (type == 1) {
|
|
|
|
if (this.personalInformation.provinceId) {
|
|
|
|
this.personalInformation.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.personalInformation.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 => {
|
|
|
|
});
|
|
|
|
},
|
|
|
|
//取得头像地址
|
|
|
|
getRes(res) {
|
|
|
|
this.setAvatar(res.message);
|
|
|
|
},
|
|
|
|
uploadHeadImg: function() {
|
|
|
|
this.$el.querySelector(".hiddenInput").click();
|
|
|
|
},
|
|
|
|
async accountChange() {
|
|
|
|
if (this.originAccount != this.personalInformation.account) {
|
|
|
|
let res = await this.$get(this.api.queryAccountIsExist, {
|
|
|
|
account: this.personalInformation.account,
|
|
|
|
schoolId: this.personalInformation.schoolId
|
|
|
|
});
|
|
|
|
if (res.message.user.length) {
|
|
|
|
util.warningMsg("该账号已存在");
|
|
|
|
this.accountReapeat = true;
|
|
|
|
} else {
|
|
|
|
this.accountReapeat = false;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
this.accountReapeat = false;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
getdata() {
|
|
|
|
this.$get(this.api.queryUserInfoDetails).then(res => {
|
|
|
|
let userInfo = res.result.hrUserInfo;
|
|
|
|
let schoolId = userInfo.schoolId;
|
|
|
|
this.personalInformation = Object.assign(userInfo, res.result.userAccountList[0]);
|
|
|
|
this.personalInformation.schoolId = schoolId;
|
|
|
|
this.personalInformation.accountId = userInfo.id;
|
|
|
|
this.originAccount = this.personalInformation.account;
|
|
|
|
this.archivesList = res.result.personalFileList;
|
|
|
|
if (userInfo.userAvatars) this.avatar = userInfo.userAvatars;
|
|
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
if (this.personalInformation.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.$get(this.api.queryCourseProfessionalClass, { disciplineId: e.disciplineId }).then(res => {
|
|
|
|
this.$set(e, "ProfessionalClassList", res.list);
|
|
|
|
}).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.list);
|
|
|
|
}).catch(res => {
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
this.$set(e, "ProfessionalList", []);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
this.concatArch(1);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
})
|
|
|
|
.catch(err => {
|
|
|
|
console.log(err);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
concatArch(isLoadData) {
|
|
|
|
this.archivesList = this.archivesList.concat({
|
|
|
|
isNew: true,
|
|
|
|
personalCareerId: "", //职业
|
|
|
|
schoolId: "", //院校
|
|
|
|
schoolName: "", //院校名称
|
|
|
|
subjectList: this.subjectList, //专业学科
|
|
|
|
disciplineId: "", //专业学科
|
|
|
|
disciplineName: "", //专业学科名称
|
|
|
|
ProfessionalClassList: [], //专业类
|
|
|
|
professionalClassId: "", //专业类
|
|
|
|
professionalClassName: "", //专业类名称
|
|
|
|
ProfessionalList: [], //专业
|
|
|
|
professionalId: "", //专业
|
|
|
|
professionalName: "", //专业名称
|
|
|
|
userId: this.userId,
|
|
|
|
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 util.warningMsg("请选择职业");
|
|
|
|
this.showArch = true;
|
|
|
|
this.concatArch();
|
|
|
|
},
|
|
|
|
bindEmail() {
|
|
|
|
this.email = this.personalInformation.email;
|
|
|
|
this.emailVisible = true;
|
|
|
|
},
|
|
|
|
bindPhone() {
|
|
|
|
this.phone = this.personalInformation.phone;
|
|
|
|
this.phoneVisible = true;
|
|
|
|
},
|
|
|
|
bindPassword() {
|
|
|
|
this.passwordVisible = true;
|
|
|
|
},
|
|
|
|
editPassword() {
|
|
|
|
if (!this.passwordForm.password) return util.warningMsg("请输入原密码");
|
|
|
|
if (!this.passwordForm.newPassword) return util.warningMsg("请输入新密码");
|
|
|
|
if (!this.passwordForm.reNewPassword) return util.warningMsg("请确认新密码");
|
|
|
|
if (this.passwordForm.newPassword.length < 6 || this.passwordForm.reNewPassword.length < 6) return util.warningMsg("请输入6位数以上的密码");
|
|
|
|
if (this.passwordForm.newPassword !== this.passwordForm.reNewPassword) return util.warningMsg("输入的新密码不一致,请重新确认");
|
|
|
|
if (this.passwordForm.password === this.passwordForm.newPassword) return util.warningMsg("原密码跟新密码不能一致");
|
|
|
|
|
|
|
|
let data = this.passwordForm;
|
|
|
|
data.userid = this.userId;
|
|
|
|
this.$post(this.api.examinePassword, data)
|
|
|
|
.then(res => {
|
|
|
|
util.successMsg("更换成功");
|
|
|
|
this.passwordVisible = false;
|
|
|
|
})
|
|
|
|
.catch(err => {
|
|
|
|
console.log(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.$get(this.api.queryCourseDiscipline).then(res => {
|
|
|
|
this.subjectList = res.list;
|
|
|
|
}).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.$get(this.api.queryCourseProfessionalClass, { disciplineId: item }).then(res => {
|
|
|
|
this.archivesList.map(e => {
|
|
|
|
if (e.disciplineId == item) {
|
|
|
|
e.ProfessionalClassList = res.list;
|
|
|
|
e.disciplineName = obj.disciplineName;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}).catch(res => {
|
|
|
|
});
|
|
|
|
}
|
|
|
|
},
|
|
|
|
getProfessionalClassData(value) {
|
|
|
|
this.$get(this.api.queryCourseProfessionalClass, { disciplineId: value }).then(res => {
|
|
|
|
this.ProfessionalClassList = res.list;
|
|
|
|
}).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.list;
|
|
|
|
e.professionalClassName = obj.professionalClassName;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}).catch(res => {
|
|
|
|
});
|
|
|
|
}
|
|
|
|
},
|
|
|
|
getProfessionalData(value) {
|
|
|
|
this.$get(this.api.queryCourseProfessional, { professionalClassId: value }).then(res => {
|
|
|
|
this.ProfessionalList = res.list;
|
|
|
|
}).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.userId;
|
|
|
|
// });
|
|
|
|
// if (isEmpty) return util.warningMsg("请选择职业");
|
|
|
|
// if (this.accountReapeat) return util.warningMsg("该账号已存在");
|
|
|
|
if (this.personalInformation.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.personalInformation.idNumber)) return util.warningMsg("请输入正确的证件号码");
|
|
|
|
let form = this.personalInformation;
|
|
|
|
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.setUserName(form.userName);
|
|
|
|
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 util.warningMsg("请输入邮箱");
|
|
|
|
if (!/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(this.email)) return util.warningMsg("请输入正确的邮箱");
|
|
|
|
let data = {
|
|
|
|
userId: this.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{
|
|
|
|
util.errorMsg(res.message);
|
|
|
|
}
|
|
|
|
}).catch(res => {
|
|
|
|
});
|
|
|
|
},
|
|
|
|
emailSubmit() {
|
|
|
|
if (!this.email) return util.warningMsg("请输入邮箱");
|
|
|
|
if (!/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(this.email)) return util.warningMsg("请输入正确的邮箱");
|
|
|
|
if (!this.emailCode) return util.warningMsg("请输入验证码");
|
|
|
|
let data = {
|
|
|
|
userId: this.userId,
|
|
|
|
email: this.email,
|
|
|
|
types: 1,
|
|
|
|
code: this.emailCode,
|
|
|
|
opener: this.emailOpener
|
|
|
|
};
|
|
|
|
this.$put(this.api.bindPhoneOrEmail, data).then(res => {
|
|
|
|
util.successMsg("绑定成功");
|
|
|
|
this.personalInformation.email = this.email;
|
|
|
|
this.emailVisible = false;
|
|
|
|
}).catch(res => {
|
|
|
|
});
|
|
|
|
},
|
|
|
|
closePhone() {
|
|
|
|
if (!this.emailDisabled) {
|
|
|
|
this.emailCode = "";
|
|
|
|
}
|
|
|
|
},
|
|
|
|
sendPhoneCode() {
|
|
|
|
if (!this.phone) return util.warningMsg("请输入手机号");
|
|
|
|
if (!/^1[3456789]\d{9}$/.test(this.phone)) return util.warningMsg("请输入正确的手机号");
|
|
|
|
let data = {
|
|
|
|
userId: this.userId,
|
|
|
|
phone: this.phone,
|
|
|
|
types: 2
|
|
|
|
};
|
|
|
|
this.$post(this.api.sendPhoneOrEmailCode, data).then(res => {
|
|
|
|
if(res.message.opener){
|
|
|
|
this.phoneCountdown();
|
|
|
|
this.phoneOpener = res.message.opener;
|
|
|
|
} else{
|
|
|
|
util.errorMsg(res.message);
|
|
|
|
}
|
|
|
|
}).catch(res => {
|
|
|
|
});
|
|
|
|
},
|
|
|
|
phoneSubmit() {
|
|
|
|
if (!this.phone) return util.warningMsg("请输入手机号");
|
|
|
|
if (!/^1[3456789]\d{9}$/.test(this.phone)) return util.warningMsg("请输入正确的手机号");
|
|
|
|
if (!this.phoneCode) return util.warningMsg("请输入验证码");
|
|
|
|
let data = {
|
|
|
|
userId: this.userId,
|
|
|
|
phone: this.phone,
|
|
|
|
types: 2,
|
|
|
|
code: this.phoneCode,
|
|
|
|
opener: this.phoneOpener
|
|
|
|
};
|
|
|
|
this.$put(this.api.bindPhoneOrEmail, data).then(res => {
|
|
|
|
util.successMsg("绑定成功");
|
|
|
|
this.personalInformation.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 {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
flex-direction: column;
|
|
|
|
background: #f6f6f6 url(../../../assets/img/person/bg.png) 0 0/100% 500px no-repeat;
|
|
|
|
}
|
|
|
|
|
|
|
|
.header {
|
|
|
|
z-index: 2;
|
|
|
|
padding-top: 170px;
|
|
|
|
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;
|
|
|
|
|
|
|
|
.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/edit.png') no-repeat 10px center;
|
|
|
|
background-size: 16px 15px;
|
|
|
|
background-position: 98% 50%;
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
.idnumber {
|
|
|
|
background: url('~@/assets/img/idcard.png') no-repeat 10px center;
|
|
|
|
background-size: 20px 16px;
|
|
|
|
background-position: 98% 50%;
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
.school {
|
|
|
|
background: url('~@/assets/img/school.png') no-repeat;
|
|
|
|
background-size: 22px 17px;
|
|
|
|
background-position: 98% 50%;
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
.weChat {
|
|
|
|
background: url('~@/assets/img/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;
|
|
|
|
}
|
|
|
|
|
|
|
|
.flex-end-content {
|
|
|
|
justify-content: flex-end;
|
|
|
|
}
|
|
|
|
|
|
|
|
.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/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/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 {
|
|
|
|
font-size: 14px;
|
|
|
|
color: #c0c0c0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/deep/ input::-moz-input-placeholder {
|
|
|
|
font-size: 14px;
|
|
|
|
color: #c0c0c0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/deep/ input::-ms-input-placeholder {
|
|
|
|
font-size: 14px;
|
|
|
|
color: #c0c0c0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|