userInfo.html 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  6. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  7. <title>人员信息</title>
  8. <link rel="stylesheet" href="../../../assets/libs/layui/css/layui.css"/>
  9. <link rel="stylesheet" href="../../../assets/module/formSelects/formSelects-v4.css"/>
  10. <link rel="stylesheet" href="../../../assets/module/admin.css?v=312"/>
  11. </head>
  12. <body>
  13. <!-- 加载动画 -->
  14. <div class="page-loading">
  15. <div class="ball-loader">
  16. <span></span><span></span><span></span><span></span>
  17. </div>
  18. </div>
  19. <!-- 正文开始 -->
  20. <div class="layui-fluid">
  21. <div class="layui-card">
  22. <div class="layui-card-body">
  23. <div class="layui-card-header">人员信息
  24. <div class="layui-inline pull-right">
  25. <button onclick="history.back()" class="layui-btn layui-btn-sm layui-btn-radius layui-btn-normal">
  26. <i class="layui-icon">&#xe65c;</i>返回
  27. </button>
  28. </div>
  29. </div>
  30. <div class="layui-card-body">
  31. <form class="layui-form" lay-filter="layuiForm" id="addForm"
  32. style="max-width: 800px;margin: 40px auto;">
  33. <input type="hidden" name="userId" id="userId"/>
  34. <input type="hidden" name="aId" id="aId"/>
  35. <div class="layui-form-item">
  36. <div class="layui-inline">
  37. <label class="layui-form-label w-width150">姓名:</label>
  38. <div class="layui-input-block w-m180">
  39. <input name="sys_account_real_name" id="sys_account_real_name" type="text"
  40. placeholder="姓名"
  41. class="layui-input" readonly style="width: 200px;">
  42. </div>
  43. </div>
  44. <div class="layui-inline">
  45. <div class="layui-form-item">
  46. <label class="layui-form-label w-width150"><span
  47. class="layui-badge-dot"></span>入职时间:</label>
  48. <div class="layui-input-block w-m180">
  49. <input name="positionInTime" id="positionInTime" type="text" placeholder="入职时间"
  50. class="layui-input date-icon" readonly="readonly"
  51. lay-verType="tips" lay-verify="required" style="width: 200px;">
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. <div class="layui-form-item">
  57. <div class="layui-inline">
  58. <label class="layui-form-label w-width150"><span
  59. class="layui-badge-dot"></span>身份证号:</label>
  60. <div class="layui-input-block w-m180">
  61. <input name="idCard" id="idCard" type="text" placeholder="身份证号" class="layui-input"
  62. lay-verType="tips" lay-verify="required|uniques" maxlength="18"
  63. style="width: 200px;">
  64. </div>
  65. </div>
  66. <div class="layui-inline">
  67. <div class="layui-form-item">
  68. <label class="layui-form-label w-width150"><span
  69. class="layui-badge-dot"></span>学历:</label>
  70. <div class="layui-input-block w-m180">
  71. <input name="education" id="education" type="text" placeholder="学历"
  72. class="layui-input"
  73. lay-verType="tips" lay-verify="required|uniques" maxlength="36"
  74. style="width: 200px;">
  75. </div>
  76. </div>
  77. </div>
  78. </div>
  79. <div class="layui-form-item">
  80. <div class="layui-inline">
  81. <label class="layui-form-label w-width150"><span class="layui-badge-dot"></span>职务:</label>
  82. <div class="layui-input-block w-m180">
  83. <input name="position" id="position" type="text" placeholder="职务" class="layui-input"
  84. lay-verType="tips" lay-verify="required|uniques" maxlength="36"
  85. style="width: 200px;">
  86. </div>
  87. </div>
  88. <div class="layui-inline">
  89. <div class="layui-form-item">
  90. <label class="layui-form-label w-width150"><span
  91. class="layui-badge-dot"></span>联系方式:</label>
  92. <div class="layui-input-block w-m180">
  93. <input name="contactTel" id="contactTel" type="text" placeholder="联系方式"
  94. class="layui-input"
  95. lay-verType="tips" lay-verify="required|accountTel" maxlength="11"
  96. style="width: 200px;">
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. <div class="layui-form-item">
  102. <label class="layui-form-label w-width150">联系住址:</label>
  103. <div class="layui-input-block">
  104. <input name="address" id="address" type="text" placeholder="联系住址" class="layui-input"
  105. maxlength="255" style="width: 595px;">
  106. </div>
  107. </div>
  108. <div class="layui-form-item">
  109. <div class="layui-input-block w-m180">
  110. <button class="layui-btn" lay-filter="formSubmitBtn" lay-submit id="submitBtn">&emsp;提交&emsp;</button>
  111. <button type="button" class="layui-btn layui-btn-primary" onclick="history.back();">&emsp;取消&emsp;</button>
  112. </div>
  113. </div>
  114. </form>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. <!-- 证书管理 -->
  120. <div class="layui-fluid" style="margin-top: -20px;">
  121. <div class="layui-card">
  122. <div class="layui-card-body">
  123. <div class="layui-card-header">人员证书管理
  124. <!-- <div class="layui-inline pull-right">-->
  125. <!-- <button onclick="history.back()" class="layui-btn layui-btn-sm layui-btn-radius layui-btn-normal">-->
  126. <!-- <i class="layui-icon">&#xe65c;</i>返回-->
  127. <!-- </button>-->
  128. <!-- </div>-->
  129. </div>
  130. <div class="layui-card-body">
  131. <div class="layui-form toolbar">
  132. <div class="layui-form-item text-right">
  133. <div class="layui-inline">
  134. <button id="showAddDiplomaWin" class="layui-btn icon-btn">添加证书</button>
  135. </div>
  136. </div>
  137. </div>
  138. <table class="layui-table" id="diplomaTable" lay-filter="diplomaTable"></table>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. <!-- 添加证书 -->
  144. <script type="text/html" id="addDiplomaWin">
  145. <form class="layui-form" lay-filter="addDiplomaForm" id="addDiplomaForm"
  146. style="max-width: 800px;margin: 40px auto;">
  147. <input type="hidden" name="diplomaId" id="diplomaId"/>
  148. <input type="hidden" name="userId"/>
  149. <input type="hidden" name="diplomaImg" id="diplomaImg">
  150. <div class="layui-form-item">
  151. <div class="layui-inline">
  152. <label class="layui-form-label w-width150">证书/文凭等级:</label>
  153. <div class="layui-input-block w-m180">
  154. <input name="diplomaLevel" id="diplomaLevel" type="text" placeholder="证书/文凭等级"
  155. class="layui-input" style="width: 200px;" maxlength="50">
  156. </div>
  157. </div>
  158. <div class="layui-inline">
  159. <div class="layui-form-item">
  160. <label class="layui-form-label w-width150"><span class="layui-badge-dot"></span>类型:</label>
  161. <div class="layui-input-block w-m180">
  162. <input name="diplomaType" id="diplomaType" type="text" placeholder="类型" class="layui-input"
  163. lay-verType="tips" lay-verify="required" maxlength="50" style="width: 200px;">
  164. </div>
  165. </div>
  166. </div>
  167. </div>
  168. <div class="layui-form-item">
  169. <div class="layui-inline">
  170. <label class="layui-form-label w-width150"><span class="layui-badge-dot"></span>取证时间:</label>
  171. <div class="layui-input-block w-m180">
  172. <input name="diplomaGetTime" id="diplomaGetTime" type="text" placeholder="取证时间"
  173. class="layui-input date-icon" readonly
  174. lay-verType="tips" lay-verify="required" style="width: 200px;">
  175. </div>
  176. </div>
  177. <div class="layui-inline">
  178. <div class="layui-form-item">
  179. <label class="layui-form-label w-width150">有效期:</label>
  180. <div class="layui-input-block w-m180">
  181. <input name="validityPeriod" id="validityPeriod" type="text" placeholder="有效期"
  182. class="layui-input date-icon" style="width: 200px;"
  183. >
  184. </div>
  185. </div>
  186. </div>
  187. </div>
  188. <div class="layui-form-item">
  189. <div class="layui-inline">
  190. <label class="layui-form-label w-width150"><span class="layui-badge-dot"></span>发证单位:</label>
  191. <div class="layui-input-block w-m180">
  192. <input name="issuingUnit" id="issuingUnit" type="text" placeholder="发证单位" class="layui-input"
  193. lay-verType="tips" lay-verify="required" maxlength="50" style="width: 200px;">
  194. </div>
  195. </div>
  196. <div class="layui-inline">
  197. <div class="layui-form-item">
  198. <label class="layui-form-label w-width150"><span class="layui-badge-dot"></span>证件号码:</label>
  199. <div class="layui-input-block w-m180">
  200. <input name="diplomaCode" id="diplomaCode" type="text" placeholder="证件号码" class="layui-input"
  201. lay-verType="tips" lay-verify="required" maxlength="50" style="width: 200px;">
  202. </div>
  203. </div>
  204. </div>
  205. </div>
  206. <div class="layui-form-item">
  207. <label class="layui-form-label w-width150">证书照片:</label>
  208. <div class="layui-input-block">
  209. <button type="button" class="layui-btn" id="imgUploader">
  210. <i class="layui-icon">&#xe67c;</i>上传证书照片
  211. </button>
  212. <img src="" style="width: 100px;height: 100px;margin-left: 20px;display: none;"
  213. id="diplomaImgShow" onclick="//showImg(this);">
  214. </div>
  215. </div>
  216. <div class="layui-form-item">
  217. <label class="layui-form-label w-width150">备注:</label>
  218. <div class="layui-input-block">
  219. <textarea name="remarks" id="remarks" placeholder="备注" class="layui-input" height="50"
  220. maxlength="255" style="width: 595px;"></textarea>
  221. </div>
  222. </div>
  223. <div class="layui-form-item" id="diplomaOptBtns">
  224. <div class="layui-input-block w-m180 pull-right" style="margin-right: 25px;">
  225. <button class="layui-btn" lay-filter="addDiplomaBtn" lay-submit id="addDiplomaBtn" disabled>&emsp;提交&emsp;</button>
  226. <button type="button" class="layui-btn layui-btn-primary" onclick="layer.closeAll();">&emsp;取消&emsp;
  227. </button>
  228. </div>
  229. </div>
  230. </form>
  231. </script>
  232. <!-- 表格操作列 -->
  233. <script type="text/html" id="optionTpl">
  234. <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
  235. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
  236. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="detail">详情</a>
  237. </script>
  238. <!-- js部分 -->
  239. <script type="text/javascript" src="../../../assets/libs/layui/layui.js"></script>
  240. <script type="text/javascript" src="../../../assets/js/common.js?v=312"></script>
  241. <script type="text/javascript" src="../../../assets/module/tableSelect/tableSelect.js"></script>
  242. <script>
  243. layui.use(['layer', 'form', 'table', 'util', 'admin', 'uParas', 'laydate', 'upload'], function () {
  244. var $ = layui.jquery;
  245. var layer = layui.layer;
  246. var form = layui.form;
  247. var util = layui.util;
  248. var admin = layui.admin;
  249. var uParas = layui.uParas;
  250. var laydate = layui.laydate;
  251. var table = layui.table;
  252. var upload = layui.upload;
  253. var aId = uParas.getUrlParam('aId');
  254. laydate.render({
  255. elem: '#positionInTime',
  256. format: 'yyyy-MM-dd'
  257. });
  258. // 初始化人员信息
  259. admin.req(uParas.baseUrl + '/ent/userInfo/get?aId=' + aId, null, function (resp) {
  260. var index = layer.load();
  261. if (resp && resp.data) {
  262. var data = resp.data;
  263. var userId = data.userId;
  264. if (userId) {
  265. form.val('layuiForm', data);
  266. } else {
  267. $('#contactTel').val(data.sysAccountTel);
  268. $('#idCard').val(data.sysAccountIdcard);
  269. $('#address').val(data.sysAccountAddr);
  270. }
  271. $('#sys_account_real_name').val(data.sysAccountRealName);
  272. $('#aId').val(aId);
  273. }
  274. layer.close(index);
  275. });
  276. // 人员信息表单验证
  277. form.verify({
  278. accountTel: function (value) {
  279. if (value.length <= 0) {
  280. return "手机号码不能为空!"
  281. }
  282. var reg = /^1\d{10}$/;
  283. if (!reg.test(value)) {
  284. return "请输入正确的手机号码";
  285. }
  286. var url = uParas.baseUrl + "/gent/company/telExists?accountTel=" + value + '&aId=' + aId;
  287. if (isExists(value, url)) {
  288. return '手机号已存在,请更换手机号!';
  289. }
  290. }
  291. });
  292. // 判断账号或者手机号码是否存在
  293. function isExists(value, url) {
  294. var index = layer.load();
  295. var result;
  296. $.ajax({
  297. url: url,
  298. type: 'get',
  299. async: false,
  300. success: function (resp) {
  301. if (resp.code == 1) {
  302. result = true;
  303. } else {
  304. result = false;
  305. }
  306. }
  307. });
  308. layer.close(index);
  309. return result;
  310. }
  311. // 监听表单提交
  312. form.on('submit(formSubmitBtn)', function (data) {
  313. var index = layer.load();
  314. admin.req(uParas.baseUrl + '/ent/userInfo/save', data.field, function (resp) {
  315. layer.close(index);
  316. if (resp.code == 1) {
  317. layer.msg(resp.msg);
  318. // location.href = "./index.html";
  319. } else {
  320. layer.msg(resp.msg)
  321. }
  322. }, 'POST');
  323. return false;
  324. });
  325. // 初始化证书table
  326. var diplomaTb;
  327. function initDiplomaTable() {
  328. diplomaTb = table.render({
  329. elem: '#diplomaTable',
  330. url: uParas.baseUrl + '/ent/userDip/list?userId=' + aId,
  331. page: true,
  332. cellMinWidth: 50,
  333. cols: [[
  334. {type: 'numbers', title: '序号'},
  335. {
  336. field: 'diplomaImg', sort: false, title: '证书照片', align: 'center',
  337. templet: function (data) {
  338. return '<img src="' + data.diplomaImg + '" style="width:100px;height100px;cursor: pointer;" ' +
  339. 'lay-event="showImg"/>';
  340. }
  341. },
  342. {field: 'diplomaLevel', sort: false, title: '等级', align: 'center'},
  343. {field: 'diplomaType', sort: false, title: '类型', align: 'center'},
  344. {
  345. field: 'diplomaGetTime', sort: false, title: '取证时间', align: 'center',
  346. templet: '<div>{{ layui.util.toDateString(d.diplomaGetTime, "yyyy-MM-dd") }}</div>'
  347. },
  348. {
  349. field: 'validityPeriod', sort: false, title: '有效期', align: 'center',
  350. templet: '<div>{{ layui.util.toDateString(d.validityPeriod, "yyyy-MM-dd") }}</div>'
  351. },
  352. {field: 'issuingUnit', sort: false, title: '发证单位', align: 'center'},
  353. {field: 'diplomaCode', sort: false, title: '证件号', align: 'center'},
  354. // templet: '<div>{{ layui.util.toDateString(d.createdTime, "yyyy-MM-dd HH:mm:ss") }}</div>'
  355. {align: 'LEFT', title: '操作', width: 180, toolbar: '#optionTpl', fixed: 'right'}
  356. ]]
  357. })
  358. }
  359. initDiplomaTable();
  360. // 显示添加证书窗口
  361. $('#showAddDiplomaWin').on('click', function () {
  362. showDiplomaWin();
  363. });
  364. // 打开添加、修改证书窗口
  365. var optFlag = 1; // 1新增,2修改,3详情
  366. function showDiplomaWin(obj, flag) {
  367. var idx = layer.open({
  368. title: '添加证书',
  369. type: 1,
  370. content: $('#addDiplomaWin').html(),
  371. area: ['800px', '520px'],
  372. success: function (layero) {
  373. // 初始化相关信息
  374. laydate.render({
  375. elem: '#diplomaGetTime',
  376. format: 'yyyy-MM-dd'
  377. });
  378. laydate.render({
  379. elem: '#validityPeriod',
  380. format: 'yyyy-MM-dd'
  381. });
  382. initUploader();
  383. $('input[name="userId"]').val(aId);
  384. // 如果obj存在,则查询该证书信息
  385. if (obj) {
  386. var idx1 = layer.load();
  387. var url = uParas.baseUrl + '/ent/userDip/get?diplomaId=' + obj.data.diplomaId;
  388. admin.req(url, null, function (resp) {
  389. if (resp && resp.data) {
  390. form.val('addDiplomaForm', resp.data);
  391. $('#diplomaImgShow').prop('src', resp.data.diplomaImg).css('display', '');
  392. $('#addDiplomaBtn').prop('disabled', false);
  393. $('#imgUploader').css('margin-top', '-50px');
  394. layer.close(idx1);
  395. if (flag == 2) {
  396. optFlag = 2;
  397. } else {
  398. optFlag = 3;
  399. $('#addDiplomaForm :input').prop('disabled', true);
  400. $('#imgUploader').css('display', 'none');
  401. $('#diplomaOptBtns').css('display', 'none');
  402. }
  403. // console.info('optFlag=' + optFlag);
  404. }
  405. });
  406. } else {
  407. optFlag = 1;
  408. // console.info('optFlag=' + optFlag);
  409. }
  410. }
  411. });
  412. }
  413. // 初始化上传组件
  414. function initUploader() {
  415. upload.render({
  416. elem: '#imgUploader',
  417. url: uParas.baseUrl + '/admin/uploadFile',
  418. accept: 'image',
  419. // exts: 'apk',
  420. // progress: function(n) {
  421. // var percent = n + '%'; // 获取进度百分比
  422. // element.progress('upoloadProgress', percent); // 可配合 layui 进度条元素使用,依赖element
  423. // },
  424. done: function (resp) {
  425. if (resp.data.path) {
  426. layer.msg('上传成功!');
  427. $('#diplomaImg').val(resp.data.path);
  428. $('#addDiplomaBtn').prop('disabled', false);
  429. $('#imgUploader').css('margin-top', '-50px');
  430. $('#diplomaImgShow').prop('src', resp.data.path).css('display', '');
  431. }
  432. },
  433. error: function () {
  434. layer.msg('上传失败!');
  435. }
  436. });
  437. }
  438. // 工具栏事件
  439. table.on('tool(diplomaTable)', function (obj) {
  440. var data = obj.data;
  441. var layEvent = obj.event;
  442. if (layEvent == 'del') {
  443. del(obj);
  444. } else if (layEvent == 'edit') {
  445. showDiplomaWin(obj, 2);
  446. } else if (layEvent == 'detail') {
  447. showDiplomaWin(obj, 3);
  448. } else if (layEvent == 'showImg') {
  449. var image = new Image();
  450. image.src = data.diplomaImg;
  451. image.onload = function () {
  452. var width = image.width;
  453. var height = image.height;
  454. $(image).attr('onclick', 'layer.closeAll()');
  455. $(image).prop('width', width);
  456. $(image).prop('height', height);
  457. var div = document.createElement('div');
  458. div.append(image);
  459. var imageHtml = $(div).html();
  460. layer.open({
  461. title: '查看大图',
  462. type: 3,
  463. // scrollbar: true,
  464. area: [image.width + 'px', image.height + 'px'],
  465. content: imageHtml
  466. });
  467. }
  468. }
  469. });
  470. // 删除证书
  471. function del(obj) {
  472. var url = uParas.baseUrl + '/ent/userDip/del?diplomaId=' + obj.data.diplomaId;
  473. var idx = layer.confirm('确定删除该证书吗?', {
  474. btn: ['确定', '取消'],
  475. btn1: function (index, layero) {
  476. // layer.close(idx);
  477. layer.load();
  478. admin.req(url, null, function (resp) {
  479. if (resp) {
  480. layer.msg(resp.msg);
  481. if (resp.code == 1) {
  482. obj.del();
  483. }
  484. }
  485. layer.closeAll();
  486. }, 'post');
  487. },
  488. // btn2: function(index, layero) {
  489. //
  490. // }
  491. });
  492. }
  493. // 保存证书
  494. form.on('submit(addDiplomaBtn)', function (data) {
  495. var idx = layer.load();
  496. var url;
  497. if (optFlag == 1) {
  498. url = uParas.baseUrl + '/ent/userDip/save';
  499. } else if (optFlag == 2) {
  500. url = uParas.baseUrl + '/ent/userDip/update';
  501. } else {
  502. return false;
  503. }
  504. admin.req(url, data.field, function (resp) {
  505. if (resp.code == 1) {
  506. layer.msg(resp.msg);
  507. diplomaTb.reload({where: {userId: aId}});
  508. layer.closeAll();
  509. } else {
  510. layer.msg(resp.msg)
  511. }
  512. layer.close(idx);
  513. }, 'POST');
  514. return false;
  515. });
  516. // 拼接json字符串
  517. function toJsonStr() {
  518. var jsonStr = '[';
  519. var result = [];
  520. var aIds = $('#aIds').val().split(',');
  521. var users = $('#users').val().split(',');
  522. for (var i = 0; i < aIds.length; ++i) {
  523. result.push("{\"id\":\"" + aIds[i] + "\",\"name\":\"" + users[i] + "\"}");
  524. }
  525. jsonStr += result.join(',') + ']';
  526. $('#entUsers').val(jsonStr);
  527. }
  528. });
  529. </script>
  530. </body>
  531. </html>