wg-basic/module-activiti/src/main/resources/static/editor-app/configuration/properties-oa-node-manage-controller.js

244 lines
8.1 KiB
JavaScript
Raw Normal View History

var OaNodeManageCtrl = [ '$scope' , '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) {
var opts = {
template: 'editor-app/configuration/properties/oa-node-manage-popup.html?version=' + Date.now(),
backdrop: 'static',
keyboard: false,
scope: $scope
};
$modal(opts);
}];
var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $timeout, $http) {
// console.log($scope.selectedItem);
// console.log($scope.editor);
// console.log($scope.editor.modelMetaData.model.childShapes);
// console.log($scope.stencilItemGroups)
// 获取流程中的配置
var model = $scope.editor.modelMetaData.model;
var childShapes = model.childShapes;
// 关联到的属性
var taskListenerProperty = $scope.selectedItem.properties[16];
// 初始化
var startNode;
$scope.oaNodeManage = {
assignee: {
nodeType: 'normal',
assigneeType: '',
assigneeCount: 0,
assignee: '',
autoAssignType: '',
departmentType: '',
departments: '',
roles: '',
positions: '',
quickAssignee: '',
signType: '',
signUsers: '',
completeCondition: '',
completeCount: 0
},
formId: '',
formFields: [],
oaUserTaskListeners: []
}
// 添加用户任务监听器
function addOaUserTaskListener(event, className, expression, delegateExpression) {
var implementation = '';
if (className) {
implementation = className;
} else if (expression) {
implementation = expression;
} else if (delegateExpression) {
implementation = delegateExpression;
}
$scope.oaNodeManage.oaUserTaskListeners.push({
event: event,
implementation: implementation,
className: className ? className : '',
expression: expression ? expression : '',
delegateExpression: delegateExpression ? delegateExpression : ''
});
}
/**
* 判断监听器是否存在
* @param event
* @param className
*/
function isListenerExist(event, className) {
for (var i = 0, item; item = $scope.oaNodeManage.oaUserTaskListeners[i++];) {
if (item.event == event && item.className == className) {
return true;
}
}
return false;
}
$scope.addOaUserTaskCreateListener = function () {
var event = 'create',
className = '',
expression = '',
delegateExpression = '${oaUserTaskCreateListener}';
if (isListenerExist(event, className)) {
top.dialog.msg('监听器已经存在');
return;
}
addOaUserTaskListener(event, className, expression, delegateExpression);
}
$scope.addOaUserTaskAssignmentListener = function () {
var event = 'assignment',
className = '',
expression = '',
delegateExpression = '${oaUserTaskAssignmentListener}';
if (isListenerExist(event, className)) {
top.dialog.msg('监听器已经存在');
return;
}
addOaUserTaskListener(event, className, expression, delegateExpression);
}
$scope.addOaUserTaskDeleteListener = function () {
var event = 'delete',
className = '',
expression = '',
delegateExpression = '${oaUserTaskDeleteListener}';
if (isListenerExist(event, className)) {
top.dialog.msg('监听器已经存在');
return;
}
addOaUserTaskListener(event, className, expression, delegateExpression);
}
// 上移用户任务监听器
$scope.moveOaUserTaskListenerUp = function(index) {
var prevIndex = index - 1;
var temp = $scope.oaNodeManage.oaUserTaskListeners[index];
$scope.oaNodeManage.oaUserTaskListeners.splice(index, 1);
$timeout(function () {
$scope.oaNodeManage.oaUserTaskListeners.splice(prevIndex, 0, temp);
}, 10);
}
// 下移用户任务监听器
$scope.moveOaUserTaskListenerDown = function(index) {
var nextIndex = index + 1;
var temp = $scope.oaNodeManage.oaUserTaskListeners[index];
$scope.oaNodeManage.oaUserTaskListeners.splice(index, 1);
$timeout(function () {
$scope.oaNodeManage.oaUserTaskListeners.splice(nextIndex, 0, temp);
}, 10);
}
// 删除用户任务监听器
$scope.deleteOaUserTaskListener = function(index) {
$scope.oaNodeManage.oaUserTaskListeners.splice(index, 1);
}
// Click handler for save button
$scope.save = function () {
$scope.property.value = {};
$scope.property.value = $scope.oaNodeManage;
$scope.updatePropertyInModel($scope.property);
// 更新任务监听器列表
taskListenerProperty.value = {}
taskListenerProperty.value.taskListeners = $scope.oaNodeManage.oaUserTaskListeners;
$scope.updatePropertyInModel(taskListenerProperty);
$scope.close();
};
$scope.cancel = function () {
$scope.close();
};
// Close button handler
$scope.close = function () {
taskListenerProperty.mode = 'read';
$scope.property.mode = 'read';
$scope.$hide();
};
function initOaNodeManage() {
if($scope.property.value) {
$scope.oaNodeManage = $scope.property.value;
}
}
// 初始化开始节点
function initStartNode() {
for(var i = 0, node; node = childShapes[i++];) {
if(node.stencil.id == 'StartNoneEvent') {
startNode = node;
break;
}
}
if(!startNode) {
top.dialog.msg('未找到开始节点无法设置OA节点');
$scope.close();
return;
}
}
// 初始化form表单ID
function initFormId() {
$scope.oaNodeManage.formId = startNode.properties.formkeydefinition;
if(!$scope.oaNodeManage.formId) {
top.dialog.msg('开始节点未绑定表单无法设置OA节点');
$scope.close();
return;
}
}
// 初始化form表单
function initFormField() {
$http.get('api/form-field/list/form-id/'+ $scope.oaNodeManage.formId).then(function(response) {
var formFields = [];
for(var i = 0, formField; formField = response.data[i++];) {
var isVisible = true;
var isEditable = true;
for(var j = 0, item; item = $scope.oaNodeManage.formFields[j++];) {
if(formField.fieldId === item.fieldId) {
isVisible = item.isVisible;
isEditable = item.isEditable;
}
}
formFields.push({
fieldId: formField.fieldId,
fieldName: formField.fieldName,
fieldExplain: formField.fieldExplain,
fieldTag: formField.fieldTag,
fieldType: formField.fieldType,
isVisible: isVisible,
isEditable: isEditable
})
}
$scope.oaNodeManage.formFields = formFields;
}, function(response) {
top.dialog.msg(response.data.msg);
})
}
// 初始化oaUserTaskCompleteListener
function initOaUserTaskCompleteListener() {
if($scope.property.value) {
return;
}
var event = 'complete',
className = '',
expression = '',
delegateExpression = '${oaUserTaskCompleteListener}';
if (isListenerExist(event, className)) {
top.dialog.msg('监听器已经存在');
return;
}
addOaUserTaskListener(event, className, expression, delegateExpression);
}
// 初始化
(function() {
initOaNodeManage();
initStartNode();
initFormId();
initFormField();
initOaUserTaskCompleteListener();
})();
}];