commonModule. controller('addExistDimensionModalController', ['$scope', '$log', '$translate', 'uiGridConstants', '$location', '$timeout', '$interval', '$filter', 'SweetAlert', 'roleService', 'userService', 'permissionService', 'dimensionService', function ($scope, $log, $translate, uiGridConstants, $location, $timeout, $interval, $filter, SweetAlert, roleService, userService, permissionService, dimensionService) { $scope.searchValue = ""; var modalSelector = '#addDimensionModal'; var showWarning = function (resultMsg) { var errMsg = $translate.instant(resultMsg); SweetAlert.warning(errMsg); }; var showSuccessMsg = function (resultMsg) { var errMsg = $translate.instant(resultMsg); SweetAlert.success(errMsg); }; var showModal = function () { $scope.originalList = angular.copy($scope.selectedDimensionList); getDimensionList(); $(modalSelector).modal("show"); }; $scope.$watch('operateType', function (newValue, oldValue) { if (newValue) { if (newValue == constant.Operation.Add) { showModal(); } else if (newValue == constant.Operation.Edit) { } } }); $(".addRoleModal").on("hidden.bs.modal", function () { $scope.operateType = null; }); $scope.closeModal = function () { $scope.operateType = null; }; $scope.Save = function () { //返回用户ID列表 //console.log(JSON.stringify($scope.selectedRoleList)); $scope.operateType = null; $scope.isUpdate = true; $(modalSelector).modal("hide"); }; var setSelectItems = function (data) { if ($scope.selectedDimensionList && $scope.selectedDimensionList.length > 0) { for (var i = 0; i < data.length; i++) { if ($scope.selectedDimensionList.indexOf(data[i].id) > -1) { data[i].selected = true; data[i].expanded = true; } if (data[i].items && data[i].items.length > 0) { setSelectItems(data[i].items); } } } return data; }; //获取维度列表 var getDimensionList = function () { dimensionService.getDevDimensionTreeList().success(function (data) { if (data) { var data = setSelectItems(data); $scope.dimensionTreeViewData = data; } }); }; //var loadDimensionValueByID = function (dimensionId) { // dimensionService.getDimensionValueList(dimensionId).success(function (data) { // if (data) { // //$scope.dimensionValueTreeViewData = data; // } // }); //}; $scope.searchOptions = { bindingOptions: { value: "searchValue" }, placeholder: $translate.instant('Search'), width: 518, mode: "search", valueChangeEvent: "keyup" }; //加载维度值配置 //var loadDimensionValueTree = function () { // $scope.dimensionValueTreeViewOptions = { // bindingOptions: { // dataSource: 'dimensionValueTreeViewData', // searchValue: 'searchValue' // }, // selection: { // mode: "multiple" // }, // loadPanel: { // enabled: true // }, // scrolling: { // mode: "virtual" // }, // keyExpr: "id", // parentIdExpr: "parentId", // showRowLines: true, // showColumnLines: true, // expandAllEnabled: true, // rowAlternationEnabled: true, // expandedRowKeys: [1], // showBorders: true, // noDataText: $translate.instant('NoDataText'), // selectAllText: $translate.instant('SelectAll'), // displayExpr: 'name', //显示的属性名称,默认为text // itemsExpr: 'subRoles', //子层的数组名称,默认为items // //scrollDirection:'vertical', //Accepted Values: 'vertical' | 'horizontal' | 'both' // selectNodesRecursive: true, //级联选择 // showCheckBoxesMode: 'normal', //Accepted Values: 'none' | 'normal' | 'selectAll' // onItemSelectionChanged: function (obj, element, model, node) { // populateSelectedRole(obj.itemData); // }, // onInitialized: function (e) { // //$scope.widgetInstance = e.component; // }, // //点击行,选中 // onItemClick: function (e) { // //loadDimensionValueByID(e.itemData.id); // }, // onContentReady: function (object, container) { // object.element.find('.dx-checkbox-checked').addClass('dx-state-disabled'); // } // }; //}; //加载维度配置 var loadDimensionTree = function () { $scope.dimensionTreeViewOptions = { bindingOptions: { dataSource: 'dimensionTreeViewData', searchValue: 'searchValue' }, selection: { mode: "multiple" }, loadPanel: { enabled: true }, scrolling: { mode: "virtual" }, keyExpr: "id", //parentIdExpr: "parentId", showRowLines: true, showColumnLines: true, expandAllEnabled: true, rowAlternationEnabled: true, expandedRowKeys: [1], showBorders: true, noDataText: $translate.instant('NoDataText'), selectAllText: $translate.instant('SelectAll'), //displayExpr: 'name', //显示的属性名称,默认为text //itemsExpr: 'subRoles', //子层的数组名称,默认为items //scrollDirection:'vertical', //Accepted Values: 'vertical' | 'horizontal' | 'both' selectNodesRecursive: true, //级联选择 showCheckBoxesMode: 'normal', //Accepted Values: 'none' | 'normal' | 'selectAll' onItemSelectionChanged: function (obj, element, model, node) { populateSelectedDimensionValueList(obj.itemData); }, onInitialized: function (e) { $scope.widgetInstance = e.component; }, //点击行,选中 onItemClick: function (e) { //loadDimensionValueByID(e.itemData.id); }, onItemRendered: function (e) { var originalList = $scope.originalList; if (e && e.itemData && originalList && originalList.length > 0) { if (originalList.indexOf(e.itemData.id) > -1) { e.itemElement.closest('li.dx-treeview-node').find('.dx-checkbox-checked').addClass("dx-state-disabled"); } if (e.itemData.items && e.itemData.items.length>0) { var subRoles = e.itemData.items; var subRoleId = _.pluck(subRoles, 'id'); var hasCheckedAll = true; for (var i = 0; i < originalList.length; i++) { var hasFind = _.find(subRoleId, function (item) { return item.id == originalList[i].id; }); if (!hasFind) { hasCheckedAll = false; break; } } if (hasCheckedAll) { e.itemElement.closest('li.dx-treeview-node').find('.dx-checkbox-checked').addClass("dx-state-disabled"); } } } } //onContentReady: function (object, container) { // object.element.find('.dx-checkbox-checked').addClass('dx-state-disabled'); //} }; }; //构造选中的维度值list var populateSelectedDimensionValueList = function (itemData) { var itemIndex = -1; if (itemData.selected) { if (itemData.parentId != null && itemData.parentId !== undefined) { if ($scope.selectedDimensionList.indexOf(itemData.id) < 0) { $scope.selectedDimensionList.push({ 'parentId': itemData.parentId, 'id': itemData.id }); } } else { itemData.items.forEach(function (x) { if ($scope.selectedDimensionList.indexOf(x.id) < 0) { $scope.selectedDimensionList.push({ 'parentId': itemData.id, //当前选中节点的ID,也就是父级ID 'id': x.id //叶子节点ID }); } }); } } else if (!itemData.selected) { if (itemData.parentId != null && itemData.parentId !== undefined) { $.each($scope.selectedDimensionList, function (index, item) { if (item.id === itemData.id) { $scope.selectedDimensionList.splice(index, 1); return false; } }); } else { var parentId = itemData.id; var cloneSelectedDimensionList = angular.copy($scope.selectedDimensionList); var removeIndexList = []; $.each(cloneSelectedDimensionList, function (index, item) { itemData.items.forEach(function (x) { if (item.id === x.id && item.parentId === parentId) { removeIndexList.push(index); } }); }); //从后往前删除 for (var i = removeIndexList.length - 1; i >= 0; i--) { $scope.selectedDimensionList.splice(removeIndexList[i], 1); } $scope.selectedDimensionList.forEach(function (item) { $scope.widgetInstance.selectItem(item); }); } } console.log($scope.selectedDimensionList); }; (function initialize() { $log.debug('addExistDimensionModalController.ctor()...'); //loadDimensionValueTree(); loadDimensionTree(); // showModal(); })(); } ]);