Number(startHour)) {
Feng.error("预约的开始时间不应小于营业开始时间!")
return false;
} else if (Number(sh) === Number(startHour)) {
if (Number(sm) > Number(startMinute)) {
Feng.error("预约的开始时间不应大于营业开始时间!")
return false;
}
} else if (Number(eh) < Number(startHour)) {
Feng.error("预约的开始时间不应大于营业结束时间!")
return false;
} else if (Number(eh) === Number(startHour)) {
Feng.error("预约的开始时间不应大于等于营业结束时间!")
return false;
}
var end = eTime.value;
var endHour = end.split(':')[0]; // 输入的可预约结束时间:小时
var endMinute = end.split(':')[1];// 输入的可预约结束时间:分钟
if (Number(eh) < Number(endHour)) {
Feng.error("预约的结束时间不应大于营业结束时间!")
return;
} else if (Number(eh) === Number(endHour)) {
if (Number(em) < Number(endMinute)) {
Feng.error("预约的开始时间不应大于开始营业时间!")
return;
}
} else if (Number(sh) > Number(endHour)) {
Feng.error("预约的结束时间不应小于营业开始时间!")
return;
}
if (Number(endHour) === Number(sh)) {
if (Number(endMinute) < Number(sm)) {
Feng.error("预约结束时间不应小于营业开始时间");
return;
}
}
if (Number(startHour) === Number(endHour) && Number(startMinute) === Number(endMinute)) {
Feng.error("至少预约半个小时");
return;
}
}
$.ajax({
url: Feng.ctxPath + "/tSite/addSite" ,
type: "POST",
data: JSON.stringify(data),
contentType: "application/json",
success: function (response) {
window.parent.TSite.table.refresh();
TSite.close();
Feng.success("添加成功");
},
error: function (xhr, status, error) {
Feng.error("添加失败!" + error);
}
});
},
error: function (xhr, status, error) {
var errorMessage = xhr.responseText ? xhr.responseText : "上架失败!";
Feng.error("您的网络异常!");
return false;
}
});
};
TSite.search = function () {
var queryData = {};
queryData['province'] = $("#pCode").val();
queryData['city'] = $("#cCode").val();
queryData['siteTypeId'] = $("#sCode").val();
// 场地名称
queryData['name'] = $("#name").val();
// 门店名称
queryData['storeName'] = $("#storeName").val();
queryData['opId'] = $("#opId").val();
queryData['storeName'] = $("#storeName").val();
TSite.table.refresh({query: queryData});
};
TSite.resetSearch = function () {
$("#pCode").val("");
$("#cCode").val("");
$("#store").val("");
$("#sCode").val("");
$("#storeName").val("");
$("#siteTypeId").val("");
$("#name").val("");
$("#insuranceEndTime").val("");
$("#opId").val("");
$("#storeName").val("");
TSite.search();
};
function UploadFileFn(){
$('#upFile').click();
}
$(function () {
//初始化编辑器
// 检查editor元素是否存在再初始化UEditor
if (document.getElementById('editor')) {
TSite.editor = UE.getEditor('editor');
} else {
console.log("editor元素未找到,跳过UEditor初始化");
// 创建一个空对象,防止后续代码出错
TSite.editor = {
getContent: function() { return ""; },
setContent: function() {}
};
}
// 限制分钟选项为 0 和 30
// var timeInputs = document.querySelectorAll('input[type="time"]');
// timeInputs.forEach(function(input) {
// input.addEventListener('change', function() {
// var selectedTime = input.value;
// var hour = selectedTime.split(':')[0];
// var minute = selectedTime.split(':')[1];
// if (minute < 30 &&minute>0) {
// minute = '30';
// } else if (minute >30) {
// hour++;
// minute = '00';
// if (hour<10){
// hour = '0'+hour;
// }
// }
// input.value = hour + ':' + minute;
// });
// });
var defaultColunms = TSite.initColumn();
var type =$("#type").val();
if (type !== 1){
var table1 = new BSTable(TSite.id, "/tSite/listExipre", defaultColunms);
table1.setPaginationType("client");
TSite.table = table1.init();
}
var table = new BSTable(TSite.id, "/tSite/listAll", defaultColunms);
table.setPaginationType("client");
TSite.table = table.init();
Feng.initValidator("carInfoForm", TSite.validateFields);
var carPhoto = new $WebUpload("img");
carPhoto.setUploadBarId("progressBar");
carPhoto.init();
$('#upFile').on('change', function () {
var formData = new FormData() //创建一个forData
formData.append('file', $('#upFile')[0].files[0]) //把file添加进去 name命名为img
layer.load(); //上传loading
$.ajax({
url: Feng.ctxPath + '/mgr/uploadFile',
data: formData,
type: "POST",
async: true,
cache: false,
contentType: false,
processData: false,
success: function(res) {
layer.closeAll('loading'); //关闭loading
$('#upFile').val('');
$('#courseVideo').val(res);
}
})
});
});
/**
* 下一步:切换到价格配置
*/
TSite.nextStep = function() {
// 校验步骤一的必填字段
if (!TSite.validateBasicInfo()) {
return;
}
var siteName = $("#name").val();
// 这些将在步骤二中配置
var isHalf = 2; // 默认不可预定半场
var nextNames = [];
var halfNames = [];
// 保存信息到全局变量
TSite.priceConfig = {
siteName: siteName,
isHalf: isHalf,
nextNames: nextNames,
halfNames: halfNames,
timeSlots: [],
priceData: {}
};
// 显示场地信息
$("#display_site_name").text(siteName);
$("#display_next_names").html(""); // 清空
$("#display_half_names").html(""); // 清空
// 切换步骤,仅依赖CSS的active class
$("#step1_basic_info").removeClass('active');
$("#step2_price_config").addClass('active');
// 初始化价格配置
TSite.initPriceConfig();
// 滚动到顶部
$('html, body').animate({scrollTop: 0}, 300);
}
/**
* 验证步骤一的必填字段
*/
TSite.validateBasicInfo = function() {
// 验证运营商
var SelectValue = "";
$("input[name='pt']:checked").each(function(j) {
if (j >= 0) {
SelectValue += $(this).val();
}
});
if (SelectValue == '') {
let yys = $("#yys").val();
if (yys == "") {
Feng.error("请选择运营商");
return false;
}
}
// 验证门店
if ($("#store").val() == '') {
Feng.error("请选择门店");
return false;
}
// 验证场地分类
if ($("#siteTypeId").val() == '') {
Feng.error("请选择场地分类");
return false;
}
// 验证场地名称
if ($("#name").val() == '') {
Feng.error("请输入场地名称");
return false;
}
// 验证场地责任险有效期
if ($("#insuranceEndTime").val() == '') {
Feng.error("请输入场地责任险有效期");
return false;
}
// 验证场地责任险图片(使用更精确的选择器获取hidden input)
var imgValue = $("input[type='hidden']#img").val();
if (!imgValue || imgValue == '') {
Feng.error("请上传场地责任有效期图片");
return false;
}
// 验证消防及应急管理方案
if ($('#courseVideo').val() == '') {
Feng.error("请上传消防及应急管理方案");
return false;
}
// 验证对象类型相关字段
var objectType = $("#objectType").val();
if (objectType == 1) {
// 验证公告内容
var introduce = TSite.editor.getContent();
if (introduce == "") {
Feng.error("请输入公告内容");
return false;
}
// 验证实景图
var goodImgs = TSite.goodsPicArray;
if (goodImgs.length == 0) {
Feng.error("请上传实景图");
return false;
}
}
return true;
}
/**
* 上一步:返回基本信息
*/
TSite.previousStep = function() {
// 切换步骤,仅依赖CSS的active class
$("#step2_price_config").removeClass('active');
$("#step1_basic_info").addClass('active');
// 滚动到顶部
$('html, body').animate({scrollTop: 0}, 300);
}
/**
* 初始化价格配置
*/
TSite.initPriceConfig = function() {
// 初始化计数器
TSite.bookingRowIndex = 0;
TSite.walkinRowIndex = 0;
// 清空价格表
$("#booking_price_tbody").empty();
$("#walkin_price_tbody").empty();
// 隐藏价格表区域
$("#booking_section").hide();
$("#walkin_section").hide();
// 标记价格表未生成
TSite.priceTablesGenerated = false;
// 初始化是否可预定半场状态
var isHalf = TSite.priceConfig ? TSite.priceConfig.isHalf : 2;
if (isHalf == 1) {
$("input[name='ishalf_step2'][value='1']").prop('checked', true);
$("#halfCode_step2").show();
} else {
$("input[name='ishalf_step2'][value='2']").prop('checked', true);
$("#halfCode_step2").hide();
}
// 监听人群选择变化
$("#audience_booking, #audience_walkin").off('change').on('change', function() {
TSite.updateAudienceUI();
// 如果价格表已生成,提示需要重新生成
if (TSite.priceTablesGenerated) {
TSite.clearPriceTables();
}
});
// 更新界面(但不显示价格表)
TSite.updateAudienceUI();
}
/**
* 生成价格表
* @param {boolean} autoAddRow - 是否自动添加空白时段,默认为 true
*/
TSite.generatePriceTables = function(autoAddRow) {
// 默认自动添加空白时段
if (autoAddRow === undefined) {
autoAddRow = true;
}
// 验证人群选择
var bookingChecked = $("#audience_booking").is(':checked');
var walkinChecked = $("#audience_walkin").is(':checked');
if (!bookingChecked && !walkinChecked) {
Feng.error("请至少选择一种面向人群!");
return;
}
// 验证容纳散客数
if (walkinChecked) {
var walkinCapacity = $("#walkin_capacity").val();
if (!walkinCapacity || parseInt(walkinCapacity) <= 0) {
Feng.error("请输入有效的容纳散客数!");
return;
}
}
// 清除现有价格表
TSite.clearPriceTables();
// 生成表头
TSite.buildTableHeaders();
// 显示对应的价格表区域
if (bookingChecked) {
$("#booking_section").show();
// 根据参数决定是否自动添加一条订场时段
if (autoAddRow) {
TSite.addBookingTimeSlot();
}
}
if (walkinChecked) {
$("#walkin_section").show();
// 根据参数决定是否自动添加一条散客时段
if (autoAddRow) {
TSite.addWalkinTimeSlot();
}
}
// 标记价格表已生成
TSite.priceTablesGenerated = true;
if (autoAddRow) {
Feng.success("价格表已生成,请填写价格!");
}
}
/**
* 清除价格表
*/
TSite.clearPriceTables = function() {
// 清空价格表内容
$("#booking_price_tbody").empty();
$("#walkin_price_tbody").empty();
// 隐藏价格表区域
$("#booking_section").hide();
$("#walkin_section").hide();
// 重置计数器
TSite.bookingRowIndex = 0;
TSite.walkinRowIndex = 0;
// 标记价格表未生成
TSite.priceTablesGenerated = false;
Feng.info("价格配置已清除,请重新生成价格表!");
}
/**
* 添加场地名
*/
TSite.addFieldBox = function() {
var html = '' +
'' +
'' +
'' +
'
';
$("#field_container").append(html);
}
/**
* 删除场地名
*/
TSite.removeFieldBox = function(btn) {
$(btn).closest('.field-item').remove();
}
/**
* 添加半场名称
*/
TSite.addHalfFieldBox = function() {
var html = '' +
'' +
'' +
'' +
'
';
$("#half_field_container").append(html);
}
/**
* 删除半场名称
*/
TSite.removeHalfFieldBox = function(btn) {
$(btn).closest('.field-item').remove();
}
/**
* 更新半场字段显示
*/
TSite.updateHalfField = function(value) {
if (value == 1) {
$("#halfCode_step2").show();
// 更新isHalf
TSite.priceConfig.isHalf = 1;
} else {
$("#halfCode_step2").hide();
TSite.priceConfig.isHalf = 2;
}
// 如果价格表已生成,清除价格表
if (TSite.priceTablesGenerated) {
TSite.clearPriceTables();
}
}
/**
* 更新人群相关UI
*/
TSite.updateAudienceUI = function() {
var walkinChecked = $("#audience_walkin").is(':checked');
// 只控制容纳散客数字段的显示/隐藏
// 价格表的显示由生成按钮控制
if (walkinChecked) {
$("#walkin_capacity_group").show();
} else {
$("#walkin_capacity_group").hide();
}
}
/**
* 构建表头
*/
TSite.buildTableHeaders = function() {
var isHalf = TSite.priceConfig ? TSite.priceConfig.isHalf : 2;
var headerHtml = '' +
'| 时段开始 | ' +
'时段结束 | ';
// 周一到周日的表头
var weekDays = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'];
if (isHalf == 1) {
// 如果可预订半场,每天有4列(全场×2 + 半场×2)
for (var i = 0; i < weekDays.length; i++) {
headerHtml += '' + weekDays[i] + ' | ';
}
headerHtml += '操作 | ' +
'
' +
'';
// 第二行:全场/半场
for (var i = 0; i < weekDays.length; i++) {
headerHtml += '| 全场 | ' +
'半场 | ';
}
headerHtml += '
' +
'';
// 第三行:现金/玩湃币
for (var i = 0; i < weekDays.length; i++) {
headerHtml += '| 现金 | ' +
'玩湃币 | ' +
'现金 | ' +
'玩湃币 | ';
}
} else {
// 如果不可预订半场,每天有2列(全场×2)
for (var i = 0; i < weekDays.length; i++) {
headerHtml += '' + weekDays[i] + ' | ';
}
headerHtml += '操作 | ' +
'
' +
'';
// 第二行:全场
for (var i = 0; i < weekDays.length; i++) {
headerHtml += '| 全场 | ';
}
headerHtml += '
' +
'';
// 第三行:现金/玩湃币
for (var i = 0; i < weekDays.length; i++) {
headerHtml += '| 现金 | ' +
'玩湃币 | ';
}
}
headerHtml += '
';
// 设置表头
$("#booking_thead").html(headerHtml);
$("#walkin_thead").html(headerHtml);
}
/**
* 添加订场时段
*/
TSite.addBookingTimeSlot = function() {
var isHalf = TSite.priceConfig ? TSite.priceConfig.isHalf : 2;
var index = TSite.bookingRowIndex++;
var html = '' +
' | ' +
' | ';
// 周一到周日,每天的价格输入框
for (var day = 1; day <= 7; day++) {
if (isHalf == 1) {
// 全场现金、全场玩湃币、半场现金、半场玩湃币
html += ' | ' +
' | ' +
' | ' +
' | ';
} else {
// 全场现金、全场玩湃币
html += ' | ' +
' | ';
}
}
html += ' | ' +
'
';
$("#booking_price_tbody").append(html);
}
/**
* 添加散客时段
*/
TSite.addWalkinTimeSlot = function() {
var isHalf = TSite.priceConfig ? TSite.priceConfig.isHalf : 2;
var index = TSite.walkinRowIndex++;
var html = '' +
' | ' +
' | ';
// 周一到周日,每天的价格输入框
for (var day = 1; day <= 7; day++) {
if (isHalf == 1) {
// 全场现金、全场玩湃币、半场现金、半场玩湃币
html += ' | ' +
' | ' +
' | ' +
' | ';
} else {
// 全场现金、全场玩湃币
html += ' | ' +
' | ';
}
}
html += ' | ' +
'
';
$("#walkin_price_tbody").append(html);
}
/**
* 删除时段
*/
TSite.removeTimeSlot = function(btn) {
$(btn).closest('tr').remove();
}
/**
* 检查时段是否重叠
*/
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() {
// 验证价格表是否已生成
if (!TSite.priceTablesGenerated) {
Feng.error("请先点击【生成价格表】按钮生成价格配置表!");
return;
}
// 验证时段不重叠
if (!TSite.validateNoTimeOverlap()) {
return;
}
// 验证人群选择
var bookingChecked = $("#audience_booking").is(':checked');
var walkinChecked = $("#audience_walkin").is(':checked');
if (!bookingChecked && !walkinChecked) {
Feng.error("请至少选择一种面向人群!");
return;
}
// 验证容纳散客数
if (walkinChecked) {
var walkinCapacity = parseInt($("#walkin_capacity").val());
if (!walkinCapacity || walkinCapacity <= 0) {
Feng.error("请输入有效的容纳散客数!");
return;
}
}
// 验证时段不重叠
if (!TSite.validateNoTimeOverlap()) {
return;
}
// 收集价格数据
var priceDTOS = TSite.collectPriceData();
// 如果返回 null,说明验证失败,已经显示了具体错误信息
if (priceDTOS === null) {
return;
}
// 如果返回空数组,说明没有填写任何价格
if (priceDTOS.length === 0) {
Feng.error("请至少添加一个时段并填写价格!");
return;
}
// 收集基本信息数据
var basicData = TSite.collectBasicData();
if (!basicData) {
return; // 基本信息验证失败
}
// 收集场地配置
var nextNames = [];
$("input[name='name1_step2']").each(function() {
var val = $(this).val();
if (val) {
nextNames.push(val);
}
});
var halfNames = [];
$("input[name='name2_step2']").each(function() {
var val = $(this).val();
if (val) {
halfNames.push(val);
}
});
var isHalf = $("input[name='ishalf_step2']:checked").val();
// 构建提交数据
var targetAudience = [];
if (bookingChecked) targetAudience.push('1');
if (walkinChecked) targetAudience.push('2');
// 合并基本信息和价格配置
basicData.targetAudience = targetAudience.join(',');
basicData.walkinCapacity = walkinChecked ? parseInt($("#walkin_capacity").val()) : 0;
basicData.nextName = nextNames.join(',');
basicData.halfName = halfNames.join(',');
basicData.ishalf = parseInt(isHalf);
basicData.priceDTOS = priceDTOS;
// 确认提交
layer.confirm('确定要保存场地信息吗?', {
btn: ['确定', '取消']
}, function(index) {
layer.close(index);
// 提交到后端
$.ajax({
url: Feng.ctxPath + "/tSite/addSite",
type: "POST",
data: JSON.stringify(basicData),
contentType: "application/json",
success: function(response) {
Feng.success("场地信息保存成功!");
// 刷新列表
if (window.parent.TSite && window.parent.TSite.table) {
window.parent.TSite.table.refresh();
}
// 关闭页面
setTimeout(function() {
TSite.close();
}, 1500);
},
error: function(xhr, status, error) {
var errorMsg = "保存失败";
if (xhr.responseJSON && xhr.responseJSON.message) {
errorMsg = xhr.responseJSON.message;
}
Feng.error(errorMsg);
}
});
});
}
/**
* 收集基本信息数据
*/
TSite.collectBasicData = function() {
var data = {
province:"",
city:"",
cityManagerId:"",
storeId:"",
siteTypeId:null,
appointmentStartTime:"",
appointmentEndTime:"",
cashPrice:null,
playPaiCoin:null,
insuranceEndTime:"",
name:"",
insuranceImg:"",
managementPlan:"",
operatorId:"",
typeName:"",
nextName:"",
ishalf:"",
cashPriceOne:"",
playPaiCoinOne:"",
halfName:"",
introduce:"",
imgs:"",
reservation:"",
isCanBeBooked:"",
type:"",
};
data.province = $("#pCode").val()
data.city = $("#cCode").val()
data.cityManagerId = $("#account").val()
data.storeId = $("#store").val()
data.siteTypeId = $("#siteTypeId").val()
data.appointmentStartTime= $("#start-time").val()
data.appointmentEndTime = $("#end-time").val()
data.cashPrice = $("#cashPrice").val()
data.playPaiCoin = $("#playPaiCoin").val()
data.insuranceEndTime = $("#insuranceEndTime").val()
data.name = $("#name").val()
data.insuranceImg = $("input[type='hidden']#img").val()
data.managementPlan = $('#courseVideo').val()
data.typeName = $('#siteTypeOne').val()
var reservation= $("input[name='reservation']:checked").val();
data.reservation= reservation;
data.isCanBeBooked= reservation;
var checkbox = document.querySelector('input[name="pt"]');
if (checkbox!=null){
if (checkbox.checked) {
data.type = 1
data.operatorId = 0;
} else {
data.type = 2;
}
}
var SelectValue="";
var getSelectValueMenbers = $("input[name='pt']:checked").each(function(j) {
if (j >= 0) {
SelectValue += $(this).val()
}
});
if(SelectValue==''){
let yys = $("#yys").val()
if(yys==""){
Feng.info("请选择运营商")
return null;
}
SelectValue= yys
}
data.operatorId= SelectValue;
let introduce = "";
var objectType = $("#objectType").val();
if (objectType==1){
introduce = TSite.editor.getContent();
if(introduce==""){
Feng.info("请输入公告内容")
return null;
}
}
data.introduce= introduce;
var goodImgs = this.goodsPicArray;
if(objectType==1){
if(goodImgs.length==0){
Feng.info("请上传实景图")
return null;
}
}
var imgOne ="";
for (let i = 0; i = endTime) {
Feng.error("订场价格配置中,结束时间必须大于开始时间!");
validationFailed = true;
return false;
}
// 遍历周一到周日
var hasAnyPrice = false; // 标记该时段是否有任何价格
for (var day = 1; day <= 7; day++) {
var fullCashVal = $("#booking_" + index + "_" + day + "_full_cash").val();
var fullCoinVal = $("#booking_" + index + "_" + day + "_full_coin").val();
var fullCash = parseFloat(fullCashVal || 0);
var fullCoin = parseFloat(fullCoinVal || 0);
// 全场价格验证
if (fullCashVal !== '' || fullCoinVal !== '') {
hasAnyPrice = true;
// 如果填写了一个,检查另一个是否为空
if (fullCashVal === '' || fullCoinVal === '') {
var dayName = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'][day - 1];
Feng.error("订场价格 " + startTime + "-" + endTime + " " + dayName + " 全场的现金价格和玩湃币价格都必须填写!");
validationFailed = true;
return false;
}
priceDTOS.push({
startTime: startTime,
endTime: endTime,
dayOfWeek: day,
targetAudience: 1, // 1=订场
fieldType: 1, // 1=全场
cashPrice: fullCash,
coinPrice: fullCoin
});
}
// 半场价格(如果可预订半场)
if (isHalf == 1) {
var halfCashVal = $("#booking_" + index + "_" + day + "_half_cash").val();
var halfCoinVal = $("#booking_" + index + "_" + day + "_half_coin").val();
var halfCash = parseFloat(halfCashVal || 0);
var halfCoin = parseFloat(halfCoinVal || 0);
// 半场价格验证
if (halfCashVal !== '' || halfCoinVal !== '') {
hasAnyPrice = true;
// 如果填写了一个,检查另一个是否为空
if (halfCashVal === '' || halfCoinVal === '') {
var dayName = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'][day - 1];
Feng.error("订场价格 " + startTime + "-" + endTime + " " + dayName + " 半场的现金价格和玩湃币价格都必须填写!");
validationFailed = true;
return false;
}
priceDTOS.push({
startTime: startTime,
endTime: endTime,
dayOfWeek: day,
targetAudience: 1, // 1=订场
fieldType: 2, // 2=半场
cashPrice: halfCash,
coinPrice: halfCoin
});
}
}
}
// 检查该时段是否至少有一个价格
if (!hasAnyPrice) {
Feng.error("订场价格时段 " + startTime + "-" + endTime + " 价格未填写完整!");
validationFailed = true;
return false;
}
});
// 如果订场价格验证失败,直接返回 null
if (validationFailed) {
return null;
}
}
// 收集散客价格
if (walkinChecked) {
$("#walkin_price_tbody tr").each(function() {
if (validationFailed) return false; // 如果已经验证失败,终止循环
var index = $(this).data('index');
var startTime = $("#walkin_start_" + index).val();
var endTime = $("#walkin_end_" + index).val();
// 验证时段
if (!startTime || !endTime) {
Feng.error("散客价格配置中存在空的时段!");
validationFailed = true;
return false;
}
if (startTime >= endTime) {
Feng.error("散客价格配置中,结束时间必须大于开始时间!");
validationFailed = true;
return false;
}
// 遍历周一到周日
var hasAnyPrice = false; // 标记该时段是否有任何价格
for (var day = 1; day <= 7; day++) {
var fullCashVal = $("#walkin_" + index + "_" + day + "_full_cash").val();
var fullCoinVal = $("#walkin_" + index + "_" + day + "_full_coin").val();
var fullCash = parseFloat(fullCashVal || 0);
var fullCoin = parseFloat(fullCoinVal || 0);
// 全场价格验证
if (fullCashVal !== '' || fullCoinVal !== '') {
hasAnyPrice = true;
// 如果填写了一个,检查另一个是否为空
if (fullCashVal === '' || fullCoinVal === '') {
var dayName = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'][day - 1];
Feng.error("散客价格 " + startTime + "-" + endTime + " " + dayName + " 全场的现金价格和玩湃币价格都必须填写!");
validationFailed = true;
return false;
}
priceDTOS.push({
startTime: startTime,
endTime: endTime,
dayOfWeek: day,
targetAudience: 2, // 2=散客
fieldType: 1, // 1=全场
cashPrice: fullCash,
coinPrice: fullCoin
});
}
// 半场价格(如果可预订半场)
if (isHalf == 1) {
var halfCashVal = $("#walkin_" + index + "_" + day + "_half_cash").val();
var halfCoinVal = $("#walkin_" + index + "_" + day + "_half_coin").val();
var halfCash = parseFloat(halfCashVal || 0);
var halfCoin = parseFloat(halfCoinVal || 0);
// 半场价格验证
if (halfCashVal !== '' || halfCoinVal !== '') {
hasAnyPrice = true;
// 如果填写了一个,检查另一个是否为空
if (halfCashVal === '' || halfCoinVal === '') {
var dayName = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'][day - 1];
Feng.error("散客价格 " + startTime + "-" + endTime + " " + dayName + " 半场的现金价格和玩湃币价格都必须填写!");
validationFailed = true;
return false;
}
priceDTOS.push({
startTime: startTime,
endTime: endTime,
dayOfWeek: day,
targetAudience: 2, // 2=散客
fieldType: 2, // 2=半场
cashPrice: halfCash,
coinPrice: halfCoin
});
}
}
}
// 检查该时段是否至少有一个价格
if (!hasAnyPrice) {
Feng.error("散客价格时段 " + startTime + "-" + endTime + " 价格未填写完整!");
validationFailed = true;
return false;
}
});
// 如果散客价格验证失败,直接返回 null
if (validationFailed) {
return null;
}
}
return priceDTOS;
};