|
|
<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>
|