'use strict'; var cmdbFormly = angular.module('formlyCMDB', [ 'formly', 'formlyBootstrap', 'ui.bootstrap', 'ngSanitize', 'ui.select', 'ui.grid' ]); app.requires.push('formlyCMDB'); cmdbFormly.controller('gdzc_meansformCtrl', ['$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', 'api_sysinfo', 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, api_sysinfo) { // $scope.haha=true; $scope.langs = i18nService.getAllLangs(); $scope.lang = 'zh-cn'; i18nService.setCurrentLang($scope.lang); $scope.width = { 'width': document.getElementById("mapwidth").offsetWidth - 201 }; window.onresize = function() { if (document.getElementById("mapwidth")) { $scope.width = { 'width': document.getElementById("mapwidth").offsetWidth - 201 }; } } var vm = this; vm.options = {}; vm.exampleTitle = ['expressionProperties', 'model property']; vm.fields = []; vm.model = {}; vm.model["loginUser"] = $rootScope.user; var that = $injector; var parse = $parse; var formKey = ""; var pdKey = ""; if (angular.isDefined($state.current.pdKey) && $state.current.pdKey != "") { pdKey = $state.current.pdKey; //console.log("pdKey::"+$state.current.pdKey); } if (angular.isDefined($stateParams.formKey) && $stateParams.formKey != "") { formKey = $stateParams.formKey; // console.log(formKey); //console.log("formKey::"+$stateParams.formKey); } //关系图 var dom = document.getElementById("meansmap"); var myChart = echarts.init(dom); var app = {}; var option = null; $scope.guanlianable = false; $scope.cmdbtype = {}; myChart.showLoading(); var data2 = [{ name: "治安管理工作", label: { normal: { backgroundColor: '#725bb8' } }, children: [{ id: 1, name: "娱乐场所治安管理", children: [{ id: 2, name: "娱乐场所治安管理工作" }] }, { id: 2, name: "安保工作", children: [{ id: 4, name: "输油气管道安保工作" }, { id: 5, name: "校园安保工作" }, { id: 6, name: "节假日、重大活动、大型群众性活动" }] }, { id: 7, name: "精神病人管控工作", children: [{ id: 8, name: "精神病人肇事肇祸案事件" }] }, { id: 9, name: "物流寄递业", children: [{ id: 10, name: "物流寄递业治安管理工作" }] }, { id: 11, name: "推进基层基础工作创新", children: [{ id: 12, name: "加强派出所建设" }] }, { id: 13, name: "地网建设工作", children: [{ id: 14, name: "加强二轮电动车防盗登记备案装置安装工作" }] }, { id: 15, name: "无人机管理", children: [{ id: 16, name: "加强无人机管理" }] }, { id: 17, name: "加强社会面巡逻防控", children: [{ id: 18, name: "武装联勤巡逻" }] }] }]; myChart.hideLoading(); // echarts.util.each(data2.children, function(datum, index) { // index % 2 === 0 && (datum.collapsed = true); // }); option = { backgroundColor: '#fff', tooltip: { trigger: 'item', triggerOn: 'mousemove' }, legend: { top: '2%', left: '3%', orient: 'vertical', data: [{ name: 'tree1', icon: 'rectangle' }], borderColor: '#c23531' }, series: [{ type: 'tree', name: '资产关系图', data: data2, top: '5%', left: '7%', bottom: '2%', right: '60%', symbolSize: 7, // label: { // normal: { // position: 'left', // verticalAlign: 'middle', // align: 'right' // } // }, label: { normal: { position: 'center', verticalAlign: 'middle', align: 'left', backgroundColor: '#7049f0', color: '#fff', padding: 2, formatter: [ '{box|{b}}' ].join('\n'), rich: { box: { top: 5, height: 30, color: '#fff', padding: [0, 2], align: 'center' } }, lineStyle: { color: '#ccc', type: 'curve' // 'curve'|'broken'|'solid'|'dotted'|'dashed' } } }, leaves: { label: { normal: { position: 'center', verticalAlign: 'middle', align: 'left', backgroundColor: '#c44eff', formatter: [ '{box|{b}}' ].join('\n'), rich: { box: { height: 18, color: '#fff', padding: [0, 5], align: 'center' } } } } }, expandAndCollapse: true, animationDuration: 550, animationDurationUpdate: 750 }] }; myChart.on('legendselectchanged', function(params) { // 获取点击图例的选中状态 var isSelected = params.selected[params.name]; // 在控制台中打印 console.log((isSelected ? '选中了' : '取消选中了') + '图例' + params.name); // 打印所有图例的状态 console.log(params.selected); }) if (option && typeof option === "object") { myChart.setOption(option, true); } function getinternetAlarm() { api_bpm_data.fetchDataList('applicationForm', { "idx": 0, "sum": 100 }).then(function(data) { // if (data.status == 200) { option.series[0].data[0] = { name: "治安管理工作", label: { normal: { backgroundColor: '#725bb8' } }, children: [{ name: "娱乐场所治安管理", children: [{ name: "娱乐场所治安管理工作" }] }, { name: "加强社会面巡逻防控", children: [{ name: "武装联勤巡逻" }] }] } myChart.setOption(option, true); myChart.hideLoading(); // } }) } // getinternetAlarm(); setInterval(function() { // getinternetAlarm(); }, 10000); myChart.on("click", clickFun); function clickFun(param) { // if (typeof param.seriesIndex == 'undefined') { // return; // } if (param.type == 'click') { $scope.guanlianable = true; $scope.cmdbtype = param; } } $scope.changemeans = function() { var modalInstance = $modal.open({ templateUrl: 'assets/views/means/tpl/meansmap.html', controller: function($scope, scope, $modalInstance) { $scope.key = {}; $scope.linktypeOptions = scope.linktypeOptions; $scope.guanxidata = [ { id: 0, name: '连接', value: 'link' }, { id: 1, name: '安装部署', value: 'link' }, { id: 2, name: '归属', value: 'link' }, { id: 3, name: '使用', value: 'link' }, { id: 4, name: '互备', value: 'link' }, { id: 5, name: '主备', value: 'link' } ]; $scope.ok = function(key) { $modalInstance.close(key); }; $scope.openModal = function(size, options, modal) { var modalInstance = $modal.open({ templateUrl: 'assets/views/customform/tpl/cmdb/guanlian.html', controller: function($scope, $rootScope, $modalInstance, api_user_data, i18nService) { $scope.langs = i18nService.getAllLangs(); $scope.lang = 'zh-cn'; i18nService.setCurrentLang($scope.lang); $scope.gridOptions = {}; $scope.gridOptions.data = 'myData'; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = false; $scope.gridOptions.enableGridMenu = false; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = false; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; $scope.gridOptions.rowIdentity = function(row) { return row.id; }; $scope.gridOptions.getRowIdentity = function(row) { return row.id; }; $scope.gridOptions.columnDefs = [ { name: 'item', displayName: '序号', width: 80 }, { name: 'serialNumbe', displayName: '申请单编号', width: 120 }, { name: 'proposer.name', displayName: '申请人', width: 80, enableFiltering: false }, { name: 'time', displayName: '申请时间', width: 100, enableFiltering: false }, { name: 'type', displayName: '类型', width: 120, enableFiltering: false, cellTemplate: "
{{grid.appScope.typedata(row.entity)}}
" }, { name: 'status', displayName: '状态', width: 120, enableFiltering: false, cellTemplate: "
{{grid.appScope.statedata(row.entity)}}
" }, { name: 'linkProposer.name', displayName: '优先级', width: 80, enableFiltering: false }, ]; $scope.states = [ { id: 0, name: '待批准' }, { id: 1, name: '已驳回' }, { id: 2, name: '待出库' }, { id: 3, name: '信息更新' }, { id: 4, name: '信息确认' }, { id: 5, name: '已关闭' } ]; $scope.type = [ { id: 1, name: '资产入库' }, { id: 2, name: '资产归还' }, { id: 3, name: '资产领用' }, { id: 4, name: '资产更换' } ]; $scope.typedata = function(row) { if (row.type == 0) { return "资产入库"; } else if (row.type == 2) { return "资产归还"; } else if (row.type == 1) { return "资产领用"; } else if (row.type == 4) { return "资产更换"; } }; $scope.statedata = function(row) { if (row.status == 0) { return "待批准"; } else if (row.status == 1) { return "已驳回"; } else if (row.status == 2) { return "待出库"; } else if (row.status == 3) { return "信息更新"; } else if (row.status == 4) { return "信息确认"; } else if (row.status == 5) { return "已关闭"; } }; $scope.application = [ { value: "serialNumbe", name: '申请单编号' }, // { value: "proposer", name: '申请人' }, { value: "purpose", name: '领用用途' }, // { value: "cmdbsign", name: '设备编号' } ]; $scope.parameters = null; $scope.open = function($event) { $event.preventDefault(); $event.stopPropagation(); $scope.opened = !$scope.opened; }; $scope.endOpen = function($event) { $event.preventDefault(); $event.stopPropagation(); $scope.startOpened = false; $scope.endOpened = !$scope.endOpened; }; $scope.startOpen = function($event) { $event.preventDefault(); $event.stopPropagation(); $scope.endOpened = false; $scope.startOpened = !$scope.startOpened; }; $scope.othcode = {}; $scope.searchkeys = {}; $scope.parameters = {}; $scope.memoryfilterData = { "assignee": $rootScope.user.id, "candidateGroups": $rootScope.user.group[0].id, "searchType": "todo", idx: 0, sum: 10 } $scope.clear = function() { $scope.searchkeys = {}; // $scope.othcode = {}; $scope.parameters = {}; var fildata = { "assignee": $rootScope.user.id, "candidateGroups": $rootScope.user.group[0].id, "searchType": "todo", idx: 0, sum: 10 } $scope.memoryfilterData = fildata; $scope.loadData(fildata); } $scope.chiceIncident = function(parameters, item, stateid) { var fildata = { "assignee": $rootScope.user.id, "candidateGroups": 1, "searchType": "todo", "idx": 0, "sum": 10 }; if (item) { fildata.applicationForm = {}; if (item.alltitle && item.alldata) { fildata.applicationForm[item.alltitle.value] = item.alldata } if (item.linkProposer) { fildata.applicationForm.linkProposer = item.linkProposer } if (item.proposer) { fildata.applicationForm.proposer = item.proposer } if (item.status) { fildata.applicationForm['status'] = item.status.id; } if (item.type) { fildata.applicationForm['type'] = item.type.id; } } $scope.gridOptions.paginationCurrentPage = 1; if (parameters && parameters.paramDateFrom && parameters.paramDateTo) { angular.extend(fildata, { 'idx': 0, 'sum': $scope.gridOptions.paginationPageSize }) angular.extend(fildata.applicationForm, { 'startDate': moment(parameters.paramDateFrom).format('YYYY-MM-DD HH:mm:ss'), 'endDate': moment(parameters.paramDateTo).format('YYYY-MM-DD 23:59:59') }) } var transitiondata = angular.copy(item); // angular.extend(fildata.applicationForm, transitiondata) $scope.loadData(fildata); } $scope.key = {}; api_user_data.fetchDataList('user', { "idx": 0, "sum": 1000, "flag": -1,user: {engineer: 1,} }).then(function(data) { $scope.handlingPersonnelUser = data.list; }); $scope.gridOptions.onRegisterApi = function(gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged($scope, function(newPage, pageSize) { // console.log(newPage); // console.log(pageSize); $scope.loadData({ "idx": newPage - 1, "sum": pageSize }); }); gridApi.core.on.filterChanged($scope, function() { }); gridApi.selection.on.rowSelectionChanged($scope, function(data) { $scope.selected.item = data.entity; //console.log(data); }); }; $scope.loadData = function(filterData) { api_bpm_data.fetchDataList('applicationForm', filterData).then(function(data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = myData.list; for (var i = 0; i < $scope.myData.length; i++) { $scope.myData[i]['item'] = i + 1 + filterData.idx * filterData.sum; } }); }; // $scope.title = title; $scope.loadData({ idx: 0, sum: 10, "assignee": $rootScope.user.id, "candidateGroups": $rootScope.user.group[0].id, "searchType": "todo", }); $scope.selected = { item: {} }; $scope.ok = function() { //console.log($scope.selected.item); $modalInstance.close({ id: 12809, name: "资产" }); }; $scope.cancel = function() { $modalInstance.dismiss('cancel'); }; }, size: 'lg' }); modalInstance.result.then(function(selectedItem) { // $scope.cmdbtype // var fildata = { "id": -1, "name": "link", "source": 12809, "target": $scope.cmdbtype.id, "left": true, "right": false, "props": {} } }, function() { //console.log('Modal dismissed at: ' + new Date()); }); } $scope.cancel = function() { $modalInstance.dismiss('cancel'); }; }, size: 'sm', resolve: { scope: function() { return $scope; } } }); modalInstance.result.then(function(selectedItem) { if (selectedItem) { var fildata = { "id": -1, "name": selectedItem.name.value, "source": 12809, "target": $scope.cmdbtype.data.id, "left": true, "right": false, "props": {} } api_cmdb.createRef(fildata).then(function(response) { if (response && response.status == 200) { } else { } }); } else { // SweetAlert.swal({ // title: "未选择资产关系!", // text: "请选择资产关系", // type: "error" // }) } }); } //关系图end //用户测试数据,后续从header的auth中获取 var userId = 2; userId = $rootScope.user.id; //==============处理表单设计数据 开始==================== //处理组件加载后台数据选项的方法 function refreshSelectOptions(searchVal, field) { if (field.templateOptions.optionsUrl) { var process = BpmRestangular.all(""); if (field.templateOptions.ApiService) { process = UserRestangular.all(""); } process.customPOST({ "idx": 0, "sum": 1000 }, field.templateOptions.optionsUrl).then(function(result) { if (!field.templateOptions.options) { field.templateOptions.options = []; } if (field.templateOptions.optionsDataKey) { field.templateOptions.options = result[field.templateOptions.optionsDataKey]; } else { field.templateOptions.options = result; } }); } } function decodeVMTabForm(model, tabs) { var result = { model: {}, tabs: [] }; var 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; } if (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)) { //var obj = $scope.$eval(extObj[prop]); //extObj[prop] = $scope.$eval(extObj[prop]); if (extObj[prop] != null) { if (new RegExp("function").test(extObj[prop])) { var propValue = eval(extObj[prop]); extObj[prop] = propValue; } else { //console.log(extObj[prop]); var obj = $scope.$eval(extObj[prop]); extObj[prop] = obj; //console.log(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(p.indexOf("'")>=0){ // var obj = $scope.$eval(extObj[prop][p]); // extObj[prop][$scope.$eval(p)]=obj; //} } } } 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; } if (angular.isDefined(field.templateOptions)) { var templateOs = field.templateOptions; for (var property in templateOs) { //console.log(property); if (angular.isString(templateOs[property]) && !(new RegExp("[\u4e00-\u9fa5]").test(templateOs[property]))) { if (new RegExp("function").test(templateOs[property])) { var propValue = eval(templateOs[property]); field.templateOptions[property] = propValue; } else { if (that.has(templateOs[property])) { field.templateOptions[property] = that.get(templateOs[property]); } else { field.templateOptions[property] = templateOs[property]; } } } else if (templateOs[property] == null) { //delete field.templateOptions[property]; } else {} } } if (angular.isDefined(field.templateOptions) && angular.isDefined(field.templateOptions.extjson)) { var extObj = angular.fromJson(field.templateOptions.extjson); //JSON.parse(field.extjson); angular.extend(field.templateOptions, extObj); delete field.templateOptions.extjson; } //... if (field.templateOptions) { //处理远程获取数据控件方法调用 if (field.templateOptions.optionsUrl) { field.templateOptions.refresh = refreshSelectOptions; } //处理嵌套属性数据绑定/ if (field.templateOptions.pkey) { var pmodel, i = 0; angular.forEach(field.templateOptions.pkey.split("."), function(p) { if (i == 0) { if (result.model[p] == null) { result.model[p] = {}; } pmodel = result.model[p]; i++; } else { if (pmodel[p] == null) { pmodel[p] = {}; } pmodel = pmodel[p]; } }); if (pmodel != null) { field.model = pmodel; if (pmodel[field.key] == null) { pmodel[field.key] = null; } } } else { if (result.model[field.key] == null) { result.model[field.key] = null; } } //处理弹出框组件初始化 if (field.type == "ui-input-selectmodal") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-userselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-multiuserselect") { field.templateOptions.modal = $modal; } else if (field.type == "ui-modelselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-dropfile") { field.templateOptions.fileUploader = new FileUploader({ url: '/uploader' }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; //field.ApiService=api_bpm_domain; } else if (field.type == "ui-dropfiletable") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-repeatSection") { var repeatForm = { model: { }, fields: field.templateOptions.fields }; repeatForm.model[field.key] = []; decodeVMTabForm(repeatForm); } } // console.log(field); //field //result.fields.push(field); }) }); vm.originalTabs = angular.copy(vm.form); } //解析自定义表单设计数据 function decodeVMForm(vmForm) { var result = { model: {}, tabs: [] }; //设置模型实体数据 begin // var mdata = vmForm.model; //解析数据实体 var mdata = angular.fromJson(vmForm.model); //JSON.parse(field.extjson); angular.extend(result.model, mdata); //设置模型实体数据 end //解析设计数据生成表单项 begin var fields = []; //处理修改设计数据中展示设置 angular.forEach(vmForm.tabs, function(field) { if (field.key == "") { delete field.key; } if (angular.isDefined(field.extjson)) { var extObj = angular.fromJson(field.extjson); //JSON.parse(field.extjson); angular.extend(field.templateOptions, extObj.templateOptions); delete extObj.templateOptions; for (var prop in extObj) { if (new RegExp("Expression").test(prop)) { //var obj = $scope.$eval(extObj[prop]); //extObj[prop] = $scope.$eval(extObj[prop]); if (extObj[prop] != null) { if (new RegExp("function").test(extObj[prop])) { var propValue = eval(extObj[prop]); extObj[prop] = propValue; } else { //console.log(extObj[prop]); var obj = $scope.$eval(extObj[prop]); extObj[prop] = obj; //console.log(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(p.indexOf("'")>=0){ // var obj = $scope.$eval(extObj[prop][p]); // extObj[prop][$scope.$eval(p)]=obj; //} } } } 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) { //console.log(property); if (angular.isString(templateOs[property]) && !(new RegExp("[\u4e00-\u9fa5]").test(templateOs[property]))) { if (new RegExp("function").test(templateOs[property])) { var propValue = eval(templateOs[property]); field.templateOptions[property] = propValue; } else { if (that.has(templateOs[property])) { field.templateOptions[property] = that.get(templateOs[property]); } else { field.templateOptions[property] = templateOs[property]; } } } else if (templateOs[property] == null) { //delete field.templateOptions[property]; } else {} } } console.log(field); if (angular.isDefined(field.templateOptions) && angular.isDefined(field.templateOptions.extjson)) { var extObj = angular.fromJson(field.templateOptions.extjson); //JSON.parse(field.extjson); angular.extend(field.templateOptions, extObj); delete field.templateOptions.extjson; } //... if (field.templateOptions) { //处理远程获取数据控件方法调用 if (field.templateOptions.optionsUrl) { field.templateOptions.refresh = refreshSelectOptions; } //处理嵌套属性数据绑定/ if (field.templateOptions.pkey) { var pmodel, i = 0; angular.forEach(field.templateOptions.pkey.split("."), function(p) { if (i == 0) { if (result.model[p] == null) { result.model[p] = {}; } pmodel = result.model[p]; i++; } else { if (pmodel[p] == null) { pmodel[p] = {}; } pmodel = pmodel[p]; } }); if (pmodel != null) { field.model = pmodel; if (pmodel[field.key] == null) { pmodel[field.key] = null; } } } else { if (result.model[field.key] == null) { result.model[field.key] = null; } } //处理弹出框组件初始化 if (field.type == "ui-input-selectmodal") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-userselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-multiuserselect") { field.templateOptions.modal = $modal; } else if (field.type == "ui-modelselect") { field.templateOptions.modal = $modal; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-dropfile") { field.templateOptions.fileUploader = new FileUploader({ url: '/uploader' }); field.templateOptions.taskId = $stateParams.taskId; field.templateOptions.processInstanceId = $stateParams.processInstanceId; field.templateOptions.userId = $rootScope.user.id; //field.ApiService=api_bpm_domain; } else if (field.type == "ui-dropfiletable") { if (field.templateOptions.processInstanceId) { } else { field.templateOptions.processInstanceId = $stateParams.processInstanceId; } } else if (field.type == "ui-repeatSection") { var repeatForm = { model: { }, fields: field.templateOptions.fields }; repeatForm.model[field.key] = []; decodeVMForm(repeatForm); } } // console.log(field); result.fields.push(field); }); angular.extend($scope.vm.fields, result.fields); angular.extend($scope.vm.model, result.model); $scope.formData = vmForm; //console.log($scope.vm); //解析设计数据生成表单项 end return result; } //======================处理表单设计数据 结束======================== $scope.ldloading = {}; function filter(obj) { angular.forEach(obj, function(key, value) { if (value === "" || value === null) { delete obj[key]; } else if (Object.prototype.toString.call(value) === '[object Object]') { filter(value); } else if (angular.isArray(value)) { angular.forEach(value, function(item) { filter(item); }); } }); } function invokeOnAllFormOptions(fn) { angular.forEach(vm.tabs, function(tab) { if (tab.form.options && tab.form.options[fn]) { tab.form.options[fn](); } }); } function encodeCIData(data, ciId) { /* create/update state:未审核 create createtime:系统时间 create/update lastupdatetime : 系统时间 label:ci分类 */ if (ciId) { var baseprop = ['uuid', 'name', 'type', 'label', 'status', 'createtime', 'lastupdatetime', 'props']; //state|audittime//createtime//removeflag|removetime//configperson//lastupdateperson//manager//useradmin var extraprop = 'props'; data[extraprop] = {}; for (var key in data) { // console.log(data[key]); if (_.indexOf(baseprop, key) >= 0) { continue; } else { data[extraprop][key] = data[key]; delete data[key]; } } if ($rootScope.user) { data[extraprop]['lastupdateperson'] = $rootScope.user.name; data[extraprop]['configperson'] = $rootScope.user.name; var isCMAdminFlag = false; angular.forEach($rootScope.user.role, function(roleItem) { if (roleItem.rolecode == "cmdb charge") { isCMAdminFlag = true; } }) if (!isCMAdminFlag) { data[extraprop]['state'] = '1'; } } if (data.props.id) { } else { data.label = ciId; } return data; } return undefined; } function decodeCIModel(data) { var extraprop = 'props'; if (data[extraprop]) { for (var key in data[extraprop]) { data[key] = data[extraprop][key]; } delete data[extraprop]; } data['iscmadmin'] = false; angular.forEach($rootScope.user.role, function(roleItem) { if (roleItem.rolecode == "cmdb charge") { data['iscmadmin'] = true; } }) return data; }; vm.remove = function(data, style) { $scope.ldloading[style.replace('-', '_')] = true; // var cidata = { // label: data.label, // id: data.id, // uuid: data.uuid, // name: data.name, // props: {} // }; // if (cidata.id) { // cidata.props['removeflag'] = true; // cidata.props['lastupdateperson'] = vm.model.loginUser; //cidata.props['removetime']=new Date(); var modalInstance = $modal.open({ templateUrl: 'assets/views/delete.html', controller: function($scope, scope, $modalInstance, api_bpm_data) { var cidata = { label: data.label, id: data.id, uuid: data.uuid, name: data.name, props: {} }; if (cidata.id) { cidata.props['removeflag'] = true; cidata.props['lastupdateperson'] = vm.model.loginUser; $scope.ok = function() { $modalInstance.close(cidata); }; $scope.cancel = function() { $modalInstance.dismiss('cancel'); }; } }, size: 'sm', resolve: { scope: function() { return $scope; } } }); modalInstance.result.then(function(selectedItem) { if (selectedItem) { // if (selectedItem.length > 0) { api_cmdb.put(selectedItem, selectedItem.id).then(function(response) { if (response) { var resData = Restangular.stripRestangular(response); SweetAlert.swal({ title: "删除成功!", confirmButtonColor: "#007AFF" }, function() { $state.go("app.means.listd"); // $state.go("app.means.list"); // $scope.refreshform(); // reinitTabForm($scope.classify); }); } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55" }); } $scope.ldloading[style.replace('-', '_')] = false; }); // } else { // SweetAlert.swal({ // title: "操作异常!", // text: "系统异常,请稍后重试,或者联系管理员!", // type: "error" // }); // } } }) } // }) // api_cmdb.put(cidata,data.id).then(function(response){ // if(response){ // var resData = Restangular.stripRestangular(response); // SweetAlert.swal({ // title: "删除成功!", // confirmButtonColor: "#007AFF" // },function(){ // $state.go("app.means.list"); // // $scope.refreshform(); // // reinitTabForm($scope.classify); // }); // }else{ // SweetAlert.swal({ // title: "系统错误", // text: "系统错误,请稍后重试!", // type: "error", // confirmButtonColor: "#DD6B55" // }); // } // $scope.ldloading[style.replace('-', '_')] = false; // }); // } else { // $timeout(function() { // $scope.ldloading[style.replace('-', '_')] = false; // }, 2000); // } // } function formValid() { angular.forEach(vm.tabs, function(item) { //item. }) } // 显示对应索引 $scope.xianshi = 0; $scope.toindex = function(res) { $scope.xianshi = res; } $scope.closeModel = function() { if (angular.isDefined($stateParams.formKey) && $stateParams.formKey != "") { if ($stateParams.formKey == "means_editor" || $stateParams.formKey == "means_edit") { $state.go('app.means.listd', {}); // $state.go('app.means.list', {}); } event.preventDefault(); } } vm.submit = function(data, ciId, templateitem, style) { // $scope.ldloading[style.replace('-', '_')] = true; // console.log(vm.form.$$parentForm.$valid); if (vm.form.$$parentForm.$valid) { invokeOnAllFormOptions('updateInitialValue'); //alert(JSON.stringify(vm.model), null, 2); //vm.options.updateInitialValue(); //console.log(vm.model); var cidata = encodeCIData(vm.model, ciId); if (cidata) { //var cidata = ; if (cidata.props.id) { //修改 api_cmdb.put(cidata, ciId).then(function(response) { if (response) { var resData = Restangular.stripRestangular(response); SweetAlert.swal({ title: "保存成功!", confirmButtonColor: "#007AFF", type: "success" }, function() { $scope.ldloading[style.replace('-', '_')] = false; // $scope.refreshform(); $state.go("app.means.listd"); // $state.go("app.means.list"); }); } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55" }); } $scope.ldloading[style.replace('-', '_')] = false; }); } else { //新建 var type = 2; api_sysinfo.getSerialnumber(type, templateitem.id).then(function(data) { if (data && data.status == 200) { cidata.uuid = data.uuid; api_cmdb.create(cidata).then(function(response) { if (response) { var resData = Restangular.stripRestangular(response); SweetAlert.swal({ title: "保存成功!", text: "内部编号:" + cidata.uuid, confirmButtonColor: "#007AFF", type: "success" }, function() { $state.go("app.means.listd"); // $state.go("app.means.list"); }); // if(resData.status){ // resData // } } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55" }); } $scope.ldloading[style.replace('-', '_')] = false; }); } else { SweetAlert.swal({ title: "系统错误", text: "内部编号生成出错!", type: "error", confirmButtonColor: "#DD6B55" }); } }) } } else { SweetAlert.swal({ title: "错误", text: "错误,请选择资产分类!", type: "error", confirmButtonColor: "#DD6B55" }); } //alert(JSON.stringify(cidata), null, 2); $scope.ldloading[style.replace('-', '_')] = true; return; var _ = window._; vm.model = (function filter(obj) { var filtered = _.pick(obj, function(v) { return angular.isDefined(v) && v !== null && (angular.isArray(v) ? v.length > 0 : true) && (_.isPlainObject(v) ? (!_.isEmpty(v)) : true); }); return _.cloneDeep(filtered, function(v) { return v !== filtered && _.isPlainObject(v) ? filter(v) : undefined; }); })(vm.model); } else { if (vm.form.$$parentForm.$error) { SweetAlert.swal({ title: "校验错误", text: "请填写必填项!", type: "error", confirmButtonColor: "#DD6B55" }); angular.forEach(vm.form.$$parentForm.$error.required, function(item) { angular.forEach(vm.tabs, function(tab) { angular.forEach(tab.form.fields, function(f) { if (f.name == item.$name) { f.validation.show = true; tab.active = true; } }) }) }); $scope.ldloading[style.replace('-', '_')] = false; } } }; $scope.vm = vm; //树形图 var apple_selected, tree, treedata_avm, treedata_geography; $scope.my_tree_handler = function(branch) { //var _ref; // var classify=$scope.classify=branch.prefix.toLowerCase()+branch.sign; // api_cmdb.query({'sign':classify}).then(function(data){ // var myData = Restangular.stripRestangular(data); // // console.log(myData.data.node); // if(myData.data&&myData.status==200){ // var ret = myData.data; // redrawSvg(myData); // } // }); // $scope.ciId = undefined; // var classify=$scope.classify=branch.prefix.toLowerCase()+branch.sign; // api_configure_form.renderTabForm(classify).then(function(data){ // var myData = Restangular.stripRestangular(data); // //angular.extend($scope.vm.fields,result.fields); // //angular.extend($scope.vm.model,result.model); // $scope.templateProps = myData; // $scope.vm.tabs = myData; // vm.model = {}; // decodeVMTabForm(vm.model, vm.tabs); // //$scope.vm.originalTabs = angular.copy($scope.vm.form); // //console.log(myData); // }); }; $scope.my_data = []; function convertListToTree(data, treeMap) { var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null var parentNode = null; //loop over data for (var i = 0; i < data.length; i++) { var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? if (typeof datum.parent === "undefined" || datum.parent == null) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parent.id]; //We don't need this property, so let's delete it. delete datum.parent; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } return root; } function convertParentToChildList(data) { var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function(item) { list.push(item); }); return list; } $scope.my_tree = tree = {}; $scope.try_async_load = function() { $scope.my_data = []; $scope.select_treedata = []; $scope.doing_async = true; api_configure_data.fetchDataList('ciclassify', { 'idx': 0, 'sum': 100 }).then(function(result) { //console.log(result['list']); $scope.select_treedata = $scope.my_data = convertParentToChildList(result['list']); $scope.doing_async = false; // tree.expand_all(); //console.log(treelist); }); }; $scope.select_treedata = []; $scope.propTypeOptions = []; $scope.try_async_load(); $scope.onFilterCallback = function(item) { //console.log(item); if (angular.isDefined(item.children) && item.children.length >= 1) { //not valid } else { var tempclassify = item.prefix.toLowerCase() + item.sign; $scope.cifilter_classic = tempclassify; $scope.templateitem = item; api_configure_form.renderTabForm(tempclassify).then(function(data) { var myData = Restangular.stripRestangular(data); $scope.propTypeOptions = myData; $scope.templateProps = myData; $scope.vm.tabs = myData; vm.model = {}; decodeVMTabForm(vm.model, vm.tabs); }); } } $scope.jry_shuxing = JSON.parse($stateParams.model); // console.log($scope.jry_shuxing); $scope.refreshform = function() { if ($stateParams.model) { var modeldata = JSON.parse($stateParams.model) api_configure_form.renderTabForm(modeldata.model.label).then(function(data) { var myData = Restangular.stripRestangular(data); $scope.templateProps = myData; $scope.vm.tabs = myData; vm.model = {}; vm.model = $scope.vm.model = decodeCIModel(modeldata.model); vm.model["loginUser"] = $rootScope.user.name; // console.log(vm.model); decodeVMTabForm(vm.model, vm.tabs); // console.log(myData); }); } } $scope.refreshform(); } ]);