无关风月
2025-11-05 03999bc86cae8402326123b1d92ee7575e29f42e
Merge remote-tracking branch 'origin/2.0' into 2.0
2个文件已修改
92 ■■■■■ 已修改文件
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
@@ -1338,6 +1338,85 @@
}
/**
 * 检查时段是否重叠
 */
TSite.checkTimeOverlap = function(start1, end1, start2, end2) {
    // 将时间字符串转换为分钟数便于比较
    var toMinutes = function(time) {
        var parts = time.split(':');
        return parseInt(parts[0]) * 60 + parseInt(parts[1]);
    };
    var s1 = toMinutes(start1);
    var e1 = toMinutes(end1);
    var s2 = toMinutes(start2);
    var e2 = toMinutes(end2);
    // 检查重叠:时段1的结束时间 > 时段2的开始时间 且 时段1的开始时间 < 时段2的结束时间
    return (e1 > s2 && s1 < e2);
}
/**
 * 验证订场和散客时段不重叠
 */
TSite.validateNoTimeOverlap = function() {
    var bookingTimeSlots = [];
    var walkinTimeSlots = [];
    // 收集订场时段
    $("#booking_price_tbody tr").each(function() {
        var index = $(this).data('index');
        var startTime = $("#booking_start_" + index).val();
        var endTime = $("#booking_end_" + index).val();
        if (startTime && endTime) {
            bookingTimeSlots.push({start: startTime, end: endTime});
        }
    });
    // 收集散客时段
    $("#walkin_price_tbody tr").each(function() {
        var index = $(this).data('index');
        var startTime = $("#walkin_start_" + index).val();
        var endTime = $("#walkin_end_" + index).val();
        if (startTime && endTime) {
            walkinTimeSlots.push({start: startTime, end: endTime});
        }
    });
    // 检查订场时段之间是否重叠
    for (var i = 0; i < bookingTimeSlots.length; i++) {
        for (var j = i + 1; j < bookingTimeSlots.length; j++) {
            if (TSite.checkTimeOverlap(
                bookingTimeSlots[i].start, bookingTimeSlots[i].end,
                bookingTimeSlots[j].start, bookingTimeSlots[j].end
            )) {
                Feng.error("订场价格表中存在重叠的时段:" +
                    bookingTimeSlots[i].start + "-" + bookingTimeSlots[i].end + " 与 " +
                    bookingTimeSlots[j].start + "-" + bookingTimeSlots[j].end);
                return false;
            }
        }
    }
    // 检查散客时段之间是否重叠
    for (var i = 0; i < walkinTimeSlots.length; i++) {
        for (var j = i + 1; j < walkinTimeSlots.length; j++) {
            if (TSite.checkTimeOverlap(
                walkinTimeSlots[i].start, walkinTimeSlots[i].end,
                walkinTimeSlots[j].start, walkinTimeSlots[j].end
            )) {
                Feng.error("散客价格表中存在重叠的时段:" +
                    walkinTimeSlots[i].start + "-" + walkinTimeSlots[i].end + " 与 " +
                    walkinTimeSlots[j].start + "-" + walkinTimeSlots[j].end);
                return false;
            }
        }
    }
    return true;
}
/**
 * 保存所有数据(基本信息+价格配置)
 */
TSite.saveAllData = function() {
@@ -1365,6 +1444,11 @@
        }
    }
    
    // 验证时段不重叠
    if (!TSite.validateNoTimeOverlap()) {
        return;
    }
    // 收集价格数据
    var priceDTOS = TSite.collectPriceData();
    
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
@@ -439,6 +439,14 @@
        Feng.info("请上传消防及应急管理方案")
        return;
    }
    // 验证价格配置时间段不重叠
    // 检查是否有价格配置数据(如果页面上有价格表)
    if ($("#booking_price_tbody tr").length > 0 || $("#walkin_price_tbody tr").length > 0) {
        if (!TSiteInfo.validateNoTimeOverlap()) {
            return;
        }
    }
    var sTime = document.getElementById("start-time"); //获取输入的开始时间
    var eTime  = document.getElementById("end-time"); // 获取输入的结束时间