2024-12-13 10:32:46 +00:00
|
|
|
// template/admission-box/admission-box.js
|
|
|
|
var miucms = require('../../utils/miucms.js');
|
|
|
|
var common = require('../../utils/commonMethod.js');
|
|
|
|
const util = require("../../utils/util")
|
|
|
|
const app = getApp()
|
|
|
|
Component({
|
|
|
|
/**
|
|
|
|
* 组件的属性列表
|
|
|
|
*/
|
|
|
|
properties: {
|
|
|
|
initFinish: {
|
|
|
|
type: Boolean,
|
|
|
|
value: false,
|
|
|
|
observer(res) {
|
|
|
|
if (res) this.getAdmissionsOfficer()
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 组件的初始数据
|
|
|
|
*/
|
|
|
|
data: {
|
|
|
|
urls: [],
|
|
|
|
countdownInterval: null,
|
|
|
|
countDown: {
|
|
|
|
days: 0,
|
|
|
|
hours: '00',
|
|
|
|
minutes: '00',
|
|
|
|
seconds: '00',
|
|
|
|
},
|
|
|
|
|
|
|
|
admissionCurrent: 0,
|
|
|
|
|
|
|
|
countDownState: false,
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 组件的方法列表
|
|
|
|
*/
|
|
|
|
methods: {
|
|
|
|
getAdmissionsOfficer() {
|
2025-01-07 11:04:58 +00:00
|
|
|
util.wxget('/api/project.other/admissionOfficerIn').then(res => {
|
2024-12-13 10:32:46 +00:00
|
|
|
if (res.code != 200) return
|
|
|
|
const data = res.data || []
|
|
|
|
const today = new Date()
|
|
|
|
today.setHours(0, 0, 0, 0)
|
2025-01-07 11:04:58 +00:00
|
|
|
let list = []
|
|
|
|
for (var i in data) {
|
|
|
|
const item = data[i];
|
|
|
|
for (var ii in item) {
|
|
|
|
const ite = item[ii];
|
|
|
|
list.push(...ite)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
let urls = []
|
|
|
|
console.log("list", list);
|
|
|
|
list.forEach(element => {
|
|
|
|
|
|
|
|
element.urls.forEach(ele => {
|
|
|
|
urls.push({
|
|
|
|
...ele,
|
|
|
|
logo: element.schoollogo
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
urls.sort((a, b) => b.rank - a.rank);
|
|
|
|
urls.forEach(element => {
|
2024-12-13 10:32:46 +00:00
|
|
|
let mold = null
|
|
|
|
let timestamp = ""
|
|
|
|
if (!element.date || (typeof element.date == 'string' && element.date.indexOf("答疑") >= 0)) mold = 3;
|
|
|
|
else {
|
2025-01-07 11:04:58 +00:00
|
|
|
const date = new Date(element.date);
|
2024-12-13 10:32:46 +00:00
|
|
|
if (!isNaN(date.getTime())) {
|
|
|
|
if (date >= today) mold = 1
|
|
|
|
else mold = 2
|
|
|
|
if (Date.now() < date.getTime()) timestamp = date.getTime() - Date.now()
|
|
|
|
} else mold = 3
|
|
|
|
}
|
|
|
|
|
|
|
|
element['mold'] = mold
|
|
|
|
element['timestamp'] = timestamp
|
|
|
|
})
|
|
|
|
|
|
|
|
this.setData({
|
2025-01-07 11:04:58 +00:00
|
|
|
urls,
|
2024-12-13 10:32:46 +00:00
|
|
|
})
|
|
|
|
|
2025-01-07 11:04:58 +00:00
|
|
|
if (urls.length != 0) this.setCountDown(0)
|
2024-12-13 10:32:46 +00:00
|
|
|
})
|
|
|
|
},
|
|
|
|
|
|
|
|
bindanimationfinish(e) {
|
|
|
|
const current = e.detail.current || 0
|
|
|
|
this.setData({
|
|
|
|
admissionCurrent: current
|
|
|
|
})
|
|
|
|
|
|
|
|
this.setCountDown(current)
|
|
|
|
},
|
|
|
|
|
|
|
|
setCountDown(index) {
|
|
|
|
const urls = this.data.urls
|
|
|
|
clearTimeout(this.data.countdownInterval);
|
|
|
|
if (urls[index]['timestamp']) this.startCountdown(urls[index]['timestamp'])
|
|
|
|
else {
|
|
|
|
this.setData({
|
|
|
|
countDownState: false,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
startCountdown(duration) {
|
|
|
|
clearTimeout(this.data.countdownInterval);
|
|
|
|
let timer = duration;
|
|
|
|
const days = Math.floor(timer / (24 * 60 * 60 * 1000));
|
|
|
|
const hours = Math.floor((timer % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000));
|
|
|
|
const minutes = Math.floor((timer % (60 * 60 * 1000)) / (60 * 1000));
|
|
|
|
const seconds = Math.floor(timer % (60 * 1000) / 1000);
|
|
|
|
this.setData({
|
|
|
|
countDown: {
|
|
|
|
days,
|
|
|
|
hours: hours.toString().padStart(2, '0'),
|
|
|
|
minutes: minutes.toString().padStart(2, '0'),
|
|
|
|
seconds: seconds.toString().padStart(2, '0'),
|
|
|
|
},
|
|
|
|
countDownState: true,
|
|
|
|
});
|
|
|
|
timer = timer - 1000
|
|
|
|
if (timer > 0) this.data.countdownInterval = setTimeout(() => this.startCountdown(timer), 1000)
|
|
|
|
},
|
|
|
|
|
|
|
|
goPage(e) {
|
|
|
|
const url = e.currentTarget.dataset.url
|
|
|
|
common.goPage(url)
|
|
|
|
},
|
|
|
|
}
|
|
|
|
})
|