小程序源码
This commit is contained in:
90
source/wx/xzs-student/component/iView/count-down/index.js
Normal file
90
source/wx/xzs-student/component/iView/count-down/index.js
Normal file
@@ -0,0 +1,90 @@
|
||||
Component({
|
||||
properties: {
|
||||
target: Number,
|
||||
showDay: Boolean,
|
||||
callback: String,
|
||||
format: Array,
|
||||
clearTimer: Boolean
|
||||
},
|
||||
externalClasses: ['countdown-class'],
|
||||
data: {
|
||||
time: '',
|
||||
resultFormat: [],
|
||||
changeFormat: false
|
||||
},
|
||||
ready() {
|
||||
this.getFormat();
|
||||
|
||||
},
|
||||
methods: {
|
||||
getFormat() {
|
||||
const data = this.data;
|
||||
const len = data.format.length;
|
||||
|
||||
if (!data.showDay) data.resultFormat.push('');
|
||||
|
||||
if (len >= 3) {
|
||||
for (let i = 0; i < len; i++) {
|
||||
if (data.resultFormat.length >= 4) break;
|
||||
if (data.format[i]) {
|
||||
data.resultFormat.push(data.format[i].toString());
|
||||
}
|
||||
}
|
||||
|
||||
if (data.resultFormat.length >= 4) data.changeFormat = true;
|
||||
}
|
||||
|
||||
this.getLastTime();
|
||||
},
|
||||
init() {
|
||||
const self = this;
|
||||
setTimeout(function () {
|
||||
self.getLastTime.call(self);
|
||||
}, 1000);
|
||||
},
|
||||
getLastTime() {
|
||||
const data = this.data;
|
||||
const gapTime = Math.ceil((data.target - new Date().getTime()) / 1000);
|
||||
let result = '';
|
||||
let time = '00:00:00';
|
||||
let day = '00';
|
||||
const format = data.resultFormat;
|
||||
|
||||
if (gapTime > 0) {
|
||||
day = this.formatNum(parseInt(gapTime / 86400));
|
||||
let lastTime = gapTime % 86400;
|
||||
const hour = this.formatNum(parseInt(lastTime / 3600));
|
||||
lastTime = lastTime % 3600;
|
||||
const minute = this.formatNum(parseInt(lastTime / 60));
|
||||
const second = this.formatNum(lastTime % 60);
|
||||
|
||||
if (data.changeFormat) time = `${hour}${format[1]}${minute}${format[2]}${second}${format[3]}`;
|
||||
else time = `${hour}:${minute}:${second}`;
|
||||
|
||||
if (!data.clearTimer) this.init.call(this);
|
||||
} else {
|
||||
this.endfn();
|
||||
}
|
||||
|
||||
if (data.showDay) {
|
||||
if (data.changeFormat) {
|
||||
result = `${day}${format[0]} ${time}`;
|
||||
} else {
|
||||
result = `${day}d ${time}`;
|
||||
}
|
||||
} else {
|
||||
result = time;
|
||||
}
|
||||
this.setData({
|
||||
time: result
|
||||
});
|
||||
|
||||
},
|
||||
formatNum(num) {
|
||||
return num > 9 ? num : `0${num}`;
|
||||
},
|
||||
endfn() {
|
||||
this.triggerEvent('callback', {});
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user