From 1293009364a938f32b8b9066caafa2f55be06496 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 29 十月 2025 09:11:46 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java |    4 
 cloud-server-management/src/main/webapp/WEB-INF/view/common/tags/avatar.tag                            |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html                      |  119 ++++++++++++-------
 cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js                           |  123 +++++++++++---------
 cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js                      |   78 +++++++++---
 5 files changed, 206 insertions(+), 120 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 c1905a2..cd757eb 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
@@ -321,6 +321,10 @@
         model.addAttribute("objectId",objectId);
 
         model.addAttribute("stores",stores);
+        
+        // 显式传递运营商ID和是否可预约字段,确保回显正确
+        model.addAttribute("operatorId", site.getOperatorId());
+        model.addAttribute("reservation", site.getReservation());
 
         String nextName = site.getNextName();
         ArrayList<String> strings1 = new ArrayList<>();
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/common/tags/avatar.tag b/cloud-server-management/src/main/webapp/WEB-INF/view/common/tags/avatar.tag
index 4c309d2..9f1bd00 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/common/tags/avatar.tag
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/common/tags/avatar.tag
@@ -20,7 +20,7 @@
             <i class="fa fa-upload"></i>&nbsp;文件上传
         </div>
     </div>
-    <input type="hidden" id="${id}" />
+    <input type="hidden" id="${id}" value="${avatarImg}"/>
 </div>
 @if(isNotEmpty(underline) && underline == 'true'){
     <div class="hr-line-dashed"></div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html
index 4582400..2ecee07 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html
@@ -238,7 +238,8 @@
         <div class="form-horizontal" id="carInfoForm">
 
             <input id="type_" value="${list.ishalf}" hidden>
-            <input id="reservation" value="${list.reservation}" hidden>
+            <input id="reservation" value="${reservation!''}" hidden>
+            <input id="operatorIdValue" value="${operatorId!''}" hidden>
             <input id="objectType" value="${objectType}" hidden>
             <input type="hidden" id="siteId" value="${list.id}">
             <input type="hidden" id="targetAudience" value="${targetAudience}">
@@ -525,26 +526,31 @@
 <script>
 
     function updateTime1() {
-        var selectedValue = document.getElementById("siteTypeOne").value;
+        var siteTypeOneEl = document.getElementById("siteTypeOne");
+        if (!siteTypeOneEl) {
+            console.log("siteTypeOne元素未找到");
+            return;
+        }
+        
+        var selectedValue = siteTypeOneEl.value;
         var priceLabel = document.getElementById("priceLabel");
         var priceLabel1 = document.getElementById("priceLabel1");
         var priceLabel3 = document.getElementById("priceLabel3");
         var priceLabel4 = document.getElementById("priceLabel4");
 
+        // 检查元素是否存在再设置
         if (selectedValue === "智慧场地") {
             console.log("=============智慧场地=")
-            priceLabel.innerText = "元/15分钟";
-            priceLabel1.innerText = "元/15分钟";
-            priceLabel3.innerText = "元/15分钟";
-            priceLabel4.innerText = "元/15分钟";
+            if (priceLabel) priceLabel.innerText = "元/15分钟";
+            if (priceLabel1) priceLabel1.innerText = "元/15分钟";
+            if (priceLabel3) priceLabel3.innerText = "元/15分钟";
+            if (priceLabel4) priceLabel4.innerText = "元/15分钟";
         } else {
-            priceLabel.innerText = "元/半小时";
-            priceLabel1.innerText = "元/半小时";
-            priceLabel3.innerText = "元/半小时";
-            priceLabel4.innerText = "元/半小时";
+            if (priceLabel) priceLabel.innerText = "元/半小时";
+            if (priceLabel1) priceLabel1.innerText = "元/半小时";
+            if (priceLabel3) priceLabel3.innerText = "元/半小时";
+            if (priceLabel4) priceLabel4.innerText = "元/半小时";
         }
-
-
 
         // $("#end-time").val('');
         // $("#start-time").val('');
@@ -631,40 +637,67 @@
             $("#reservation1").show()
         }
     }
