event_formCtrl.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  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. $scope.type = 'desc';//表格排序,排序方式desc,asc
  189. $scope.direction = 'top';//箭头方向 top,bottom
  190. switch ($scope.tap) {
  191. case 'SJZS'://事件总数
  192. $scope.sortActive = 'accdatetop';
  193. $scope.name = 'accdate';//表格排序,字段名称
  194. $scope.mdxquery('accdate', 'desc');
  195. break;
  196. case 'SJLX'://事件类型
  197. $scope.sortActive = 'sumtop';
  198. $scope.name = 'sum';//表格排序,字段名称
  199. $scope.mdxquery('sum', 'desc');
  200. $scope.sjSelectedOne.value = $scope.sjSelected[0];//事件分类级别
  201. break;
  202. case 'CLRZ'://处理人/组
  203. $scope.sortActive = 'sumtop';
  204. $scope.name = 'sum';//表格排序,字段名称
  205. $scope.mdxquery('sum', 'desc');
  206. $scope.groupSelectedOne.value = $scope.groupSelected[0];//选择处理人/组
  207. break;
  208. case 'QYDD'://区域地点
  209. $scope.sortActive = 'sumtop';
  210. $scope.name = 'sum';//表格排序,字段名称
  211. $scope.mdxquery('sum', 'desc');
  212. $scope.areaSelectedOne.value = $scope.areaSelected[0];//区域/地点
  213. break;
  214. case 'SJLY'://事件来源
  215. $scope.sortActive = 'sumtop';
  216. $scope.name = 'sum';//表格排序,字段名称
  217. $scope.mdxquery('sum', 'desc');
  218. break;
  219. }
  220. };
  221. //选择类型,事件总数,事件类型,处理人/组,区域地点
  222. $scope.active = function (name) {
  223. $scope.tap = name;
  224. $scope.reload();
  225. };
  226. //事件总数,无限滚动加载
  227. $scope.topEndComplete = function () {
  228. console.log('滚动');
  229. };
  230. //表格排序------------------------------------------------
  231. $scope.sortActive = '';//表格排序,箭头高亮选中状态
  232. $scope.type = '';//表格排序,排序方式desc,asc
  233. $scope.name = '';//表格排序,字段名称
  234. $scope.direction = '';//箭头方向 top,bottom
  235. /**
  236. * 表格排序
  237. *
  238. * @param {string} name 字段名称
  239. * @param {string} type 排序方式desc,asc
  240. * @param {string} direction 箭头方向 top,bottom
  241. */
  242. $scope.tableSort = function (name, type, direction) {
  243. if($scope.name == name){
  244. $scope.type = $scope.type == 'desc'?'asc':'desc';
  245. $scope.direction = $scope.direction == 'top'?'bottom':'top';
  246. }else{
  247. $scope.type = 'desc';
  248. $scope.direction = 'top';
  249. }
  250. $scope.name = name;
  251. $scope.sortActive = name + $scope.direction;
  252. $scope.mdxquery(name, $scope.type);
  253. };
  254. //搜索----------------------------------------------------
  255. //loading
  256. $scope.isArrays = function (arr) {
  257. return Array.isArray(arr);
  258. };
  259. //事件总数
  260. $scope.sjzs_list = null;//表格列表
  261. $scope.sjzs_num = 0;//事件总数数量
  262. $scope.sjzs_responseTime = '0分';//平均响应时间
  263. $scope.sjzs_resolvedTime = '0分';//平均解决时间
  264. $scope.sjzs_satisfactionRatio = 0;//满意度
  265. //事件类型
  266. $scope.sjlx_list = null;//表格列表
  267. $scope.sjlx_num = 0;//事件总数数量
  268. //处理人/组
  269. $scope.clrz_list = null;//表格列表
  270. $scope.clrz_num = 0;//事件总数数量
  271. $scope.clrz_responseTime = '0分';//平均响应时间
  272. $scope.clrz_resolvedTime = '0分';//平均解决时间
  273. $scope.clrz_satisfactionRatio = 0;//满意度
  274. //区域地点
  275. $scope.qydd_list = null;//表格列表
  276. $scope.qydd_num = 0;//事件总数数量
  277. //事件来源
  278. $scope.sjly_list = null;//表格列表
  279. $scope.sjly_num = 0;//事件总数数量
  280. /**
  281. *
  282. *
  283. * @param {string} name 排序字段
  284. * @param {string} type 排序方式 desc,asc
  285. */
  286. $scope.mdxquery = function (name, type) {
  287. if (!name) {
  288. name = $scope.tap == 'SJZS' ? 'accdate' : 'sum';
  289. }
  290. type = type || 'desc';
  291. switch ($scope.tap) {
  292. case 'SJZS'://事件总数
  293. $scope.sjzs_list = null;
  294. // 请求列表
  295. api_event_form.fetchSjzsList({
  296. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  297. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  298. "type": $scope.dateItem,
  299. "sortData": name,
  300. "sortType": type
  301. }).then(function (res) {
  302. if (res.stats == 200) {
  303. $scope.sjzs_list = res.dataList;//表格列表
  304. $scope.sjzs_num = res.sum;//事件总数数量
  305. $scope.sjzs_responseTime = res.responseTime;//平均响应时间
  306. $scope.sjzs_resolvedTime = res.resolvedTime;//平均解决时间
  307. $scope.sjzs_satisfactionRatio = res.satisfactionRatio;//满意度
  308. }
  309. })
  310. break;
  311. case 'SJLX'://事件类型
  312. $scope.sjlx_list = null;
  313. // 请求列表
  314. api_event_form.fetchSjlxList({
  315. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  316. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  317. "hierarchy": $scope.sjSelectedOne.value.id,
  318. "sortData": name,
  319. "sortType": type
  320. }).then(function (res) {
  321. if (res.stats == 200) {
  322. $scope.sjlx_list = res.typedataList;//表格列表
  323. }
  324. })
  325. // 请求事件总数数量
  326. api_event_form.getSjNum({
  327. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  328. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  329. }).then(function (res) {
  330. if (res.stats == 200) {
  331. $scope.sjlx_num = res.data[0].sum;//事件总数数量
  332. }
  333. })
  334. break;
  335. case 'CLRZ'://处理人/组
  336. $scope.clrz_list = null;
  337. //获取组
  338. api_user_data.fetchDataList('group', {
  339. idx: 0,
  340. sum: 1000,
  341. group: {
  342. selectType: "nouser"
  343. }
  344. }).then(res => {
  345. if (res.status == 200) {
  346. var groupList = [{
  347. id: -2,
  348. groupName: '按组选择'
  349. }, {
  350. id: -1,
  351. groupName: '按人选择'
  352. }];
  353. groupList.push(...res.list);
  354. $scope.groupSelected = groupList;//下拉框数据
  355. // 请求列表
  356. if ($scope.groupSelectedOne.value.id == -2) {//按组
  357. var params = {
  358. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  359. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  360. "type": 1,
  361. "sortData": name,
  362. "sortType": type
  363. };
  364. } else if ($scope.groupSelectedOne.value.id == -1) {//按人
  365. var params = {
  366. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  367. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  368. "type": 2,
  369. "sortData": name,
  370. "sortType": type
  371. };
  372. } else {
  373. var params = {
  374. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  375. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  376. "type": 3,
  377. "groupid": $scope.groupSelectedOne.value.id,
  378. "sortData": name,
  379. "sortType": type
  380. };
  381. }
  382. api_event_form.fetchClrzList(params).then(function (res) {
  383. if (res.stats == 200) {
  384. $scope.tableGroupSelectedOne = params.type;//处理人或组
  385. $scope.clrz_list = res.listData;//表格列表
  386. $scope.clrz_num = res.sum;//事件总数量
  387. $scope.clrz_responseTime = res.responseTime;//平均响应时间
  388. $scope.clrz_resolvedTime = res.resolvedTime;//平均解决时间
  389. $scope.clrz_satisfactionRatio = res.satisfactionRatio;//满意度
  390. }
  391. })
  392. }
  393. })
  394. break;
  395. case 'QYDD'://区域地点
  396. $scope.qydd_list = null;
  397. // 请求列表
  398. api_event_form.fetchQyddList({
  399. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  400. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  401. "type": $scope.areaSelectedOne.value.id,
  402. "sortData": name,
  403. "sortType": type
  404. }).then(function (res) {
  405. if (res.stats == 200) {
  406. $scope.qydd_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.qydd_num = res.data[0].sum;//事件总数数量
  416. }
  417. })
  418. break;
  419. case 'SJLY'://事件来源
  420. $scope.sjly_list = null;
  421. // 请求列表
  422. api_event_form.fetchSjlyList({
  423. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  424. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD'),
  425. "sortData": name,
  426. "sortType": type
  427. }).then(function (res) {
  428. if (res.stats == 200) {
  429. $scope.sjly_list = res.listData;//表格列表
  430. }
  431. })
  432. // 请求事件总数数量
  433. api_event_form.getSjNum({
  434. "startTime": moment($scope.starttimesModel).format('YYYY-MM-DD'),
  435. "endTime": moment($scope.endtimesModel).format('YYYY-MM-DD')
  436. }).then(function (res) {
  437. if (res.stats == 200) {
  438. $scope.sjly_num = res.data[0].sum;//事件总数数量
  439. }
  440. })
  441. break;
  442. }
  443. };
  444. // 请求人
  445. // api_user_data.fetchDataList('requester', {
  446. // "idx": 0,
  447. // "sum": 10
  448. // }).then(function (response) {
  449. // if (response) {
  450. // if (response.status = 200) {
  451. // $scope.requester = response.list;
  452. // }
  453. // }
  454. // })
  455. //初始化
  456. $scope.dateItemClick('day');
  457. $scope.mdxquery('accdate', 'desc');
  458. $scope.sortActive = 'accdatetop';
  459. $scope.name = 'accdate';//表格排序,字段名称
  460. $scope.type = 'desc';//表格排序,排序方式desc,asc
  461. $scope.direction = 'top';//箭头方向 top,bottom
  462. }])