146 lines
3.3 KiB
Vue
146 lines
3.3 KiB
Vue
|
|
<template>
|
|||
|
|
<view class="w-user-info">
|
|||
|
|
<avatar :name="userDetail.username" :src="userDetail.avatar" :size="70" :showName="false"></avatar>
|
|||
|
|
<view class="w-user-name">{{userDetail.username}}</view>
|
|||
|
|
<uni-tag class="w-user-role" type="warning" size="mini" :text="role" inverted v-for="(role, i) in (userDetail.roles || [])"
|
|||
|
|
:key="`r${i}`"></uni-tag>
|
|||
|
|
</view>
|
|||
|
|
<uni-list class="w-user-items">
|
|||
|
|
<uni-list-item thumb="/static/image/dept.png" clickable>
|
|||
|
|
<template v-slot:body>
|
|||
|
|
<text class="w-items-t">所属部门</text>
|
|||
|
|
</template>
|
|||
|
|
<template v-slot:footer>
|
|||
|
|
<text class="w-items-f">{{userDept}}</text>
|
|||
|
|
</template>
|
|||
|
|
</uni-list-item>
|
|||
|
|
<uni-list-item thumb="/static/image/entry.png" clickable>
|
|||
|
|
<template v-slot:body>
|
|||
|
|
<text class="w-items-t">入职时间</text>
|
|||
|
|
</template>
|
|||
|
|
<template v-slot:footer>
|
|||
|
|
<text class="w-items-f">{{userDetail.entryDate}}</text>
|
|||
|
|
</template>
|
|||
|
|
</uni-list-item>
|
|||
|
|
<!-- #ifdef APP-VUE -->
|
|||
|
|
<uni-list-item thumb="/static/image/download.png" clickable showArrow>
|
|||
|
|
<template v-slot:body>
|
|||
|
|
<text class="w-items-t">已下载的附件</text>
|
|||
|
|
</template>
|
|||
|
|
</uni-list-item>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
<uni-list-item thumb="/static/image/agent.png" clickable showArrow @click="editAgent">
|
|||
|
|
<template v-slot:body>
|
|||
|
|
<text class="w-items-t">设置代理人</text>
|
|||
|
|
</template>
|
|||
|
|
<template v-slot:footer>
|
|||
|
|
<text class="w-items-f">{{userAgentText}}</text>
|
|||
|
|
</template>
|
|||
|
|
</uni-list-item>
|
|||
|
|
</uni-list>
|
|||
|
|
<button class="w-user-logout" @click="logout" plain="true" type="warn">退出/切换 账号</button>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script setup>
|
|||
|
|
import Avatar from '@/components/Avatar.vue'
|
|||
|
|
import { getUserDetail } from '@/api/org.js'
|
|||
|
|
import { onShow } from "@dcloudio/uni-app";
|
|||
|
|
import { computed, onBeforeMount, ref } from "vue";
|
|||
|
|
|
|||
|
|
const userDetail = ref({})
|
|||
|
|
|
|||
|
|
//当前登录的用户
|
|||
|
|
const loginUser = uni.getStorageSync('loginUser')
|
|||
|
|
|
|||
|
|
const userDept = computed(() => {
|
|||
|
|
return (userDetail.value.depts || []).length === 0 ? '未设置部门' : userDetail.value.depts.join('、')
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
const userAgentText = computed(() => {
|
|||
|
|
const agent = userDetail.value.userAgent
|
|||
|
|
if (!agent) {
|
|||
|
|
return '未设置'
|
|||
|
|
} else {
|
|||
|
|
return `(${agent.user.name})${agent.effective ? '代理中':'代理未生效'}`
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
onShow(() => {
|
|||
|
|
getUserDept()
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
function getUserDept() {
|
|||
|
|
getUserDetail(loginUser.userId).then(rsp => {
|
|||
|
|
userDetail.value = rsp.data
|
|||
|
|
}).catch(err => {
|
|||
|
|
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function logout() {
|
|||
|
|
uni.clearStorage()
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: '/pages/login/login'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function editAgent() {
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: '/pages/my/UserAgent'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style lang="less" scoped>
|
|||
|
|
.w-user-info {
|
|||
|
|
font-size: 32rpx;
|
|||
|
|
padding: 64rpx 0 6rpx 0;
|
|||
|
|
display: flex;
|
|||
|
|
flex-direction: column;
|
|||
|
|
justify-content: center;
|
|||
|
|
align-items: center;
|
|||
|
|
background-color: white;
|
|||
|
|
|
|||
|
|
.uni-tag {
|
|||
|
|
font-weight: 400;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
.w-user-name {
|
|||
|
|
font-size: 35rpx;
|
|||
|
|
margin: 10rpx 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.w-user-role {
|
|||
|
|
margin: 16rpx 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.w-user-logout {
|
|||
|
|
width: 90%;
|
|||
|
|
margin-top: 48rpx;
|
|||
|
|
font-size: 30rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.w-user-items {
|
|||
|
|
margin-top: 16rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.w-items-t {
|
|||
|
|
padding: 16rpx 0;
|
|||
|
|
font-size: 32rpx;
|
|||
|
|
display: flex;
|
|||
|
|
flex: 1;
|
|||
|
|
color: #3b4144;
|
|||
|
|
flex-direction: column;
|
|||
|
|
justify-content: space-between;
|
|||
|
|
overflow: hidden;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.w-items-f {
|
|||
|
|
font-size: 29rpx;
|
|||
|
|
color: #797171;
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
}
|
|||
|
|
</style>
|