moonTaskCtrl.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. 'use strict';
  2. /**
  3. * controller for User Profile Example
  4. */
  5. app.controller('moonTaskListCtrl', ["$rootScope", "$scope", "$state", "$timeout", "$interval", "$modal", "SweetAlert", "i18nService", "uiGridConstants", "uiGridGroupingConstants", "Restangular", "api_bpm_schedule", "api_bpm_data","api_doc_data","api_user_data","api_wechatfile","FileUploader","api_bpm_domain","$http","$stateParams","api_task_export", function($rootScope, $scope, $state, $timeout, $interval, $modal, SweetAlert, i18nService, uiGridConstants, uiGridGroupingConstants, Restangular, api_bpm_schedule, api_bpm_data,api_doc_data,api_user_data,api_wechatfile,FileUploader,api_bpm_domain,$http,$stateParams,api_task_export) {
  6. $scope.langs = i18nService.getAllLangs();
  7. $scope.lang = 'zh-cn';
  8. i18nService.setCurrentLang($scope.lang);
  9. var loginUser = $rootScope.user;
  10. $scope.personListData={};//责任人下拉框列表数据
  11. $scope.personData={};//责任人下拉数据
  12. $scope.stateData={};//状态下拉数据
  13. $scope.stateListData={};//状态下拉框列表数据
  14. //ui-grid设置
  15. $scope.gridOptions = {};
  16. $scope.gridOptions.data = 'myData';
  17. $scope.gridOptions.enableColumnResizing = true;
  18. $scope.gridOptions.enableFiltering = true;
  19. $scope.gridOptions.enableGridMenu = false;
  20. $scope.gridOptions.enableSelectAll = false;
  21. $scope.gridOptions.enableRowSelection = true;
  22. $scope.gridOptions.showGridFooter = true;
  23. $scope.gridOptions.showColumnFooter = false;
  24. $scope.gridOptions.fastWatch = true;
  25. $scope.gridOptions.useExternalFiltering = true;
  26. $scope.gridOptions.useExternalPagination = true;
  27. $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100];
  28. $scope.gridOptions.paginationPageSize = 10;
  29. $scope.gridOptions.multiSelect = true;
  30. // 状态下拉框数据
  31. $scope.stateListData2 = {};
  32. $scope.getStateData2=function(){
  33. var data={
  34. "key":'task_month_state',
  35. "type":'list'
  36. }
  37. api_wechatfile.getDictionary(data).then(function(res){
  38. angular.forEach(res,function(v,i){
  39. $scope.stateListData2[v.value] = v.id;
  40. })
  41. $scope.stateListData=res;
  42. })
  43. }
  44. $scope.getStateData2();
  45. // $scope.gridOptions.rowTemplate = '<div style="background: red"><a>123</a></div';
  46. $scope.gridOptions.rowTemplate = "<div ng-dblclick=\"grid.appScope.onDblClick(row.entity)\" ng-repeat=\"(colRenderIndex, col) in colContainer.renderedColumns track by col.uid\" ui-grid-one-bind-id-grid=\"rowRenderIndex + '-' + col.uid + '-cell'\" class=\"ui-grid-cell\" ng-class=\"{ 'ui-grid-row-header-cell': col.isRowHeader }\" role=\"{{col.isRowHeader ? 'rowheader' : 'gridcell'}}\" ui-grid-cell></div>";
  47. $scope.gridOptions.rowIdentity = function(row) {
  48. return row.id;
  49. };
  50. $scope.gridOptions.getRowIdentity = function(row) {
  51. return row.id;
  52. };
  53. $scope.transferColor = function(item) {
  54. var color = "icon iconfont icon-zhengchang greenfont";
  55. if (item && item.colourInfo) {
  56. if (item.colourInfo.id == 1) {
  57. color = "icon iconfont icon-yiyuqi redfont";
  58. } else if (item.colourInfo.id == 2) {
  59. color = "iconfont icon-yuqixinxiu yellofont";
  60. }
  61. } else {
  62. // color = "white";
  63. }
  64. return color;
  65. }
  66. $scope.transfertip = function(item) {
  67. var tip = "正常";
  68. if (item && item.colourInfo) {
  69. if (item.colourInfo.id == 1) {
  70. tip = "逾期";
  71. } else if (item.colourInfo.id == 2) {
  72. tip = "即将逾期";
  73. }
  74. } else {
  75. // color = "white";
  76. }
  77. return tip;
  78. }
  79. $scope.gridOptions.columnDefs = [
  80. {
  81. name: 'item',
  82. displayName: '序号',
  83. width: '5%',
  84. cellTemplate: '<div>' +
  85. '<div class="ui-grid-cell-contents">{{row.entity.item}}</div>' +
  86. '</div>',
  87. enableFiltering: false
  88. },
  89. {
  90. name: 'taskDescribe',
  91. displayName: '任务描述',
  92. width: '25%',
  93. enableFiltering: false
  94. },
  95. {
  96. name: 'liableShowName',
  97. displayName: '责任人',
  98. width: '10%',
  99. enableFiltering: false
  100. },
  101. {
  102. name: 'strStartTime',
  103. displayName: '开始时间',
  104. width: '15%',
  105. enableFiltering: false,
  106. cellTemplate: '<div>' +
  107. '<div class="ui-grid-cell-contents">{{row.entity.strStartTime}}</div>' +
  108. '</div>',
  109. },
  110. {
  111. name: 'strEndTime',
  112. displayName: '结束时间',
  113. width: '15%',
  114. enableFiltering: false
  115. },
  116. {
  117. name: 'priority.name',
  118. displayName: '优先级',
  119. width: '6%',
  120. enableFiltering: false
  121. },
  122. {
  123. name: 'state.name',
  124. displayName: '状态',
  125. width: '6%',
  126. enableFiltering: false
  127. },
  128. {
  129. name: 'strUpdateTime3',
  130. displayName: '操作',
  131. enableFiltering: false,
  132. cellTemplate: '<div class="cl-effect-1 ui-grid-cell-contents pull-left">' +
  133. '<a ng-click="grid.appScope.edit(row.entity)" tooltip="编辑" tooltip-placement="right" ng-show="row.entity.state.id==grid.appScope.stateListData2[1]">编辑</a>' +
  134. '<a ng-click="grid.appScope.distribution(row.entity)" tooltip="分配" tooltip-placement="right" class="bianjifont" ng-show="row.entity.state.id==grid.appScope.stateListData2[1]">分配</a>' +
  135. '<a ng-click="grid.appScope.feedback(row.entity)" tooltip="反馈" tooltip-placement="right" class="bianjifont" ng-show="row.entity.state.id==grid.appScope.stateListData2[1]">反馈</a>' +
  136. '<a ng-click="grid.appScope.summary(row.entity)" tooltip="任务总结" tooltip-placement="right" class="bianjifont" ng-show="row.entity.state.id==grid.appScope.stateListData2[2]">任务总结</a>' +
  137. '<a ng-click="grid.appScope.see(row.entity)" tooltip="查看" tooltip-placement="right" class="bianjifont" ng-show="row.entity.state.id==grid.appScope.stateListData2[3]">查看</a>' +
  138. '</div>'
  139. }
  140. ];
  141. // 导出
  142. $scope.export=function(){
  143. $http({
  144. url: api_task_export.taskExport("exportTask", 2018).getRequestedUrl(),
  145. method: 'GET',
  146. // data: JSON.stringify(filadata),
  147. headers: {
  148. // 'Content-type': 'application/xls',
  149. 'Accept': '*/*'
  150. },
  151. responseType: 'arraybuffer'
  152. }).success(function (data, status, headers, config) {
  153. // $scope.ldloading.zoom_in = false;
  154. var file = new Blob([data], {
  155. type: 'application/vnd.ms-excel'
  156. });
  157. //trick to download store a file having its URL
  158. var fileURL = URL.createObjectURL(file);
  159. var a = document.createElement('a');
  160. a.href = fileURL;
  161. a.target = '_blank';
  162. a.download = '任务列表.xls';
  163. document.body.appendChild(a);
  164. a.click();
  165. }).error(function (data, status, headers, config) {
  166. // $scope.ldloading.zoom_in = false;
  167. });
  168. }
  169. // 双击
  170. $scope.onDblClick=function(data){
  171. console.log(data);
  172. var toData={
  173. model:{taskMonth:data}
  174. }
  175. $state.go('app.task.editTask',{"formKey":"taskSee","model":JSON.stringify(toData)})
  176. }
  177. // 查看
  178. $scope.see=function(data){
  179. console.log(data);
  180. var toData={
  181. model:{taskMonth:data}
  182. }
  183. $state.go('app.task.editTask',{"formKey":"taskSee","model":JSON.stringify(toData)})
  184. }
  185. // 任务总结
  186. $scope.summary=function(data){
  187. var toData={
  188. model:{taskMonth:data}
  189. }
  190. $state.go('app.task.editTask',{"formKey":"taskSummary","model":JSON.stringify(toData)})
  191. }
  192. //反馈
  193. $scope.feedback=function(data){
  194. console.log(data);
  195. var toData={
  196. model:{taskMonth:data}
  197. }
  198. $state.go('app.task.editTask',{"formKey":"taskFeedback","model":JSON.stringify(toData)})
  199. }
  200. //分配
  201. $scope.distribution=function(data){
  202. console.log(data);
  203. var toData={
  204. model:{taskMonth:data}
  205. }
  206. $state.go('app.task.editTask',{"formKey":"taskDistribution","model":JSON.stringify(toData)})
  207. }
  208. // 编辑
  209. $scope.edit=function(data){
  210. console.log(data);
  211. var toData={
  212. model:{taskMonth:data}
  213. }
  214. $state.go('app.task.editTask',{"formKey":"taskEdit","model":JSON.stringify(toData)})
  215. }
  216. $scope.selected = {
  217. items: []
  218. }
  219. $scope.editted = {
  220. items: []
  221. }
  222. //grid控制器
  223. $scope.gridOptions.onRegisterApi = function(gridApi) {
  224. //分页控制
  225. gridApi.pagination.on.paginationChanged($scope, function(newPage, pageSize) {
  226. // var filterData = JSON.parse(sessionStorage.inspectListParameter);
  227. $scope.jry_filterdata.idx = newPage - 1;
  228. $scope.jry_filterdata.sum = pageSize;
  229. $scope.refreshData('expand-right', $scope.jry_filterdata);
  230. });
  231. }
  232. $scope.jry_filterdata={
  233. 'idx':0,
  234. 'sum':10,
  235. 'taskMonth':{
  236. 'userid':loginUser.id,
  237. 'role':loginUser.role
  238. }
  239. }
  240. // 责任人下拉框数据
  241. $scope.getPersonData=function(){
  242. var data={
  243. "idx":0,
  244. "sum":1000
  245. }
  246. api_user_data.fetchDataList("user",data).then(function(res){
  247. $scope.personListData=res.list;
  248. })
  249. }
  250. $scope.getPersonData();
  251. // 搜索
  252. $scope.search=function(){
  253. if($scope.personData.data){
  254. // console.log($scope.personData);
  255. $scope.jry_filterdata.taskMonth['liableid']=$scope.personData.data.id
  256. }
  257. if($scope.stateData.data){
  258. $scope.jry_filterdata.taskMonth['state']={id:$scope.stateData.data.id}
  259. }
  260. if($scope.jry_filterdata.taskMonth.strStartTime){
  261. $scope.jry_filterdata.taskMonth.strStartTime = moment(new Date($scope.jry_filterdata.taskMonth.strStartTime).getTime()).format('YYYY-MM-DD HH:mm:ss');
  262. }
  263. if($scope.jry_filterdata.taskMonth.strEndTime){
  264. $scope.jry_filterdata.taskMonth.strEndTime = moment(new Date($scope.jry_filterdata.taskMonth.strEndTime).getTime()).format('YYYY-MM-DD HH:mm:ss');
  265. }
  266. $scope.refreshData('expand-right', $scope.jry_filterdata);
  267. }
  268. //重置
  269. $scope.clean=function(){
  270. delete $scope.jry_filterdata.taskMonth.liableid;
  271. delete $scope.jry_filterdata.taskMonth.state;
  272. delete $scope.jry_filterdata.taskMonth.strStartTime;
  273. delete $scope.jry_filterdata.taskMonth.strEndTime;
  274. $scope.personData={};
  275. $scope.stateData={};
  276. $scope.refreshData('expand-right', $scope.jry_filterdata);
  277. }
  278. //时间控件
  279. $scope.open = function ($event) {
  280. $event.preventDefault();
  281. $event.stopPropagation();
  282. $scope.opened = !$scope.opened;
  283. };
  284. $scope.endOpen = function ($event) {
  285. $event.preventDefault();
  286. $event.stopPropagation();
  287. $scope.startOpened = false;
  288. $scope.endOpened = !$scope.endOpened;
  289. };
  290. $scope.startOpen = function ($event) {
  291. $event.preventDefault();
  292. $event.stopPropagation();
  293. $scope.endOpened = false;
  294. $scope.startOpened = !$scope.startOpened;
  295. };
  296. $scope.ldloading = {};
  297. $scope.refreshData = function(style, filterData) {
  298. $scope.ldloading[style.replace('-', '_')] = true;
  299. if (angular.isUndefined(filterData)) {
  300. filterData = defaultFilterData;
  301. }
  302. $scope.myData = [];
  303. var liableName=[];
  304. $scope.memoryfilterData = filterData;
  305. api_doc_data.fetchDataList('taskMonth',filterData).then(function(data) {
  306. var myData = Restangular.stripRestangular(data);
  307. $scope.gridOptions.totalItems = myData.totalNum;
  308. if (angular.isArray(myData.list)) {
  309. $scope.myData = myData.list;
  310. for (var i = 0; i < $scope.myData.length; i++) {
  311. //添加序号
  312. $scope.myData[i]['item'] = i + 1 + filterData.idx * filterData.sum;
  313. // $scope.myData[i].startTime=moment($scope.myData[i].startTime).format('YYYY-MM-DD HH:mm:ss');
  314. // $scope.myData[i].endTime=moment($scope.myData[i].endTime).format('YYYY-MM-DD HH:mm:ss');
  315. for(var j=0;j<$scope.myData[i].liable.length;j++){
  316. liableName.push($scope.myData[i].liable[j].name);
  317. $scope.myData[i]['liableShowName']=liableName.join('、');
  318. }
  319. liableName=[];
  320. }
  321. console.log($scope.myData);
  322. $scope.ldloading[style.replace('-', '_')] = false;
  323. }
  324. else {
  325. $scope.ldloading[style.replace('-', '_')] = false;
  326. SweetAlert.swal({
  327. title: "数据为空",
  328. text: myData.data,
  329. type: "warning"
  330. });
  331. }
  332. }, function() {
  333. $scope.ldloading[style.replace('-', '_')] = false;
  334. });
  335. };
  336. $scope.refreshData('expand-right', $scope.jry_filterdata);
  337. }]);