1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <template>
- <div class="countdown-timer" v-if="!isCountdownFinished">
- <div>{{ remainingTime }}</div>
- <div>浏览得积分 +{{ score }}</div>
- </div>
- </template>
- <script>
- export default {
- name: 'CountdownTimer',
- props: {
- duration: {
- type: Number,
- require: true
- },
- onEnd: {
- type: Function,
- require: true
- },
- score: {
- type: Number,
- default: 100
- }
- },
- data() {
- return {
- count: 100,
- remainingTime: this.duration,
- isCountdownFinished: false // 倒计时是否结束
- }
- },
- mounted() {
- this.startTimer()
- },
- beforeUnmount() {
- this.stopTimer()
- },
- methods: {
- startTimer() {
- this.timer = setInterval(() => {
- if (this.remainingTime > 0) {
- this.remainingTime--
- // this.count = this.count - 6.67
- } else {
- this.stopTimer()
- this.isCountdownFinished = true // 设置倒计时结束状态
- this.onEnd()
- }
- }, 1000)
- },
- stopTimer() {
- clearInterval(this.timer)
- }
- }
- }
- </script>
- <style scoped>
- .countdown-timer {
- position: fixed;
- right: 20px;
- top: 30%;
- text-align: center;
- transform: translateY(-50%);
- background-color: rgba(0, 0, 0, 0.5);
- color: white;
- padding: 10px;
- border-radius: 5px;
- font-size: 16px;
- }
- </style>
|