| | |
| | | /** |
| | | * 初始化跨城站点管理详情对话框 |
| | | * 初始化车辆管理详情对话框 |
| | | */ |
| | | var TSiteInfoDlg = { |
| | | tSiteInfoData : {}, |
| | | var language=1; |
| | | var TSiteInfo = { |
| | | layerIndex: -1, |
| | | validateFields: { |
| | | name: { |
| | | validators: { |
| | | notEmpty: { |
| | | message: '站点名称不能为空' |
| | | } |
| | | } |
| | | }, |
| | | provinceCode: { |
| | | validators: { |
| | | notEmpty: { |
| | | message: '请选择站点所属省' |
| | | } |
| | | } |
| | | }, |
| | | } |
| | | }, |
| | | goodsPicArray:[], |
| | | }; |
| | | |
| | | /** |
| | | * 验证数据是否为空 |
| | | */ |
| | | TSiteInfoDlg.validate = function () { |
| | | $('#siteInfoForm').data("bootstrapValidator").resetForm(); |
| | | $('#siteInfoForm').bootstrapValidator('validate'); |
| | | return $("#siteInfoForm").data('bootstrapValidator').isValid(); |
| | | TSiteInfo.validate = function () { |
| | | $('#carInfoForm').data("bootstrapValidator").resetForm(); |
| | | $('#carInfoForm').bootstrapValidator('validate'); |
| | | return $("#carInfoForm").data('bootstrapValidator').isValid(); |
| | | }; |
| | | |
| | | |
| | | /** |
| | | * 清除数据 |
| | | */ |
| | | TSiteInfoDlg.clearData = function() { |
| | | this.tSiteInfoData = {}; |
| | | TSiteInfo.clearData = function() { |
| | | this.tCarInfoData = {}; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param key 数据的名称 |
| | | * @param val 数据的具体值 |
| | | */ |
| | | TSiteInfoDlg.set = function(key, val) { |
| | | this.tSiteInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; |
| | | TSiteInfo.set = function(key, val) { |
| | | this.tCarInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; |
| | | return this; |
| | | } |
| | | |
| | |
| | | * @param key 数据的名称 |
| | | * @param val 数据的具体值 |
| | | */ |
| | | TSiteInfoDlg.get = function(key) { |
| | | TSiteInfo.get = function(key) { |
| | | return $("#" + key).val(); |
| | | } |
| | | |
| | | // 场地管理首页 选择对应的省市 |
| | | TSiteInfo.oneChange = function (e) { |
| | | var oneId=$(e).val(); |
| | | var startTime = document.getElementById('start-time'); |
| | | var endTime = document.getElementById('end-time'); |
| | | var selectedValue = e.value; |
| | | var citySelect = document.getElementById("cCode"); |
| | | var accountSelect = document.getElementById("account"); |
| | | var storeSelect = document.getElementById("store"); |
| | | var ajax = new $ax(Feng.ctxPath + "/tSite/getCity", function(data){ |
| | | if(data!=null){ |
| | | var content='<option value="">选择市</option>'; |
| | | $.each(data, function(k,v) { |
| | | content += "<option value='"+v.city+"'>"+v.city+"</option>"; |
| | | }); |
| | | $("#cCode").empty().append(content); |
| | | } |
| | | }); |
| | | if (selectedValue === ""){ |
| | | citySelect.innerHTML = '<option value="">请先选择省</option>'; |
| | | startTime.disabled = true; |
| | | endTime.disabled = true; |
| | | } |
| | | accountSelect.innerHTML = '<option value="">请先选择省/市</option>'; |
| | | storeSelect.innerHTML = '<option value="">请先选择省/市</option>'; |
| | | ajax.set("province",oneId); |
| | | ajax.start(); |
| | | }; |
| | | TSiteInfo.oneChangeNext = function (e) { |
| | | var selectedText = $('#cCode option:selected').text(); |
| | | var startTime = document.getElementById('start-time'); |
| | | var endTime = document.getElementById('end-time'); |
| | | |
| | | var citySelect = document.getElementById("account"); |
| | | var storeSelect = document.getElementById("store"); |
| | | var ajax = new $ax(Feng.ctxPath + "/tSite/accountChangeNext", function(data){ |
| | | if(data!=null){ |
| | | var content='<option value="">选择账号</option>'; |
| | | $.each(data, function(k,v) { |
| | | content += "<option style='width: 300px' value='"+v.id+"'>"+v.name+"</option>"; |
| | | }); |
| | | $("#account").empty().append(content); |
| | | } |
| | | }); |
| | | if (selectedText === ""){ |
| | | storeSelect.innerHTML = '<option style="width: 300px" value="">请先选择省/市</option>'; |
| | | citySelect.innerHTML = '<option style="width: 300px" value="">请先选择省/市</option>'; |
| | | startTime.disabled = true; |
| | | endTime.disabled = true; |
| | | } |
| | | |
| | | ajax.set("oneId",selectedText); |
| | | ajax.start(); |
| | | |
| | | var ajax1 = new $ax(Feng.ctxPath + "/tSite/storeChangeNext", function(data){ |
| | | if(data!=null && data.length !== 0){ |
| | | var content='<option value="">选择门店</option>'; |
| | | $.each(data, function(k,v) { |
| | | content += "<option style='width: 300px' value='"+v.id+"'>"+v.name+"</option>"; |
| | | }); |
| | | $("#store").empty().append(content); |
| | | }else { |
| | | storeSelect.innerHTML = '<option value="">当前所选市没有门店</option>'; |
| | | } |
| | | }); |
| | | ajax1.set("oneId",selectedText); |
| | | ajax1.start(); |
| | | }; |
| | | TSiteInfo.getTime = function (e) { |
| | | |
| | | var selectedText = $('#store option:selected').text(); |
| | | $.ajax({ |
| | | url: Feng.ctxPath + "/tSite/getTime/" + selectedText, |
| | | type: "GET", |
| | | contentType: "application/json", // 设置请求头的 Content-Type |
| | | success: function (response) { |
| | | var sTime = document.getElementById("start-time"); //获取输入的开始时间 |
| | | var eTime = document.getElementById("end-time"); // 获取输入的结束时间 |
| | | var rStime = response.startTime; //门店的经营开始时间 |
| | | var rEtime = response.endTime; //门店的经营结束时间 |
| | | |
| | | var sh = rStime.split(':')[0];// 门店经营开始时间:小时 |
| | | var sm = rStime.split(':')[1];// 门店经营开始时间:分钟 |
| | | console.log("门店经营开始时间") |
| | | console.log(sh) |
| | | console.log(sm) |
| | | rEtime = response.endTime; |
| | | var eh = rEtime.split(':')[0];// 门店经营结束时间:小时 |
| | | var em = rEtime.split(':')[1];// 门店经营结束时间:分钟 |
| | | console.log("门店经营结束时间") |
| | | console.log(eh) |
| | | console.log(em) |
| | | sTime.addEventListener('change',function () { |
| | | var start = sTime.value; |
| | | var startHour = start.split(':')[0]; // 输入的可预约开始时间:小时 |
| | | var startMinute = start.split(':')[1];// 输入的可预约开始时间:分钟 |
| | | |
| | | if (Number(sh)>Number(startHour)){ |
| | | Feng.error("预约的开始时间不应小于营业开始时间!") |
| | | }else if(Number(sh) === Number(startHour) ){ |
| | | if (Number(sm)>Number(startMinute)){ |
| | | Feng.error("预约的开始时间不应大于营业开始时间!") |
| | | } |
| | | }else if (Number(eh)<Number(startHour)){ |
| | | Feng.error("预约的开始时间不应大于营业结束时间!") |
| | | }else if(Number(eh)===Number(startHour)){ |
| | | Feng.error("预约的开始时间不应大于等于营业结束时间!") |
| | | } |
| | | }); |
| | | eTime.addEventListener('change',function () { |
| | | var end = eTime.value; |
| | | var endHour = end.split(':')[0]; // 输入的可预约结束时间:小时 |
| | | var endMinute = end.split(':')[1];// 输入的可预约结束时间:分钟 |
| | | if (Number(eh)<Number(endHour)){ |
| | | Feng.error("预约的结束时间不应大于营业结束时间!") |
| | | }else if(Number(eh) === Number(endHour) ){ |
| | | if (Number(em)<Number(endMinute)){ |
| | | Feng.error("预约的开始时间不应大于开始营业时间!") |
| | | } |
| | | }else if(Number(sh)>Number(endHour)){ |
| | | Feng.error("预约的结束时间不应小于营业开始时间!") |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | error: function (xhr, status, error) { |
| | | Feng.error("您的网络异常!"); |
| | | } |
| | | }); |
| | | }; |
| | | function UploadFileFn(){ |
| | | $('#upFile').click(); |
| | | } |
| | | TSiteInfo.addSubmit = function(){ |
| | | var data = { |
| | | id:null, |
| | | 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:"", |
| | | }; |
| | | data.province = $("#pCode").val() |
| | | data.id = $("#id").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 = $("#img").val() |
| | | data.managementPlan = $('#courseVideo').val() |
| | | data.typeName = $('#siteTypeOne').val() |
| | | var sh =data.appointmentStartTime.split(':')[0]; |
| | | var sm =data.appointmentStartTime.split(':')[1]; |
| | | var eh =data.appointmentEndTime.split(':')[0]; |
| | | var em =data.appointmentEndTime.split(':')[1]; |
| | | var reservation= $("input[name='reservation']:checked").val(); |
| | | data.reservation= reservation; |
| | | data.isCanBeBooked= reservation; |
| | | if (reservation==1) { |
| | | if (data.typeName === "智慧场地") { |
| | | console.log("===========这是智慧球场") |
| | | console.log("=====" + data.appointmentStartTime) |
| | | var value = data.appointmentStartTime; |
| | | var lastTwoDigits = value.slice(-2); |
| | | if (lastTwoDigits === "00" || lastTwoDigits === "15" || lastTwoDigits === "30" || lastTwoDigits === "45") { |
| | | console.log("Last two digits are 00, 15, 30, or 45"); |
| | | } else { |
| | | Feng.error("智慧场地的可预约时间段是15分钟的倍数") |
| | | return; |
| | | } |
| | | var value1 = data.appointmentEndTime; |
| | | var lastTwoDigits1 = value1.slice(-2); |
| | | if (lastTwoDigits1 === "00" || lastTwoDigits1 === "15" || lastTwoDigits1 === "30" || lastTwoDigits1 === "45") { |
| | | console.log("Last two digits are 00, 15, 30, or 45"); |
| | | } else { |
| | | Feng.error("智慧场地的可预约时间段是15分钟的倍数") |
| | | return; |
| | | } |
| | | } else { |
| | | console.log("===========这是普通球场") |
| | | console.log("=====" + data.appointmentStartTime) |
| | | var value = data.appointmentStartTime; |
| | | var lastTwoDigits = value.slice(-2); |
| | | |
| | | if (lastTwoDigits === "00" || lastTwoDigits === "30") { |
| | | console.log("Last two digits are 00, 15, 30, or 45"); |
| | | } else { |
| | | Feng.info("普通场地可预约时间段需是30分钟的倍数") |
| | | return; |
| | | } |
| | | var value1 = data.appointmentEndTime; |
| | | var lastTwoDigits1 = value1.slice(-2); |
| | | if (lastTwoDigits1 === "00" || lastTwoDigits1 === "30") { |
| | | console.log("Last two digits are 00, 15, 30, or 45"); |
| | | } else { |
| | | Feng.info("普通场地可预约时间段需是30分钟的倍数") |
| | | return; |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | 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; |
| | | } |
| | | SelectValue= yys |
| | | } |
| | | data.operatorId= SelectValue; |
| | | |
| | | |
| | | |
| | | let num24 = $('input[name="name1"]'); |
| | | var nextName=""; |
| | | for (let i = 0; i < num24.length; i++) { |
| | | if($(num24[i]).val()==''){ |
| | | Feng.info("请填写场地名称") |
| | | return; |
| | | } |
| | | if(i==num24.length-1){ |
| | | nextName += $(num24[i]).val() |
| | | }else { |
| | | nextName += $(num24[i]).val()+"," |
| | | } |
| | | } |
| | | data.nextName= nextName; |
| | | |
| | | |
| | | var ishalf= $("input[name='ishalf']:checked").val(); |
| | | data.ishalf= ishalf; |
| | | |
| | | var halfName=""; |
| | | if (reservation==1){ |
| | | if(ishalf==1){ |
| | | let cashPriceOne = $("#cashPriceOne").val() |
| | | if(cashPriceOne=='' ){ |
| | | Feng.info("请填写现金价格") |
| | | return; |
| | | } |
| | | data.cashPriceOne= cashPriceOne; |
| | | |
| | | let playPaiCoinOne = $("#playPaiCoinOne").val() |
| | | if(playPaiCoinOne=='' ){ |
| | | Feng.info("请填写玩湃币价格") |
| | | return; |
| | | } |
| | | |
| | | data.playPaiCoinOne= playPaiCoinOne; |
| | | let num2 = $('input[name="name2"]'); |
| | | for (let i = 0; i < num2.length; i++) { |
| | | if($(num2[i]).val()==''){ |
| | | Feng.info("请填写半场名称") |
| | | return; |
| | | } |
| | | if(i==num2.length-1){ |
| | | halfName += $(num2[i]).val() |
| | | }else { |
| | | halfName += $(num2[i]).val()+"," |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | var objectType =$("#objectType").val() |
| | | data.halfName= halfName; |
| | | var introduce=""; |
| | | if (objectType==1){ |
| | | introduce = TSiteInfo.editor.getContent(); |
| | | console.log(introduce) |
| | | if(introduce==""){ |
| | | Feng.info("请输入场地说明") |
| | | return; |
| | | } |
| | | } |
| | | data.introduce= introduce; |
| | | var goodImgs = TSiteInfo.goodsPicArray; |
| | | |
| | | if(goodImgs.length==0){ |
| | | Feng.info("请上传实景图") |
| | | return; |
| | | } |
| | | var imgOne =""; |
| | | console.log(goodImgs) |
| | | console.log(goodImgs.length) |
| | | for (let i = 0; i <goodImgs.length; i++) { |
| | | console.log(goodImgs[i].response,11) |
| | | if(i==goodImgs.length-1){ |
| | | imgOne += (goodImgs[i].response) |
| | | }else { |
| | | imgOne+=(goodImgs[i].response+",") |
| | | } |
| | | |
| | | } |
| | | console.log(imgOne) |
| | | data.imgs = imgOne |
| | | |
| | | |
| | | |
| | | |
| | | if($("#store").val()=='' ){ |
| | | Feng.info("请选择门店") |
| | | return; |
| | | } |
| | | if($("#siteTypeId").val()=='' ){ |
| | | Feng.info("请选择场地类型") |
| | | return; |
| | | } |
| | | if($("#name").val()==''){ |
| | | Feng.info("请输入场地名称") |
| | | return; |
| | | } |
| | | if (reservation==1) { |
| | | if ($("#start-time").val() == '') { |
| | | Feng.info("请输入可预约时间段 开始时间") |
| | | return; |
| | | } |
| | | if ($("#end-time").val() == '') { |
| | | Feng.info("请输入可预约时间段 结束时间") |
| | | return; |
| | | } |
| | | if ($("#cashPrice").val() == '') { |
| | | Feng.info("请输入现金价格") |
| | | return; |
| | | } |
| | | if ($("#playPaiCoin").val() == '') { |
| | | Feng.info("请输入玩湃币价格") |
| | | return; |
| | | } |
| | | } |
| | | if($("#insuranceEndTime").val()==''){ |
| | | Feng.info("请输入场地责任险有效期") |
| | | return; |
| | | } |
| | | |
| | | // if($("#img").val()==''){ |
| | | // Feng.info("请上传场地责任有效期图片") |
| | | // return; |
| | | // } |
| | | if($('#courseVideo').val()==''){ |
| | | Feng.info("请上传消防及应急管理方案") |
| | | return; |
| | | } |
| | | |
| | | var sTime = document.getElementById("start-time"); //获取输入的开始时间 |
| | | var eTime = document.getElementById("end-time"); // 获取输入的结束时间 |
| | | var rStime = ""; //门店的经营开始时间 |
| | | var rEtime = ""; //门店的经营结束时间 |
| | | var selectedText = $('#store option:selected').text(); |
| | | $.ajax({ |
| | | url: Feng.ctxPath + "/tSite/getTime/" + selectedText, |
| | | type: "GET", |
| | | contentType: "application/json", // 设置请求头的 Content-Type |
| | | success: function (response) { |
| | | if (reservation==1) { |
| | | rStime = response.startTime; |
| | | sh = rStime.split(':')[0];// 门店经营开始时间:小时 |
| | | sm = rStime.split(':')[1];// 门店经营开始时间:分钟 |
| | | |
| | | rEtime = response.endTime; |
| | | eh = rEtime.split(':')[0];// 门店经营结束时间:小时 |
| | | em = rEtime.split(':')[1];// 门店经营结束时间:分钟 |
| | | |
| | | var start = sTime.value; |
| | | var startHour = start.split(':')[0]; // 输入的可预约开始时间:小时 |
| | | var startMinute = start.split(':')[1];// 输入的可预约开始时间:分钟 |
| | | if (Number(sh) > 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/updateSite" , |
| | | type: "POST", |
| | | data: JSON.stringify(data), |
| | | contentType: "application/json", |
| | | success: function (response) { |
| | | window.parent.TSite.table.refresh(); |
| | | TSiteInfo.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; |
| | | } |
| | | }); |
| | | |
| | | }; |
| | | |
| | | TSiteInfo.oneChangeYys = function(e){ |
| | | var oneId = $(e).val(); |
| | | var checkbox = document.querySelector('input[name="pt"]'); |
| | | if (checkbox.checked) { |
| | | oneId=0; |
| | | console.log("选中是平台"); |
| | | }else{ |
| | | oneId = 1; |
| | | console.log("运营商"); |
| | | console.log(oneId) |
| | | } |
| | | if (oneId == "1"){ |
| | | oneId = $("#yys").val() |
| | | if (oneId==""){ |
| | | oneId = 1 |
| | | } |
| | | console.log("看看选择之后") |
| | | console.log(oneId) |
| | | var button = document.getElementById("yys"); |
| | | button.removeAttribute("disabled"); |
| | | } |
| | | var ajax = new $ax(Feng.ctxPath + "/tSite/getChangeOne", function(data){ |
| | | if(data!=null){ |
| | | // var content1 = '<option value="0">平台</option>'; |
| | | console.log("看看oneId") |
| | | console.log(oneId) |
| | | if (oneId == 0) { |
| | | console.log("锁住") |
| | | $("#yys").prop('disabled', true); |
| | | }else{ |
| | | console.log("放开") |
| | | $("#yys").prop('disabled', false); |
| | | } |
| | | |
| | | var content='<option value="">选择门店</option>'; |
| | | $.each(data, function(k,v) { |
| | | content += "<option value='"+v.id+"'>"+v.name+"</option>"; |
| | | }); |
| | | $("#store").empty().append(content); |
| | | } |
| | | }); |
| | | |
| | | |
| | | |
| | | ajax.set("oneId",oneId); |
| | | ajax.start(); |
| | | }; |
| | | /** |
| | | * 关闭此对话框 |
| | | */ |
| | | TSiteInfoDlg.close = function() { |
| | | TSiteInfo.close = function() { |
| | | parent.layer.close(window.parent.TSite.layerIndex); |
| | | } |
| | | |
| | | /** |
| | | * 收集数据 |
| | | * 下一步:切换到价格配置 |
| | | */ |
| | | TSiteInfoDlg.collectData = function() { |
| | | this |
| | | .set('id') |
| | | .set('name') |
| | | .set('province') |
| | | .set('provinceCode') |
| | | .set('city') |
| | | .set('cityCode') |
| | | .set('district') |
| | | .set('districtCode') |
| | | .set('state') |
| | | .set('insertTime') |
| | | .set('insertUserId'); |
| | | } |
| | | |
| | | /** |
| | | * 提交添加 |
| | | */ |
| | | TSiteInfoDlg.addSubmit = function() { |
| | | |
| | | this.clearData(); |
| | | this.collectData(); |
| | | if(!this.validate()){ |
| | | return ; |
| | | } |
| | | var name = $("#name").val(); |
| | | var provinceCode = $("#provinceCode").val(); |
| | | var cityCode = $("#cityCode").val(); |
| | | var districtCode = $("#districtCode").val(); |
| | | if ("" == provinceCode){ |
| | | Feng.error("请选择所属城市"); |
| | | TSiteInfo.nextStep = function() { |
| | | // 校验步骤一的必填字段 |
| | | if (!TSiteInfo.validateBasicInfo()) { |
| | | return; |
| | | } |
| | | var subArr=[]; |
| | | $(".areaValueClass").each(function () { |
| | | subArr.push({ |
| | | id:$(this).find("input[name*='id']").val(), |
| | | areaType:$(this).find("input[name*='areaType1']").val(), |
| | | time:$(this).find("input[name*='time']").val(), |
| | | name:$(this).find("input[name*='name']").val(), |
| | | province:$(this).find("input[name*='province1']").val(), |
| | | provinceCode:$(this).find("input[name*='provinceCode1']").val(), |
| | | city:$(this).find("input[name*='city1']").val(), |
| | | cityCode:$(this).find("input[name*='cityCode1']").val(), |
| | | district:$(this).find("input[name*='district1']").val(), |
| | | districtCode:$(this).find("input[name*='districtCode1']").val(), |
| | | coordinate:$(this).find("input[name*='coordinate1']").val(), |
| | | }) |
| | | }); |
| | | if(subArr.length <= 0){ |
| | | Feng.error("请至少填写一条站点区域"); |
| | | return; |
| | | } |
| | | //提交信息 |
| | | var ajax = new $ax(Feng.ctxPath + "/tSite/add", function(data){ |
| | | if(data.status == 200){ |
| | | Feng.success("添加成功!"); |
| | | window.parent.TSite.table.refresh(); |
| | | TSiteInfoDlg.close(); |
| | | }else{ |
| | | Feng.error(data.msg); |
| | | |
| | | var siteName = $("#name").val(); |
| | | var isHalf = $("input[name='ishalf']:checked").val() || 2; |
| | | |
| | | // 收集子场地名称 |
| | | var nextNames = []; |
| | | $("input[name='name1']").each(function() { |
| | | var val = $(this).val(); |
| | | if (val) { |
| | | nextNames.push(val); |
| | | } |
| | | },function(data){ |
| | | Feng.error("添加失败!" + data.responseJSON.message + "!"); |
| | | }); |
| | | ajax.set("name",name); |
| | | ajax.set("provinceCode",provinceCode); |
| | | ajax.set("province",$("#provinceCode option:selected").text()); |
| | | if ("" != cityCode && null != cityCode && undefined != cityCode){ |
| | | ajax.set("cityCode",cityCode); |
| | | ajax.set("city",$("#cityCode option:selected").text()); |
| | | |
| | | // 收集半场名称 |
| | | var halfNames = []; |
| | | $("input[name='name2']").each(function() { |
| | | var val = $(this).val(); |
| | | if (val) { |
| | | halfNames.push(val); |
| | | } |
| | | }); |
| | | |
| | | // 保存信息到全局变量 |
| | | TSiteInfo.priceConfig = { |
| | | siteName: siteName, |
| | | isHalf: isHalf, |
| | | nextNames: nextNames, |
| | | halfNames: halfNames, |
| | | timeSlots: [], |
| | | priceData: {} |
| | | }; |
| | | |
| | | // 显示场地信息 |
| | | $("#display_site_name").text(siteName); |
| | | if (nextNames.length > 0) { |
| | | $("#display_next_names").html(" | <strong>子场地:</strong>" + nextNames.join('、')); |
| | | } |
| | | if ("" != districtCode && null != districtCode && undefined != districtCode){ |
| | | ajax.set("districtCode",$("#districtCode").val()); |
| | | ajax.set("district",$("#districtCode option:selected").text()); |
| | | if (isHalf == 1 && halfNames.length > 0) { |
| | | $("#display_half_names").html(" | <strong>半场:</strong>" + halfNames.join('、')); |
| | | } |
| | | ajax.set("subArr",JSON.stringify(subArr)); |
| | | ajax.start(); |
| | | |
| | | // 切换步骤 |
| | | $("#step1_basic_info").removeClass('active'); |
| | | $("#step2_price_config").addClass('active'); |
| | | |
| | | // 初始化价格配置 |
| | | TSiteInfo.initPriceConfig(); |
| | | |
| | | // 滚动到顶部 |
| | | $('html, body').animate({scrollTop: 0}, 300); |
| | | } |
| | | |
| | | /** |
| | | * 提交修改 |
| | | * 验证步骤一的必填字段 |
| | | */ |
| | | TSiteInfoDlg.editSubmit = function() { |
| | | |
| | | this.clearData(); |
| | | this.collectData(); |
| | | if(!this.validate()){ |
| | | return ; |
| | | TSiteInfo.validateBasicInfo = function() { |
| | | // 验证门店 |
| | | if ($("#store").val() == '') { |
| | | Feng.error("请选择门店"); |
| | | return false; |
| | | } |
| | | var name = $("#name").val(); |
| | | var provinceCode = $("#provinceCode").val(); |
| | | var cityCode = $("#cityCode").val(); |
| | | var districtCode = $("#districtCode").val(); |
| | | if ("" == provinceCode){ |
| | | Feng.error("请选择所属城市"); |
| | | return; |
| | | |
| | | // 验证场地分类 |
| | | if ($("#siteTypeId").val() == '') { |
| | | Feng.error("请选择场地分类"); |
| | | return false; |
| | | } |
| | | var subArr=[]; |
| | | $(".areaValueClass").each(function () { |
| | | subArr.push({ |
| | | id:$(this).find("input[name*='id']").val(), |
| | | areaType:$(this).find("input[name*='areaType1']").val(), |
| | | time:$(this).find("input[name*='time']").val(), |
| | | name:$(this).find("input[name*='name']").val(), |
| | | province:$(this).find("input[name*='province1']").val(), |
| | | provinceCode:$(this).find("input[name*='provinceCode1']").val(), |
| | | city:$(this).find("input[name*='city1']").val(), |
| | | cityCode:$(this).find("input[name*='cityCode1']").val(), |
| | | district:$(this).find("input[name*='district1']").val(), |
| | | districtCode:$(this).find("input[name*='districtCode1']").val(), |
| | | coordinate:$(this).find("input[name*='coordinate1']").val(), |
| | | }) |
| | | |
| | | // 验证场地名称 |
| | | if ($("#name").val() == '') { |
| | | Feng.error("请输入场地名称"); |
| | | return false; |
| | | } |
| | | |
| | | // 验证场地责任险有效期 |
| | | if ($("#insuranceEndTime").val() == '') { |
| | | Feng.error("请输入场地责任险有效期"); |
| | | return false; |
| | | } |
| | | |
| | | // 验证场地责任险图片 |
| | | if ($("#img").val() == '') { |
| | | Feng.error("请上传场地责任有效期图片"); |
| | | return false; |
| | | } |
| | | |
| | | // 验证消防及应急管理方案 |
| | | if ($('#courseVideo').val() == '') { |
| | | Feng.error("请上传消防及应急管理方案"); |
| | | return false; |
| | | } |
| | | |
| | | // 验证运营商 |
| | | var SelectValue = ""; |
| | | $("input[name='pt']:checked").each(function(j) { |
| | | if (j >= 0) { |
| | | SelectValue += $(this).val(); |
| | | } |
| | | }); |
| | | if(subArr.length <= 0){ |
| | | Feng.error("请至少填写一条站点区域"); |
| | | return; |
| | | if (SelectValue == '') { |
| | | let yys = $("#yys").val(); |
| | | if (yys == "") { |
| | | Feng.error("请选择运营商"); |
| | | return false; |
| | | } |
| | | } |
| | | //提交信息 |
| | | var ajax = new $ax(Feng.ctxPath + "/tSite/update", function(data){ |
| | | Feng.success("修改成功!"); |
| | | window.parent.TSite.table.refresh(); |
| | | TSiteInfoDlg.close(); |
| | | },function(data){ |
| | | Feng.error("修改失败!" + data.responseJSON.message + "!"); |
| | | }); |
| | | ajax.set("id",$("#id").val()); |
| | | ajax.set("name",name); |
| | | ajax.set("provinceCode",provinceCode); |
| | | ajax.set("province",$("#provinceCode option:selected").text()); |
| | | if ("" != cityCode && null != cityCode && undefined != cityCode){ |
| | | ajax.set("cityCode",cityCode); |
| | | ajax.set("city",$("#cityCode option:selected").text()); |
| | | |
| | | // 验证对象类型相关字段 |
| | | var objectType = $("#objectType").val(); |
| | | if (objectType == 1) { |
| | | // 验证公告内容 |
| | | var introduce = TSiteInfo.editor.getContent(); |
| | | if (introduce == "") { |
| | | Feng.error("请输入公告内容"); |
| | | return false; |
| | | } |
| | | |
| | | // 验证实景图 |
| | | var goodImgs = TSiteInfo.goodsPicArray; |
| | | if (goodImgs.length == 0) { |
| | | Feng.error("请上传实景图"); |
| | | return false; |
| | | } |
| | | } |
| | | if ("" != districtCode && null != districtCode && undefined != districtCode){ |
| | | ajax.set("districtCode",$("#districtCode").val()); |
| | | ajax.set("district",$("#districtCode option:selected").text()); |
| | | } |
| | | ajax.set("subArr",JSON.stringify(subArr)); |
| | | ajax.start(); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | $(function() { |
| | | Feng.initValidator("siteInfoForm", TSiteInfoDlg.validateFields); |
| | | /** |
| | | * 上一步:返回基本信息 |
| | | */ |
| | | TSiteInfo.previousStep = function() { |
| | | $("#step2_price_config").removeClass('active'); |
| | | $("#step1_basic_info").addClass('active'); |
| | | |
| | | // 滚动到顶部 |
| | | $('html, body').animate({scrollTop: 0}, 300); |
| | | } |
| | | |
| | | /** |
| | | * 初始化价格配置 |
| | | */ |
| | | TSiteInfo.initPriceConfig = function() { |
| | | // 清空价格表 |
| | | $("#booking_price_tbody").empty(); |
| | | $("#walkin_price_tbody").empty(); |
| | | |
| | | // 隐藏价格表区域 |
| | | $("#booking_section").hide(); |
| | | $("#walkin_section").hide(); |
| | | |
| | | // 标记价格表未生成 |
| | | TSiteInfo.priceTablesGenerated = false; |
| | | |
| | | // 初始化计数器 |
| | | TSiteInfo.bookingRowIndex = 0; |
| | | TSiteInfo.walkinRowIndex = 0; |
| | | |
| | | // 监听人群选择变化 |
| | | $("#audience_booking, #audience_walkin").off('change').on('change', function() { |
| | | TSiteInfo.updateAudienceUI(); |
| | | // 如果价格表已生成,提示需要重新生成 |
| | | if (TSiteInfo.priceTablesGenerated) { |
| | | TSiteInfo.clearPriceTables(); |
| | | } |
| | | }); |
| | | |
| | | // 更新界面(但不显示价格表) |
| | | TSiteInfo.updateAudienceUI(); |
| | | |
| | | // 初始化是否可预定半场状态 |
| | | var isHalf = TSiteInfo.priceConfig.isHalf; |
| | | 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(); |
| | | } |
| | | |
| | | // 加载已有的价格数据(如果是编辑模式) |
| | | var siteId = $("#id").val(); |
| | | if (siteId) { |
| | | TSiteInfo.loadSitePrices(siteId); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 加载场地价格数据 |
| | | */ |
| | | TSiteInfo.loadSitePrices = function(siteId) { |
| | | $.ajax({ |
| | | url: Feng.ctxPath + "/tSite/getSitePrices/" + siteId, |
| | | type: "GET", |
| | | success: function(response) { |
| | | if (response.code === 200 && response.data && response.data.length > 0) { |
| | | TSiteInfo.renderPriceData(response.data); |
| | | } |
| | | }, |
| | | error: function(xhr, status, error) { |
| | | console.error("加载价格数据失败", error); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 渲染价格数据到页面 |
| | | */ |
| | | TSiteInfo.renderPriceData = function(priceData) { |
| | | // 分析数据,确定面向人群 |
| | | var hasBooking = false; |
| | | var hasWalkin = false; |
| | | var walkinCapacity = 0; |
| | | |
| | | for (var i = 0; i < priceData.length; i++) { |
| | | if (priceData[i].targetAudience == 1) { |
| | | hasBooking = true; |
| | | } else if (priceData[i].targetAudience == 2) { |
| | | hasWalkin = true; |
| | | } |
| | | } |
| | | |
| | | // 设置面向人群复选框 |
| | | $("#audience_booking").prop('checked', hasBooking); |
| | | $("#audience_walkin").prop('checked', hasWalkin); |
| | | |
| | | // 如果有散客,从隐藏字段获取并设置容纳散客数 |
| | | if (hasWalkin) { |
| | | $("#walkin_capacity_group").show(); |
| | | var walkinCapacity = $("#walkinCapacity").val(); |
| | | if (walkinCapacity) { |
| | | $("#walkin_capacity").val(walkinCapacity); |
| | | } |
| | | } |
| | | |
| | | // 生成价格表(回显场景不自动添加空白行) |
| | | TSiteInfo.generatePriceTables(false); |
| | | |
| | | // 按时段分组价格数据 |
| | | var timeSlotMap = {}; |
| | | for (var i = 0; i < priceData.length; i++) { |
| | | var item = priceData[i]; |
| | | var key = item.targetAudience + "_" + item.startTime + "_" + item.endTime; |
| | | |
| | | if (!timeSlotMap[key]) { |
| | | timeSlotMap[key] = { |
| | | targetAudience: item.targetAudience, |
| | | startTime: item.startTime, |
| | | endTime: item.endTime, |
| | | days: {} |
| | | }; |
| | | } |
| | | |
| | | if (!timeSlotMap[key].days[item.dayOfWeek]) { |
| | | timeSlotMap[key].days[item.dayOfWeek] = {}; |
| | | } |
| | | |
| | | var fieldTypeKey = item.fieldType == 1 ? 'full' : 'half'; |
| | | timeSlotMap[key].days[item.dayOfWeek][fieldTypeKey] = { |
| | | cashPrice: item.cashPrice, |
| | | coinPrice: item.coinPrice |
| | | }; |
| | | } |
| | | |
| | | // 填充数据到表格 |
| | | for (var key in timeSlotMap) { |
| | | var timeSlot = timeSlotMap[key]; |
| | | var targetAudience = timeSlot.targetAudience; |
| | | var isBooking = (targetAudience == 1); |
| | | |
| | | // 添加时段行 |
| | | if (isBooking) { |
| | | TSiteInfo.addBookingTimeSlot(); |
| | | var index = TSiteInfo.bookingRowIndex - 1; |
| | | |
| | | // 设置时间 |
| | | $("#booking_start_" + index).val(timeSlot.startTime); |
| | | $("#booking_end_" + index).val(timeSlot.endTime); |
| | | |
| | | // 填充价格 |
| | | for (var day = 1; day <= 7; day++) { |
| | | if (timeSlot.days[day]) { |
| | | if (timeSlot.days[day].full) { |
| | | $("#booking_" + index + "_" + day + "_full_cash").val(timeSlot.days[day].full.cashPrice || ''); |
| | | $("#booking_" + index + "_" + day + "_full_coin").val(timeSlot.days[day].full.coinPrice || ''); |
| | | } |
| | | if (timeSlot.days[day].half) { |
| | | $("#booking_" + index + "_" + day + "_half_cash").val(timeSlot.days[day].half.cashPrice || ''); |
| | | $("#booking_" + index + "_" + day + "_half_coin").val(timeSlot.days[day].half.coinPrice || ''); |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | TSiteInfo.addWalkinTimeSlot(); |
| | | var index = TSiteInfo.walkinRowIndex - 1; |
| | | |
| | | // 设置时间 |
| | | $("#walkin_start_" + index).val(timeSlot.startTime); |
| | | $("#walkin_end_" + index).val(timeSlot.endTime); |
| | | |
| | | // 填充价格 |
| | | for (var day = 1; day <= 7; day++) { |
| | | if (timeSlot.days[day]) { |
| | | if (timeSlot.days[day].full) { |
| | | $("#walkin_" + index + "_" + day + "_full_cash").val(timeSlot.days[day].full.cashPrice || ''); |
| | | $("#walkin_" + index + "_" + day + "_full_coin").val(timeSlot.days[day].full.coinPrice || ''); |
| | | } |
| | | if (timeSlot.days[day].half) { |
| | | $("#walkin_" + index + "_" + day + "_half_cash").val(timeSlot.days[day].half.cashPrice || ''); |
| | | $("#walkin_" + index + "_" + day + "_half_coin").val(timeSlot.days[day].half.coinPrice || ''); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 生成价格表 |
| | | * @param {boolean} autoAddRow - 是否自动添加空白时段,默认为 true |
| | | */ |
| | | TSiteInfo.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; |
| | | } |
| | | } |
| | | |
| | | // 清除现有价格表 |
| | | TSiteInfo.clearPriceTables(); |
| | | |
| | | // 生成表头 |
| | | TSiteInfo.buildTableHeaders(); |
| | | |
| | | // 显示对应的价格表区域 |
| | | if (bookingChecked) { |
| | | $("#booking_section").show(); |
| | | // 根据参数决定是否自动添加一条订场时段 |
| | | if (autoAddRow) { |
| | | TSiteInfo.addBookingTimeSlot(); |
| | | } |
| | | } |
| | | if (walkinChecked) { |
| | | $("#walkin_section").show(); |
| | | // 根据参数决定是否自动添加一条散客时段 |
| | | if (autoAddRow) { |
| | | TSiteInfo.addWalkinTimeSlot(); |
| | | } |
| | | } |
| | | |
| | | // 标记价格表已生成 |
| | | TSiteInfo.priceTablesGenerated = true; |
| | | |
| | | if (autoAddRow) { |
| | | Feng.success("价格表已生成,请填写价格!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 清除价格表 |
| | | */ |
| | | TSiteInfo.clearPriceTables = function() { |
| | | // 清空价格表内容 |
| | | $("#booking_price_tbody").empty(); |
| | | $("#walkin_price_tbody").empty(); |
| | | |
| | | // 隐藏价格表区域 |
| | | $("#booking_section").hide(); |
| | | $("#walkin_section").hide(); |
| | | |
| | | // 重置计数器 |
| | | TSiteInfo.bookingRowIndex = 0; |
| | | TSiteInfo.walkinRowIndex = 0; |
| | | |
| | | // 标记价格表未生成 |
| | | TSiteInfo.priceTablesGenerated = false; |
| | | |
| | | Feng.info("价格配置已清除,请重新生成价格表!"); |
| | | } |
| | | |
| | | /** |
| | | * 添加场地名 |
| | | */ |
| | | TSiteInfo.addFieldBox = function() { |
| | | var html = '<div class="field-item">' + |
| | | '<label>*单个场地名</label>' + |
| | | '<input type="text" name="name1_step2" class="form-control" style="flex:1;margin-right:10px;" placeholder="请输入场地名"/>' + |
| | | '<i class="fa fa-remove btn-remove" onclick="TSiteInfo.removeFieldBox(this)"></i>' + |
| | | '</div>'; |
| | | $("#field_container").append(html); |
| | | } |
| | | |
| | | /** |
| | | * 删除场地名 |
| | | */ |
| | | TSiteInfo.removeFieldBox = function(btn) { |
| | | $(btn).closest('.field-item').remove(); |
| | | } |
| | | |
| | | /** |
| | | * 添加半场名称 |
| | | */ |
| | | TSiteInfo.addHalfFieldBox = function() { |
| | | var html = '<div class="field-item">' + |
| | | '<label>*半场名称</label>' + |
| | | '<input type="text" name="name2_step2" class="form-control" style="flex:1;margin-right:10px;" placeholder="请输入半场名称"/>' + |
| | | '<i class="fa fa-remove btn-remove" onclick="TSiteInfo.removeHalfFieldBox(this)"></i>' + |
| | | '</div>'; |
| | | $("#half_field_container").append(html); |
| | | } |
| | | |
| | | /** |
| | | * 删除半场名称 |
| | | */ |
| | | TSiteInfo.removeHalfFieldBox = function(btn) { |
| | | $(btn).closest('.field-item').remove(); |
| | | } |
| | | |
| | | /** |
| | | * 更新半场字段显示 |
| | | */ |
| | | TSiteInfo.updateHalfField = function(value) { |
| | | if (value == 1) { |
| | | $("#halfCode_step2").show(); |
| | | // 更新isHalf |
| | | TSiteInfo.priceConfig.isHalf = 1; |
| | | } else { |
| | | $("#halfCode_step2").hide(); |
| | | TSiteInfo.priceConfig.isHalf = 2; |
| | | } |
| | | |
| | | // 如果价格表已生成,清除价格表 |
| | | if (TSiteInfo.priceTablesGenerated) { |
| | | TSiteInfo.clearPriceTables(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 更新人群相关UI |
| | | */ |
| | | TSiteInfo.updateAudienceUI = function() { |
| | | var walkinChecked = $("#audience_walkin").is(':checked'); |
| | | |
| | | // 只控制容纳散客数字段的显示/隐藏 |
| | | // 价格表的显示由生成按钮控制 |
| | | if (walkinChecked) { |
| | | $("#walkin_capacity_group").show(); |
| | | } else { |
| | | $("#walkin_capacity_group").hide(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 构建表头 |
| | | */ |
| | | TSiteInfo.buildTableHeaders = function() { |
| | | var isHalf = TSiteInfo.priceConfig.isHalf; |
| | | |
| | | var headerHtml = '<tr>' + |
| | | '<th rowspan="3" width="120">时段开始</th>' + |
| | | '<th rowspan="3" width="120">时段结束</th>'; |
| | | |
| | | // 周一到周日的表头 |
| | | var weekDays = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']; |
| | | |
| | | if (isHalf == 1) { |
| | | // 如果可预订半场,每天有4列(全场×2 + 半场×2) |
| | | for (var i = 0; i < weekDays.length; i++) { |
| | | headerHtml += '<th colspan="4">' + weekDays[i] + '</th>'; |
| | | } |
| | | headerHtml += '<th rowspan="3" width="80">操作</th>' + |
| | | '</tr>' + |
| | | '<tr>'; |
| | | |
| | | // 第二行:全场/半场 |
| | | for (var i = 0; i < weekDays.length; i++) { |
| | | headerHtml += '<th colspan="2">全场</th>' + |
| | | '<th colspan="2">半场</th>'; |
| | | } |
| | | headerHtml += '</tr>' + |
| | | '<tr>'; |
| | | |
| | | // 第三行:现金/玩湃币 |
| | | for (var i = 0; i < weekDays.length; i++) { |
| | | headerHtml += '<th width="80">现金</th>' + |
| | | '<th width="80">玩湃币</th>' + |
| | | '<th width="80">现金</th>' + |
| | | '<th width="80">玩湃币</th>'; |
| | | } |
| | | } else { |
| | | // 如果不可预订半场,每天有2列(全场×2) |
| | | for (var i = 0; i < weekDays.length; i++) { |
| | | headerHtml += '<th colspan="2">' + weekDays[i] + '</th>'; |
| | | } |
| | | headerHtml += '<th rowspan="3" width="80">操作</th>' + |
| | | '</tr>' + |
| | | '<tr>'; |
| | | |
| | | // 第二行:全场 |
| | | for (var i = 0; i < weekDays.length; i++) { |
| | | headerHtml += '<th colspan="2">全场</th>'; |
| | | } |
| | | headerHtml += '</tr>' + |
| | | '<tr>'; |
| | | |
| | | // 第三行:现金/玩湃币 |
| | | for (var i = 0; i < weekDays.length; i++) { |
| | | headerHtml += '<th width="80">现金</th>' + |
| | | '<th width="80">玩湃币</th>'; |
| | | } |
| | | } |
| | | |
| | | headerHtml += '</tr>'; |
| | | |
| | | // 设置表头 |
| | | $("#booking_thead").html(headerHtml); |
| | | $("#walkin_thead").html(headerHtml); |
| | | } |
| | | |
| | | /** |
| | | * 添加订场时段 |
| | | */ |
| | | TSiteInfo.addBookingTimeSlot = function() { |
| | | var isHalf = TSiteInfo.priceConfig.isHalf; |
| | | var index = TSiteInfo.bookingRowIndex++; |
| | | |
| | | var html = '<tr data-index="' + index + '">' + |
| | | '<td><input type="time" class="form-control" id="booking_start_' + index + '" value="09:00"></td>' + |
| | | '<td><input type="time" class="form-control" id="booking_end_' + index + '" value="10:00"></td>'; |
| | | |
| | | // 周一到周日,每天的价格输入框 |
| | | for (var day = 1; day <= 7; day++) { |
| | | if (isHalf == 1) { |
| | | // 全场现金、全场玩湃币、半场现金、半场玩湃币 |
| | | html += '<td><input type="number" class="form-control price-input" id="booking_' + index + '_' + day + '_full_cash" min="0" step="0.01" placeholder="0"></td>' + |
| | | '<td><input type="number" class="form-control price-input" id="booking_' + index + '_' + day + '_full_coin" min="0" step="0.01" placeholder="0"></td>' + |
| | | '<td><input type="number" class="form-control price-input" id="booking_' + index + '_' + day + '_half_cash" min="0" step="0.01" placeholder="0"></td>' + |
| | | '<td><input type="number" class="form-control price-input" id="booking_' + index + '_' + day + '_half_coin" min="0" step="0.01" placeholder="0"></td>'; |
| | | } else { |
| | | // 全场现金、全场玩湃币 |
| | | html += '<td><input type="number" class="form-control price-input" id="booking_' + index + '_' + day + '_full_cash" min="0" step="0.01" placeholder="0"></td>' + |
| | | '<td><input type="number" class="form-control price-input" id="booking_' + index + '_' + day + '_full_coin" min="0" step="0.01" placeholder="0"></td>'; |
| | | } |
| | | } |
| | | |
| | | html += '<td><button type="button" class="btn btn-sm btn-danger" onclick="TSiteInfo.removeTimeSlot(this)"><i class="fa fa-trash"></i></button></td>' + |
| | | '</tr>'; |
| | | |
| | | $("#booking_price_tbody").append(html); |
| | | } |
| | | |
| | | /** |
| | | * 添加散客时段 |
| | | */ |
| | | TSiteInfo.addWalkinTimeSlot = function() { |
| | | var isHalf = TSiteInfo.priceConfig.isHalf; |
| | | var index = TSiteInfo.walkinRowIndex++; |
| | | |
| | | var html = '<tr data-index="' + index + '">' + |
| | | '<td><input type="time" class="form-control" id="walkin_start_' + index + '" value="09:00"></td>' + |
| | | '<td><input type="time" class="form-control" id="walkin_end_' + index + '" value="10:00"></td>'; |
| | | |
| | | // 周一到周日,每天的价格输入框 |
| | | for (var day = 1; day <= 7; day++) { |
| | | if (isHalf == 1) { |
| | | // 全场现金、全场玩湃币、半场现金、半场玩湃币 |
| | | html += '<td><input type="number" class="form-control price-input" id="walkin_' + index + '_' + day + '_full_cash" min="0" step="0.01" placeholder="0"></td>' + |
| | | '<td><input type="number" class="form-control price-input" id="walkin_' + index + '_' + day + '_full_coin" min="0" step="0.01" placeholder="0"></td>' + |
| | | '<td><input type="number" class="form-control price-input" id="walkin_' + index + '_' + day + '_half_cash" min="0" step="0.01" placeholder="0"></td>' + |
| | | '<td><input type="number" class="form-control price-input" id="walkin_' + index + '_' + day + '_half_coin" min="0" step="0.01" placeholder="0"></td>'; |
| | | } else { |
| | | // 全场现金、全场玩湃币 |
| | | html += '<td><input type="number" class="form-control price-input" id="walkin_' + index + '_' + day + '_full_cash" min="0" step="0.01" placeholder="0"></td>' + |
| | | '<td><input type="number" class="form-control price-input" id="walkin_' + index + '_' + day + '_full_coin" min="0" step="0.01" placeholder="0"></td>'; |
| | | } |
| | | } |
| | | |
| | | html += '<td><button type="button" class="btn btn-sm btn-danger" onclick="TSiteInfo.removeTimeSlot(this)"><i class="fa fa-trash"></i></button></td>' + |
| | | '</tr>'; |
| | | |
| | | $("#walkin_price_tbody").append(html); |
| | | } |
| | | |
| | | /** |
| | | * 删除时段 |
| | | */ |
| | | TSiteInfo.removeTimeSlot = function(btn) { |
| | | $(btn).closest('tr').remove(); |
| | | } |
| | | |
| | | /** |
| | | * 检查时段是否重叠 |
| | | */ |
| | | TSiteInfo.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); |
| | | } |
| | | |
| | | /** |
| | | * 验证订场和散客时段不重叠 |
| | | */ |
| | | TSiteInfo.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 (TSiteInfo.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 (TSiteInfo.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; |
| | | } |
| | | |
| | | /** |
| | | * 保存价格配置 |
| | | */ |
| | | TSiteInfo.savePriceConfig = function() { |
| | | // 验证价格表是否已生成 |
| | | if (!TSiteInfo.priceTablesGenerated) { |
| | | Feng.error("请先点击【生成价格表】按钮生成价格配置表!"); |
| | | 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 (!TSiteInfo.validateNoTimeOverlap()) { |
| | | return; |
| | | } |
| | | |
| | | // 收集价格数据 |
| | | var priceDTOS = TSiteInfo.collectPriceData(); |
| | | |
| | | // 如果返回 null,说明验证失败,已经显示了具体错误信息 |
| | | if (priceDTOS === null) { |
| | | return; |
| | | } |
| | | |
| | | // 如果返回空数组,说明没有填写任何价格 |
| | | if (priceDTOS.length === 0) { |
| | | Feng.error("请至少添加一个时段并填写价格!"); |
| | | return; |
| | | } |
| | | |
| | | var siteId = $("#siteId").val(); |
| | | var isAddMode = !siteId; // 判断是新增模式还是编辑模式 |
| | | |
| | | // 收集场地配置 |
| | | 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'); |
| | | |
| | | var data = { |
| | | targetAudience: targetAudience.join(','), |
| | | walkinCapacity: walkinChecked ? parseInt($("#walkin_capacity").val()) : 0, |
| | | nextName: nextNames.join(','), |
| | | halfName: halfNames.join(','), |
| | | ishalf: parseInt(isHalf), |
| | | priceDTOS: priceDTOS |
| | | }; |
| | | |
| | | if (!isAddMode) { |
| | | data.siteId = parseInt(siteId); |
| | | } else { |
| | | // 新增模式:收集基本信息 |
| | | data = Object.assign(data, TSiteInfo.collectBasicData()); |
| | | if (!data.name) { // 如果基本信息收集失败 |
| | | return; |
| | | } |
| | | } |
| | | |
| | | // 确认提交 |
| | | layer.confirm('确定要保存价格配置吗?', { |
| | | btn: ['确定', '取消'] |
| | | }, function(index) { |
| | | layer.close(index); |
| | | |
| | | // 提交到后端 |
| | | var url = isAddMode ? "/tSite/addSite" : "/tSite/savePriceConfig"; |
| | | var successMsg = isAddMode ? "场地添加成功!" : "价格配置保存成功!"; |
| | | |
| | | $.ajax({ |
| | | url: Feng.ctxPath + url, |
| | | type: "POST", |
| | | data: JSON.stringify(data), |
| | | contentType: "application/json", |
| | | success: function(response) { |
| | | Feng.success(successMsg); |
| | | // 刷新列表 |
| | | if (window.parent.TSite && window.parent.TSite.table) { |
| | | window.parent.TSite.table.refresh(); |
| | | } |
| | | // 关闭页面 |
| | | setTimeout(function() { |
| | | TSiteInfo.close(); |
| | | }, 1500); |
| | | }, |
| | | error: function(xhr, status, error) { |
| | | var errorMsg = "保存失败"; |
| | | if (xhr.responseJSON && xhr.responseJSON.message) { |
| | | errorMsg = xhr.responseJSON.message; |
| | | } |
| | | Feng.error(errorMsg); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 收集基本信息数据(用于新增场地) |
| | | */ |
| | | TSiteInfo.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 = $("#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 = TSiteInfo.editor.getContent(); |
| | | if(introduce==""){ |
| | | Feng.info("请输入公告内容") |
| | | return null; |
| | | } |
| | | } |
| | | data.introduce= introduce; |
| | | |
| | | var goodImgs = TSiteInfo.goodsPicArray; |
| | | if(objectType==1){ |
| | | if(goodImgs.length==0){ |
| | | Feng.info("请上传实景图") |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | 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 |
| | | |
| | | // 基本验证 |
| | | if($("#store").val()=='' ){ |
| | | Feng.info("请选择门店") |
| | | return null; |
| | | } |
| | | if($("#siteTypeId").val()=='' ){ |
| | | Feng.info("请选择场地分类") |
| | | return null; |
| | | } |
| | | if($("#name").val()==''){ |
| | | Feng.info("请输入场地名称") |
| | | return null; |
| | | } |
| | | if($("#insuranceEndTime").val()==''){ |
| | | Feng.info("请输入场地责任险有效期") |
| | | return null; |
| | | } |
| | | if($("#img").val()==''){ |
| | | Feng.info("请上传场地责任有效期图片") |
| | | return null; |
| | | } |
| | | if($('#courseVideo').val()==''){ |
| | | Feng.info("请上传消防及应急管理方案") |
| | | return null; |
| | | } |
| | | |
| | | return data; |
| | | } |
| | | |
| | | /** |
| | | * 收集价格数据(返回符合后端 PriceDTO 格式的数据) |
| | | * targetAudience: 1=订场, 2=散客 |
| | | * fieldType: 1=全场, 2=半场 |
| | | */ |
| | | TSiteInfo.collectPriceData = function() { |
| | | var priceDTOS = []; |
| | | var isHalf = TSiteInfo.priceConfig.isHalf; |
| | | var bookingChecked = $("#audience_booking").is(':checked'); |
| | | var walkinChecked = $("#audience_walkin").is(':checked'); |
| | | var validationFailed = false; // 验证失败标志 |
| | | |
| | | // 收集订场价格 |
| | | if (bookingChecked) { |
| | | $("#booking_price_tbody tr").each(function() { |
| | | if (validationFailed) return false; // 如果已经验证失败,终止循环 |
| | | |
| | | var index = $(this).data('index'); |
| | | var startTime = $("#booking_start_" + index).val(); |
| | | var endTime = $("#booking_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 = $("#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; |
| | | } |
| | | |
| | | function UploadFileFn(){ |
| | | $('#upFile').click(); |
| | | } |
| | | $(function () { |
| | | TSiteInfo.editor = UE.getEditor('editor'); |
| | | // 限制分钟选项为 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; |
| | | // |
| | | // }); |
| | | // }); |
| | | Feng.initValidator("carInfoForm", TSiteInfo.validateFields); |
| | | var carPhoto = new $WebUpload("img"); |
| | | carPhoto.setUploadBarId("progressBar"); |
| | | carPhoto.init(); |
| | | |
| | | var carPhoto1 = new $WebUpload("url"); |
| | | carPhoto1.setUploadBarId("progressBar"); |
| | | carPhoto1.init(); |
| | | TSiteInfo.getTime() |
| | | |
| | | |
| | | }); |
| | | |
| | | |
| | | //省改变 |
| | | TSiteInfoDlg.provinceChange = function (e) { |
| | | var provinceCode=$(e).val(); |
| | | var ajax = new $ax(Feng.ctxPath + "/tCompany/change", function(data){ |
| | | if(data!=null){ |
| | | if(language==1){ |
| | | var content='<option value="">选择市</option>'; |
| | | }else if(language==2){ |
| | | var content='<option value="">Please select a city</option>'; |
| | | }else { |
| | | var content='<option value="">Pilih Kota</option>'; |
| | | } |
| | | $.each(data, function(k,v) { |
| | | content += "<option value='"+v.code+"'>"+v.name+"</option>"; |
| | | }); |
| | | $("#cityCode").empty().append(content); |
| | | $("#districtCode").empty().append('<option value="">选择区</option>'); |
| | | } |
| | | }); |
| | | ajax.set("code",provinceCode); |
| | | ajax.start(); |
| | | } |
| | | //市改变 |
| | | TSiteInfoDlg.cityChange = function (e) { |
| | | var cityCode=$(e).val(); |
| | | var ajax = new $ax(Feng.ctxPath + "/tCompany/change", function(data){ |
| | | if(data!=null){ |
| | | if(language==1){ |
| | | var content='<option value="">选择区</option>'; |
| | | }else if(language==2){ |
| | | var content='<option value="">Please select a city</option>'; |
| | | }else { |
| | | var content='<option value="">Pilih Kota</option>'; |
| | | } |
| | | $.each(data, function(k,v) { |
| | | content += "<option value='"+v.code+"'>"+v.name+"</option>"; |
| | | }); |
| | | $("#districtCode").empty().append(content); |
| | | } |
| | | }); |
| | | ajax.set("code",cityCode); |
| | | ajax.start(); |
| | | } |
| | | /** |
| | | * 类型改变执行 |
| | | * @param e |
| | | */ |
| | | TSiteInfoDlg.areaTypeClick = function (e) { |
| | | if (1 == e){//行政区域 |
| | | $("#areaType1Div").show(); |
| | | $("#areaType2Div").hide(); |
| | | } else if (2 == e){ |
| | | $("#areaType2Div").show(); |
| | | $("#areaType1Div").hide(); |
| | | } |
| | | } |
| | | |
| | | //站点区域省改变 |
| | | TSiteInfoDlg.provinceChange1 = function (e) { |
| | | var provinceCode=$(e).val(); |
| | | var ajax = new $ax(Feng.ctxPath + "/tCompany/change", function(data){ |
| | | if(data!=null){ |
| | | if(language==1){ |
| | | var content='<option value="">选择市</option>'; |
| | | }else if(language==2){ |
| | | var content='<option value="">Please select a city</option>'; |
| | | }else { |
| | | var content='<option value="">Pilih Kota</option>'; |
| | | } |
| | | $.each(data, function(k,v) { |
| | | content += "<option value='"+v.code+"'>"+v.name+"</option>"; |
| | | }); |
| | | $("#cityCode1").empty().append(content); |
| | | $("#districtCode1").empty().append('<option value="">选择区</option>'); |
| | | } |
| | | }); |
| | | ajax.set("code",provinceCode); |
| | | ajax.start(); |
| | | } |
| | | //站点区域市改变 |
| | | TSiteInfoDlg.cityChange1 = function (e) { |
| | | var cityCode=$(e).val(); |
| | | var ajax = new $ax(Feng.ctxPath + "/tCompany/change", function(data){ |
| | | if(data!=null){ |
| | | if(language==1){ |
| | | var content='<option value="">选择区</option>'; |
| | | }else if(language==2){ |
| | | var content='<option value="">Please select a city</option>'; |
| | | }else { |
| | | var content='<option value="">Pilih Kota</option>'; |
| | | } |
| | | $.each(data, function(k,v) { |
| | | content += "<option value='"+v.code+"'>"+v.name+"</option>"; |
| | | }); |
| | | $("#districtCode1").empty().append(content); |
| | | } |
| | | }); |
| | | ajax.set("code",cityCode); |
| | | ajax.start(); |
| | | } |
| | | |
| | | /** |
| | | * 添加区域 |
| | | */ |
| | | TSiteInfoDlg.addArea = function () { |
| | | var areaName = $("#areaName").val(); |
| | | if ("" == areaName || null == areaName){ |
| | | Feng.error("区域名称不能为空"); |
| | | return; |
| | | } |
| | | var areaType = $("input[name='areaType']:checked").val(); |
| | | var b = false; |
| | | $(".areaValueClass").each(function () { |
| | | var areaType1 = $(this).find("input[name*='areaType1']").val(); |
| | | if(areaType != areaType1){ |
| | | b = true; |
| | | return |
| | | } |
| | | }); |
| | | if(b){ |
| | | Feng.error("电子围栏和行政区域不能混合使用"); |
| | | return; |
| | | } |
| | | |
| | | if (1 == areaType){ |
| | | var provinceCode1 = $("#provinceCode1").val(); |
| | | var province1 = $("#provinceCode1 option:selected").text(); |
| | | var cityCode1 = $("#cityCode1").val(); |
| | | var city1 = $("#cityCode1 option:selected").text(); |
| | | var districtCode1 = $("#districtCode1").val(); |
| | | var district1 = $("#districtCode1 option:selected").text(); |
| | | if ("" == provinceCode1){ |
| | | Feng.error("请选择行政区域所属省"); |
| | | return; |
| | | } |
| | | }else if (2 == areaType) { |
| | | if("" == coordinate){ |
| | | Feng.error('请在地图上规划区域'); |
| | | return; |
| | | } |
| | | } |
| | | var subArr=[]; |
| | | $(".areaValueClass").each(function () { |
| | | subArr.push({ |
| | | areaType:$(this).find("input[name*='areaType1']").val(), |
| | | time:$(this).find("input[name*='time']").val(), |
| | | name:$(this).find("input[name*='name']").val(), |
| | | province:$(this).find("input[name*='province1']").val(), |
| | | provinceCode:$(this).find("input[name*='provinceCode1']").val(), |
| | | city:$(this).find("input[name*='city1']").val(), |
| | | cityCode:$(this).find("input[name*='cityCode1']").val(), |
| | | district:$(this).find("input[name*='district1']").val(), |
| | | districtCode:$(this).find("input[name*='districtCode1']").val(), |
| | | coordinate:$(this).find("input[name*='coordinate1']").val(), |
| | | }) |
| | | }); |
| | | var str = '<tr class="areaValueClass">' + |
| | | // '<td>' + (subArr.length+1) + '</td>' + |
| | | '<td style="text-align: center;">' + |
| | | '<input type="hidden" id="areaType1" name="areaType1" value="'+areaType+'">' + |
| | | '<input type="hidden" id="time" name="time" value="'+getNowFormatDate()+'">' + getNowFormatDate() + '</td>' + |
| | | |
| | | '<td style="text-align: center;">' + |
| | | '<input type="hidden" id="name" name="name" value="'+areaName+'">' + |
| | | '<input type="hidden" id="provinceCode1" name="provinceCode1" value="'+provinceCode1+'">' + |
| | | '<input type="hidden" id="province1" name="province1" value="'+province1+'">' + |
| | | '<input type="hidden" id="cityCode1" name="cityCode1" value="'+cityCode1+'">' + |
| | | '<input type="hidden" id="city1" name="city1" value="'+city1+'">' + |
| | | '<input type="hidden" id="districtCode1" name="districtCode1" value="'+districtCode1+'">' + |
| | | '<input type="hidden" id="district1" name="district1" value="'+district1+'">' + |
| | | '<input type="hidden" id="coordinate1" name="coordinate1" value="'+coordinate+'">' + areaName + '</td>' + |
| | | |
| | | '<td style="text-align: center;"><button onclick="deleteSub(this)">移除</button></td></tr>'; |
| | | $("#areaValue").append(str); |
| | | |
| | | //清除电子围栏数据 |
| | | $("#clear").click(); |
| | | } |
| | | //删除数据 |
| | | function deleteSub(e) { |
| | | $(e).parent().parent().remove(); |
| | | } |