DBtaizhang.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. 'use strict';
  2. var app = angular.module('app', [
  3. 'angularUtils.directives.dirPagination'
  4. ]);
  5. app.controller("taizhangCtrl", ["$scope", "$http", "$timeout", function ($scope, $http, $timeout) {
  6. var self = this;
  7. var s4 = new SM4Util();
  8. self.userId = $.cookie("GlWorkPlatform-userid");
  9. self.userName = $.cookie("GlWorkPlatform-chineseName");
  10. self.get_AccessToken = localStorage.getItem("GlWorkPlatform-AccessToken");
  11. self.get_lastReturnPageno = sp.getUrlName("lastReturnPageno");
  12. var postCfg = {
  13. headers: {
  14. 'Content-Type': 'application/json',
  15. 'Authorization': "Bearer " + self.get_AccessToken
  16. }
  17. }
  18. self.loading = false;
  19. self.search = JSON.parse($.cookie("GlWorkPlatform-hydbtz")) || { TITLE: "", QTBM: "", DBSX1: "", DBSX2: "", DENG: "", FLOWNAME: "", BANLI: "待办中" };
  20. self.noDataTip = 1;//没有数据时赋变量为0,先默认为1
  21. self.pageno = 1;
  22. self.total_count = 0;
  23. self.itemsPerPage = 10;
  24. self.pageOptions = [10, 20, 30, 40, 100, 300, 500];
  25. self.getData = function (pageno) {
  26. self.list = [];
  27. self.loading = true;
  28. self.pageno = pageno;
  29. $scope.__default__currentPage = self.pageno; //设置页面样式在第几页
  30. var sqlwhere = [];
  31. if (self.search.TITLE != "") {
  32. sqlwhere.push("and TITLE like '%" + self.search.TITLE + "%'")
  33. }
  34. if (self.search.QTBM != "") {
  35. sqlwhere.push("and DEPARTMENT like '%" + self.search.QTBM + "%'")
  36. }
  37. if (self.search.DENG != "") {
  38. sqlwhere.push("and DENG = '" + self.search.DENG + "'")
  39. }
  40. if (self.search.FLOWNAME != "") {
  41. sqlwhere.push("and FLOWNAME = '" + self.search.FLOWNAME + "'")
  42. }
  43. if (self.search.BANLI != "") {
  44. sqlwhere.push("and BANLI = '" + self.search.BANLI + "'")
  45. }
  46. if (self.search.DBSX1 != "" && self.search.DBSX2 != "") {
  47. sqlwhere.push("and TLDATE between '" + self.search.DBSX1 + " 00:00:00' and '" + self.search.DBSX2 + " 23:59:59'")
  48. }
  49. var data = {
  50. tablename: "SYS_ROUTE_INFO_DUBAN_VIEW",
  51. pagesize: self.itemsPerPage,
  52. pageno: self.pageno,
  53. colums: "*,TO_CHAR(TLDATE,'yyyy-mm-dd hh:mm:ss') as TLDATE1,TO_CHAR(THEORYDATE,'yyyy-mm-dd hh:mm:ss')as THEORYDATE1,TO_CHAR(CPSX,'yyyy-mm-dd hh:mm:ss')as CPSX1",
  54. order: "ROUTEINFOID",
  55. sqlwhere: sqlwhere.join(" ")
  56. };
  57. $http.post(apiurljs.login + "g2app/dubantaizhang/queryDataByColWithPage3", data, postCfg)
  58. .success(function (res) {
  59. self.loading = false;
  60. if (res.data == null || res.data == undefined || res.data == "") {
  61. self.noDataTip = 0;
  62. } else {
  63. self.noDataTip = 1;
  64. self.list = res.data;
  65. self.list.forEach(function (item) {
  66. item.TIXING1 = item.TIXING.split("\n");
  67. item.BANLI = item.BANLI == '待办中' ? '正在办理' : item.BANLI
  68. item.SYSJ = (new Date(item.THEORYDATE1) - new Date(item.CPSX1)) / 24 / 3600 / 1000 + 1;
  69. //item.TLDATE = sp.minsToDate("yyyy-MM-dd hh:mm:ss", new Date(item.TLDATE).getTime())
  70. //self.BLJG.forEach(function (item1) {
  71. // if (item.BLJG == item1.CODE)
  72. // item.BLJG = item1.CNAME
  73. //})
  74. //self.JBSXLY.forEach(function (item1) {
  75. // if (item.JBSXLY == item1.CODE)
  76. // item.JBSXLY = item1.CNAME
  77. //})
  78. //item.OPINION.forEach(function (item1) {
  79. // item1.OPINION1 = item1.OPINION + "(" + item1.CMANS + "——" + sp.format(item1.CDATE) + ")"
  80. //})
  81. //item.FILEATTACH.forEach(function (item1) {
  82. // item1.FILENAMES1 = item1.FILENAMES.length > 20 ? item1.FILENAMES.slice(0, 20) + "..." : item1.FILENAMES
  83. //})
  84. })
  85. self.total_count = res.totalCount;
  86. self.canExportExcel = true;
  87. }
  88. })
  89. }
  90. self.getBLJG = function () {
  91. var data = {
  92. ckey: "CODE_BLJG",
  93. routeinfoid: ""
  94. }
  95. $http.post(apiurljs.login + "g2app/abase/queryDataCode", { data: s4.encryptData_CBC(JSON.stringify(data)) }, postCfg)
  96. .success(function (obj) {
  97. var res = strToJson(s4.decryptData_CBC(obj.data));
  98. self.BLJG = res.data.CODE_BLJG;
  99. self.getJBSXLY()
  100. })
  101. }
  102. self.getJBSXLY = function () {
  103. var data = {
  104. ckey: "CODE_JBSXLY",
  105. routeinfoid: ""
  106. }
  107. $http.post(apiurljs.login + "g2app/abase/queryDataCode", { data: s4.encryptData_CBC(JSON.stringify(data)) }, postCfg)
  108. .success(function (obj) {
  109. var res = strToJson(s4.decryptData_CBC(obj.data));
  110. self.JBSXLY = res.data.CODE_JBSXLY;
  111. self.getData(1)
  112. })
  113. }
  114. self.getBLJG();
  115. self.openYQCS = function (routeinfoids) {
  116. var array = [{ "CKIND": "VARLIST", "TABLEID": "SYS_ROUTE_INFO", "COLID": "ROUTEINFOID", "VALUEA": routeinfoids, "VALUEB": "" }];
  117. var data = {
  118. flowid: "AA1H",
  119. userid: self.userId,
  120. pageno: self.pageno,
  121. pagesize: self.itemsPerPage,
  122. querycondition: JSON.stringify(array)
  123. }
  124. $http.post(apiurljs.login + "g2work/routeinfo/queryDataQuanLiuChengWithPage", data, postCfg)
  125. .success(function (res) {
  126. self.yqList = res.data;
  127. sp.layer("#YQLIST")
  128. })
  129. }
  130. self.goUrl1 = function (obj) {
  131. sp.openNewWindow('../DBYS/' + obj.FILEN)
  132. }
  133. self.checkedAll = false;
  134. self.checkAll = function () {
  135. self.list.forEach(function (item) {
  136. item.checked = self.checkedAll;
  137. })
  138. }
  139. self.DBTX = function () {
  140. var list = self.list.filter(function (item) {
  141. return item.checked == true;
  142. })
  143. if (list.length == 0) {
  144. sp.dialog("请选择要提醒的督办事项!");
  145. return
  146. }
  147. var array = [];
  148. list.forEach(function (item) {
  149. array.push(item.ROUTEINFOID)
  150. })
  151. $http.post(apiurljs.login + "g2app/dubantaizhang/addMessage", { data: s4.encryptData_CBC(JSON.stringify({ routeinfoids: array.join("|") })) }, postCfg)
  152. .success(function (obj) {
  153. var res = strToJson(s4.decryptData_CBC(obj.data));
  154. if (res.success) {
  155. self.getData(self.pageno)
  156. } else {
  157. sp.dialog(res.message);
  158. }
  159. })
  160. //list.forEach(function (item) {
  161. // array.push({
  162. // ROUTEINFOID: item.ROUTEINFOID,
  163. // CDATE: sp.getLocalDate(),
  164. // CONTENT: "督办提醒",
  165. // CMAN: item.CMAN,
  166. // CMANCAP: item.CMANCAP
  167. // })
  168. //})
  169. //var data = {
  170. // tablename: "ROUTEINFO_DENGMSG",
  171. // data: array
  172. //}
  173. //$http.post(apiurljs.login + "g2app/Data/insertChildDataList2", { data: s4.encryptData_CBC(JSON.stringify(data)) }, postCfg)
  174. //.success(function (obj) {
  175. // var res = strToJson(s4.decryptData_CBC(obj.data));
  176. // if (res.success) {
  177. // self.getData(self.pageno)
  178. // } else {
  179. // sp.dialog(res.message);
  180. // }
  181. //})
  182. }
  183. self.openLayer = function () {
  184. sp.layer("#Search")
  185. }
  186. self.checkDENG = function (str) {
  187. self.search.DENG = str;
  188. //if (self.search.DENG.indexOf(str) == -1) {
  189. // self.search.DENG.push(str)
  190. //} else {
  191. // self.search.DENG = self.search.DENG.filter(function (item) {
  192. // return item != str;
  193. // })
  194. //}
  195. }
  196. self.doSearch = function () {
  197. if ((self.search.DBSX1 != "" && self.search.DBSX2 == "") ||(self.search.DBSX1 == "" && self.search.DBSX2 != "")) {
  198. sp.layerhide()
  199. sp.dialog("请输入正确时间区间!");
  200. $timeout(function () {
  201. sp.dialoghide();
  202. sp.layer("#Search")
  203. }, 2000)
  204. } else {
  205. $.cookie("GlWorkPlatform-hydbtz", JSON.stringify(self.search), { path: '/', expires: 1 });
  206. self.getData(self.pageno)
  207. sp.layerhide()
  208. }
  209. }
  210. self.cancal = function () {
  211. self.search = {
  212. TITLE: "",
  213. QTBM: "",
  214. DBSX1: "",
  215. DBSX2: "",
  216. DENG: "",
  217. FLOWNAME: "",
  218. BANLI: "待办中"
  219. }
  220. $.cookie("GlWorkPlatform-hydbtz", null, { path: '/', expires: 1 });
  221. self.getData(1)
  222. sp.layerhide()
  223. }
  224. self.refresh = function () {
  225. self.getData(self.pageno);
  226. }
  227. self.download = function (obj) {
  228. window.open(apiurljs.login + "g2work/files/" + obj.FILEURL.slice(7))
  229. }
  230. self.goUrl = function (item) {
  231. if (self.deviceType == "pad") {
  232. window.location.href = "../../" + item.DURL
  233. } else {
  234. sp.openNewWindow("../../" + item.DURL, item.TITLE)
  235. }
  236. }
  237. self.printEXCEL = function () {
  238. self.columns = [
  239. { header: "督办名称", key: "TITLE", width: 50 },
  240. { header: "来源", key: "FLOWNAME", width: 20 },
  241. { header: "主办处室", key: "DEPARTMENT", width: 20 },
  242. { header: "督办时限", key: "TLDATE1", width: 20 },
  243. { header: "办理结果", key: "BANLI", width: 20 },
  244. { header: "督办提醒记录", key: "TIXING", width: 100 }
  245. ]
  246. self.listExcel = self.list.map(function (item) {
  247. return {
  248. TITLE: item.TITLE,
  249. FLOWNAME: item.FLOWNAME,
  250. DEPARTMENT: item.DEPARTMENT,
  251. TLDATE1: item.TLDATE1,
  252. BANLI: item.BANLI,
  253. TIXING: item.TIXING
  254. }
  255. })
  256. // 创建工作簿
  257. var workbook = new ExcelJS.Workbook()
  258. // 添加工作表
  259. var worksheet = workbook.addWorksheet('sheet1')
  260. // 设置表头
  261. worksheet.columns = self.columns
  262. // 添加表体数据
  263. self.listExcel.forEach(function (item) {
  264. worksheet.addRow(item)
  265. })
  266. /**
  267. * 设置样式
  268. */
  269. // 1、设置标题行样式
  270. var headerRow = worksheet.getRow(1)
  271. // 连续遍历所有非空单元格
  272. headerRow.eachCell(function (cell) {
  273. // 边框 https://github.com/exceljs/exceljs/blob/HEAD/README_zh.md#%E8%BE%B9%E6%A1%86
  274. cell.border = {
  275. top: {
  276. style: 'thin'
  277. },
  278. left: {
  279. style: 'thin'
  280. },
  281. bottom: {
  282. style: 'thin'
  283. },
  284. right: {
  285. style: 'thin'
  286. },
  287. }
  288. // 填充 https://github.com/exceljs/exceljs/blob/HEAD/README_zh.md#%E5%A1%AB%E5%85%85
  289. cell.fill = {
  290. type: 'pattern',
  291. pattern: 'solid',
  292. fgColor: {
  293. argb: '4f81bd'
  294. }
  295. }
  296. // 字体 https://github.com/exceljs/exceljs/blob/HEAD/README_zh.md#%E5%AD%97%E4%BD%93
  297. cell.font = {
  298. name: '微软雅黑',
  299. size: 11,
  300. bold: true,
  301. color: { argb: '000000' }
  302. }
  303. // 对齐 https://github.com/exceljs/exceljs/blob/HEAD/README_zh.md#%E5%AF%B9%E9%BD%90
  304. cell.alignment = {
  305. vertical: 'middle',
  306. horizontal: 'center'
  307. }
  308. })
  309. // 2、设置内容行样式
  310. const bodyRow = worksheet.getRows(2, self.listExcel.length + 1)
  311. bodyRow.forEach(function (row) {
  312. //遍历此列中的所有当前单元格,包括空单元格
  313. row.eachCell({ includeEmpty: true }, function (cell) {
  314. // 边框
  315. cell.border = {
  316. top: {
  317. style: 'thin'
  318. },
  319. left: {
  320. style: 'thin'
  321. },
  322. bottom: {
  323. style: 'thin'
  324. },
  325. right: {
  326. style: 'thin'
  327. },
  328. }
  329. // 字体 https://github.com/exceljs/exceljs/blob/HEAD/README_zh.md#%E5%AD%97%E4%BD%93
  330. cell.font = {
  331. name: '微软雅黑',
  332. size: 11,
  333. color: { argb: '000000' }
  334. }
  335. // 对齐 https://github.com/exceljs/exceljs/blob/HEAD/README_zh.md#%E5%AF%B9%E9%BD%90
  336. cell.alignment = {
  337. vertical: 'middle',
  338. horizontal: 'center'
  339. }
  340. })
  341. })
  342. // 导出表格
  343. workbook.xlsx.writeBuffer().then(function (buffer) {
  344. const blob = new Blob([buffer], {
  345. type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
  346. })
  347. const link = document.createElement('a')
  348. link.href = URL.createObjectURL(blob)
  349. link.download = '督办台账' + sp.format(sp.getLocalDate()) + '.xlsx'
  350. link.click()
  351. URL.revokeObjectURL(link.href) // 下载完成释放掉blob对象
  352. })
  353. //})
  354. }
  355. self.printOut = function () {
  356. $.ajax({
  357. url: apiurljs.login + "g2app/dataabase/ExpExeclWithDataAndOpinion_ByParam",
  358. type: 'POST',
  359. cache: false,
  360. xhr: function () {
  361. var xhr = new XMLHttpRequest();
  362. xhr.onreadystatechange = function () {
  363. if (xhr.readyState == 2) {
  364. if (xhr.status == 200) {
  365. xhr.responseType = "blob";
  366. } else {
  367. xhr.responseType = "text";
  368. }
  369. }
  370. };
  371. return xhr;
  372. },
  373. headers: {
  374. "Content-Type": "application/json",
  375. "file-argument": s4.encryptData_CBC("execlCol|督办名称,主办处室,会办处室,督办时限,办理结果,办理情况,附件&tablename|DCDB_SXDBD&columns|ROUTEINFOID,DBSX1,QTBM,XZBM,DBSX,BLJG&opinion_col|ZBBMCLQK&pageno|" + self.pageno + "&pagesize|" + self.itemsPerPage + "&order|ROUTEINFOID&sqlwhere|and DBLX = 'C02'&dateform|yyyy-MM-dd&attachtype|单项督办")
  376. },
  377. success: function (res) {
  378. download(res, "会议督办" + sp.getLocalDate() + ".et")
  379. },
  380. })
  381. }
  382. //头部下滚冻结
  383. $(function () {
  384. //页面高度撑满
  385. setTimeout(function () {
  386. if ($(".ibox-content").height() < $(window).height() - 31) {
  387. $(".ibox-content").css("height", $(window).height() - 31)
  388. }
  389. }, 1)
  390. })
  391. }])
  392. function download(data, filename, mime, bom) {
  393. var blobData = typeof bom !== "undefined" ? [bom, data] : [data];
  394. var blob = new Blob(blobData, { type: mime || "application/octet-stream" });
  395. if (typeof window.navigator.msSaveBlob !== "undefined") {
  396. // IE workaround for "HTML7007: One or more blob URLs were
  397. // revoked by closing the blob for which they were created.
  398. // These URLs will no longer resolve as the data backing
  399. // the URL has been freed."
  400. window.navigator.msSaveBlob(blob, filename);
  401. } else {
  402. var blobURL =
  403. window.URL && window.URL.createObjectURL
  404. ? window.URL.createObjectURL(blob)
  405. : window.webkitURL.createObjectURL(blob);
  406. var tempLink = document.createElement("a");
  407. tempLink.style.display = "none";
  408. tempLink.href = blobURL;
  409. tempLink.setAttribute("download", filename);
  410. // Safari thinks _blank anchor are pop ups. We only want to set _blank
  411. // target if the browser does not support the HTML5 download attribute.
  412. // This allows you to download files in desktop safari if pop up blocking
  413. // is enabled.
  414. if (typeof tempLink.download === "undefined") {
  415. tempLink.setAttribute("target", "_blank");
  416. }
  417. document.body.appendChild(tempLink);
  418. tempLink.click();
  419. // Fixes "webkit blob resource error 1"
  420. setTimeout(function () {
  421. document.body.removeChild(tempLink);
  422. window.URL.revokeObjectURL(blobURL);
  423. }, 200);
  424. }
  425. }