"use strict"; /** * controller for User Profile Example */ app.controller("deptBindUserCtrl", [ "$rootScope", "$scope", "$state", "$timeout", "$interval", "$modal", "SweetAlert", "i18nService", "uiGridConstants", "uiGridGroupingConstants", "Restangular", "api_user_data", "api_bpm_data", "api_wechatfile", "api_custom", function ( $rootScope, $scope, $state, $timeout, $interval, $modal, SweetAlert, i18nService, uiGridConstants, uiGridGroupingConstants, Restangular, api_user_data, api_bpm_data, api_wechatfile, api_custom ) { $scope.langs = i18nService.getAllLangs(); $scope.lang = "zh-cn"; i18nService.setCurrentLang($scope.lang); var loginUser = $rootScope.user; $scope.xinzeng = false; $scope.shanchu = false; $scope.bianji = false; $scope.fuzhi = false; for (var i = 0; i < loginUser.menu.length; i++) { if (loginUser.menu[i].link == "deptBindUser_add") { $scope.xinzeng = true; } if (loginUser.menu[i].link == "deptBindUser_del") { $scope.shanchu = true; } if (loginUser.menu[i].link == "deptBindUser_edit") { $scope.bianji = true; } if (loginUser.menu[i].link == "deptBindUser_copy") { $scope.fuzhi = true; } } $scope.gridOptions = {}; $scope.gridOptions.data = "myData"; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = true; $scope.gridOptions.enableGridMenu = true; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalFiltering = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; $scope.gridOptions.rowTemplate = '
'; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; $scope.gridOptions.columnDefs = [ { name: "item", displayName: "序号", width: 50, enableFiltering: false, }, { name: "branchName", displayName: "院区", width: "10%", enableFiltering: false, }, { name: "deptArrStr", displayName: "科室", width: "20%", enableFiltering: false, }, { name: "dutyName", displayName: "责任科室", width: "10%", enableFiltering: false, }, { name: "categoryArrStr", displayName: "故障现象", width: "20%", enableFiltering: false, }, { name: "category.categor12y", displayName: "处理人OR组", width: "10%", enableFiltering: false, cellTemplate: "
" + '
{{row.entity.userName}}
' + '
{{row.entity.groupName}}
' + "
", }, { name: "操作", cellTemplate: '
' + '修改' + '删除' + '复制' + "
", enableFiltering: false, }, ]; $scope.transferDept = function (data) { if (data) { return data; } else { return "无"; } }; function selectItem(pmodel, childrens) { if (angular.isArray(pmodel)) { angular.forEach(pmodel, function (index) { if (index && index.id) { angular.forEach(childrens, function (item) { if (item.id == index.id) { item.selected = true; } if (item && item.children) { selectItem(pmodel, item.children); } }); } }); } else { if (pmodel && pmodel.id) { angular.forEach(childrens, function (item, index) { if (item.id == pmodel.id) { item.selected = true; } if (item && item.children) { selectItem(pmodel, item.children); } }); } } } // 复制 $scope.copyData = function (selectdata) { console.log(selectdata); $modal.open({ templateUrl: "assets/views/system/tpl/deptBindUserchange.html", controller: function ( $scope, scope, $modalInstance, SweetAlert, api_user_data, api_bpm_domain, $rootScope ) { // -------------------start---------------------- $scope.title = "复制科室派单组合"; //事件列表数据存储 $scope.incidentModel = { branch: selectdata.branchObj, //院区 department: selectdata.deptArr, //科室 assign: selectdata.userOrGroupType, //派单人或组 duty: {id: selectdata.dutyId, dept: selectdata.dutyName}, //责任科室 }; if(selectdata.userOrGroupType == 1){ $scope.incidentModel.user = selectdata.userObj;//处理人 }else if(selectdata.userOrGroupType == 2){ $scope.incidentModel.group = selectdata.groupObj;//处理组 } // 保存 $scope.ok = function () { if (!$scope.incidentModel.duty) { SweetAlert.swal({ title: "提示", text: "请选择责任科室!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if (!$scope.incidentModel.branch) { SweetAlert.swal({ title: "提示", text: "请选择院区!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if (!$scope.incidentModel.department.length) { SweetAlert.swal({ title: "提示", text: "请选择科室!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if (!$scope.incidentModel.department.length) { SweetAlert.swal({ title: "提示", text: "请选择科室!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if ($scope.incidentModel.assign == 0) { SweetAlert.swal({ title: "提示", text: "请选择派单给人或组!", type: "error", confirmButtonColor: "#DD6B55", }); $scope.flag = false; return; } if ( $scope.incidentModel.assign == 1 && !$scope.incidentModel.user ) { SweetAlert.swal({ title: "提示", text: "请选择处理人!", type: "error", confirmButtonColor: "#DD6B55", }); $scope.flag = false; return; } if ( $scope.incidentModel.assign == 2 && !$scope.incidentModel.group ) { SweetAlert.swal({ title: "提示", text: "请选择处理组!", type: "error", confirmButtonColor: "#DD6B55", }); $scope.flag = false; return; } // 确定 $scope.flag = false; handlerStart(); // 保存 function handlerStart() { if ($scope.flag) { return; } $scope.flag = true; var postData = { deptIds: $scope.incidentModel.department .map((v) => v.id) .toString(), categoryIds: $scope.jry_categoryData_selected .map((v) => v.id) .toString(), incidentAssignManager: { userOrGroupType: $scope.incidentModel.assign, branch: $scope.incidentModel.branch.id, dutyId: $scope.incidentModel.duty.id }, }; if ($scope.incidentModel.assign == 1) { // 处理人 postData.incidentAssignManager.handleUser = $scope.incidentModel.user.id; } else if ($scope.incidentModel.assign == 2) { // 处理组 postData.incidentAssignManager.group = $scope.incidentModel.group.id; } console.log($scope.incidentModel); console.log($scope.jry_categoryData_selected); // return; api_custom .addData("incidentAssignManager", postData) .then(function (response) { console.log(response); $scope.flag = false; if (response.status == 200) { SweetAlert.swal( { title: "保存成功!", type: "success", confirmButtonColor: "#007AFF", }, function () { $modalInstance.dismiss("cancel"); // $state.go("app.businessConfiguration.deptBindUser"); scope.refreshData("expand-right", scope.fileData); } ); } else { SweetAlert.swal({ title: "操作失败", text: response.error || "操作失败, 请稍后再试!", type: "error", }); } }); } }; // 院区 $scope.jry_branchSearch = function (key = "") { var branchData = { idx: 0, sum: 10, }; api_user_data .fetchDataList("branch", branchData) .then(function (data) { $scope.jry_branchData = data.list; }); }; // 责任科室模糊搜索 $scope.jry_dutySearch = function (key = "",branchId,isFirst=false) { var deptData = { idx: 0, sum: 10, dutyDepartment: { branch:branchId, dept: key, selectType: "pinyin_qs", }, }; api_user_data .fetchDataList("dutyDepartment", deptData) .then(function (data) { $scope.jry_dutyData = data.list; }); }; // 报修科室模糊搜索 $scope.jry_deptSearch = function (key = "",branchId,isFirst=false) { var deptData = { idx: 0, sum: 10, department: { branch:branchId, dept: key, selectType: "pinyin_qs", }, }; api_user_data .fetchDataList("department", deptData) .then(function (data) { var ids = $scope.incidentModel.department.map(v=>v.id); $scope.jry_deptData = data.list.filter(v=>!ids.includes(v.id)); // $scope.jry_deptData = data.list; // if(isFirst){ // var deptArr = selectdata.deptArr.map(v=>v.id); // $scope.incidentModel.department = data.list.filter(function(v){ return deptArr.indexOf(v.id) > -1 }) // } }); }; $scope.$watch('incidentModel.branch',function(newVal,oldVal){ if(newVal.id != oldVal.id){ $scope.jry_deptSearch('',newVal.id); $scope.incidentModel.department = []; $scope.jry_dutySearch('',newVal.id); $scope.incidentModel.duty = ''; } }) // $scope.jry_deptSearch(); // 处理人模糊搜索 $scope.jry_userSearch = function (key = "") { var userData = { idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support" }, selectDetails: "1", simple: true, name: key, selectType: "pinyin_qs", }, }; api_user_data.fetchDataList("user", userData).then(function (data) { $scope.jry_userData = data.list; if ($scope.incidentModel.user) { if (!$scope.incidentModel.user.name) { $scope.incidentModel.user = data.list.find( (v) => v.id == $scope.incidentModel.user.id ); } } }); }; $scope.jry_userSearch(); // 处理组模糊搜索 $scope.jry_groupSearch = function (key = "") { var groupData = { idx: 0, sum: 10, group: { group: { selectType: "nouser" }, }, }; api_user_data .fetchDataList("group", groupData) .then(function (data) { $scope.jry_groupData = data.list; }); }; $scope.jry_groupSearch(); // 故障现象选中 $scope.categorySelect = ""; $scope.jry_categoryData = []; $scope.jry_categoryData_selected = []; $scope.jry_categoryData_copy_left = []; $scope.jry_categoryData_copy_right = []; $scope.changeCategorySelect = function (item, type) { item.mutiCategory = item.mutiCategory.replace(/<[^<>]+>/g, ""); $scope.categorySelect = item; item.selected = !item.selected; console.log(item, type); switch (type) { case "left": if (item.selected) { //选中 $scope.jry_categoryData_copy_left.push(item); } else { // 取消 $scope.jry_categoryData_copy_left = $scope.jry_categoryData_copy_left.filter( (v) => v.id != item.id ); } console.log($scope.jry_categoryData_copy_left, "left"); break; case "right": if (item.selected) { //选中 $scope.jry_categoryData_copy_right.push(item); } else { // 取消 $scope.jry_categoryData_copy_right = $scope.jry_categoryData_copy_right.filter( (v) => v.id != item.id ); } console.log($scope.jry_categoryData_copy_right, "right"); break; } }; // 故障现象查询 $scope.c_timer = null; $scope.c_keyword = ""; $scope.jry_categorySearch = function (key = "",isFirst=false) { $scope.c_keyword = key; clearTimeout($scope.c_timer); $scope.c_timer = setTimeout(() => { var categoryData = { idx: 0, sum: 9999, incidentcategory: { category: key, selectType: "pinyin_qs", hierarchyQuery:'three' }, }; $scope.loading_c = true; if(isFirst){ $scope.loading_b = true; } api_user_data .fetchDataList("incidentcategory", categoryData) .then(function (data) { if ($scope.c_keyword == key) { $scope.loading_c = false; $scope.loading_b = false; data.list.forEach((v) => { v.selected = false; //$scope.jry_categoryData_copy_left $scope.jry_categoryData_copy_left.forEach((vv) => { if (v.id == vv.id) { v.selected = true; } }); if (v.mutiCategory) { v.mutiCategory = v.mutiCategory.replace( $scope.jry_modelLeft, '' + $scope.jry_modelLeft + "" ); } }); if(!isFirst){ //需要过滤右边的选项liaomingming var jry_categoryData_selected = $scope.jry_categoryData_selected.map(v=>v.id); $scope.jry_categoryData = data.list.filter(function(v){ return jry_categoryData_selected.indexOf(v.id) == -1 }); }else{ var categoryArrIds = selectdata.categoryArr.map(v=>v.id); var arr1 = []; var arr1_selected = []; arr1 = data.list.filter(function(v){ return categoryArrIds.indexOf(v.id) == -1 }); arr1_selected = data.list.filter(function(v){ return categoryArrIds.indexOf(v.id) > -1 }); $scope.jry_categoryData = arr1; $scope.jry_categoryData_selected = arr1_selected; } } }); }, 500); }; $scope.jry_categorySearch('',true); function multisort(array, ...compairers) { return array.sort((a, b) => { for (const c of compairers) { const r = c(a, b); if (r !== 0) { return r; } } }); } // toRight $scope.toRight = function (arr) { var arrLeft = angular.copy($scope.jry_categoryData); var arRight = angular.copy($scope.jry_categoryData_selected); arr.forEach((v) => (v.selected = false)); arRight = $scope.jry_categoryData_selected.concat(arr); arr.forEach((v) => { arrLeft = arrLeft.filter((vv) => vv.id != v.id); }); $scope.jry_categoryData_copy_left = []; $scope.jry_categoryData = multisort( arrLeft, (a, b) => a.hierarchy - b.hierarchy, (a, b) => a.id - b.id ); $scope.jry_categoryData_selected = multisort( arRight, (a, b) => a.hierarchy - b.hierarchy, (a, b) => a.id - b.id ); }; // toLeft $scope.toLeft = function (arr) { // var arrLeft = angular.copy($scope.jry_categoryData); var arRight = angular.copy($scope.jry_categoryData_selected); arr.forEach((v) => (v.selected = false)); // arrLeft = arrLeft.concat(arr); arr.forEach((v) => { arRight = arRight.filter((vv) => vv.id != v.id); }); $scope.jry_categoryData_copy_right = []; // $scope.jry_categoryData = multisort( // arrLeft, // (a, b) => a.hierarchy - b.hierarchy, // (a, b) => a.id - b.id // ); $scope.jry_categoryData_selected = multisort( arRight, (a, b) => a.hierarchy - b.hierarchy, (a, b) => a.id - b.id ); $scope.jry_categorySearch($scope.jry_modelLeft,false); }; // 取消 $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; // -------------------end---------------------- }, resolve: { scope: function() { return $scope; }, selectdata: function() { return selectdata; } }, }); }; // 修改 $scope.saveData = function (selectdata) { console.log(selectdata); $modal.open({ templateUrl: "assets/views/system/tpl/deptBindUserchange.html", controller: function ( $scope, scope, $modalInstance, SweetAlert, api_user_data, api_bpm_domain, $rootScope ) { // -------------------start---------------------- $scope.title = "修改科室派单组合"; //事件列表数据存储 $scope.incidentModel = { branch: selectdata.branchObj, //院区 department: selectdata.deptArr, //科室 assign: selectdata.userOrGroupType, //派单人或组 duty: {id: selectdata.dutyId, dept: selectdata.dutyName}, //责任科室 }; if(selectdata.userOrGroupType == 1){ $scope.incidentModel.user = selectdata.userObj;//处理人 }else if(selectdata.userOrGroupType == 2){ $scope.incidentModel.group = selectdata.groupObj;//处理组 } // 保存 $scope.ok = function () { if (!$scope.incidentModel.duty) { SweetAlert.swal({ title: "提示", text: "请选择责任科室!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if (!$scope.incidentModel.branch) { SweetAlert.swal({ title: "提示", text: "请选择院区!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if (!$scope.incidentModel.department.length) { SweetAlert.swal({ title: "提示", text: "请选择科室!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if (!$scope.incidentModel.department.length) { SweetAlert.swal({ title: "提示", text: "请选择科室!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if ($scope.incidentModel.assign == 0) { SweetAlert.swal({ title: "提示", text: "请选择派单给人或组!", type: "error", confirmButtonColor: "#DD6B55", }); $scope.flag = false; return; } if ( $scope.incidentModel.assign == 1 && !$scope.incidentModel.user ) { SweetAlert.swal({ title: "提示", text: "请选择处理人!", type: "error", confirmButtonColor: "#DD6B55", }); $scope.flag = false; return; } if ( $scope.incidentModel.assign == 2 && !$scope.incidentModel.group ) { SweetAlert.swal({ title: "提示", text: "请选择处理组!", type: "error", confirmButtonColor: "#DD6B55", }); $scope.flag = false; return; } // 确定 $scope.flag = false; handlerStart(); // 保存 function handlerStart() { if ($scope.flag) { return; } $scope.flag = true; var postData = { deptIds: $scope.incidentModel.department .map((v) => v.id) .toString(), categoryIds: $scope.jry_categoryData_selected .map((v) => v.id) .toString(), incidentAssignManager: { batchId:selectdata.batchId, userOrGroupType: $scope.incidentModel.assign, branch: $scope.incidentModel.branch.id, dutyId: $scope.incidentModel.duty.id }, }; if ($scope.incidentModel.assign == 1) { // 处理人 postData.incidentAssignManager.handleUser = $scope.incidentModel.user.id; } else if ($scope.incidentModel.assign == 2) { // 处理组 postData.incidentAssignManager.group = $scope.incidentModel.group.id; } console.log($scope.incidentModel); console.log($scope.jry_categoryData_selected); // return; api_custom .updData("incidentAssignManager", postData) .then(function (response) { console.log(response); $scope.flag = false; if (response.status == 200) { SweetAlert.swal( { title: "保存成功!", type: "success", confirmButtonColor: "#007AFF", }, function () { $modalInstance.dismiss("cancel"); // $state.go("app.businessConfiguration.deptBindUser"); scope.refreshData("expand-right", scope.fileData); } ); } else { SweetAlert.swal({ title: "操作失败", text: response.error || "操作失败, 请稍后再试!", type: "error", }); } }); } }; // 院区 $scope.jry_branchSearch = function (key = "") { var branchData = { idx: 0, sum: 10, }; api_user_data .fetchDataList("branch", branchData) .then(function (data) { $scope.jry_branchData = data.list; }); }; // 责任科室模糊搜索 $scope.jry_dutySearch = function (key = "",branchId,isFirst=false) { var deptData = { idx: 0, sum: 10, dutyDepartment: { branch:branchId, dept: key, selectType: "pinyin_qs", }, }; api_user_data .fetchDataList("dutyDepartment", deptData) .then(function (data) { $scope.jry_dutyData = data.list; }); }; // 报修科室模糊搜索 $scope.jry_deptSearch = function (key = "",branchId,isFirst=false) { var deptData = { idx: 0, sum: 10, department: { branch:branchId, dept: key, selectType: "pinyin_qs", }, }; api_user_data .fetchDataList("department", deptData) .then(function (data) { var ids = $scope.incidentModel.department.map(v=>v.id); $scope.jry_deptData = data.list.filter(v=>!ids.includes(v.id)); // if(isFirst){ // var deptArr = selectdata.deptArr.map(v=>v.id); // $scope.incidentModel.department = data.list.filter(function(v){ return deptArr.indexOf(v.id) > -1 }) // } }); }; $scope.$watch('incidentModel.branch',function(newVal,oldVal){ if(newVal.id != oldVal.id){ $scope.jry_deptSearch('',newVal.id); $scope.incidentModel.department = []; $scope.jry_dutySearch('',newVal.id); $scope.incidentModel.duty = ''; } }) // $scope.jry_deptSearch(); // 处理人模糊搜索 $scope.jry_userSearch = function (key = "") { var userData = { idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support" }, selectDetails: "1", simple: true, name: key, selectType: "pinyin_qs", }, }; api_user_data.fetchDataList("user", userData).then(function (data) { $scope.jry_userData = data.list; if ($scope.incidentModel.user) { if (!$scope.incidentModel.user.name) { $scope.incidentModel.user = data.list.find( (v) => v.id == $scope.incidentModel.user.id ); } } }); }; $scope.jry_userSearch(); // 处理组模糊搜索 $scope.jry_groupSearch = function (key = "") { var groupData = { idx: 0, sum: 10, group: { group: { selectType: "nouser" }, }, }; api_user_data .fetchDataList("group", groupData) .then(function (data) { $scope.jry_groupData = data.list; }); }; $scope.jry_groupSearch(); // 故障现象选中 $scope.categorySelect = ""; $scope.jry_categoryData = []; $scope.jry_categoryData_selected = []; $scope.jry_categoryData_copy_left = []; $scope.jry_categoryData_copy_right = []; $scope.changeCategorySelect = function (item, type) { item.mutiCategory = item.mutiCategory.replace(/<[^<>]+>/g, ""); $scope.categorySelect = item; item.selected = !item.selected; console.log(item, type); switch (type) { case "left": if (item.selected) { //选中 $scope.jry_categoryData_copy_left.push(item); } else { // 取消 $scope.jry_categoryData_copy_left = $scope.jry_categoryData_copy_left.filter( (v) => v.id != item.id ); } console.log($scope.jry_categoryData_copy_left, "left"); break; case "right": if (item.selected) { //选中 $scope.jry_categoryData_copy_right.push(item); } else { // 取消 $scope.jry_categoryData_copy_right = $scope.jry_categoryData_copy_right.filter( (v) => v.id != item.id ); } console.log($scope.jry_categoryData_copy_right, "right"); break; } }; // 故障现象查询 $scope.c_timer = null; $scope.c_keyword = ""; $scope.jry_categorySearch = function (key = "",isFirst=false) { $scope.c_keyword = key; clearTimeout($scope.c_timer); $scope.c_timer = setTimeout(() => { var categoryData = { idx: 0, sum: 9999, incidentcategory: { category: key, selectType: "pinyin_qs", hierarchyQuery:'three' }, }; $scope.loading_c = true; if(isFirst){ $scope.loading_b = true; } api_user_data .fetchDataList("incidentcategory", categoryData) .then(function (data) { if ($scope.c_keyword == key) { $scope.loading_c = false; $scope.loading_b = false; data.list.forEach((v) => { v.selected = false; //$scope.jry_categoryData_copy_left $scope.jry_categoryData_copy_left.forEach((vv) => { if (v.id == vv.id) { v.selected = true; } }); if (v.mutiCategory) { v.mutiCategory = v.mutiCategory.replace( $scope.jry_modelLeft, '' + $scope.jry_modelLeft + "" ); } }); if(!isFirst){ //需要过滤右边的选项liaomingming var jry_categoryData_selected = $scope.jry_categoryData_selected.map(v=>v.id); $scope.jry_categoryData = data.list.filter(function(v){ return jry_categoryData_selected.indexOf(v.id) == -1 }); }else{ var categoryArrIds = selectdata.categoryArr.map(v=>v.id); var arr1 = []; var arr1_selected = []; arr1 = data.list.filter(function(v){ return categoryArrIds.indexOf(v.id) == -1 }); arr1_selected = data.list.filter(function(v){ return categoryArrIds.indexOf(v.id) > -1 }); $scope.jry_categoryData = arr1; $scope.jry_categoryData_selected = arr1_selected; } } }); }, 500); }; $scope.jry_categorySearch('',true); function multisort(array, ...compairers) { return array.sort((a, b) => { for (const c of compairers) { const r = c(a, b); if (r !== 0) { return r; } } }); } // toRight $scope.toRight = function (arr) { var arrLeft = angular.copy($scope.jry_categoryData); var arRight = angular.copy($scope.jry_categoryData_selected); arr.forEach((v) => (v.selected = false)); arRight = $scope.jry_categoryData_selected.concat(arr); arr.forEach((v) => { arrLeft = arrLeft.filter((vv) => vv.id != v.id); }); $scope.jry_categoryData_copy_left = []; $scope.jry_categoryData = multisort( arrLeft, (a, b) => a.hierarchy - b.hierarchy, (a, b) => a.id - b.id ); $scope.jry_categoryData_selected = multisort( arRight, (a, b) => a.hierarchy - b.hierarchy, (a, b) => a.id - b.id ); }; // toLeft $scope.toLeft = function (arr) { // var arrLeft = angular.copy($scope.jry_categoryData); var arRight = angular.copy($scope.jry_categoryData_selected); arr.forEach((v) => (v.selected = false)); // arrLeft = arrLeft.concat(arr); arr.forEach((v) => { arRight = arRight.filter((vv) => vv.id != v.id); }); $scope.jry_categoryData_copy_right = []; // $scope.jry_categoryData = multisort( // arrLeft, // (a, b) => a.hierarchy - b.hierarchy, // (a, b) => a.id - b.id // ); $scope.jry_categoryData_selected = multisort( arRight, (a, b) => a.hierarchy - b.hierarchy, (a, b) => a.id - b.id ); $scope.jry_categorySearch($scope.jry_modelLeft,false); }; // 取消 $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; // -------------------end---------------------- }, resolve: { scope: function() { return $scope; }, selectdata: function() { return selectdata; } }, }); }; 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.addData = function () { $modal.open({ templateUrl: "assets/views/system/tpl/deptBindUserchange.html", controller: function ( $scope, scope, $modalInstance, SweetAlert, api_user_data, api_bpm_domain, $rootScope ) { // -------------------start---------------------- $scope.title = "新增科室派单组合"; //事件列表数据存储 $scope.incidentModel = { branch: "", //院区 department: [], //科室 assign: 1, //派单人或组 user: "", //处理人 group: "", //处理组 duty: "", //责任科室 }; // 保存 $scope.ok = function () { if (!$scope.incidentModel.duty) { SweetAlert.swal({ title: "提示", text: "请选择责任科室!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if (!$scope.incidentModel.branch) { SweetAlert.swal({ title: "提示", text: "请选择院区!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if (!$scope.incidentModel.department.length) { SweetAlert.swal({ title: "提示", text: "请选择科室!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if (!$scope.incidentModel.department.length) { SweetAlert.swal({ title: "提示", text: "请选择科室!", type: "error", confirmButtonColor: "#DD6B55", }); return; } if ($scope.incidentModel.assign == 0) { SweetAlert.swal({ title: "提示", text: "请选择派单给人或组!", type: "error", confirmButtonColor: "#DD6B55", }); $scope.flag = false; return; } if ( $scope.incidentModel.assign == 1 && !$scope.incidentModel.user ) { SweetAlert.swal({ title: "提示", text: "请选择处理人!", type: "error", confirmButtonColor: "#DD6B55", }); $scope.flag = false; return; } if ( $scope.incidentModel.assign == 2 && !$scope.incidentModel.group ) { SweetAlert.swal({ title: "提示", text: "请选择处理组!", type: "error", confirmButtonColor: "#DD6B55", }); $scope.flag = false; return; } // 确定 $scope.flag = false; handlerStart(); // 保存 function handlerStart() { if ($scope.flag) { return; } $scope.flag = true; var postData = { deptIds: $scope.incidentModel.department .map((v) => v.id) .toString(), categoryIds: $scope.jry_categoryData_selected .map((v) => v.id) .toString(), incidentAssignManager: { userOrGroupType: $scope.incidentModel.assign, branch: $scope.incidentModel.branch.id, dutyId: $scope.incidentModel.duty.id }, }; if ($scope.incidentModel.assign == 1) { // 处理人 postData.incidentAssignManager.handleUser = $scope.incidentModel.user.id; } else if ($scope.incidentModel.assign == 2) { // 处理组 postData.incidentAssignManager.group = $scope.incidentModel.group.id; } console.log($scope.incidentModel); console.log($scope.jry_categoryData_selected); // return; api_custom .addData("incidentAssignManager", postData) .then(function (response) { console.log(response); $scope.flag = false; if (response.status == 200) { SweetAlert.swal( { title: "保存成功!", type: "success", confirmButtonColor: "#007AFF", }, function () { $modalInstance.dismiss("cancel"); // $state.go("app.businessConfiguration.deptBindUser"); scope.refreshData("expand-right", scope.fileData); } ); } else { SweetAlert.swal({ title: "操作失败", text: response.error || "操作失败, 请稍后再试!", type: "error", }); } }); } }; // 院区 $scope.jry_branchSearch = function (key = "") { var branchData = { idx: 0, sum: 10, }; api_user_data .fetchDataList("branch", branchData) .then(function (data) { $scope.jry_branchData = data.list; }); }; // 责任科室模糊搜索 $scope.jry_dutySearch = function (key = "",branchId) { var deptData = { idx: 0, sum: 10, dutyDepartment: { branch:branchId, dept: key, selectType: "pinyin_qs", }, }; api_user_data .fetchDataList("dutyDepartment", deptData) .then(function (data) { $scope.jry_dutyData = data.list; }); }; // 报修科室模糊搜索 $scope.jry_deptSearch = function (key = "",branchId) { var deptData = { idx: 0, sum: 10, department: { branch:branchId, dept: key, selectType: "pinyin_qs", }, }; api_user_data .fetchDataList("department", deptData) .then(function (data) { // $scope.jry_deptData = data.list; var ids = $scope.incidentModel.department.map(v=>v.id); $scope.jry_deptData = data.list.filter(v=>!ids.includes(v.id)); }); }; $scope.$watch('incidentModel.branch',function(newVal,oldVal){ if(newVal.id != oldVal.id){ $scope.jry_deptSearch('',newVal.id); $scope.incidentModel.department = []; $scope.jry_dutySearch('',newVal.id); $scope.incidentModel.duty = ''; } }) // $scope.jry_deptSearch(); // 处理人模糊搜索 $scope.jry_userSearch = function (key = "") { var userData = { idx: 0, sum: 10, user: { roledata: { rolecode: "first-line support" }, selectDetails: "1", simple: true, name: key, selectType: "pinyin_qs", }, }; api_user_data.fetchDataList("user", userData).then(function (data) { $scope.jry_userData = data.list; if ($scope.incidentModel.user) { if (!$scope.incidentModel.user.name) { $scope.incidentModel.user = data.list.find( (v) => v.id == $scope.incidentModel.user.id ); } } }); }; $scope.jry_userSearch(); // 处理组模糊搜索 $scope.jry_groupSearch = function (key = "") { var groupData = { idx: 0, sum: 10, group: { group: { selectType: "nouser" }, }, }; api_user_data .fetchDataList("group", groupData) .then(function (data) { $scope.jry_groupData = data.list; }); }; $scope.jry_groupSearch(); // 故障现象选中 $scope.categorySelect = ""; $scope.jry_categoryData = []; $scope.jry_categoryData_selected = []; $scope.jry_categoryData_copy_left = []; $scope.jry_categoryData_copy_right = []; $scope.changeCategorySelect = function (item, type) { item.mutiCategory = item.mutiCategory.replace(/<[^<>]+>/g, ""); $scope.categorySelect = item; item.selected = !item.selected; console.log(item, type); switch (type) { case "left": if (item.selected) { //选中 $scope.jry_categoryData_copy_left.push(item); } else { // 取消 $scope.jry_categoryData_copy_left = $scope.jry_categoryData_copy_left.filter( (v) => v.id != item.id ); } console.log($scope.jry_categoryData_copy_left, "left"); break; case "right": if (item.selected) { //选中 $scope.jry_categoryData_copy_right.push(item); } else { // 取消 $scope.jry_categoryData_copy_right = $scope.jry_categoryData_copy_right.filter( (v) => v.id != item.id ); } console.log($scope.jry_categoryData_copy_right, "right"); break; } }; // 故障现象查询 $scope.c_timer = null; $scope.c_keyword = ""; $scope.jry_categorySearch = function (key = "",isFirst=false) { $scope.c_keyword = key; clearTimeout($scope.c_timer); $scope.c_timer = setTimeout(() => { var categoryData = { idx: 0, sum: 9999, incidentcategory: { category: key, selectType: "pinyin_qs", hierarchyQuery:'three' }, }; $scope.loading_c = true; if(isFirst){ $scope.loading_b = true; } api_user_data .fetchDataList("incidentcategory", categoryData) .then(function (data) { if ($scope.c_keyword == key) { $scope.loading_c = false; $scope.loading_b = false; data.list.forEach((v) => { v.selected = false; //$scope.jry_categoryData_copy_left $scope.jry_categoryData_copy_left.forEach((vv) => { if (v.id == vv.id) { v.selected = true; } }); if (v.mutiCategory) { v.mutiCategory = v.mutiCategory.replace( $scope.jry_modelLeft, '' + $scope.jry_modelLeft + "" ); } }); //需要过滤右边的选项liaomingming var jry_categoryData_selected = $scope.jry_categoryData_selected.map(v=>v.id); $scope.jry_categoryData = data.list.filter(function(v){ return jry_categoryData_selected.indexOf(v.id) == -1 }); } }); }, 500); }; $scope.jry_categorySearch('',true); function multisort(array, ...compairers) { return array.sort((a, b) => { for (const c of compairers) { const r = c(a, b); if (r !== 0) { return r; } } }); } // toRight $scope.toRight = function (arr) { var arrLeft = angular.copy($scope.jry_categoryData); var arRight = angular.copy($scope.jry_categoryData_selected); arr.forEach((v) => (v.selected = false)); arRight = $scope.jry_categoryData_selected.concat(arr); arr.forEach((v) => { arrLeft = arrLeft.filter((vv) => vv.id != v.id); }); $scope.jry_categoryData_copy_left = []; $scope.jry_categoryData = multisort( arrLeft, (a, b) => a.hierarchy - b.hierarchy, (a, b) => a.id - b.id ); $scope.jry_categoryData_selected = multisort( arRight, (a, b) => a.hierarchy - b.hierarchy, (a, b) => a.id - b.id ); }; // toLeft $scope.toLeft = function (arr) { // var arrLeft = angular.copy($scope.jry_categoryData); var arRight = angular.copy($scope.jry_categoryData_selected); arr.forEach((v) => (v.selected = false)); // arrLeft = arrLeft.concat(arr); arr.forEach((v) => { arRight = arRight.filter((vv) => vv.id != v.id); }); $scope.jry_categoryData_copy_right = []; // $scope.jry_categoryData = multisort( // arrLeft, // (a, b) => a.hierarchy - b.hierarchy, // (a, b) => a.id - b.id // ); $scope.jry_categoryData_selected = multisort( arRight, (a, b) => a.hierarchy - b.hierarchy, (a, b) => a.id - b.id ); $scope.jry_categorySearch($scope.jry_modelLeft,false); }; // 取消 $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; // -------------------end---------------------- }, resolve: { scope: function() { return $scope; } }, }); }; // 删除 $scope.removeData = function (selectdata) { var modalInstance = $modal.open({ templateUrl: "assets/views/incident/tpl/acceptTask.tpl.html", controller: function ($scope, scope, $modalInstance, api_bpm_data) { var rmvList = []; $scope.title = "科室派单组合删除"; $scope.connect = "确定要删除此科室派单组合?"; rmvList.push(selectdata); $scope.ok = function () { $modalInstance.close(rmvList); }; $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, size: "sm", resolve: { scope: function () { return $scope; }, selectdata: function () { return selectdata; }, }, }); modalInstance.result.then(function (selectedItem) { if (selectedItem) { if (selectedItem.length > 0) { console.log(selectedItem); api_custom .rmvData("incidentAssignManager", { batchId: selectedItem[0].batchId, }) .then(function (response) { if (response.status == 200) { SweetAlert.swal( { title: "删除成功!", type: "success", confirmButtonColor: "#007AFF", }, function () { $scope.myData = _.reject($scope.myData, function (o) { return _.includes(selectedItem, o.id); }); $scope.selected = { items: [], }; $scope.gridOptions.totalItems = $scope.gridOptions.totalItems - selectedItem.length; // $scope.gridApi.grid.selection.selectedCount = 0; $scope.refreshData("expand-right", $scope.fileData); } ); } else { SweetAlert.swal({ title: "操作异常!", text: "系统异常,请稍后重试,或者联系管理员!", type: "error", }); } }); } } }); }; $scope.selected = { items: [], }; $scope.editted = { items: [], }; $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged( $scope, function (newPage, pageSize) { var filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; $scope.fileData.idx = newPage - 1; $scope.fileData.sum = pageSize; defaultFilterData = filtersData; $scope.refreshData("expand-right", $scope.fileData); } ); // gridApi.selection.on.rowSelectionChanged($scope, function (scope) { // scope.grid.appScope.selected.items = scope.entity; // }); }; var defaultFilterData = { idx: 0, sum: 10, }; $scope.memoryfilterData = { idx: 0, sum: 10, }; $scope.fileData = { idx: 0, sum: 10, incidentAssignManager: {}, }; $scope.ldloading = {}; $scope.refreshData = function (style, filterData) { $scope.selected.items = {}; $scope.ldloading[style.replace("-", "_")] = true; if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } $scope.myData = []; $scope.selected = { items: [] }; // if ($scope.gridApi) { // $scope.gridApi.grid.selection.selectedCount = 0; // } filterData = angular.copy(filterData); api_custom.fetchDataList("incidentAssignManager", filterData).then( function (data) { var myData = Restangular.stripRestangular(data); myData.data = myData.data || []; // 处理后端返回的数据 start myData.data.forEach((v) => { v.forEach((vv) => { vv.branchObj = { id: vv.branch, hosName: vv.branchName }; vv.categoryObj = { id: vv.categoryId, mutiCategory: vv.categoryName, }; vv.deptObj = { id: vv.deptId, dept: vv.deptName }; if (vv.userOrGroupType == 1) { vv.userObj = { id: vv.handleUser, name: vv.userName }; } else if (vv.userOrGroupType == 2) { vv.groupObj = { id: vv.group, groupName: vv.groupName }; } }); }); console.log(myData.data); var newList = []; myData.data.forEach((v, i) => { v.forEach((vv) => { if (newList[i]) { // 存在 if (!newList[i].categoryArr) { newList[i].categoryArr = [newList[i].categoryObj]; } else { let flag = newList[i].categoryArr.some( (vvv) => vvv.id == vv.categoryObj.id ); if (!flag) { newList[i].categoryArr.push(vv.categoryObj); } } if (!newList[i].deptArr) { newList[i].deptArr = [newList[i].deptObj]; } else { let flag = newList[i].deptArr.some( (vvv) => vvv.id == vv.deptObj.id ); if (!flag) { newList[i].deptArr.push(vv.deptObj); } } if (vv.userOrGroupType == 2 && !newList[i].group) { newList[i].groupObj = vv.groupObj; } if (vv.userOrGroupType == 1 && !newList[i].handleUser) { newList[i].userObj = vv.userObj; } if (!newList[i].branch) { newList[i].branchObj = vv.branchObj; } } else { // 不存在 vv.deptArr = [vv.deptObj]; vv.categoryArr = [vv.categoryObj]; newList[i] = vv; } }); }); newList.forEach((v) => { v.deptArrStr = v.deptArr.map((v) => v.dept).toString(); v.categoryArrStr = v.categoryArr .map((v) => v.mutiCategory) .toString(); }); console.log(newList); // 处理后端返回的数据 end $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = newList; for (var i = 0; i < $scope.myData.length; i++) { $scope.myData[i]["item"] = i + 1 + filterData.idx * filterData.sum; } $scope.ldloading[style.replace("-", "_")] = false; }, function () { $scope.ldloading[style.replace("-", "_")] = false; } ); }; $scope.refreshData2 = function (style, filterData) { $scope.selected.items = {}; $scope.ldloading[style.replace("-", "_")] = true; if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } $scope.myData = []; $scope.selected = { items: [] }; // if ($scope.gridApi) { // $scope.gridApi.grid.selection.selectedCount = 0; // } filterData = angular.copy(filterData); if (filterData.incidentAssignManager.category) { filterData.incidentAssignManager.category = filterData.incidentAssignManager.category.id; } api_custom.fetchDataList("incidentAssignManager", filterData).then( function (data) { var myData = Restangular.stripRestangular(data); myData.data = myData.data || []; // 处理后端返回的数据 start myData.data.forEach((v) => { v.forEach((vv) => { vv.branchObj = { id: vv.branch, hosName: vv.branchName }; vv.categoryObj = { id: vv.categoryId, mutiCategory: vv.categoryName, }; vv.deptObj = { id: vv.deptId, dept: vv.deptName }; if (vv.userOrGroupType == 1) { vv.userObj = { id: vv.handleUser, name: vv.userName }; } else if (vv.userOrGroupType == 2) { vv.groupObj = { id: vv.group, groupName: vv.groupName }; } }); }); console.log(myData.data); var newList = []; myData.data.forEach((v, i) => { v.forEach((vv) => { if (newList[i]) { // 存在 if (!newList[i].categoryArr) { newList[i].categoryArr = [newList[i].categoryObj]; } else { let flag = newList[i].categoryArr.some( (vvv) => vvv.id == vv.categoryObj.id ); if (!flag) { newList[i].categoryArr.push(vv.categoryObj); } } if (!newList[i].deptArr) { newList[i].deptArr = [newList[i].deptObj]; } else { let flag = newList[i].deptArr.some( (vvv) => vvv.id == vv.deptObj.id ); if (!flag) { newList[i].deptArr.push(vv.deptObj); } } if (vv.userOrGroupType == 2 && !newList[i].group) { newList[i].groupObj = vv.groupObj; } if (vv.userOrGroupType == 1 && !newList[i].handleUser) { newList[i].userObj = vv.userObj; } if (!newList[i].branch) { newList[i].branchObj = vv.branchObj; } } else { // 不存在 vv.deptArr = [vv.deptObj]; vv.categoryArr = [vv.categoryObj]; newList[i] = vv; } }); }); newList.forEach((v) => { v.deptArrStr = v.deptArr.map((v) => v.dept).toString(); v.categoryArrStr = v.categoryArr .map((v) => v.mutiCategory) .toString(); }); console.log(newList); // 处理后端返回的数据 end $scope.gridOptions.totalItems = myData.totalNum; $scope.myData = newList; for (var i = 0; i < $scope.myData.length; i++) { $scope.myData[i]["item"] = i + 1 + filterData.idx * filterData.sum; } $scope.ldloading[style.replace("-", "_")] = false; }, function () { $scope.ldloading[style.replace("-", "_")] = false; } ); }; // 搜索 $scope.searchData = function () { $scope.refreshData("expand-right", $scope.fileData); }; // 清空 $scope.clean = function () { delete $scope.fileData.incidentAssignManager.content; delete $scope.fileData.incidentAssignManager.category; $scope.getCategoryData(); $scope.refreshData("expand-right", $scope.fileData); }; // 获取故障现象下拉 $scope.model = {}; $scope.categoryData = []; $scope.getCategoryData = function (s, fn) { if (s) { var filterKeyword = s.filterKeyword; } var postData = { idx: 0, sum: 1000, }; if (filterKeyword) { postData.incidentcategory = { selectType: "pinyin_qs", category: filterKeyword, hierarchyQuery:'three' }; } $scope.my_data = []; $scope.doing_async = true; api_bpm_data .fetchDataList("incidentcategory", postData) .then(function (response) { if (response.status == 200) { var data = response.list; if (filterKeyword) { data.forEach((e) => { e.isExpanded = true; }); var li = transform(data).children; console.log(li); fn(li); return; } else { var objects = []; for (var i = 0; i < data.length; i++) { var object = {}; object.id = data[i].id; object.parent = data[i].parent; object.category = data[i].category; object.isExpanded = true; objects.push(object); } $scope.my_data = convertParentToChildList(objects); $scope.categoryData = angular.copy($scope.my_data); } if ($scope.my_data.length > 0) { $scope.doing_async = false; } } else { SweetAlert.swal({ title: "系统错误!", text: "请刷新重试!", type: "error", }); } }); }; $scope.getCategoryData(); $scope.refreshData("expand-right", $scope.fileData); $scope.timer = $interval(function () { $scope.refreshData2("expand-right", $scope.fileData); }, $rootScope.refreshTime); $scope.$on("$destroy", function () { $interval.cancel($scope.timer); }); }, ]);