'use strict'; /** * controllers used for the dashboard */ var appFormly = angular.module('formlyDashboard', [ 'formly', 'formlyBootstrap', 'ui.bootstrap', 'ngSanitize', 'ui.select', 'ui.grid' ]); app.requires.push('formlyDashboard'); // var appFormly = angular.module('formlyExample', [ // 'formly', 'formlyBootstrap','ui.bootstrap', // 'ngSanitize','ui.select','ui.grid'], appFormly.config( function config(formlyConfigProvider) { //格式转换方法 XXX-XXX转驼峰命名 }); appFormly.controller('DashboardCtrl', ['$rootScope', '$scope', '$parse', '$injector', '$http', '$q', '$state', '$modal', '$timeout', '$interval', 'SweetAlert', 'i18nService', '$window', 'Restangular', 'UserRestangular', 'BpmRestangular', 'api_configure_form', 'api_bpm_domain', 'api_bpm_data', 'api_user_data', 'api_report', function($rootScope, $scope, $parse, $injector, $http, $q, $state, $modal, $timeout, $interval, SweetAlert, i18nService, $window, Restangular, UserRestangular, BpmRestangular, api_configure_form, api_bpm_domain, api_bpm_data, api_user_data, api_report) { $scope.lodingstyle = 'nodata'; $scope.onDropComplete = function(index, obj, evt) { var otherObj = vm.fields[index]; var otherIndex = vm.fields.indexOf(obj); vm.fields[index] = obj; vm.fields[otherIndex] = otherObj; // console.log($scope) } $rootScope.app.layout.isNavbarFixed = false; $rootScope.app.layout.isSidebarFixed = false; $scope.loginBtn = { closeEl: '.close', modal: { templateUrl: 'assets/views/loginform.html', postion: 'center' } }; // $scope.jry_ceshi=function(){ // // alert('ok') // console.log('ok') // } $scope.choicevalue = 1 $scope.choicelogin = function(e) { $scope.choicevalue = e; } $scope.login = function() { angular.element('.el-login').trigger('click'); } // $scope.login(); $scope.close = function() { console.log(angular.element('.el-login')); angular.element('.el-login').trigger('click'); } $scope.loginForm = { username: "", // account:"", password: "" } $rootScope.app.isLoginFixed = true; $scope.validateUsername = function() { return $scope.loginForm.username == null || $scope.loginForm.username == ""; } $scope.validatePassword = function() { return $scope.loginForm.password == null || $scope.loginForm.password == ""; } $scope.formValid = function() { return $scope.loginForm.username == null || $scope.loginForm.username == "" || $scope.loginForm.password == null || $scope.loginForm.password == ""; } $scope.more = function(field) { $state.go('app.incident.list', {}); } // api_report.getLicenseKey().then(function(response) { // $cookieStore.put('Auth-Token', response.token); // }); $scope.dashboardcount = {}; if ($rootScope.user.group) { api_bpm_data.getCount({ "assignee": $rootScope.user.id, "candidateGroups": $rootScope.user.group[0].id, "idx": 0, "sum": 1000 }).then(function(response) { // if (response.status == 200) { $scope.dashboardcount = response; $scope.dashboardcount.knowledgedata = parseInt(response.toReleaseCount) + parseInt(response.toAuditCount); // } else { // SweetAlert.swal("系统错误!", "请刷新重试", "error"); // } }) } else { // SweetAlert.swal("访问数据失败!", "该用户没有分配组", "error"); } $scope.roleidcode = true; if ($rootScope.user && $rootScope.user.role) { angular.forEach($rootScope.user.role, function(item) { if (item.rolecode == "call center") { $scope.roleidcode = false; } }) } $scope.largedash = function(key) { if (key == 'lefttop') { localStorage.userId = key; var url = $state.href('dashlefttop', { basicType: 8 }); window.open(url, '_blank'); // $window.open("assets/views/dashboard/tpl/lagerdashboard/dash-lefttop.html"); } else if (key == 'leftbottom') { localStorage.userId = key; var url = $state.href('dashleftbottom', { basicType: 8 }); window.open(url, '_blank'); } else if (key == 'righttop') { localStorage.userId = key; var url = $state.href('dashrighttop', { basicType: 8 }); window.open(url, '_blank'); } else if (key == 'rightbottom') { localStorage.userId = key; var url = $state.href('dashrightbottom', { basicType: 8 }); window.open(url, '_blank'); } } $scope.addModel = function() { var modalInstance = $modal.open({ templateUrl: 'assets/views/system/tpl/adddashboard.html', controller: function($scope, $modalInstance, SweetAlert, scope) { $scope.addmodel = {}; api_user_data.fetchgetData('user', $rootScope.user.id).then(function(response) { if (response.status == 200) { $scope.dashboard = []; var dashdata = angular.copy(response.data.dashboard); angular.forEach(response.data.dashboard, function(item, i) { angular.forEach(scope.resonseform.fields, function(index) { if (item.type == index.type) { dashdata[i].repeat = true } }) }) angular.forEach(dashdata, function(item) { if (!item || !item.repeat) { $scope.dashboard.push(item); } }) // $scope.dashboard = response.data.dashboard; } else { SweetAlert.swal("系统错误!", "请刷新重试", "error"); } $scope.ok = function(item) { $modalInstance.close(item); }; $scope.cancel = function() { $modalInstance.dismiss('cancel'); }; }) }, size: 'sm', resolve: { SweetAlert: function() { return SweetAlert; }, scope: function() { return $scope; } } }); modalInstance.result.then(function(selectedItem) { if (selectedItem) { // api_user_data.addData('userDashboard', { "userDashboard": { "userId": $rootScope.user.id, "dashboardId": selectedItem.area.dashboard.id, "orders": "3" } }).then(function(response) { // if (response.status == 200) { // $scope.dashboard = response.data.userDashboard; // } else { // SweetAlert.swal("系统错误!", "请刷新重试", "error"); // } // }) for (var i = 0; i < $scope.responseData.fields.length; i++) { // for (var j = 0; j < $scope.userdashright.length; j++) { if (selectedItem.area.type == $scope.responseData.fields[i].type) { $scope.responseData.fields[i].id = selectedItem.area.id.toString(); $scope.responseData.fields[i].templateOptions.orders = selectedItem.area.orders; $scope.resonseform.fields.push($scope.responseData.fields[i]); break; } // } } // $scope.formupdata = angular.copy($scope.formdatas) var vmForm = Restangular.stripRestangular($scope.resonseform); if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); decodeVMForm(vmForm); console.log(vm); } } }); } $scope.removes = function(item) { var modalInstance = $modal.open({ templateUrl: 'assets/views/delete.html', controller: function($scope, $modalInstance) { $scope.ok = function() { $modalInstance.close(); }; $scope.cancel = function() { $modalInstance.dismiss('cancel'); }; }, size: 'sm' }); modalInstance.result.then(function() { for (var i = 0; i < $scope.resonseform.fields.length; i++) { if (item.type == $scope.resonseform.fields[i].type) { // $scope.resonseform.fields.push($scope.responseData.fields[i]); $scope.resonseform.fields.splice(i, 1) break; } } var vmForm = Restangular.stripRestangular($scope.resonseform); if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); decodeVMForm(vmForm); vm.fields = vmForm.fields console.log(vm); } }) } $scope.inWechat = function() { $state.go('app.desk.chart', {}); } $scope.inIncident = function() { console.log($rootScope) var strandata = {}; for (var i = 0; i < $rootScope.user.role.length; i++) { if ($rootScope.user.role[i].id = 5) { strandata = { "searchType": "todo" }; break; } } $state.go('app.incident.list', { model: JSON.stringify(strandata) }); } $scope.inInspect = function() { $state.go('app.inspection.inspectList', {}); } $scope.inMeans = function() { $state.go('app.means.list', {}); } $scope.inKnowledge = function() { $state.go('app.knowledge.manager', {}); } $scope.inProblem = function() { $state.go('app.problem.list', {}); } $scope.inChange = function() { $state.go('app.change.list', {}); } $scope.inRelease = function() { $state.go('app.release.list', {}); } $scope.datasetData = [{ option: "这个是第一条数据" }, { option: "这个是第二条数据" }, { option: "这个是第三条数据" }, { option: "这个是第四条数据" }, { option: "这个是第五条数据" }, { option: "这个是第六条数据" }] // var speed = 60; // var FGDemo = document.getElementById('demo'); // var FGDemo1 = document.getElementById('demo1'); // var FGDemo2 = document.getElementById('demo2'); // FGDemo2.innerHTML = FGDemo1.innerHTML // function Marquee1() { // if (FGDemo2.offsetHeight - FGDemo.scrollTop <= 0) // FGDemo.scrollTop -= FGDemo1.offsetHeight // else { // FGDemo.scrollTop++ // } // } // var MyMar1 = setInterval(Marquee1, speed) // FGDemo.onmouseover = function() { // clearInterval(MyMar1) // } // FGDemo.onmouseout = function() { // MyMar1 = setInterval(Marquee1, speed) // } var vm = this; vm.options = {}; vm.exampleTitle = ['expressionProperties', 'model property']; vm.fields = []; vm.model = {}; $scope.langs = i18nService.getAllLangs(); $scope.lang = 'zh-cn'; i18nService.setCurrentLang($scope.lang); //alert($rootScope.user.id,null,2); vm.model["loginUser"] = $rootScope.user; var that = $injector; var parse = $parse; //用户测试数据,后续从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 decodeVMForm(vmForm) { var result = { model: {}, fields: [] }; //设置模型实体数据 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.fields, 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(angular.isString(templateOs[property]) +" "+property + " " + (!(new RegExp("[\u4e00-\u9fa5]").test(templateOs[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($stateParams.formKey) && $stateParams.formKey != "") { // api_configure_form.renderForm($stateParams.formKey, '00000').then(function(responseData) { // if (responseData) { // //console.log("responseData>>>");console.log(responseData); // var vmForm = Restangular.stripRestangular(responseData); // if (vmForm) { // //console.log("vmForm>>>");console.log(vmForm); // var modelData = {}; // //modelData=myData.data; // decodeVMForm(vmForm); // } // } // }); // } 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.ngChangeScript){ // if(!field.expressionProperties)field.expressionProperties={}; // field.expressionProperties.ngChange = function(modelVal,viewVal,ev){ //// console.log(ev); //// console.log("change>>"+ev.options.key); // eval(field.templateOptions.ngChangeScript); // } // } // if(field.templateOptions.ngClickScript){ // if(!field.expressionProperties)field.expressionProperties={}; // field.expressionProperties.ngClick = function(modelVal,viewVal,ev){ //// console.log(ev); //// console.log("click>>"+ev.options.key); // eval(field.templateOptions.ngClickScript); // } // } //处理嵌套属性数据绑定/ 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-requesterselect") { //field.templateOptions.language = $scope.lang; field.templateOptions.modal = $modal; field.templateOptions.UserService = api_user_data; } 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-search") { field.templateOptions.modal = $modal; } else if (field.type == "ui-modelselect") { field.templateOptions.modal = $modal; //console.log("$rootScope.user:" + JSON.stringify($rootScope.user)); field.templateOptions.loginUser = $rootScope.user; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-incidentmodelselect") { field.templateOptions.modal = $modal; //console.log("$rootScope.user:" + JSON.stringify($rootScope.user)); field.templateOptions.loginUser = $rootScope.user; //field.templateOptions.Restangular = Restangular; } else if (field.type == "ui-repeatSection") { var repeatForm = { model: { }, fields: field.templateOptions.fields }; repeatForm.model[field.key] = []; decodeVMForm(repeatForm); } else if (field.type == "ui-currentuser") { field.templateOptions.user = vm.model["loginUser"]; } } // console.log(field); result.fields.push(field); }); angular.extend($scope.vm.fields, result.fields); angular.extend($scope.vm.model, result.model); // console.log("$scope.vm.model="+JSON.stringify($scope.vm.model)); vm.model["loginUser"] = $rootScope.user; $scope.formData = vmForm; // console.log("$scope.formData="+JSON.stringify($scope.formData.url)); if ($scope.formData.url == "start") { $scope.Reset = true; $scope.close = false; } else if ($scope.formData.url == "complete") { $scope.Reset = false; $scope.close = true; } //解析设计数据生成表单项 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); }); } }); } $scope.closeModel = function() { // console.log("pdKey="+pdKey); // if ($stateParams.pdKey) { // pdKey = $stateParams.pdKey; // } event.preventDefault(); }; $scope.submit = function(data, style) { var userDashboards = []; angular.forEach(data.fields, function(item, index) { userDashboards.push({ "dashboardId": Number(item.id), "orders": (100 + index).toString() }) }) var fildata = { userDashboard: { "userId": $rootScope.user.id, "userDashboards": userDashboards } } api_user_data.addData("userDashboard", fildata).then(function(response) { if (response && response.status == 200) { var resData = Restangular.stripRestangular(response); SweetAlert.swal({ title: "提交成功!", type: "success", confirmButtonColor: "#007AFF" }, function() { userright(); }); } else { SweetAlert.swal({ title: "系统错误", text: "系统错误,请稍后重试!", type: "error", confirmButtonColor: "#DD6B55" }); } // $scope.ldloading[style.replace('-', '_')] = false; }); }; $scope.userdashright = []; function userright() { api_user_data.fetchgetData('user', $rootScope.user.id).then(function(response) { if (response.status == 200) { $scope.filboard = response.data.dashboard; if (response.data.userDashboard && response.data.userDashboard.length > 0) { $scope.userdashright = response.data.userDashboard; } else { if (response.data.dashboard && response.data.dashboard.length > 0) { for (var i = 0; i < response.data.dashboard.length; i++) { $scope.userdashright.push({ dashboard: response.data.dashboard[i], orders: 100 + i }) } } } // $scope.userdashright = response.data.userDashboard; vmformData(); } else { SweetAlert.swal("系统错误!", "请刷新重试", "error"); } }) } userright(); function vmformData() { $scope.vm = vm; api_configure_form.renderForm("dashboard").then(function(responseData) { if (responseData) { //console.log("responseData>>>");//console.log(responseData); $scope.responseData = responseData; $scope.resonseform = angular.copy(responseData); $scope.resonseform.fields = []; for (var i = 0; i < responseData.fields.length; i++) { for (var j = 0; j < $scope.userdashright.length; j++) { if ($scope.userdashright[j].dashboard.type == responseData.fields[i].type) { responseData.fields[i].id = $scope.userdashright[j].dashboard.id.toString(); responseData.fields[i].templateOptions.orders = $scope.userdashright[j].orders; $scope.resonseform.fields.push(responseData.fields[i]); break; } } } var temp = {}; for (var i = 0; i < $scope.resonseform.fields.length; i++) { for (var j = 0; j < i; j++) { if (Number($scope.resonseform.fields[j].templateOptions.orders) > Number($scope.resonseform.fields[i].templateOptions.orders)) { temp = $scope.resonseform.fields[j]; $scope.resonseform.fields[j] = $scope.resonseform.fields[i]; $scope.resonseform.fields[i] = temp; } } } // $scope.formdatas = angular.copy($scope.resonseform); var vmForm = Restangular.stripRestangular($scope.resonseform); if (vmForm) { //console.log("vmForm>>>");//console.log(vmForm); decodeVMForm(vmForm); console.log(vm); } } }); } } ]);