mirror of
https://gitee.com/niucloud-team/javashop.git
synced 2026-08-01 12:05:49 +00:00
优化 * 平台端 站点端界面改版优化 * 插件支持多选批量升级 * 万能表单 日期组件、时间组件优化 * 万能表单完善语言包 * 微信开放平台管理端优化,增加小程序撤回审核、授权记录 * 插件支持多选批量升级 * 升级框架/插件时,增加是否备份、是否云编译等控制选项 * 操作日志增加清空功能 * 站点端`本地存储`调整为`默认存储`,若无配置,则使用管理端设置的默认存储方式及配置 * 后台提现列表样式优化 * 隐私协议弹框样式优化 * 待付款订单界面优化 * 商品列表 推广支持微信小程序二维码 * 商品分类列表 推广支持微信小程序二维码 * 优惠券列表 推广支持微信小程序二维码 * 重构限时折扣活动,支持添加N个商品,提供扩展性 * 限时折扣增加批量设置减钱、促销价 * 商品搜索页面增加 搜索关键字、排行榜 * 订单退款详情、优惠券领取记录、退款维权详情改为抽屉弹框样式 新增 * 增加升级记录 * 增加备份记录,支持手动备份、恢复等功能 * 增加主题风格,自定义配色功能 * 自定义链接支持扩展,增加万能表单选择 * 自定义页面增加弹窗广告设置 * 平台端增加清理缓存功能 * 增加定时清理计划任务日志数据 * 牛云短信功能 * 会员增加身份证、备注等信息 * 个人资料增加万能表单 * 后台会员列表增加全选所有页/全选当前页,方便批量操作 * 自定义页面增加弹窗广告设置 * 增加定时清理计划任务 * 站点增加初始化操作,用于清空整个站点数据 * 支持第三方云编译服务搭建 * 商品列表,商品分类展示限时折扣标识 * 价格展示逻辑调整,同时参与会员价、限时折扣,优先展示最低价 * 商品榜单列表增加会员价、限时折扣标识 * 商品收藏列表、足迹列表,显示会员价/限时折扣展示 * 同城配送功能新增预约时间设置,支持用户选择具体配送时段,提升配送体验。 * 自定义商品详情 * 增加商品排序设置 * 增加门店自提核销功能 * 优惠券列表增加发劵功能 * 商品列表、商品详情增加副标题展示 * 商品增加视频 * 后台增加`关闭售后`按钮 * 添加/编辑商品,支持选择多个参数模板 * 商品详情左上角返回增加悬浮菜单导航 * 商品品牌支持自定义样式设置 * 商品标签增加复制功能 * 增加商品搜索设置 * 增加商品编码唯一性设置 * 自定义链接增加选择商品、选择商品分类、选择优惠券、选择积分商品 * 满减送列表增加批量关闭、删除功能 * 后台商品列表增加批量操作(商品标签、商品服务、虚拟销量、商品分类、商品品牌、商品海报、是否赠品、配送设置、批量修改库存)
222 lines
6.7 KiB
JavaScript
222 lines
6.7 KiB
JavaScript
//字符串拼接
|
|
function strFormat(str) {
|
|
return str < 10 ? `0${ str }` : str
|
|
}
|
|
|
|
// 获取当前时间
|
|
export function currentTime() {
|
|
const myDate = new Date();
|
|
const y = myDate.getFullYear()
|
|
const m = myDate.getMonth() + 1;
|
|
const d = myDate.getDate();
|
|
const date = y + '-' + strFormat(m) + '-' + strFormat(d)//年月日
|
|
const mdTime = strFormat(m) + '-' + strFormat(d)
|
|
const md = strFormat(m) + '月' + strFormat(d) + '日'
|
|
const hour = myDate.getHours()
|
|
const min = myDate.getMinutes()
|
|
const secon = myDate.getSeconds()
|
|
const seconTime = Math.floor(Date.now() / 1000)
|
|
const time = strFormat(hour) + ':' + strFormat(min) + ':' + strFormat(secon);
|
|
return {
|
|
y,
|
|
md,
|
|
mdTime,
|
|
date,
|
|
time,
|
|
seconTime
|
|
}
|
|
}
|
|
|
|
//时间戳转日期
|
|
export function timeStamp(time, isQuantum) {
|
|
const dates = new Date(time)
|
|
const year = dates.getFullYear()
|
|
const month = dates.getMonth() + 1
|
|
const date = dates.getDate()
|
|
const day = dates.getDay()
|
|
const hour = dates.getHours()
|
|
const min = dates.getMinutes()
|
|
const days = ['日', '一', '二', '三', '四', '五', '六']
|
|
const xinqi = [0, 1, 2, 3, 4, 5, 6]
|
|
return {
|
|
allDate: `${ year }/${ strFormat(month) }/${ strFormat(date) }`,
|
|
date: `${ strFormat(year) }-${ strFormat(month) }-${ strFormat(date) }`, //返回的日期 2000-07-01
|
|
md: `${ strFormat(month) }月${ strFormat(date) }日`,//返回的日期 07月01日
|
|
mdTime: `${ strFormat(month) }-${ strFormat(date) }`, //返回的日期 07-01
|
|
day: `周${ days[day] }`, //返回的礼拜天数 星期一
|
|
dayNum: `${ xinqi[day] }`, //返回的礼拜天数 用于判断左侧设置
|
|
hour: strFormat(hour) + ':' + strFormat(min) + (isQuantum ? "" : ':00') //返回的时钟 08:00
|
|
}
|
|
}
|
|
|
|
//获取最近7天的日期和礼拜天数
|
|
export function initData() {
|
|
const time = []
|
|
const date = new Date()
|
|
|
|
const now = date.getTime() //获取当前日期的时间戳
|
|
let timeStr = 3600 * 24 * 1000 //一天的时间戳
|
|
let obj = {
|
|
0: "今天",
|
|
1: "明天",
|
|
2: "后天"
|
|
}
|
|
for (let i = 0; i < 7; i++) {
|
|
time.push({
|
|
date: timeStamp(now + timeStr * i).date, //保存日期(年月日)
|
|
mdTime: timeStamp(now + timeStr * i).md,
|
|
md: obj[i] ? obj[i] : timeStamp(now + timeStr * i).md,
|
|
timeStamp: now + timeStr * i, //保存时间戳
|
|
week: timeStamp(now + timeStr * i).day,
|
|
dayNum: timeStamp(now + timeStr * i).dayNum,
|
|
disable: false
|
|
})
|
|
}
|
|
return time
|
|
}
|
|
// 预约
|
|
export function initAppointmentData(advanceDay, mostDay) {
|
|
const time = [];
|
|
const date = new Date()
|
|
let timeStr = 3600 * 24 * 1000 //一天的时间戳
|
|
|
|
// 加上今天
|
|
const now = date.getTime() //获取当前日期的时间戳
|
|
// time.push({
|
|
// date: timeStamp(now).date, //保存日期(年月日)
|
|
// mdTime: timeStamp(now).md,
|
|
// md: '今天',
|
|
// timeStamp: now , //保存时间戳
|
|
// week: timeStamp(now).day,
|
|
// dayNum: timeStamp(now).dayNum,
|
|
// disable: false
|
|
// });
|
|
|
|
// 正常预约范围
|
|
for (let i = advanceDay; i <= mostDay; i++) {
|
|
time.push({
|
|
date: timeStamp(now + timeStr * i).date, //保存日期(年月日)
|
|
mdTime: timeStamp(now + timeStr * i).md,
|
|
md: i === 0 ? '今天' : i === 1 ? '明天' : i === 2 ? '后天' : timeStamp(now + timeStr * i).md,
|
|
timeStamp: now + timeStr * i, //保存时间戳
|
|
week: timeStamp(now + timeStr * i).day,
|
|
dayNum: timeStamp(now + timeStr * i).dayNum,
|
|
disable: false
|
|
});
|
|
}
|
|
|
|
return time;
|
|
}
|
|
/**
|
|
* 仅返回“今天”这一项,用于只展示今天场景
|
|
*/
|
|
export function initTodayData() {
|
|
const time = [];
|
|
const date = new Date()
|
|
let timeStr = 3600 * 24 * 1000 //一天的时间戳
|
|
|
|
// 加上今天
|
|
const now = date.getTime() //获取当前日期的时间戳
|
|
time.push({
|
|
date: timeStamp(now).date, //保存日期(年月日)
|
|
mdTime: timeStamp(now).md,
|
|
md: '今天',
|
|
timeStamp: now , //保存时间戳
|
|
week: timeStamp(now).day,
|
|
dayNum: timeStamp(now).dayNum,
|
|
disable: false
|
|
});
|
|
|
|
return time;
|
|
}
|
|
|
|
|
|
//时间数组
|
|
export function initTime(trade_time_json, timeInterval = 0.5, isQuantum = true) {
|
|
const time = [];
|
|
const timeStr = 3600 * timeInterval; // 间隔时间转换成秒
|
|
|
|
trade_time_json.forEach(slot => {
|
|
let start = slot.start_time;
|
|
let end = slot.end_time;
|
|
|
|
for (let i = start; i < end; i += timeStr) {
|
|
let nextTime = i + timeStr > end ? end : i + timeStr;
|
|
|
|
if (isQuantum) {
|
|
time.push({
|
|
begin: timestampTransition(i),
|
|
end: timestampTransition(nextTime),
|
|
disable: false
|
|
});
|
|
} else {
|
|
time.push({
|
|
time: timestampTransition(i),
|
|
disable: false
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
return time;
|
|
}
|
|
|
|
// 带“立即送出”的时间数组,仅用于预约
|
|
export function initTimeWithImmediate(trade_time_json, timeInterval = 0.5, isQuantum = true) {
|
|
const time = [];
|
|
|
|
// 先插入立即送出
|
|
time.push({
|
|
begin: '立即',
|
|
end: '送出',
|
|
value: 'immediate',
|
|
disable: false
|
|
});
|
|
|
|
const timeStr = 3600 * timeInterval; // 间隔时间转秒
|
|
|
|
trade_time_json.forEach(slot => {
|
|
let start = slot.start_time;
|
|
let end = slot.end_time;
|
|
|
|
for (let i = start; i < end; i += timeStr) {
|
|
let nextTime = i + timeStr > end ? end : i + timeStr;
|
|
|
|
if (isQuantum) {
|
|
time.push({
|
|
begin: timestampTransition(i),
|
|
end: timestampTransition(nextTime),
|
|
disable: false
|
|
});
|
|
} else {
|
|
time.push({
|
|
time: timestampTransition(i),
|
|
disable: false
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
return time;
|
|
}
|
|
|
|
|
|
// 时间戳转时间
|
|
export function timestampTransition(timeStamp) {
|
|
let hour = Math.floor(timeStamp / (60 * 60))
|
|
let minute = Math.floor(timeStamp / 60) - (hour * 60)
|
|
let second = timeStamp % 60
|
|
hour = hour < 10 ? ('0' + hour) : hour
|
|
minute = minute < 10 ? ('0' + minute) : minute
|
|
// second = second < 10 ? ( '0' + second ) : second
|
|
return hour + ':' + minute
|
|
}
|
|
|
|
// 时间转时间戳
|
|
export function timeTransition(time) {
|
|
const arr = time.split(':');
|
|
const hours = Number(arr[0]) * 60 * 60;
|
|
const minutes = Number(arr[1]) * 60;
|
|
return hours + minutes;
|
|
}
|