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.
192 lines
5.3 KiB
192 lines
5.3 KiB
<template>
|
|
<view>
|
|
<cu-custom bgColor="bg-main-bar" :isBack="true">
|
|
<template #backText></template>
|
|
<template #content>个人信息</template>
|
|
</cu-custom>
|
|
<form>
|
|
<view class="cu-form-group" style="height:140rpx">
|
|
<view class="title">头像</view>
|
|
<view class="im-flex im-align-items-center">
|
|
<avatar
|
|
selWidth="240px" selHeight="480upx" expWidth="240px" expHeight="240px" @upload="uploadAvatar" :avatarSrc="userInfo.avatar"
|
|
avatarStyle="width: 100rpx; height: 100rpx; border-radius: 100%;" :quality="1">
|
|
</avatar>
|
|
<text class="cuIcon-right ml-10 f-18 text-grey"></text></view>
|
|
</view>
|
|
<view class="cu-form-group">
|
|
<view class="title">账号</view>
|
|
<view class="text-gray">{{userInfo.account}}</view>
|
|
</view>
|
|
<view class="cu-form-group">
|
|
<view class="title">{{globalConfig.sysInfo.runMode==1 ? "姓名" : '昵称'}}</view>
|
|
<view class="text-gray" v-if="globalConfig.sysInfo.runMode==1 && globalConfig.sysInfo.diyName!=1">{{userInfo.realname}}</view>
|
|
<input class="uni-input" style="text-align: right;" v-if="globalConfig.sysInfo.runMode==2 || globalConfig.sysInfo.diyName==1" v-model="userInfo.realname" placeholder="请输入昵称" />
|
|
</view>
|
|
<view class="cu-form-group">
|
|
<view class="title">e-mail</view>
|
|
<input class="uni-input" style="text-align: right;" v-model="userInfo.email" placeholder="请输入email地址" />
|
|
</view>
|
|
<view class="cu-form-group">
|
|
<view class="title">性别</view>
|
|
<view>
|
|
<radio-group @change="changeSex">
|
|
<label class="radio mr-10" v-for="x in sexList"><radio name="sex" :value="x.id" :checked="userInfo.sex==x.id" /> {{x.name}}</label>
|
|
</radio-group>
|
|
</view>
|
|
</view>
|
|
<view class="cu-form-group align-start">
|
|
<view class="title">个性签名</view>
|
|
<textarea maxlength="-1" v-model="userInfo.motto" placeholder="请输入个性签名"></textarea>
|
|
</view>
|
|
</form>
|
|
<view class="padding flex flex-direction">
|
|
<button class="cu-btn bg-green lg" :style="saved ? 'border: solid 1px #dbdada;' : ''" :disabled="saved" @tap="saveInfo()" >保存</button>
|
|
</view>
|
|
<view class="padding flex flex-direction" style="position: fixed;bottom: 0;width:100%;align-items: center;">
|
|
<text class="text-red" @tap="logout()">注销登录</text>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { useloginStore } from '@/store/login'
|
|
import pinia from '@/store/index'
|
|
import avatar from "@/components/yq-avatar/yq-avatar.vue";
|
|
import db from '@/utils/db';
|
|
|
|
const loginStore = useloginStore(pinia)
|
|
export default {
|
|
components: {
|
|
avatar
|
|
},
|
|
data() {
|
|
return {
|
|
loginStore:loginStore,
|
|
globalConfig:loginStore.globalConfig,
|
|
userInfo:{},
|
|
sexList:[
|
|
{
|
|
id:'2',
|
|
name:'未知'
|
|
},
|
|
{
|
|
id:'1',
|
|
name:'男'
|
|
},
|
|
{
|
|
id:'0',
|
|
name:'女'
|
|
},
|
|
],
|
|
saved:false
|
|
}
|
|
},
|
|
mounted() {
|
|
this.userInfo=JSON.parse(JSON.stringify(loginStore.userInfo));
|
|
},
|
|
methods: {
|
|
logout(){
|
|
let client_id=uni.getStorageSync('client_id');
|
|
this.$api.LoginApi.logout({client_id:client_id}).then(res => {
|
|
if (res.code == 0) {
|
|
this.dele();
|
|
loginStore.logout();
|
|
}
|
|
})
|
|
|
|
},
|
|
async dele(){
|
|
await db.executeSql('DELETE FROM chat_groups');
|
|
await db.executeSql('DELETE FROM getSystemInfo');
|
|
},
|
|
textareaBInput(e) {
|
|
this.userInfo.motto = e.detail.value
|
|
},
|
|
changeSex(evt){
|
|
this.userInfo.sex=parseInt(evt.detail.value);
|
|
},
|
|
saveInfo(){
|
|
if(this.userInfo.realname == ''){
|
|
uni.showToast({
|
|
title:'请输入昵称',
|
|
icon:'none'
|
|
})
|
|
return false
|
|
}
|
|
console.log(this.userInfo.email);
|
|
let pattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
if(this.userInfo.email!='' && !pattern.test(this.userInfo.email)&&this.userInfo.email!=null&&this.userInfo.email!=undefined){
|
|
uni.showToast({
|
|
title:'请输入正确的邮箱',
|
|
icon:'none'
|
|
})
|
|
return false
|
|
}
|
|
// 防止无限次点击
|
|
this.saved=true;
|
|
let params={
|
|
realname:this.userInfo.realname,
|
|
email:this.userInfo.email,
|
|
sex:this.userInfo.sex,
|
|
motto:this.userInfo.motto
|
|
}
|
|
this.$api.msgApi.updateUserInfo(params).then(res=>{
|
|
if(res.code == 0){
|
|
uni.showToast({
|
|
title:'保存成功',
|
|
icon:'none'
|
|
})
|
|
let data=JSON.parse(JSON.stringify(this.userInfo))
|
|
loginStore.login(data)
|
|
}
|
|
})
|
|
// 8秒后可以重新保存
|
|
setTimeout(()=>{
|
|
this.saved=false;
|
|
},2000)
|
|
},
|
|
setAvatar(){
|
|
uni.navigateTo({
|
|
url:"/pages/mine/avatar"
|
|
})
|
|
},
|
|
uploadAvatar(res){
|
|
uni.showLoading({
|
|
title:'上传中...'
|
|
})
|
|
uni.uploadFile({
|
|
url: this.$api.msgApi.uploadAvatar,
|
|
filePath: res.path,
|
|
name: 'file',
|
|
header: {
|
|
'Authorization': uni.getStorageSync('authToken'),
|
|
},
|
|
formData: {
|
|
ext: 'png'
|
|
},
|
|
success: (e) => {
|
|
uni.hideLoading();
|
|
let res=JSON.parse(e.data);
|
|
if(res.code==0){
|
|
uni.showToast({
|
|
title:res.msg,
|
|
icon:'none'
|
|
})
|
|
this.userInfo.avatar=res.data
|
|
let data=JSON.parse(JSON.stringify(this.userInfo));
|
|
loginStore.login(data);
|
|
}
|
|
},
|
|
fail: (res) => {
|
|
uni.hideLoading();
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
|
|
</style>
|
|
|