meanslistCtrl.js 56 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235
  1. 'use strict';
  2. var cmdbFormly = angular.module('formlyCMDB', [
  3. 'formly', 'formlyBootstrap', 'ui.bootstrap',
  4. 'ngSanitize','ui.select','ui.grid']);
  5. app.requires.push('formlyCMDB');
  6. cmdbFormly.controller('meansListCtrl', ['$rootScope', '$scope', '$parse', '$injector', '$http','$q', '$state', '$stateParams', '$modal', '$timeout', '$interval', 'i18nService', 'SweetAlert', 'FileUploader', 'Restangular', 'UserRestangular', 'BpmRestangular', 'api_configure_form', 'api_configure_data', 'api_bpm_domain', 'api_bpm_data', 'api_user_data', 'api_cmdb',
  7. function ($rootScope, $scope, $parse, $injector, $http, $q, $state, $stateParams, $modal, $timeout, $interval, i18nService, SweetAlert, FileUploader, Restangular, UserRestangular, BpmRestangular, api_configure_form, api_configure_data, api_bpm_domain, api_bpm_data, api_user_data, api_cmdb) {
  8. $scope.langs=i18nService.getAllLangs();
  9. $scope.lang = 'zh-cn';
  10. i18nService.setCurrentLang($scope.lang);
  11. var vm = this;
  12. vm.options = {};
  13. vm.exampleTitle = ['expressionProperties','model property'];
  14. vm.fields=[];
  15. vm.model={};
  16. vm.model["loginUser"] = $rootScope.user;
  17. var that=$injector;
  18. var parse=$parse;
  19. var formKey = "";
  20. var pdKey = "";
  21. if(angular.isDefined($state.current.pdKey)&&$state.current.pdKey!=""){
  22. pdKey = $state.current.pdKey;
  23. //console.log("pdKey::"+$state.current.pdKey);
  24. }
  25. if(angular.isDefined($stateParams.formKey)&&$stateParams.formKey!=""){
  26. formKey = $stateParams.formKey;
  27. //console.log("formKey::"+$stateParams.formKey);
  28. }
  29. // $scope.entity = angular.copy($stateParams);
  30. // $scope.ciId = $scope.entity.id;
  31. // vm.model=$scope.vm.model=decodeCIModel($scope.entity);
  32. // angular.forEach($scope.vm.tabs, function(tab){
  33. // tab.form.model = vm.model;
  34. // });
  35. //用户测试数据,后续从header的auth中获取
  36. var userId = 2;
  37. userId = $rootScope.user.id;
  38. //==============处理表单设计数据 开始====================
  39. //处理组件加载后台数据选项的方法
  40. function refreshSelectOptions(searchVal, field) {
  41. if(field.templateOptions.optionsUrl){
  42. var process = BpmRestangular.all("");
  43. if(field.templateOptions.ApiService){
  44. process = UserRestangular.all("");
  45. }
  46. process.customPOST({"idx":0,"sum":1000},field.templateOptions.optionsUrl).then(function(result){
  47. if(!field.templateOptions.options){
  48. field.templateOptions.options=[];
  49. }
  50. if(field.templateOptions.optionsDataKey){
  51. field.templateOptions.options =result[field.templateOptions.optionsDataKey];
  52. }else{
  53. field.templateOptions.options =result;
  54. }
  55. });
  56. }
  57. }
  58. function decodeVMTabForm(model, tabs){
  59. var result = {model:{},tabs:[]};
  60. var mdata = angular.fromJson(model);
  61. angular.extend(result.model,mdata);
  62. angular.forEach(tabs, function(tab){
  63. tab.form.model = vm.model;
  64. angular.forEach(tab.form.fields,function(field){
  65. if(field.key==""){
  66. delete field.key;
  67. }
  68. if(angular.isDefined(field.extjson)&&field.extjson!=""){
  69. var extObj = angular.fromJson(field.extjson);
  70. angular.extend(field.templateOptions, extObj.templateOptions);
  71. delete extObj.templateOptions;
  72. for(var prop in extObj){
  73. if(new RegExp("Expression").test(prop)){
  74. //var obj = $scope.$eval(extObj[prop]);
  75. //extObj[prop] = $scope.$eval(extObj[prop]);
  76. if(extObj[prop]!=null){
  77. if(new RegExp("function").test(extObj[prop])){
  78. var propValue = eval(extObj[prop]);
  79. extObj[prop] = propValue;
  80. }else{
  81. //console.log(extObj[prop]);
  82. var obj = $scope.$eval(extObj[prop]);
  83. extObj[prop] = obj;
  84. //console.log(obj);
  85. }
  86. }
  87. }else if(new RegExp("expressionProperties").test(prop)){
  88. for(var p in extObj[prop]){
  89. if(new RegExp("function").test(extObj[prop][p])){
  90. var propValue = eval(extObj[prop][p]);
  91. extObj[prop][p] = propValue;
  92. }else{
  93. //if(p.indexOf("'")>=0){
  94. // var obj = $scope.$eval(extObj[prop][p]);
  95. // extObj[prop][$scope.$eval(p)]=obj;
  96. //}
  97. }
  98. }
  99. }else if("watcher"==prop){
  100. if(angular.isArray(extObj[prop])){
  101. angular.forEach(extObj[prop],function(item,index){
  102. for(var p in item){
  103. if(new RegExp("function").test(item[p])){
  104. var propValue = eval(item[p]);
  105. extObj[prop][index][p] = propValue;
  106. }
  107. }
  108. });
  109. }else if(angular.isObject(extObj[prop])){
  110. for(var p in extObj[prop]){
  111. if(new RegExp("function").test(extObj[prop][p])){
  112. var propValue = eval(extObj[prop][p]);
  113. extObj[prop][p] = propValue;
  114. }
  115. }
  116. }
  117. }
  118. }
  119. angular.extend(field,extObj);
  120. delete field.extjson;
  121. }
  122. if(field.extjson==""){
  123. delete field.extjson;
  124. }
  125. if(angular.isDefined(field.templateOptions)){
  126. var templateOs = field.templateOptions;
  127. for(var property in templateOs){
  128. //console.log(property);
  129. if(angular.isString(templateOs[property])&& !(new RegExp("[\u4e00-\u9fa5]").test(templateOs[property]))){
  130. if(new RegExp("function").test(templateOs[property])){
  131. var propValue = eval(templateOs[property]);
  132. field.templateOptions[property] = propValue;
  133. }else{
  134. if(that.has(templateOs[property])){
  135. field.templateOptions[property] = that.get(templateOs[property]);
  136. }else{
  137. field.templateOptions[property] = templateOs[property];
  138. }
  139. }
  140. }else if(templateOs[property]==null){
  141. //delete field.templateOptions[property];
  142. }else{
  143. }
  144. }
  145. }
  146. if(angular.isDefined(field.templateOptions) && angular.isDefined(field.templateOptions.extjson)){
  147. var extObj = angular.fromJson(field.templateOptions.extjson);//JSON.parse(field.extjson);
  148. angular.extend(field.templateOptions,extObj);
  149. delete field.templateOptions.extjson;
  150. }
  151. //...
  152. if(field.templateOptions){
  153. //处理远程获取数据控件方法调用
  154. if(field.templateOptions.optionsUrl){
  155. field.templateOptions.refresh = refreshSelectOptions;
  156. }
  157. //处理嵌套属性数据绑定/
  158. if(field.templateOptions.pkey){
  159. var pmodel,i= 0;
  160. angular.forEach(field.templateOptions.pkey.split("."),function(p){
  161. if(i==0){
  162. if(result.model[p]==null){
  163. result.model[p] = {};
  164. }
  165. pmodel = result.model[p];
  166. i++;
  167. }else{
  168. if(pmodel[p]==null){
  169. pmodel[p] = {};
  170. }
  171. pmodel = pmodel[p];
  172. }
  173. });
  174. if(pmodel!=null){
  175. field.model = pmodel;
  176. if(pmodel[field.key]==null){
  177. pmodel[field.key] = null;
  178. }
  179. }
  180. }else{
  181. if(result.model[field.key]==null){
  182. result.model[field.key] = null;
  183. }
  184. }
  185. //处理弹出框组件初始化
  186. if(field.type=="ui-input-selectmodal"){
  187. field.templateOptions.modal = $modal;
  188. //field.templateOptions.Restangular = Restangular;
  189. }else if(field.type=="ui-userselect"){
  190. field.templateOptions.modal = $modal;
  191. //field.templateOptions.Restangular = Restangular;
  192. }else if(field.type=="ui-multiuserselect"){
  193. field.templateOptions.modal = $modal;
  194. }else if(field.type=="ui-modelselect"){
  195. field.templateOptions.modal = $modal;
  196. //field.templateOptions.Restangular = Restangular;
  197. }else if(field.type=="ui-dropfile"){
  198. field.templateOptions.fileUploader = new FileUploader({
  199. url:'/uploader'
  200. });
  201. field.templateOptions.taskId = $stateParams.taskId;
  202. field.templateOptions.processInstanceId = $stateParams.processInstanceId;
  203. field.templateOptions.userId = $rootScope.user.id;
  204. //field.ApiService=api_bpm_domain;
  205. }else if(field.type=="ui-dropfiletable"){
  206. if(field.templateOptions.processInstanceId){
  207. }else{
  208. field.templateOptions.processInstanceId = $stateParams.processInstanceId;
  209. }
  210. }else if(field.type=="ui-repeatSection"){
  211. var repeatForm = {
  212. model:{
  213. },
  214. fields:field.templateOptions.fields
  215. };
  216. repeatForm.model[field.key]=[];
  217. decodeVMTabForm(repeatForm);
  218. }
  219. }
  220. // console.log(field);
  221. //field
  222. //result.fields.push(field);
  223. })
  224. });
  225. vm.originalTabs = angular.copy(vm.form);
  226. }
  227. //解析自定义表单设计数据
  228. function decodeVMForm(vmForm){
  229. var result = {model:{},tabs:[]};
  230. //设置模型实体数据 begin
  231. // var mdata = vmForm.model;
  232. //解析数据实体
  233. var mdata = angular.fromJson(vmForm.model);//JSON.parse(field.extjson);
  234. angular.extend(result.model,mdata);
  235. //设置模型实体数据 end
  236. //解析设计数据生成表单项 begin
  237. var fields = [];
  238. //处理修改设计数据中展示设置
  239. angular.forEach(vmForm.tabs, function(field){
  240. if(field.key==""){
  241. delete field.key;
  242. }
  243. if(angular.isDefined(field.extjson)){
  244. var extObj = angular.fromJson(field.extjson);//JSON.parse(field.extjson);
  245. angular.extend(field.templateOptions, extObj.templateOptions);
  246. delete extObj.templateOptions;
  247. for(var prop in extObj){
  248. if(new RegExp("Expression").test(prop)){
  249. //var obj = $scope.$eval(extObj[prop]);
  250. //extObj[prop] = $scope.$eval(extObj[prop]);
  251. if(extObj[prop]!=null){
  252. if(new RegExp("function").test(extObj[prop])){
  253. var propValue = eval(extObj[prop]);
  254. extObj[prop] = propValue;
  255. }else{
  256. //console.log(extObj[prop]);
  257. var obj = $scope.$eval(extObj[prop]);
  258. extObj[prop] = obj;
  259. //console.log(obj);
  260. }
  261. }
  262. }else if(new RegExp("expressionProperties").test(prop)){
  263. for(var p in extObj[prop]){
  264. if(new RegExp("function").test(extObj[prop][p])){
  265. var propValue = eval(extObj[prop][p]);
  266. extObj[prop][p] = propValue;
  267. }else{
  268. //if(p.indexOf("'")>=0){
  269. // var obj = $scope.$eval(extObj[prop][p]);
  270. // extObj[prop][$scope.$eval(p)]=obj;
  271. //}
  272. }
  273. }
  274. }else if("watcher"==prop){
  275. if(angular.isArray(extObj[prop])){
  276. angular.forEach(extObj[prop],function(item,index){
  277. for(var p in item){
  278. if(new RegExp("function").test(item[p])){
  279. var propValue = eval(item[p]);
  280. extObj[prop][index][p] = propValue;
  281. }
  282. }
  283. });
  284. }else if(angular.isObject(extObj[prop])){
  285. for(var p in extObj[prop]){
  286. if(new RegExp("function").test(extObj[prop][p])){
  287. var propValue = eval(extObj[prop][p]);
  288. extObj[prop][p] = propValue;
  289. }
  290. }
  291. }
  292. }
  293. }
  294. angular.extend(field,extObj);
  295. delete field.extjson;
  296. }
  297. if(angular.isDefined(field.templateOptions)){
  298. var templateOs = field.templateOptions;
  299. for(var property in templateOs){
  300. //console.log(property);
  301. if(angular.isString(templateOs[property])&& !(new RegExp("[\u4e00-\u9fa5]").test(templateOs[property]))){
  302. if(new RegExp("function").test(templateOs[property])){
  303. var propValue = eval(templateOs[property]);
  304. field.templateOptions[property] = propValue;
  305. }else{
  306. if(that.has(templateOs[property])){
  307. field.templateOptions[property] = that.get(templateOs[property]);
  308. }else{
  309. field.templateOptions[property] = templateOs[property];
  310. }
  311. }
  312. }else if(templateOs[property]==null){
  313. //delete field.templateOptions[property];
  314. }else{
  315. }
  316. }
  317. }
  318. console.log(field);
  319. if(angular.isDefined(field.templateOptions) && angular.isDefined(field.templateOptions.extjson)){
  320. var extObj = angular.fromJson(field.templateOptions.extjson);//JSON.parse(field.extjson);
  321. angular.extend(field.templateOptions,extObj);
  322. delete field.templateOptions.extjson;
  323. }
  324. //...
  325. if(field.templateOptions){
  326. //处理远程获取数据控件方法调用
  327. if(field.templateOptions.optionsUrl){
  328. field.templateOptions.refresh = refreshSelectOptions;
  329. }
  330. //处理嵌套属性数据绑定/
  331. if(field.templateOptions.pkey){
  332. var pmodel,i= 0;
  333. angular.forEach(field.templateOptions.pkey.split("."),function(p){
  334. if(i==0){
  335. if(result.model[p]==null){
  336. result.model[p] = {};
  337. }
  338. pmodel = result.model[p];
  339. i++;
  340. }else{
  341. if(pmodel[p]==null){
  342. pmodel[p] = {};
  343. }
  344. pmodel = pmodel[p];
  345. }
  346. });
  347. if(pmodel!=null){
  348. field.model = pmodel;
  349. if(pmodel[field.key]==null){
  350. pmodel[field.key] = null;
  351. }
  352. }
  353. }else{
  354. if(result.model[field.key]==null){
  355. result.model[field.key] = null;
  356. }
  357. }
  358. //处理弹出框组件初始化
  359. if(field.type=="ui-input-selectmodal"){
  360. field.templateOptions.modal = $modal;
  361. //field.templateOptions.Restangular = Restangular;
  362. }else if(field.type=="ui-userselect"){
  363. field.templateOptions.modal = $modal;
  364. //field.templateOptions.Restangular = Restangular;
  365. }else if(field.type=="ui-multiuserselect"){
  366. field.templateOptions.modal = $modal;
  367. }else if(field.type=="ui-modelselect"){
  368. field.templateOptions.modal = $modal;
  369. //field.templateOptions.Restangular = Restangular;
  370. }else if(field.type=="ui-dropfile"){
  371. field.templateOptions.fileUploader = new FileUploader({
  372. url:'/uploader'
  373. });
  374. field.templateOptions.taskId = $stateParams.taskId;
  375. field.templateOptions.processInstanceId = $stateParams.processInstanceId;
  376. field.templateOptions.userId = $rootScope.user.id;
  377. //field.ApiService=api_bpm_domain;
  378. }else if(field.type=="ui-dropfiletable"){
  379. if(field.templateOptions.processInstanceId){
  380. }else{
  381. field.templateOptions.processInstanceId = $stateParams.processInstanceId;
  382. }
  383. }else if(field.type=="ui-repeatSection"){
  384. var repeatForm = {
  385. model:{
  386. },
  387. fields:field.templateOptions.fields
  388. };
  389. repeatForm.model[field.key]=[];
  390. decodeVMForm(repeatForm);
  391. }
  392. }
  393. // console.log(field);
  394. result.fields.push(field);
  395. });
  396. angular.extend($scope.vm.fields,result.fields);
  397. angular.extend($scope.vm.model,result.model);
  398. $scope.formData = vmForm;
  399. //console.log($scope.vm);
  400. //解析设计数据生成表单项 end
  401. return result;
  402. }
  403. //======================处理表单设计数据 结束========================
  404. $scope.ldloading = {};
  405. function filter(obj) {
  406. angular.forEach(obj, function(key, value){
  407. if (value === "" || value === null){
  408. delete obj[key];
  409. } else if (Object.prototype.toString.call(value) === '[object Object]') {
  410. filter(value);
  411. } else if (angular.isArray(value)) {
  412. angular.forEach(value,function(item){
  413. filter(item);
  414. });
  415. }
  416. });
  417. }
  418. function invokeOnAllFormOptions(fn) {
  419. angular.forEach(vm.tabs, function(tab) {
  420. if (tab.form.options && tab.form.options[fn]) {
  421. tab.form.options[fn]();
  422. }
  423. });
  424. }
  425. function encodeCIData(data){
  426. /*
  427. create/update state:未审核
  428. create createtime:系统时间
  429. create/update lastupdatetime : 系统时间
  430. label:ci分类
  431. */
  432. if($scope.classify){
  433. var baseprop = ['uuid','name','type','label','status','createtime','lastupdatetime','props'];//state|audittime//createtime//removeflag|removetime//configperson//lastupdateperson//manager//useradmin
  434. var extraprop = 'props';
  435. data[extraprop] = {};
  436. for(var key in data){
  437. console.log(data[key]);
  438. if(_.indexOf(baseprop, key)>=0){
  439. continue;
  440. }else{
  441. data[extraprop][key] = data[key];
  442. delete data[key];
  443. }
  444. }
  445. if($rootScope.user){
  446. data[extraprop]['lastupdateperson']=$rootScope.user.name;
  447. data[extraprop]['configperson']=$rootScope.user.name;
  448. var isCMAdminFlag = false;
  449. angular.forEach($rootScope.user.role,function(roleItem){
  450. if(roleItem.rolecode == "cmdb charge"){
  451. isCMAdminFlag = true;
  452. }
  453. })
  454. if(!isCMAdminFlag){
  455. data[extraprop]['state']='1';
  456. }
  457. }
  458. data.label=$scope.classify;
  459. return data;
  460. }
  461. return undefined;
  462. }
  463. function decodeCIModel(data){
  464. var extraprop = 'props';
  465. if(data[extraprop]){
  466. for(var key in data[extraprop]){
  467. data[key] = data[extraprop][key];
  468. }
  469. delete data[extraprop];
  470. }
  471. data['iscmadmin']=false;
  472. angular.forEach($rootScope.user.role,function(roleItem){
  473. if(roleItem.rolecode == "cmdb charge"){
  474. data['iscmadmin'] = true;
  475. }
  476. })
  477. return data;
  478. }
  479. vm.remove = function(data, style){
  480. $scope.ldloading[style.replace('-', '_')] = true;
  481. var cidata = {
  482. label:data.label,
  483. id:$scope.ciId,
  484. uuid:data.uuid,
  485. name:data.name,
  486. props:{}
  487. };
  488. if($scope.ciId){
  489. cidata.props['removeflag']=true;
  490. //cidata.props['removetime']=new Date();
  491. api_cmdb.put(cidata,$scope.ciId).then(function(response){
  492. if(response){
  493. var resData = Restangular.stripRestangular(response);
  494. SweetAlert.swal({
  495. title: "保存成功!",
  496. confirmButtonColor: "#007AFF"
  497. },function(){
  498. refreshData($scope.classify);
  499. reinitTabForm($scope.classify);
  500. });
  501. }else{
  502. SweetAlert.swal({
  503. title: "系统错误",
  504. text: "系统错误,请稍后重试!",
  505. type: "error",
  506. confirmButtonColor: "#DD6B55"
  507. });
  508. }
  509. $scope.ldloading[style.replace('-', '_')] = false;
  510. });
  511. }else{
  512. $timeout(function () {
  513. $scope.ldloading[style.replace('-', '_')] = false;
  514. }, 2000);
  515. }
  516. }
  517. function formValid(){
  518. angular.forEach(vm.tabs,function(item){
  519. //item.
  520. })
  521. }
  522. vm.submit = function(data, style){
  523. $scope.ldloading[style.replace('-', '_')] = true;
  524. console.log(vm.form.$$parentForm.$valid);
  525. if (vm.form.$$parentForm.$valid) {
  526. invokeOnAllFormOptions('updateInitialValue');
  527. //alert(JSON.stringify(vm.model), null, 2);
  528. //vm.options.updateInitialValue();
  529. //console.log(vm.model);
  530. var cidata = encodeCIData(vm.model);
  531. if(cidata){
  532. //var cidata = ;
  533. if($scope.ciId){
  534. api_cmdb.put(cidata,$scope.ciId).then(function(response){
  535. if(response){
  536. var resData = Restangular.stripRestangular(response);
  537. SweetAlert.swal({
  538. title: "保存成功!",
  539. confirmButtonColor: "#007AFF"
  540. },function(){
  541. refreshData($scope.classify);
  542. reinitTabForm($scope.classify);
  543. });
  544. }else{
  545. SweetAlert.swal({
  546. title: "系统错误",
  547. text: "系统错误,请稍后重试!",
  548. type: "error",
  549. confirmButtonColor: "#DD6B55"
  550. });
  551. }
  552. $scope.ldloading[style.replace('-', '_')] = false;
  553. });
  554. }else{
  555. api_cmdb.create(cidata).then(function(response){
  556. if(response){
  557. var resData = Restangular.stripRestangular(response);
  558. SweetAlert.swal({
  559. title: "保存成功!",
  560. confirmButtonColor: "#007AFF"
  561. },function(){
  562. refreshData($scope.classify);
  563. reinitTabForm($scope.classify);
  564. });
  565. // if(resData.status){
  566. // resData
  567. // }
  568. }else{
  569. SweetAlert.swal({
  570. title: "系统错误",
  571. text: "系统错误,请稍后重试!",
  572. type: "error",
  573. confirmButtonColor: "#DD6B55"
  574. });
  575. }
  576. $scope.ldloading[style.replace('-', '_')] = false;
  577. });
  578. }
  579. }else{
  580. SweetAlert.swal({
  581. title: "错误",
  582. text: "错误,请选择配置项分类!",
  583. type: "error",
  584. confirmButtonColor: "#DD6B55"
  585. });
  586. }
  587. //alert(JSON.stringify(cidata), null, 2);
  588. $scope.ldloading[style.replace('-', '_')] = true;
  589. return;
  590. var _ = window._;
  591. vm.model = (function filter(obj) {
  592. var filtered = _.pick(obj, function (v) { return angular.isDefined(v) && v !== null && (angular.isArray(v)?v.length>0:true) && (_.isPlainObject(v)?(!_.isEmpty(v)):true); });
  593. return _.cloneDeep(filtered, function (v) { return v !== filtered && _.isPlainObject(v) ? filter(v) : undefined; });
  594. })(vm.model);
  595. if(pdKey!=""){
  596. if($scope.oprcode=="save"){//保存
  597. api_bpm_domain.save(taskId, vm.model).then(function(response){
  598. if(response){
  599. var resData = Restangular.stripRestangular(response);
  600. SweetAlert.swal({
  601. title: "保存成功!",
  602. confirmButtonColor: "#007AFF"
  603. },function(){
  604. $state.go($scope.formData.cancelUri);
  605. });
  606. // if(resData.status){
  607. // resData
  608. // }
  609. }else{
  610. SweetAlert.swal({
  611. title: "系统错误",
  612. text: "系统错误,请稍后重试!",
  613. type: "error",
  614. confirmButtonColor: "#DD6B55"
  615. });
  616. }
  617. $scope.ldloading[style.replace('-', '_')] = false;
  618. });
  619. }else{
  620. switch($scope.formData.url){
  621. case "start" :
  622. vm.model["initUser"]=$rootScope.user.id;
  623. if(vm.model["assignee"]||vm.model["candidateGroups"]){
  624. }else{
  625. vm.model["assignee"]=$rootScope.user.id;
  626. }
  627. api_bpm_domain.start(pdKey,vm.model).then(function(response){
  628. if(response){
  629. var resData = Restangular.stripRestangular(response);
  630. SweetAlert.swal({
  631. title: "提交成功!",
  632. confirmButtonColor: "#007AFF"
  633. },function(){
  634. $state.go($scope.formData.cancelUrl);
  635. });
  636. }else{
  637. SweetAlert.swal({
  638. title: "系统错误",
  639. text: "系统错误,请稍后重试!",
  640. type: "error",
  641. confirmButtonColor: "#DD6B55"
  642. });
  643. }
  644. $scope.ldloading[style.replace('-', '_')] = false;
  645. });
  646. break;
  647. case "complete" :
  648. // api_bpm_domain.complete(pdKey, userId, vm.model).then(function(response){
  649. console.log("complete taskId::"+$stateParams.taskId);
  650. api_bpm_domain.complete($stateParams.taskId, userId, vm.model).then(function(response){
  651. if(response){
  652. var resData = Restangular.stripRestangular(response);
  653. SweetAlert.swal({
  654. title: "提交成功!",
  655. confirmButtonColor: "#007AFF"
  656. },function(){
  657. // if($scope.uploader.getNotUploadedItems().length>0&&response.data.processInstanceId){
  658. // // $scope.uploader.options.url();
  659. // $scope.uploader.onBeforeUploadItem = function(item) {
  660. // item.url = api_bpm_domain.saveAttachments($stateParams.processInstanceId,$stateParams.taskId,$scope.user.id).getRequestedUrl();
  661. // console.info('onBeforeUploadItem', item);
  662. // };
  663. // $scope.uploader.uploadAll();
  664. // }
  665. $state.go($scope.formData.cancelUrl);
  666. });
  667. }else{
  668. SweetAlert.swal({
  669. title: "系统错误",
  670. text: "系统错误,请稍后重试!",
  671. type: "error",
  672. confirmButtonColor: "#DD6B55"
  673. });
  674. }
  675. $scope.ldloading[style.replace('-', '_')] = false;
  676. });
  677. break;
  678. default:
  679. $scope.ldloading[style.replace('-', '_')] = false;
  680. break;
  681. }
  682. }
  683. // var submitFunc = api_bpm_domain[$scope.formData.url]
  684. // if(anuglar.isFunction(submitFunc)){
  685. // submitFunc.apply(null, pdKey)
  686. // }
  687. }
  688. }else{
  689. if(vm.form.$$parentForm.$error){
  690. SweetAlert.swal({
  691. title: "校验错误",
  692. text: "请填写必填项!",
  693. type: "error",
  694. confirmButtonColor: "#DD6B55"
  695. });
  696. angular.forEach(vm.form.$$parentForm.$error.required, function(item){
  697. angular.forEach(vm.tabs,function(tab){
  698. angular.forEach(tab.form.fields,function(f){
  699. if(f.name == item.$name){
  700. f.validation.show = true;
  701. tab.active=true;
  702. }
  703. })
  704. })
  705. });
  706. $scope.ldloading[style.replace('-', '_')] = false;
  707. }
  708. }
  709. };
  710. $scope.vm = vm;
  711. //cmdb list
  712. $scope.gridOptions = {};
  713. $scope.gridOptions.data = 'myData';
  714. $scope.gridOptions.enableColumnResizing = true;
  715. $scope.gridOptions.enableFiltering = true;
  716. $scope.gridOptions.enableGridMenu = true;
  717. $scope.gridOptions.enableRowSelection = true;
  718. $scope.gridOptions.enableRowHeaderSelection=false;
  719. $scope.gridOptions.showGridFooter = true;
  720. $scope.gridOptions.showColumnFooter = true;
  721. $scope.gridOptions.fastWatch = true;
  722. $scope.gridOptions.useExternalPagination = false;
  723. $scope.gridOptions.paginationPageSizes = [10];
  724. $scope.gridOptions.paginationPageSize = 10;
  725. $scope.gridOptions.multiSelect = false;
  726. $scope.gridOptions.modifierKeysToMultiSelect = false;
  727. //$scope.gridOptions.noUnselect = true;
  728. //$scope.gridOptions.rowTemplate = "<div ng-dblclick=\"grid.appScope.pdList.onDblClick(row)\" 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>";
  729. //
  730. $scope.gridOptions.rowIdentity = function(row) {
  731. return row.id;
  732. };
  733. $scope.gridOptions.getRowIdentity = function(row) {
  734. return row.id;
  735. };
  736. $scope.transferstate = function(state){
  737. if(state=="1"){return state="未审核"}
  738. else if(state=="2"){return state="已审核"}
  739. else if(state=="3"){return state="不匹配"}
  740. else if(state=="4"){return state="丢失"}
  741. }
  742. $scope.transferremoveflag = function(removeflag){
  743. if(removeflag==true){return removeflag="已删除"}
  744. else if(removeflag==false){return removeflag="正常"}
  745. }
  746. $scope.gridOptions.columnDefs = [
  747. {
  748. name: 'uuid',
  749. displayName: '搜索代码',
  750. width: 100
  751. }, {
  752. name: 'name',
  753. displayName: '配置项名称',
  754. width: 100
  755. },{
  756. name: 'status',
  757. displayName: '配置项状态',
  758. width: 140
  759. }, {
  760. name: 'props.state',
  761. displayName: '配置项审批状态',
  762. width: 100,
  763. cellTemplate:'<div class="ui-grid-cell-contents">{{grid.appScope.transferstate(row.entity.props.state)}}</div>'
  764. }, {
  765. name: 'props.configperson',
  766. displayName: '配置项管理员',
  767. width: 100
  768. }, {
  769. name: 'props.removeflag',
  770. displayName: '是否删除',
  771. width: 140,
  772. cellTemplate:'<div class="ui-grid-cell-contents">{{grid.appScope.transferremoveflag(row.entity.props.removeflag)}}</div>'
  773. }];
  774. $scope.gridOptions.onRegisterApi = function(gridApi) {
  775. $scope.gridApi = gridApi;
  776. /*
  777. // gridApi.pagination.on.paginationChanged($scope, function(newPage, pageSize) {
  778. // console.log(newPage);
  779. // console.log(pageSize);
  780. // refreshData({
  781. // "idx": newPage - 1,
  782. // "sum": pageSize
  783. // });
  784. // });
  785. */
  786. gridApi.selection.on.rowSelectionChanged($scope, function(data) {
  787. //$scope.selected.item = data.entity;
  788. $scope.entity = angular.copy(data.entity);
  789. $scope.ciId = data.entity.id;
  790. //TODO
  791. vm.model=$scope.vm.model=decodeCIModel($scope.entity);
  792. angular.forEach($scope.vm.tabs, function(tab){
  793. tab.form.model = vm.model;
  794. });
  795. //decodeVMTabForm($scope.entity, vm.tabs);
  796. //console.log(data);
  797. });
  798. };
  799. // $scope.gridOptions.appScopeProvider = {
  800. // onDblClick : function(row) {
  801. // $state.go('app.form.detail',{data:row, formKey:'changeDetail', pdKey:'change'});
  802. // //var url = '//google.com';
  803. // //$window.open(url, "_blank", "height=600,width=800,toolbar=no,location=no,menubar=no,titlebar=no");
  804. // }
  805. // };
  806. this.selectRowFunction = function(data) {
  807. $scope.ciId = data.id;
  808. console.log(data);
  809. // $state.go('app.process.modeler',{modelId:data.id});
  810. // $state.go('app.change.editor', {
  811. // taskId: data.taskId,
  812. // processInstanceId: data.processInstanceId
  813. // });
  814. };
  815. var reinitTabForm = function(classify){
  816. $scope.ciId = undefined;
  817. api_configure_form.renderTabForm(classify).then(function(data){
  818. var myData = Restangular.stripRestangular(data);
  819. //angular.extend($scope.vm.fields,result.fields);
  820. //angular.extend($scope.vm.model,result.model);
  821. $scope.templateProps = myData;
  822. $scope.vm.tabs = myData;
  823. vm.model = {};
  824. decodeVMTabForm(vm.model, vm.tabs);
  825. //$scope.vm.originalTabs = angular.copy($scope.vm.form);
  826. //console.log(myData);
  827. });
  828. }
  829. var refreshData = function(filterData){
  830. if(angular.isUndefined(filterData)){
  831. return;
  832. }
  833. $scope.myData = [];
  834. api_cmdb.query({'sign':filterData}).then(function(data){
  835. var myData = Restangular.stripRestangular(data);
  836. console.log(myData.data);
  837. if(myData.data&&myData.status==200){
  838. var ret = myData.data.node;
  839. // for(var i=0;i<ret.length;i++){
  840. // if(ret[i].status){
  841. // if(ret[i].status=="1"){ ret[i].statu="已部署"}
  842. // else if(ret[i].status=="2"){ ret[i].statu="测试中"}
  843. // else if(ret[i].status=="3"){ ret[i].statu="使用中"}
  844. // else if(ret[i].status=="4"){ ret[i].statu="维护中"}
  845. // else if(ret[i].status=="5"){ ret[i].statu="报废"}
  846. // else if(ret[i].status=="6"){ ret[i].statu="备用"}
  847. // }
  848. // }
  849. $scope.gridOptions.totalItems = ret.length;
  850. $scope.myData = ret;
  851. }
  852. });
  853. };
  854. api_configure_form.renderTabForm($stateParams.myDatalist).then(function(data){
  855. var myData = Restangular.stripRestangular(data);
  856. $scope.templateProps = myData;
  857. $scope.vm.tabs = myData;
  858. vm.model = {};
  859. vm.model["loginUser"]= $rootScope.user.name;
  860. console.log(vm.model);
  861. decodeVMTabForm(vm.model, vm.tabs);
  862. console.log(myData);
  863. });
  864. var apple_selected, tree, treedata_avm, treedata_geography;
  865. // $scope.my_tree_handler = function (branch) {
  866. // //var _ref;
  867. // $scope.ciclassify=branch;
  868. // $scope.classify=branch.prefix.toLowerCase()+branch.sign;
  869. // refreshData($scope.classify);
  870. // $scope.ciId = undefined;
  871. // api_configure_form.renderTabForm($scope.classify).then(function(data){
  872. // var myData = Restangular.stripRestangular(data);
  873. // //angular.extend($scope.vm.fields,result.fields);
  874. // //angular.extend($scope.vm.model,result.model);
  875. // $scope.templateProps = myData;
  876. // $scope.vm.tabs = myData;
  877. // vm.model = {};
  878. // vm.model["loginUser"]= $rootScope.user.name;
  879. // console.log(vm.model);
  880. // decodeVMTabForm(vm.model, vm.tabs);
  881. // //$scope.vm.originalTabs = angular.copy($scope.vm.form);
  882. // console.log(myData);
  883. // });
  884. // console.log(branch);
  885. // };
  886. // $scope.my_data = [];
  887. // function convertListToTree(data, treeMap){
  888. // var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  889. // var root = null; //Initially set our loop to null
  890. // var parentNode = null;
  891. // //loop over data
  892. // for(var i = 0; i < data.length; i++) {
  893. // var datum = data[i];
  894. // //each node will have children, so let's give it a "children" poperty
  895. // datum.children = [];
  896. // //add an entry for this node to the map so that any future children can
  897. // //lookup the parent
  898. // idToNodeMap[datum.id] = datum;
  899. // //Does this node have a parent?
  900. // if(typeof datum.parent === "undefined" || datum.parent == null) {
  901. // //Doesn't look like it, so this node is the root of the tree
  902. // root = datum;
  903. // treeMap[datum.id] = root;
  904. // } else {
  905. // //This node has a parent, so let's look it up using the id
  906. // parentNode = idToNodeMap[datum.parent.id];
  907. // //We don't need this property, so let's delete it.
  908. // delete datum.parent;
  909. // //Let's add the current node as a child of the parent node.
  910. // parentNode.children.push(datum);
  911. // }
  912. // }
  913. // return root;
  914. // }
  915. // function convertParentToChildList(data){
  916. // var treeMap = {};
  917. // var list=[];
  918. // convertListToTree(data, treeMap);
  919. // angular.forEach(treeMap,function(item){
  920. // list.push(item);
  921. // });
  922. // return list;
  923. // }
  924. // $scope.my_tree = tree = {};
  925. // $scope.try_async_load = function () {
  926. // $scope.my_data = [];
  927. // $scope.doing_async = true;
  928. // api_configure_data.fetchDataList('ciclassify',{'idx':0,'sum':100}).then(function(result){
  929. // console.log(result['list']);
  930. // $scope.my_data = convertParentToChildList(result['list']);
  931. // $scope.doing_async = false;
  932. // tree.expand_all();
  933. // //console.log(treelist);
  934. // });
  935. // };
  936. // $scope.try_async_load();
  937. // var importUploader = $scope.importUploader = new FileUploader({
  938. // url:api_cmdb.import().getRequestedUrl()
  939. // });
  940. // importUploader.filters.push({
  941. // name: 'customFilter',
  942. // fn: function(item /*{File|FileLikeObject}*/ , options) {
  943. // var type = item.name.slice(item.name.lastIndexOf('.') + 1);
  944. // //var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
  945. // return (type == 'csv');
  946. // }
  947. // });
  948. // importUploader.onWhenAddingFileFailed = function(item /*{File|FileLikeObject}*/ , filter, options) {
  949. // console.info('onWhenAddingFileFailed', item, filter, options);
  950. // };
  951. // importUploader.onAfterAddingFile = function(fileItem) {
  952. // console.info('onAfterAddingFile', fileItem);
  953. // };
  954. // importUploader.onAfterAddingAll = function(addedFileItems) {
  955. // console.info('onAfterAddingAll', addedFileItems);
  956. // };
  957. // importUploader.onProgressItem = function(fileItem, progress) {
  958. // console.info('onProgressItem', fileItem, progress);
  959. // };
  960. // importUploader.onProgressAll = function(progress) {
  961. // console.info('onProgressAll', progress);
  962. // };
  963. // importUploader.onSuccessItem = function(fileItem, response, status, headers) {
  964. // SweetAlert.swal({
  965. // title: "导入成功!",
  966. // confirmButtonColor: "#007AFF",
  967. // type: "success"
  968. // },function(){
  969. // refreshData($scope.classify);
  970. // });
  971. // console.info('onSuccessItem', fileItem, response, status, headers);
  972. // };
  973. // importUploader.onErrorItem = function(fileItem, response, status, headers) {
  974. // console.info('onErrorItem', fileItem, response, status, headers);
  975. // SweetAlert.swal({
  976. // title: "系统错误!",
  977. // text: "系统错误,请稍候重试!",
  978. // type: "error"
  979. // });
  980. // };
  981. // importUploader.onCancelItem = function(fileItem, response, status, headers) {
  982. // console.info('onCancelItem', fileItem, response, status, headers);
  983. // };
  984. // importUploader.onCompleteItem = function(fileItem, response, status, headers) {
  985. // console.info('onCompleteItem', fileItem, response, status, headers);
  986. // };
  987. // importUploader.onCompleteAll = function() {
  988. // console.info('onCompleteAll');
  989. // };
  990. // $scope.ldloading = {};
  991. // $scope.import = function(){
  992. // $scope.ldloading.expand = true;
  993. // if(angular.isDefined($scope.ciclassify)&&$scope.ciclassify!=null){
  994. // if(angular.isUndefined($scope.ciclassify.children)||$scope.ciclassify.children.length==0){
  995. // importUploader.onBeforeUploadItem = function(item) {
  996. // item.formData.push({'fileName':$scope.classify});
  997. // item.formData.push({'uid':$rootScope.user.name});
  998. // console.info('onBeforeUploadItem', item);
  999. // };
  1000. // importUploader.uploadAll();
  1001. // $scope.ldloading.expand = false;
  1002. // }else{
  1003. // SweetAlert.swal({
  1004. // title: "参数不合法!",
  1005. // text: "参数不合法,请选择没有子类的配置项导入!",
  1006. // type: "error"
  1007. // });
  1008. // }
  1009. // }else{
  1010. // SweetAlert.swal({
  1011. // title: "参数不合法!",
  1012. // text: "参数不合法,请选择需要导入配置项分类!",
  1013. // type: "error"
  1014. // });
  1015. // }
  1016. // }
  1017. // $scope.ldloading = {};
  1018. // $scope.export = function(){
  1019. // $scope.ldloading.expand_right = true;
  1020. // if(angular.isDefined($scope.ciclassify)&&$scope.ciclassify!=null){
  1021. // if(angular.isUndefined($scope.ciclassify.children)||$scope.ciclassify.children.length==0){
  1022. // api_cmdb.export($scope.classify).then(function(response){
  1023. // var dataList = Restangular.stripRestangular(response);
  1024. // if(dataList&&(dataList.length>=1)){
  1025. // var headers = [];
  1026. // var fieldHeaders = [];
  1027. // var fields = [];
  1028. // var rowData = [];
  1029. // if($scope.templateProps.length>0){
  1030. // angular.forEach($scope.templateProps, function(prop){
  1031. // headers.push(prop.title);
  1032. // angular.forEach(prop.form.fields, function(field, index){
  1033. // fieldHeaders.push(field.templateOptions.label);
  1034. // fields.push(field.key);
  1035. // if(index!=0){
  1036. // headers.push("");
  1037. // }
  1038. // });
  1039. // })
  1040. // }
  1041. // var rowLine = [];
  1042. // angular.forEach(dataList, function(data){
  1043. // rowLine = [];
  1044. // angular.forEach(fields,function(keyfield){
  1045. // if(data[keyfield]){
  1046. // if(keyfield=="state"){
  1047. // if(data[keyfield]=="1"){data[keyfield]="未审核"}
  1048. // else if(data[keyfield]=="2"){data[keyfield]="已审核"}
  1049. // else if(data[keyfield]=="3"){data[keyfield]="不匹配"}
  1050. // else if(data[keyfield]=="4"){data[keyfield]="丢失"}
  1051. // rowLine.push(data[keyfield]);
  1052. // }else if(keyfield=="removeflag"){
  1053. // if(data[keyfield]){data[keyfield]="已删除"}
  1054. // else{data[keyfield]="正常"}
  1055. // rowLine.push(data[keyfield]);
  1056. // }else if(keyfield=="ownershipType"||keyfield=="bladeownershipType"||keyfield=="miniwnershipType"||keyfield=="bdcOwnershipType"){
  1057. // if(data[keyfield]=="1"){data[keyfield]="独立采购"}
  1058. // else if(data[keyfield]=="2"){data[keyfield]="项目采购"}
  1059. // else if(data[keyfield]=="3"){data[keyfield]="借用"}
  1060. // else if(data[keyfield]=="4"){data[keyfield]="赠送"}
  1061. // rowLine.push(data[keyfield]);
  1062. // }else if(keyfield=="createtime"||keyfield=="audittime"||keyfield=="lastupdatetime"||keyfield=="removetime"){
  1063. // data[keyfield]=moment(data[keyfield]).format('YYYY-MM-DD HH:mm:ss')
  1064. // rowLine.push(data[keyfield]);
  1065. // }else{
  1066. // if(data[keyfield]==true){data[keyfield]="是"}
  1067. // else if(data[keyfield]==false){data[keyfield]="否"}
  1068. // rowLine.push(data[keyfield]);
  1069. // // data[keyfield]=moment(data[keyfield]).format('YYYY-MM-DD HH:mm:ss')
  1070. // }
  1071. // }else{
  1072. // rowLine.push("");
  1073. // }
  1074. // })
  1075. // rowData.push(rowLine);
  1076. // })
  1077. // var csvdata = headers.join(',') + '\r\n';
  1078. // csvdata = csvdata + fieldHeaders.join(',') + '\r\n';
  1079. // csvdata = csvdata + fields.join(',') + '\r\n';
  1080. // angular.forEach(rowData, function(line){
  1081. // csvdata = csvdata + line.join(',') + '\r\n';
  1082. // })
  1083. // csvdata = "\ufeff" + csvdata;
  1084. // var file = new Blob([ csvdata ], {
  1085. // type : 'application/csv;charset=utf-8'
  1086. // });
  1087. // var filename = $scope.ciclassify.label;
  1088. // var fileURL = URL.createObjectURL(file);
  1089. // var a = document.createElement('a');
  1090. // a.href = fileURL;
  1091. // a.target = '_blank';
  1092. // a.download = filename +'.csv';
  1093. // document.body.appendChild(a);
  1094. // a.click();
  1095. // $scope.ldloading.expand_right = false;
  1096. // }
  1097. // })
  1098. // }else{
  1099. // SweetAlert.swal({
  1100. // title: "参数不合法!",
  1101. // text: "参数不合法,请选择没有子类的配置项导出!",
  1102. // type: "error"
  1103. // });
  1104. // }
  1105. // }else{
  1106. // SweetAlert.swal({
  1107. // title: "参数不合法!",
  1108. // text: "参数不合法,请选择需要导出的配置项分类!",
  1109. // type: "error"
  1110. // });
  1111. // }
  1112. // }
  1113. // $scope.download = function(){
  1114. // if(angular.isDefined($scope.ciclassify)&&$scope.ciclassify!=null){
  1115. // //api_cmdb.download($scope.sign).getRequestedUrl();
  1116. // if(angular.isUndefined($scope.ciclassify.children)||$scope.ciclassify.children.length==0){
  1117. // var filename = $scope.ciclassify.label;
  1118. // //$scope.ciclassify.
  1119. // var headers = [];
  1120. // var fieldHeaders = [];
  1121. // var fields = [];
  1122. // if($scope.templateProps.length>0){
  1123. // angular.forEach($scope.templateProps, function(prop){
  1124. // headers.push(prop.title);
  1125. // angular.forEach(prop.form.fields, function(field, index){
  1126. // fieldHeaders.push(field.templateOptions.label);
  1127. // fields.push(field.key);
  1128. // if(index!=0){
  1129. // headers.push("");
  1130. // }
  1131. // });
  1132. // })
  1133. // }
  1134. // if(headers.length>1){
  1135. // var csvdata = headers.join(',') + '\r\n';
  1136. // csvdata = csvdata + fieldHeaders.join(',') + '\r\n';
  1137. // csvdata = csvdata + fields.join(',') + '\r\n';
  1138. // csvdata = "\ufeff" + csvdata;
  1139. // var file = new Blob([ csvdata ], {
  1140. // type : 'application/csv;charset=utf-8'
  1141. // //type : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
  1142. // });
  1143. // //trick to download store a file having its URL
  1144. // var fileURL = URL.createObjectURL(file);
  1145. // var a = document.createElement('a');
  1146. // a.href = fileURL;
  1147. // a.target = '_blank';
  1148. // a.download = filename +'.csv';
  1149. // document.body.appendChild(a);
  1150. // a.click();
  1151. // }
  1152. // }else{
  1153. // SweetAlert.swal({
  1154. // title: "参数不合法!",
  1155. // text: "参数不合法,请选择没有子类的配置项进行模版下载!",
  1156. // type: "error"
  1157. // });
  1158. // }
  1159. // }else{
  1160. // SweetAlert.swal({
  1161. // title: "参数不合法!",
  1162. // text: "参数不合法,请选择需要下载模版的配置项分类!",
  1163. // type: "error"
  1164. // });
  1165. // }
  1166. // }
  1167. }]);