| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <template>
- <div class="input-ver">
- <el-input v-model="code" @change="$emit('change', code)" placeholder="请输入验证码"></el-input>
- <el-button :class="{grey: running}" type="text" @click="run">
- <span>{{text}}</span>
- </el-button>
- </div>
- </template>
- <script>
- let time = 60;
- let text = "获取验证码";
- let interval;
- export default {
- data() {
- return {
- // 验证码
- code: "",
- time: time + 1,
- running: false
- };
- },
- computed: {
- text() {
- if (this.time < 1 || this.time > time) {
- this.running = false;
- if (this.time < 1) {
- clearInterval(interval);
- this.time = time + 1;
- this.running = false;
- }
- return text;
- }
- return `重新获取(${this.time}s)`;
- }
- },
- mounted() {},
- methods: {
- run() {
- console.log("running+++++++++");
- console.log(this.running);
- if (this.running) return;
- this.$emit("click", () => {
- this.running = true;
- this.time--;
- interval = setInterval(() => {
- this.time--;
- }, 1000);
- });
- }
- }
- };
- </script>
- <style scoped>
- .input-ver {
- position: relative;
- }
- #getCode {
- /* position: relative; */
- /* width: 100%; */
- /* z-index: 20; */
- }
- .el-button {
- position: absolute;
- top: 0;
- right: 10px;
- }
- .grey {
- color: #909399;
- }
- </style>
|