java-mall-app/community/community/setting.vue
2024-11-01 16:35:40 +08:00

515 lines
10 KiB
Vue

<template>
<view class="content">
<view class="zhuige-info-form-box">
<!-- 顶部大图及头像 -->
<view class="zhuige-info-header">
<!-- 顶部大图 -->
<image mode="aspectFill" :src="userSpace.user_poster"></image>
<!-- 头像 -->
<image @click="upImgs" data-type="2" mode="aspectFill" :src="userSpace.user_avatar"></image>
<!-- 控制入口 -->
<view @click="upImgs" data-type="1" class="avatar-opt">
<view>
<uni-icons type="camera" size="18"></uni-icons>
</view>
<view>{{__('修改背景图')}}</view>
</view>
</view>
<!-- 认证表单 -->
<view class="zhuige-info-form">
<view class="zhuige-info-line">
<view>{{__('签名/介绍')}}</view>
<view>
<input type="text" v-model="userSpace.user_sign" :placeholder="__('一句话介绍一下自己吧')" />
</view>
</view>
<view class="zhuige-info-line" v-if="(false)">
<view>{{__('帖子是否可见')}}</view>
<view @click="clickAgreeLicense">
<switch :checked="post" color="#db384c" style="transform:scale(0.7)" />
</view>
</view>
<view class="zhuige-info-line" v-if="(false)">
<view>{{__('点赞是否可见')}}</view>
<view @click="clickAgreeLicense">
<switch :checked="like" color="#db384c" style="transform:scale(0.7)" />
</view>
</view>
<view class="zhuige-info-line" v-if="(false)">
<view>{{__('收藏是否可见')}}</view>
<view @click="clickAgreeLicense">
<switch :checked="collect" color="#db384c" style="transform:scale(0.7)" />
</view>
</view>
<view class="zhuige-info-line" v-if="(false)">
<view>{{__('评论是否可见')}}</view>
<view @click="clickAgreeLicense">
<switch :checked="comment" color="#db384c" style="transform:scale(0.7)" />
</view>
</view>
</view>
</view>
<!-- 底部大按钮 -->
<view @click="clickSubmit()" class="zhuige-base-button">
<view>{{__('提交')}}</view>
</view>
</view>
</template>
<script>
import {
mapState,
mapMutations
} from 'vuex';
export default {
components: {
},
data() {
return {
userSpace: {},
post: 0,
like: 0,
collect: 0,
comment: 0,
sign: '',
weixin: '',
reward: '',
certify: undefined,
vip: undefined,
}
},
computed: mapState(['Config', 'StateCode', 'notice', 'plantformInfo', 'shopInfo', 'userInfo', 'hasLogin']),
onLoad(options) {
var that = this;
that.forceUserInfo(function(user) {
that.GetUserSpace();
});
},
onUnload() {
},
onShareAppMessage() {},
methods: {
...mapMutations(['login', 'logout', 'getPlantformInfo', 'forceUserInfo', 'getUserInfo']),
// ------ event --------
GetUserSpace: function() {
var that = this,
params = {
user_id: this.userInfo.user_id
};
that.$.request({
url: this.Config.URL.sns.user_space,
data: params,
success: function(data, status, msg, code) {
if (status == 200) {
that.setData({
userSpace: data
});
} else {
that.$.alert(msg)
}
}
});
},
// ------ event --------
upImgs: function(e) {
var that = this;
var type = e.currentTarget.dataset.type;
that.$.chooseImage({
count: 1,
sizeType: ['compressed'],
success: function(n) {
that.$.showLoading();
var r = n.tempFilePaths;
that.$.uploadFile({
url: that.Config.URL.upload,
method: 'POST',
filePath: r[0],
name: 'upfile',
// header: {
// "content-type": "multipart/form-data"
// },
success: function(n) {
that.$.hideLoading();
var up_res = that.$.parseJSON(n.data);
var s = up_res.data.url;
if (type == 1) {
that.userSpace.user_poster = s;
} else {
that.userSpace.user_avatar = s;
}
},
fail: function(e) {
that.$.hideLoading();
},
complete: function(e) {
that.$.hideLoading();
}
});
},
fail: function(e) {
that.$.hideLoading();
},
complete: function(e) {
that.$.hideLoading();
}
});
},
/**
* 点击提交
*/
clickSubmit() {
var that = this;
let params = {
user_poster: this.userSpace.user_poster,
user_avatar: this.userSpace.user_avatar,
user_sign: this.userSpace.user_sign,
}
that.$.request({
url: this.Config.URL.sns.user_editSpace,
data: params,
success: function(data, status, msg, code) {
if (status == 200) {
that.$.alert(that.__('修改成功'))
} else {
that.$.alert(msg)
}
}
});
},
/**
* 点击设置封面
*/
clickCover() {
uni.chooseImage({
count: 1,
sizeType: ['compressed'],
success: (res) => {
let path = res.tempFilePaths[0];
Rest.upload(Api.URL('other', 'upload'), path).then(oo => {
this.cover = oo.data.src;
}, err => {
Alert.error(err);
});
},
fail: (res) => {
if (res.errMsg && res.errMsg.indexOf('cancel') < 0) {
Alert.error(res.errMsg);
}
}
});
},
/**
* 点击设置头像
*/
clickAvatar() {
uni.chooseImage({
count: 1,
sizeType: ['compressed'],
success: (res) => {
let path = res.tempFilePaths[0];
Rest.upload(Api.URL('other', 'upload'), path).then(oo => {
this.avatar = oo.data.src;
}, err => {
Alert.error(err);
});
},
fail: (res) => {
if (res.errMsg && res.errMsg.indexOf('cancel') < 0) {
Alert.error(res.errMsg);
}
}
});
},
/**
* 点击重新绑定手机号
*/
clickMobile() {
uni.showModal({
title: '提示',
content: '要重新绑定手机号吗?',
success: (res) => {
if (res.confirm) {
Util.openLink('/pages/user/login/login?type=mobile')
}
}
});
},
/**
* 点击设置微信
*/
clickWeiXin() {
uni.chooseImage({
count: 1,
sizeType: ['compressed'],
success: (res) => {
let path = res.tempFilePaths[0];
Rest.upload(Api.URL('other', 'upload'), path).then(oo => {
this.weixin = oo.data.src;
}, err => {
Alert.error(err);
});
},
fail: (res) => {
if (res.errMsg && res.errMsg.indexOf('cancel') < 0) {
Alert.error(res.errMsg);
}
}
});
},
/**
* 点击设置赞赏码
*/
clickReward() {
uni.chooseImage({
count: 1,
sizeType: ['compressed'],
success: (res) => {
let path = res.tempFilePaths[0];
Rest.upload(Api.URL('other', 'upload'), path).then(oo => {
this.reward = oo.data.src;
}, err => {
Alert.error(err);
});
},
fail: (res) => {
if (res.errMsg && res.errMsg.indexOf('cancel') < 0) {
Alert.error(res.errMsg);
}
}
});
},
/**
* 加载数据
*/
loadData() {
Rest.post(Api.URL('user', 'get_info')).then(res => {
this.cover = res.data.cover;
this.avatar = res.data.avatar;
this.nickname = res.data.nickname;
this.mobile = res.data.mobile;
this.sign = res.data.sign;
this.weixin = res.data.weixin;
this.reward = res.data.reward;
if (res.data.certify) {
this.certify = res.data.certify;
}
if (res.data.vip) {
this.vip = res.data.vip;
}
}, err => {
console.log(err)
});
}
}
}
</script>
<style>
.content {
position: fixed;
height: 100%;
width: 100%;
overflow-y: scroll;
}
.zhuige-info-form-box {
padding: 20rpx;
margin-bottom: 160rpx;
}
.zhuige-info-header {
height: 480rpx;
width: 100%;
position: relative;
}
.zhuige-info-header image:nth-child(1) {
height: 100%;
width: 100%;
border-radius: 12rpx 12rpx 0 0;
}
.zhuige-info-header image:nth-child(2) {
position: absolute;
z-index: 3;
right: 30rpx;
bottom: -80rpx;
height: 160rpx;
width: 160rpx;
border-radius: 50%;
border: 1rpx solid #EEEEEE;
}
.zhuige-info-header .avatar-opt {
position: absolute;
z-index: 3;
left: 30rpx;
bottom: 30rpx;
display: flex;
align-items: center;
}
.zhuige-info-header .avatar-opt view:nth-child(1) {
height: 60rpx;
width: 60rpx;
line-height: 60rpx;
text-align: center;
border-radius: 50%;
background: rgba(255, 255, 255, .6);
}
.zhuige-info-header .avatar-opt view:nth-child(2) {
padding-left: 16rpx;
font-size: 26rpx;
font-weight: 300;
color: rgba(255, 255, 255, .6);
}
.zhuige-info-form {
padding: 0 30rpx;
background: #FFFFFF;
border-radius: 0 0 12rpx 12rpx;
}
.zhuige-info-line {
padding: 30rpx 0;
border-top: 1rpx solid #EEEEEE;
}
.zhuige-info-line>view {
font-size: 28rpx;
font-weight: 300;
}
.zhuige-info-line>view:nth-child(1) {
font-size: 30rpx;
font-weight: 600;
margin-bottom: 20rpx;
}
.zhuige-info-line>view:nth-child(2) input {
width: 100%;
font-size: 28rpx;
font-weight: 300;
}
.form-title>view:nth-child(2),
.form-title>view:nth-child(3) {
display: flex;
align-items: center;
color: #999999;
}
.form-title>view:nth-child(2)>image {
width: 32rpx;
height: 32rpx;
margin-right: 12rpx;
}
.form-title>view:nth-child(3)>image {
width: 64rpx;
height: 32rpx;
margin-right: 12rpx;
}
.zhugie-info-image-upload {
height: 240rpx;
width: 240rpx;
text-align: center;
border-radius: 12rpx;
border: 1rpx solid #DDDDDD;
position: relative;
}
.zhugie-info-image-upload uni-icons.plus {
line-height: 240rpx;
}
.zhugie-info-image-upload uni-icons.clear {
position: absolute;
z-index: 3;
right: -20rpx;
top: -50rpx;
}
.zhugie-info-image-upload image {
height: 100%;
width: 100%;
border-radius: 12rpx;
}
.zhugie-vip-style {
display: flex;
align-items: center;
}
.zhugie-vip-style image {
height: 12px;
width: 26px;
margin-rihgt: 12rpx;
}
.zhugie-vip-style text {
font-size: 28rpx;
font-weight: 400;
}
.zhuige-base-button {
position: fixed;
display: flex;
align-items: center;
justify-content: center;
bottom: 0;
width: 100%;
padding: 40rpx 0;
z-index: 3;
}
.zhuige-base-button view {
width: 360rpx;
text-align: center;
height: 96rpx;
line-height: 96rpx;
border-radius: 96rpx;
font-size: 32rpx;
font-weight: 400;
color: #FFFFFF;
background: #db384c;
}
</style>