From 014d7a35addafbc63689cda7c20bae61951f7852 Mon Sep 17 00:00:00 2001
From: luo <2855143437@qq.com>
Date: 星期一, 09 十月 2023 18:25:19 +0800
Subject: [PATCH] 10.9

---
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html                                     |   44 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java                    |    3 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java            |    6 
 cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js                                |  193 ++++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html                              |  192 ++++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html                                 |   41 
 .idea/workspace.xml                                                                                             |  121 ++
 cloud-server-management/src/main/resources/mapper/TStoreMapper.xml                                              |   11 
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js                    |   13 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html                |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html               |    2 
 cloud-server-account/src/test/java/com/dsh/AccountApplicationTests.java                                         |   22 
 cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js                                     |   73 +
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/join.html                                      |  189 ++++
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/MethodDto.java                      |    9 
 cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java                                   |    1 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html                                |  354 ++++++++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html                  |   23 
 cloud-server-other/src/main/resources/mapper/GameMapper.xml                                                     |   32 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java |    4 
 cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java                                    |    3 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html                             |   67 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java         |  375 +++++++++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html                                |  384 +++++++++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/cancel.html                                    |  206 +++++
 25 files changed, 2,281 insertions(+), 89 deletions(-)

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index aacdc06..f73921d 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -25,13 +25,26 @@
     <select />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="10.8">
+    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="10.8。1">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/GameMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/GameMapper.xml" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -79,43 +92,43 @@
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;DefaultHtmlFileTemplate&quot;: &quot;HTML File&quot;,
-    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
-    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
-    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
-    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
-    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
-    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;git-widget-placeholder&quot;: &quot;master&quot;,
-    &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
-    &quot;last_opened_file_path&quot;: &quot;D:/Javaproject/PlayPay/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball&quot;,
-    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
-    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
-    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
-    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
-    &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
-    &quot;project.structure.last.edited&quot;: &quot;模块&quot;,
-    &quot;project.structure.proportion&quot;: &quot;0.15&quot;,
-    &quot;project.structure.side.proportion&quot;: &quot;0.54367816&quot;,
-    &quot;service.view.auto.scroll.to.source&quot;: &quot;true&quot;,
-    &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
-    &quot;spring.configuration.checksum&quot;: &quot;6e27eb92c8707375af194da5aa857bbc&quot;,
-    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "DefaultHtmlFileTemplate": "HTML File",
+    "RequestMappingsPanelOrder0": "0",
+    "RequestMappingsPanelOrder1": "1",
+    "RequestMappingsPanelWidth0": "75",
+    "RequestMappingsPanelWidth1": "75",
+    "RunOnceActivity.OpenProjectViewOnStart": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "WebServerToolWindowFactoryState": "false",
+    "git-widget-placeholder": "master",
+    "ignore.virus.scanning.warn.message": "true",
+    "last_opened_file_path": "D:/Javaproject/PlayPay/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "nodejs_package_manager_path": "npm",
+    "project.structure.last.edited": "模块",
+    "project.structure.proportion": "0.15",
+    "project.structure.side.proportion": "0.54367816",
+    "service.view.auto.scroll.to.source": "true",
+    "settings.editor.selected.configurable": "preferences.lookFeel",
+    "spring.configuration.checksum": "6e27eb92c8707375af194da5aa857bbc",
+    "vue.rearranger.settings.migration": "true"
   }
-}</component>
+}]]></component>
   <component name="ReactorSettings">
     <option name="notificationShown" value="true" />
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
       <recent name="D:\Javaproject\PlayPay\cloud-server-management\src\main\webapp\WEB-INF\view\system\ball" />
+      <recent name="D:\Javaproject\PlayPay\cloud-server-account\src\test\java\com\dsh" />
       <recent name="D:\Javaproject\PlayPay\cloud-server-management\src\main\webapp\static\modular\system\ball" />
       <recent name="D:\Javaproject\PlayPay\cloud-server-course\src\main\resources\mapper" />
       <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system\ball" />
-      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\static\modular\system\ball" />
     </key>
     <key name="MoveFile.RECENT_KEYS">
       <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" />
@@ -147,6 +160,30 @@
           <option name="ENABLED" value="true" />
         </pattern>
       </extension>
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <configuration name="AccountApplicationTests.contextLoads" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
+      <module name="mb-cloud-account" />
+      <shortenClasspath name="MANIFEST" />
+      <extension name="coverage">
+        <pattern>
+          <option name="PATTERN" value="com.dsh.*" />
+          <option name="ENABLED" value="true" />
+        </pattern>
+      </extension>
+      <option name="PACKAGE_NAME" value="com.dsh" />
+      <option name="MAIN_CLASS_NAME" value="com.dsh.AccountApplicationTests" />
+      <option name="METHOD_NAME" value="contextLoads" />
+      <option name="TEST_OBJECT" value="method" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <configuration default="true" type="JUnit" factoryName="JUnit">
+      <shortenClasspath name="MANIFEST" />
+      <option name="TEST_OBJECT" value="class" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -235,8 +272,9 @@
       </method>
     </configuration>
     <list>
-      <item itemvalue="Spring Boot.GatewayApplication" />
+      <item itemvalue="JUnit.AccountApplicationTests.contextLoads" />
       <item itemvalue="Spring Boot.ManagementApplication" />
+      <item itemvalue="Spring Boot.GatewayApplication" />
       <item itemvalue="Spring Boot.OtherApplication" />
       <item itemvalue="Spring Boot.UserApplication" />
       <item itemvalue="Spring Boot.AccountApplication" />
@@ -248,6 +286,7 @@
     </list>
     <recent_temporary>
       <list>
+        <item itemvalue="JUnit.AccountApplicationTests.contextLoads" />
         <item itemvalue="应用程序.BigDecimalToChineseWords" />
       </list>
     </recent_temporary>
@@ -307,7 +346,7 @@
       <workItem from="1696433675086" duration="2211000" />
       <workItem from="1696462020097" duration="481000" />
       <workItem from="1696465598653" duration="19850000" />
-      <workItem from="1696639362946" duration="45956000" />
+      <workItem from="1696639362946" duration="88523000" />
     </task>
     <task id="LOCAL-00001" summary="后台代码删除">
       <created>1690249807612</created>
@@ -608,7 +647,15 @@
       <option name="project" value="LOCAL" />
       <updated>1696749061197</updated>
     </task>
-    <option name="localTasksCounter" value="40" />
+    <task id="LOCAL-00040" summary="10.8。1">
+      <option name="closed" value="true" />
+      <created>1696753188954</created>
+      <option name="number" value="00040" />
+      <option name="presentableId" value="LOCAL-00040" />
+      <option name="project" value="LOCAL" />
+      <updated>1696753188954</updated>
+    </task>
+    <option name="localTasksCounter" value="41" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -650,7 +697,8 @@
     <MESSAGE value="9.26。14" />
     <MESSAGE value="9.26。15" />
     <MESSAGE value="10.8" />
-    <option name="LAST_COMMIT_MESSAGE" value="10.8" />
+    <MESSAGE value="10.8。1" />
+    <option name="LAST_COMMIT_MESSAGE" value="10.8。1" />
   </component>
   <component name="XDebuggerManager">
     <breakpoint-manager>
@@ -674,11 +722,6 @@
           <url>file://$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java</url>
           <line>1358</line>
           <option name="timeStamp" value="14" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionAuditController.java</url>
-          <line>139</line>
-          <option name="timeStamp" value="21" />
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
diff --git a/cloud-server-account/src/test/java/com/dsh/AccountApplicationTests.java b/cloud-server-account/src/test/java/com/dsh/AccountApplicationTests.java
new file mode 100644
index 0000000..455dcdd
--- /dev/null
+++ b/cloud-server-account/src/test/java/com/dsh/AccountApplicationTests.java
@@ -0,0 +1,22 @@
+package com.dsh;
+
+import com.dsh.account.controller.CoachTypeController;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.List;
+
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = AccountApplication.class)
+class AccountApplicationTests {
+
+    @Autowired
+    private CoachTypeController controller;
+
+    @Test
+    void contextLoads() {
+      System.out.println("==============="+controller.list());
+    }
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
index 0a958da..07185a1 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
@@ -7,6 +7,7 @@
 import com.dsh.guns.modular.system.model.TStore;
 import com.dsh.guns.modular.system.model.TStoreListVo;
 import com.dsh.guns.modular.system.model.TTurn;
+import com.dsh.guns.modular.system.model.dto.SelectDto;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -69,4 +70,6 @@
     void inset(JsDto jsDto);
 
     JsDto get(Integer id);
+
+    List<SelectDto> getSelect();
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
index 3c4532d..ae08367 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
@@ -830,8 +830,10 @@
 
             String jsonString = jsonArray.getString(i);
             String[] split = jsonString.split("-");
+            System.out.println("============"+split);
+            if (split.length>1){
             first.add(split[0]);
-            second.add(split[1]);
+            second.add(split[1]);}
 
         }
         String firstString = String.join(",",first);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
index 210b1ff..4efb025 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -22,10 +22,7 @@
 import com.dsh.guns.core.base.controller.BaseController;
 import com.dsh.guns.modular.system.model.*;
 import com.dsh.guns.modular.system.model.dto.*;
-import com.dsh.guns.modular.system.service.ICityService;
-import com.dsh.guns.modular.system.service.ICoursePackageService;
-import com.dsh.guns.modular.system.service.IStoreService;
-import com.dsh.guns.modular.system.service.ITSiteService;
+import com.dsh.guns.modular.system.service.*;
 import com.dsh.guns.modular.system.util.HttpRequestUtil;
 import com.dsh.guns.modular.system.util.ResultUtil;
 import com.google.common.base.Ascii;
@@ -56,7 +53,9 @@
 import java.nio.charset.StandardCharsets;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 @Controller
@@ -106,6 +105,72 @@
         return PREFIX+"ball.html";
     }
 
