diff --git a/module-activiti/src/main/java/ink/wgink/module/activiti/pojo/vos/oa/nodemanage/config/AssigneeVO.java b/module-activiti/src/main/java/ink/wgink/module/activiti/pojo/vos/oa/nodemanage/config/AssigneeVO.java index 2e2d72a8..ce271cb1 100644 --- a/module-activiti/src/main/java/ink/wgink/module/activiti/pojo/vos/oa/nodemanage/config/AssigneeVO.java +++ b/module-activiti/src/main/java/ink/wgink/module/activiti/pojo/vos/oa/nodemanage/config/AssigneeVO.java @@ -15,14 +15,28 @@ public class AssigneeVO { @ApiModelProperty(name = "nodeType", value = "节点类型") private String nodeType; - @ApiModelProperty(name = "assigneeType", value = "代理人类型") - private String assigneeType; @ApiModelProperty(name = "assigneeCount", value = "代理人数量") private String assigneeCount; @ApiModelProperty(name = "assignee", value = "代理人") private String assignee; @ApiModelProperty(name = "assigneeName", value = "代理人名称") private String assigneeName; + @ApiModelProperty(name = "candidates", value = "候选人") + private String candidates; + @ApiModelProperty(name = "candidateNames", value = "候选人名称") + private String candidateNames; + @ApiModelProperty(name = "multipleType", value = "多实例类型") + private String multipleType; + @ApiModelProperty(name = "completeCondition", value = "完成条件") + private String completeCondition; + @ApiModelProperty(name = "completeCount", value = "") + private Integer completeCount; + @ApiModelProperty(name = "multipleAssignees", value = "多实例代理人") + private String multipleAssignees; + @ApiModelProperty(name = "multipleAssigneeNames", value = "多实例代理人名称") + private String multipleAssigneeNames; + @ApiModelProperty(name = "assigneeType", value = "代理人类型") + private String assigneeType; @ApiModelProperty(name = "autoAssignType", value = "自动方式") private String autoAssignType; @ApiModelProperty(name = "departmentType", value = "部门类型") @@ -41,14 +55,6 @@ public class AssigneeVO { private String positionNames; @ApiModelProperty(name = "quickAssignee", value = "快速代理人") private String quickAssignee; - @ApiModelProperty(name = "signType", value = "会签类型") - private String signType; - @ApiModelProperty(name = "signUsers", value = "会签人") - private String signUsers; - @ApiModelProperty(name = "completeCondition", value = "完成条件") - private String completeCondition; - @ApiModelProperty(name = "completeCount", value = "") - private Integer completeCount; public String getNodeType() { return nodeType == null ? "" : nodeType.trim(); @@ -58,14 +64,6 @@ public class AssigneeVO { this.nodeType = nodeType; } - public String getAssigneeType() { - return assigneeType == null ? "" : assigneeType.trim(); - } - - public void setAssigneeType(String assigneeType) { - this.assigneeType = assigneeType; - } - public String getAssigneeCount() { return assigneeCount == null ? "" : assigneeCount.trim(); } @@ -90,6 +88,70 @@ public class AssigneeVO { this.assigneeName = assigneeName; } + public String getCandidates() { + return candidates == null ? "" : candidates.trim(); + } + + public void setCandidates(String candidates) { + this.candidates = candidates; + } + + public String getCandidateNames() { + return candidateNames == null ? "" : candidateNames.trim(); + } + + public void setCandidateNames(String candidateNames) { + this.candidateNames = candidateNames; + } + + public String getMultipleType() { + return multipleType == null ? "" : multipleType.trim(); + } + + public void setMultipleType(String multipleType) { + this.multipleType = multipleType; + } + + public String getCompleteCondition() { + return completeCondition == null ? "" : completeCondition.trim(); + } + + public void setCompleteCondition(String completeCondition) { + this.completeCondition = completeCondition; + } + + public Integer getCompleteCount() { + return completeCount == null ? 0 : completeCount; + } + + public void setCompleteCount(Integer completeCount) { + this.completeCount = completeCount; + } + + public String getMultipleAssignees() { + return multipleAssignees == null ? "" : multipleAssignees.trim(); + } + + public void setMultipleAssignees(String multipleAssignees) { + this.multipleAssignees = multipleAssignees; + } + + public String getMultipleAssigneeNames() { + return multipleAssigneeNames == null ? "" : multipleAssigneeNames.trim(); + } + + public void setMultipleAssigneeNames(String multipleAssigneeNames) { + this.multipleAssigneeNames = multipleAssigneeNames; + } + + public String getAssigneeType() { + return assigneeType == null ? "" : assigneeType.trim(); + } + + public void setAssigneeType(String assigneeType) { + this.assigneeType = assigneeType; + } + public String getAutoAssignType() { return autoAssignType == null ? "" : autoAssignType.trim(); } @@ -162,49 +224,33 @@ public class AssigneeVO { this.quickAssignee = quickAssignee; } - public String getSignType() { - return signType == null ? "" : signType.trim(); - } - - public void setSignType(String signType) { - this.signType = signType; - } - - public String getSignUsers() { - return signUsers == null ? "" : signUsers.trim(); - } - - public void setSignUsers(String signUsers) { - this.signUsers = signUsers; - } - - public String getCompleteCondition() { - return completeCondition == null ? "" : completeCondition.trim(); - } - - public void setCompleteCondition(String completeCondition) { - this.completeCondition = completeCondition; - } - - public Integer getCompleteCount() { - return completeCount == null ? 0 : completeCount; - } - - public void setCompleteCount(Integer completeCount) { - this.completeCount = completeCount; - } - @Override public String toString() { final StringBuilder sb = new StringBuilder("{"); sb.append("\"nodeType\":\"") .append(nodeType).append('\"'); - sb.append(",\"assigneeType\":\"") - .append(assigneeType).append('\"'); - sb.append(",\"assigneeCount\":") - .append(assigneeCount); + sb.append(",\"assigneeCount\":\"") + .append(assigneeCount).append('\"'); sb.append(",\"assignee\":\"") .append(assignee).append('\"'); + sb.append(",\"assigneeName\":\"") + .append(assigneeName).append('\"'); + sb.append(",\"candidates\":\"") + .append(candidates).append('\"'); + sb.append(",\"candidateNames\":\"") + .append(candidateNames).append('\"'); + sb.append(",\"multipleType\":\"") + .append(multipleType).append('\"'); + sb.append(",\"completeCondition\":\"") + .append(completeCondition).append('\"'); + sb.append(",\"completeCount\":") + .append(completeCount); + sb.append(",\"multipleAssignees\":\"") + .append(multipleAssignees).append('\"'); + sb.append(",\"multipleAssigneeNames\":\"") + .append(multipleAssigneeNames).append('\"'); + sb.append(",\"assigneeType\":\"") + .append(assigneeType).append('\"'); sb.append(",\"autoAssignType\":\"") .append(autoAssignType).append('\"'); sb.append(",\"departmentType\":\"") @@ -223,14 +269,6 @@ public class AssigneeVO { .append(positionNames).append('\"'); sb.append(",\"quickAssignee\":\"") .append(quickAssignee).append('\"'); - sb.append(",\"signType\":\"") - .append(signType).append('\"'); - sb.append(",\"signUsers\":\"") - .append(signUsers).append('\"'); - sb.append(",\"completeCondition\":\"") - .append(completeCondition).append('\"'); - sb.append(",\"completeCount\":") - .append(completeCount); sb.append('}'); return sb.toString(); } diff --git a/module-activiti/src/main/resources/mybatis/mapper/oa/node-assignee-mapper.xml b/module-activiti/src/main/resources/mybatis/mapper/oa/node-assignee-mapper.xml index ad0404db..a5351820 100644 --- a/module-activiti/src/main/resources/mybatis/mapper/oa/node-assignee-mapper.xml +++ b/module-activiti/src/main/resources/mybatis/mapper/oa/node-assignee-mapper.xml @@ -12,10 +12,14 @@ `node_id` char(60) DEFAULT NULL COMMENT '节点ID', `node_index` int(11) DEFAULT NULL COMMENT '节点下标', `node_type` varchar(255) DEFAULT NULL COMMENT '节点类型', - `assignee_type` varchar(255) DEFAULT NULL COMMENT '代理人类型', `assignee_count` varchar(255) DEFAULT NULL COMMENT '代理人数量', `assignee` varchar(255) DEFAULT NULL COMMENT '代理人', - `assignee_names` varchar(255) DEFAULT NULL COMMENT '代理人名称', + `assignee_name` varchar(255) DEFAULT NULL COMMENT '代理人名称', + `candidates` varchar(255) DEFAULT NULL COMMENT '候选人', + `candidate_names` varchar(255) DEFAULT NULL COMMENT '候选人名称', + `multiple_type` varchar(255) DEFAULT NULL COMMENT '多实例类型', + `complete_condition` varchar(255) DEFAULT NULL COMMENT '完成条件', + `complete_count` int(11) DEFAULT NULL COMMENT '完成人数量', `auto_assign_type` varchar(255) DEFAULT NULL COMMENT '自动方式', `department_type` varchar(255) DEFAULT NULL COMMENT '部门类型', `departments` varchar(255) DEFAULT NULL COMMENT '部门', @@ -25,10 +29,9 @@ `positions` varchar(255) DEFAULT NULL COMMENT '职位', `position_names` varchar(255) DEFAULT NULL COMMENT '职位名称', `quick_assignee` varchar(255) DEFAULT NULL COMMENT '快速代理人', - `sign_type` varchar(255) DEFAULT NULL COMMENT '会签类型', - `sign_users` varchar(255) DEFAULT NULL COMMENT '会签人', - `complete_condition` varchar(255) DEFAULT NULL COMMENT '完成条件', - `complete_count` int(11) DEFAULT NULL COMMENT '完成人数量', + `multiple_assignees` varchar(255) DEFAULT NULL COMMENT '多实例候选人', + `assignee_type` varchar(255) DEFAULT NULL COMMENT '代理人类型', + `multiple_assignee_names` varchar(255) DEFAULT NULL COMMENT '多实例候选人名称', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='节点代理人'; @@ -42,10 +45,17 @@ node_id, node_index, node_type, - assignee_type, assignee_count, assignee, assignee_name, + candidates, + candidate_names, + multiple_type, + complete_condition, + complete_count, + multiple_assignees, + multiple_assignee_names, + assignee_type, auto_assign_type, department_type, departments, @@ -54,11 +64,7 @@ role_names, positions, position_names, - quick_assignee, - sign_type, - sign_users, - complete_condition, - complete_count + quick_assignee ) VALUES( #{nodeFieldId}, #{modelId}, @@ -66,10 +72,17 @@ #{nodeId}, #{nodeIndex}, #{nodeType}, - #{assigneeType}, #{assigneeCount}, #{assignee}, #{assigneeName}, + #{candidates}, + #{candidateNames}, + #{multipleType}, + #{completeCondition}, + #{completeCount}, + #{multipleAssignees}, + #{multipleAssigneeNames}, + #{assigneeType}, #{autoAssignType}, #{departmentType}, #{departments}, @@ -78,11 +91,7 @@ #{roleNames}, #{positions}, #{positionNames}, - #{quickAssignee}, - #{signType}, - #{signUsers}, - #{completeCondition}, - #{completeCount} + #{quickAssignee} ) diff --git a/module-activiti/src/main/resources/static/editor-app/configuration/properties-oa-node-manage-controller.js b/module-activiti/src/main/resources/static/editor-app/configuration/properties-oa-node-manage-controller.js index 6f55baf1..8cc9d5c5 100644 --- a/module-activiti/src/main/resources/static/editor-app/configuration/properties-oa-node-manage-controller.js +++ b/module-activiti/src/main/resources/static/editor-app/configuration/properties-oa-node-manage-controller.js @@ -1,4 +1,4 @@ -var OaNodeManageCtrl = [ '$scope' , '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) { +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', @@ -8,8 +8,8 @@ var OaNodeManageCtrl = [ '$scope' , '$modal', '$timeout', '$translate', function $modal(opts); }]; -var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $timeout, $http) { - // console.log($scope.selectedItem); +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) @@ -17,6 +17,7 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti var model = $scope.editor.modelMetaData.model; var childShapes = model.childShapes; // 关联到的属性 + var assigneeProperty = $scope.selectedItem.properties[13]; var taskListenerProperty = $scope.selectedItem.properties[16]; // 初始化 @@ -24,10 +25,17 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti $scope.oaNodeManage = { assignee: { nodeType: 'normal', - assigneeType: '', - assigneeCount: 0, + assigneeCount: '', assignee: '', assigneeName: '', + candidates: '', + candidateNames: '', + multipleType: 'parallel', + completeCondition: 'allPass', + completeCount: 0, + multipleAssignees: '', + multipleAssigneeNames: '', + assigneeType: '', autoAssignType: '', departmentType: '', departments: '', @@ -37,10 +45,6 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti positions: '', positionNames: '', quickAssignee: '', - signType: '', - signUsers: '', - completeCondition: '', - completeCount: 0 }, formId: '', formFields: [], @@ -65,6 +69,7 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti delegateExpression: delegateExpression ? delegateExpression : '' }); } + /** * 判断监听器是否存在 * @param event @@ -113,7 +118,7 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti addOaUserTaskListener(event, className, expression, delegateExpression); } // 上移用户任务监听器 - $scope.moveOaUserTaskListenerUp = function(index) { + $scope.moveOaUserTaskListenerUp = function (index) { var prevIndex = index - 1; var temp = $scope.oaNodeManage.oaUserTaskListeners[index]; $scope.oaNodeManage.oaUserTaskListeners.splice(index, 1); @@ -122,7 +127,7 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti }, 10); } // 下移用户任务监听器 - $scope.moveOaUserTaskListenerDown = function(index) { + $scope.moveOaUserTaskListenerDown = function (index) { var nextIndex = index + 1; var temp = $scope.oaNodeManage.oaUserTaskListeners[index]; $scope.oaNodeManage.oaUserTaskListeners.splice(index, 1); @@ -131,17 +136,17 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti }, 10); } // 删除用户任务监听器 - $scope.deleteOaUserTaskListener = function(index) { + $scope.deleteOaUserTaskListener = function (index) { $scope.oaNodeManage.oaUserTaskListeners.splice(index, 1); } // 选择用户 - $scope.selectUser = function() { + $scope.selectAssignee = function () { var assignee = $scope.oaNodeManage.assignee; - top.dialog.dialogData.selectedUserIds = assignee.assignee; + top.dialog.dialogData.selectedUserIds = assignee.multipleAssignees; top.dialog.open({ url: top.restAjax.path('route/department/user/select-user', []), - title: '选择用户', + title: '选择代理人【单选】', width: '500px', height: '500px', closeBtn: 0, @@ -149,12 +154,10 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti var selectedUsers = top.dialog.dialogData.selectedDepartmentUsers; // 这里写处理逻辑 if (selectedUsers && selectedUsers.length > 0) { - if(selectedUsers.length > 1) { + if (selectedUsers.length > 1) { top.dialog.msg('只能选择一位代理人'); return; } - var userId = selectedUsers[0].userId; - var userName = selectedUsers[0].userName; assignee.assignee = selectedUsers[0].userId; assignee.assigneeName = selectedUsers[0].userName; } else { @@ -166,22 +169,92 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti } }) } - - $scope.selectDepartments = function() { + // 选择候选人 + $scope.selectCandidates = function () { var assignee = $scope.oaNodeManage.assignee; - top.dialog.dialogData.checkedIds = !assignee.departments ? [] : assignee.departments.split(','); + top.dialog.dialogData.selectedUserIds = assignee.candidates ? assignee.candidates.replace(/,/g, '_') : ''; + top.dialog.open({ + url: top.restAjax.path('route/department/user/select-user', []), + title: '选择候选人【多选】', + width: '500px', + height: '500px', + closeBtn: 0, + onClose: function () { + var selectedUsers = top.dialog.dialogData.selectedDepartmentUsers; + // 这里写处理逻辑 + if (selectedUsers && selectedUsers.length > 0) { + var candidates = ''; + var candidateNames = ''; + for (var i = 0, item; item = selectedUsers[i++];) { + if (candidates.length) { + candidates += ','; + candidateNames += ','; + } + candidates += item.userId; + candidateNames += item.userName; + } + assignee.candidates = candidates; + assignee.candidateNames = candidateNames; + } else { + assignee.candidates = ''; + assignee.candidateNames = ''; + } + top.dialog.dialogData.selectedDepartmentUsers = []; + $scope.$apply(); + } + }) + } + // 选择多实例代理人 + $scope.selectMultipleAssignee = function () { + var assignee = $scope.oaNodeManage.assignee; + top.dialog.dialogData.selectedUserIds = assignee.multipleAssignees ? assignee.multipleAssignees.replace(/,/g, '_') : ''; + top.dialog.open({ + url: top.restAjax.path('route/department/user/select-user', []), + title: '选择多实例代理人【多选】', + width: '500px', + height: '500px', + closeBtn: 0, + onClose: function () { + var selectedUsers = top.dialog.dialogData.selectedDepartmentUsers; + // 这里写处理逻辑 + if (selectedUsers && selectedUsers.length > 0) { + var multipleAssignees = ''; + var multipleAssigneeNames = ''; + for (var i = 0, item; item = selectedUsers[i++];) { + if (multipleAssignees.length) { + multipleAssignees += ','; + multipleAssigneeNames += ','; + } + multipleAssignees += item.userId; + multipleAssigneeNames += item.userName; + } + assignee.multipleAssignees = multipleAssignees; + assignee.multipleAssigneeNames = multipleAssigneeNames; + } else { + assignee.multipleAssignees = ''; + assignee.multipleAssigneeNames = ''; + } + top.dialog.dialogData.selectedDepartmentUsers = []; + $scope.$apply(); + } + }) + } + // 选择部门 + $scope.selectDepartments = function () { + var assignee = $scope.oaNodeManage.assignee; + top.dialog.dialogData.checkedDepartmentIds = !assignee.departments ? [] : assignee.departments.split(','); top.dialog.open({ url: top.restAjax.path('route/department/list-tree-check', []), - title: '选择组织部门', + title: '选择组织部门【多选】', width: '400px', height: '400px', - onClose: function() { - var checkedNodes = top.dialog.dialogData.checkedNodes; - if(checkedNodes && checkedNodes.length > 0) { + onClose: function () { + var checkedDepartmentNodes = top.dialog.dialogData.checkedDepartmentNodes; + if (checkedDepartmentNodes && checkedDepartmentNodes.length > 0) { var departments = ''; var departmentNames = ''; - for(var i = 0, item; item = checkedNodes[i++];) { - if(departments.length > 0) { + for (var i = 0, item; item = checkedDepartmentNodes[i++];) { + if (departments.length > 0) { departments += ','; departmentNames += ','; } @@ -194,23 +267,162 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti assignee.departments = ''; assignee.departmentNames = ''; } - top.dialog.dialogData.checkedNodes = []; + top.dialog.dialogData.checkedDepartmentNodes = []; + $scope.$apply(); + } + }); + } + // 选择角色 + $scope.selectRoles = function () { + var assignee = $scope.oaNodeManage.assignee; + top.dialog.dialogData.checkedRoleIds = !assignee.roles ? [] : assignee.roles.split(','); + top.dialog.open({ + url: top.restAjax.path('route/role/list-tree-check', []), + title: '选择角色【多选】', + width: '400px', + height: '400px', + onClose: function () { + var checkedRoleNodes = top.dialog.dialogData.checkedRoleNodes; + if (checkedRoleNodes && checkedRoleNodes.length > 0) { + var roles = ''; + var roleNames = ''; + for (var i = 0, item; item = checkedRoleNodes[i++];) { + if (roles.length > 0) { + roles += ','; + roleNames += ','; + } + roles += item.id; + roleNames += item.name; + } + assignee.roles = roles; + assignee.roleNames = roleNames; + } else { + assignee.roles = ''; + assignee.roleNames = ''; + } + top.dialog.dialogData.checkedRoleNodes = []; + $scope.$apply(); + } + }); + } + // 选择职位 + $scope.selectPositions = function () { + var assignee = $scope.oaNodeManage.assignee; + top.dialog.dialogData.checkedPositionIds = !assignee.positions ? [] : assignee.positions.split(','); + top.dialog.open({ + url: top.restAjax.path('route/position/list-tree-check', []), + title: '选择职位【多选】', + width: '400px', + height: '400px', + onClose: function () { + var checkedPositionNodes = top.dialog.dialogData.checkedPositionNodes; + if (checkedPositionNodes && checkedPositionNodes.length > 0) { + var positions = ''; + var positionNames = ''; + for (var i = 0, item; item = checkedPositionNodes[i++];) { + if (positions.length > 0) { + positions += ','; + positionNames += ','; + } + positions += item.id; + positionNames += item.name; + } + assignee.positions = positions; + assignee.positionNames = positionNames; + } else { + assignee.positions = ''; + assignee.positionNames = ''; + } + top.dialog.dialogData.checkedPositionNodes = []; $scope.$apply(); } }); } - // Click handler for save button - $scope.save = function () { + // 更新代理人与候选人信息 + function updateAssignment() { + // 更新手动指定单选代理人 + function updateAssignee() { + assigneeProperty.value = {}; + assigneeProperty.value.assignment = { + assignee: $scope.oaNodeManage.assignee.assignee, + candidateUsers: [] + } + $scope.updatePropertyInModel(assigneeProperty); + } - $scope.property.value = {}; - $scope.property.value = $scope.oaNodeManage; - $scope.updatePropertyInModel($scope.property); + // 更新手动指定多选候选人 + function updateCandidate() { + assigneeProperty.value = {}; + assigneeProperty.value.assignment = { + candidateUsers: [] + }; + var candidates = $scope.oaNodeManage.assignee.candidates.split(','); + for (var i = 0, item; item = candidates[i++];) { + if (!item) { + continue; + } + assigneeProperty.value.assignment.candidateUsers.push({ + value: item + }) + } + } - // 更新任务监听器列表 + // 更新手动指定多个候选人 + function updateCandidates() { + assigneeProperty.value = {}; + assigneeProperty.value.assignment = { + candidateUsers: [{value: '${candidates}'}] + }; + } + + var assignee = $scope.oaNodeManage.assignee; + // 普通节点 + if (assignee.nodeType === 'normal') { + // 手动指定 + if (assignee.assigneeType === 'appoint') { + // 单选 + if (assignee.assigneeCount === 'single') { + updateAssignee(); + return; + } + // 多选 + if (assignee.assigneeCount === 'candidate') { + updateCandidate(); + return; + } + return; + } + // 自动获取 + if (assignee.assigneeType === 'auto') { + updateCandidates(); + return; + } + return; + } + + } + + /** + * 更新任务监听器列表 + */ + function updateTaskListener() { taskListenerProperty.value = {} taskListenerProperty.value.taskListeners = $scope.oaNodeManage.oaUserTaskListeners; $scope.updatePropertyInModel(taskListenerProperty); + } + + // Click handler for save button + $scope.save = function () { + $scope.property.value = {}; + $scope.property.value = $scope.oaNodeManage; + $scope.updatePropertyInModel($scope.property); + console.log($scope.property) + + + updateAssignment(); + updateTaskListener(); + $scope.close(); }; @@ -220,26 +432,28 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti // Close button handler $scope.close = function () { + assigneeProperty.mode = 'read'; taskListenerProperty.mode = 'read'; $scope.property.mode = 'read'; + $scope.$hide(); }; function initOaNodeManage() { - if($scope.property.value) { - $scope.oaNodeManage = $scope.property.value; + if ($scope.property.value) { + $scope.oaNodeManage = EDITOR.UTIL.deepClone($scope.property.value); } } // 初始化开始节点 function initStartNode() { - for(var i = 0, node; node = childShapes[i++];) { - if(node.stencil.id == 'StartNoneEvent') { + for (var i = 0, node; node = childShapes[i++];) { + if (node.stencil.id == 'StartNoneEvent') { startNode = node; break; } } - if(!startNode) { + if (!startNode) { top.dialog.msg('未找到开始节点,无法设置OA节点'); $scope.close(); return; @@ -248,7 +462,7 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti // 初始化oaUserTaskCompleteListener function initOaUserTaskCompleteListener() { - if($scope.property.value) { + if ($scope.property.value) { return; } var event = 'complete', @@ -265,9 +479,9 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti // 初始化form表单ID function initFormId(callback) { $scope.oaNodeManage.formId = startNode.properties.formkeydefinition; - if(!$scope.oaNodeManage.formId) { + if (!$scope.oaNodeManage.formId) { top.dialog.msg('开始节点未绑定表单,无法设置OA节点'); - $timeout(function() { + $timeout(function () { $scope.close(); }, 10) return; @@ -277,13 +491,13 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti // 初始化form表单 function initFormField() { - $http.get('api/form-field/list/form-id/'+ $scope.oaNodeManage.formId).then(function(response) { + $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++];) { + 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) { + for (var j = 0, item; item = $scope.oaNodeManage.formFields[j++];) { + if (formField.fieldId === item.fieldId) { isVisible = item.isVisible; isEditable = item.isEditable; } @@ -299,17 +513,17 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti }) } $scope.oaNodeManage.formFields = formFields; - }, function(response) { + }, function (response) { top.dialog.msg(response.data.msg); }) } // 初始化 - (function() { + (function () { initOaNodeManage(); initStartNode(); initOaUserTaskCompleteListener(); - initFormId(function() { + initFormId(function () { initFormField(); }); })(); diff --git a/module-activiti/src/main/resources/static/editor-app/configuration/properties/oa-node-manage-popup.html b/module-activiti/src/main/resources/static/editor-app/configuration/properties/oa-node-manage-popup.html index b7df6709..a68765c2 100644 --- a/module-activiti/src/main/resources/static/editor-app/configuration/properties/oa-node-manage-popup.html +++ b/module-activiti/src/main/resources/static/editor-app/configuration/properties/oa-node-manage-popup.html @@ -34,21 +34,66 @@