123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- var app = getApp();
- var api = require('../config/api.js');
- function formatTime(date) {
- var year = date.getFullYear();
- var month = date.getMonth() + 1;
- var day = date.getDate();
- var hour = date.getHours();
- var minute = date.getMinutes();
- var second = date.getSeconds();
- return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':');
- }
- function formetdate(date) {
- var year = date.getFullYear();
- var month = date.getMonth() + 1;
- var day = date.getDate();
- return [year, month, day].map(formatNumber).join('-');
- }
- function formatNumber(n) {
- n = n.toString();
- return n[1] ? n : '0' + n;
- }
- function formatDates(dates) {
- // 将日期字符串分割为年、月、日
- const [year, month, day] = dates.split('-');
- // 返回格式化后的日期字符串,不包含年份
- return bookdate = `${month}-${day}`
- }
- /**
- * 封封微信的的request
- */
- function request(url, data = {}, method = 'GET') {
- return new Promise(function(resolve, reject) {
- uni.request({
- url: url,
- data: data,
- method: method,
- header: {
- 'Content-Type': 'application/json',
- 'X-DOUYIN-Token': uni.getStorageSync('token'),
- 'app-id': api.appid
- },
- success: function(res) {
- if (res.statusCode == 200) {
- if (res.data.errno == 501) {
- // 清除登录相关内容
- try {
- uni.removeStorageSync('userInfo');
- uni.removeStorageSync('token');
- uni.removeStorageSync('openId');
- } catch (e) {
- console.log('CatchClause', e);
- console.log('CatchClause', e);
- } // Do something when catch error
- // 切换到登录页面
- uni.navigateTo({
- url: '/pages/auth/login/login'
- });
- } else {
- resolve(res.data);
- }
- } else {
- reject(res.errMsg);
- }
- },
- fail: function(err) {
- reject(err);
- }
- });
- });
- }
- function redirect(url) {
- //判断页面是否需要登录
- uni.redirectTo({
- url: url
- });
- }
- function showErrorToast(msg) {
- uni.showToast({
- title: msg,
- image: '/static/images/icon_error.png'
- });
- }
- function formatweek(date) {
- let week = date.getDay();
- let weekArr = '';
- switch (week) {
- case 1:
- weekArr = '周一';
- break;
- case 2:
- weekArr = '周二';
- break;
- case 3:
- weekArr = '周三';
- break;
- case 4:
- weekArr = '周四';
- break;
- case 5:
- weekArr = '周五';
- break;
- case 6:
- weekArr = '周六';
- break;
- case 0:
- weekArr = '周日';
- break;
- }
- return weekArr;
- }
- function getDateList(date, interval, length) {
- let dateList = [];
- let len = length ? length : 7;
- for (let i = 0; i < len; i++) {
- let datestamp = new Date(date.getTime() + i * 60 * 60 * 1000 * 24 * interval);
- let dateItem = {
- week: formatweek(datestamp),
- date: formetdate(datestamp),
- id: new Date(datestamp).getDay(),
- isBook: true,
- //是否可约
- name: i == 0 ? '今天' : i == 1 ? '明天' : '',
- mark: '' //标注是否不可约的原因之类的
- };
- //如果当前时间+4大于18点 不返回当日可约时间
- if (new Date().getHours() >= 14 && i == 0) {
- continue;
- }
- dateList.push(dateItem);
- }
- return dateList;
- }
- function dateDifference(end) {
- // //比较2个日期
- // console.log(start + ",," + end);
- // var stime = new Date(start).getTime();
- var stime = new Date().getTime();
- console.log(end.replace(/-/g, '/'));
- var etime = new Date(end.replace(/-/g, '/')).getTime();
- var usedTime = etime - stime; //两个时间戳相差的毫秒数
- var days = Math.floor(usedTime / 86400000);
- //计算出小时数
- var leave1 = usedTime % 86400000; //计算天数后剩余的毫秒数
- var hours = Math.floor(leave1 / 3600000);
- //计算相差分钟数
- var leave2 = leave1 % 3600000; //计算小时数后剩余的毫秒数
- var minutes = Math.floor(leave2 / 60000);
- if (days == 0 && hours == 0) {
- return minutes + '分钟';
- }
- if (days == 0) {
- return hours + '时' + minutes + '分钟';
- }
- var time = days + '天' + hours + '时' + minutes + '分钟';
- // var time = days;
- return time;
- }
- function getBeginTimeList(time, type, dateName) {
- let timeList = [];
- if (time && time != null) {
- let startTime = 8;
- let endTime = '';
- if (type == 1) {
- startTime = 8;
- endTime = 21 - time > 12 ? 12 : 21 - time;
- } else {
- startTime = 12;
- endTime = 21 - time > 12 ? 21 - time : 12;
- }
- //控制当天的日期返回:当天可约时间 不能小于12点或当前时间+4小时 过14点 今日全天不可约
- if (dateName == '今天') {
- let date = new Date();
- let hour = date.getHours() + 4;
- if (date.getMinutes() > 30) {
- hour = hour + 1;
- }
- startTime = hour;
- if (hour > 18 || type == 1) {
- return [];
- } else if (hour < 12 && type == 2) {
- startTime = 12;
- }
- }
- //如果是今天20点后 预约明天 也是不可以约12点前
- if (dateName == '明天') {
- let date = new Date();
- if (date.getHours() >= 20 && type == 1) {
- return [];
- }
- }
- for (let i = startTime; i <= endTime; i++) {
- if (type == 2 && i == 12) {
- let halfTime = i < 10 ? '0' + i + ':30' : i + ':30';
- timeList.push({
- time: halfTime,
- value: i + 0.5
- });
- } else if (i < endTime) {
- let intTime = i < 10 ? '0' + i + ':00' : i + ':00';
- let halfTime = i < 10 ? '0' + i + ':30' : i + ':30';
- timeList.push({
- time: intTime,
- value: i
- });
- timeList.push({
- time: halfTime,
- value: i + 0.5
- });
- } else {
- let intTime = i < 10 ? '0' + i + ':00' : i + ':00';
- timeList.push({
- time: intTime
- });
- }
- }
- }
- return timeList;
- }
- function creadUuid() {
- var s = [];
- var hexDigits = "0123456789abcdef";
- for (var i = 0; i < 36; i++) {
- s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
- }
- s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
- s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
- s[8] = s[13] = s[18] = s[23] = "-";
- let uuid = s.join("");
- return uuid;
- };
- //
- function addLog(inorout, pageId, eventId, parms) {
- var pages = getCurrentPages();
- var prePageUrl = "";
- if (pages.length >= 2) {
- var prevPage = pages[pages.length - 2]; //取上个页面
- prePageUrl = prevPage.route; //上个页面路径
- }
- var app = getApp();
- let userInfo = uni.getStorageSync('userInfo');
- request(api.addLog, {
- "uunid": app.globalData.uuid,
- "userOpenid": app.globalData.openId,
- "userId": userInfo.id ? userInfo.id : null,
- "inorout": inorout ? inorout : 1,
- "pageId": pageId,
- "prePageUrl": prePageUrl,
- "eventId": eventId,
- "parms": parms ? JSON.stringify(parms) : null,
- // #ifdef MP-TOUTIAO
- "ofSys": 1,
- // #endif
- // #ifdef MP-ALIPAY
- "ofSys": 3,
- //#endif
- }, 'POST').then((res) => {
- if (res.errno === 0) {
- console.log('addLog' + res);
- }
- })
- }
- function getNextSevenDaysFromToday() {
- const today = new Date(); // 获取今天的日期
- const dayOfMonth = today.getDate(); // 获取今天的“日”部分
- const month = today.getMonth(); // 获取今天的“月”部分
- const year = today.getFullYear(); // 获取今年的年份
- // 判断是否需要跨年
- const isLeapYear = (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
- const daysInMonth = month === 1 ? (isLeapYear ? 29 : 28) : (month + 1) % 12 === 0 ? 31 : 30;
- let nextDays = [];
- for (let i = 1; i <= 7; i++) {
- const nextDay = new Date(year, month, dayOfMonth + i);
- nextDays.push(nextDay.getDate());
- }
- // 移除今天
- nextDays = nextDays.filter(day => day !== dayOfMonth);
- return nextDays;
- }
- // 用于存储之前改变的两个元素的索引
- let changedIndexes = [];
- // 函数用于随机改变两个元素的 dateType 值,并恢复上一次改变的元素
- function changeRandomTwoElementsDateType(array) {
- const indexes = array.map((_, index) => index);
- let randomIndexes;
- // 如果之前有改变的元素,先恢复它们
- if (changedIndexes.length === 2) {
- array[changedIndexes[0]].dateType = 0;
- array[changedIndexes[1]].dateType = 0;
- changedIndexes = []; // 清空上一次的索引
- }
- // 随机选择两个不重复的索引
- randomIndexes = [];
- while (randomIndexes.length < 2) {
- const index = indexes[Math.floor(Math.random() * indexes.length)];
- if (!randomIndexes.includes(index)) {
- randomIndexes.push(index);
- }
- }
- // 改变这两个元素的 dateType 值并保存索引
- changedIndexes = randomIndexes;
- array[changedIndexes[0]].dateType = 1;
- array[changedIndexes[1]].dateType = 1;
- return array;
- }
- module.exports = {
- changeRandomTwoElementsDateType,
- getNextSevenDaysFromToday,
- formatTime,
- formetdate,
- request,
- redirect,
- showErrorToast,
- formatweek,
- getDateList,
- dateDifference,
- getBeginTimeList,
- creadUuid,
- addLog,
- formatDates
- };
|