event_formCtrl.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. 'use strict';
  2. app.controller('event_formCtrl', ["$scope", "$rootScope", "$state", "$timeout", "$interval", "$http", "$cookieStore", "SweetAlert", "Restangular", "api_report", "api_statistic", "moment", "api_event_form", "api_user_data", function ($scope, $rootScope, $state, $timeout, $interval, $http, $cookieStore, SweetAlert, Restangular, api_report, api_statistic, moment, api_event_form, api_user_data) {
  3. //默认显示事件总数
  4. $scope.tap = 'SJZS';
  5. //默认无选中,选择日期
  6. $scope.searchstate = 'none';
  7. //默认按日统计
  8. $scope.dateItem = 'day';
  9. //按日
  10. $scope.dayByClick = function () {
  11. $scope.datepickerPopuptime = 'yyyy-MM-dd';//日期格式化
  12. $scope.day(7);//近7天
  13. };
  14. //按月
  15. $scope.monthByClick = function () {
  16. $scope.datepickerPopuptime = 'yyyy-MM';
  17. $scope.month(1);
  18. };
  19. //按年
  20. $scope.yearByClick = function () {
  21. $scope.datepickerPopuptime = 'yyyy';
  22. $scope.year(1);
  23. };
  24. //日期显示格式
  25. $scope.datepickerPopuptime = 'yyyy-MM-dd';
  26. //按日/月/年统计
  27. $scope.dateItemClick = function (str) {
  28. $scope.dateItem = str;
  29. switch (str) {
  30. case 'day':
  31. $scope.dayByClick();
  32. break;
  33. case 'month':
  34. $scope.monthByClick();
  35. break;
  36. case 'year':
  37. $scope.yearByClick();
  38. break;
  39. }
  40. };
  41. //切换开始/结束日期
  42. $scope.timesChange = function (str) {
  43. //切换结束日期的时候为年底或月底,方便传参
  44. switch (str) {
  45. case 'month':
  46. $scope.endtimesModel = moment($scope.endtimesModel).endOf('month').toDate();
  47. break;
  48. case 'year':
  49. $scope.endtimesModel = moment($scope.endtimesModel).endOf('year').toDate();
  50. break;
  51. }
  52. $scope.datepickerUpdate(str);
  53. };
  54. //配置项更新
  55. $scope.datepickerUpdate = function (str) {
  56. //开始的datepickerOptions
  57. $scope.datepickerOptionsStart = {
  58. maxDate: moment($scope.endtimesModel).format('YYYY/MM/DD'),
  59. minMode: str,
  60. datepickerMode: str
  61. };
  62. //结束的datepickerOptions
  63. $scope.datepickerOptionsEnd = {
  64. minDate: moment($scope.starttimesModel).format('YYYY/MM/DD'),
  65. maxDate: moment().format('YYYY/MM/DD'),
  66. minMode: str,
  67. datepickerMode: str
  68. };
  69. };
  70. //日期选择
  71. //近N周
  72. $scope.week = function (num) {
  73. num = num > 1 ? num : 1;
  74. $scope.searchstate = "week" + num;
  75. var weeks = new Date().getDay();
  76. $scope.starttimesModel = moment(new Date().getTime() - num * 86400000 * (weeks + 6)).toDate();
  77. $scope.endtimesModel = moment(new Date().getTime() - 86400000 * (weeks)).toDate();
  78. $scope.datepickerUpdate('day');
  79. }
  80. //近N月
  81. $scope.month = function (num) {
  82. num = num > 1 ? num : 1;
  83. $scope.searchstate = "month" + num;
  84. $scope.starttimesModel = moment().startOf('month').add(-num, 'M').toDate();
  85. $scope.endtimesModel = moment().endOf('month').add(-1, 'M').toDate();
  86. $scope.datepickerUpdate('month');
  87. }
  88. //近N年
  89. $scope.year = function (num) {
  90. num = num > 1 ? num : 1;
  91. $scope.searchstate = "year" + num;
  92. $scope.starttimesModel = moment().startOf('year').add(-num, 'y').toDate();
  93. $scope.endtimesModel = moment().endOf('year').add(-1, 'y').toDate();
  94. $scope.datepickerUpdate('year');
  95. }
  96. //近N日
  97. $scope.day = function (num) {
  98. num = num > 1 ? num : 1;
  99. $scope.searchstate = "none";
  100. $scope.starttimesModel = moment().subtract(num, "days").toDate();
  101. $scope.endtimesModel = moment().subtract(1, "days").toDate();
  102. $scope.datepickerUpdate('day');
  103. }
  104. //选择上一周,上个月,去年等等快捷方式
  105. $scope.chooseDate = function (date) {
  106. switch (date) {
  107. case 'week1'://上周
  108. $scope.week(1);
  109. break;
  110. case 'month1'://上个月
  111. $scope.month(1);
  112. break;
  113. case 'month3'://近三月
  114. $scope.month(3);
  115. break;
  116. case 'month6'://近六月
  117. $scope.month(6);
  118. break;
  119. case 'year1'://去年
  120. $scope.year(1);
  121. break;
  122. case 'year3'://近三年
  123. $scope.year(3);
  124. break;
  125. case 'year5'://近五年
  126. $scope.year(5);
  127. break;
  128. }
  129. };
  130. // 事件分类级别
  131. $scope.sjSelected = [{
  132. name: '一级分类',
  133. id: 1
  134. }, {
  135. name: '二级分类',
  136. id: 2
  137. }, {
  138. name: '三级分类',
  139. id: 3
  140. }];
  141. $scope.sjSelectedOne = {
  142. value: $scope.sjSelected[0]//选中
  143. };
  144. // 处理人/组
  145. $scope.groupSelected = [{
  146. id: -2,
  147. groupName: '按组选择'
  148. }, {
  149. id: -1,
  150. groupName: '按人选择'
  151. }];
  152. $scope.groupSelectedOne = {
  153. value: $scope.groupSelected[0]//选中
  154. };
  155. $scope.tableGroupSelectedOne = '';//处理组或人
  156. // 区域地点
  157. $scope.areaSelected = [{
  158. name: '区域',
  159. id: 1
  160. }, {
  161. name: '地点',
  162. id: 2
  163. }];
  164. $scope.areaSelectedOne = {
  165. value: $scope.areaSelected[0]//选中
  166. };
  167. /**
  168. *日历
  169. */
  170. //打开开始日期选择框
  171. $scope.startOpen = function ($event) {
  172. console.log(1)
  173. $event.preventDefault();
  174. $event.stopPropagation();
  175. $scope.endOpened = false;
  176. $scope.startOpened = !$scope.startOpened;
  177. };
  178. //打开结束日期选择框
  179. $scope.endOpen = function ($event) {
  180. $event.preventDefault();
  181. $event.stopPropagation();
  182. $scope.startOpened = false;
  183. $scope.endOpened = !$scope.endOpened;
  184. };
  185. //重置
  186. $scope.reload = function () {
  187. $scope.dateItemClick('day');
  188. switch ($scope.tap) {
  189. case 'SJZS'://事件总数
  190. $scope.mdxquery('accdate', 'desc');
  191. break;
  192. case 'SJLX'://事件类型
  193. $scope.mdxquery('sum', 'desc');
  194. $scope.sjSelectedOne.value = $scope.sjSelected[0];//事件分类级别
  195. break;
  196. case 'CLRZ'://处理人/组
  197. $scope.mdxquery('sum', 'desc');
  198. $scope.groupSelectedOne.value = $scope.groupSelected[0];//选择处理人/组
  199. break;
  200. case 'QYDD'://区域地点
  201. $scope.mdxquery('sum', 'desc');
  202. $scope.areaSelectedOne.value = $scope.areaSelected[0];//区域/地点
  203. break;
  204. case 'SJLY'://事件来源
  205. $scope.mdxquery('sum', 'desc');
  206. break;
  207. }
  208. };
  209. //选择类型,事件总数,事件类型,处理人/组,区域地点
  210. $scope.active = function (name) {
  211. $scope.tap = name;
  212. $scope.reload();
  213. };
  214. //事件总数,无限滚动加载
  215. $scope.topEndComplete = function () {
  216. console.log('滚动');
  217. };
  218. //表格排序------------------------------------------------
  219. $scope.sortActive = '';//表格排序,箭头高亮选中状态
  220. /**
  221. * 表格排序
  222. *
  223. * @param {string} name 字段名称
  224. * @param {string} type 排序方式desc,asc
  225. * @param {string} direction 箭头方向 top,bottom
  226. */
  227. $scope.tableSort = function (name, type, direction) {
  228. $scope.sortActive = name + direction;
  229. $scope.mdxquery(name, type);
  230. };
  231. //搜索----------------------------------------------------
  232. //loading
  233. $scope.isArrays = function (arr) {
  234. return Array.isArray(arr);
  235. };
  236. //事件总数
  237. $scope.sjzs_list = null;//表格列表
  238. $scope.sjzs_num = 0;//事件总数数量
  239. $scope.sjzs_responseTime = '0分';//平均响应时间
  240. $scope.sjzs_resolvedTime = '0分';//平均解决时间
  241. $scope.sjzs_satisfactionRatio = 0;//满意度
  242. //事件类型
  243. $scope.sjlx_list = null;//表格列表
  244. $scope.sjlx_num = 0;//事件总数数量
  245. //处理人/组
  246. $scope.clrz_list = null;//表格列表
  247. $scope.clrz_num = 0;//事件总数数量
  248. $scope.clrz_responseTime = '0分';//平均响应时间
  249. $scope.clrz_resolvedTime = '0分';//平均解决时间
  250. $scope.clrz_satisfactionRatio = 0;//满意度
  251. //区域地点
  252. $scope.qydd_list = null;//表格列表
  253. $scope.qydd_num = 0;//事件总数数量
  254. //事件来源
  255. $scope.sjly_list = null;//表格列表
  256. $scope.sjly_num = 0;//事件总数数量
  257. /**
  258. *
  259. *
  260. * @param {string} name 排序字段
  261. * @param {string} type 排序方式 desc,asc
  262. */
  263. $scope.mdxquery = function (name, type) {
  264. if (!name) {
  265. name = $scope.tap == 'SJZS' ? 'accdate' : 'sum';
  266. }
  267. type = type || 'desc';
  268. switch ($scope.tap) {
  269. case 'SJZS'://事件总数
  270. $scope.sjzs_list = null;
  271. // 请求列表
  272. api_event_form.fetchSjzsList({
  273. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  274. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  275. "type": $scope.dateItem,
  276. "sortData": name,
  277. "sortType": type
  278. }).then(function (res) {
  279. if (res.stats == 200) {
  280. $scope.sjzs_list = res.dataList;//表格列表
  281. $scope.sjzs_num = res.sum;//事件总数数量
  282. $scope.sjzs_responseTime = res.responseTime;//平均响应时间
  283. $scope.sjzs_resolvedTime = res.resolvedTime;//平均解决时间
  284. $scope.sjzs_satisfactionRatio = res.satisfactionRatio;//满意度
  285. }
  286. })
  287. break;
  288. case 'SJLX'://事件类型
  289. $scope.sjlx_list = null;
  290. // 请求列表
  291. api_event_form.fetchSjlxList({
  292. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  293. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  294. "hierarchy": $scope.sjSelectedOne.value.id,
  295. "sortData": name,
  296. "sortType": type
  297. }).then(function (res) {
  298. if (res.stats == 200) {
  299. $scope.sjlx_list = res.typedataList;//表格列表
  300. }
  301. })
  302. // 请求事件总数数量
  303. api_event_form.getSjNum({
  304. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  305. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  306. }).then(function (res) {
  307. if (res.stats == 200) {
  308. $scope.sjlx_num = res.data[0].sum;//事件总数数量
  309. }
  310. })
  311. break;
  312. case 'CLRZ'://处理人/组
  313. $scope.clrz_list = null;
  314. //获取组
  315. api_user_data.fetchDataList('group', {
  316. idx: 0,
  317. sum: 1000,
  318. group: {
  319. selectType: "nouser"
  320. }
  321. }).then(res => {
  322. if (res.status == 200) {
  323. var groupList = [{
  324. id: -2,
  325. groupName: '按组选择'
  326. }, {
  327. id: -1,
  328. groupName: '按人选择'
  329. }];
  330. groupList.push(...res.list);
  331. $scope.groupSelected = groupList;//下拉框数据
  332. // 请求列表
  333. if ($scope.groupSelectedOne.value.id == -2) {//按组
  334. var params = {
  335. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  336. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  337. "type": 1,
  338. "sortData": name,
  339. "sortType": type
  340. };
  341. } else if ($scope.groupSelectedOne.value.id == -1) {//按人
  342. var params = {
  343. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  344. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  345. "type": 2,
  346. "sortData": name,
  347. "sortType": type
  348. };
  349. } else {
  350. var params = {
  351. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  352. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  353. "type": 3,
  354. "groupid": $scope.groupSelectedOne.value.id,
  355. "sortData": name,
  356. "sortType": type
  357. };
  358. }
  359. api_event_form.fetchClrzList(params).then(function (res) {
  360. if (res.stats == 200) {
  361. $scope.tableGroupSelectedOne = params.type;//处理人或组
  362. $scope.clrz_list = res.listData;//表格列表
  363. $scope.clrz_num = res.sum;//事件总数量
  364. $scope.clrz_responseTime = res.responseTime;//平均响应时间
  365. $scope.clrz_resolvedTime = res.resolvedTime;//平均解决时间
  366. $scope.clrz_satisfactionRatio = res.satisfactionRatio;//满意度
  367. }
  368. })
  369. }
  370. })
  371. break;
  372. case 'QYDD'://区域地点
  373. $scope.qydd_list = null;
  374. // 请求列表
  375. api_event_form.fetchQyddList({
  376. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  377. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  378. "type": $scope.areaSelectedOne.value.id,
  379. "sortData": name,
  380. "sortType": type
  381. }).then(function (res) {
  382. if (res.stats == 200) {
  383. $scope.qydd_list = res.listData;//表格列表
  384. }
  385. })
  386. // 请求事件总数数量
  387. api_event_form.getSjNum({
  388. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  389. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD')
  390. }).then(function (res) {
  391. if (res.stats == 200) {
  392. $scope.qydd_num = res.data[0].sum;//事件总数数量
  393. }
  394. })
  395. break;
  396. case 'SJLY'://事件来源
  397. $scope.sjly_list = null;
  398. // 请求列表
  399. api_event_form.fetchSjlyList({
  400. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  401. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  402. "sortData": name,
  403. "sortType": type
  404. }).then(function (res) {
  405. if (res.stats == 200) {
  406. $scope.sjly_list = res.listData;//表格列表
  407. }
  408. })
  409. // 请求事件总数数量
  410. api_event_form.getSjNum({
  411. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  412. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD')
  413. }).then(function (res) {
  414. if (res.stats == 200) {
  415. $scope.sjly_num = res.data[0].sum;//事件总数数量
  416. }
  417. })
  418. break;
  419. }
  420. };
  421. // 请求人
  422. // api_user_data.fetchDataList('requester', {
  423. // "idx": 0,
  424. // "sum": 10
  425. // }).then(function (response) {
  426. // if (response) {
  427. // if (response.status = 200) {
  428. // $scope.requester = response.list;
  429. // }
  430. // }
  431. // })
  432. //初始化
  433. $scope.dateItemClick('day');
  434. $scope.mdxquery('accdate', 'desc');
  435. }])