<template>
	<view class="wallet_class">
		<view class="pay-pwd-input" v-if="pawType==='one'" :style="'width:' + width + 'rpx'" @tap="tokey">
			<view class="pay-pwd-grid uni-flex uni-row" v-for="(value, index) in payPwdGrid" :key="index">
				<view :style="('width:'+ width1 + 'rpx;') + ((focusType&&(index==list.length))?borderCheckStyle:'') ">{{value.text}}</view>
			</view>
		</view>
		<view class="input-row" v-if="pawType==='two'" :style="'width:' + width + 'rpx'" @tap="tokey">
			<view class="pay-pwd-grid uni-flex uni-row" v-for="(value, index) in payPwdGrid" :key="index">
				<view :class="'item'" :style="('width:'+ width1 + 'rpx;') + ((focusType&&(index==list.length))?borderCheckStyle:'') ">{{ value.text  }}</view>
			</view>
		</view>
		<input v-if="keyType" :type="inputType" :style="'width:' + width + 'rpx'" :maxlength="places" class="input_info" @input="inputVal"
		 @focus="focus" @blur="blur" />
	</view>
</template>

<script>
	export default {
		name: 'wallet_category',
		props: {
			pawType: { //输入框样式
				type: String,
				default: 'one'
			},
			places: { // 密码框位数
				type: Number,
				default: 6
			},
			width: {
				type: Number,
				default: 750
			},
			borderCheckStyle: {
				type: String,
				default: 'border: 1px solid #f00;'
			},
			codes: {
				type: String,
				default: ''
			},
			keyType: {
				type: Boolean,
				default: true
			},
			isPwy:{
				type: Boolean,
				default: true
			},
			inputType:{
				type: String,
				default: 'number'
			}
		},
		data() {
			return {
				focusType: false,
				width1: 110,
				list: [],
				payPwdGrid: []
			}
		},
		mounted() {
			// 组件文档地址：https://ext.dcloud.net.cn/plugin?id=2695
			this.list = this.codes.split('')
			this.width1 = (this.width - 90) / this.places
			this.payPwdGrid = []
			for (let a = 0; a < this.places; a++) {
				this.payPwdGrid.push({
					text: ''
				})
			}
			if(this.isPwy){
				for (let a = 0; a < this.list.length; a++) {
					this.payPwdGrid[a].text = '●'
				}
			}else{
				for (let a = 0; a < this.list.length; a++) {
					this.payPwdGrid[a].text = this.list[a]
				}
			}
		},
		watch: {
			places() {
				this.list = this.codes.split('')
				this.width1 = (this.width - 90) / this.places
				this.payPwdGrid = []
				for (let a = 0; a < this.places; a++) {
					this.payPwdGrid.push({
						text: ''
					})
				}
				if(this.isPwy){
					for (let a = 0; a < this.list.length; a++) {
						this.payPwdGrid[a].text = '●'
					}
				}else{
					for (let a = 0; a < this.list.length; a++) {
						this.payPwdGrid[a].text = this.list[a]
					}
				}
			},
			codes() {
				this.list = this.codes.split('')
				this.payPwdGrid = []
				for (let a = 0; a < this.places; a++) {
					this.payPwdGrid.push({
						text: ''
					})
				}
				if(this.isPwy){
					for (let a = 0; a < this.list.length; a++) {
						this.payPwdGrid[a].text = '●'
					}
				}else{
					for (let a = 0; a < this.list.length; a++) {
						this.payPwdGrid[a].text = this.list[a]
					}
				}
				this.$emit('inputVal', this.codes);
			}
		},
		methods: {
			focus() {
				this.focusType = true
			},
			blur() {
				this.focusType = false
			},
			tokey(){
				this.$emit('tokey');
			},
			inputVal(e) {
				let inputValues = e.detail.value;
				this.list = inputValues.split('')
				this.payPwdGrid = []
				for (let a = 0; a < this.places; a++) {
					this.payPwdGrid.push({
						text: ''
					})
				}
				if(this.isPwy){
					for (let a = 0; a < this.list.length; a++) {
						this.payPwdGrid[a].text = '●'
					}
				}else{
					for (let a = 0; a < this.list.length; a++) {
						this.payPwdGrid[a].text = this.list[a]
					}
				}
				this.$emit('inputVal', inputValues);
			}
		}
	}
</script>

<style lang="scss" scoped>
	.wallet_class {
		position: relative;
		height: 100%;

		.pay-pwd-input {
			height: 100%;
			line-height: 100%;
			display: flex;
			justify-content: flex-start;

			.pay-pwd-grid {
				margin: 0upx auto;
				height: 100%;
				line-height: 100%;
				display: flex;
				justify-content: center;

				view {
					width: 110upx;
					height: 100%;
					display: flex;
					align-items: center;
					justify-content: center;
					border: #cececd solid 0.1upx;
					border-radius: 10upx;
					font-size: 36upx;
					font-weight: 600;
				}

				.xaunz {
					border: #f00 solid 0.1upx;
				}
			}
		}

		.input-row {
			height: 100%;
			line-height: 100%;
			display: flex;
			justify-content: flex-start;

			.pay-pwd-grid {
				margin: 0upx auto;
				height: 100%;
				line-height: 100%;
				display: flex;
				justify-content: center;

				.item {
					width: 110rpx;
					height: 100%;
					display: flex;
					align-items: center;
					justify-content: center;
					font-size: 36upx;
					font-weight: 600;
					border-bottom: 1px solid #c8c8c8;
				}

				.item-active {
					position: relative;
					transform: scale(1.2);
				}
			}

		}

		.input_info {
			width: 1200rpx;
			height: 100%;
			line-height: 100%;
			opacity: 0;
			position: absolute;
			top: 0rpx;
			left: 0;
		}
	}
</style>
