flowable_group_members.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  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/admin.css?v=312"/>
  10. <link rel="stylesheet" href="../../assets/module/formSelects/formSelects-v4.css"/>
  11. <style>
  12. .layui-table-cell {
  13. height: auto;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <!-- 页面加载loading -->
  19. <div class="page-loading">
  20. <div class="ball-loader">
  21. <span></span><span></span><span></span><span></span>
  22. </div>
  23. </div>
  24. <!-- 正文开始 -->
  25. <div class="layui-fluid">
  26. <div class="layui-card-header" style="background-color: #fff;padding-top: 10px;padding-bottom: 10px;">
  27. <div class="layui-inline pull-left">
  28. <h3 id="htmlHeader">流程用户</h3>
  29. </div>
  30. <!-- <div class="layui-inline pull-right">-->
  31. <!-- <button id="btnAdd" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加</button>-->
  32. <!-- </div>-->
  33. </div>
  34. <div class="layui-card">
  35. <div class="layui-card-body">
  36. <div class="layui-form toolbar" lay-filter="filterForm">
  37. <div class="layui-form-item">
  38. <div class="layui-inline">
  39. <label class="layui-form-label w-auto">用户ID:</label>
  40. <div class="layui-input-inline mr0">
  41. <input name="aId" id="aId" class="layui-input" type="text"
  42. placeholder="组ID"/>
  43. </div>
  44. </div>
  45. <div class="layui-inline">
  46. <label class="layui-form-label w-auto">名字:</label>
  47. <div class="layui-input-inline mr0">
  48. <input name="aName" id="aName" class="layui-input" type="text"
  49. placeholder="名字"/>
  50. </div>
  51. </div>
  52. <div class="layui-inline">
  53. <label class="layui-form-label w-auto">邮箱:</label>
  54. <div class="layui-input-inline mr0">
  55. <input name="email" id="email" class="layui-input" type="text"
  56. placeholder="邮箱"/>
  57. </div>
  58. </div>
  59. <div class="layui-inline">
  60. <button class="layui-btn icon-btn" lay-filter="formSubSearch" lay-submit
  61. style="background-color: #007DDB;" id="searchBtn" disabled>
  62. <i class="layui-icon">&#xe615;</i>搜索
  63. </button>
  64. <!-- <button class="layui-btn icon-btn" type="reset" lay-reset-->
  65. <!-- style="background-color: #007DDB;">搜索-->
  66. <!-- </button>-->
  67. </div>
  68. <div class="layui-inline pull-right">
  69. <button id="btnAdd" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加</button>
  70. </div>
  71. </div>
  72. </div>
  73. <!-- <table class="layui-table" id="datatable" lay-filter="datatable"></table>-->
  74. <table class="layui-table" id="datatable" lay-filter="datatable">
  75. <colgroup>
  76. <col width="60">
  77. <col width="300">
  78. <col width="300">
  79. <col width="300">
  80. <col>
  81. </colgroup>
  82. <thead>
  83. <tr>
  84. <th style="text-align: center;">序号</th>
  85. <th>用户ID</th>
  86. <th>名字</th>
  87. <th>邮箱</th>
  88. <th>操作</th>
  89. </tr>
  90. </thead>
  91. <tbody id="dataBody"></tbody>
  92. </table>
  93. </div>
  94. </div>
  95. </div>
  96. <script type="text/html" id="modelTpl">
  97. <form id="modelForm" lay-filter="modelForm" class="layui-form model-form">
  98. <div class="layui-form-item">
  99. <label class="layui-form-label"><span class="layui-badge-dot"></span>用户ID</label>
  100. <div class="layui-input-block">
  101. <input type="text" name="userSelector" id="userSelector" class="layui-input" placeholder="点击选择用户"
  102. lay-verType="tips" lay-verify="required" readonly>
  103. <input type="hidden" name="id" id="id">
  104. </div>
  105. </div>
  106. <div class="layui-form-item">
  107. <label class="layui-form-label"><span class="layui-badge-dot"></span>名字</label>
  108. <div class="layui-input-block">
  109. <input type="text" name="firstName" id="firstName" class="layui-input" placeholder="名字"
  110. lay-verType="tips" lay-verify="required" readonly>
  111. </div>
  112. </div>
  113. <div class="layui-form-item">
  114. <label class="layui-form-label">邮箱</label>
  115. <div class="layui-input-block">
  116. <input type="text" name="email" class="layui-input" placeholder="邮箱"
  117. lay-verType="tips">
  118. </div>
  119. </div>
  120. <div class="layui-form-item">
  121. <label class="layui-form-label">用户组</label>
  122. <div class="layui-input-block">
  123. <select class="layui-select" id="gid" name="gid"/>
  124. </div>
  125. </div>
  126. <div class="layui-form-item text-right">
  127. <button type="button" class="layui-btn" lay-filter="modelSubmit" lay-submit>保存</button>
  128. <button type="button" class="layui-btn layui-btn-primary" ew-event="closePageDialog">取消</button>
  129. </div>
  130. </form>
  131. </script>
  132. <!-- js部分 -->
  133. <script type="text/javascript" src="../../assets/libs/layui/layui.js"></script>
  134. <script type="text/javascript" src="../../assets/js/common.js?v=312"></script>
  135. <!-- 表格操作列 -->
  136. <script type="text/html" id="optionTpl">
  137. <div class="layui-btn-group">
  138. <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">编辑</a>
  139. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
  140. </div>
  141. </script>
  142. <script>
  143. var $;
  144. var layer;
  145. var form;
  146. var table;
  147. var admin;
  148. var uParas;
  149. var util;
  150. var flowable;
  151. var renderTable;
  152. layui.use(['layer', 'form', 'table', 'admin', 'uParas', 'util', 'flowable', 'formSelects', 'tableSelect'], function () {
  153. $ = layui.jquery;
  154. layer = layui.layer;
  155. form = layui.form;
  156. table = layui.table;
  157. admin = layui.admin;
  158. uParas = layui.uParas;
  159. util = layui.util;
  160. flowable = layui.flowable;
  161. var formSelects = layui.formSelects;
  162. var tableSelect = layui.tableSelect;
  163. // console.info(flowable);
  164. var dataBody = $('#dataBody');
  165. // 渲染表格数据
  166. // var insTb = table.render({
  167. // elem: '#datatable',
  168. // url: uParas.baseUrl + flowable.groups,
  169. // // where: {"flag": flag},
  170. // page: true,
  171. // toolbar: true,
  172. // cellMinWidth: 100,
  173. // cols: [[
  174. // {type: 'numbers', title: '序号'},
  175. // {field: 'id', sort: false, title: '组ID'},
  176. // {field: 'name', sort: false, title: '名称'},
  177. // {align: 'center', title: '操作', toolbar: '#optionTpl', minWidth: 200}
  178. // ]]
  179. // });
  180. // 渲染表格数据
  181. renderTable = function renderTable() {
  182. var index = layer.load();
  183. $('#searchBtn').prop('disabled', true);
  184. dataBody.empty();
  185. $.ajax({
  186. url: uParas.baseUrl + flowable.users,
  187. type: 'get',
  188. dataType: 'json',
  189. success: function (resp) {
  190. if (resp && resp.data) {
  191. layer.close(index);
  192. $.each(resp.data, function (index, val) {
  193. var row = renderRow(index, val);
  194. dataBody.append(row);
  195. });
  196. }
  197. $('#searchBtn').prop('disabled', false);
  198. },
  199. error: function (resp) {
  200. $('#searchBtn').prop('disabled', false);
  201. }
  202. });
  203. }
  204. renderTable();
  205. // 渲染表格数据
  206. function renderRow(rowIndex, data) {
  207. var row = '<tr>';
  208. row += '<td style="text-align: center;">' + (rowIndex + 1) + '</td>';
  209. row += '<td>' + data.id + '</td>';
  210. row += '<td>' + data.firstName + '</td>';
  211. row += '<td>' + (data.email ? data.email : '-') + '</td>';
  212. row += '<td>' + renderOpt(rowIndex, data) + '</td>';
  213. row += '</tr>';
  214. return row;
  215. }
  216. // 渲染操作列
  217. function renderOpt(rowIndex, data) {
  218. var optContent = '<div class="layui-btn-group">' +
  219. ' <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit" onclick="showEditModel(\'' + data.id + '\')">编辑</a>' +
  220. ' <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" onclick="doDel(\'' + data.id + '\')">删除</a>' +
  221. '</div>';
  222. return optContent;
  223. }
  224. // 搜索
  225. form.on('submit(formSubSearch)', function (data) {
  226. // insTb.reload({where: data.field}, 'data');
  227. renderTable();
  228. });
  229. // 工具条点击事件
  230. table.on('tool(datatable)', function (obj) {
  231. console.info(obj);
  232. var data = obj.data;
  233. var layEvent = obj.event;
  234. if (layEvent == 'del') { // 删除
  235. doDel(data);
  236. } else if (layEvent == 'edit') { // 编辑
  237. doEdit(data);
  238. }
  239. });
  240. var memberTbl;
  241. function renderMemTbl() {
  242. memberTbl = tableSelect.render({
  243. elem: '#userSelector',
  244. checkedKey: 'cId',
  245. searchKey: 'accountRealName',
  246. searchPlaceHolder: '输入关键字搜索',
  247. table: {
  248. url: uParas.baseUrl + '/ent/groupAccount/queryChkMembers',
  249. method: 'post',
  250. page: true,
  251. cellMinWidth: 50,
  252. cols: [[
  253. {type: 'radio'},
  254. {field: 'accountRealName', sort: false, title: '姓名'},
  255. {field: 'groupName', sort: false, title: '所属组群'},
  256. {field: 'positionTitle', sort: false, title: '岗位名称'},
  257. ]]
  258. },
  259. done: function (elem, data) {
  260. if (data && data.data && data.data.length > 0) {
  261. var dataObj = data.data[0];
  262. elem.val(dataObj.aId);
  263. $('#id').val(dataObj.aId);
  264. $('#firstName').val(dataObj.accountRealName);
  265. $('#email').val(dataObj.accountEmail);
  266. }
  267. }
  268. });
  269. }
  270. // // 删除
  271. // function doDel(id) {
  272. // layer.confirm('确定要删除吗?', {
  273. // skin: 'layui-layer-admin',
  274. // shade: .1
  275. // }
  276. // , function (i) {
  277. // layer.close(i);
  278. // layer.load();
  279. // var url = uParas.baseUrl + flowable.groupsPD + id;
  280. // admin.req(url, {}, function (res) {
  281. // layer.closeAll('loading');
  282. // if (res) {
  283. // layer.msg(res.msg);
  284. // // insTb.reload({}, 'data');
  285. // renderTable();
  286. // } else {
  287. // layer.msg(res.msg);
  288. // }
  289. // }, 'post');
  290. //
  291. // });
  292. // }
  293. // 编辑
  294. function doEdit(data) {
  295. showEditModel(data);
  296. }
  297. // 添加
  298. $('#btnAdd').click(function () {
  299. showAddModel();
  300. });
  301. // 新增
  302. function showAddModel() {
  303. var index1 = layer.load();
  304. admin.open({
  305. type: 1,
  306. title: '添加流程用户组',
  307. offset: 'auto',
  308. area: '500px',
  309. content: $('#modelTpl').html(),
  310. success: function (layero, dIndex) {
  311. renderMemTbl();
  312. // 渲染流程用户组
  313. $.ajax({
  314. url: uParas.baseUrl + flowable.groups,
  315. type: 'get',
  316. success: function (resp) {
  317. $("#gid").append(uParas.initSelectHtml(resp, "name", "id"));
  318. form.render();
  319. layer.close(index1);
  320. }
  321. });
  322. // uParas.initFormSelects("id", uParas.baseUrl + flowable.groups, "name", "id");
  323. // uParas.initFormSelects("id", "/admin/common/getUsersAllByGId?gId=" + 641, "accountRealName", "aId");
  324. var url = uParas.baseUrl + flowable.users;
  325. form.on('submit(modelSubmit)', function (data) {
  326. var index = layer.load();
  327. $.ajax({
  328. url: url,
  329. type: 'post',
  330. data: JSON.stringify(data.field),
  331. contentType: 'application/json;charset=utf-8',
  332. success: function (resp) {
  333. // console.info(resp);
  334. layer.close(index);
  335. if (resp) {
  336. var gid = $("#gid").val();
  337. if (gid && gid != '') {
  338. var addMemShipUrl = uParas.baseUrl + flowable.groupsMembers;
  339. addMemShipUrl = addMemShipUrl.replace('{0}', gid);
  340. console.info(addMemShipUrl);
  341. $.ajax({
  342. url: addMemShipUrl,
  343. type: 'post',
  344. data: '{"userId": \"' + resp.id + '\"}',
  345. contentType: 'application/json;charset=utf-8',
  346. success: function (resp) {
  347. }
  348. });
  349. }
  350. layer.closeAll();
  351. layer.msg('保存成功!');
  352. renderTable();
  353. } else {
  354. layer.msg('保存失败!');
  355. }
  356. }
  357. });
  358. return false;
  359. });
  360. }
  361. });
  362. }
  363. // // 修改
  364. // function showEditModel(id) {
  365. // admin.open({
  366. // type: 1,
  367. // title: '修改流程用户组',
  368. // offset: 'auto',
  369. // area: '500px',
  370. // content: $('#modelTpl').html(),
  371. // success: function (layero, dIndex) {
  372. // $('#id').prop('readonly', true);
  373. // // 表单回显
  374. // var index = layer.load();
  375. // var getUrl = uParas.baseUrl + flowable.groups + id;
  376. // admin.req(getUrl, null, function(resp) {
  377. // if (resp && resp.data) {
  378. // form.val('modelForm', resp.data);
  379. // layer.close(index);
  380. //
  381. // var url = uParas.baseUrl + flowable.groups;
  382. // form.on('submit(modelSubmit)', function (data) {
  383. // index = layer.load();
  384. // $.ajax({
  385. // url: url,
  386. // type: 'post',
  387. // data: JSON.stringify(data.field),
  388. // contentType: 'application/json;charset=utf-8',
  389. // success: function(resp) {
  390. // // console.info(resp);
  391. // layer.close(index);
  392. // if (resp) {
  393. // layer.closeAll();
  394. // layer.msg('保存成功!');
  395. // // insTb.reload({}, 'data');
  396. // } else {
  397. // layer.msg('保存失败!');
  398. // }
  399. // }
  400. // });
  401. //
  402. // return false;
  403. // });
  404. // }
  405. // });
  406. // }
  407. // });
  408. // }
  409. });
  410. // 删除
  411. function doDel(id) {
  412. layer.confirm('确定要删除吗?', {
  413. skin: 'layui-layer-admin',
  414. shade: .1
  415. }
  416. , function (i) {
  417. layer.close(i);
  418. layer.load();
  419. var url = uParas.baseUrl + flowable.user + id;
  420. $.ajax({
  421. url: url,
  422. type: 'delete',
  423. success: function (resp) {
  424. layer.closeAll('loading');
  425. layer.msg('删除成功!');
  426. renderTable();
  427. },
  428. error: function (resp, status, error) {
  429. layer.closeAll('loading');
  430. if (error) {
  431. layer.msg('删除失败!');
  432. }
  433. }
  434. });
  435. });
  436. }
  437. // 修改
  438. function showEditModel(id) {
  439. admin.open({
  440. type: 1,
  441. title: '修改流程用户组',
  442. offset: 'auto',
  443. area: '500px',
  444. content: $('#modelTpl').html(),
  445. success: function (layero, dIndex) {
  446. $('#id').prop('readonly', true);
  447. // 表单回显
  448. var index = layer.load();
  449. // 渲染流程用户组
  450. $.ajax({
  451. url: uParas.baseUrl + flowable.groups,
  452. type: 'get',
  453. success: function (resp) {
  454. $("#gid").append(uParas.initSelectHtml(resp, "name", "id", id));
  455. form.render();
  456. }
  457. });
  458. var getUrl = uParas.baseUrl + flowable.user + id;
  459. admin.req(getUrl, null, function (resp) {
  460. if (resp) {
  461. form.val('modelForm', resp);
  462. form.val('modelForm', {"userSelector": resp.id});
  463. layer.close(index);
  464. var url = uParas.baseUrl + flowable.user + id;
  465. form.on('submit(modelSubmit)', function (data) {
  466. index = layer.load();
  467. $.ajax({
  468. url: url,
  469. type: 'put',
  470. data: JSON.stringify(data.field),
  471. contentType: 'application/json;charset=utf-8',
  472. success: function (resp) {
  473. // console.info(resp);
  474. layer.close(index);
  475. if (resp) {
  476. layer.closeAll();
  477. layer.msg('保存成功!');
  478. renderTable();
  479. } else {
  480. layer.msg('保存失败!');
  481. }
  482. }
  483. });
  484. return false;
  485. });
  486. }
  487. });
  488. }
  489. });
  490. }
  491. </script>
  492. </body>
  493. </html>