add.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. var selectedData = { cols: [], array: [] };
  2. var checkusersselect = null;
  3. var checkuserlist = null;
  4. var tabledatagride = null;
  5. $(document).ready(function() {
  6. $.jeDate("#month_date", {
  7. isinitVal: true,
  8. format: 'YYYY/MM' // 分隔符可以任意定义,该例子表示只显示年月
  9. });
  10. $("#month_date").val(getCurrentTimeFormat());
  11. var checked_dept = null;
  12. if (roleContains("SERVICEAREA")) {
  13. checked_dept = getCurrentUser().organid;
  14. }
  15. setSASelecttemp("#fwq", checked_dept);
  16. //默认值 $("#fwq").val()
  17. var dd = 89;
  18. if ($("#fwq").val() != "") {
  19. dd = $("#fwq").val();
  20. }
  21. inittAreaable($("#month_date").val(), dd);
  22. initselecttable();
  23. laydate.render({
  24. elem: '#starttime',
  25. type: 'time'
  26. });
  27. laydate.render({
  28. elem: '#endtime',
  29. type: 'time'
  30. });
  31. });
  32. var arealist = null;
  33. var stimemonth = null;
  34. function initselecttable() {
  35. selectedData = { cols: [], array: [], cache: false };
  36. selectedData.cols.push({ width: 0.3, name: "time", label: '时间', style: { 'text-align': 'center', 'line-height': '34px' } });
  37. selectedData.cols.push({ width: 0.2, name: "dept_name", label: '部门', style: { 'text-align': 'center', 'line-height': '34px' } });
  38. selectedData.cols.push({ width: 0.2, name: "area_name", label: '区域', style: { 'text-align': 'center', 'line-height': '34px' } });
  39. selectedData.cols.push({ width: 0.3, name: "option", label: '操作', html: true, style: { 'text-align': 'center', 'line-height': '34px' } });
  40. reloadtable();
  41. }
  42. function reloadtable() {
  43. $('#selected_table').datagrid({
  44. dataSource: selectedData,
  45. states: { fixedTopUntil: 0 },
  46. rowDefaultHeight: 50,
  47. height: 200,
  48. });
  49. }
  50. var layindex = null;
  51. var taskMap = new HashMap();
  52. function inittAreaable(time, dept) {
  53. layindex = layer.load(0, { shade: false });
  54. var t = time.replace("/", "-") + "";
  55. var endtime = moment(t + "-25T23:00:00", "YYYY-MM-DD HH:mm:ss");
  56. var starttime = moment(moment(t + "-25T23:00:00", "YYYY-MM-DD HH:mm:ss").subtract(1, 'month'));
  57. var param1 = { "start_time": starttime.format("YYYY-MM-DD HH:mm:ss"), "end_time": endtime.format("YYYY-MM-DD HH:mm:ss"), "checked_dept": dept }
  58. post_common_service("/f/task/getall/0/0", param1, function(taskdata) {
  59. taskMap = new HashMap();
  60. taskdata.forEach(t => {
  61. var key = t.area_id + "_" + moment(t.start_time).format("YYYY-MM-DD");
  62. if (taskMap.get(key) != null) {
  63. var list = taskMap.get(key);
  64. list.push(t);
  65. taskMap.set(key, list);
  66. } else {
  67. var list = [];
  68. list.push(t);
  69. taskMap.set(key, list);
  70. }
  71. });
  72. var param = { "dept_id": dept };
  73. post_common_service('/f/area/getall', param, function(redata) {
  74. layer.close(layer.index);
  75. var data = redata.areas;
  76. checkuserlist = redata.checkusers;
  77. var datac = { cols: [], array: [] };
  78. var days = endtime.diff(starttime, 'days');
  79. datac.cols.push({ width: 120, name: 'type', label: "", });
  80. for (var i = 1; i <= days; i++) {
  81. var temp = moment(moment(t + "-25T23:00:00", "YYYY-MM-DD HH:mm:ss").subtract(1, 'month'));
  82. var currentday = temp.add(i, "day");
  83. var day = currentday.date();
  84. datac.cols.push({ width: 80, name: "day_" + i, label: currentday.format("MM-DD"), html: true, className: "table_content" });
  85. }
  86. arealist = data;
  87. stimemonth = time;
  88. for (var index in data) {
  89. var area = data[index];
  90. var data_table = {};
  91. data_table.type = area.name;
  92. for (var i = 1; i <= days; i++) {
  93. //内容
  94. var temp = moment(moment(t + "-25T23:00:00", "YYYY-MM-DD HH:mm:ss").subtract(1, 'month'));
  95. var currentday = temp.add(i, "day");
  96. var key = area.id + "_" + currentday.format("YYYY-MM-DD");
  97. var temphtml = "";
  98. if (taskMap.get(key) != null) {
  99. //存在稽查记录
  100. var list = taskMap.get(key);
  101. var hasc = 0;
  102. var invc = 0;
  103. list.forEach(t => {
  104. if (t.check_status == 4 || t.check_status == 16 || t.check_status == 6) {
  105. //完成稽查
  106. hasc++;
  107. }
  108. if (t.check_status == 22) {
  109. //存在无效任务
  110. invc++;
  111. }
  112. });
  113. //无效
  114. if (invc == list.length) {
  115. temphtml = '<div class="btn-group btn_c" data-toggle="buttons" id="div_' + area.id + '_' + i + '" >' +
  116. '<label class="btn btn-info6" >' +
  117. '<input type="checkbox" name="options" onchange="selectedTask(this)" id="' + area.id + '_' + i + '"> 无效' +
  118. '</label>';
  119. } else
  120. //已完成
  121. if (hasc + invc == list.length) {
  122. temphtml = '<div class="btn-group btn_c" data-toggle="buttons" id="div_' + area.id + '_' + i + '">' +
  123. '<label class="btn btn-info5 " >' +
  124. '<input type="checkbox" name="options" onchange="selectedTask(this)" id="' + area.id + '_' + i + '"> 已稽查' +
  125. '</label>';
  126. } else {
  127. //进行中
  128. temphtml = '<div class="btn-group btn_c" data-toggle="buttons" id="div_' + area.id + '_' + i + '" >' +
  129. '<label class="btn btn-info3" >' +
  130. '<input type="checkbox" name="options" onchange="selectedTask(this)" id="' + area.id + '_' + i + '"> 稽查中' +
  131. '</label>';
  132. }
  133. } else {
  134. //不存在稽查
  135. temphtml = '<div class="btn-group btn_c" data-toggle="buttons" id="div_' + area.id + '_' + i + '" >' +
  136. '<label class="btn btn-info2" >' +
  137. '<input type="checkbox" name="options" onchange="selectedTask(this)" id="' + area.id + '_' + i + '"> 待稽查' +
  138. '</label>';
  139. }
  140. data_table["day_" + i] = temphtml;
  141. }
  142. datac.array.push(data_table);
  143. }
  144. if (tabledatagride != null) {
  145. tabledatagride.dataSource.data = null;
  146. tabledatagride.setDataSource(datac);
  147. tabledatagride.setPager(1, datac.array.length, datac.array.length);
  148. tabledatagride.render();
  149. } else {
  150. $('#table_s').datagrid({
  151. dataSource: datac,
  152. states: { fixedLeftUntil: 1, fixedTopUntil: 0 },
  153. showRowIndex: false,
  154. onRender: function() {
  155. $(".btn_c").mouseover(function() {
  156. var tempids = this.id.split("_");
  157. var t = stimemonth.replace("/", "-") + "";
  158. var starttime = moment(moment(t + "-25T23:00:00", "YYYY-MM-DD HH:mm:ss").subtract(1, 'month'));
  159. var ctime = starttime.add(tempids[2], "day");
  160. var key = tempids[1] + "_" + ctime.format("YYYY-MM-DD");
  161. if (taskMap.get(key) != null) {
  162. var temphtml = "";
  163. var list = taskMap.get(key);
  164. list.forEach(t => {
  165. var startus = "";
  166. if (t.check_status == 4 || t.check_status == 16 || t.check_status == 6) {
  167. startus = "已完成";
  168. } else
  169. if (t.check_status == 22) {
  170. startus = "无效";
  171. } else {
  172. startus = "进行中";
  173. }
  174. temphtml += '<tr><td>' + moment(t.start_time).format("HH:mm:ss") + '</td><td>' + moment(t.end_time).format("HH:mm:ss") + '</td><td>' + startus + '</td></tr>';
  175. });
  176. var thtml = '<table border=1 style="border:solid 1px;width:180px;"><tr><th>开始时间</th><th>结束时间</th><th>状态</th></tr>' + temphtml + '</table>';
  177. layer.tips(thtml, "#" + this.id, {
  178. tips: [1, '#8e8e8e'],
  179. time: 0,
  180. width: '240px'
  181. });
  182. }
  183. });
  184. $(".btn_c").mouseout(function() {
  185. layer.close(layer.index);
  186. });
  187. },
  188. configs: {
  189. C1: { className: "datagrid-cell-index", style: { 'text-align': 'center', } },
  190. R0: { style: { 'text-align': 'center', 'line-height': '36px' } }
  191. }
  192. });
  193. tabledatagride = $('#table_s').data('zui.datagrid');
  194. }
  195. for (var index in checkuserlist) {
  196. var p = checkuserlist[index];
  197. p.title = p.truename;
  198. }
  199. if (checkusersselect != null) {
  200. reset();
  201. } else {
  202. checkusersselect = $('#check_users').comboTree({
  203. source: checkuserlist,
  204. isMultiple: true
  205. });
  206. }
  207. });
  208. });
  209. }
  210. function reset() {
  211. initselecttable();
  212. var myDataGrid = $('#selected_table').data('zui.datagrid');
  213. myDataGrid.dataSource.data = null;
  214. myDataGrid.setDataSource(selectedData);
  215. myDataGrid.setPager(1, selectedData.array.length, selectedData.array.length);
  216. myDataGrid.render();
  217. if (checkusersselect != null) {
  218. $("#check_users").val("");
  219. checkusersselect.unbind();
  220. checkusersselect.closeDropDownMenu();
  221. checkusersselect.bindings();
  222. $(".ComboTreeItemChlid").find("input").prop('checked', false);
  223. }
  224. $("#starttime").val("");
  225. $("#endtime").val("");
  226. }
  227. function selectedTask(obj) {
  228. changeListItem(obj.id);
  229. }
  230. function removeListItem(obj) {
  231. var ids = obj.id.split("delete_");
  232. $("#" + ids[1]).parent().removeClass("active");
  233. $("#" + ids[1]).prop("checked", false);
  234. changeListItem(ids[1]);
  235. }
  236. function changeListItem(id) {
  237. var tempids = id.split("_");
  238. var t = stimemonth.replace("/", "-") + "";
  239. var starttime = moment(moment(t + "-25T23:00:00", "YYYY-MM-DD HH:mm:ss").subtract(1, 'month'));
  240. var ctime = starttime.add(tempids[1], "day");
  241. var carea = null;
  242. for (var i in arealist) {
  243. var a = arealist[i];
  244. if (a.id == tempids[0]) {
  245. carea = a;
  246. }
  247. }
  248. if ($("#" + id).prop('checked')) {
  249. addlisttable(carea, ctime, id);
  250. } else {
  251. removelisttable(carea, ctime);
  252. }
  253. }
  254. function addlisttable(area, time, id) {
  255. var feeList = $.zui.store.get("cache_sa_station_list");
  256. var dept_info = null;
  257. for (var index in feeList) {
  258. var dept = feeList[index];
  259. if (area.dept_id == dept.deptid) {
  260. dept_info = dept;
  261. }
  262. }
  263. id = trim(id);
  264. var btn = '<button class="btn btn-primary" type="button" onclick="removeListItem(this)" id="delete_' + id + '">删除</button>';
  265. selectedData.array.push({ "time": time.format("YYYY-MM-DD"), "dept_name": dept_info.name, "area_name": area.name, "option": btn, areaInfo: area, deptInfo: dept_info });
  266. var myDataGrid = $('#selected_table').data('zui.datagrid');
  267. myDataGrid.dataSource.data = null;
  268. myDataGrid.setDataSource(selectedData);
  269. myDataGrid.setPager(1, selectedData.array.length, selectedData.array.length);
  270. myDataGrid.render();
  271. // $('#selected_table').data('zui.datagrid').setDataSource(selectedData);
  272. // $('#selected_table').data('zui.datagrid').renderData();
  273. }
  274. function removelisttable(area, time) {
  275. for (var index in selectedData.array) {
  276. var o = selectedData.array[index];
  277. if (o != null && o.areaInfo.id == area.id && time.format("YYYY-MM-DD") == o.time) {
  278. selectedData.array.splice(index, 1);
  279. }
  280. }
  281. var myDataGrid = $('#selected_table').data('zui.datagrid');
  282. myDataGrid.dataSource.data = null;
  283. myDataGrid.setDataSource(selectedData);
  284. myDataGrid.setPager(1, selectedData.array.length, selectedData.array.length);
  285. myDataGrid.render();
  286. //reloadtable();
  287. }
  288. function search() {
  289. inittAreaable($("#month_date").val(), $("#fwq").val());
  290. }
  291. function addTask() {
  292. //获取列表
  293. var tasklist = selectedData.array;
  294. var start_time = $("#starttime").val();
  295. var end_time = $("#endtime").val();
  296. if (start_time == "" || end_time == "") {
  297. layer.msg('须选择稽查时间段!', {
  298. time: 2000, //20s后自动关闭
  299. });
  300. return;
  301. }
  302. if (moment("2018-01-01 " + end_time).valueOf() - moment("2018-01-01 " + start_time).valueOf() < 15 * 60 * 1000) {
  303. layer.msg('稽查时间段需满足15分钟以上!', {
  304. time: 2000, //20s后自动关闭
  305. });
  306. return;
  307. }
  308. if (tasklist.length < 1) {
  309. layer.msg('未选择任务区域!', {
  310. time: 2000, //20s后自动关闭
  311. });
  312. return;
  313. }
  314. var check_user_list = checkusersselect.getSelectedItemsId();
  315. tasklist.forEach(t => {
  316. t.start_time = t.time + " " + start_time;
  317. t.end_time = t.time + " " + end_time;
  318. });
  319. var param = { "userids": check_user_list, "checkAreaData": tasklist };
  320. post_common_service('/f/task/add', param, function(redata) {
  321. // layer.msg('已添加', { icon: 1 });
  322. inittAreaable($("#month_date").val(), $("#fwq").val());
  323. });
  324. }