This commit is contained in:
zhang zhuo 2025-12-20 17:52:13 +08:00
parent b7e3835023
commit df77d132d1
1 changed files with 44 additions and 29 deletions

View File

@ -13,21 +13,21 @@
<div class="item"> <div class="item">
<!--邮箱--> <!--邮箱-->
<el-icon size="16"> <el-icon size="16">
<component :is="'pi-icon-birthday'"/> <el-icon-message/>
</el-icon> </el-icon>
<el-text>{{ userInfo.email || "保密" }}</el-text> <el-text>{{ userInfo.email || "保密" }}</el-text>
</div> </div>
<div class="item"> <div class="item">
<!--电话--> <!--电话-->
<el-icon size="16"> <el-icon size="16">
<component :is="'pi-icon-birthday'"/> <el-icon-iphone/>
</el-icon> </el-icon>
<el-text>{{ userInfo.phone || "保密" }}</el-text> <el-text>{{ userInfo.phone || "保密" }}</el-text>
</div> </div>
<div class="item"> <div class="item">
<!--岗位--> <!--岗位-->
<el-icon size="15"> <el-icon size="15">
<component :is="'pi-icon-post'"/> <pi-icon-post/>
</el-icon> </el-icon>
<el-text>{{ userInfo.posts.map(item => item.post_name)?.join(" && ") }}</el-text> <el-text>{{ userInfo.posts.map(item => item.post_name)?.join(" && ") }}</el-text>
</div> </div>
@ -77,7 +77,8 @@
<el-tab-pane label="基本信息" name="0"> <el-tab-pane label="基本信息" name="0">
<el-form ref="infoRef" :model="form" style="max-width: 500px;" label-width="120px"> <el-form ref="infoRef" :model="form" style="max-width: 500px;" label-width="120px">
<el-form-item label="头像" prop="avatar"> <el-form-item label="头像" prop="avatar">
<pi-upload v-model="form.avatar" title="头像" :cropper="true" :compress="1" :aspectRatio="1/1"></pi-upload> <pi-upload v-model="form.avatar" title="头像" :cropper="true" :compress="1"
:aspectRatio="1/1"></pi-upload>
</el-form-item> </el-form-item>
<el-form-item label="昵称" prop="nickname"> <el-form-item label="昵称" prop="nickname">
<el-input v-model="form.nickname"></el-input> <el-input v-model="form.nickname"></el-input>
@ -91,12 +92,13 @@
<el-form-item label="性别" prop="sex"> <el-form-item label="性别" prop="sex">
<el-select v-model="form.sex"> <el-select v-model="form.sex">
<el-option label="保密" :value="0" disabled/> <el-option label="保密" :value="0" disabled/>
<el-option label="男" :value="1" /> <el-option label="男" :value="1"/>
<el-option label="女" :value="2" /> <el-option label="女" :value="2"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="生日" prop="birthday"> <el-form-item label="生日" prop="birthday">
<el-date-picker v-model="form.birthday" type="date" style="width: 100%;" value-format="YYYY-MM-DD"/> <el-date-picker v-model="form.birthday" type="date" style="width: 100%;"
value-format="YYYY-MM-DD"/>
</el-form-item> </el-form-item>
<el-form-item label="介绍" prop="bio"> <el-form-item label="介绍" prop="bio">
<el-input v-model="form.bio" type="textarea"></el-input> <el-input v-model="form.bio" type="textarea"></el-input>
@ -107,22 +109,28 @@
</el-form> </el-form>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="修改密码" name="1"> <el-tab-pane label="修改密码" name="1">
<el-alert title="密码更新成功后,您将被重定向到登录页面,您可以使用新密码重新登录。" type="info" show-icon style="margin-bottom: 15px;"/> <el-alert title="密码更新成功后,您将被重定向到登录页面,您可以使用新密码重新登录。"
<el-form ref="passRef" :model="form2" :rules="rules" label-width="120px" style="max-width: 500px;"> type="info" show-icon style="margin-bottom: 15px;"/>
<el-form ref="passRef" :model="form2" :rules="rules" label-width="120px"
style="max-width: 500px;">
<el-form-item label="当前密码" prop="old_password"> <el-form-item label="当前密码" prop="old_password">
<el-input v-model="form2.old_password" type="password" show-password placeholder="请输入当前密码"></el-input> <el-input v-model="form2.old_password" type="password" show-password
placeholder="请输入当前密码"></el-input>
<div class="el-form-item-msg">必须提供当前登录用户密码才能进行更改</div> <div class="el-form-item-msg">必须提供当前登录用户密码才能进行更改</div>
</el-form-item> </el-form-item>
<el-form-item label="新密码" prop="new_password"> <el-form-item label="新密码" prop="new_password">
<el-input v-model="form2.new_password" type="password" show-password placeholder="请输入新密码"></el-input> <el-input v-model="form2.new_password" type="password" show-password
placeholder="请输入新密码"></el-input>
<pi-password-strength v-model="form2.new_password"></pi-password-strength> <pi-password-strength v-model="form2.new_password"></pi-password-strength>
<div class="el-form-item-msg">请输入包含英文数字的6位以上密码</div> <div class="el-form-item-msg">请输入包含英文数字的6位以上密码</div>
</el-form-item> </el-form-item>
<el-form-item label="确认新密码" prop="confirm_password"> <el-form-item label="确认新密码" prop="confirm_password">
<el-input v-model="form2.confirm_password" type="password" show-password placeholder="请再次输入新密码"></el-input> <el-input v-model="form2.confirm_password" type="password" show-password
placeholder="请再次输入新密码"></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button :loading="isSaveing" type="primary" @click="savePass">保存密码</el-button> <el-button :loading="isSaveing" type="primary" @click="savePass">保存密码
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-tab-pane> </el-tab-pane>
@ -132,13 +140,13 @@
<el-table-column label="操作" prop="title"></el-table-column> <el-table-column label="操作" prop="title"></el-table-column>
<el-table-column label="状态" prop="code"> <el-table-column label="状态" prop="code">
<template #default="scope"> <template #default="scope">
{{scope.row.code == 0 ? '成功' : '失败'}} {{ scope.row.code == 0 ? '成功' : '失败' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="IP" prop="ip"></el-table-column> <el-table-column label="IP" prop="ip"></el-table-column>
<el-table-column label="UA" prop="ua"> <el-table-column label="UA" prop="ua">
<template #default="scope"> <template #default="scope">
{{tools.getBrowser(scope.row.ua)}} {{ tools.getBrowser(scope.row.ua) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="时间" prop="create_time"></el-table-column> <el-table-column label="时间" prop="create_time"></el-table-column>
@ -180,29 +188,33 @@ const form2 = ref({
}) })
const rules = ref({ const rules = ref({
old_password: [ old_password: [
{ required: true, message: '请输入当前密码'} {required: true, message: '请输入当前密码'}
], ],
new_password: [ new_password: [
{ required: true, message: '请输入新密码'}, {required: true, message: '请输入新密码'},
{ min: 6, max: 30, message: '密码长度在6-30位之间' }, {min: 6, max: 30, message: '密码长度在6-30位之间'},
{validator: (rule, value, callback) => { {
if(value === form2.value.old_password) { validator: (rule, value, callback) => {
if (value === form2.value.old_password) {
callback(new Error('新旧密码不能一致')); callback(new Error('新旧密码不能一致'));
} else { } else {
callback(); callback();
} }
}} }
}
], ],
confirm_password: [ confirm_password: [
{ required: true, message: '请再次输入新密码'}, {required: true, message: '请再次输入新密码'},
{ min: 6, max: 30, message: '密码长度在6-30位之间' }, {min: 6, max: 30, message: '密码长度在6-30位之间'},
{validator: (rule, value, callback) => { {
validator: (rule, value, callback) => {
if (value !== form2.value.new_password) { if (value !== form2.value.new_password) {
callback(new Error('两次输入密码不一致')); callback(new Error('两次输入密码不一致'));
} else { } else {
callback(); callback();
} }
}} }
}
] ]
}) })
@ -213,9 +225,9 @@ onMounted(() => {
const sex = computed(() => { const sex = computed(() => {
if (userInfo.value.sex == 1) { if (userInfo.value.sex == 1) {
return '男' return '男'
}else if (userInfo.value.sex == 2) { } else if (userInfo.value.sex == 2) {
return '女' return '女'
}else { } else {
return '保密' return '保密'
} }
}) })
@ -263,8 +275,11 @@ async function saveInfo() {
} }
async function savePass() { async function savePass() {
const validate = await passRef.value.validate().catch(() => {}); const validate = await passRef.value.validate().catch(() => {
if(!validate){ return false } });
if (!validate) {
return false
}
const res = await api.auth.savePass(form2.value) const res = await api.auth.savePass(form2.value)
proxy.$message.success(res.msg) proxy.$message.success(res.msg)
} }