You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							235 lines
						
					
					
						
							4.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							235 lines
						
					
					
						
							4.9 KiB
						
					
					
				
								<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>
							 |