-    window.onload = function(){
-        var siteTypeOne = document.getElementById('siteTypeOne');
-        siteTypeOne.onchange(); // Trigger the onchange event
-
-
-        console.log("${list.operatorId}")
-        if("${list.operatorId}"==0){
-            console.log(233232)
-            $("#pt").attr('checked', true)
-        }
-
-
-        var OBJradio=document.getElementsByName("ishalf")
-        if($("#type_").val()==1){
-            $("#halfCode").show()
-        }
-        for(i=0;i<OBJradio.length;i++){//循环查找这个radio
-            if($("#type_").val()==OBJradio[i].value){//判断是否与radio的值相同
-                OBJradio[i].checked=true//修改选中状态
+    // 使用jQuery方式,不会覆盖其他初始化逻辑
+    $(function(){
+        // 确保在DOM完全加载后执行
+        setTimeout(function(){
+            var siteTypeOne = document.getElementById('siteTypeOne');
+            if(siteTypeOne && siteTypeOne.onchange){
+                siteTypeOne.onchange(); // Trigger the onchange event
             }
-        }
 
-        var OBJradio1=document.getElementsByName("reservation")
-        if($("#reservation").val()==1){
-            $("#reservation1").show()
-        }else{
-            $("#reservation1").hide()
-        }
-        for(j=0;j<OBJradio1.length;j++){//循环查找这个radio
-            if($("#reservation").val()==OBJradio1[j].value){//判断是否与radio的值相同
-                OBJradio1[j].checked=true//修改选中状态
+            // 回显运营商和门店
+            var operatorIdValue = $("#operatorIdValue").val();
+            var currentStoreId = "${list.storeId}"; // 保存当前门店ID
+            console.log("运营商ID:", operatorIdValue);
+            console.log("门店ID:", currentStoreId);
+            
+            if(operatorIdValue && operatorIdValue != ""){
+                if(operatorIdValue == "0"){
+                    // 平台
+                    $("#pt").prop('checked', true);
+                    $("#yys").val('');
+                    // 不触发change,避免重新加载门店列表
+                } else {
+                    // 运营商
+                    $("#pt").prop('checked', false);
+                    $("#yys").val(operatorIdValue);
+                    // 不触发change,避免重新加载门店列表
+                }
             }
-        }
-    }
+            
+            // 确保门店已正确选中(HTML模板已经设置了selected,这里再次确认)
+            if(currentStoreId && currentStoreId != ""){
+                $("#store").val(currentStoreId);
+            }
+
+            // 回显是否可半场
+            var OBJradio=document.getElementsByName("ishalf")
+            if($("#type_").val()==1){
+                $("#halfCode").show()
+            }
+            for(i=0;i<OBJradio.length;i++){//循环查找这个radio
+                if($("#type_").val()==OBJradio[i].value){//判断是否与radio的值相同
+                    OBJradio[i].checked=true//修改选中状态
+                }
+            }
+
+            // 回显是否可预约
+            var reservationValue = $("#reservation").val();
+            console.log("是否可预约:", reservationValue);
+            var OBJradio1=document.getElementsByName("reservation");
+            if(reservationValue == "1"){
+                $("#reservation1").show()
+            }else{
+                $("#reservation1").hide()
+            }
+            for(j=0;j<OBJradio1.length;j++){//循环查找这个radio
+                if(reservationValue == OBJradio1[j].value){//判断是否与radio的值相同
+                    OBJradio1[j].checked=true//修改选中状态
+                }
+            }
+        }, 100); // 延迟100ms确保所有元素已加载
+    });
     // 选择了不可预约 可预约时间段、价格、多场地配置、半场配置,都不展示。
 
     function addBox1() {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
index 3a9ba36..76acaa2 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
@@ -455,7 +455,7 @@
     data.playPaiCoin         = $("#playPaiCoin").val()
     data.insuranceEndTime    = $("#insuranceEndTime").val()
     data.name                = $("#name").val()
-    data.insuranceImg        = $("#img").val()
+    data.insuranceImg        = $("input[type='hidden']#img").val()
     data.managementPlan      = $('#courseVideo').val()
     data.typeName      = $('#siteTypeOne').val()
     var sh =data.appointmentStartTime.split(':')[0];
@@ -806,7 +806,17 @@
 
 $(function () {
     //初始化编辑器
-    TSite.editor = UE.getEditor('editor');
+    // 检查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) {
@@ -909,42 +919,6 @@
  * 验证步骤一的必填字段
  */
 TSite.validateBasicInfo = function() {
-    // 验证门店
-    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;
-    }
-    
-    // 验证场地责任险图片
-    if ($("#img").val() == '') {
-        Feng.error("请上传场地责任有效期图片");
-        return false;
-    }
-    
-    // 验证消防及应急管理方案
-    if ($('#courseVideo').val() == '') {
-        Feng.error("请上传消防及应急管理方案");
-        return false;
-    }
-    
     // 验证运营商
     var SelectValue = "";
     $("input[name='pt']:checked").each(function(j) {
@@ -960,23 +934,60 @@
         }
     }
     
-    // 验证对象类型相关字段
-    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;
-        }
-    }
+   // 验证门店
+   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;
 }
@@ -1483,7 +1494,7 @@
     data.playPaiCoin         = $("#playPaiCoin").val()
     data.insuranceEndTime    = $("#insuranceEndTime").val()
     data.name                = $("#name").val()
-    data.insuranceImg        = $("#img").val()
+    data.insuranceImg        = $("input[type='hidden']#img").val()
     data.managementPlan      = $('#courseVideo').val()
     data.typeName            = $('#siteTypeOne').val()
     
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 eacb313..a2bff4c 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
@@ -81,6 +81,10 @@
 
     var citySelect = document.getElementById("account");
     var storeSelect = document.getElementById("store");
+    
+    // 保存当前选中的门店ID(如果是编辑模式)
+    var currentStoreId = $("#store").val();
+    
     var ajax = new $ax(Feng.ctxPath + "/tSite/accountChangeNext", function(data){
         if(data!=null){
             var content='<option value="">选择账号</option>';
@@ -107,6 +111,12 @@
                 content += "<option style='width: 300px' value='"+v.id+"'>"+v.name+"</option>";
             });
             $("#store").empty().append(content);
+            
+            // 如果之前有选中的门店,尝试恢复选中状态
+            if(currentStoreId && currentStoreId != ""){
+                $("#store").val(currentStoreId);
+                console.log("恢复门店选中状态:", currentStoreId);
+            }
         }else {
             storeSelect.innerHTML = '<option value="">当前所选市没有门店</option>';
         }
@@ -124,6 +134,13 @@
         success: function (response) {
             var sTime = document.getElementById("start-time"); //获取输入的开始时间
             var eTime  = document.getElementById("end-time"); // 获取输入的结束时间
+            
+            // 检查元素是否存在,如果不存在则直接返回
+            if (!sTime || !eTime) {
+                console.log("时间输入框元素未找到,跳过时间验证初始化");
+                return;
+            }
+            
             var rStime = response.startTime; //门店的经营开始时间
             var rEtime = response.endTime; //门店的经营结束时间
 
@@ -219,7 +236,7 @@
     data.playPaiCoin         = $("#playPaiCoin").val()
     data.insuranceEndTime    = $("#insuranceEndTime").val()
     data.name                = $("#name").val()
-    data.insuranceImg        = $("#img").val()
+    data.insuranceImg        = $("input[type='hidden']#img").val()
     data.managementPlan      = $('#courseVideo').val()
     data.typeName      = $('#siteTypeOne').val()
     var sh =data.appointmentStartTime.split(':')[0];
@@ -513,6 +530,10 @@
 TSiteInfo.oneChangeYys = function(e){
     var oneId = $(e).val();
     var checkbox = document.querySelector('input[name="pt"]');
+    
+    // 保存当前选中的门店ID(如果是编辑模式)
+    var currentStoreId = $("#store").val();
+    
     if (checkbox.checked) {
         oneId=0;
         console.log("选中是平台");
@@ -549,6 +570,12 @@
                 content += "<option value='"+v.id+"'>"+v.name+"</option>";
             });
             $("#store").empty().append(content);
+            
+            // 如果之前有选中的门店,尝试恢复选中状态
+            if(currentStoreId && currentStoreId != ""){
+                $("#store").val(currentStoreId);
+                console.log("恢复门店选中状态:", currentStoreId);
+            }
         }
     });
 
