开始做登录
This commit is contained in:
1
node_modules/@vant/weapp/dist/count-down/index.d.ts
generated
vendored
Normal file
1
node_modules/@vant/weapp/dist/count-down/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export {};
|
100
node_modules/@vant/weapp/dist/count-down/index.js
generated
vendored
Normal file
100
node_modules/@vant/weapp/dist/count-down/index.js
generated
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
import { VantComponent } from '../common/component';
|
||||
import { isSameSecond, parseFormat, parseTimeData } from './utils';
|
||||
function simpleTick(fn) {
|
||||
return setTimeout(fn, 30);
|
||||
}
|
||||
VantComponent({
|
||||
props: {
|
||||
useSlot: Boolean,
|
||||
millisecond: Boolean,
|
||||
time: {
|
||||
type: Number,
|
||||
observer: 'reset',
|
||||
},
|
||||
format: {
|
||||
type: String,
|
||||
value: 'HH:mm:ss',
|
||||
},
|
||||
autoStart: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
},
|
||||
data: {
|
||||
timeData: parseTimeData(0),
|
||||
formattedTime: '0',
|
||||
},
|
||||
destroyed() {
|
||||
clearTimeout(this.tid);
|
||||
this.tid = null;
|
||||
},
|
||||
methods: {
|
||||
// 开始
|
||||
start() {
|
||||
if (this.counting) {
|
||||
return;
|
||||
}
|
||||
this.counting = true;
|
||||
this.endTime = Date.now() + this.remain;
|
||||
this.tick();
|
||||
},
|
||||
// 暂停
|
||||
pause() {
|
||||
this.counting = false;
|
||||
clearTimeout(this.tid);
|
||||
},
|
||||
// 重置
|
||||
reset() {
|
||||
this.pause();
|
||||
this.remain = this.data.time;
|
||||
this.setRemain(this.remain);
|
||||
if (this.data.autoStart) {
|
||||
this.start();
|
||||
}
|
||||
},
|
||||
tick() {
|
||||
if (this.data.millisecond) {
|
||||
this.microTick();
|
||||
}
|
||||
else {
|
||||
this.macroTick();
|
||||
}
|
||||
},
|
||||
microTick() {
|
||||
this.tid = simpleTick(() => {
|
||||
this.setRemain(this.getRemain());
|
||||
if (this.remain !== 0) {
|
||||
this.microTick();
|
||||
}
|
||||
});
|
||||
},
|
||||
macroTick() {
|
||||
this.tid = simpleTick(() => {
|
||||
const remain = this.getRemain();
|
||||
if (!isSameSecond(remain, this.remain) || remain === 0) {
|
||||
this.setRemain(remain);
|
||||
}
|
||||
if (this.remain !== 0) {
|
||||
this.macroTick();
|
||||
}
|
||||
});
|
||||
},
|
||||
getRemain() {
|
||||
return Math.max(this.endTime - Date.now(), 0);
|
||||
},
|
||||
setRemain(remain) {
|
||||
this.remain = remain;
|
||||
const timeData = parseTimeData(remain);
|
||||
if (this.data.useSlot) {
|
||||
this.$emit('change', timeData);
|
||||
}
|
||||
this.setData({
|
||||
formattedTime: parseFormat(this.data.format, timeData),
|
||||
});
|
||||
if (remain === 0) {
|
||||
this.pause();
|
||||
this.$emit('finish');
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
3
node_modules/@vant/weapp/dist/count-down/index.json
generated
vendored
Normal file
3
node_modules/@vant/weapp/dist/count-down/index.json
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"component": true
|
||||
}
|
4
node_modules/@vant/weapp/dist/count-down/index.wxml
generated
vendored
Normal file
4
node_modules/@vant/weapp/dist/count-down/index.wxml
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<view class="van-count-down">
|
||||
<slot wx:if="{{ useSlot }}"/>
|
||||
<block wx:else>{{ formattedTime }}</block>
|
||||
</view>
|
1
node_modules/@vant/weapp/dist/count-down/index.wxss
generated
vendored
Normal file
1
node_modules/@vant/weapp/dist/count-down/index.wxss
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
@import '../common/index.wxss';.van-count-down{color:var(--count-down-text-color,#323233);font-size:var(--count-down-font-size,14px);line-height:var(--count-down-line-height,20px)}
|
10
node_modules/@vant/weapp/dist/count-down/utils.d.ts
generated
vendored
Normal file
10
node_modules/@vant/weapp/dist/count-down/utils.d.ts
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
export type TimeData = {
|
||||
days: number;
|
||||
hours: number;
|
||||
minutes: number;
|
||||
seconds: number;
|
||||
milliseconds: number;
|
||||
};
|
||||
export declare function parseTimeData(time: number): TimeData;
|
||||
export declare function parseFormat(format: string, timeData: TimeData): string;
|
||||
export declare function isSameSecond(time1: number, time2: number): boolean;
|
57
node_modules/@vant/weapp/dist/count-down/utils.js
generated
vendored
Normal file
57
node_modules/@vant/weapp/dist/count-down/utils.js
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
function padZero(num, targetLength = 2) {
|
||||
let str = num + '';
|
||||
while (str.length < targetLength) {
|
||||
str = '0' + str;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
const SECOND = 1000;
|
||||
const MINUTE = 60 * SECOND;
|
||||
const HOUR = 60 * MINUTE;
|
||||
const DAY = 24 * HOUR;
|
||||
export function parseTimeData(time) {
|
||||
const days = Math.floor(time / DAY);
|
||||
const hours = Math.floor((time % DAY) / HOUR);
|
||||
const minutes = Math.floor((time % HOUR) / MINUTE);
|
||||
const seconds = Math.floor((time % MINUTE) / SECOND);
|
||||
const milliseconds = Math.floor(time % SECOND);
|
||||
return {
|
||||
days,
|
||||
hours,
|
||||
minutes,
|
||||
seconds,
|
||||
milliseconds,
|
||||
};
|
||||
}
|
||||
export function parseFormat(format, timeData) {
|
||||
const { days } = timeData;
|
||||
let { hours, minutes, seconds, milliseconds } = timeData;
|
||||
if (format.indexOf('DD') === -1) {
|
||||
hours += days * 24;
|
||||
}
|
||||
else {
|
||||
format = format.replace('DD', padZero(days));
|
||||
}
|
||||
if (format.indexOf('HH') === -1) {
|
||||
minutes += hours * 60;
|
||||
}
|
||||
else {
|
||||
format = format.replace('HH', padZero(hours));
|
||||
}
|
||||
if (format.indexOf('mm') === -1) {
|
||||
seconds += minutes * 60;
|
||||
}
|
||||
else {
|
||||
format = format.replace('mm', padZero(minutes));
|
||||
}
|
||||
if (format.indexOf('ss') === -1) {
|
||||
milliseconds += seconds * 1000;
|
||||
}
|
||||
else {
|
||||
format = format.replace('ss', padZero(seconds));
|
||||
}
|
||||
return format.replace('SSS', padZero(milliseconds, 3));
|
||||
}
|
||||
export function isSameSecond(time1, time2) {
|
||||
return Math.floor(time1 / 1000) === Math.floor(time2 / 1000);
|
||||
}
|
Reference in New Issue
Block a user