1、业务背景
还款业务,设置每月还款日,选每月几号扣款,不需要29、30、31,因为不是每个月都有这三天的
2、预期效果图
3、代码实现
3.1 初始化vue项目
地址:https://cn.vuejs.org/guide/introduction.html
3.2 在项目中应用elementUI
地址:https://element.eleme.io/#/zh-CN/component/installation
3.3 在main.js中引用
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import App from './App' import router from './router'
Vue.use(ElementUI)
new Vue({ el: '#app', router, components: { App }, template: '<App/>' })
|
3.4 编写字母按钮组件(完整代码在最后)
1 2 3 4 5 6 7 8 9 10 11 12
| <template> <div class='box'> <span class='inner' @click='selectClick(index, item)' :class="'list_'+index" v-for='(item, index) in numberArr' :key='index' >{{ item }}</span > </div> </template>
|
3.5 引用字母按钮组件(完整代码在最后)
1 2 3 4 5 6 7 8 9 10 11 12 13
| <template> <div id="app"> <button @click="handleNumberClick">点击调用获取还款日组件方法</button> <el-dialog title="设置还款日" append-to-body :visible.sync="showDialog" width="350px"> <number-select ref="numberSelect" :showDialog="showDialog" @hideModal="hideModal" /> </el-dialog> <div>设置还款日期为{{this.sendNum}}</div> </div> </template>
|
4、实际效果图
5、完整代码
5.1 设置还款日组件页面 NumberSelect.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| <template> <div class='box'> <span class='inner' @click='selectClick(index, item)' :class="'list_'+index" v-for='(item, index) in numberArr' :key='index' >{{ item }}</span > </div> </template>
<script> export default { props: { sendNumber: Number, showDialog: { type: Boolean, default: false, required: true } }, name: 'numberSelect', data () { return { numberArr: [], index: 0 } }, methods: { selectClick (idx, item) { this.sendNum = item var len = this.numberArr.length for (var i = 0; i < len; i++) { if (i === idx) { document.getElementsByClassName( 'list_' + i )[0].style.backgroundColor = 'skyblue' } else { document.getElementsByClassName( 'list_' + i )[0].style.backgroundColor = '' } } this.$emit('hideModal') } }, created () { for (var i = 1; i <= 28; i++) { this.numberArr.push(i) } } } </script>
<style> .box { margin: 0 auto; background-color: #fff; width: 300px; height: 240px; display: flex; flex-wrap: wrap; } .inner { margin-left: 10px; margin-top: 10px; text-align: center; line-height: 30px; width: 30px; height: 30px; border: 1px solid #000; border-radius: 50%; background-color: #fff; display: inline-block; cursor: pointer; } </style>
|
5.2 设置还款日组件页面 NumberSelect.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| <template> <div id="app"> <button @click="handleNumberClick">点击调用获取还款日组件方法</button> <el-dialog title="设置还款日" append-to-body :visible.sync="showDialog" width="350px"> <number-select ref="numberSelect" :showDialog="showDialog" @hideModal="hideModal" /> </el-dialog> <div>设置还款日期为{{this.sendNum}}</div> </div> </template>
<script> import NumberSelect from './components/NumberSelect.vue' export default { components: { NumberSelect }, name: 'App', data () { return { showDialog: false, sendNum: 0 } }, methods: { handleNumberClick () { this.showDialog = true }, hideModal () { this.showDialog = false console.log('确认的数字为:' + this.$refs.numberSelect.sendNum) this.sendNum = this.$refs.numberSelect.sendNum } } } </script>
<style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
|
若本文有帮助到阅读本文的同学,欢迎点赞、关注、收藏,互相学习交流。