2024-06-29 16:59:43 +00:00
|
|
|
|
<script setup>
|
2024-06-30 09:54:50 +00:00
|
|
|
|
import {onMounted, ref} from 'vue';
|
2024-06-29 16:59:43 +00:00
|
|
|
|
import 'element-plus/dist/index.css';
|
2024-06-30 09:54:50 +00:00
|
|
|
|
import {useStore} from 'vuex';
|
2024-06-29 16:59:43 +00:00
|
|
|
|
|
2024-06-30 09:54:50 +00:00
|
|
|
|
const store = useStore();
|
2024-06-29 16:59:43 +00:00
|
|
|
|
|
2024-06-30 09:54:50 +00:00
|
|
|
|
const nickname = ref('');
|
|
|
|
|
|
const phoneNumber = ref('');
|
|
|
|
|
|
const email = ref('');
|
|
|
|
|
|
const department = ref('');
|
|
|
|
|
|
const role = ref('');
|
|
|
|
|
|
const createdAt = ref('');
|
|
|
|
|
|
|
|
|
|
|
|
onMounted(async () => {
|
|
|
|
|
|
const response = await store.dispatch('authentication/fetchUserProfile');
|
|
|
|
|
|
if (response.status === 200) {
|
|
|
|
|
|
const user = response.data;
|
|
|
|
|
|
nickname.value = user.nickname;
|
|
|
|
|
|
phoneNumber.value = user.phoneNumber;
|
|
|
|
|
|
email.value = user.email;
|
|
|
|
|
|
department.value = user.department;
|
|
|
|
|
|
role.value = user.role;
|
|
|
|
|
|
createdAt.value = user.createdAt;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
2024-06-29 16:59:43 +00:00
|
|
|
|
</script>
|
|
|
|
|
|
|
2024-06-30 09:54:50 +00:00
|
|
|
|
|
2024-06-29 16:59:43 +00:00
|
|
|
|
<template>
|
|
|
|
|
|
<div class="profile-container">
|
|
|
|
|
|
<div class="profile-box">
|
|
|
|
|
|
<h2>个人信息</h2>
|
|
|
|
|
|
<div class="profile-image">
|
|
|
|
|
|
<img src="@assets/avatar.jpg" alt="Profile Image"/>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="profile-info">
|
|
|
|
|
|
<div class="divider"></div>
|
|
|
|
|
|
<div class="info-item">
|
|
|
|
|
|
<span class="info-label">用户昵称:</span>
|
|
|
|
|
|
<span class="info-value">{{ nickname }}</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="divider"></div>
|
|
|
|
|
|
<div class="info-item">
|
|
|
|
|
|
<span class="info-label">手机号码:</span>
|
|
|
|
|
|
<span class="info-value">{{ phoneNumber }}</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="divider"></div>
|
|
|
|
|
|
<div class="info-item">
|
|
|
|
|
|
<span class="info-label">用户邮箱:</span>
|
|
|
|
|
|
<span class="info-value">{{ email }}</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="divider"></div>
|
|
|
|
|
|
<div class="info-item">
|
|
|
|
|
|
<span class="info-label">所属部门:</span>
|
|
|
|
|
|
<span class="info-value">{{ department }}</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="divider"></div>
|
|
|
|
|
|
<div class="info-item">
|
|
|
|
|
|
<span class="info-label">所属角色:</span>
|
|
|
|
|
|
<span class="info-value">{{ role }}</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="divider"></div>
|
|
|
|
|
|
<div class="info-item">
|
|
|
|
|
|
<span class="info-label">创建日期:</span>
|
|
|
|
|
|
<span class="info-value">{{ createdAt }}</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="divider"></div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
|
.profile-container {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
height: 100vh;
|
|
|
|
|
|
background: white;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.profile-box {
|
|
|
|
|
|
background: white;
|
|
|
|
|
|
padding: 2rem;
|
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
|
|
|
|
width: 30%;
|
|
|
|
|
|
max-width: 300px;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.profile-image img {
|
|
|
|
|
|
width: 100px;
|
|
|
|
|
|
height: 100px;
|
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
|
margin-bottom: 1rem;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.profile-info {
|
|
|
|
|
|
text-align: left;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.info-item {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
margin-bottom: 0.5rem;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.info-label {
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.info-value {
|
|
|
|
|
|
color: #555;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.divider {
|
|
|
|
|
|
height: 1px;
|
|
|
|
|
|
background: #e0e0e0;
|
|
|
|
|
|
margin: 0.5rem 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|