无关风月
2025-11-03 b6adafd51c29a388ba5c99078afce77a02e2616f
Merge remote-tracking branch 'origin/2.0' into 2.0
2个文件已修改
141 ■■■■■ 已修改文件
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
@@ -595,7 +595,9 @@
    @ResponseBody
    @RequestMapping(value = "/updateSite")
    public ResultUtil updateSite(@RequestBody Site site) {
        if(site.getInsuranceImg().equals("")){
        System.out.println(JSONObject.toJSONString(site));
        // 防止空指针异常:如果 insuranceImg 为 null 或空字符串,设置为 null
        if(site.getInsuranceImg() == null || site.getInsuranceImg().equals("")){
            site.setInsuranceImg(null);
        }
        Store store = storeClient.getStoreById(site.getStoreId());
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
@@ -946,7 +946,8 @@
    }
    
    // 清除现有价格表
    TSiteInfo.clearPriceTables();
    // 如果是回显场景(autoAddRow 为 false),使用静默模式不显示提示
    TSiteInfo.clearPriceTables(!autoAddRow);
    
    // 生成表头
    TSiteInfo.buildTableHeaders();
@@ -977,8 +978,9 @@
/**
 * 清除价格表
 * @param {boolean} silent - 是否静默模式(不显示提示),默认为 false
 */
TSiteInfo.clearPriceTables = function() {
TSiteInfo.clearPriceTables = function(silent) {
    // 清空价格表内容
    $("#booking_price_tbody").empty();
    $("#walkin_price_tbody").empty();
@@ -994,7 +996,10 @@
    // 标记价格表未生成
    TSiteInfo.priceTablesGenerated = false;
    
    Feng.info("价格配置已清除,请重新生成价格表!");
    // 只在非静默模式下显示提示
    if (!silent) {
        Feng.info("价格配置已清除,请重新生成价格表!");
    }
}
/**
@@ -1370,7 +1375,16 @@
    };
    
    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());
@@ -1386,7 +1400,7 @@
        layer.close(index);
        
        // 提交到后端
        var url = isAddMode ? "/tSite/addSite" : "/tSite/savePriceConfig";
        var url = isAddMode ? "/tSite/addSite" : "/tSite/updateSite";
        var successMsg = isAddMode ? "场地添加成功!" : "价格配置保存成功!";
        
        $.ajax({
@@ -1417,6 +1431,119 @@
}
/**
 * 收集基本信息数据(用于编辑场地时保存价格配置)
 */
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() {