"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);
});
},
]);