<template>
	<div class="wrapper" v-show="visible">
		<div class="model" v-show="model" @click="model = false">
			<div class="model-show">
				<img :src="modelSrc" alt="">
			</div>
		</div>
		<div class="content">
			<div class="show-info">
				<div class="test" :style="'width:'+cwidth+'px;height:'+cheight+'px'">
					<vueCropper ref="cropper" :img="cropper.img " :outputSize="cropper.size" :outputType="cropper.outputType" :info="cropper.info"
					 :canScale="cropper.canScale" :autoCrop="cropper.autoCrop" :autoCropWidth="cropper.autoCropWidth" :autoCropHeight="cropper.autoCropHeight"
					 :fixed="cropper.fixed" :fixedNumber="cropper.fixedNumber" :enlarge="4"></vueCropper>
				</div>
				<div style="margin-top: 10px;">
					<button type="button" @click="cancel" class="mui-btn">取消</button>
					<button type="button" @click="finish" class="mui-btn" style="float: right;">选取</button>
				</div>
				<div style="font-size: 14px;margin-top: 10px;line-height: 20px;color: red;">1.照片用于人脸识别设备，请上传清晰免冠登记照或肩部以上近照。</div>
				<div style="font-size: 14px;margin-top: 10px;line-height: 20px;color: #888888;">2.可以拖动图片或双手指缩放图片，最好让照片填满马赛克边框。</div>
			</div>
		</div>
	</div>
</template>

<script>
	import {
		VueCropper
	} from 'vue-cropper'

	export default {
		name: 'TopHeader',
		props: {
			cropper: {
				require: true,
				type: Object,
				default: () => ({
					//img的路径自行修改
					img: '',
					info: true,
					size: 0.8,
					outputType: 'jpeg',
					canScale: false,
					autoCrop: true,
					// 只有自动截图开启 宽度高度才生效
					autoCropWidth: 250,
					autoCropHeight: 350,
					fixed: true,
					// 真实的输出宽高
					infoTrue: true,
					fixedNumber: [5, 7]
				})
			},
			visible: {
				require: false,
				default: false,
			},
			field: {
				require: false,
				default: 'pic'
			},
			cwidth: {
				require: false,
				default: 250
			},
			cheight: {
				require: false,
				default: 350
			},
		},
		components: {
			VueCropper,
		},
		created() {},
		data() {
			return {
				model: false,
				modelSrc: '',
			}
		},
		methods: {
			//点击裁剪，这一步是可以拿到处理后的地址
			finish() {
				this.$refs.cropper.goAutoCrop();
				this.$refs.cropper.getCropData((data) => {
					this.modelSrc = data
					this.model = false;
					//裁剪后的图片显示
					this.cropper.img = this.modelSrc;
					//console.log(data)
					this.$emit('cropperFinish', {
						field: this.field,
						data: data
					});
				})
			},
			cancel() {
				this.$emit('cropperCancel');
			}
		},
	}
</script>

<style scoped>
	/* * {
		margin: 0;
		padding: 0;
	} */

	.wrapper {
		position: fixed;
		width: 100%;
		top: 0;
		background: #f1f1f1;
		z-index: 99;
		height: 100%;
	}

	.content {
		margin: auto;
		max-width: 585px;
		margin-bottom: 100px;
	}

	.test-button {
		display: flex;
		flex-wrap: wrap;
	}

	.btn {
		display: inline-block;
		line-height: 1;
		white-space: nowrap;
		cursor: pointer;
		background: #fff;
		border: 1px solid #c0ccda;
		color: #1f2d3d;
		text-align: center;
		box-sizing: border-box;
		outline: none;
		margin: 20px 10px 0px 0px;
		padding: 9px 15px;
		font-size: 14px;
		border-radius: 4px;
		color: #fff;
		background-color: #50bfff;
		border-color: #50bfff;
		transition: all .2s ease;
		text-decoration: none;
		user-select: none;
	}

	.des {
		line-height: 30px;
	}

	code.language-html {
		padding: 10px 20px;
		margin: 10px 0px;
		display: block;
		background-color: #333;
		color: #fff;
		overflow-x: auto;
		font-family: Consolas, Monaco, Droid, Sans, Mono, Source, Code, Pro, Menlo, Lucida, Sans, Type, Writer, Ubuntu, Mono;
		border-radius: 5px;
		white-space: pre;
	}

	.show-info {
		margin-bottom: 50px;
	}

	.show-info h2 {
		line-height: 50px;
	}

	.title {
		display: block;
		text-decoration: none;
		text-align: center;
		line-height: 1.5;
		margin: 20px 0px;
		background-image: -webkit-linear-gradient(left, #3498db, #f47920 10%, #d71345 20%, #f7acbc 30%, #ffd400 40%, #3498db 50%, #f47920 60%, #d71345 70%, #f7acbc 80%, #ffd400 90%, #3498db);
		color: transparent;
		-webkit-background-clip: text;
		background-size: 200% 100%;
		animation: slide 5s infinite linear;
		font-size: 40px;
	}

	.test {
		height: 285px;
	}

	.model {
		position: fixed;
		z-index: 10;
		width: 100vw;
		height: 100vh;
		overflow: auto;
		top: 0;
		left: 0;
		background: rgba(0, 0, 0, 0.8);
	}

	.model-show {
		display: flex;
		justify-content: center;
		align-items: center;
		width: 100vw;
		height: 100vh;
	}

	.model img {
		display: block;
		margin: auto;
		max-width: 80%;
		user-select: none;
		background-position: 0px 0px, 10px 10px;
		background-size: 20px 20px;
		background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee 100%), linear-gradient(45deg, #eee 25%, white 25%, white 75%, #eee 75%, #eee 100%);
	}

	.c-item {
		display: block;
		padding: 10px 0;
		user-select: none;
	}

	@keyframes slide {
		0% {
			background-position: 0 0;
		}

		100% {
			background-position: -100% 0;
		}
	}

	@media screen and (max-width: 1000px) {
		.content {
			max-width: 90%;
			margin: auto;
		}

		.test {
			margin-top: 10%;
			width: 250px;
			height: 350px;
			margin: 10% auto 0 auto;
		}
	}
</style>
