state.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. layui.config({
  2. base: '../../lib/layui/lay/mymodules/'
  3. , version: '101100'
  4. }).use('eleTree');
  5. layui.extend({
  6. admin: '{/}../../static/js/admin'
  7. });
  8. layui.use(['jquery', 'eleTree', 'table', 'laypage', 'admin'], function () {
  9. var $ = layui.jquery,
  10. eleTree = layui.eleTree,
  11. laypage = layui.laypage,
  12. table = layui.table;
  13. var addStateHtml = '../../pages/admin/addstate.html';
  14. var updateHtml = '../../pages/admin/updateState.html';
  15. // 部门
  16. var belpID = 'root';
  17. delpFun();
  18. sessionStorage.setItem("ztreeDepid", 'root');
  19. function delpFun() {
  20. $.ajax({
  21. url: urlphp+'api/section/getlist?userStaffNum=' + parent.getUserStaffNum(),
  22. method: 'get',
  23. dataType: 'json',
  24. success: function (res) {
  25. if (res.code === 0) {
  26. var data = [res.data];
  27. eleTree.render({
  28. elem: '.ele1',
  29. data: data,
  30. defaultExpandAll: true,
  31. // showCheckbox: true,
  32. });
  33. eleTree.on("nodeClick(data)", function (d) {
  34. belpID = d.data.currentData.id;
  35. sessionStorage.setItem("ztreeDepid", d.data.currentData.id);
  36. $('.stetaName').val("");
  37. var info = {
  38. statusContent: '',
  39. departmentId: d.data.currentData.id,
  40. deleteStatus: 'false',
  41. pageNumber: '1',
  42. pageSize: '1',
  43. };
  44. getStateList(info);
  45. })
  46. } else {
  47. layer.msg('请检查网路', {icon: 2});
  48. }
  49. },
  50. error: function (err) {
  51. layer.msg('请检查网路', {icon: 2});
  52. }
  53. })
  54. }
  55. var info = {
  56. statusContent: $('.stetaName').val(),
  57. departmentId: belpID,
  58. deleteStatus: 'false',
  59. pageNumber: '1',
  60. pageSize: '1',
  61. };
  62. getStateList(info);
  63. function getStateList(res) {
  64. var index = layer.load(2);
  65. table.render({
  66. elem: '#stateRemind',
  67. url: urlF+'api/status/v1/getStatusList',
  68. id: 'idstetaTable',
  69. method: 'get',
  70. loading: true,
  71. page: true,
  72. cols: [[
  73. {field: 'statusContent', title: '状态名称', align: 'center'}
  74. , {field: 'createDate', title: '创建日期', align: 'center'}
  75. , {title: ' 操作', align: 'center', toolbar: '#barDemo'}
  76. ]],
  77. where: {
  78. statusContent: res.statusContent,
  79. departmentId: res.departmentId,
  80. deleteStatus: res.deleteStatus
  81. },
  82. request: {
  83. pageName: 'pageNumber' //页码的参数名称,默认:page
  84. , limitName: 'pageSize' //每页数据量的参数名,默认:limit
  85. },
  86. response: {
  87. statusName: 'code'
  88. , statusCode: 200,
  89. countName: 'count',
  90. dataName: 'data'
  91. },
  92. done: function (res, curr, count) {
  93. layer.close(index);
  94. if (res.code === '200') {
  95. $('.fr').html('共有数据:' + res.count + ' 条')
  96. }
  97. }
  98. });
  99. }
  100. // 查询
  101. $(".seachSteta").click(function () {
  102. var checkbox = $("#checkboxT").prop('checked'),
  103. root = '',
  104. info;
  105. if (checkbox == true) {
  106. root = '';
  107. info = {
  108. statusContent: $('.stetaName').val(),
  109. departmentId: root,
  110. deleteStatus: 'false',
  111. pageNumber: '1',
  112. pageSize: '1',
  113. };
  114. } else {
  115. info = {
  116. statusContent: $('.stetaName').val(),
  117. departmentId: belpID,
  118. deleteStatus: 'false',
  119. pageNumber: '1',
  120. pageSize: '1',
  121. };
  122. }
  123. getStateList(info)
  124. });
  125. // 监听状态table
  126. table.on('tool(stateItme)', function (obj) {
  127. if (obj.event === "move") {
  128. sessionStorage.setItem("statusId", obj.data.id);
  129. moveDep('选择部门信息', urlF+'api/status/v1/moveStatus/', '400', '500', table, 'idstetaTable');
  130. } else if (obj.event === "copy") {
  131. var content = {
  132. _method: 'put'
  133. };
  134. layer.alert('确认要复制记录模板吗?', {icon: 8}, function (index) {
  135. $.ajax({
  136. url: urlF+'api/status/v1/copyStatus/' + obj.data.id,
  137. method: 'post',
  138. dataType: 'json',
  139. data: content,
  140. success: function (res) {
  141. if (res.code === '200') {
  142. layer.msg('复制成功', {icon: 1});
  143. table.reload('idstetaTable');
  144. } else {
  145. layer.msg('复制失败', {icon: 2});
  146. table.reload('idstetaTable');
  147. }
  148. layer.close(index);
  149. },
  150. error: function () {
  151. layer.msg('请检查网络', {icon: 2});
  152. layer.close(index);
  153. }
  154. });
  155. });
  156. } else if (obj.event === "edit") {
  157. var objID = obj.data;
  158. var delobj = [];
  159. layer.open({
  160. type: 2,
  161. id: 'updateState',
  162. title: '修改状态和提醒设置',
  163. shadeClose: true,
  164. scrollbar: true,
  165. shade: 0.3,
  166. maxmin: true,
  167. skin: 'oaBtn',
  168. btn: ['确认', '取消'],
  169. area: ['500px', '500px'],
  170. content: updateHtml,
  171. success: function (layero, index) {
  172. var body = layer.getChildFrame('body', index);
  173. body.find('#stetaName').val(obj.data.statusContent);
  174. $.ajax({
  175. url: urlF+'api/status/v1/getStatusItemList/' + obj.data.id,
  176. method: 'get',
  177. dataType: 'json',
  178. success: function (res) {
  179. for (var i = 0; i < res.data.length; i++) {
  180. var str = `
  181. <div class="a_itme" id-data="${res.data[i].id}" delete-flay="true">
  182. <div class="a_colour">
  183. <span color_data="${res.data[i].statusColor}" style="background: ${res.data[i].statusColor}"></span>
  184. </div>
  185. <div class="a_modle">
  186. <i class="pointedSpan"></i>
  187. <b class="a_continue">继续</b>
  188. <b class="a_complete">完成</b>
  189. <span></span>
  190. <span></span>
  191. </div>
  192. <div class="a_delete">
  193. <i class="layui-icon layui-icon-delete"></i>
  194. </div>
  195. <input type="text" value="${res.data[i].statusContent}" placeholder="请输入状态名称" name="username" required="" lay-verify="required" autocomplete="off" class="layui-input a_steta ${i == 0 ? "a_steta1" : ""}">
  196. </div>`;
  197. body.find(".a_itmes").append(str)
  198. }
  199. },
  200. error: function () {
  201. layer.msg('请检查网络', {icon: 2});
  202. }
  203. });
  204. body.delegate('.a_delete', 'click', function () {
  205. if (body.find(".a_itmes .a_itme").length === 1) {
  206. return;
  207. } else {
  208. var id = $(this).parent().attr("id-data"),
  209. deleteFlay = $(this).parent().attr("delete-flay");
  210. var sonterm = {
  211. deleteFlag: deleteFlay,
  212. id: id,
  213. statusColor: '',
  214. statusContent: '',
  215. zIndex: ''
  216. };
  217. delobj.push(sonterm)
  218. }
  219. })
  220. },
  221. yes: function (index, layero) {
  222. var body = layer.getChildFrame('body', index);
  223. var reg = /\S/;
  224. if (!reg.test(body.find("#stetaName").val())) {
  225. layer.msg('请输入状态组名称', {icon: 8});
  226. return false;
  227. }
  228. if (!reg.test(body.find(".a_steta1").val())) {
  229. layer.msg('请输入状态组子项至少填一个', {icon: 8});
  230. return false;
  231. }
  232. var item = body.find('.a_itmes .a_itme');
  233. var a_colour = body.find('.a_colour');
  234. var arr = [];
  235. var ID = [];
  236. var json = [];
  237. var color = [];
  238. var obj = {deleteFlag: 'false', id: '', statusColor: '', statusContent: '', zIndex: ''};
  239. a_colour.each(function () {
  240. var value = $(this).find('span').attr("color_data");
  241. color.push(value);
  242. });
  243. item.each(function () {
  244. var value = $(this).find('input').val();
  245. var ids = $(this).attr("id-data");
  246. if (reg.test(value)) {
  247. arr.push(value);
  248. ID.push(ids)
  249. }
  250. });
  251. if (arr == "") {
  252. layer.msg('请输入状态组子项至少填一个', {icon: 8});
  253. return false;
  254. } else {
  255. for (var i = 0; i < arr.length; i++) {
  256. obj = {};
  257. obj.deleteFlag = false;
  258. obj.id = ID[i];
  259. obj.statusColor = color[i];
  260. obj.statusContent = arr[i];
  261. obj.zIndex = i + 1;
  262. delobj.push(obj)
  263. }
  264. }
  265. var delobjs = [];
  266. for (var k = 0; k < delobj.length; k++) {
  267. if (delobj[k].id != undefined || delobj[k].statusContent != "") {
  268. delobjs.push(delobj[k])
  269. }
  270. }
  271. var updateStetaInfo = {
  272. id: objID.id,
  273. statusContent: body.find('#stetaName').val(),
  274. statusItems: delobjs,
  275. _method: 'put'
  276. };
  277. $.ajax({
  278. url: urlF+'api/status/v1/updateStatus',
  279. method: 'POST',
  280. dataType: 'json',
  281. data: updateStetaInfo,
  282. success: function (res) {
  283. if (res.code === '200') {
  284. layer.msg('修改成功', {icon: 1});
  285. table.reload('idstetaTable');
  286. layer.close(index);
  287. } else if (res.code == '422') {
  288. layer.msg('状态内容不能为空', {icon: 2});
  289. table.reload('idstetaTable');
  290. layer.close(index);
  291. } else {
  292. layer.msg('修改失败,请检查信息', {icon: 2});
  293. table.reload('idstetaTable');
  294. layer.close(index);
  295. }
  296. },
  297. error: function (err) {
  298. layer.close(index);
  299. }
  300. })
  301. }
  302. })
  303. } else if (obj.event === "delete") {
  304. var content = {
  305. _method: 'DELETE'
  306. };
  307. layer.alert('确认要删除吗?', {icon: 8}, function (index) {
  308. $.ajax({
  309. url: urlF+'api/status/v1/reomveStatus/' + obj.data.id,
  310. method: 'post',
  311. dataType: 'json',
  312. data: content,
  313. success: function (res) {
  314. if (res.code === '200') {
  315. layer.msg('删除成功', {icon: 1});
  316. table.reload('idstetaTable');
  317. } else {
  318. layer.msg('删除失败', {icon: 2});
  319. table.reload('idstetaTable');
  320. }
  321. layer.close(index);
  322. },
  323. error: function () {
  324. layer.msg('请检查网络', {icon: 2});
  325. layer.close(index);
  326. }
  327. });
  328. });
  329. }
  330. });
  331. // 添加状态
  332. // 打开添加弹窗
  333. $(".addState").click(function () {
  334. layer.open({
  335. type: 2,
  336. id: 'addState',
  337. title: '添加状态和提醒设置',
  338. shadeClose: true,
  339. scrollbar: true,
  340. shade: 0.3,
  341. maxmin: true,
  342. skin: 'oaBtn',
  343. btn: ['确认', '取消'],
  344. area: ['500px', '500px'],
  345. content: addStateHtml,
  346. success: function (layero, index) {
  347. var body = layer.getChildFrame('body', index);
  348. },
  349. yes: function (index, layero) {
  350. var body = layer.getChildFrame('body', index);
  351. var reg = /\S/;
  352. if (!reg.test(body.find("#stetaName").val())) {
  353. layer.msg('请输入状态组名称', {icon: 8});
  354. return false;
  355. }
  356. if (!reg.test(body.find(".a_steta1").val())) {
  357. return false;
  358. }
  359. var item = body.find('.a_itmes .a_itme');
  360. var a_colour = body.find('.a_colour');
  361. var json = [];
  362. var arr = [];
  363. var color = [];
  364. var obj = {statusColor: '', statusContent: '', zIndex: ''};
  365. a_colour.each(function () {
  366. var value = $(this).find('span').attr("color_data");
  367. color.push(value);
  368. });
  369. item.each(function () {
  370. var value = $(this).find('input').val();
  371. if (reg.test(value)) {
  372. arr.push(value);
  373. }
  374. });
  375. if (arr == "") {
  376. layer.msg('请输入状态组子项至少填一个', {icon: 8});
  377. return false;
  378. } else {
  379. for (var j = 0; j < arr.length; j++) {
  380. obj = {};
  381. obj.statusColor = color[j];
  382. obj.statusContent = arr[j];
  383. obj.zIndex = j + 1;
  384. json.push(obj);
  385. }
  386. }
  387. var addStetaInfo = {
  388. departmentId: belpID,
  389. statusContent: body.find('#stetaName').val(),
  390. statusItems: json
  391. };
  392. $.ajax({
  393. url: urlF+'api/status/v1/addStatus',
  394. method: 'POST',
  395. dataType: 'json',
  396. data: addStetaInfo,
  397. success: function (res) {
  398. if (res.code === '200') {
  399. layer.msg('添加成功', {icon: 1});
  400. table.reload('idstetaTable');
  401. layer.close(index);
  402. } else if (res.code == '422') {
  403. layer.msg('状态内容不能为空', {icon: 2});
  404. table.reload('idstetaTable');
  405. layer.close(index);
  406. } else {
  407. layer.msg('添加失败,请检查信息或网络', {icon: 2});
  408. table.reload('idstetaTable')
  409. }
  410. },
  411. error: function (err) {
  412. layer.msg('网络错误', {icon: 2});
  413. }
  414. })
  415. }
  416. })
  417. })
  418. });