<template>
	<view class="tm-choujiangGrid">
		<view class="tm-choujiangGrid-bg"
		:style="{
			backgroundImage: `url(${them_data.bg})`
		}"
		>
			<view v-if="listData.length==8"  class="tm-choujiangGrid-con">
				<view v-for="(item,index) in 3" :key="index" class="tm-choujiangGrid-grid">
					<block  v-if="index==0">
						<view   class="tm-choujiangGrid-item">
							
							<view class="tm-choujiangGrid-item-img flex-center">
								<tm-images :width="100" :src="listData[0].img"></tm-images>
							</view>
							<view :class="{on:(aniOff==false&&active==0)||(choujiangJieGuo&&aniOff&&active==0)}" class="tm-choujiangGrid-item-hover"></view>
						</view>
						<view   class="tm-choujiangGrid-item">
							<view class="tm-choujiangGrid-item-img flex-center">
								<tm-images :width="100" :src="listData[1].img"></tm-images>
							</view>
							<view :class="{on:(aniOff==false&&active==1)||(choujiangJieGuo&&aniOff&&active==1)}" class="tm-choujiangGrid-item-hover"></view>
						</view>
						<view   class="tm-choujiangGrid-item">
							<view class="tm-choujiangGrid-item-img flex-center">
								<tm-images :width="100" :src="listData[2].img"></tm-images>
							</view>
							<view :class="{on:(aniOff==false&&active==2)||(choujiangJieGuo&&aniOff&&active==2)}" class="tm-choujiangGrid-item-hover"></view>
						</view>
					</block>
					<block  v-if="index==1">
						<view   class="tm-choujiangGrid-item">
							<view class="tm-choujiangGrid-item-img flex-center">
								<tm-images :width="100" :src="listData[7].img"></tm-images>
							</view>
							<view :class="{on:(aniOff==false&&active==7)||(choujiangJieGuo&&aniOff&&active==7)}" class="tm-choujiangGrid-item-hover"></view>
						</view>
						<view @click="clickImgPlay"  class="tm-choujiangGrid-item">
							<view class="tm-choujiangGrid-item-img flex-center tm-choujiangGrid-item-point">
								<tm-images :width="140" :src="them_data.point"></tm-images>
							</view>
							<view class="tm-choujiangGrid-item-hover"></view>
						</view>
						
						<view   class="tm-choujiangGrid-item">
							<view class="tm-choujiangGrid-item-img flex-center">
								<tm-images :width="100" :src="listData[3].img"></tm-images>
							</view>
							<view :class="{on:(aniOff==false&&active==3)||(choujiangJieGuo&&aniOff&&active==3)}" class="tm-choujiangGrid-item-hover"></view>
						</view>
					</block>
					<block  v-if="index==2">
						
						<view   class="tm-choujiangGrid-item">
							<view class="tm-choujiangGrid-item-img flex-center">
								<tm-images :width="100" :src="listData[6].img"></tm-images>
							</view>
							<view :class="{on:(aniOff==false&&active==6)||(choujiangJieGuo&&aniOff&&active==6)}" class="tm-choujiangGrid-item-hover"></view>
						</view>
						
						<view   class="tm-choujiangGrid-item">
							<view class="tm-choujiangGrid-item-img flex-center">
								<tm-images :width="100" :src="listData[5].img"></tm-images>
							</view>
							<view :class="{on:(aniOff==false&&active==5)||(choujiangJieGuo&&aniOff&&active==5)}" class="tm-choujiangGrid-item-hover"></view>
						</view>
						<view    class="tm-choujiangGrid-item">
							<view class="tm-choujiangGrid-item-img flex-center">
								<tm-images :previmage="false" :width="100" :src="listData[4].img"></tm-images>
							</view>
							<view :class="{on:(aniOff==false&&active==4)||(choujiangJieGuo&&aniOff&&active==4)}" class="tm-choujiangGrid-item-hover"></view>
						</view>
					</block>
				</view>
			</view>
		</view>
	</view>
</template>

