meanslistCtrl.js 14 KB

1
  1. "use strict";var cmdbFormly=angular.module("formlyCMDB",["formly","formlyBootstrap","ui.bootstrap","ngSanitize","ui.select","ui.grid"]);app.requires.push("formlyCMDB"),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",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){function refreshSelectOptions(e,t){if(t.templateOptions.optionsUrl){var o=BpmRestangular.all("");t.templateOptions.ApiService&&(o=UserRestangular.all("")),o.customPOST({idx:0,sum:1e3},t.templateOptions.optionsUrl).then(function(e){t.templateOptions.options||(t.templateOptions.options=[]),t.templateOptions.optionsDataKey?t.templateOptions.options=e[t.templateOptions.optionsDataKey]:t.templateOptions.options=e})}}function decodeVMTabForm(model,tabs){var result={model:{},tabs:[]},mdata=angular.fromJson(model);angular.extend(result.model,mdata),angular.forEach(tabs,function(tab){tab.form.model=vm.model,angular.forEach(tab.form.fields,function(field){if(""==field.key&&delete field.key,angular.isDefined(field.extjson)&&""!=field.extjson){var extObj=angular.fromJson(field.extjson);angular.extend(field.templateOptions,extObj.templateOptions),delete extObj.templateOptions;for(var prop in extObj)if(new RegExp("Expression").test(prop)){if(null!=extObj[prop])if(new RegExp("function").test(extObj[prop])){var propValue=eval(extObj[prop]);extObj[prop]=propValue}else{var obj=$scope.$eval(extObj[prop]);extObj[prop]=obj}}else if(new RegExp("expressionProperties").test(prop)){for(var p in extObj[prop])if(new RegExp("function").test(extObj[prop][p])){var propValue=eval(extObj[prop][p]);extObj[prop][p]=propValue}}else if("watcher"==prop)if(angular.isArray(extObj[prop]))angular.forEach(extObj[prop],function(item,index){for(var p in item)if(new RegExp("function").test(item[p])){var propValue=eval(item[p]);extObj[prop][index][p]=propValue}});else if(angular.isObject(extObj[prop]))for(var p in extObj[prop])if(new RegExp("function").test(extObj[prop][p])){var propValue=eval(extObj[prop][p]);extObj[prop][p]=propValue}angular.extend(field,extObj),delete field.extjson}if(""==field.extjson&&delete field.extjson,angular.isDefined(field.templateOptions)){var templateOs=field.templateOptions;for(var property in templateOs)if(angular.isString(templateOs[property])&&!new RegExp("[一-龥]").test(templateOs[property]))if(new RegExp("function").test(templateOs[property])){var propValue=eval(templateOs[property]);field.templateOptions[property]=propValue}else that.has(templateOs[property])?field.templateOptions[property]=that.get(templateOs[property]):field.templateOptions[property]=templateOs[property];else null==templateOs[property]}if(angular.isDefined(field.templateOptions)&&angular.isDefined(field.templateOptions.extjson)){var extObj=angular.fromJson(field.templateOptions.extjson);angular.extend(field.templateOptions,extObj),delete field.templateOptions.extjson}if(field.templateOptions){if(field.templateOptions.optionsUrl&&(field.templateOptions.refresh=refreshSelectOptions),field.templateOptions.pkey){var pmodel,i=0;angular.forEach(field.templateOptions.pkey.split("."),function(e){0==i?(null==result.model[e]&&(result.model[e]={}),pmodel=result.model[e],i++):(null==pmodel[e]&&(pmodel[e]={}),pmodel=pmodel[e])}),null!=pmodel&&(field.model=pmodel,null==pmodel[field.key]&&(pmodel[field.key]=null))}else null==result.model[field.key]&&(result.model[field.key]=null);if("ui-input-selectmodal"==field.type)field.templateOptions.modal=$modal;else if("ui-userselect"==field.type)field.templateOptions.modal=$modal;else if("ui-multiuserselect"==field.type)field.templateOptions.modal=$modal;else if("ui-modelselect"==field.type)field.templateOptions.modal=$modal;else if("ui-dropfile"==field.type)field.templateOptions.fileUploader=new FileUploader({url:"/uploader"}),field.templateOptions.taskId=$stateParams.taskId,field.templateOptions.processInstanceId=$stateParams.processInstanceId,field.templateOptions.userId=$rootScope.user.id;else if("ui-dropfiletable"==field.type)field.templateOptions.processInstanceId||(field.templateOptions.processInstanceId=$stateParams.processInstanceId);else if("ui-repeatSection"==field.type){var repeatForm={model:{},fields:field.templateOptions.fields};repeatForm.model[field.key]=[],decodeVMTabForm(repeatForm)}}})}),vm.originalTabs=angular.copy(vm.form)}function decodeVMForm(vmForm){var result={model:{},tabs:[]},mdata=angular.fromJson(vmForm.model);angular.extend(result.model,mdata);var fields=[];return angular.forEach(vmForm.tabs,function(field){if(""==field.key&&delete field.key,angular.isDefined(field.extjson)){var extObj=angular.fromJson(field.extjson);angular.extend(field.templateOptions,extObj.templateOptions),delete extObj.templateOptions;for(var prop in extObj)if(new RegExp("Expression").test(prop)){if(null!=extObj[prop])if(new RegExp("function").test(extObj[prop])){var propValue=eval(extObj[prop]);extObj[prop]=propValue}else{var obj=$scope.$eval(extObj[prop]);extObj[prop]=obj}}else if(new RegExp("expressionProperties").test(prop)){for(var p in extObj[prop])if(new RegExp("function").test(extObj[prop][p])){var propValue=eval(extObj[prop][p]);extObj[prop][p]=propValue}}else if("watcher"==prop)if(angular.isArray(extObj[prop]))angular.forEach(extObj[prop],function(item,index){for(var p in item)if(new RegExp("function").test(item[p])){var propValue=eval(item[p]);extObj[prop][index][p]=propValue}});else if(angular.isObject(extObj[prop]))for(var p in extObj[prop])if(new RegExp("function").test(extObj[prop][p])){var propValue=eval(extObj[prop][p]);extObj[prop][p]=propValue}angular.extend(field,extObj),delete field.extjson}if(angular.isDefined(field.templateOptions)){var templateOs=field.templateOptions;for(var property in templateOs)if(angular.isString(templateOs[property])&&!new RegExp("[一-龥]").test(templateOs[property]))if(new RegExp("function").test(templateOs[property])){var propValue=eval(templateOs[property]);field.templateOptions[property]=propValue}else that.has(templateOs[property])?field.templateOptions[property]=that.get(templateOs[property]):field.templateOptions[property]=templateOs[property];else null==templateOs[property]}if(angular.isDefined(field.templateOptions)&&angular.isDefined(field.templateOptions.extjson)){var extObj=angular.fromJson(field.templateOptions.extjson);angular.extend(field.templateOptions,extObj),delete field.templateOptions.extjson}if(field.templateOptions){if(field.templateOptions.optionsUrl&&(field.templateOptions.refresh=refreshSelectOptions),field.templateOptions.pkey){var pmodel,i=0;angular.forEach(field.templateOptions.pkey.split("."),function(e){0==i?(null==result.model[e]&&(result.model[e]={}),pmodel=result.model[e],i++):(null==pmodel[e]&&(pmodel[e]={}),pmodel=pmodel[e])}),null!=pmodel&&(field.model=pmodel,null==pmodel[field.key]&&(pmodel[field.key]=null))}else null==result.model[field.key]&&(result.model[field.key]=null);if("ui-input-selectmodal"==field.type)field.templateOptions.modal=$modal;else if("ui-userselect"==field.type)field.templateOptions.modal=$modal;else if("ui-multiuserselect"==field.type)field.templateOptions.modal=$modal;else if("ui-modelselect"==field.type)field.templateOptions.modal=$modal;else if("ui-dropfile"==field.type)field.templateOptions.fileUploader=new FileUploader({url:"/uploader"}),field.templateOptions.taskId=$stateParams.taskId,field.templateOptions.processInstanceId=$stateParams.processInstanceId,field.templateOptions.userId=$rootScope.user.id;else if("ui-dropfiletable"==field.type)field.templateOptions.processInstanceId||(field.templateOptions.processInstanceId=$stateParams.processInstanceId);else if("ui-repeatSection"==field.type){var repeatForm={model:{},fields:field.templateOptions.fields};repeatForm.model[field.key]=[],decodeVMForm(repeatForm)}}result.fields.push(field)}),angular.extend($scope.vm.fields,result.fields),angular.extend($scope.vm.model,result.model),$scope.formData=vmForm,result}function filter(e){angular.forEach(e,function(t,o){""===o||null===o?delete e[t]:"[object Object]"===Object.prototype.toString.call(o)?filter(o):angular.isArray(o)&&angular.forEach(o,function(e){filter(e)})})}function invokeOnAllFormOptions(e){angular.forEach(vm.tabs,function(t){t.form.options&&t.form.options[e]&&t.form.options[e]()})}function encodeCIData(e){if($scope.classify){var t=["uuid","name","type","label","status","createtime","lastupdatetime","props"],o="props";e[o]={};for(var a in e)_.indexOf(t,a)>=0||(e[o][a]=e[a],delete e[a]);if($rootScope.user){e[o].lastupdateperson=$rootScope.user.name,e[o].configperson=$rootScope.user.name;var l=!1;angular.forEach($rootScope.user.role,function(e){"cmdb charge"==e.rolecode&&(l=!0)}),l||(e[o].state="1")}return e.label=$scope.classify,e}}function decodeCIModel(e){var t="props";if(e[t]){for(var o in e[t])e[o]=e[t][o];delete e[t]}return e.iscmadmin=!1,angular.forEach($rootScope.user.role,function(t){"cmdb charge"==t.rolecode&&(e.iscmadmin=!0)}),e}function formValid(){angular.forEach(vm.tabs,function(e){})}$scope.langs=i18nService.getAllLangs(),$scope.lang="zh-cn",i18nService.setCurrentLang($scope.lang);var vm=this;vm.options={},vm.exampleTitle=["expressionProperties","model property"],vm.fields=[],vm.model={},vm.model.loginUser=$rootScope.user;var that=$injector,parse=$parse,formKey="",pdKey="";angular.isDefined($state.current.pdKey)&&""!=$state.current.pdKey&&(pdKey=$state.current.pdKey),angular.isDefined($stateParams.formKey)&&""!=$stateParams.formKey&&(formKey=$stateParams.formKey);var userId=2;userId=$rootScope.user.id,$scope.ldloading={},vm.remove=function(e,t){$scope.ldloading[t.replace("-","_")]=!0;var o={label:e.label,id:$scope.ciId,uuid:e.uuid,name:e.name,props:{}};$scope.ciId?(o.props.removeflag=!0,api_cmdb.put(o,$scope.ciId).then(function(e){if(e){Restangular.stripRestangular(e);SweetAlert.swal({title:"保存成功!",confirmButtonColor:"#007AFF"},function(){refreshData($scope.classify),reinitTabForm($scope.classify)})}else SweetAlert.swal({title:"系统错误",text:"系统错误,请稍后重试!",type:"error",confirmButtonColor:"#DD6B55"});$scope.ldloading[t.replace("-","_")]=!1})):$timeout(function(){$scope.ldloading[t.replace("-","_")]=!1},2e3)},vm.submit=function(e,t){if($scope.ldloading[t.replace("-","_")]=!0,vm.form.$$parentForm.$valid){invokeOnAllFormOptions("updateInitialValue");var o=encodeCIData(vm.model);return o?$scope.ciId?api_cmdb.put(o,$scope.ciId).then(function(e){if(e){Restangular.stripRestangular(e);SweetAlert.swal({title:"保存成功!",confirmButtonColor:"#007AFF"},function(){refreshData($scope.classify),reinitTabForm($scope.classify)})}else SweetAlert.swal({title:"系统错误",text:"系统错误,请稍后重试!",type:"error",confirmButtonColor:"#DD6B55"});$scope.ldloading[t.replace("-","_")]=!1}):api_cmdb.create(o).then(function(e){if(e){Restangular.stripRestangular(e);SweetAlert.swal({title:"保存成功!",confirmButtonColor:"#007AFF"},function(){refreshData($scope.classify),reinitTabForm($scope.classify)})}else SweetAlert.swal({title:"系统错误",text:"系统错误,请稍后重试!",type:"error",confirmButtonColor:"#DD6B55"});$scope.ldloading[t.replace("-","_")]=!1}):SweetAlert.swal({title:"错误",text:"错误,请选择配置项分类!",type:"error",confirmButtonColor:"#DD6B55"}),void($scope.ldloading[t.replace("-","_")]=!0)}else vm.form.$$parentForm.$error&&(SweetAlert.swal({title:"校验错误",text:"请填写必填项!",type:"error",confirmButtonColor:"#DD6B55"}),angular.forEach(vm.form.$$parentForm.$error.required,function(e){angular.forEach(vm.tabs,function(t){angular.forEach(t.form.fields,function(o){o.name==e.$name&&(o.validation.show=!0,t.active=!0)})})}),$scope.ldloading[t.replace("-","_")]=!1)},$scope.vm=vm,$scope.gridOptions={},$scope.gridOptions.data="myData",$scope.gridOptions.enableColumnResizing=!0,$scope.gridOptions.enableFiltering=!0,$scope.gridOptions.enableGridMenu=!0,$scope.gridOptions.enableRowSelection=!0,$scope.gridOptions.enableRowHeaderSelection=!1,$scope.gridOptions.showGridFooter=!0,$scope.gridOptions.showColumnFooter=!0,$scope.gridOptions.fastWatch=!0,$scope.gridOptions.useExternalPagination=!1,$scope.gridOptions.paginationPageSizes=[10],$scope.gridOptions.paginationPageSize=10,$scope.gridOptions.multiSelect=!1,$scope.gridOptions.modifierKeysToMultiSelect=!1,$scope.gridOptions.rowIdentity=function(e){return e.id},$scope.gridOptions.getRowIdentity=function(e){return e.id},$scope.transferstate=function(e){return"1"==e?e="未审核":"2"==e?e="已审核":"3"==e?e="不匹配":"4"==e?e="丢失":void 0},$scope.transferremoveflag=function(e){return 1==e?e="已删除":0==e?e="正常":void 0},$scope.gridOptions.columnDefs=[{name:"uuid",displayName:"搜索代码",width:100},{name:"name",displayName:"配置项名称",width:100},{name:"status",displayName:"配置项状态",width:140},{name:"props.state",displayName:"配置项审批状态",width:100,cellTemplate:'<div class="ui-grid-cell-contents">{{grid.appScope.transferstate(row.entity.props.state)}}</div>'},{name:"props.configperson",displayName:"配置项管理员",width:100},{name:"props.removeflag",displayName:"是否删除",width:140,cellTemplate:'<div class="ui-grid-cell-contents">{{grid.appScope.transferremoveflag(row.entity.props.removeflag)}}</div>'}],$scope.gridOptions.onRegisterApi=function(e){$scope.gridApi=e,e.selection.on.rowSelectionChanged($scope,function(e){$scope.entity=angular.copy(e.entity),$scope.ciId=e.entity.id,vm.model=$scope.vm.model=decodeCIModel($scope.entity),angular.forEach($scope.vm.tabs,function(e){e.form.model=vm.model})})},this.selectRowFunction=function(e){$scope.ciId=e.id};var reinitTabForm=function(e){$scope.ciId=void 0,api_configure_form.renderTabForm(e).then(function(e){var t=Restangular.stripRestangular(e);$scope.templateProps=t,$scope.vm.tabs=t,vm.model={},decodeVMTabForm(vm.model,vm.tabs)})},refreshData=function(e){angular.isUndefined(e)||($scope.myData=[],api_cmdb.query({sign:e}).then(function(e){var t=Restangular.stripRestangular(e);if(t.data&&200==t.status){var o=t.data.node;$scope.gridOptions.totalItems=o.length,$scope.myData=o}}))};api_configure_form.renderTabForm($stateParams.myDatalist).then(function(e){var t=Restangular.stripRestangular(e);$scope.templateProps=t,$scope.vm.tabs=t,vm.model={},vm.model.loginUser=$rootScope.user.name,decodeVMTabForm(vm.model,vm.tabs)});var apple_selected,tree,treedata_avm,treedata_geography}]);