From e97c42a4a63427ad82f4db8a8783066b4f71847b Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 03 十一月 2025 20:27:22 +0800
Subject: [PATCH] bug修改

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java |    4 +
 cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js                      |  137 ++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 135 insertions(+), 6 deletions(-)

diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
index 181576d..2bd1a66 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
+++ b/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());
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
index a2bff4c..18abcdd 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js
+++ b/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() {

--
Gitblit v1.7.1