You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

324 lines
9.1 KiB

<template>
<view>
<view class="mine-header">
<view class=" flex im-space-between im-align-items-center" style="margin-bottom: 1.5625rem;">
<!-- bg-white mb-10 padding -->
<view class="flex justify-start" @tap="editInfo()">
<!-- bg-white -->
<!-- #ifdef APP-PLUS -->
<block v-for="(items,indexs) in imglist" :key="indexs" v-if="network_log == 'none'">
<view class='cu-avatar lg mr-15' v-if="loginStore.userInfo.imgname === items.name" :class="appSetting.circleAvatar?'round':'radius'" :style="[{backgroundImage:'url('+items.path+')'}]"></view>
</block>
<view v-else class='cu-avatar lg mr-15' :class="appSetting.circleAvatar?'round':'radius'" :style="[{backgroundImage:'url('+loginStore.userInfo.avatar+')'}]"></view>
<!-- #endif -->
<!-- #ifdef H5 -->
<view class='cu-avatar lg mr-15' :class="appSetting.circleAvatar?'round':'radius'" :style="[{backgroundImage:'url('+loginStore.userInfo.avatar+')'}]"></view>
<!-- #endif -->
<view class='im-flex im-justify-content-start im-columns'>
<view class="mb-5 f-18 mb-10 im-flex im-align-items-center">
<view class="textwhite">{{loginStore.userInfo.realname}}</view>
<view class='cu-tag ml-10 round light' :class="loginStore.userInfo.is_auth ? 'bg-orange' : 'bg-grey'">{{loginStore.userInfo.is_auth ? '已认证' : '未认证'}}</view>
</view>
<view class="text-white mb-10">{{loginStore.userInfo.account}}</view>
</view>
</view>
<view class="cuIcon-qrcode f-24 text-white" @tap="openQr"></view>
</view>
</view>
<view class="mine-header-arc"></view>
<view class="mine-card mine-card-top">
<view class="mine-list-item" @tap="scan">
<view class="mine-list-icon" style="background: linear-gradient(135deg, rgb(255, 153, 102), rgb(255, 94, 98));">
<text class="cuIcon-scan text-white"></text>
</view>
<view class="mine-list-title">扫一扫</view>
<view class="mine-list-arrow cuIcon-right"></view>
</view>
</view>
<view class="mine-card">
<view class="mine-list-item" @tap="showSetting">
<view class="mine-list-icon" style="background: linear-gradient(135deg, rgb(161, 140, 209), rgb(251, 194, 235));">
<text class="cuIcon-settings text-white"></text>
</view>
<view class="mine-list-title">通用设置</view>
<view class="mine-list-arrow cuIcon-right"></view>
</view>
<view class="mine-list-item" @tap="showsecure">
<view class="mine-list-icon" style="background: linear-gradient(135deg, rgb(67, 206, 162), rgb(24, 90, 157));">
<text class="cuIcon-safe text-white"></text>
</view>
<view class="mine-list-title">账号安全</view>
<view class="action">
<text class="text-grey cuIcon-right"></text>
</view>
</view>
<view class="mine-list-item" @click="toFriendsCircle">
<view class="mine-list-icon" style="background: linear-gradient(135deg, rgb(233, 229, 92), rgb(95, 249, 87));">
<uni-icons type="pyq" size="18" color="#ffffff"></uni-icons>
</view>
<view class="mine-list-title">朋友圈</view>
<view class="action">
<text class="text-grey cuIcon-right"></text>
</view>
</view>
<view class="mine-list-item" @tap="showDoc">
<view class="mine-list-icon" style="background: linear-gradient(135deg, rgb(54, 209, 196), rgb(30, 144, 255));">
<text class="cuIcon-question text-white"></text>
</view>
<view class="mine-list-title">帮助中心</view>
<view class="action">
<text class="text-grey cuIcon-right"></text>
</view>
</view>
<view class="mine-list-item" @tap="wanttogo">
<view class="mine-list-icon" style="background: linear-gradient(135deg, rgb(255, 33, 81), rgb(255, 255, 28));">
<text class="cuIcon-qrcode text-white"></text>
</view>
<view class="mine-list-title">邀请好友</view>
<view class="action">
<text class="text-grey cuIcon-right"></text>
</view>
</view>
<!-- #ifdef APP-PLUS -->
<view class="mine-list-item" @click="checkVersion()">
<view class="mine-list-icon" style="background: linear-gradient(135deg, rgb(247, 151, 30), rgb(255, 210, 0));">
<text class="cuIcon-question text-white"></text>
</view>
<view class="mine-list-title">检查更新</view>
<view class="action">
<text class="text-grey">{{verisonName}} </text>
<text class="text-grey cuIcon-right"></text>
</view>
</view>
<!-- #endif -->
<view class="mine-list-item" @click="about()" v-if="globalConfig.demon_mode">
<view class="mine-list-icon" style="background: linear-gradient(135deg, rgb(67, 233, 123), rgb(56, 249, 215));">
<text class="cuIcon-question text-white"></text>
</view>
<view class="mine-list-title">关于IM</view>
<view class="action">
<text class="text-grey cuIcon-right"></text>
</view>
</view>
</view>
<view></view>
</view>
</template>
<script>
import { useloginStore } from '@/store/login'
import pinia from '@/store/index'
import scan from '@/common/scan.js'
// #ifdef APP-PLUS
import appUpdate from '@/common/appUpdate.js';
import {getSavedImages} from '@/utils/LocalFileSystemURL.js'
// #endif
import { storeToRefs } from 'pinia';
import { useMsgStore } from '@/store/message';
const loginStore = useloginStore(pinia)
const userStore = useloginStore(pinia)
const msgStore = useMsgStore(pinia)
const {network_log} = storeToRefs(msgStore);
export default {
data() {
return {
loginStore:loginStore,
globalConfig:loginStore.globalConfig,
appSetting:loginStore.appSetting,
userInfo:userStore.userInfo,
versionCode:'',
verisonName:'',
imglist:[],
network_log:network_log
}
},
created() {
// #ifdef APP-PLUS
this.getImagePath()
// #endif
},
mounted() {
// #ifdef APP-PLUS
plus.runtime.getProperty(plus.runtime.appid,(inf) => {
this.versionCode = inf.versionCode
this.verisonName = inf.version
});
// #endif
},
methods: {
async getImagePath(){
this.imglist = await getSavedImages()
this.imglist.map(item => {
item.path = plus.io.convertLocalFileSystemURL(item.path)
});
// console.info(this.imglist,'读取地址');
},
logout(){
let client_id=uni.getStorageSync('client_id');
this.$api.LoginApi.logout({client_id:client_id}).then(res => {
if (res.code == 0) {
loginStore.logout()
}
})
},
about(){
if(this.globalConfig && this.globalConfig.demon_mode){
uni.navigateTo({
url:"/pages/mine/about"
})
}else{
uni.navigateTo({
url:"/pages/mine/about"
})
}
},
showSetting(){
uni.navigateTo({
url:"/pages/mine/setting"
})
},
showsecure(){
uni.navigateTo({
url:"/pages/mine/secure"
})
},
showDoc(){
uni.navigateTo({
url:"/pages/mine/doc"
})
},
wanttogo(){
this.$api.msgApi.getMoveInviteLink({}).then(res => {
// console.log(res);
if(res.code==0){
uni.setClipboardData({
data: res.data,
success: () => {
uni.showToast({
title: '复制成功',
icon: 'none'
});
},
fail: (err) => {
uni.showToast({
title: '复制失败',
icon: 'none'
});
console.error(err);
}
});
}
})
},
editInfo(){
uni.navigateTo({
url:"/pages/mine/profile"
})
},
scan(){
scan.scanQr();
},
openQr(){
uni.navigateTo({
url:"/pages/index/qrcode"
})
},
toFriendsCircle(){
uni.navigateTo({
url:"/pages/compass/personalcircleoffriends?user_id="+this.userInfo.user_id+"&avatar="+this.userInfo.avatar+"&realname="+this.userInfo.realname
})
},
checkVersion(){
appUpdate(true);
}
}
}
</script>
<style scoped lang="scss">
.mine-header{
position: relative;
background-color: #0389fb;
padding: .625rem .9375rem .15625rem;
margin-bottom: 0;
overflow: visible;
}
.textwhite{
color: #fff;
font-weight: bold;
}
.mine-header-arc{
position: relative;
width: 100%;
height: 3.125rem;
margin-top: -1.25rem;
left: 0;
z-index: 2;
overflow: hidden;
pointer-events: none;
}
.mine-header-arc:after{
content: "";
position: absolute;
left: 0;
right: 0;
top: 0;
height: 3.125rem;
background-color: #0389fb;
border-radius: 0 0 80% 80% / 0 0 100% 100%;
transform: scaleY(1.4);
}
.mine-card{
background: #fff;
border-radius: .75rem;
margin: 0 .75rem 1rem;
box-shadow: 0 .125rem .75rem rgba(0, 0, 0, .06);
padding: 0;
}
.mine-card-top{
margin-top: -2.5rem;
z-index: 3;
position: relative;
margin-left: 1rem;
margin-right: 1rem;
border-radius: 1rem;
box-shadow: 0 .375rem 1rem rgba(3, 137, 251, .15), 0 .125rem .75rem rgba(0, 0, 0, .08);
.mine-list-item:last-child{
border-bottom: none;
}
}
.mine-list-item{
display: flex;
align-items: center;
padding: 1rem;
border-bottom: .03125rem solid #f3f8fc;
position: relative;
}
.mine-list-icon{
width: 2rem;
height: 2rem;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin-right: .75rem;
font-size: 1.125rem;
color: #fff;
}
.mine-list-title{
font-size: .9375rem;
color: #222;
flex: 1;
}
.mine-list-arrow{
font-size: 1rem;
color: #bbb;
}
</style>