<template>
	<view class="user-info-container container">
		<view class="user-avatar-section">
			<view class="user-info-title">
				用户头像
			</view>
			<view style="display: flex;justify-content: center;">
				<u-upload
					accept="image"
					:capture="['album','camera']"
					:fileList="fileList"
					@afterRead="afterRead"
					@delete="deletePic"
					:max-count="1"
					name="avatar"
					width="80"
					height="80"
					:custom-style="{flex:0}"
				>
					<image :src="avatarUrl" style="width: 80px;height: 80px;border-radius: 50%;"></image>
				</u-upload>
			</view>
		</view>
		
		<view class="user-info-section">
			<view class="user-info-title">
				基本信息
			</view>
			<view class="user-info-form">
				<view class="user-info-item">
					<view class="user-info-label">昵称</view>
					<view class="user-info-input">
						<u-input v-model="nickname" placeholder="请输入昵称" :border="false" />
					</view>
				</view>
				<!-- <view class="user-info-item">
					<view class="user-info-label">会员等级</view>
					<view class="user-info-value">
						<text>{{userLevel}}</text>
					</view>
				</view> -->
			</view>
		</view>
		
		<view class="user-info-btns">
			<view class="user-info-btn" @click="save">
				<u-button color="#FFBF60" :loading="loading">
					<view style="color: #fff;">
						保存
					</view>
				</u-button>
			</view>
		</view>
	</view>
    <!-- 客服组件 -->
    <CustomerService />
</template>

<script>
	import {updateUserProfile, uploadAvatar} from '@/api/system/user'
	import {getPersonalInfo} from "@/api/system/personal.js"
	
	export default {
		data() {
			return {
				loading: false,
				fileList: [],
				avatarUrl: 'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/avatar_1.png',
				nickname: '',
				userLevel: ''
			}
		},
		onLoad() {
			this.getUserInfo()
		},
		methods: {
			// 获取用户信息
			getUserInfo() {
				getPersonalInfo().then(res => {
					if (res && (res.id || res.id === 0)) {
						this.nickname = res.nickname || ''
						this.userLevel = res.level || ''
						if (res.avatar) {
							this.avatarUrl = res.avatar
							this.fileList = [{url: res.avatar}]
						}
					}
				})
			},
			// 删除图片
			deletePic(event) {
				this.fileList.splice(event.index, 1)
				this.avatarUrl = 'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/index/avatar_1.png'
			},
			// 新增图片
			async afterRead(event) {
				// 当设置 multiple 为 true 时, file 为数组格式，否则为对象格式
				let lists = [].concat(event.file)
				let fileListLen = this.fileList.length
				lists.map((item) => {
					this.fileList.push({
						...item,
						status: 'uploading',
						message: '上传中'
					})
				})
				for (let i = 0; i < lists.length; i++) {
					const result = await this.uploadFilePromise(lists[i].url)
					let item = this.fileList[fileListLen]
					this.fileList.splice(fileListLen, 1, Object.assign(item, {
						status: 'success',
						message: '',
						url: result
					}))
					this.avatarUrl = result
					fileListLen++
				}
			},
			uploadFilePromise(url) {
				return new Promise((resolve, reject) => {
					let a = uni.uploadFile({
						url: 'https://store-test.catmdogd.com/test-api/h5/oss/upload',
						filePath: url,
						name: 'file',
						formData: {
							user: 'test'
						},
						success: (res) => {
							setTimeout(() => {
								if(res && res.data){
									let resData = JSON.parse(res.data);
									resolve(resData.url);
								}
								reject("上传失败");
							}, 1000)
						}
					});
				})
			},
			// 保存用户信息
			save() {
				if (!this.nickname) {
					this.$modal.showToast('请输入昵称!')
					return
				}
				
				this.loading = true
				let params = {
					nickname: this.nickname,
					avatar: this.avatarUrl
				}
				
				updateUserProfile(params).then(res => {
					if (res && res.code == 200) {
						uni.showToast({
							title: '保存成功',
							duration: 3000,
							icon: "none"
						})
						setTimeout(() => {
							this.loading = false
							let len = getCurrentPages().length
							if (len >= 2) {
								uni.navigateBack()
							} else {
								uni.redirectTo({url: '/pages/personalCenter/index'})
							}
						}, 1000)
					} else {
						this.loading = false
						uni.showToast({
							title: '更新用户信息失败',
							duration: 3000,
							icon: "none"
						})
					}
				}).catch(() => {
					this.loading = false
					uni.showToast({
						title: '更新用户信息失败',
						duration: 3000,
						icon: "none"
					})
				})
			}
		}
	}
</script>

<style lang="scss">
	.user-info-container {
		position: relative;
		height: 100%;
		padding-bottom: 90px;
		
		.user-avatar-section {
			width: 100%;
			background-color: #fff;
			padding: 15px 20px;
			margin-bottom: 10px;
		}
		
		.user-info-section {
			width: 100%;
			background-color: #fff;
			padding: 15px 20px;
		}
		
		.user-info-title {
			font-size: 14px;
			color: #333;
			font-weight: bold;
			padding-bottom: 15px;
		}
		
		.user-info-form {
			width: 100%;
		}
		
		.user-info-item {
			display: flex;
			align-items: center;
			padding: 12px 0;
			border-bottom: 1px solid #efefef;
			
			&:last-child {
				border-bottom: none;
			}
		}
		
		.user-info-label {
			width: 80px;
			color: #333;
			font-size: 14px;
		}
		
		.user-info-input {
			flex: 1;
		}
		
		.user-info-value {
			flex: 1;
			color: #666;
			font-size: 14px;
		}
		
		.user-info-btns {
			background-color: #FFFFFF;
			padding: 10px 20px 40px;
			width: 100%;
			height: 90px;
			position: fixed;
			bottom: 0;
			z-index: 100;
			text-align: center;
			
			.user-info-btn {
				width: 80%;
				margin: 0 auto;
			}
		}
	}
</style>