add.html 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <!DOCTYPE html>
  2. <html xmlns:th="http://www.thymeleaf.org">
  3. <head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
  4. <body>
  5. <div class="layui-form timo-compile">
  6. <form th:action="@{/api/app/config/app}">
  7. <div class="timo-detail-title">基础配置</div>
  8. <table class="layui-table timo-detail-table">
  9. <tbody>
  10. <tr>
  11. <th>
  12. <label class="layui-form-label required">应用 ID<i id="id_tips" class="fa fa-question-circle"></i></label>
  13. </th>
  14. <td>
  15. <div class="layui-form-item">
  16. <div class="layui-input-inline">
  17. <label>
  18. <input class="layui-input" type="text" name="appId" placeholder="请输入应用 ID" required>
  19. </label>
  20. </div>
  21. </div>
  22. </td>
  23. <th>
  24. <label class="layui-form-label required">应用名</label>
  25. </th>
  26. <td >
  27. <div class="layui-form-item">
  28. <div class="layui-input-inline">
  29. <input class="layui-input" type="text" name="appName" placeholder="请输入应用名" required>
  30. </div>
  31. </div>
  32. </td>
  33. </tr>
  34. <tr>
  35. <th>
  36. <label class="layui-form-label required">应用类型</label>
  37. </th>
  38. <td>
  39. <div class="layui-form-item">
  40. <div class="layui-input-inline">
  41. <select name="appType">
  42. <option th:each="item : ${appTypes}" th:value="${item.key}">[[${item.value}]]</option>
  43. </select>
  44. </div>
  45. </div>
  46. </td>
  47. <th>
  48. <label class="layui-form-label required">所属环境</label>
  49. </th>
  50. <td>
  51. <div class="layui-form-item">
  52. <div class="layui-input-inline">
  53. <select name="env">
  54. <option th:each="item : ${environments}" th:value="${item.key}">[[${item.value}]]</option>
  55. </select>
  56. </div>
  57. </div>
  58. </td>
  59. </tr>
  60. <tr>
  61. <th>
  62. <label class="layui-form-label required">应用仓库</label>
  63. </th>
  64. <td>
  65. <div class="layui-form-item">
  66. <div class="layui-input-inline">
  67. <input class="layui-input" type="text" name="appRepo" placeholder="请输入应用仓库" required>
  68. </div>
  69. </div>
  70. </td>
  71. <th>
  72. <label class="layui-form-label required">仓库分支</label>
  73. </th>
  74. <td>
  75. <div class="layui-form-item">
  76. <div class="layui-input-inline">
  77. <input class="layui-input" type="text" name="repoBranch" placeholder="请输入仓库分支" required>
  78. </div>
  79. </div>
  80. </td>
  81. </tr>
  82. <tr>
  83. <th>
  84. <label class="layui-form-label">应用路径<i id="path_tips" class="fa fa-question-circle"></i></label>
  85. </th>
  86. <td>
  87. <div class="layui-form-item">
  88. <div class="layui-input-inline">
  89. <input class="layui-input" type="text" name="appRootPath" placeholder="多模块项目必须填写" required>
  90. </div>
  91. </div>
  92. </td>
  93. <th>
  94. <label class="layui-form-label">监听端口<i id="port_tips" class="fa fa-question-circle"></i></label>
  95. </th>
  96. <td>
  97. <div class="layui-form-item">
  98. <div class="layui-input-inline">
  99. <input class="layui-input" type="text" name="bindPorts" placeholder="没有监听端口则不填">
  100. </div>
  101. </div>
  102. </td>
  103. </tr>
  104. </tbody>
  105. </table>
  106. <div class="timo-detail-title">构建配置</div>
  107. <table class="layui-table timo-detail-table">
  108. <tbody>
  109. <tr>
  110. <th>
  111. <label class="layui-form-label required">仓库认证</label>
  112. </th>
  113. <td>
  114. <div class="layui-form-item">
  115. <div class="layui-input-inline">
  116. <select name="repoAuthConfig">
  117. <option th:each="item : ${repoAuths}" th:value="${item.key}" th:selected="${app?.repoAuthConfig?.name} eq ${item.key}">[[${item.value}]]</option>
  118. </select>
  119. </div>
  120. </div>
  121. </td>
  122. <th>
  123. <label class="layui-form-label required">编译工具</label>
  124. </th>
  125. <td>
  126. <div class="layui-form-item">
  127. <div class="layui-input-inline">
  128. <select name="compilerConfig">
  129. <option th:each="item : ${compilers}" th:value="${item.key}" th:selected="${app?.compilerConfig?.name} eq ${item.key}">[[${item.value}]]</option>
  130. </select>
  131. </div>
  132. </div>
  133. </td>
  134. </tr>
  135. <tr>
  136. <th>
  137. <label class="layui-form-label required">打包工具</label>
  138. </th>
  139. <td>
  140. <div class="layui-form-item">
  141. <div class="layui-input-inline">
  142. <select name="packerConfig">
  143. <option th:each="item : ${packers}" th:value="${item.key}" th:selected="${app?.packerConfig?.name} eq ${item.key}">[[${item.value}]]</option>
  144. </select>
  145. </div>
  146. </div>
  147. </td>
  148. <th>
  149. <label class="layui-form-label">Dockerfile<i id="dockerfile_tips" class="fa fa-question-circle"></i></label>
  150. </th>
  151. <td>
  152. <div class="layui-form-item">
  153. <div class="layui-input-inline">
  154. <textarea class="layui-textarea" name="dockerfile" placeholder="打包类型是 docker 时必须填写" th:text="${app?.dockerfile}"></textarea>
  155. </div>
  156. </div>
  157. </td>
  158. </tr>
  159. </tbody>
  160. </table>
  161. <div class="layui-form-item timo-finally">
  162. <button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
  163. <button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
  164. </div>
  165. </form>
  166. </div>
  167. <script th:replace="/common/template :: script"></script>
  168. <script type="text/javascript" th:src="@{/js/plugins/jquery-2.2.4.min.js}"></script>
  169. <script type="text/javascript">
  170. $(function () {
  171. $("#id_tips").hover(function () {
  172. var tips = layer.tips('应用 ID 由用户自己定义, 且保证全局唯一<br />', '#id_tips',{
  173. tips: [1, '#555555']
  174. });
  175. sleep(1000);
  176. layer.close(tips);
  177. })
  178. $("#path_tips").hover(function () {
  179. var tips = layer.tips('多模块项目必须设置当前模块在项目中的相对路径<br/>', '#path_tips',{
  180. tips: [1, '#555555']
  181. });
  182. sleep(1000);
  183. layer.close(tips);
  184. })
  185. $("#port_tips").hover(function () {
  186. var tips = layer.tips('应用监听的端口, 多个端口使用英文 , 分隔, 没有端口则不需要填写<br />', '#port_tips',{
  187. tips: [1, '#555555']
  188. });
  189. sleep(1000);
  190. layer.close(tips);
  191. })
  192. $("#dockerfile_tips").hover(function () {
  193. var tips = layer.tips('采用 docker 打包的应用必须填写 dockerfile 的内容<br />', '#dockerfile_tips',{
  194. tips: [1, '#555555']
  195. });
  196. sleep(1000);
  197. layer.close(tips);
  198. })
  199. })
  200. </script>
  201. </body>
  202. </html>