add.html 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <!DOCTYPE html>
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4. <th:block th:include="include :: header('新增赛事发布')"/>
  5. <th:block th:include="include :: datetimepicker-css"/>
  6. <th:block th:include="include :: summernote-css"/>
  7. </head>
  8. <body class="white-bg">
  9. <div class="wrapper wrapper-content animated fadeInRight ibox-content" >
  10. <form class="form-horizontal m" id="form-competition-add">
  11. <div class="col-xs-12">
  12. <div class="form-group">
  13. <label class="col-sm-2 control-label is-required">赛事标题:</label>
  14. <div class="col-sm-4">
  15. <input name="competitionTitle" class="form-control" type="text" placeholder="请输入赛事标题"
  16. required>
  17. </div>
  18. <label class="col-sm-2 control-label is-required">赛事类型:</label>
  19. <div class="col-sm-4">
  20. <select name="competitionType" class="form-control"
  21. th:with="type=${@dict.getType('competition_type')}" required>
  22. <option th:each="dict : ${type}" th:text="${dict.dictLabel}"
  23. th:value="${dict.dictValue}"></option>
  24. </select>
  25. </div>
  26. </div>
  27. </div>
  28. <div class="col-xs-12">
  29. <div class="form-group">
  30. <label class="col-sm-2 control-label is-required">最大人数/团队数:</label>
  31. <div class="col-sm-4">
  32. <input name="teamMax" class="form-control" type="number" placeholder="请输入最大人数或团队数"
  33. required>
  34. </div>
  35. <label class="col-sm-2 control-label">场地:</label>
  36. <div class="col-sm-4">
  37. <input name="competitionPlace" class="form-control" type="text" placeholder="请输入场地名称">
  38. </div>
  39. </div>
  40. </div>
  41. <div class="col-xs-12">
  42. <div class="form-group">
  43. <label class="col-sm-2 control-label is-required">报名费用:</label>
  44. <div class="col-sm-4">
  45. <input name="competitionExpense" class="form-control" type="number" placeholder="请输入报名费用"
  46. required>
  47. </div>
  48. <label class="col-sm-2 control-label is-required">观看费用:</label>
  49. <div class="col-sm-4">
  50. <input name="viewingTicket" class="form-control" type="number" placeholder="请输入观看费用"
  51. required>
  52. </div>
  53. </div>
  54. </div>
  55. <div class="col-xs-12">
  56. <div class="form-group">
  57. <label class="col-sm-2 control-label is-required">赛事开始时间:</label>
  58. <div class="col-sm-4">
  59. <div class="input-group date">
  60. <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
  61. <input name="applyStartTime" type="text" class="form-control" id="applyStartTime"
  62. placeholder="年-月-日 时:分" required>
  63. </div>
  64. </div>
  65. <label class="col-sm-2 control-label is-required">赛事结束时间:</label>
  66. <div class="col-sm-4">
  67. <div class="input-group date">
  68. <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
  69. <input name="applyEndTime" type="text" class="form-control" id="applyEndTime"
  70. placeholder="年-月-日 时:分" required>
  71. </div>
  72. </div>
  73. </div>
  74. </div>
  75. <div class="col-xs-12">
  76. <div class="form-group">
  77. <label class="col-sm-2 control-label is-required">取消报名截至时间:</label>
  78. <div class="col-sm-4">
  79. <select name="applyBeforeTime" class="form-control" required>
  80. <option value="1">赛事开始前1小时</option>
  81. <option value="2">赛事开始前2小时</option>
  82. <option value="3">赛事开始前3小时</option>
  83. <option value="6">赛事开始前6小时</option>
  84. <option value="12">赛事开始前12小时</option>
  85. <option value="24">赛事开始前24小时</option>
  86. <option value="48">赛事开始前48小时</option>
  87. </select>
  88. </div>
  89. </div>
  90. </div>
  91. <div class="col-xs-12">
  92. <div class="form-group">
  93. <label class="col-sm-2 control-label is-required">赛事详情:</label>
  94. <div class="col-sm-4">
  95. <input type="hidden" class="form-control" name="competitionDetails" required>
  96. <div class="summernote" id="competitionDetails"></div>
  97. </div>
  98. <label class="col-sm-2 control-label">报名须知:</label>
  99. <div class="col-sm-4">
  100. <input type="hidden" class="form-control" name="registrationNotes">
  101. <div class="summernote" id="registrationNotes"></div>
  102. </div>
  103. </div>
  104. </div>
  105. </form>
  106. </div>
  107. <th:block th:include="include :: footer"/>
  108. <th:block th:include="include :: datetimepicker-js"/>
  109. <th:block th:include="include :: summernote-js"/>
  110. <script th:inline="javascript">
  111. var prefix = ctx + "competition"
  112. $("#form-competition-add").validate({
  113. focusCleanup: true,
  114. rules: {
  115. teamMax: {
  116. digits: true
  117. },
  118. competitionExpense: {
  119. double: true
  120. },
  121. competitionExpense: {
  122. double: true
  123. }
  124. },
  125. });
  126. function submitHandler() {
  127. var applyStartTime = $('#applyStartTime').val()
  128. var applyEndTime = $('#applyEndTime').val()
  129. var currentTime = new Date().toISOString().slice(0, 16); // 当前时间,格式为 YYYY-MM-DD HH:MM
  130. if ($.validate.form()) {
  131. // 检查赛事开始时间不能小于当前时间
  132. if (applyStartTime < currentTime) {
  133. $.modal.alertWarning("赛事开始时间不能小于当前时间");
  134. return false;
  135. }
  136. // 检查赛事结束时间不能小于赛事开始时间
  137. if (applyEndTime < applyStartTime) {
  138. $.modal.alertWarning("赛事结束时间不能小于赛事开始时间");
  139. return false;
  140. }
  141. $.operate.save(prefix + "/add", $('#form-competition-add').serialize());
  142. }
  143. }
  144. $("input[name='applyStartTime']").datetimepicker({
  145. format: "yyyy-mm-dd hh:ii",
  146. autoclose: true
  147. });
  148. $("input[name='applyEndTime']").datetimepicker({
  149. format: "yyyy-mm-dd hh:ii",
  150. autoclose: true
  151. });
  152. $(function () {
  153. $('.summernote').summernote({
  154. lang: 'zh-CN',
  155. dialogsInBody: true,
  156. height: 400,
  157. callbacks: {
  158. onChange: function (contents, $edittable) {
  159. $("input[name='" + this.id + "']").val(contents);
  160. },
  161. onImageUpload: function (files) {
  162. var obj = this;
  163. var data = new FormData();
  164. data.append("file", files[0]);
  165. $.ajax({
  166. type: "post",
  167. url: ctx + "common/upload",
  168. data: data,
  169. cache: false,
  170. contentType: false,
  171. processData: false,
  172. dataType: 'json',
  173. success: function (result) {
  174. if (result.code == web_status.SUCCESS) {
  175. $('#' + obj.id).summernote('insertImage', result.url);
  176. } else {
  177. $.modal.alertError(result.msg);
  178. }
  179. },
  180. error: function (error) {
  181. $.modal.alertWarning("图片上传失败。");
  182. }
  183. });
  184. }
  185. }
  186. });
  187. });
  188. </script>
  189. </body>
  190. </html>