调整OA节点管理条件逻辑,增加代理人、候选人与原有流程属性联动
This commit is contained in:
parent
7b8e31d981
commit
ae44fe6a2a
@ -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();
|
||||
}
|
||||
|
@ -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='节点代理人';
|
||||
</update>
|
||||
@ -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}
|
||||
)
|
||||
</insert>
|
||||
|
||||
|
@ -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();
|
||||
});
|
||||
})();
|
||||
|
@ -34,21 +34,66 @@
|
||||
<td>
|
||||
<div>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.nodeType" type="radio" name="nodeType" value="normal"> 普通节点
|
||||
<input ng-model="oaNodeManage.assignee.nodeType" type="radio" name="nodeType" value="normal"> 普通(单实例)节点
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.nodeType" type="radio" name="nodeType" value="sign"> 会签节点
|
||||
<input ng-model="oaNodeManage.assignee.nodeType" type="radio" name="nodeType" value="multiple"> 多实例节点
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 普通节点 start -->
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal'">
|
||||
<!-- 普通节点 end -->
|
||||
<!-- 多实例节点 start -->
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'multiple'">
|
||||
<td>
|
||||
<h5>多实例类型</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'multiple'">
|
||||
<td>
|
||||
<div>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.multipleType" type="radio" name="multipleType" value="parallel"> 并行
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.multipleType" type="radio" name="multipleType" value="sequential"> 串行
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- 并行 start -->
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'multiple' && oaNodeManage.assignee.multipleType == 'parallel'">
|
||||
<td>
|
||||
<h5>完成(通过)条件</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'multiple' && oaNodeManage.assignee.multipleType == 'parallel'">
|
||||
<td>
|
||||
<div>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.completeCondition" type="radio" name="completeCondition" value="allPass" checked> 全部通过
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.completeCondition" type="radio" name="completeCondition" value="singlePass"> 单人通过
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.completeCondition" type="radio" name="completeCondition" value="customPass"> 通过
|
||||
</label>
|
||||
<input ng-model="oaNodeManage.assignee.completeCount" type="number" step="1" name="completeCount" ng-disabled="oaNodeManage.assignee.completeCondition != 'customPass'"> 人
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 并行 end -->
|
||||
<!-- 多实例节点 end -->
|
||||
|
||||
<!-- 代理人 start -->
|
||||
<tr>
|
||||
<td>
|
||||
<h5>代理人类型</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal'">
|
||||
<tr>
|
||||
<td>
|
||||
<div>
|
||||
<label class="radio-inline">
|
||||
@ -60,7 +105,7 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 手动指定代理人 start -->
|
||||
<!-- 手动指定单实例代理人 start -->
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint'">
|
||||
<td>
|
||||
<h5>代理人数量</h5>
|
||||
@ -72,31 +117,65 @@
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.assigneeCount" type="radio" name="assigneeCount" value="single"> 单人
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.assigneeCount" type="radio" name="assigneeCount" value="candidate"> 候选人
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint' && oaNodeManage.assignee.assigneeCount == 'single'">
|
||||
<td>
|
||||
<h5>选择代理人</h5>
|
||||
<h5>选择代理人【单选】</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint' && oaNodeManage.assignee.assigneeCount == 'single'">
|
||||
<td>
|
||||
<input ng-model="oaNodeManage.assignee.assignee" type="hidden" name="assignee">
|
||||
<input ng-model="oaNodeManage.assignee.assigneeName" type="hidden" name="assigneeName">
|
||||
<button type="button" ng-click="selectUser()">选择</button>
|
||||
<button type="button" ng-click="selectAssignee()">选择</button>
|
||||
<span>{{oaNodeManage.assignee.assigneeName}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 手动指定代理人 end -->
|
||||
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint' && oaNodeManage.assignee.assigneeCount == 'candidate'">
|
||||
<td>
|
||||
<h5>选择候选人列表【多选】</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint' && oaNodeManage.assignee.assigneeCount == 'candidate'">
|
||||
<td>
|
||||
<input ng-model="oaNodeManage.assignee.candidates" type="hidden" name="candidates">
|
||||
<input ng-model="oaNodeManage.assignee.candidateNames" type="hidden" name="candidateNames">
|
||||
<button type="button" ng-click="selectCandidates()">选择</button>
|
||||
<span>{{oaNodeManage.assignee.candidateNames}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 手动指定单实例代理人 end -->
|
||||
|
||||
<!-- 手动指定多实例代理人 start -->
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'multiple' && oaNodeManage.assignee.assigneeType == 'appoint'">
|
||||
<td>
|
||||
<h5>选择(多实例)代理人【多选】</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'multiple' && oaNodeManage.assignee.assigneeType == 'appoint'">
|
||||
<td>
|
||||
<input ng-model="oaNodeManage.assignee.multipleAssignees" type="hidden" name="multipleAssignees">
|
||||
<input ng-model="oaNodeManage.assignee.multipleAssigneeNames" type="hidden" name="multipleAssigneeNames">
|
||||
<button type="button" ng-click="selectMultipleAssignee()">选择</button>
|
||||
<span>{{oaNodeManage.assignee.multipleAssigneeNames}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 手动指定多实例代理人 end -->
|
||||
|
||||
<!-- 自动获取代理人 start -->
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto'">
|
||||
<td>
|
||||
<h5>自动方式</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto'">
|
||||
<td>
|
||||
<div>
|
||||
<label class="radio-inline">
|
||||
@ -109,12 +188,12 @@
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<td>
|
||||
<h5>部门类型</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<td>
|
||||
<div>
|
||||
<label class="radio-inline">
|
||||
@ -127,12 +206,12 @@
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope' && oaNodeManage.assignee.departmentType == 'appoint'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope' && oaNodeManage.assignee.departmentType == 'appoint'">
|
||||
<td>
|
||||
<h5>选择部门</h5>
|
||||
<h5>选择部门【多选】</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope' && oaNodeManage.assignee.departmentType == 'appoint'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope' && oaNodeManage.assignee.departmentType == 'appoint'">
|
||||
<td>
|
||||
<input ng-model="oaNodeManage.assignee.departments" type="hidden" name="departments">
|
||||
<input ng-model="oaNodeManage.assignee.departmentNames" type="hidden" name="departmentNames">
|
||||
@ -141,38 +220,39 @@
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<td>
|
||||
<h5>选择角色</h5>
|
||||
<h5>选择角色【多选】</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<td>
|
||||
<input ng-model="oaNodeManage.assignee.roles" type="hidden" name="roles">
|
||||
<button type="button">选择</button>
|
||||
<span>角色1</span>
|
||||
<input ng-model="oaNodeManage.assignee.roleNames" type="hidden" name="roleNames">
|
||||
<button type="button" ng-click="selectRoles()">选择</button>
|
||||
<span>{{oaNodeManage.assignee.roleNames}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<td>
|
||||
<h5>选择职位</h5>
|
||||
<h5>选择职位【多选】</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'scope'">
|
||||
<td>
|
||||
<input ng-model="oaNodeManage.assignee.positions" type="hidden" name="positions">
|
||||
<button type="button">选择</button>
|
||||
<span>职位1</span>
|
||||
<input ng-model="oaNodeManage.assignee.positionNames" type="hidden" name="positionNames">
|
||||
<button type="button" ng-click="selectPositions()">选择</button>
|
||||
<span>{{oaNodeManage.assignee.positionNames}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'quick'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'quick'">
|
||||
<td>
|
||||
<h5>快捷代理人</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'quick'">
|
||||
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'quick'">
|
||||
<td>
|
||||
<div class="radio">
|
||||
<label>
|
||||
@ -208,62 +288,6 @@
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 自动获取代理人 end -->
|
||||
<!-- 普通节点 end -->
|
||||
<!-- 会签节点 start -->
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'sign'">
|
||||
<td>
|
||||
<h5>会签类型</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'sign'">
|
||||
<td>
|
||||
<div>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.signType" type="radio" name="signType" value="parallel"> 并行
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.signType" type="radio" name="signType" value="sequential"> 串行
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'sign' && oaNodeManage.assignee.signType == 'parallel'">
|
||||
<td>
|
||||
<h5>会签人列表</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'sign' && oaNodeManage.assignee.signType == 'parallel'">
|
||||
<td>
|
||||
<input ng-model="oaNodeManage.assignee.signUsers" type="hidden" name="signUsers">
|
||||
<button type="button">选择</button>
|
||||
<span>用户1,用户2</span>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 并行 start -->
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'sign' && oaNodeManage.assignee.signType == 'parallel'">
|
||||
<td>
|
||||
<h5>完成(通过)条件</h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'sign' && oaNodeManage.assignee.signType == 'parallel'">
|
||||
<td>
|
||||
<div>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.completeCondition" type="radio" name="completeCondition" value="allPass" checked> 全部通过
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.completeCondition" type="radio" name="completeCondition" value="singlePass"> 单人通过
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input ng-model="oaNodeManage.assignee.completeCondition" type="radio" name="completeCondition" value="customPass"> 通过
|
||||
</label>
|
||||
<input ng-model="oaNodeManage.assignee.completeCount" type="number" step="1" name="completeCount" ng-disabled="oaNodeManage.assignee.completeCondition != 'customPass'"> 人
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- 并行 end -->
|
||||
<!-- 会签节点 end -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
@ -43,7 +43,6 @@ KISBPM.TOOLBAR = {
|
||||
},
|
||||
listOaNodeManage: function(json) {
|
||||
var nodes = json.childShapes;
|
||||
|
||||
var oaNodeManages = [];
|
||||
for(var i = 0, item; item = nodes[i++];) {
|
||||
if(item.stencil.id === 'UserTask') {
|
||||
|
@ -130,6 +130,29 @@ EDITOR.UTIL = {
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 深拷贝
|
||||
* @param source
|
||||
* @returns {{}}
|
||||
*/
|
||||
deepClone: function (source) {
|
||||
var cloneObj;
|
||||
if (source && typeof (source) === 'object') {
|
||||
if (source instanceof Array) {
|
||||
cloneObj = [];
|
||||
for (var i = 0, item; item = source[i++];) {
|
||||
cloneObj.push(EDITOR.UTIL.deepClone(item));
|
||||
}
|
||||
} else {
|
||||
cloneObj = {}
|
||||
for (var k in source) {
|
||||
cloneObj[k] = EDITOR.UTIL.deepClone(source[k]);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
cloneObj = source;
|
||||
}
|
||||
return cloneObj;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user