@@ -628,6 +655,21 @@
  * 验证步骤一的必填字段
  */
 TSiteInfo.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("请选择门店");
@@ -652,8 +694,9 @@
         return false;
     }
     
-    // 验证场地责任险图片
-    if ($("#img").val() == '') {
+    // 验证场地责任险图片(使用更精确的选择器获取hidden input)
+    var imgValue = $("input[type='hidden']#img").val();
+    if (!imgValue || imgValue == '') {
         Feng.error("请上传场地责任有效期图片");
         return false;
     }
@@ -662,21 +705,6 @@
     if ($('#courseVideo').val() == '') {
         Feng.error("请上传消防及应急管理方案");
         return false;
-    }
-    
-    // 验证运营商
-    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;
-        }
     }
     
     // 验证对象类型相关字段
@@ -1431,7 +1459,7 @@
     data.playPaiCoin         = $("#playPaiCoin").val()
     data.insuranceEndTime    = $("#insuranceEndTime").val()
     data.name                = $("#name").val()
-    data.insuranceImg        = $("#img").val()
+    data.insuranceImg        = $("input[type='hidden']#img").val()
     data.managementPlan      = $('#courseVideo').val()
     data.typeName            = $('#siteTypeOne').val()
     
@@ -1736,7 +1764,17 @@
     $('#upFile').click();
 }
 $(function () {
-    TSiteInfo.editor = UE.getEditor('editor');
+    // 检查editor元素是否存在再初始化UEditor
+    if (document.getElementById('editor')) {
+        TSiteInfo.editor = UE.getEditor('editor');
+    } else {
+        console.log("editor元素未找到,跳过UEditor初始化");
+        // 创建一个空对象,防止后续代码出错
+        TSiteInfo.editor = {
+            getContent: function() { return ""; },
+            setContent: function() {}
+        };
+    }
     // 限制分钟选项为 0 和 30
     // var timeInputs = document.querySelectorAll('input[type="time"]');
     // timeInputs.forEach(function(input) {

--
Gitblit v1.7.1