<script>
/**
 * 转盘抽奖
 * @property {Number} theme-index = [] 默认0,主题索引,我已内置两套皮肤。
 * @property {Array} theme-list = [] 默认[已内置两套],主题列表数据,已有两套。
 * @property {Boolean} disabled = [] 默认 false,是否禁用
 * @property {Number} duration = [] 默认 3000,动画时长
 * @property {Boolean} disabledCenter = [] 默认 false,是否禁用点中间图片开始。
 * @property {Number} turns = [] 默认 2,转的圈数
 * @property {Number} specify = [] 默认 null,为整数时,即可指定奖品,始终中奖保持在这个位置。
 * @property {Array} list = [] 默认 [测试的数据],奖品数据。
 * @property {Function} start 游戏开始时触发。
 * @property {Function} end 游戏结束触发,并返回奖品数据。
 * @example <tm-choujiangGame ></tm-choujiangGame>
 */
	import tmImages from "@/tm-vuetify/components/tm-images/tm-images.vue"
	export default {
		components:{tmImages},
	name: 'tm-choujiangGrid',
	props: {
		themeIndex: {
			type: Number,
			default: 0
		},
		themeList: {
			type: Array,
			default: () => {
				return [
					{
						bg: 'https://jx2d.cn/yuwuimages/choujiangGrid_1.png?k=9',
						point: 'https://jx2d.cn/yuwuimages/choujiangGrid_1_0.png'
					},
					{
						bg: 'https://jx2d.cn/yuwuimages/choujiangGrid_2.png?k=9',
						point: 'https://jx2d.cn/yuwuimages/choujiangGrid_2_0.png'
					}
				];
			}
		},
		disabled: {
			type: Boolean,
			default: false
		},
		//是否禁用点中间图片开始。
		disabledCenter:{
			type: Boolean,
			default: false
		},
		// 动画时长
		duration: {
			type: Number,
			default: 100
		},
		list: {
			type: Array,
			default: () => {
				return [
					{ name: '1', gailv: 30, id: 1, img: 'https://jx2d.cn/yuwuimages/choujiangGrid_1_1.png' },
					{ name: '2', gailv: 10, id: 2, img: 'https://jx2d.cn/yuwuimages/choujiangGrid_1_2.png' },
					{ name: '3', gailv: 10, id: 3, img: 'https://jx2d.cn/yuwuimages/choujiangGrid_1_1.png' },
					{ name: '4', gailv: 10, id: 4, img: 'https://jx2d.cn/yuwuimages/choujiangGrid_1_2.png' },
					{ name: '5', gailv: 10, id: 5, img: 'https://jx2d.cn/yuwuimages/choujiangGrid_1_2.png' },
					{ name: '6', gailv: 10, id: 7, img: 'https://jx2d.cn/yuwuimages/choujiangGrid_1_1.png' },
					{ name: '7', gailv: 10, id: 8, img: 'https://jx2d.cn/yuwuimages/choujiangGrid_1_1.png' },
					{ name: '8', gailv: 10, id: 9, img: 'https://jx2d.cn/yuwuimages/choujiangGrid_1_2.png' }
				];
			}
		},
		// 转的圈数。
		turns:{
			type:Number,
			default:2
		},
		//指定中奖的奖品数组索引,从0开始
		specify:{
			type:Number,
			default:null
		}
	},
	data() {
		return {
			
			aniOff: true,
			active:0,
			choujiangJieGuo:null,
			listData: [],
			timeid:8564
			
		};
	},
	mounted() {
		this.listData = this.list;
	},
	destroyed() {
		clearTimeout(this.timeid)
	},
	computed: {
		them_index: function() {
			return this.themeIndex;
		},
		them_data: function() {
			return this.themeList[this.them_index];
		}
	},
	methods: {
		clickImgPlay(){
			if (this.disabledCenter) return;
			this.play();
		},
		chuliganlv() {
			var ml = new this.$tm.choujiang(this.listData);
			let zhongle = [];
			let xh = ml.getResult();
			let index = 0
			for(let j=0;j<this.listData.length;j++){
				if(this.listData[j].id === xh.id){
					index = j;
					
					break;
				}
			}
			let cisu  =  (this.listData.length-1)*this.turns+this.turns*2 + (this.specify!==null?this.specify:index);
			zhongle = {
				index:index,
				data:xh,
				playNum:cisu
			}
			return zhongle;
		},
		play() {
			let t = this;
			if (this.disabled) return;
			if (!this.aniOff) {
				console.warn('未结束动画,不能连续点击.');
				return;
			}
			// 开始动画.
			this.$emit('start');
			this.choujiangJieGuo = null;
			let zhongjiang = this.chuliganlv();
			this.$nextTick(function() {
				this.aniOff = false;
				let duration = this.duration;
				let playcCisu = 0; //总次数的序列。
				// 循环的内部索引.
				let nbIndex = 0;
				function aniOpen(){
					if(nbIndex>t.listData.length-1){
						nbIndex = 0;
						t.active = nbIndex;
					}else{
						t.active = nbIndex;
						nbIndex += 1;
					}
					clearTimeout(t.timeid);
					t.timeid = setTimeout(function() {
						playcCisu +=1;
						if(playcCisu > zhongjiang.playNum){
							t.$emit('end',{index:zhongjiang.index,data:zhongjiang.data})
							t.choujiangJieGuo = zhongjiang;
							t.aniOff = true;
						}else{
							aniOpen();
						}
					}, duration);
				}
				aniOpen();
			});
		},

	}
};
</script>

<style lang="less" scoped>
.tm-choujiangGrid {
	overflow: hidden;
	.tm-choujiangGrid-bg{
		width:600upx;
		height: 600upx;
		position: relative;
		margin: auto;
		background-repeat: no-repeat;
		background-size: cover;
		.tm-choujiangGrid-con{
			position: absolute;
			
			width: 450upx;
			height: 450upx;
			top: 75upx;
			left: 75upx;
			.tm-choujiangGrid-grid{
				display: flex;
				justify-content: space-between;
				.tm-choujiangGrid-item{
					width: 137upx;
					height: 130upx;
					border-radius: 20upx;
					overflow: hidden;
					margin-left: 10upx;
					position: relative;
					margin-bottom: 28upx;
					.tm-choujiangGrid-item-img{
						width: 100%;
						height: 100%;
						color: black;
						&.tm-choujiangGrid-item-point{
						animation: scalanit 1s linear infinite;	
						}
					}
					.tm-choujiangGrid-item-hover{
						width: 100%;
						height: 100%;
						position: absolute;
						top: 0;
						left: 0;
						background-color: #ffaa17;
						opacity: 0;
						&.on{
							opacity: 0.6;
						}
					}
				}
			}
		}
	}
}
@keyframes  scalanit {
	0%{
		transform: scale(0.9);
	}
	50%{
		transform: scale(1.1);
	}
	100%{
		transform: scale(0.9);
	}
}
</style>