| | |
| | | } |
| | | |
| | | // 清除现有价格表 |
| | | TSiteInfo.clearPriceTables(); |
| | | // 如果是回显场景(autoAddRow 为 false),使用静默模式不显示提示 |
| | | TSiteInfo.clearPriceTables(!autoAddRow); |
| | | |
| | | // 生成表头 |
| | | TSiteInfo.buildTableHeaders(); |
| | |
| | | |
| | | /** |
| | | * 清除价格表 |
| | | * @param {boolean} silent - 是否静默模式(不显示提示),默认为 false |
| | | */ |
| | | TSiteInfo.clearPriceTables = function() { |
| | | TSiteInfo.clearPriceTables = function(silent) { |
| | | // 清空价格表内容 |
| | | $("#booking_price_tbody").empty(); |
| | | $("#walkin_price_tbody").empty(); |
| | |
| | | // 标记价格表未生成 |
| | | TSiteInfo.priceTablesGenerated = false; |
| | | |
| | | Feng.info("价格配置已清除,请重新生成价格表!"); |
| | | // 只在非静默模式下显示提示 |
| | | if (!silent) { |
| | | Feng.info("价格配置已清除,请重新生成价格表!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | }; |
| | | |
| | | if (!isAddMode) { |
| | | data.siteId = parseInt(siteId); |
| | | // 编辑模式:需要提交完整的场地信息(包括基本信息和价格配置) |
| | | // 先收集基本信息 |
| | | var basicData = TSiteInfo.collectBasicDataForEdit(); |
| | | if (!basicData || !basicData.id) { |
| | | Feng.error("获取场地信息失败,请刷新页面重试!"); |
| | | return; |
| | | } |
| | | // 合并基本信息、价格配置和场地配置 |
| | | data = Object.assign(basicData, data); |
| | | data.id = parseInt(siteId); |
| | | } else { |
| | | // 新增模式:收集基本信息 |
| | | data = Object.assign(data, TSiteInfo.collectBasicData()); |
| | |
| | | layer.close(index); |
| | | |
| | | // 提交到后端 |
| | | var url = isAddMode ? "/tSite/addSite" : "/tSite/savePriceConfig"; |
| | | var url = isAddMode ? "/tSite/addSite" : "/tSite/updateSite"; |
| | | var successMsg = isAddMode ? "场地添加成功!" : "价格配置保存成功!"; |
| | | |
| | | $.ajax({ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 收集基本信息数据(用于编辑场地时保存价格配置) |
| | | */ |
| | | TSiteInfo.collectBasicDataForEdit = function() { |
| | | var data = { |
| | | id: null, |
| | | province: "", |
| | | city: "", |
| | | cityManagerId: "", |
| | | storeId: null, |
| | | siteTypeId: null, |
| | | appointmentStartTime: "", |
| | | appointmentEndTime: "", |
| | | cashPrice: null, |
| | | playPaiCoin: null, |
| | | insuranceEndTime: "", |
| | | name: "", |
| | | insuranceImg: "", |
| | | managementPlan: "", |
| | | operatorId: null, |
| | | typeName: "", |
| | | nextName: "", |
| | | ishalf: null, |
| | | cashPriceOne: null, |
| | | playPaiCoinOne: null, |
| | | halfName: "", |
| | | introduce: "", |
| | | imgs: "", |
| | | reservation: null, |
| | | isCanBeBooked: null, |
| | | type: null |
| | | }; |
| | | |
| | | // 从页面表单获取基本信息 |
| | | data.id = $("#id").val() ? parseInt($("#id").val()) : null; |
| | | data.province = $("#pCode").val() || ""; |
| | | data.city = $("#cCode").val() || ""; |
| | | data.cityManagerId = $("#account").val() ? parseInt($("#account").val()) : null; |
| | | data.storeId = $("#store").val() ? parseInt($("#store").val()) : null; |
| | | data.siteTypeId = $("#siteTypeId").val() ? parseInt($("#siteTypeId").val()) : null; |
| | | data.appointmentStartTime = $("#start-time").val() || ""; |
| | | data.appointmentEndTime = $("#end-time").val() || ""; |
| | | data.cashPrice = $("#cashPrice").val() ? parseFloat($("#cashPrice").val()) : null; |
| | | data.playPaiCoin = $("#playPaiCoin").val() ? parseInt($("#playPaiCoin").val()) : null; |
| | | data.insuranceEndTime = $("#insuranceEndTime").val() || ""; |
| | | data.name = $("#name").val() || ""; |
| | | data.insuranceImg = $("input[type='hidden']#img").val() || ""; |
| | | data.managementPlan = $('#courseVideo').val() || ""; |
| | | data.typeName = $('#siteTypeOne').val() || ""; |
| | | |
| | | // 获取运营商信息 |
| | | 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 = ""; |
| | | $("input[name='pt']:checked").each(function(j) { |
| | | if (j >= 0) { |
| | | SelectValue += $(this).val(); |
| | | } |
| | | }); |
| | | if (SelectValue == '') { |
| | | var yys = $("#yys").val(); |
| | | if (yys == "") { |
| | | SelectValue = null; |
| | | } else { |
| | | SelectValue = yys; |
| | | } |
| | | } |
| | | data.operatorId = SelectValue ? parseInt(SelectValue) : null; |
| | | } |
| | | } |
| | | |
| | | // 获取预约相关 |
| | | var reservation = $("input[name='reservation']:checked").val(); |
| | | data.reservation = reservation ? parseInt(reservation) : null; |
| | | data.isCanBeBooked = reservation ? parseInt(reservation) : null; |
| | | |
| | | // 获取公告内容 |
| | | var objectType = $("#objectType").val(); |
| | | var introduce = ""; |
| | | if (objectType == 1 && TSiteInfo.editor) { |
| | | introduce = TSiteInfo.editor.getContent() || ""; |
| | | } |
| | | data.introduce = introduce; |
| | | |
| | | // 获取实景图 |
| | | var goodImgs = TSiteInfo.goodsPicArray || []; |
| | | var imgOne = ""; |
| | | for (let i = 0; i < goodImgs.length; i++) { |
| | | if (i == goodImgs.length - 1) { |
| | | imgOne += (goodImgs[i].response || ""); |
| | | } else { |
| | | imgOne += (goodImgs[i].response || "") + ","; |
| | | } |
| | | } |
| | | data.imgs = imgOne; |
| | | |
| | | // 半场相关 |
| | | data.cashPriceOne = $("#cashPriceOne").val() ? parseFloat($("#cashPriceOne").val()) : null; |
| | | data.playPaiCoinOne = $("#playPaiCoinOne").val() ? parseFloat($("#playPaiCoinOne").val()) : null; |
| | | |
| | | // 确保 insuranceImg 不为 null,如果为空字符串则设为 null |
| | | if (data.insuranceImg === "") { |
| | | data.insuranceImg = null; |
| | | } |
| | | |
| | | return data; |
| | | } |
| | | |
| | | /** |
| | | * 收集基本信息数据(用于新增场地) |
| | | */ |
| | | TSiteInfo.collectBasicData = function() { |