<template>
	<view class="upload">
		<view class="upload_1">
			<view class="list" v-for="(item,index) in list" :key="index">
				<image class="image" :src="item.url" @click="toView(index,item)"></image>
				<uni-icons class="del" type="close" size="30" color="#007AFF" @click="uplDel(index,item)"></uni-icons>
			</view>
			<view class="list" v-if="list&&list.length<count" @tap="uplSuc()">
				<uni-icons class="add" type="plusempty" size="55" color="#007AFF"></uni-icons>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		props: {
			list: {
				type: Array,
			},
			name: {
				type: String,
			},
			count: {
				type: Number,
				default: 1
			}
		},
		data() {
			return {

			};
		},
		methods: {
			uplSuc() {
				const that = this;
				let serverFile = that.$config.serverFile;
				uni.chooseImage({
					count: 1,
					sizeType: ['original', 'compressed'],
					sourceType: ['album', 'camera'],
					success: async function(res) {
						let tempFile = JSON.parse(JSON.stringify(res.tempFilePaths));
						const arr = await that.$apifile(`/material/applet/upload`, 'file', tempFile[0], 'file');
						that.$emit('uplSuc', {
							data: {
								name: arr.name,
								uri: arr.uri,
								url: serverFile + arr.uri
							},
							name: that.name
						})
					}
				});
			},
			// 删除图片
			uplDel(index, e) {
				const that = this;
				that.$emit('uplDel', {
					data: {
						file: e,
						index: index
					},
					name: that.name
				})
			},
			// 图片预览
			toView(index, e) {
				const that = this;
				uni.previewImage({
					current: index,
					urls: [e.url]
				})
			}
		}
	}
</script>

<style lang="scss">
	.upload {
		padding: 0 2vw;

		.upload_1 {
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;

			.list {
				position: relative;
				width: 30vw;
				height: 28vw;
				text-align: center;
				margin: 0 3vw 2vw 0;
				border-radius: 5px;
				box-shadow: 0 0 2px var(--f85Color);

				.image {
					width: 100%;
					height: 100%;
					border-radius: 5px;
				}

				.add {
					position: relative;
					top: 20px;
				}

				.del {
					position: absolute;
					right: 0;
					top: 0;
				}
			}

			.list:nth-child(3n) {
				margin: 0 0 2vw 0;
			}
		}
	}
</style>
