<template>
|
<ElDrawer
|
:model-value="visible"
|
title="用户详情"
|
size="520px"
|
@update:model-value="handleVisibleChange"
|
>
|
<ElSkeleton :loading="loading" animated :rows="10">
|
<ElDescriptions :column="1" border>
|
<ElDescriptionsItem label="用户名">{{ displayData.username || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="昵称">{{ displayData.nickname || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="部门">{{ displayData.deptLabel || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="角色">{{ displayData.roleNames || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="状态">{{ statusLabel }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="手机号">{{ displayData.phone || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="邮箱">{{ displayData.email || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="真实姓名">{{ displayData.realName || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="身份证号">{{ displayData.idCard || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="工号">{{ displayData.code || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="性别">{{ sexLabel }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="创建时间">{{ displayData.createTimeText || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="更新时间">{{ displayData.updateTimeText || '--' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="备注">{{ displayData.memo || '--' }}</ElDescriptionsItem>
|
</ElDescriptions>
|
</ElSkeleton>
|
</ElDrawer>
|
</template>
|
|
<script setup>
|
import { getUserStatusMeta, normalizeUserListRow } from '../userPage.helpers'
|
|
const props = defineProps({
|
visible: { required: false, default: false },
|
loading: { required: false, default: false },
|
userData: { required: false, default: () => ({}) }
|
})
|
|
const emit = defineEmits(['update:visible'])
|
|
const displayData = computed(() => normalizeUserListRow(props.userData))
|
const statusLabel = computed(() => getUserStatusMeta(displayData.value.statusBool ?? displayData.value.status).text)
|
const sexLabel = computed(() => {
|
switch (displayData.value.sex) {
|
case 1:
|
return '男'
|
case 2:
|
return '女'
|
default:
|
return '未知'
|
}
|
})
|
|
const handleVisibleChange = (visible) => {
|
emit('update:visible', visible)
|
}
|
</script>
|