| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <template>
- <view class="xm-keyboard-v2">
- <xm-popup :show="isShow" @close="toCancel" background="#d4d5d9" :showContent="showContent" :anim="anim">
- <view style="background-color: #FFF;">
- <view class="xm-flex xm-title" v-if="title">
- {{ title }}
- </view>
- <view style="padding: 10px;">
- <xm-keyboard-input ref="keyboardInput" @change="inputChange" :cursor="cursor"
- :show-pointer="type == 'plate'" :max="max"></xm-keyboard-input>
- </view>
- </view>
- <xm-keyboard-box ref="keyboardBox" :show-change-btn="type == 'plate'" :show-cancel-btn="!showContent"
- :vibration="vibration" :disable="disable" @add="inputAdd" @del="inputDel" @clear="inputClear"
- @cancel="toCancel" @confirm="toConfirm"></xm-keyboard-box>
- </xm-popup>
- </view>
- </template>
- <script>
- export default {
- name: 'xm-keyboard-v2',
- emits: ['confirm', 'cancel'],
- props: {
- title: {
- type: String,
- default: ''
- },
- cursor: {
- type: Boolean,
- default: false
- },
- vibration: {
- type: Boolean,
- default: false
- },
- type: {
- type: String,
- default: 'plate'
- },
- max: {
- type: Number,
- default: 8,
- },
- showContent: {
- type: Boolean,
- default: false
- },
- // 是否加入动画效果
- anim: {
- type: Boolean,
- default: true
- },
- // 禁用某些按钮
- disable: {
- required: false,
- default: () => ('')
- },
- },
- data() {
- return {
- isShow: false,
- value: '',
- }
- },
- methods: {
- toShow(value) {
- this.value = value || '';
- this.isShow = true;
- this.$refs.keyboardInput.changeValue(this.value);
- },
- toConfirm() {
- this.isShow = false;
- let value = this.$refs.keyboardInput.values.join('')
- this.$emit('confirm', value);
- },
- toCancel() {
- this.isShow = false;
- this.$emit('cancel');
- },
- inputChange(index) {
- if (this.type == 'plate') {
- this.$refs.keyboardBox.changeMode(index == 0 ? 0 : 1);
- } else {
- this.$refs.keyboardBox.changeMode(1);
- }
- },
- inputAdd(v) {
- this.$refs.keyboardInput.toAdd(v);
- },
- inputDel() {
- this.$refs.keyboardInput.toDel();
- },
- inputClear() {
- this.$refs.keyboardInput.toClear();
- }
- },
- }
- </script>
- <style lang="scss" scoped>
- .xm-keyboard-v2 {
- .xm-flex {
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .xm-title {
- padding: 20px 0 10px 0;
- font-weight: bold;
- }
- }
- </style>
|