+    //入园方式
+    @RequestMapping("/joinmethod/{id}")
+    public String joinmethod(Model model,@PathVariable("id") Integer id) {
+
+
+        model.addAttribute("id",id);
+
+        return PREFIX+"join.html";
+    }
+
+
+    @RequestMapping("/selectJoin")
+    @ResponseBody
+    public ResultUtil join(@RequestBody MethodDto method) {
+
+        System.out.println("============"+method);
+        SiteBooking siteBooking = new SiteBooking();
+        siteBooking.setStatus(2);
+        siteBooking.setId(method.getId());
+        siteBooking.setGoType(method.getMethod());
+        iSiteBookingService.updateById(siteBooking);
+
+        return new ResultUtil<>(0,0,"到店成功",null,null);
+    }
+
+
+
+    @RequestMapping(value = "/yunying")
+    @ResponseBody
+    public ResultUtil getUserSlect() {
+
+
+
+        List<SelectDto>  selectDtos =  storeService.getSelect();
+        Map<String,List<SelectDto>> map = new HashMap<>();
+        map.put("options",selectDtos);
+
+        System.out.println("=======selectDtos====="+selectDtos);
+        return new ResultUtil(0,0,"编辑成功",map,"");
+    }
+
+    //取消凭证页面
+    @RequestMapping("/tocancel/{id}")
+    public String tocancel(Model model,@PathVariable("id") Integer id) {
+
+        model.addAttribute("id",id);
+
+        return PREFIX+"cancel.html";
+    }
+
+
+    @RequestMapping("/cancel")
+    @ResponseBody
+    public ResultUtil cancel(Integer id,String voucher,String textarea) {
+
+        System.out.println("============"+id);
+        SiteBooking siteBooking = new SiteBooking();
+        siteBooking.setId(id);
+        siteBooking.setStatus(5);
+        siteBooking.setVoucher(voucher);
+        siteBooking.setRemark(textarea);
+        siteBooking.setCancelUserId(UserExt.getUser().getId());
+        iSiteBookingService.updateById(siteBooking);
+
+        return new ResultUtil<>(0,0,"到店成功",null,null);
+    }
 
     /**
      * 获取变更列表
@@ -123,7 +188,7 @@
 
     @RequestMapping("/save")
     @ResponseBody
-    public ResultUtil save(String red, String blue, String province, String city, Integer site, Integer store
+    public ResultUtil save(String operationId,String red, String blue, String province, String city, Integer site, Integer store
     , String kuacheng, BigDecimal kuachengCoin, BigDecimal kuachengCash,String kuachengImage,BigDecimal kuachengInt,Integer kuachengId
             , String shequ, BigDecimal shequCoin, BigDecimal shequCash,String shequImage,BigDecimal shequInt,Integer shequId
             , String shemen, BigDecimal shemenCoin, BigDecimal shemenCash,String shemenImage,BigDecimal shemenInt,Integer shemenId
@@ -148,6 +213,13 @@
         game.setCityCode(city);
         game.setSiteId(site);
         game.setStoreId(store);
+
+
+        if (!operationId.equals("平台")){
+        game.setOperationId(Integer.valueOf(operationId));}
+        else {
+            game.setOperationId(0);
+        }
         System.out.println("============"+game);
         Integer gameId = ballClient.save(game);
 
@@ -285,7 +357,7 @@
     @RequestMapping("/pre_add")
     public String add(Model model) {
 
-
+        model.addAttribute("is","${is}");
 
         return PREFIX+"ball_pre_add.html";
     }
@@ -301,6 +373,260 @@
 
         return PREFIX+"ball_pre_edit.html";
     }
+
+    @Autowired
+     private ISiteBookingService iSiteBookingService;
+
+    @RequestMapping("/yueyue_edit/{id}")
+    public String yueyue_edit(@PathVariable("id") Integer id,Model model) {
+
+        List<String> strings1 = new ArrayList<>();
+
+        SiteBooking book = iSiteBookingService.getById(id);
+        model.addAttribute("item", book);
+        if (book.getMoney()!=null){
+        model.addAttribute("money",book.getMoney().split(","));}
+        String[] split1 = book.getTimes().split(";");
+        model.addAttribute("date",split1[0].substring(0,10));
+
+        for (String s : split1) {
+
+            String convertedValue = s.substring(11);
+            strings1.add(convertedValue);
+        }
+
+        System.out.println("========strings1====="+strings1);
+
+//时间段
+        List<String> strings = new ArrayList<>();
+//        List<SiteBooking> siteBookings = siteClient.listBooks(book.getSiteId());
+        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", book.getSiteId()).like("times",split1[0].substring(0,10)));
+        System.out.println("=======siteBookings======"+siteBookings);
+        for (SiteBooking siteBooking : siteBookings) {
+            String[] split = siteBooking.getTimes().split(";");
+            for (String s : split) {
+
+                String convertedValue = s.substring(11);
+                strings.add(convertedValue);
+            }
+
+        }
+        System.out.println("======strings======="+strings);
+
+
+        List<OrderDto> timeRanges = new ArrayList<>();
+
+
+        Site site =  siteClient.listById(book.getSiteId());
+        System.out.println("================"+site);
+        String appointmentStartTime = site.getAppointmentStartTime();
+        String appointmentEndTime = site.getAppointmentEndTime();
+        //生成用于比较日期是否超过的当前日期
+        LocalDate currentDate = LocalDate.now();
+        LocalDate parsedDate = LocalDate.parse(split1[0].substring(0,10), DateTimeFormatter.ISO_DATE);
+        boolean isAfterCurrentDate = parsedDate.isBefore(currentDate);
+        System.out.println("是否超过当前日期"+isAfterCurrentDate);
+        String currentTime = appointmentStartTime;
+        while (currentTime.compareTo(appointmentEndTime) < 0) {
+            String nextTime = getNextTime(currentTime);
+
+
+            String timeRange = currentTime + "-" + nextTime;
+            OrderDto orderDto = new OrderDto();
+            orderDto.setTime(timeRange);
+
+            LocalTime currentTime1 = LocalTime.now();
+            LocalTime targetTime = LocalTime.parse(currentTime);
+
+            boolean hasExceeded = currentTime1.isAfter(targetTime);
+            //是否超过当前时间
+            if (hasExceeded){
+                orderDto.setState(0);
+            }
+            //是否已经预定
+            if (strings.contains(timeRange)){
+                orderDto.setState(0);
+            }
+            //日期是否超过
+            if (isAfterCurrentDate){
+                orderDto.setState(0);
+            }
+            //是否是当前场地当前日期预定的
+            if (strings1.contains(timeRange)){
+                orderDto.setState(1);
+            }
+
+
+
+
+            timeRanges.add(orderDto);
+            currentTime = nextTime;
+        }
+        System.out.println("-------------"+timeRanges);
+            model.addAttribute("timeRanges",timeRanges);
+
+System.out.println("======timeRanges========"+timeRanges);
+
+
+
+
+
+
+        Integer objectType = UserExt.getUser().getObjectType();
+        Integer objectId = UserExt.getUser().getObjectId();
+
+        String cityCode = null;
+        if(objectType == 2){//城市管理员
+            CityManager cityManager = cityManagerClient.queryCityManagerById(objectId);
+            cityCode = cityManager.getCityCode();
+        }
+        List<Map<String, Object>> list = storeService.queryProvince(cityCode);
+        model.addAttribute("province", list);
+        Object code = list.get(0).get("code");
+        List<Map<String, Object>> list1 = storeService.queryCity(code.toString(), cityCode);
+        model.addAttribute("city", list1);
+        String code1 = list1.get(0).get("code").toString();
+        List<TStore> list2 = storeService.list(new QueryWrapper<TStore>().eq("cityCode", code1).eq("state", 1));
+        model.addAttribute("store", list2);
+        TStore store = list2.get(0);
+        List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1));
+        model.addAttribute("site", list3);
+
+
+        return PREFIX+"yuyue_edit.html";
+    }
+
+
+
+
+@Autowired
+private IUserService userService;
+    @RequestMapping("/yueyue_info/{id}")
+    public String yueyue_info(@PathVariable("id") Integer id,Model model) {
+
+        List<String> strings1 = new ArrayList<>();
+
+        SiteBooking book = iSiteBookingService.getById(id);
+        model.addAttribute("item", book);
+        if (book.getMoney()!=null){
+            model.addAttribute("money",book.getMoney().split(","));}
+        String[] split1 = book.getTimes().split(";");
+        model.addAttribute("date",split1[0].substring(0,10));
+
+
+        User user = userService.getById(book.getCancelUserId());
+        if (user!=null) {
+            model.addAttribute("cancelUser", user.getName());
+        }
+
+
+        for (String s : split1) {
+
+            String convertedValue = s.substring(11);
+            strings1.add(convertedValue);
+        }
+
+        System.out.println("========strings1====="+strings1);
+
+//时间段
+        List<String> strings = new ArrayList<>();
+//        List<SiteBooking> siteBookings = siteClient.listBooks(book.getSiteId());
+        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", book.getSiteId()).like("times",split1[0].substring(0,10)));
+        System.out.println("=======siteBookings======"+siteBookings);
+        for (SiteBooking siteBooking : siteBookings) {
+            String[] split = siteBooking.getTimes().split(";");
+            for (String s : split) {
+
+                String convertedValue = s.substring(11);
+                strings.add(convertedValue);
+            }
+
+        }
+        System.out.println("======strings======="+strings);
+
+
+        List<OrderDto> timeRanges = new ArrayList<>();
+
+
+        Site site =  siteClient.listById(book.getSiteId());
+        System.out.println("================"+site);
+        String appointmentStartTime = site.getAppointmentStartTime();
+        String appointmentEndTime = site.getAppointmentEndTime();
+        //生成用于比较日期是否超过的当前日期
+        LocalDate currentDate = LocalDate.now();
+        LocalDate parsedDate = LocalDate.parse(split1[0].substring(0,10), DateTimeFormatter.ISO_DATE);
+        boolean isAfterCurrentDate = parsedDate.isBefore(currentDate);
+        System.out.println("是否超过当前日期"+isAfterCurrentDate);
+        String currentTime = appointmentStartTime;
+        while (currentTime.compareTo(appointmentEndTime) < 0) {
+            String nextTime = getNextTime(currentTime);
+
+
+            String timeRange = currentTime + "-" + nextTime;
+            OrderDto orderDto = new OrderDto();
+            orderDto.setTime(timeRange);
+
+            LocalTime currentTime1 = LocalTime.now();
+            LocalTime targetTime = LocalTime.parse(currentTime);
+
+            boolean hasExceeded = currentTime1.isAfter(targetTime);
+            //是否超过当前时间
+            if (hasExceeded){
+                orderDto.setState(0);
+            }
+            //是否已经预定
+            if (strings.contains(timeRange)){
+                orderDto.setState(0);
+            }
+            //日期是否超过
+            if (isAfterCurrentDate){
+                orderDto.setState(0);
+            }
+            //是否是当前场地当前日期预定的
+            if (strings1.contains(timeRange)){
+                orderDto.setState(1);
+            }
+
+
+
+
+            timeRanges.add(orderDto);
+            currentTime = nextTime;
+        }
+        System.out.println("-------------"+timeRanges);
+        model.addAttribute("timeRanges",timeRanges);
+
+        System.out.println("======timeRanges========"+timeRanges);
+
+
+
+
+
+
+        Integer objectType = UserExt.getUser().getObjectType();
+        Integer objectId = UserExt.getUser().getObjectId();
+
+        String cityCode = null;
+        if(objectType == 2){//城市管理员
+            CityManager cityManager = cityManagerClient.queryCityManagerById(objectId);
+            cityCode = cityManager.getCityCode();
+        }
+        List<Map<String, Object>> list = storeService.queryProvince(cityCode);
+        model.addAttribute("province", list);
+        Object code = list.get(0).get("code");
+        List<Map<String, Object>> list1 = storeService.queryCity(code.toString(), cityCode);
+        model.addAttribute("city", list1);
+        String code1 = list1.get(0).get("code").toString();
+        List<TStore> list2 = storeService.list(new QueryWrapper<TStore>().eq("cityCode", code1).eq("state", 1));
+        model.addAttribute("store", list2);
+        TStore store = list2.get(0);
+        List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1));
+        model.addAttribute("site", list3);
+
+
+        return PREFIX+"yuyue_info.html";
+    }
+
 
 
     @RequestMapping("/paike")
@@ -434,11 +760,13 @@
 
     @RequestMapping("/yuyuetimes/{id}")
     @ResponseBody
-    public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id) {
-
+    public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String date) {
+        System.out.println("=======date======"+date);
 
         List<String> strings = new ArrayList<>();
-        List<SiteBooking> siteBookings = siteClient.listBooks(id);
+
+//        List<SiteBooking> siteBookings = siteClient.listBooks(id);
+        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).like("times",date));
 System.out.println("=======siteBookings======"+siteBookings);
         for (SiteBooking siteBooking : siteBookings) {
             String[] split = siteBooking.getTimes().split(";");
@@ -503,6 +831,25 @@
         }
 
         return String.format("%02d:%02d", hour, minute);
+
+//        String[] parts = currentTime.split(":");
+//        int hour = Integer.parseInt(parts[0]);
+//        int minute = Integer.parseInt(parts[1]);
+//
+//        if (minute == 45) {
+//            hour++;
+//            minute = 0;
+//        } else if (minute == 0){
+//            minute = 15;
+//        }else if (minute == 15){
+//            minute = 30;
+//        }else if (minute == 30){
+//            minute = 45;
+//        }
+//
+//        return String.format("%02d:%02d", hour, minute);
+
+
     }
 
 
@@ -556,4 +903,14 @@
         return new ResultUtil<>(null,200,null,null,null);
     }
 
+    @RequestMapping("/orderedit")
+    @ResponseBody
+    public ResultUtil orderedit(SiteBooking siteBooking){
+            iSiteBookingService.updateById(siteBooking);
+
+        System.out.println("================="+siteBooking);
+
+        return new ResultUtil<>(null,200,null,null,null);
+    }
+
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/MethodDto.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/MethodDto.java
new file mode 100644
index 0000000..6af7834
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/MethodDto.java
@@ -0,0 +1,9 @@
+package com.dsh.guns.modular.system.model.dto;
+
+import lombok.Data;
+
+@Data
+public class MethodDto {
+    Integer id;
+    Integer method;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
index 55d1c2b..01baa7a 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.model.dto.SelectDto;
 import io.swagger.models.auth.In;
 import com.dsh.course.dto.JsDto;
 import com.dsh.guns.modular.system.model.Dict;
@@ -71,4 +72,6 @@
     void insert(JsDto jsDto);
 
     JsDto get(Integer id);
+
+    List<SelectDto> getSelect();
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
index 2ac311e..f66f1c7 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
@@ -8,6 +8,7 @@
 import com.dsh.guns.modular.system.model.TStore;
 import com.dsh.guns.modular.system.model.TStoreListVo;
 import com.dsh.guns.modular.system.model.TTurn;
+import com.dsh.guns.modular.system.model.dto.SelectDto;
 import com.dsh.guns.modular.system.service.IStoreService;
 import org.springframework.stereotype.Service;
 
@@ -104,6 +105,11 @@
     }
 
     @Override
+    public List<SelectDto> getSelect() {
+        return this.baseMapper.getSelect();
+    }
+
+    @Override
     public List<TImgConfig> getConfig() {
 
         return this.baseMapper.getConfig1();
diff --git a/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml b/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
index e247e9d..5877e09 100644
--- a/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
+++ b/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
@@ -127,4 +127,15 @@
     <select id="getConfig1" resultType="com.dsh.guns.modular.system.model.TImgConfig">
         select * from t_img_config
     </select>
+    <select id="getSelect" resultType="com.dsh.guns.modular.system.model.dto.SelectDto">
+
+
+        SELECT op.id , CONCAT(us.name,'-',us.`phone`) as value
+        FROM t_operator op
+            LEFT JOIN sys_user us on op.userId = us.id
+
+
+
+
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html
index 8eef478..caf096a 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html
@@ -42,15 +42,24 @@
         {
           "type": "form",
           "id": "u:24af29be25d2",
-          "title": "111",
+          "title": "",
           "body": [
             {
-              "label": "所属运营商:",
+              "type": "tpl",
+              "id": "u:587781d5d181",
+              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp*所属运营商:",
+              "inline": true,
+              "wrapperComponent": "",
+              "style": {
+                "marginLeft": "0"
+              }
+            },{
               "type": "select",
-              "name": "operator",
-              "id": "u:970f68a2c4ee",
-              "mode": "horizontal",
-              "size": "lg",
+              "label": "",
+              "name": "operationId",
+              "id": "u:c037c33c2c81",
+              "mode": "inline",
+              "size": "md",
               "multiple": false,
               "showInvalidMatch": false,
               "searchable": true,
@@ -58,12 +67,38 @@
               "horizontal": {
                 "leftFixed": "lg"
               },
-              "options": [
-                {
-                  "label": "等待沟通中",
-                  "value": "等待沟通中"
+              "disabledOn": "is!=0",
+              "required": true,
+              "source": {
+                "url": "/ball/yunying",
+                "method": "post",
+                "messages": {
                 }
-              ]
+              },
+              "labelField": "value",
+              "valueField": "id"
+            },{
+              "type": "checkbox",
+              "option": "平台",
+              "name": "is",
+              "id": "u:88f23ebcf4f7",
+              "onEvent": {
+                "change": {
+                  "weight": 0,
+                  "actions": [
+                    {
+                      "componentId": "u:c037c33c2c81",
+                      "args": {
+                        "value": "$event.data.value"
+                      },
+                      "actionType": "setValue"
+                    }
+                  ]
+                }
+              },
+              "trueValue": "平台",
+              "falseValue": 0,
+              "mode": "inline"
             },
             {
               "type": "select",
@@ -214,6 +249,7 @@
               },
               "value": "",
               "required": true
+
             },
             {
               "type": "input-text",
@@ -224,6 +260,7 @@
               "clearValueOnHidden": false,
               "hidden": false,
               "required": true
+
             },
             {
               "type": "button",
@@ -301,6 +338,16 @@
                           "mode": "inline",
                           "labelClassName": "text-dark m-b",
                           "value": "14"
+                        },
+                        {
+                          "type": "tpl",
+                          "id": "u:587781d5d181",
+                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                          "inline": true,
+                          "wrapperComponent": "",
+                          "style": {
+                            "marginLeft": "0"
+                          }
                         },
                         {
                           "type": "input-text",
@@ -385,6 +432,16 @@
                           "value": "16"
                         },
                         {
+                          "type": "tpl",
+                          "id": "u:587781d5d181",
+                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                          "inline": true,
+                          "wrapperComponent": "",
+                          "style": {
+                            "marginLeft": "0"
+                          }
+                        },
+                        {
                           "type": "input-text",
                           "label": "玩派币",
                           "name": "shequCoin",
@@ -466,6 +523,16 @@
                           "value": "13"
                         },
                         {
+                          "type": "tpl",
+                          "id": "u:587781d5d181",
+                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                          "inline": true,
+                          "wrapperComponent": "",
+                          "style": {
+                            "marginLeft": "0"
+                          }
+                        },
+                        {
                           "type": "input-text",
                           "label": "玩派币",
                           "name": "shemenCoin",
@@ -544,10 +611,20 @@
                           "value": "玩湃熊之力-速度"
                         },
                         {
+                          "type": "tpl",
+                          "id": "u:587781d5d181",
+                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                          "inline": true,
+                          "wrapperComponent": "",
+                          "style": {
+                            "marginLeft": "0"
+                          }
+                        },
+                        {
                           "type": "hidden",
                           "label": "",
                           "name": "suduId",
-                          "id": "u:f0f7e6028e17",
+                          "id": "u:ca5a1fd9c191",
                           "mode": "inline",
                           "labelClassName": "text-dark m-b",
                           "value": "15"
@@ -635,6 +712,16 @@
                           "value": "1"
                         },
                         {
+                          "type": "tpl",
+                          "id": "u:587781d5d181",
+                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                          "inline": true,
+                          "wrapperComponent": "",
+                          "style": {
+                            "marginLeft": "0"
+                          }
+                        },
+                        {
                           "type": "input-text",
                           "label": "玩派币",
                           "name": "fangkuaiCoin",
@@ -714,6 +801,16 @@
                           "mode": "inline",
                           "labelClassName": "text-dark m-b",
                           "value": "7"
+                        },
+                        {
+                          "type": "tpl",
+                          "id": "u:587781d5d181",
+                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                          "inline": true,
+                          "wrapperComponent": "",
+                          "style": {
+                            "marginLeft": "0"
+                          }
                         },
                         {
                           "type": "input-text",
@@ -803,6 +900,16 @@
                           "value": "8"
                         },
                         {
+                          "type": "tpl",
+                          "id": "u:587781d5d181",
+                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                          "inline": true,
+                          "wrapperComponent": "",
+                          "style": {
+                            "marginLeft": "0"
+                          }
+                        },
+                        {
                           "type": "input-text",
                           "label": "玩派币",
                           "name": "sqCoin",
@@ -883,6 +990,16 @@
                           "mode": "inline",
                           "labelClassName": "text-dark m-b",
                           "value": "10"
+                        },
+                        {
+                          "type": "tpl",
+                          "id": "u:587781d5d181",
+                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                          "inline": true,
+                          "wrapperComponent": "",
+                          "style": {
+                            "marginLeft": "0"
+                          }
                         },
                         {
                           "type": "input-text",
@@ -966,6 +1083,16 @@
                           "value": "11"
                         },
                         {
+                          "type": "tpl",
+                          "id": "u:587781d5d181",
+                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                          "inline": true,
+                          "wrapperComponent": "",
+                          "style": {
+                            "marginLeft": "0"
+                          }
+                        },
+                        {
                           "type": "input-text",
                           "label": "玩派币",
                           "name": "zs2Coin",
@@ -1036,7 +1163,7 @@
                         },
                         {
                           "type": "hidden",
-                          "label": "游戏名称",
+                          "label": "",
                           "name": "ly",
                           "id": "u:c4a543b6cda0",
                           "mode": "inline",
@@ -1045,12 +1172,22 @@
                         },
                         {
                           "type": "hidden",
-                          "label": "游戏id",
+                          "label": "",
                           "name": "lyId",
                           "id": "u:90d5f2fa406a",
                           "mode": "inline",
                           "labelClassName": "text-dark m-b",
                           "value": "5"
+                        },
+                        {
+                          "type": "tpl",
+                          "id": "u:587781d5d181",
+                          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                          "inline": true,
+                          "wrapperComponent": "",
+                          "style": {
+                            "marginLeft": "0"
+                          }
                         },
                         {
                           "type": "input-text",
@@ -1137,10 +1274,18 @@
                               "actions": [
                                 {
                                   "componentId": "u:24af29be25d2",
+                                  "actionType": "submit"
+                                },
+                                {
                                   "args": {
                                   },
-                                  "outputVar": "responseResult",
-                                  "actionType": "submit"
+                                  "script": "window.parent.TStudent.table.refresh();",
+                                  "actionType": "custom"
+                                },
+                                {
+                                  "args": {},
+                                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
+                                  "actionType": "custom"
                                 }
                               ]
                             }
@@ -1166,7 +1311,20 @@
             "dataType": "form-data"
           },
           "actions": [
-          ]
+          ],
+          "onEvent": {
+            "submitSucc": {
+              "weight": 0,
+              "actions": [
+                {
+                  "args": {
+                  },
+                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
+                  "actionType": "custom"
+                }
+              ]
+            }
+          }
         }
       ]
     };
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html
index 6b53d15..f375f7f 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html
@@ -45,12 +45,21 @@
           "title": "",
           "body": [
             {
-              "label": "所属运营商:",
+              "type": "tpl",
+              "id": "u:587781d5d181",
+              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp*所属运营商:",
+              "inline": true,
+              "wrapperComponent": "",
+              "style": {
+                "marginLeft": "0"
+              }
+            },{
               "type": "select",
-              "name": "operator",
-              "id": "u:970f68a2c4ee",
-              "mode": "horizontal",
-              "size": "lg",
+              "label": "",
+              "name": "operationId",
+              "id": "u:c037c33c2c81",
+              "mode": "inline",
+              "size": "md",
               "multiple": false,
               "showInvalidMatch": false,
               "searchable": true,
@@ -58,12 +67,38 @@
               "horizontal": {
                 "leftFixed": "lg"
               },
-              "options": [
-                {
-                  "label": "等待沟通中",
-                  "value": "等待沟通中"
+              "disabledOn": "is!=0",
+              "required": true,
+              "source": {
+                "url": "/ball/yunying",
+                "method": "post",
+                "messages": {
                 }
-              ]
+              },
+              "labelField": "value",
+              "valueField": "id"
+            },{
+              "type": "checkbox",
+              "option": "平台",
+              "name": "is",
+              "id": "u:88f23ebcf4f7",
+              "onEvent": {
+                "change": {
+                  "weight": 0,
+                  "actions": [
+                    {
+                      "componentId": "u:c037c33c2c81",
+                      "args": {
+                        "value": "$event.data.value"
+                      },
+                      "actionType": "setValue"
+                    }
+                  ]
+                }
+              },
+              "trueValue": "平台",
+              "falseValue": 0,
+              "mode": "inline"
             },
             {
               "type": "select",
@@ -1245,10 +1280,18 @@
                               "actions": [
                                 {
                                   "componentId": "u:24af29be25d2",
+                                  "actionType": "submit"
+                                },
+                                {
                                   "args": {
                                   },
-                                  "outputVar": "responseResult",
-                                  "actionType": "submit"
+                                  "script": "window.parent.TStudent.table.refresh();",
+                                  "actionType": "custom"
+                                },
+                                {
+                                  "args": {},
+                                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
+                                  "actionType": "custom"
                                 }
                               ]
                             }
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/cancel.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/cancel.html
new file mode 100644
index 0000000..624df13
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/cancel.html
@@ -0,0 +1,206 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+  <meta charset="UTF-8" />
+  <title>amis demo</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta
+          name="viewport"
+          content="width=device-width, initial-scale=1, maximum-scale=1"
+  />
+  <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
+  <link rel="stylesheet" href="${ctxPath}/sdk/sdk.css" />
+  <link rel="stylesheet" href="${ctxPath}/sdk/helper.css" />
+  <link rel="stylesheet" href="${ctxPath}/sdk/iconfont.css" />
+  <!-- 这是默认主题所需的,如果是其他主题则不需要 -->
+  <!-- 从 1.1.0 开始 sdk.css 将不支持 IE 11,如果要支持 IE11 请引用这个 css,并把前面那个删了 -->
+  <!-- <link rel="stylesheet" href="sdk-ie11.css" /> -->
+  <!-- 不过 amis 开发团队几乎没测试过 IE 11 下的效果,所以可能有细节功能用不了,如果发现请报 issue -->
+  <style>
+    html,
+    body,
+    .app-wrapper {
+      position: relative;
+      width: 100%;
+      height: 100%;
+      margin: 0;
+      padding: 0;
+    }
+  </style>
+</head>
+<body>
+<div id="root" class="app-wrapper"></div>
+<script src="${ctxPath}/sdk/sdk.js"></script>
+<script type="text/javascript">
+  (function () {
+    let amis = amisRequire('amis/embed');
+    // 通过替换下面这个配置来生成不同页面
+    let amisJSON ={
+      "type": "page",
+      "title": "",
+      "body": [
+        {
+          "type": "form",
+          "id": "u:6d72ddddf222",
+          "title": "",
+          "body": [
+            {
+              "type": "grid",
+              "columns": [
+              ],
+              "id": "u:313016b48f71"
+            },
+            {
+              "type": "flex",
+              "id": "u:e21645a48093",
+              "className": "p-1",
+              "items": [
+                {
+                  "type": "tpl",
+                  "id": "u:5130236fd5a1",
+                  "tpl": "入园方式",
+                  "inline": true,
+                  "wrapperComponent": "h2"
+                }
+              ],
+              "style": {
+                "position": "static",
+                "flexWrap": "nowrap"
+              },
+              "direction": "row",
+              "justify": "center",
+              "alignItems": "stretch",
+              "isFixedHeight": false,
+              "isFixedWidth": false
+            },
+            {
+              "type": "input-image",
+              "label": "上传凭证",
+              "name": "voucher",
+              "autoUpload": true,
+              "proxy": true,
+              "uploadType": "fileReceptor",
+              "imageClassName": "r w-full",
+              "receiver": {
+                "url": "/mgr/uploadImgAmis",
+                "method": "post"
+              },
+              "id": "u:15f57e1e7de6",
+              "accept": ".jpeg, .jpg, .png, .gif",
+              "multiple": false,
+              "hideUploadButton": false,
+              "fixedSize": false,
+              "required": true,
+              "mode": "horizontal"
+            },
+            {
+              "type": "textarea",
+              "label": "备注:",
+              "name": "textarea",
+              "id": "u:d98613414ea8",
+              "minRows": 3,
+              "maxRows": 20,
+              "mode": "horizontal",
+              "size": "md"
+            },
+            {
+              "type": "hidden",
+              "name": "id",
+              "id": "u:91f4afc2930e",
+              "value": `${id}`
+            },
+            {
+              "type": "flex",
+              "id": "u:8254704349a2",
+              "className": "p-1",
+              "items": [
+                {
+                  "type": "button",
+                  "id": "u:6c0b8f917bf7",
+                  "label": "关闭",
+                  "onEvent": {
+                    "click": {
+                      "actions": [
+                        {
+                          "args": {
+                          },
+                          "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
+                          "actionType": "custom"
+                        }
+                      ]
+                    }
+                  }
+                },
+                {
+                  "type": "button",
+                  "id": "u:6c0b8f917bf7",
+                  "label": "保存",
+                  "level": "info",
+                  "onEvent": {
+                    "click": {
+                      "actions": [
+                        {
+                          "componentId": "u:6d72ddddf222",
+                          "actionType": "submit"
+                        }
+                      ]
+                    }
+                  }
+                }
+              ],
+              "style": {
+                "position": "relative"
+              }
+            },
+            {
+              "type": "grid",
+              "columns": [
+              ],
+              "id": "u:ec43218540fa"
+            }
+          ],
+          "api": {
+            "url": "/ball/cancel",
+            "method": "post",
+            "messages": {
+            },
+            "dataType": "form-data"
+          },
+          "actions": [
+          ],
+          "onEvent": {
+            "submitSucc": {
+              "weight": 0,
+              "actions": [
+                {
+                  "args": {
+                  },
+                  "script": "window.parent.TStudent.table.refresh();",
+                  "actionType": "custom"
+                },
+                {
+                  "args": {
+                  },
+                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
+                  "actionType": "custom"
+                }
+              ]
+            }
+          }
+        }
+      ],
+      "id": "u:b97e4e9b9f48",
+      "actions": [
+      ]
+    };
+
+    let amisScoped = amis.embed('#root', amisJSON);
+
+
+  })();
+
+
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/join.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/join.html
new file mode 100644
index 0000000..1ff3eb8
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/join.html
@@ -0,0 +1,189 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+  <meta charset="UTF-8" />
+  <title>amis demo</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta
+          name="viewport"
+          content="width=device-width, initial-scale=1, maximum-scale=1"
+  />
+  <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
+  <link rel="stylesheet" href="${ctxPath}/sdk/sdk.css" />
+  <link rel="stylesheet" href="${ctxPath}/sdk/helper.css" />
+  <link rel="stylesheet" href="${ctxPath}/sdk/iconfont.css" />
+  <!-- 这是默认主题所需的,如果是其他主题则不需要 -->
+  <!-- 从 1.1.0 开始 sdk.css 将不支持 IE 11,如果要支持 IE11 请引用这个 css,并把前面那个删了 -->
+  <!-- <link rel="stylesheet" href="sdk-ie11.css" /> -->
+  <!-- 不过 amis 开发团队几乎没测试过 IE 11 下的效果,所以可能有细节功能用不了,如果发现请报 issue -->
+  <style>
+    html,
+    body,
+    .app-wrapper {
+      position: relative;
+      width: 100%;
+      height: 100%;
+      margin: 0;
+      padding: 0;
+    }
+  </style>
+</head>
+<body>
+<div id="root" class="app-wrapper"></div>
+<script src="${ctxPath}/sdk/sdk.js"></script>
+<script type="text/javascript">
+  (function () {
+    let amis = amisRequire('amis/embed');
+    // 通过替换下面这个配置来生成不同页面
+    let amisJSON ={
+      "type": "page",
+      "title": "",
+      "body": [
+        {
+          "type": "form",
+          "id": "u:6d72ddddf25c",
+          "title": "",
+          "body": [
+            {
+              "type": "grid",
+              "columns": [
+              ],
+              "id": "u:313016b48f71"
+            },
+            {
+              "type": "flex",
+              "id": "u:e21645a48093",
+              "className": "p-1",
+              "items": [
+                {
+                  "type": "tpl",
+                  "id": "u:5130236fd5a1",
+                  "tpl": "入园方式",
+                  "inline": true,
+                  "wrapperComponent": "h2"
+                }
+              ],
+              "style": {
+                "position": "static",
+                "flexWrap": "nowrap"
+              },
+              "direction": "row",
+              "justify": "center",
+              "alignItems": "stretch",
+              "isFixedHeight": false,
+              "isFixedWidth": false
+            },
+            {
+              "type": "hidden",
+              "name": "id",
+              "id": "u:91f4afc2930e",
+              "value": `${id}`
+            },
+            {
+              "type": "radios",
+              "id": "u:d98068b4f7d2",
+              "label": "请选择:",
+              "name": "method",
+              "options": [
+                {
+                  "label": "手环",
+                  "value": "1"
+                }
+              ],
+              "mode": "inline",
+              "required": true
+            },
+            {
+              "type": "flex",
+              "id": "u:8254704349a2",
+              "className": "p-1",
+              "items": [
+                {
+                  "type": "button",
+                  "id": "u:6c0b8f917bf7",
+                  "label": "关闭",
+                  "onEvent": {
+                    "click": {
+                      "actions": [
+                        {
+                          "args": {
+                          },
+                          "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
+                          "actionType": "custom"
+                        }
+                      ]
+                    }
+                  }
+                },
+                {
+                  "type": "button",
+                  "id": "u:6c0b8f917bf7",
+                  "label": "保存",
+                  "level": "info",
+                  "onEvent": {
+                    "click": {
+                      "actions": [
+                        {
+                          "componentId": "u:6d72ddddf25c",
+                          "actionType": "submit"
+                        }
+                      ]
+                    }
+                  }
+                }
+              ],
+              "style": {
+                "position": "relative"
+              }
+            },
+            {
+              "type": "grid",
+              "columns": [
+              ],
+              "id": "u:ec43218540fa"
+            }
+          ],
+          "api": {
+            "url": "/ball/selectJoin",
+            "method": "post",
+            "messages": {
+            }
+          },
+          "actions": [
+          ],
+          "onEvent": {
+            "submitSucc": {
+              "weight": 0,
+              "actions": [
+                {
+                  "args": {
+                  },
+                  "script": "window.parent.TStudent.table.refresh();",
+                  "actionType": "custom"
+                },
+                {
+                  "args": {
+                  },
+                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
+                  "actionType": "custom"
+                }
+              ]
+            }
+          }
+        }
+      ],
+      "id": "u:b97e4e9b9f48",
+      "actions": [
+      ]
+    };
+
+    let amisScoped = amis.embed('#root', amisJSON);
+
+
+  })();
+
+
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html
index 0aafb2c..f4eef17 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html
@@ -55,6 +55,45 @@
                             </div>
 
                             <div class="col-sm-3">
+                                <div class="input-group">
+                                    <div class="input-group-btn open">
+                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
+                                            支付方式
+                                        </button>
+                                    </div>
+                                    <select class="form-control" id="payMethod">
+                                        <option value="">全部</option>
+                                        <option value=1>微信</option>
+                                        <option value=2>支付宝</option>
+                                        <option value=3>玩湃币</option>
+                                        <option value=4>手动支付</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="col-sm-3">
+                                <div class="input-group">
+                                    <div class="input-group-btn open">
+                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
+                                            支付方式
+                                        </button>
+                                    </div>
+                                    <select class="form-control" id="state">
+                                        <option value="">全部</option>
+
+                                        <option value="0">待支付</option>
+                                        <option value="1">待核销</option>
+                                        <option value="2">已到店</option>
+                                        <option value="3">已完成</option>
+                                        <option value="4">已过期</option>
+                                        <option value="5">已取消</option>
+                                    </select>
+                                </div>
+                            </div>
+
+
+
+                            <div class="col-sm-3">
                                 <#button name="搜索" icon="fa-search" clickFun="TStudent.search()"/>
                             </div>
                         </div>
@@ -62,7 +101,10 @@
                                 <#button name="添加" icon="fa-plus" clickFun="TStudent.openAddTStudent()"/>
 
                                 <#button name="修改" icon="fa-edit" clickFun="TStudent.openTStudentDetail()" space="true"/>
-                            <#button name="查看详情" icon="fa-edit" clickFun="TStudent.openTStudentDetail1()" space="true"/>
+                            <#button name="确认到店" icon="fa-edit" clickFun="TStudent.openTStudentDetail1()" space="true"/>
+                            <#button name="取消凭证" icon="fa-edit" clickFun="TStudent.openTStudentDetail4()" space="true"/>
+
+                            <#button name="查看详情" icon="fa-edit" clickFun="TStudent.openTStudentDetail5()" space="true"/>
 
                             @if(shiro.hasPermission("/tStudent/delete")){
                                 <#button name="删除" icon="fa-remove" clickFun="TStudent.delete()" space="true"/>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
index d64fa91..3ced3d4 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
@@ -52,7 +52,7 @@
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*上课场地:</label>
                     <div class="col-sm-4">
-                        <select class="form-control" id="siteId" name="siteId"  onchange="CoursePackageInfo.addTime(this.value)">
+                        <select class="form-control" id="siteId" name="siteId"  >
                             <option >请选择场地</option>
 
 
@@ -76,7 +76,7 @@
                 <div class="form-group">
                     <label class="col-sm-3 control-label">预约时间:</label>
                     <div class="col-sm-4">
-                        <input class="form-control" id="time" name="time" type="text" >
+                        <input class="form-control" id="time" name="time" type="text" onchange="CoursePackageInfo.addTime()">
 
                     </div>
                 </div>
@@ -248,7 +248,42 @@
         elem: '#time'
         ,lang:"CN",
         min:0,
-        max:10
+        max:10,
+        format:'yyyy-MM-dd',
+        done:function (a) {
+            console.log("==========="+a)
+            var ajax = new $ax(Feng.ctxPath + "/ball/yuyuetimes/"+ $('#siteId').val(), function(data){
+                console.log("================"+data)
+                if(data!=null){
+                    var content='';
+                    $.each(data, function(k, v) {
+                        var buttonClass = "layui-btn layui-btn-primary";
+                        var style = "";
+                        if (v.state === 0) {
+                            style = "background-color: red;";
+                        }
+                        var disabledAttribute = v.state === 0 ? "disabled" : "";
+                        content += '<button type="button" class="' + buttonClass + '" ' + disabledAttribute + ' style="' + style + '" onclick="toggleColor(this)">' + v.time + '</button>';
+                    });
+                    $("#ttt2").empty().append(content);
+                }
+            })
+            ajax.set("date",$('#time').val());
+            ajax.start()
+
+            var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
+                console.log("================"+data)
+                if(data!=null){
+                    let htmlStr = '';
+                    for (let i = 0; i < data.length; i++) {
+                        htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
+                    }
+                    $("#half").empty().append(htmlStr);
+                }
+            })
+            ajax1.start()
+
+        }
     });
 
     laydate.render({
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html
new file mode 100644
index 0000000..6dd45c1
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_edit.html
@@ -0,0 +1,354 @@
+@layout("/common/_container.html"){
+<style>
+    .green-button {
+        background-color: green;
+    }
+</style>
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <input type="hidden" id="id" value="${item.id}">
+        <div class="form-horizontal">
+            <div class="row">
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*所在省:</label>
+                    <div class="col-sm-4">
+                        <select class="form-control" id="provinceCode" name="provinceCode">
+                            @for(obj in province){
+                            <option value="${obj.code}" ${obj.code == item.provinceCode ? 'selected=selected' : ''}>${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*所在市:</label>
+                    <div class="col-sm-4">
+                        <select class="form-control" id="cityCode" name="cityCode">
+                            @for(obj in city){
+                            <option value="${obj.code}" ${obj.code == item.cityCode ? 'selected=selected' : ''}>${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*所属门店:</label>
+                    <div class="col-sm-4">
+                        <select class="form-control" id="storeId" name="storeId">
+                            @for(obj in store){
+                            <option value="${obj.id}" ${obj.id == item.storeId ? 'selected=selected' : ''}>${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*预约类型:</label>
+                    <div class="col-sm-4">
+                       <input type="radio" name="type" value="1"  checked="" onclick="updateType(1)"  > 全场
+                        <input type="radio" name="type" value="2" onclick="updateType(2)" > 半场
+                    </div>
+                </div>
+
+
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*上课场地:</label>
+                    <input type="hidden" id="selSiteId" value="${item.siteId}">
+
+                    <div class="col-sm-4">
+                        <select class="form-control" id="siteId" name="siteId"  onchange="CoursePackageInfo.addTime1()" >
+                            <option >请选择场地</option>
+
+                            @for(obj in site){
+                            <option value="${obj.id}"  data-custom-data="1" ${obj.id == item.siteId ? 'selected=selected' : ''} >${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                </div>
+
+
+                <div class="form-group"  id="half1"  hidden="hidden">
+                    <label class="col-sm-3 control-label">*选择半场:</label>
+                    <div class="col-sm-4">
+                        <select class="form-control"  name="half" id="half">
+
+                        </select>
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <input type="hidden" id="selDate" value="${date}">
+                    <label class="col-sm-3 control-label">预约时间:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="time" name="time" type="text"  value="${date}">
+
+                    </div>
+                </div>
+
+
+
+
+
+
+
+
+
+
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*预约时间段:</label>
+                    <div class="col-sm-5" id="ttt1">
+                        <div class="layui-btn-group" id="ttt2">
+
+
+                        </div>
+
+                        <div class="layui-btn-group" id="ttt3">
+
+                            @for(obj in timeRanges){
+                            <button  name="has" type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary' disabled style='background-color: red'" : obj.state == 1 ? "class = 'layui-btn layui-btn-primary green-button'" : "class = 'layui-btn layui-btn-primary'"} onclick="toggleColor(this)">${obj.time}</button>
+<!--                            <button type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary' disabled style='background-color: red'" : "class = 'layui-btn layui-btn-primary' "} onclick="toggleColor(this)">${obj.time}</button>-->
+<!--                            <button type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary green-button'" : "class = 'layui-btn layui-btn-primary'"} onclick="toggleColor(this)">${obj.time}</button>-->
+                            @}
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">现金价格:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="cash" name="cash" type="text" value="${money[0]!}" >
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">玩派币价格:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="play" name="play" type="text" value="${money[1]!}" >
+
+                    </div>
+                </div>
+
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">预约人:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="booker" name="booker" type="text" value="${item.booker}" >
+
+                    </div>
+                </div>
+
+
+
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">联系电话:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="phone" name="phone" type="text" value="${item.phone}" >
+
+                    </div>
+                </div>
+<!--                <input type="text" id = "counpons">-->
+            </div>
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.addSubmit1()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="CoursePackageInfo.close()"/>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/modular/system/ball/yuyue_info.js"></script>
+<script type="text/javascript">
+    function updateType(o) {
+        if(o==1){
+
+            var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
+            var count = elements.length;
+
+            console.log("Number of elements: " + count);
+
+            $("#half1").hide()
+            var radios = document.getElementsByName("type");
+            var selectedValue;
+
+            for (var i = 0; i < radios.length; i++) {
+                if (radios[i].checked) {
+                    selectedValue = radios[i].value;
+                    break;
+                }
+            }
+
+            var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
+                console.log("===========3333====="+data)
+                if(data!=null){
+
+                    $("#cash").val(data[0] * count);
+                    $("#play").val(data[1] * count);
+
+                }
+            })
+            ajax3.start()
+        }else {
+            var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
+            var count = elements.length;
+
+            console.log("Number of elements: " + count);
+
+            $("#half1").show()
+            var radios = document.getElementsByName("type");
+            var selectedValue;
+
+            for (var i = 0; i < radios.length; i++) {
+                if (radios[i].checked) {
+                    selectedValue = radios[i].value;
+                    break;
+                }
+            }
+
+            var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
+                console.log("===========3333====="+data)
+                if(data!=null){
+
+                    $("#cash").val(data[0] * count);
+                    $("#play").val(data[1] * count);
+
+                }
+            })
+            ajax3.start()
+
+        }
+
+    }
+
+
+
+    function toggleColor(button) {
+        button.classList.toggle("green-button");
+
+        var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
+        var count = elements.length;
+
+        console.log("Number of elements: " + count);
+
+
+        var radios = document.getElementsByName("type");
+        var selectedValue;
+
+        for (var i = 0; i < radios.length; i++) {
+            if (radios[i].checked) {
+                selectedValue = radios[i].value;
+                break;
+            }
+        }
+
+        var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
+            console.log("===========3333====="+data)
+            if(data!=null){
+
+                $("#cash").val(data[0] * count);
+                $("#play").val(data[1] * count);
+
+            }
+        })
+        ajax3.start()
+
+
+    }
+
+    laydate.render({
+        elem: '#time'
+        ,lang:"CN",
+        min:0,
+        max:10,
+        format:'yyyy-MM-dd',
+        done:function (a) {
+        console.log("==============="+$('#time').val())
+        console.log("==============="+$('#selDate').val())
+        console.log("==============="+$('#siteId').val())
+        console.log("==============="+$('#selSiteId').val())
+
+            if ($('#siteId').val() != $('#selSiteId').val()||$('#time').val()!=$('#selDate').val()){
+                $("#ttt3").hide()
+                $("#ttt2").show()
+
+            }else {
+                $("#ttt3").show()
+                $("#ttt2").hide()
+
+            }
+
+            console.log("==========="+a)
+            var ajax = new $ax(Feng.ctxPath + "/ball/yuyuetimes/"+ $('#siteId').val(), function(data){
+                console.log("================"+data)
+                if(data!=null){
+                    var content='';
+                    $.each(data, function(k, v) {
+                        var buttonClass = "layui-btn layui-btn-primary";
+                        var style = "";
+                        if (v.state === 0) {
+                            style = "background-color: red;";
+                        }
+                        var disabledAttribute = v.state === 0 ? "disabled" : "";
+                        content += '<button type="button" class="' + buttonClass + '" ' + disabledAttribute + ' style="' + style + '" onclick="toggleColor(this)">' + v.time + '</button>';
+                    });
+                    $("#ttt2").empty().append(content);
+                }
+            })
+            ajax.start()
+
+            var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
+                console.log("================"+data)
+                if(data!=null){
+                    let htmlStr = '';
+                    for (let i = 0; i < data.length; i++) {
+                        htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
+                    }
+                    $("#half").empty().append(htmlStr);
+                }
+            })
+            ajax1.start()
+
+
+
+
+
+        }
+
+
+    });
+
+    laydate.render({
+        elem: '#holitime'
+        ,range: true //或 range: '~' 来自定义分割字符
+    });
+
+    var avatarUp = new $WebUpload("coverDrawing");
+    avatarUp.setUploadBarId("progressBar");
+    avatarUp.init();
+
+    var avatarUp1 = new $WebUpload("detailDrawing");
+    avatarUp1.setUploadBarId("progressBar");
+    avatarUp1.init();
+
+    var avatarUp1 = new $WebUpload("introduceDrawing");
+    avatarUp1.setUploadBarId("progressBar");
+    avatarUp1.init();
+    function addTime(){
+        var i =  $('#dayTime > div').length
+
+        let htmlStr ='           <div style="display:flex">\n' +
+            '                                <input class="form-control" id="classStartTime'+i+'" name="classStartTime" placeholder="请选择" style="width: 200px;">\n' +
+            '                                <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice1(this)"></i>\n' +
+            '                            </div>'
+        $('#dayTime').append(htmlStr);
+        console.log("========="+i)
+        laydate.render({
+            elem: '#classStartTime'+i,
+            type: 'time',
+            range: true
+        });
+    }
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html
new file mode 100644
index 0000000..4ee4007
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_info.html
@@ -0,0 +1,384 @@
+@layout("/common/_container.html"){
+<style>
+    .green-button {
+        background-color: green;
+    }
+</style>
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <input type="hidden" id="id" value="${item.id}">
+        <div class="form-horizontal">
+            <div class="row">
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*所在省:</label>
+                    <div class="col-sm-4">
+                        <select class="form-control" id="provinceCode" name="provinceCode" disabled>
+                            @for(obj in province){
+                            <option value="${obj.code}" ${obj.code == item.provinceCode ? 'selected=selected' : ''}>${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*所在市:</label>
+                    <div class="col-sm-4">
+                        <select class="form-control" id="cityCode" name="cityCode" disabled>
+                            @for(obj in city){
+                            <option value="${obj.code}" ${obj.code == item.cityCode ? 'selected=selected' : ''}>${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*所属门店:</label>
+                    <div class="col-sm-4">
+                        <select class="form-control" id="storeId" name="storeId" disabled>
+                            @for(obj in store){
+                            <option value="${obj.id}" ${obj.id == item.storeId ? 'selected=selected' : ''}>${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*预约类型:</label>
+                    <div class="col-sm-4">
+                        <input type="radio" name="type" value="1"  checked="" onclick="updateType(1)"   disabled> 全场
+                        <input type="radio" name="type" value="2" onclick="updateType(2)"  disabled> 半场
+                    </div>
+                </div>
+
+
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*上课场地:</label>
+                    <input type="hidden" id="selSiteId" value="${item.siteId}">
+
+                    <div class="col-sm-4">
+                        <select class="form-control" id="siteId" name="siteId"  onchange="CoursePackageInfo.addTime1()" disabled >
+                            <option >请选择场地</option>
+
+                            @for(obj in site){
+                            <option value="${obj.id}"  data-custom-data="1" ${obj.id == item.siteId ? 'selected=selected' : ''} >${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                </div>
+
+
+                <div class="form-group"  id="half1"  hidden="hidden">
+                    <label class="col-sm-3 control-label">*选择半场:</label>
+                    <div class="col-sm-4">
+                        <select class="form-control"  name="half" id="half" disabled>
+
+                        </select>
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <input type="hidden" id="selDate" value="${date}">
+                    <label class="col-sm-3 control-label">预约时间:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="time" name="time" type="text"  value="${date}" disabled>
+
+                    </div>
+                </div>
+
+
+
+
+
+
+
+
+
+
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">*预约时间段:</label>
+                    <div class="col-sm-5" id="ttt1" disabled="">
+                        <div class="layui-btn-group" id="ttt2">
+
+
+                        </div>
+
+                        <div class="layui-btn-group" id="ttt3">
+
+                            @for(obj in timeRanges){
+                            <button  disabled name="has" type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary' disabled style='background-color: red'" : obj.state == 1 ? "class = 'layui-btn layui-btn-primary green-button'" : "class = 'layui-btn layui-btn-primary'"} onclick="toggleColor(this)">${obj.time}</button>
+                            <!--                            <button type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary' disabled style='background-color: red'" : "class = 'layui-btn layui-btn-primary' "} onclick="toggleColor(this)">${obj.time}</button>-->
+                            <!--                            <button type="button" ${obj.state == 0 ? "class = 'layui-btn layui-btn-primary green-button'" : "class = 'layui-btn layui-btn-primary'"} onclick="toggleColor(this)">${obj.time}</button>-->
+                            @}
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">现金价格:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="cash" name="cash" type="text" value="${money[0]!}" disabled >
+
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">玩派币价格:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="play" name="play" type="text" value="${money[1]!}" disabled >
+
+                    </div>
+                </div>
+
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">预约人:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="booker" name="booker" type="text" value="${item.booker}" disabled >
+
+                    </div>
+                </div>
+
+
+
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">联系电话:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="phone" name="phone" type="text" value="${item.phone}" disabled >
+
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">操作人:</label>
+                    <div class="col-sm-4">
+                        <input class="form-control" id="cancelUserId" name="cancelUserId" type="text" value="${cancelUser!}" disabled >
+
+                    </div>
+                </div>
+
+                <div class="form-group" disabled>
+                    <label class="col-sm-3 control-label head-scu-label">*上传凭证:</label>
+                    <div class="col-sm-2">
+                        <div id="introduceDrawingPreId">
+                            <div><img width="100px" height="100px" src="${item.voucher}"></div>
+                        </div>
+                    </div>
+                    <div class="col-sm-2">
+
+                    </div>
+
+                </div>
+
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">备注:</label>
+                    <div class="col-sm-4">
+                        <textarea class="form-control" id="remark" name="remark" disabled>${item.remark}</textarea >
+                    </div>
+                </div>
+
+            </div>
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+<!--                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.addSubmit1()"/>-->
+                    <#button btnCss="danger" name="关闭" id="cancel" icon="fa-eraser" clickFun="CoursePackageInfo.close()"/>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/modular/system/ball/yuyue_info.js"></script>
+<script type="text/javascript">
+    function updateType(o) {
+        if(o==1){
+
+            var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
+            var count = elements.length;
+
+            console.log("Number of elements: " + count);
+
+            $("#half1").hide()
+            var radios = document.getElementsByName("type");
+            var selectedValue;
+
+            for (var i = 0; i < radios.length; i++) {
+                if (radios[i].checked) {
+                    selectedValue = radios[i].value;
+                    break;
+                }
+            }
+
+            var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
+                console.log("===========3333====="+data)
+                if(data!=null){
+
+                    $("#cash").val(data[0] * count);
+                    $("#play").val(data[1] * count);
+
+                }
+            })
+            ajax3.start()
+        }else {
+            var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
+            var count = elements.length;
+
+            console.log("Number of elements: " + count);
+
+            $("#half1").show()
+            var radios = document.getElementsByName("type");
+            var selectedValue;
+
+            for (var i = 0; i < radios.length; i++) {
+                if (radios[i].checked) {
+                    selectedValue = radios[i].value;
+                    break;
+                }
+            }
+
+            var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
+                console.log("===========3333====="+data)
+                if(data!=null){
+
+                    $("#cash").val(data[0] * count);
+                    $("#play").val(data[1] * count);
+
+                }
+            })
+            ajax3.start()
+
+        }
+
+    }
+
+
+
+    function toggleColor(button) {
+        button.classList.toggle("green-button");
+
+        var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
+        var count = elements.length;
+
+        console.log("Number of elements: " + count);
+
+
+        var radios = document.getElementsByName("type");
+        var selectedValue;
+
+        for (var i = 0; i < radios.length; i++) {
+            if (radios[i].checked) {
+                selectedValue = radios[i].value;
+                break;
+            }
+        }
+
+        var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
+            console.log("===========3333====="+data)
+            if(data!=null){
+
+                $("#cash").val(data[0] * count);
+                $("#play").val(data[1] * count);
+
+            }
+        })
+        ajax3.start()
+
+
+    }
+
+    laydate.render({
+        elem: '#time'
+        ,lang:"CN",
+        min:0,
+        max:10,
+        format:'yyyy-MM-dd',
+        done:function (a) {
+            console.log("==============="+$('#time').val())
+            console.log("==============="+$('#selDate').val())
+            console.log("==============="+$('#siteId').val())
+            console.log("==============="+$('#selSiteId').val())
+
+            if ($('#siteId').val() != $('#selSiteId').val()||$('#time').val()!=$('#selDate').val()){
+                $("#ttt3").hide()
+                $("#ttt2").show()
+
+            }else {
+                $("#ttt3").show()
+                $("#ttt2").hide()
+
+            }
+
+            console.log("==========="+a)
+            var ajax = new $ax(Feng.ctxPath + "/ball/yuyuetimes/"+ $('#siteId').val(), function(data){
+                console.log("================"+data)
+                if(data!=null){
+                    var content='';
+                    $.each(data, function(k, v) {
+                        var buttonClass = "layui-btn layui-btn-primary";
+                        var style = "";
+                        if (v.state === 0) {
+                            style = "background-color: red;";
+                        }
+                        var disabledAttribute = v.state === 0 ? "disabled" : "";
+                        content += '<button type="button" class="' + buttonClass + '" ' + disabledAttribute + ' style="' + style + '" onclick="toggleColor(this)">' + v.time + '</button>';
+                    });
+                    $("#ttt2").empty().append(content);
+                }
+            })
+            ajax.start()
+
+            var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
+                console.log("================"+data)
+                if(data!=null){
+                    let htmlStr = '';
+                    for (let i = 0; i < data.length; i++) {
+                        htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
+                    }
+                    $("#half").empty().append(htmlStr);
+                }
+            })
+            ajax1.start()
+
+
+
+
+
+        }
+
+
+    });
+
+    laydate.render({
+        elem: '#holitime'
+        ,range: true //或 range: '~' 来自定义分割字符
+    });
+
+    var avatarUp = new $WebUpload("coverDrawing");
+    avatarUp.setUploadBarId("progressBar");
+    avatarUp.init();
+
+    var avatarUp1 = new $WebUpload("detailDrawing");
+    avatarUp1.setUploadBarId("progressBar");
+    avatarUp1.init();
+
+    var avatarUp1 = new $WebUpload("introduceDrawing");
+    avatarUp1.setUploadBarId("progressBar");
+    avatarUp1.init();
+    function addTime(){
+        var i =  $('#dayTime > div').length
+
+        let htmlStr ='           <div style="display:flex">\n' +
+            '                                <input class="form-control" id="classStartTime'+i+'" name="classStartTime" placeholder="请选择" style="width: 200px;">\n' +
+            '                                <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice1(this)"></i>\n' +
+            '                            </div>'
+        $('#dayTime').append(htmlStr);
+        console.log("========="+i)
+        laydate.render({
+            elem: '#classStartTime'+i,
+            type: 'time',
+            range: true
+        });
+    }
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html
index cb7fc3a..f66df1d 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html
@@ -205,7 +205,7 @@
                             <span class="classNumber_span"  ${type == 2||type == 3 ? 'hidden=hidden' : ''}><input class="classNumber" type="number" min="0" placeholder="请输入" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;">&nbsp;&nbsp;&nbsp;&nbsp;</span>
                             <span class="cash_span" ></span>
                             <span class="paiCoin_span"></span>
-                            <#button btnCss="info" name="优惠卷" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.openDia(1)"/>
+                            <#button btnCss="info" name="优惠券" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.openDia(1)"/>
                             <i class="fa fa-plus-circle" style="font-size:24px" onclick="addPrice(${type})"></i>
                             <input type="text" id = "counpons1" class="counpons" hidden="hidden" >
                         </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html
index c9d8e1b..7142138 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html
@@ -221,7 +221,7 @@
                                 @}
                             </span>
                             <input type="hidden" id="counpons1" value="${couponIds}" class="counpons">
-                            <#button btnCss="info" name="优惠卷" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.openDia(1)"/>
+                            <#button btnCss="info" name="优惠券" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.openDia(1)"/>
                             <i class="fa fa-plus-circle" style="font-size:24px" onclick="addPrice(${type})"></i>
                         </div>
                     </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
index b49d32e..92cd00c 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
@@ -70,7 +70,7 @@
             <div class="form-group" id="shop">
                 <label class="col-sm-3 control-label">举办门店:</label>
                 <div class="col-sm-9">
-                    <select class="form-control" id="shopId" name="shopId">
+                    <select class="form-control" id="shopId" name="shopId" multiple>
                         <option value="">选择门店</option>
                     </select>
                 </div>
@@ -193,10 +193,31 @@
     </div>
 </div>
 <script src="${ctxPath}/modular/system/tCompetition/tCompetition_info.js"></script>
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css">
+<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>-->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script>
 <script src="${ctxPath}/js/vue/vue.js"></script>
 <script src="${ctxPath}/js/elementui/index.js"></script>
 <link rel="stylesheet" href="${ctxPath}/js/elementui/index.css">
 <script>
+    $(document).ready(function() {
+        $('#shopId').select2({
+            multiple: true,
+            closeOnSelect: false
+        });
+    });
+
+    laydate.render({
+        elem: '#startTime'
+        ,type:"datetime"
+    });
+    laydate.render({
+        elem: '#endTime'
+        ,type:"datetime"
+    });
+
+
+
     var vue2 = new Vue({
         el: '#app1',
         props: {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
index 9403aa8..cf527c3 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
@@ -127,23 +127,88 @@
  */
 TStudent.openTStudentDetail = function () {
     if (this.check()) {
+
+        if (TStudent.seItem.status!=1){
+            Feng.error("请选择待核销的数据")
+            return
+        }
         var index = layer.open({
             type: 2,
             title: '详情',
             area: ['100%', '100%'],  //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/ball/pre_edit/' + TStudent.seItem.id
+            content: Feng.ctxPath + '/ball/yueyue_edit/' + TStudent.seItem.id
         });
         this.layerIndex = index;
     }
 };
 
 
