add.html 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  6. <title>添加人员</title>
  7. <link rel="stylesheet" th:href="@{/lib/layui/css/layui.css}" media="all">
  8. <link rel="stylesheet" th:href="@{/css/public.css}" media="all">
  9. <link rel="stylesheet" th:href="@{/lib/font-awesome-4.7.0/css/font-awesome.min.css}" media="all">
  10. <style>
  11. body {
  12. background-color: #ffffff;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <form class="layui-form" action="" lay-filter="formDemo">
  18. <div class="layui-form layuimini-form">
  19. <div class="layui-form-item layui-inline" style="width: 100%">
  20. <label class="layui-form-label required" style="width: 80px">姓名</label>
  21. <div class="layui-input-inline" style="width: 250px">
  22. <input type="text" id="name" name="name" lay-verify="required" lay-reqtext="姓名不能为空" autocomplete="off" class="layui-input">
  23. </div>
  24. <label class="layui-form-label" style="width: 30px">性别</label>
  25. <div class="layui-input-inline" style="width: 130px">
  26. <select name="xb" id="xb">
  27. <option value="男">男</option>
  28. <option value="女">女</option>
  29. </select>
  30. </div>
  31. <label class="layui-form-label required" style="width: 80px">身份证号</label>
  32. <div class="layui-input-inline" style="width: 250px">
  33. <input type="text" id="sfzh" name="sfzh" lay-verify="required" lay-reqtext="身份证号不能为空" autocomplete="off" class="layui-input">
  34. </div>
  35. <label class="layui-form-label required" style="width: 80px">薪资</label>
  36. <div class="layui-input-inline" style="width: 250px">
  37. <input type="text" id="ygzed" name="ygzed" lay-verify="required" lay-reqtext="薪资不能为空" autocomplete="off" class="layui-input">
  38. </div>
  39. </div>
  40. <label class="layui-form-label" style="width: 80px">电话</label>
  41. <div class="layui-input-inline" style="width: 260px">
  42. <input type="text" id="phone" name="phone" maxlength="12" autocomplete="off" class="layui-input">
  43. </div>
  44. </div>
  45. <div class="layui-form-item layui-inline" style="width: 100%">
  46. <label class="layui-form-label" style="width: 80px">毕业学校</label>
  47. <div class="layui-input-inline" style="width: 250px">
  48. <input type="hidden" id="byxx" name="byxy" class="layui-input">
  49. <input type="text" id="byxxmc" name="byxxmc" class="layui-input">
  50. </div>
  51. <label class="layui-form-label" style="width: 80px">专业</label>
  52. <div class="layui-input-inline" style="width: 180px">
  53. <input type="text" id="zy" name="zy" class="layui-input">
  54. </div>
  55. <label class="layui-form-label " style="width: 70px">学历</label>
  56. <div class="layui-input-inline" style="width: 180px">
  57. <select name="xl" id="xl" >
  58. <option value="">请选择</option>
  59. <option th:each="item:${xlList}" th:text="${item.name}" th:value="${item.code}"></option>
  60. </select>
  61. </div>
  62. </div>
  63. <div>
  64. <label class="layui-form-label" style="width: 80px">工作内容</label>
  65. <div class="layui-input-inline" style="width: 250px;height: 80px">
  66. <input type="text" id="gznr" name="gznr" class="layui-input">
  67. </div>
  68. </div>
  69. <!-- 右侧悬浮按钮 -->
  70. <div class="right-bottom-btn">
  71. <button class="layui-btn" lay-submit lay-filter="saveBtn">
  72. <i class="layui-icon layui-icon-ok"></i>保存
  73. </button>
  74. <button class="layui-btn" lay-filter="cancleBtn">
  75. <i class="layui-icon layui-icon-close"></i>取消
  76. </button>
  77. </div>
  78. </div>
  79. </form>
  80. <script th:src="@{/lib/jquery-3.4.1/jquery-3.4.1.min.js}" charset="utf-8"></script>
  81. <script th:src="@{/lib/layui/layui.js}" charset="utf-8"></script>
  82. <script th:src="@{/lib/coco-message/coco-message.js}" charset="utf-8"></script>
  83. <script th:src="@{/js/lay-config.js}" charset="utf-8"></script>
  84. <script type="text/javascript" th:inline="javascript">
  85. AjaxUtil.ctx = /*[[@{/}]]*/'';
  86. layui.use(['form', 'layer', 'table', 'tableSelect', 'layCascader'], function () {
  87. var form = layui.form,
  88. tableSelect = layui.tableSelect,
  89. layer = layui.layer,
  90. layCascader = layui.layCascader,
  91. laydate = layui.laydate;
  92. //日期
  93. laydate.render({
  94. elem: '#csrq'
  95. });
  96. // laydate.render({
  97. // elem: '#bysj'
  98. // });
  99. laydate.render({
  100. elem: '#bysj',
  101. value: '2023-08-30',
  102. isInitValue: true
  103. });
  104. //毕业学校
  105. var index3 = layer.load(0, {shade: 0.1});
  106. AjaxUtil.get({
  107. url: AjaxUtil.ctx + 'baseSchool/list',
  108. success: function (res) {
  109. layer.close(index3);
  110. var datalist = [];
  111. for (let item of res.data) {
  112. item.value = item.id;
  113. item.label = item.name;
  114. datalist.push(item);
  115. }
  116. // 扁平数据转树
  117. var options = arrayToTree(datalist, "0");
  118. // 初始化cascader实例
  119. cascader = layCascader({
  120. elem: '#byxxmc',
  121. clearable: true,
  122. props: {
  123. checkStrictly: false // 配置选择任意一级选项
  124. },
  125. options: options
  126. });
  127. // 监听cascader变化
  128. cascader.changeEvent(function (value, node) {
  129. $("#byxx").val(value);
  130. $("#byxxmc").val(node.data.label);
  131. // 主动关闭面板
  132. cascader.close();
  133. });
  134. },
  135. error: function (error) {
  136. layer.close(index3);
  137. Message.error('获取学校信息失败!', 1000);
  138. }
  139. });
  140. //监听专业专长
  141. form.on('select(zyzc)', function (data) {
  142. let text = data.elem.selectedOptions[0].text;
  143. $("#zyzc").val(text);
  144. });
  145. //监听提交
  146. form.on('submit(saveBtn)', function (data) {
  147. var loading = layer.load(0, {shade: 0.1}); //0代表加载的风格,支持0-2
  148. AjaxUtil.post({
  149. url: AjaxUtil.ctx + "lsUser/save",
  150. data: data.field,
  151. success: function (res) {
  152. if (res.code === 0) {
  153. layer.close(loading);
  154. Message.success(1500, res.message, function () {
  155. parent.setUpdateFlag();
  156. // 重载表格
  157. var iframeIndex = parent.layer.getFrameIndex(window.name);
  158. parent.layer.close(iframeIndex);
  159. });
  160. } else {
  161. layer.close(loading);
  162. Message.error(res.message, 2000);
  163. }
  164. },
  165. error: function (error) {
  166. }
  167. });
  168. return false;
  169. });
  170. // 监听取消按钮
  171. $("button[lay-filter='cancleBtn']").click(function () {
  172. var iframeIndex = parent.layer.getFrameIndex(window.name);
  173. parent.layer.close(iframeIndex);
  174. });
  175. });
  176. /**
  177. * 扁平数据转树结构
  178. * @returns {[]}
  179. * @param data
  180. * @param firstPid
  181. */
  182. function arrayToTree(data, firstPid) {
  183. const result = [];
  184. getChildren(data, result, firstPid);
  185. return result;
  186. }
  187. function arrayToTree1(data, firstPid) {
  188. const result = [];
  189. getChildren1(data, result, firstPid);
  190. return result;
  191. }
  192. function getChildren(data, result, parentId) {
  193. for (const item of data) {
  194. if (item.pid.toString() === parentId) {
  195. const newItem = {...item, children: []};
  196. result.push(newItem);
  197. getChildren(data, newItem.children, item.id.toString());
  198. }
  199. }
  200. }
  201. function getChildren1(data, result, parentId) {
  202. for (const item of data) {
  203. if (item.parentId === parentId) {
  204. const newItem = {...item, children: []};
  205. result.push(newItem);
  206. getChildren1(data, newItem.children, item.deptId);
  207. }
  208. }
  209. }
  210. </script>
  211. </body>
  212. </html>