personCheck.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  1. <!DOCTYPE html>
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
  3. <head>
  4. <th:block th:include="include :: header('区县校核工作台(教职人员)')" />
  5. </head>
  6. <body class="gray-bg">
  7. <div class="container-div">
  8. <div class="row">
  9. <div class="col-sm-12 search-collapse">
  10. <form id="formId">
  11. <div class="select-list">
  12. <ul>
  13. <li>
  14. <label>宗教类别:</label>
  15. <select name="religionType" th:with="type=${@dict.getType('religion_type')}">
  16. <option value="">所有</option>
  17. <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
  18. </select>
  19. </li>
  20. <li>
  21. <label>所属场所:</label>
  22. <select id="placeId" name="placeId" class="form-control">
  23. <option value="">所有场所</option>
  24. <option th:each="place : ${placeList}" th:value="${place.placeId}" th:text="${place.placeName}"></option>
  25. </select>
  26. </li>
  27. <li>
  28. <label>姓名:</label>
  29. <input type="text" name="name" placeholder="请输入姓名"/>
  30. </li>
  31. <li>
  32. <label>身份证号:</label>
  33. <input type="text" name="idNumber" placeholder="请输入身份证号"/>
  34. </li>
  35. <li>
  36. <label>状态:</label>
  37. <select name="status">
  38. <option value="TO_CHECK" selected>待校核</option>
  39. <option value="CHECKED">已校核待上报</option>
  40. </select>
  41. </li>
  42. <li>
  43. <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
  44. <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
  45. </li>
  46. </ul>
  47. </div>
  48. </form>
  49. </div>
  50. <div class="btn-group-sm" id="toolbar" role="group">
  51. <a class="btn btn-success multiple disabled" onclick="batchPass()" shiro:hasPermission="religion:religionPerson:check">
  52. <i class="fa fa-check"></i> 批量通过校核
  53. </a>
  54. </div>
  55. <div class="col-sm-12 select-table table-striped">
  56. <table id="bootstrap-table"></table>
  57. </div>
  58. </div>
  59. </div>
  60. <!-- 单条校核弹框 -->
  61. <div class="modal fade" id="checkModal" tabindex="-1" role="dialog" aria-hidden="true">
  62. <div class="modal-dialog" style="width: 900px;">
  63. <div class="modal-content">
  64. <div class="modal-header">
  65. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  66. <h4 class="modal-title">教职人员校核</h4>
  67. </div>
  68. <div class="modal-body" style="max-height: 600px; overflow-y: auto;">
  69. <!-- 人员详情 -->
  70. <div class="panel panel-info">
  71. <div class="panel-heading">
  72. <h3 class="panel-title"><i class="fa fa-user"></i> 人员详情</h3>
  73. </div>
  74. <div class="panel-body">
  75. <form class="form-horizontal">
  76. <div class="row">
  77. <div class="col-sm-6">
  78. <div class="form-group">
  79. <label class="col-sm-5 control-label text-right">姓名:</label>
  80. <div class="col-sm-7">
  81. <p class="form-control-static" id="detail_name"></p>
  82. </div>
  83. </div>
  84. </div>
  85. <div class="col-sm-6">
  86. <div class="form-group">
  87. <label class="col-sm-5 control-label text-right">性别:</label>
  88. <div class="col-sm-7">
  89. <p class="form-control-static" id="detail_gender"></p>
  90. </div>
  91. </div>
  92. </div>
  93. </div>
  94. <div class="row">
  95. <div class="col-sm-6">
  96. <div class="form-group">
  97. <label class="col-sm-5 control-label text-right">民族:</label>
  98. <div class="col-sm-7">
  99. <p class="form-control-static" id="detail_nation"></p>
  100. </div>
  101. </div>
  102. </div>
  103. <div class="col-sm-6">
  104. <div class="form-group">
  105. <label class="col-sm-5 control-label text-right">宗教类别:</label>
  106. <div class="col-sm-7">
  107. <p class="form-control-static" id="detail_religionType"></p>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. <div class="row">
  113. <div class="col-sm-6">
  114. <div class="form-group">
  115. <label class="col-sm-5 control-label text-right">身份证号:</label>
  116. <div class="col-sm-7">
  117. <p class="form-control-static" id="detail_idNumber"></p>
  118. </div>
  119. </div>
  120. </div>
  121. <div class="col-sm-6">
  122. <!-- 空列,保持布局对称 -->
  123. </div>
  124. </div>
  125. <div class="row">
  126. <div class="col-sm-6">
  127. <div class="form-group">
  128. <label class="col-sm-5 control-label text-right">所属场所:</label>
  129. <div class="col-sm-7">
  130. <p class="form-control-static" id="detail_placeName"></p>
  131. </div>
  132. </div>
  133. </div>
  134. <div class="col-sm-6">
  135. <div class="form-group">
  136. <label class="col-sm-5 control-label text-right">所属区县:</label>
  137. <div class="col-sm-7">
  138. <p class="form-control-static" id="detail_county"></p>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. <div class="row">
  144. <div class="col-sm-6">
  145. <div class="form-group">
  146. <label class="col-sm-5 control-label text-right">政治面貌:</label>
  147. <div class="col-sm-7">
  148. <p class="form-control-static" id="detail_politicalStatus"></p>
  149. </div>
  150. </div>
  151. </div>
  152. <div class="col-sm-6">
  153. <div class="form-group">
  154. <label class="col-sm-5 control-label text-right">联系电话:</label>
  155. <div class="col-sm-7">
  156. <p class="form-control-static" id="detail_phone"></p>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. <div class="row">
  162. <div class="col-sm-6">
  163. <div class="form-group">
  164. <label class="col-sm-5 control-label text-right">国民教育学历:</label>
  165. <div class="col-sm-7">
  166. <p class="form-control-static" id="detail_eduNational"></p>
  167. </div>
  168. </div>
  169. </div>
  170. <div class="col-sm-6">
  171. <div class="form-group">
  172. <label class="col-sm-5 control-label text-right">宗教学历:</label>
  173. <div class="col-sm-7">
  174. <p class="form-control-static" id="detail_eduReligious"></p>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. <div class="row">
  180. <div class="col-sm-6">
  181. <div class="form-group">
  182. <label class="col-sm-5 control-label text-right">家庭地址:</label>
  183. <div class="col-sm-7">
  184. <p class="form-control-static" id="detail_address"></p>
  185. </div>
  186. </div>
  187. </div>
  188. <div class="col-sm-6">
  189. <!-- 空列,保持布局对称 -->
  190. </div>
  191. </div>
  192. <div class="row">
  193. <div class="col-sm-6">
  194. <div class="form-group">
  195. <label class="col-sm-5 control-label text-right">户籍所在地:</label>
  196. <div class="col-sm-7">
  197. <p class="form-control-static" id="detail_domicile"></p>
  198. </div>
  199. </div>
  200. </div>
  201. <div class="col-sm-6">
  202. <div class="form-group">
  203. <label class="col-sm-5 control-label text-right">籍贯:</label>
  204. <div class="col-sm-7">
  205. <p class="form-control-static" id="detail_nativePlace"></p>
  206. </div>
  207. </div>
  208. </div>
  209. </div>
  210. </form>
  211. </div>
  212. </div>
  213. <!-- 校核操作区 -->
  214. <div class="panel panel-warning">
  215. <div class="panel-heading">
  216. <h3 class="panel-title"><i class="fa fa-check-square-o"></i> 校核操作</h3>
  217. </div>
  218. <div class="panel-body">
  219. <form class="form-horizontal">
  220. <div class="row">
  221. <div class="col-sm-6">
  222. <div class="form-group">
  223. <label class="col-sm-5 control-label text-right">校核结果:</label>
  224. <div class="col-sm-7">
  225. <label class="radio-inline">
  226. <input type="radio" name="checkAction" value="PASS" checked> 通过
  227. </label>
  228. <label class="radio-inline">
  229. <input type="radio" name="checkAction" value="REJECT"> 驳回
  230. </label>
  231. </div>
  232. </div>
  233. </div>
  234. <div class="col-sm-6">
  235. <!-- 空列,保持布局对称 -->
  236. </div>
  237. </div>
  238. <div class="row">
  239. <div class="col-sm-12">
  240. <div class="form-group">
  241. <label class="col-sm-2 control-label text-right" style="padding-left: 15px;">校核意见:</label>
  242. <div class="col-sm-10">
  243. <textarea id="checkComment" class="form-control" rows="3" placeholder="请输入校核意见(驳回时必填)"></textarea>
  244. </div>
  245. </div>
  246. </div>
  247. </div>
  248. </form>
  249. </div>
  250. </div>
  251. </div>
  252. <div class="modal-footer">
  253. <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
  254. <button type="button" class="btn btn-primary" onclick="submitCheck()">提交</button>
  255. </div>
  256. </div>
  257. </div>
  258. </div>
  259. <th:block th:include="include :: footer" />
  260. <script th:inline="javascript">
  261. var prefix = ctx + "religion/person/check";
  262. var checkFlag = [[${@permission.hasPermi('religion:religionPerson:check')}]];
  263. var currentPersonId = null;
  264. $(function() {
  265. var options = {
  266. url: prefix + "/list",
  267. createUrl: prefix + "/add",
  268. updateUrl: prefix + "/edit/{id}",
  269. removeUrl: prefix + "/remove",
  270. exportUrl: prefix + "/export",
  271. modalName: "教职人员",
  272. uniqueId: "personId",
  273. showColumns: true,
  274. showRefresh: true,
  275. showToggle: true,
  276. columns: [{
  277. checkbox: true
  278. },
  279. {
  280. field: 'personId',
  281. title: '人员ID',
  282. visible: false
  283. },
  284. {
  285. field: 'name',
  286. title: '姓名',
  287. sortable: true
  288. },
  289. {
  290. field: 'gender',
  291. title: '性别',
  292. sortable: true,
  293. visible: false
  294. },
  295. {
  296. field: 'nation',
  297. title: '民族',
  298. sortable: true,
  299. visible: false
  300. },
  301. {
  302. field: 'religionType',
  303. title: '宗教类别',
  304. sortable: true
  305. },
  306. {
  307. field: 'idNumber',
  308. title: '身份证号',
  309. sortable: true
  310. },
  311. {
  312. field: 'county',
  313. title: '所属区县',
  314. sortable: true
  315. },
  316. {
  317. field: 'placeName',
  318. title: '所属场所',
  319. sortable: true
  320. },
  321. {
  322. field: 'address',
  323. title: '家庭地址',
  324. visible: false
  325. },
  326. {
  327. field: 'politicalStatus',
  328. title: '政治面貌',
  329. visible: false
  330. },
  331. {
  332. field: 'eduNational',
  333. title: '国民教育学历',
  334. visible: false
  335. },
  336. {
  337. field: 'eduReligious',
  338. title: '宗教学历',
  339. visible: false
  340. },
  341. {
  342. field: 'joinTime',
  343. title: '入教时间',
  344. visible: false
  345. },
  346. {
  347. field: 'phone',
  348. title: '联系电话',
  349. visible: false
  350. },
  351. {
  352. field: 'domicile',
  353. title: '户籍所在地',
  354. visible: false
  355. },
  356. {
  357. field: 'nativePlace',
  358. title: '籍贯',
  359. visible: false
  360. },
  361. {
  362. field: 'status',
  363. title: '状态',
  364. sortable: true,
  365. formatter: function(value, row, index) {
  366. if (value == 'TO_CHECK') {
  367. return '<span class="badge badge-warning">待校核</span>';
  368. } else if (value == 'CHECKED') {
  369. return '<span class="badge badge-success">已校核待上报</span>';
  370. } else if (value == 'REPORTED') {
  371. return '<span class="badge badge-info">已上报</span>';
  372. }
  373. return value;
  374. }
  375. },
  376. {
  377. field: 'countyCheckBy',
  378. title: '校核人',
  379. sortable: true,
  380. visible: false
  381. },
  382. {
  383. field: 'countyCheckTime',
  384. title: '校核时间',
  385. sortable: true,
  386. visible: false
  387. },
  388. {
  389. title: '操作',
  390. align: 'center',
  391. formatter: function(value, row, index) {
  392. var actions = [];
  393. if (row.status == 'TO_CHECK') {
  394. actions.push('<a class="btn btn-primary btn-xs ' + checkFlag + '" href="javascript:void(0)" onclick="openCheckModal(\'' + row.personId + '\')"><i class="fa fa-check-square-o"></i>校核</a> ');
  395. }
  396. return actions.join('');
  397. }
  398. }]
  399. };
  400. $.table.init(options);
  401. });
  402. /* 打开校核弹框 */
  403. function openCheckModal(personId) {
  404. currentPersonId = personId;
  405. // 从表格中获取所有数据,查找对应的行
  406. var tableData = $("#bootstrap-table").bootstrapTable('getData');
  407. var row = null;
  408. for (var i = 0; i < tableData.length; i++) {
  409. if (tableData[i].personId == personId) {
  410. row = tableData[i];
  411. break;
  412. }
  413. }
  414. if (row) {
  415. // 填充详情
  416. $("#detail_name").text(row.name || '-');
  417. $("#detail_gender").text(row.gender || '-');
  418. $("#detail_nation").text(row.nation || '-');
  419. $("#detail_religionType").text(row.religionType || '-');
  420. $("#detail_idNumber").text(row.idNumber || '-');
  421. $("#detail_placeName").text(row.placeName || '-');
  422. $("#detail_county").text(row.county || '-');
  423. $("#detail_politicalStatus").text(row.politicalStatus || '-');
  424. $("#detail_phone").text(row.phone || '-');
  425. $("#detail_eduNational").text(row.eduNational || '-');
  426. $("#detail_eduReligious").text(row.eduReligious || '-');
  427. $("#detail_address").text(row.address || '-');
  428. $("#detail_domicile").text(row.domicile || '-');
  429. $("#detail_nativePlace").text(row.nativePlace || '-');
  430. // 重置校核表单
  431. $("input[name='checkAction'][value='PASS']").prop('checked', true);
  432. $("#checkComment").val('');
  433. // 打开弹框
  434. $("#checkModal").modal('show');
  435. } else {
  436. $.modal.alertWarning("未找到该人员信息");
  437. }
  438. }
  439. /* 提交校核 */
  440. function submitCheck() {
  441. var action = $("input[name='checkAction']:checked").val();
  442. var comment = $("#checkComment").val().trim();
  443. // 如果是驳回,校核意见必填
  444. if (action == 'REJECT' && comment == '') {
  445. $.modal.alertWarning("驳回时必须填写驳回原因");
  446. return;
  447. }
  448. var url = action == 'PASS' ? prefix + "/pass" : prefix + "/reject";
  449. var data = {
  450. personId: currentPersonId,
  451. comment: comment
  452. };
  453. // 先关闭对话框,再显示 loading
  454. $("#checkModal").modal('hide');
  455. $.modal.loading("正在提交...");
  456. $.ajax({
  457. type: "POST",
  458. url: url,
  459. contentType: "application/json",
  460. data: JSON.stringify(data),
  461. success: function(result) {
  462. $.modal.closeLoading();
  463. if (result.code == web_status.SUCCESS) {
  464. $.modal.msgSuccess(result.msg);
  465. $.table.refresh();
  466. } else {
  467. $.modal.alertError(result.msg);
  468. }
  469. },
  470. error: function() {
  471. $.modal.closeLoading();
  472. $.modal.alertError("操作失败");
  473. }
  474. });
  475. }
  476. /* 批量通过校核 */
  477. function batchPass() {
  478. var rows = $.table.selectColumns("personId");
  479. if (rows.length == 0) {
  480. $.modal.alertWarning("请至少选择一条记录");
  481. return;
  482. }
  483. $.modal.confirm("确定对选中的 " + rows.length + " 条记录执行通过区县校核?", function() {
  484. var data = {
  485. personIds: rows.join(","),
  486. comment: "" // 可选,可以弹出输入框让用户填写统一备注
  487. };
  488. $.modal.loading("正在处理...");
  489. $.ajax({
  490. type: "POST",
  491. url: prefix + "/batchPass",
  492. contentType: "application/json",
  493. data: JSON.stringify(data),
  494. success: function(result) {
  495. $.modal.closeLoading();
  496. if (result.code == web_status.SUCCESS) {
  497. $.modal.msgSuccess(result.msg);
  498. $.table.refresh();
  499. } else {
  500. $.modal.alertError(result.msg);
  501. }
  502. },
  503. error: function() {
  504. $.modal.closeLoading();
  505. $.modal.alertError("操作失败");
  506. }
  507. });
  508. });
  509. }
  510. </script>
  511. </body>
  512. </html>