+
+TStudent.openTStudentDetail5 = function () {
+    if (this.check()) {
+
+
+        var index = layer.open({
+            type: 2,
+            title: '详情',
+            area: ['100%', '100%'],  //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/ball/yueyue_info/' + TStudent.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
 /**
- * 打开详情
+ * 确认到店
  */
 TStudent.openTStudentDetail1 = function () {
+    if (this.check()) {
+
+        if (TStudent.seItem.status!=1){
+            Feng.error("请选择待核销的数据")
+            return
+        }
+        var index = layer.open({
+            type: 2,
+            title: '',
+            area: ['20%', '25%'],  //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/ball/joinmethod/' + TStudent.seItem.id
+        });
+
+        this.layerIndex = index;
+    }
+};
+
+
+/**
+ * 确认到店
+ */
+TStudent.openTStudentDetail4 = function () {
+    if (this.check()) {
+
+        if (TStudent.seItem.status!=1){
+            Feng.error("请选择待核销的数据")
+            return
+        }
+        var index = layer.open({
+            type: 2,
+            title: '',
+            area: ['30%', '40%'],  //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/ball/tocancel/' + TStudent.seItem.id
+        });
+
+        this.layerIndex = index;
+    }
+};
+
+TStudent.openTStudentDetail2 = function () {
     if (this.check()) {
         var index = layer.open({
             type: 2,
@@ -185,7 +250,9 @@
     queryData['store'] = $("#store").val();
     queryData['peopleName'] = $("#peopleName").val();
     queryData['phone'] = $("#phone").val();
-    queryData['date'] = $("#peopleName").val();
+    queryData['date'] = $("#date").val();
+    queryData['payMethod'] = $("#payMethod").val();
+    queryData['state'] = $("#state").val();
 
 
 
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
index 9dc4393..4456b15 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
@@ -62,6 +62,59 @@
             $("#ttt2").empty().append(content);
         }
     })
+    ajax.set("date",$('#time').val());
+    ajax.start()
+
+    var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
+        console.log("================"+data)
+        if(data!=null){
+            let htmlStr = '';
+            for (let i = 0; i < data.length; i++) {
+                htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
+            }
+            $("#half").empty().append(htmlStr);
+        }
+    })
+    ajax1.start()
+
+
+
+
+
+};
+
+
+
+CoursePackageInfo.addTime1 = function (a) {
+
+
+    if ($('#siteId').val() != $('#selSiteId').val()||$('#time').val()!=$('#selDate').val()){
+        $("#ttt3").hide()
+        $("#ttt2").show()
+
+    }else {
+        $("#ttt3").show()
+        $("#ttt2").hide()
+
+    }
+
+    console.log("==========="+a)
+    var ajax = new $ax(Feng.ctxPath + "/ball/yuyuetimes/"+ $('#siteId').val(), function(data){
+        console.log("================"+data)
+        if(data!=null){
+            var content='';
+            $.each(data, function(k, v) {
+                var buttonClass = "layui-btn layui-btn-primary";
+                var style = "";
+                if (v.state === 0) {
+                    style = "background-color: red;";
+                }
+                var disabledAttribute = v.state === 0 ? "disabled" : "";
+                content += '<button type="button" class="' + buttonClass + '" ' + disabledAttribute + ' style="' + style + '" onclick="toggleColor(this)">' + v.time + '</button>';
+            });
+            $("#ttt2").empty().append(content);
+        }
+    })
     ajax.start()
 
     var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
@@ -114,7 +167,7 @@
     var values = "";
 
     for (var i = 0; i < elements.length; i++) {
-        values += date +" "+ elements[i].innerText + ",";
+         values += date +" "+ elements[i].innerText + ";";
     }
 
 // 去除最后一个逗号
@@ -204,6 +257,144 @@
     ajax.start();
 };
 
+
+/**
+ * 新修改
+ */
+CoursePackageInfo.addSubmit1 = function () {
+    let province = $('#provinceCode option:checked').text();
+    let provinceCode = $('#provinceCode').val();
+    let city = $('#cityCode option:checked').text();
+    let cityCode = $('#cityCode').val();
+    let storeId = $('#storeId').val();
+    let siteId = $('#siteId').val();
+    let site = $('#siteId option:checked').text();
+
+
+    var radios = document.getElementsByName("type");
+    var selectedValue;
+
+
+
+    for (var i = 0; i < radios.length; i++) {
+        if (radios[i].checked) {
+            selectedValue = radios[i].value;
+            break;
+        }
+    }
+
+    let type = selectedValue;
+    let half = $('#half').val();
+    let date = $('#time').val();
+
+
+    var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
+    var values = "";
+    console.log("==============="+elements[0])
+    if ($('#siteId').val() != $('#selSiteId').val()||$('#time').val()!=$('#selDate').val()) {
+        for (var i = 0; i < elements.length; i++) {
+            if (elements[i].name != 'has') {
+                values += date + " " + elements[i].innerText + ";";
+            }
+
+        }
+    }else {
+        for (var i = 0; i < elements.length; i++) {
+            if (elements[i].name = 'has') {
+                values += date + " " + elements[i].innerText + ";";
+            }
+        }
+    }
+// 去除最后一个逗号
+    values = values.slice(0, -1);
+
+    console.log(values);
+
+    var times = values;
+
+    let cash = $('#cash').val();
+    let play = $('#play').val();
+    let booker = $('#booker').val();
+    let phone = $('#phone').val();
+    let id = $('#id').val();
+
+
+    // if(null == provinceCode || '' == provinceCode){
+    //     Feng.error("所在省不能为空");
+    //     return
+    // }
+    // if(null == cityCode || '' == cityCode){
+    //     Feng.error("所在市不能为空");
+    //     return
+    // }
+    // if(null == storeId || '' == storeId){
+    //     Feng.error("所属门店不能为空");
+    //     return
+    // }
+    // if(null == coursePackageTypeId || '' == coursePackageTypeId){
+    //     Feng.error("课程类型不能为空");
+    //     return
+    // }
+    // if(null == name || '' == name){
+    //     Feng.error("课包名称不能为空");
+    //     return
+    // }
+    // if(null == siteId || '' == siteId){
+    //     Feng.error("上课场地不能为空");
+    //     return
+    // }
+    // if(null == coachId || '' == coachId){
+    //     Feng.error("授课教师不能为空");
+    //     return
+    // }
+    //
+    // classWeeks = classWeeks.substring(0, classWeeks.length - 1);
+    //
+    // if(null == coverDrawing || '' == coverDrawing){
+    //     Feng.error("课包封面不能为空");
+    //     return
+    // }
+    // if(null == detailDrawing || '' == detailDrawing){
+    //     Feng.error("详情页不能为空");
+    //     return
+    // }
+    // if(null == introduceDrawing || '' == introduceDrawing){
+    //     Feng.error("课包介绍不能为空");
+    //     return
+    // }
+
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/ball/orderedit", function (data) {
+        if(data.code == 200){
+            Feng.success("添加成功!");
+            CoursePackageInfo.close();
+            window.parent.TStudent.table.refresh();
+        }else{
+            Feng.error(data.msg);
+        }
+    }, function (data) {
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("province",province)
+    ajax.set("provinceCode",provinceCode);
+    ajax.set("city",city);
+    ajax.set("cityCode",cityCode);
+    ajax.set("storeId",storeId);
+    ajax.set("isHalf",type);
+    ajax.set("siteId",siteId);
+    ajax.set("nextName",site);
+    ajax.set("halfName",half);
+    ajax.set("date",date);
+    ajax.set("times",times);
+    ajax.set("money",cash+","+play);
+    ajax.set("booker",booker);
+    ajax.set("phone",phone);
+    ajax.set("id",id);
+
+
+    ajax.start();
+};
 /**
  * 提交修改
  */
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
index 413b667..e951696 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
@@ -167,10 +167,14 @@
  */
 CoursePackage.editCoursePackageState = function (state) {
     if (this.check()) {
+
         if(CoursePackage.seItem.state == state){
             Feng.error("不能重复操作");
             return
         }
+        parent.layer.confirm(state == 1 ? '是否上架' : "是否下架" , {
+            btn: ['确定', '取消']
+        }, function (index) {
         let ajax = new $ax(Feng.ctxPath + "/coursePackage/editCoursePackageState", function (data) {
             Feng.success(state == 1 ? '上架' : "下架" + "成功!");
             CoursePackage.table.refresh();
@@ -180,6 +184,15 @@
         ajax.set("id", CoursePackage.seItem.id);
         ajax.set("state", state);
         ajax.start();
+                parent.layer.close(index);
+
+            }, function (index) {
+                parent.layer.close(index);
+            }
+
+
+        )
+
     }
 };
 
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
index 9494de6..ff9fa6c 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
@@ -83,6 +83,7 @@
     @ResponseBody
     @PostMapping("/listorder")
     public List<Map<String, Object>>  listorder(@RequestBody BookingQuery bookingQuery){
+        System.out.println("===bookingQuery===="+bookingQuery);
         return gameService.orderlist(bookingQuery);
 //        return  game.getId();
     }
diff --git a/cloud-server-other/src/main/resources/mapper/GameMapper.xml b/cloud-server-other/src/main/resources/mapper/GameMapper.xml
index fb0656a..7ba2226 100644
--- a/cloud-server-other/src/main/resources/mapper/GameMapper.xml
+++ b/cloud-server-other/src/main/resources/mapper/GameMapper.xml
@@ -36,7 +36,39 @@
         FROM t_site_booking bk
                  LEFT JOIN t_store st on bk.storeId = st.id
                  LEFT JOIN t_site si on bk.siteId = si.id
+        <where>
+        <if test="provinceCode!=null and provinceCode!= ''">
+          and  bk.provinceCode=#{provinceCode}
+        </if>
+            <if test="cityCode!=null and cityCode!= ''">
+                and  bk.cityCode=#{cityCode}
+            </if>
 
+            <if test="store!=null and store!= ''">
+                and  st.name=#{store}
+            </if>
+
+            <if test="peopleName!=null and peopleName!= ''">
+                and  bk.booker=#{peopleName}
+            </if>
+
+            <if test="phone!=null and phone!= ''">
+                and  bk.phone=#{phone}
+            </if>
+
+
+            <if test="date!=null and date!= ''">
+                and bk.times like concat('%',#{date},'%')            </if>
+            <if test="payMethod!=null ">
+                and  bk.payType=#{payMethod}
+            </if>
+
+            <if test="state!=null ">
+                and  bk.status=#{state}
+            </if>
+
+        
+        </where>
 
 
 

--
Gitblit v1.7.1