379 lines
8.6 KiB
Vue
379 lines
8.6 KiB
Vue
<template>
|
|
<view class="page">
|
|
<view class="top">
|
|
<view class="header-photo">
|
|
<avatar :userName="userInfo.real_name" size="90"></avatar>
|
|
</view>
|
|
<view class="user-name">
|
|
{{userInfo.real_name}}
|
|
</view>
|
|
</view>
|
|
<view class="middle">
|
|
<view class="cu-item content">
|
|
<textarea v-model="userInfo.signature"
|
|
auto-height="true"
|
|
maxlength=2000
|
|
disabled="false"
|
|
></textarea>
|
|
</view>
|
|
<view class="other-info">
|
|
<view class="score" @tap="goPage('followList')">
|
|
关注:{{userOtherInfo.followNumber}}
|
|
</view>
|
|
<view class="score" @tap="goPage('fansList')">
|
|
粉丝:{{userOtherInfo.fansNumber}}
|
|
</view>
|
|
<view class="score">
|
|
积分:{{userInfo.integral}}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="bottom">
|
|
<view class="cu-list grid" :class="['col-' + gridCol,gridBorder?'':'no-border']">
|
|
<view class="cu-item"
|
|
v-for="(item,index) in cuIconList"
|
|
:key="index"
|
|
v-if="item.admin === 0"
|
|
@tap="goToPage(item)">
|
|
<view :class="['cuIcon-' + item.cuIcon,'text-' + item.color]">
|
|
<view class="cu-tag badge" v-if="item.badge > 0">
|
|
<block v-if="item.badge > 0">{{item.badge>99?'99+':item.badge}}</block>
|
|
</view>
|
|
</view>
|
|
<text>{{item.name}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import request from '@/util/request.js';
|
|
import { updateUserInfo } from "@/static/js/public.js";
|
|
import avatar from "@/pages/components/avatar/avatar.vue";
|
|
export default {
|
|
components: {
|
|
avatar
|
|
},
|
|
data() {
|
|
return {
|
|
gridCol: 3,
|
|
gridBorder: false,
|
|
cuIconList: [
|
|
{
|
|
cuIcon: 'favor',
|
|
color: 'orange',
|
|
name: '收藏',
|
|
admin: 0,
|
|
badge: 0,
|
|
code: 'collection'
|
|
},
|
|
{
|
|
cuIcon: 'list',
|
|
color: 'yellow',
|
|
name: '我的文章',
|
|
admin: 0,
|
|
badge: 0,
|
|
code: 'myArticle'
|
|
},
|
|
{
|
|
cuIcon: 'notice',
|
|
color: 'green',
|
|
name: '通知',
|
|
admin: 0,
|
|
badge: 0,
|
|
code: 'notice'
|
|
},
|
|
{
|
|
cuIcon: 'edit',
|
|
color: 'red',
|
|
name: '编辑信息',
|
|
admin: 0,
|
|
badge: 0,
|
|
code: 'personInfo'
|
|
},
|
|
{
|
|
cuIcon: 'newshot',
|
|
color: 'olive',
|
|
name: '文章管理',
|
|
admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 0 : 1,
|
|
badge: 0,
|
|
code: 'articleManagement'
|
|
},
|
|
{
|
|
cuIcon: 'peoplelist',
|
|
color: 'cyan',
|
|
name: '人员管理',
|
|
admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 0 : 1,
|
|
badge: 0,
|
|
code: 'peopleManagement'
|
|
},
|
|
{
|
|
cuIcon: 'friendadd',
|
|
color: 'mauve',
|
|
name: '注册管理',
|
|
admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 0 : 1,
|
|
badge: 0,
|
|
code: 'registerManagement'
|
|
},
|
|
{
|
|
cuIcon: 'comment',
|
|
color: 'brown',
|
|
name: '帮助答复',
|
|
admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 0 : 1,
|
|
badge: 0,
|
|
code: 'helpAnswer'
|
|
},
|
|
{
|
|
cuIcon: 'subscription',
|
|
color: 'black',
|
|
name: '群发消息',
|
|
admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 0 : 1,
|
|
badge: 0,
|
|
code: 'massHair'
|
|
},
|
|
{
|
|
cuIcon: 'settings',
|
|
color: 'purple',
|
|
name: '设置',
|
|
admin: 0,
|
|
badge: 0,
|
|
code: 'settings'
|
|
},
|
|
{
|
|
cuIcon: 'questionfill',
|
|
color: 'pink',
|
|
name: '帮助',
|
|
admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 1 : 0,
|
|
badge: 0,
|
|
code: 'help'
|
|
},
|
|
|
|
],
|
|
userInfo: {},
|
|
userOtherInfo: {},
|
|
//通知数量
|
|
noticeNumber: 0
|
|
}
|
|
},
|
|
/**
|
|
* 跳转通知页面
|
|
* @param {Object} e
|
|
*/
|
|
onNavigationBarButtonTap(e) {
|
|
uni.navigateTo({
|
|
url: '/pages/tabbar/my/notice/notice'
|
|
})
|
|
},
|
|
onShow() {
|
|
this.getUserInfo();
|
|
this.getMyPageNumber();
|
|
this.getNoticeData();
|
|
this.userInfo = uni.getStorageSync("userInfo");
|
|
let timesRun = 0;
|
|
let interval = setInterval(() => {
|
|
updateUserInfo();
|
|
timesRun += 1;
|
|
if(timesRun === 5){
|
|
clearInterval(interval);
|
|
}
|
|
}, 10000);
|
|
},
|
|
onLoad() {
|
|
|
|
},
|
|
onPullDownRefresh () {
|
|
this.getMyPageNumber();
|
|
this.getNoticeData();
|
|
this.getUserInfo();
|
|
},
|
|
mounted() {
|
|
},
|
|
methods: {
|
|
/**
|
|
* 获取通知
|
|
*/
|
|
getNoticeData() {
|
|
let _this = this;
|
|
request.post('/hs/getNoticeData',{
|
|
authorId: uni.getStorageSync("userInfo").user_id
|
|
}).then(res => {
|
|
this.noticeNumber = res.data.messageNoticeList.length + res.data.verifyNoticeList.length;
|
|
_this.cuIconList[2].badge = this.noticeNumber;
|
|
if(this.noticeNumber == 0) {
|
|
//隐藏
|
|
// #ifdef APP-PLUS
|
|
const pages = getCurrentPages();
|
|
const page = pages[pages.length - 1];
|
|
const currentWebview = page.$getAppWebview();
|
|
currentWebview.hideTitleNViewButtonRedDot({
|
|
index:0
|
|
});
|
|
// #endif
|
|
}else{
|
|
//显示
|
|
// #ifdef APP-PLUS
|
|
const pages = getCurrentPages();
|
|
const page = pages[pages.length - 1];
|
|
const currentWebview = page.$getAppWebview();
|
|
currentWebview.showTitleNViewButtonRedDot({
|
|
index:0
|
|
});
|
|
// #endif
|
|
}
|
|
console.log("通知",res);
|
|
},err => {
|
|
console.log("err",err);
|
|
})
|
|
},
|
|
/**
|
|
* 获取文章管理/帮助答复的未操作数字
|
|
*/
|
|
getMyPageNumber() {
|
|
let _this = this;
|
|
request.post("/admin/getMyPageNumber",{
|
|
}).then(res => {
|
|
console.log("获取文章管理/帮助答复的未操作数字",res);
|
|
_this.cuIconList[4].badge = res.data.articleManagementNumber;
|
|
_this.cuIconList[6].badge = res.data.registerManagementNumner;
|
|
_this.cuIconList[7].badge = res.data.helpAnswerNumber;
|
|
},err => {
|
|
console.log("err",err)
|
|
})
|
|
},
|
|
/**
|
|
* 跳转页面
|
|
* @param {Object} pageName 页面名称
|
|
*/
|
|
goPage(pageName) {
|
|
const FUNCTION_CODE = {
|
|
'followList': '/pages/tabbar/follow/follow-list',
|
|
'fansList': '/pages/tabbar/follow/fans-list',
|
|
}
|
|
uni.navigateTo({
|
|
url: `${FUNCTION_CODE[pageName]}`
|
|
})
|
|
},
|
|
/**
|
|
* 获取个人信息
|
|
*/
|
|
getUserInfo() {
|
|
request.post("/hs/getPersonalInfo",{
|
|
userId: uni.getStorageSync("userInfo").user_id,
|
|
releaseId: uni.getStorageSync("userInfo").user_id
|
|
}).then(res => {
|
|
uni.startPullDownRefresh();
|
|
console.log("个人信息",res);
|
|
this.userOtherInfo = res.data.personalInfo;
|
|
},err => {
|
|
console.log("err",err);
|
|
})
|
|
},
|
|
/**
|
|
* 跳转页面
|
|
* @param {Object} item
|
|
*/
|
|
goToPage(item) {
|
|
const FUNCTION_CODE = {
|
|
"collection": "/pages/tabbar/my/collection/collection",
|
|
"myArticle": "/pages/tabbar/my/my-article/my-article",
|
|
"personInfo": "/pages/tabbar/my/edit-info/edit-info",
|
|
"settings": "/pages/tabbar/my/settings/settings",
|
|
"help": "/pages/tabbar/my/help/help",
|
|
"articleManagement": "/pages/tabbar/my/article-management/article-management",
|
|
"peopleManagement": "/pages/tabbar/my/people-management/people-management",
|
|
"helpAnswer": "/pages/tabbar/my/help-answer/help-answer",
|
|
"registerManagement": "/pages/tabbar/my/register-management/register-management",
|
|
"notice": "/pages/tabbar/my/notice/notice",
|
|
"massHair": "/pages/tabbar/my/mass-hair/mass-hair"
|
|
};
|
|
uni.navigateTo({
|
|
url: `${FUNCTION_CODE[item.code]}`
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.max{
|
|
width: 180rpx;
|
|
height: 180rpx;
|
|
}
|
|
.signature{
|
|
font-size: 30rpx;
|
|
font-weight: bold;
|
|
padding-bottom: 10rpx;
|
|
}
|
|
.content {
|
|
background-color: #F1F1F1;
|
|
width: 100%;
|
|
padding: 20rpx;
|
|
border-radius: 10rpx;
|
|
}
|
|
textarea{
|
|
line-height: 1.5;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
.bottom{
|
|
display: flex;
|
|
flex-flow: column;
|
|
}
|
|
.grade .r, .grade .l{
|
|
font-size: 14rpx;
|
|
padding: 5rpx;
|
|
border-radius: 5rpx;
|
|
}
|
|
.grade .l{
|
|
background-color: #9DC75F;
|
|
}
|
|
.grade .r{
|
|
background-color: #2D5315;
|
|
}
|
|
.user-info view{
|
|
padding: 10rpx 10rpx;
|
|
}
|
|
.user-info{
|
|
color: #FFFFFF;
|
|
display: flex;
|
|
flex-flow: nowrap;
|
|
justify-content: center;
|
|
border: 1rpx solid #b0b0b0;
|
|
border-radius: 10rpx;
|
|
width: 70%;
|
|
font-size: 32rpx;
|
|
background-color: #ced8d8;
|
|
}
|
|
.header-photo{
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
.other-info{
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: 20rpx 40rpx;
|
|
color: #9a9a9a;
|
|
font-size: 30rpx;
|
|
}
|
|
.middle{
|
|
padding: 40rpx 20rpx 0;
|
|
}
|
|
.user-name{
|
|
padding-top: 20rpx;
|
|
text-align: center;
|
|
}
|
|
.top{
|
|
display: flex;
|
|
flex-flow: column;
|
|
justify-content: center;
|
|
}
|
|
.page{
|
|
padding: 20rpx;
|
|
display: flex;
|
|
flex-flow: column;
|
|
background-color: #FFFFFF;
|
|
}
|
|
</style>
|