<template>
	<view class="index">
		<u-upload :fileList="fileList6" @afterRead="afterRead" @delete="deletePic" name="6" multiple :maxCount="1" width="170" height="170">
			<view class="index-upload baiyin-flex baiyin-flex-c-t baiyin-flex-c-b">
				<image v-if="imgType === 'camera'" src="@/static/icon/zp1.png" mode="widthFix"></image>
				<view class="index-upload-tlo baiyin-flex baiyin-flex-wrap baiyin-flex-c-t baiyin-flex-c-b" v-else-if="imgType === 'cross'">
					<image :class="crossTextShow ? 'index-upload-tlo-lp' : ''" src="@/static/icon/zp4.png" mode=""></image>
					<view class="" v-if="crossTextShow">上传</view>
				</view>
			</view>
		</u-upload>
	</view>
</template>

<script>
import apiBaseConfig from '@/config/index.js';
export default {
	props: {
		imgType: {
			type: String,
			default: 'camera' //camera cross
		},
		crossTextShow: {
			type: Boolean,
			default: true
		}
	},
	data() {
		return {
			imgBgUrl: apiBaseConfig.imgBgUrl,
			globalData: getApp().globalData,
			fileList6: []
		};
	},
	onLoad() {},
	methods: {
		// 删除图片
		deletePic(event) {
			this[`fileList${event.name}`].splice(event.index, 1);
		},
		// 新增图片
		async afterRead(event) {
			// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
			let lists = [].concat(event.file);
			let fileListLen = this[`fileList${event.name}`].length;
			lists.map(item => {
				this[`fileList${event.name}`].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${event.name}`][fileListLen];
				this[`fileList${event.name}`].splice(
					fileListLen,
					1,
					Object.assign(item, {
						status: 'success',
						message: '',
						url: result
					})
				);
				fileListLen++;
			}
		},
		uploadFilePromise(url) {
			return new Promise((resolve, reject) => {
				let a = uni.uploadFile({
					url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
					filePath: url,
					name: 'file',
					formData: {
						user: 'test'
					},
					success: res => {
						setTimeout(() => {
							resolve(res.data.data);
						}, 1000);
					}
				});
			});
		}
	}
};
</script>

<style lang="scss" scoped>
.index {
	&-upload {
		width: 170rpx;
		height: 170rpx;
		background-color: #f3f3f3;
		> image {
			width: 52rpx;
			height: 52rpx;
		}
		&-tlo {
			width: 100%;
			height: 100%;
			image {
				width: 40rpx;
				height: 40rpx;
			}
			view {
				width: 100%;
				text-align: center;
				font-size: 24rpx;
				font-weight: 400;
				color: #000000;
				margin-top: -45rpx;
			}
			&-lp {
				margin-top: 43rpx;
			}
		}
	}
}
</style>