<route lang="yaml"> name: personalSetting meta: title: 个人设置 cache: personal-edit.password </route> <script lang="ts" setup name="PersonalSetting"> import type { UploadProps } from 'element-plus' import { ElMessage } from 'element-plus' const router = useRouter() const form = ref({ headimg: '', mobile: '', name: '', qq: '', wechat: '', }) const handleSuccess: UploadProps['onSuccess'] = (res) => { if (res.error === '') { form.value.headimg = res.data.path } else { ElMessage.warning(res.error) } } const editPassword = () => { router.push({ name: 'personalEditPassword', }) } </script> <template> <div> <page-main> <el-tabs tab-position="left" style="height: 600px;"> <el-tab-pane label="基本设置" class="basic"> <h2>基本设置</h2> <el-row :gutter="20"> <el-col :span="16"> <el-form ref="formRef" :model="form" label-width="120px" label-suffix=":"> <el-form-item label="名 称"> <el-input v-model="form.name" placeholder="请输入你的名称" /> </el-form-item> <el-form-item label="手机号"> <el-input v-model="form.mobile" placeholder="请输入你的手机号" /> </el-form-item> <el-form-item label="QQ 号"> <el-input v-model="form.qq" placeholder="请输入你的 QQ 号" /> </el-form-item> <el-form-item label="微信号"> <el-input v-model="form.wechat" placeholder="请输入你的微信号" /> </el-form-item> <el-form-item> <el-button type="primary"> 保存 </el-button> </el-form-item> </el-form> </el-col> <el-col :span="8"> <image-upload v-model:url="form.headimg" action="http://scrm.1daas.com/api/upload/upload" name="image" :data="{ token: 'TKD628431923530324' }" notip class="headimg-upload" @on-success="handleSuccess" /> </el-col> </el-row> </el-tab-pane> <el-tab-pane label="安全设置" class="security"> <h2>安全设置</h2> <div class="setting-list"> <div class="item"> <div class="content"> <div class="title"> 账户密码 </div> <div class="desc"> 当前密码强度:强 </div> </div> <div class="action"> <el-button type="primary" text @click="editPassword"> 修改 </el-button> </div> </div> <div class="item"> <div class="content"> <div class="title"> 密保手机 </div> <div class="desc"> 已绑定手机:187****3441 </div> </div> <div class="action"> <el-button type="primary" text> 修改 </el-button> </div> </div> <div class="item"> <div class="content"> <div class="title"> 备用邮箱 </div> <div class="desc"> 当前未绑定备用邮箱 </div> </div> <div class="action"> <el-button type="primary" text> 绑定 </el-button> </div> </div> </div> </el-tab-pane> </el-tabs> </page-main> </div> </template> <style lang="scss" scoped> :deep(.el-tabs) { .el-tabs__header .el-tabs__nav { .el-tabs__active-bar { z-index: 0; width: 100%; background-color: var(--el-color-primary-light-9); border-right: 2px solid var(--el-color-primary); transition: transform 0.3s, background-color 0.3s, var(--el-transition-border); } .el-tabs__item { text-align: left; padding-right: 100px; } } .el-tab-pane { padding: 0 20px 0 30px; } } h2 { margin: 0; margin-bottom: 30px; font-weight: normal; } .basic { :deep(.headimg-upload) { text-align: center; .el-upload-dragger { border-radius: 50%; } } } .security { .setting-list { .item { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--el-border-color-lighter); transition: var(--el-transition-border); .content { .title { margin-bottom: 5px; color: var(--el-text-color-primary); transition: var(--el-transition-color); } .desc { font-size: 14px; color: var(--el-text-color-secondary); transition: var(--el-transition-color); } } &:last-child { border-bottom: 0; } } } } </style>