<template>
|
<view class="content">
|
<view class="profile-card">
|
<view class="avatar">{{ initials }}</view>
|
<view class="info">
|
<text class="name">{{ user.name }}</text>
|
<text class="meta">部门:{{ user.dept }}</text>
|
<text class="meta">角色:{{ user.role }}</text>
|
<text class="meta">电话:{{ user.phone }}</text>
|
</view>
|
</view>
|
<!-- <view class="entry-card" @click="goFunctions">
|
<view class="entry-icon">
|
<uni-icons type="list" color="#1E88E5" size="44"></uni-icons>
|
</view>
|
<view class="entry-text">
|
<text class="entry-title">我的功能</text>
|
<text class="entry-sub">待处理、上报、日程</text>
|
</view>
|
<uni-icons type="right" color="#999" size="28"></uni-icons>
|
</view> -->
|
|
<view class="entry-card" @click="goReport">
|
<view class="entry-icon">
|
<uni-icons type="compose" color="#26A69A" size="44"></uni-icons>
|
</view>
|
<view class="entry-text">
|
<text class="entry-title">项目上报</text>
|
<text class="entry-sub">提交项目进度及反馈</text>
|
</view>
|
<uni-icons type="right" color="#999" size="28"></uni-icons>
|
</view>
|
|
<view class="entry-card" @click="goSchedule">
|
<view class="entry-icon">
|
<uni-icons type="calendar" color="#FF9800" size="44"></uni-icons>
|
</view>
|
<view class="entry-text">
|
<text class="entry-title">我的日程</text>
|
<text class="entry-sub">查看及管理工作安排</text>
|
</view>
|
<uni-icons type="right" color="#999" size="28"></uni-icons>
|
</view>
|
|
<view class="entry-card" @click="out">
|
<view class="entry-icon">
|
<uni-icons type="list" color="#1E88E5" size="44"></uni-icons>
|
</view>
|
<view class="entry-text">
|
<text class="entry-title">退出登录</text>
|
<text class="entry-sub"></text>
|
</view>
|
<uni-icons type="right" color="#999" size="28"></uni-icons>
|
</view>
|
|
<view class="entry-card" @click="goSetting">
|
<view class="entry-icon">
|
<uni-icons type="list" color="#1E88E5" size="44"></uni-icons>
|
</view>
|
<view class="entry-text">
|
<text class="entry-title">系统设置</text>
|
<text class="entry-sub"></text>
|
</view>
|
<uni-icons type="right" color="#999" size="28"></uni-icons>
|
</view>
|
|
<BottomTabBar active="mine" />
|
</view>
|
</template>
|
|
<script>
|
import BottomTabBar from '@/components/BottomTabBar.vue'
|
import { loginOut } from '@/api/login/login.js';
|
export default {
|
name: 'Mine',
|
components: { BottomTabBar },
|
data() {
|
const storageUser = uni.getStorageSync('userInfo') || {}
|
console.log("打印")
|
console.log(storageUser);
|
const roles = Array.isArray(storageUser.roles) ? storageUser.roles : []
|
const roleZh = roles.map(r => ({ common: '普通角色', admin: '管理员', user: '业主' }[r] || r)).join(',') || '暂无'
|
const user = {
|
name: storageUser.user.userName || '暂无',
|
dept: storageUser.user.dept.deptName || '暂无',
|
role: roleZh,
|
phone: storageUser.user.phonenumber || '暂无'
|
}
|
|
|
return {
|
user
|
}
|
},
|
computed: {
|
initials() {
|
const n = this.user.name || ''
|
return n.length >= 2 ? n.slice(-2) : n
|
}
|
},
|
methods: {
|
async out() {
|
console.log('退出登录');
|
try {
|
const res = await loginOut();
|
if (res.statusCode === 200) {
|
uni.removeStorageSync('token');
|
uni.removeStorageSync('userInfo');
|
// 跳转登录页
|
uni.navigateTo({ url: '/subpackage/login/login' })
|
}
|
} catch (error) {
|
uni.showToast({ title: '退出登录失败', icon: 'none' })
|
}
|
|
},
|
goFunctions() {
|
uni.navigateTo({ url: '/subpackage/user/functions' })
|
},
|
goReport() {
|
uni.navigateTo({ url: '/subpackage/manager/report' })
|
},
|
goSchedule() {
|
uni.navigateTo({ url: '/subpackage/manager/schedule' })
|
},
|
goSetting() {
|
// uni.navigateTo({ url: '/subpackage/user/setting' })
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
.logout-btn {
|
margin-right: 20rpx;
|
width: 180rpx;
|
height: 80rpx;
|
line-height: 80rpx;
|
font-size: 32rpx;
|
color: #fff;
|
background-color: #FF5252;
|
border-radius: 40rpx;
|
box-shadow: 0 4rpx 10rpx rgba(255, 82, 82, 0.3);
|
}
|
|
.logout-btn:active {
|
transform: translateY(2rpx);
|
box-shadow: 0 2rpx 5rpx rgba(255, 82, 82, 0.3);
|
}
|
|
.content {
|
width: 100%;
|
min-height: 100vh;
|
background-color: #f5f7fa;
|
padding-bottom: 120rpx;
|
}
|
|
.navbar {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
padding: 0 30rpx;
|
height: 88rpx;
|
background: linear-gradient(90deg, #1E88E5, #26A69A);
|
color: #fff;
|
}
|
|
.navbar-title {
|
font-size: 36rpx;
|
font-weight: 600;
|
}
|
|
.profile-card {
|
display: flex;
|
background-color: #fff;
|
margin: 20rpx;
|
border-radius: 16rpx;
|
padding: 24rpx;
|
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
|
}
|
|
.avatar {
|
width: 120rpx;
|
height: 120rpx;
|
border-radius: 60rpx;
|
background: #1E88E5;
|
color: #fff;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-size: 36rpx;
|
font-weight: 700;
|
margin-right: 24rpx;
|
}
|
|
.info {
|
display: flex;
|
flex-direction: column;
|
justify-content: center;
|
}
|
|
.name {
|
font-size: 36rpx;
|
font-weight: 700;
|
color: #333;
|
margin-bottom: 8rpx;
|
}
|
|
.meta {
|
font-size: 26rpx;
|
color: #666;
|
margin-top: 6rpx;
|
}
|
|
.entry-card {
|
display: flex;
|
align-items: center;
|
background-color: #fff;
|
margin: 20rpx;
|
border-radius: 16rpx;
|
padding: 24rpx;
|
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
|
}
|
|
.entry-icon {
|
margin-right: 20rpx;
|
}
|
|
.entry-text {
|
flex: 1;
|
display: flex;
|
flex-direction: column;
|
}
|
|
.entry-title {
|
font-size: 32rpx;
|
font-weight: 600;
|
color: #333;
|
}
|
|
.entry-sub {
|
font-size: 24rpx;
|
color: #999;
|
margin-top: 6rpx;
|
}
|
</style>
|