调整OA节点管理条件逻辑,增加代理人、候选人与原有流程属性联动
This commit is contained in:
parent
7b8e31d981
commit
ae44fe6a2a
@ -15,14 +15,28 @@ public class AssigneeVO {
|
|||||||
|
|
||||||
@ApiModelProperty(name = "nodeType", value = "节点类型")
|
@ApiModelProperty(name = "nodeType", value = "节点类型")
|
||||||
private String nodeType;
|
private String nodeType;
|
||||||
@ApiModelProperty(name = "assigneeType", value = "代理人类型")
|
|
||||||
private String assigneeType;
|
|
||||||
@ApiModelProperty(name = "assigneeCount", value = "代理人数量")
|
@ApiModelProperty(name = "assigneeCount", value = "代理人数量")
|
||||||
private String assigneeCount;
|
private String assigneeCount;
|
||||||
@ApiModelProperty(name = "assignee", value = "代理人")
|
@ApiModelProperty(name = "assignee", value = "代理人")
|
||||||
private String assignee;
|
private String assignee;
|
||||||
@ApiModelProperty(name = "assigneeName", value = "代理人名称")
|
@ApiModelProperty(name = "assigneeName", value = "代理人名称")
|
||||||
private String assigneeName;
|
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 = "自动方式")
|
@ApiModelProperty(name = "autoAssignType", value = "自动方式")
|
||||||
private String autoAssignType;
|
private String autoAssignType;
|
||||||
@ApiModelProperty(name = "departmentType", value = "部门类型")
|
@ApiModelProperty(name = "departmentType", value = "部门类型")
|
||||||
@ -41,14 +55,6 @@ public class AssigneeVO {
|
|||||||
private String positionNames;
|
private String positionNames;
|
||||||
@ApiModelProperty(name = "quickAssignee", value = "快速代理人")
|
@ApiModelProperty(name = "quickAssignee", value = "快速代理人")
|
||||||
private String quickAssignee;
|
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() {
|
public String getNodeType() {
|
||||||
return nodeType == null ? "" : nodeType.trim();
|
return nodeType == null ? "" : nodeType.trim();
|
||||||
@ -58,14 +64,6 @@ public class AssigneeVO {
|
|||||||
this.nodeType = nodeType;
|
this.nodeType = nodeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getAssigneeType() {
|
|
||||||
return assigneeType == null ? "" : assigneeType.trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAssigneeType(String assigneeType) {
|
|
||||||
this.assigneeType = assigneeType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAssigneeCount() {
|
public String getAssigneeCount() {
|
||||||
return assigneeCount == null ? "" : assigneeCount.trim();
|
return assigneeCount == null ? "" : assigneeCount.trim();
|
||||||
}
|
}
|
||||||
@ -90,6 +88,70 @@ public class AssigneeVO {
|
|||||||
this.assigneeName = assigneeName;
|
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() {
|
public String getAutoAssignType() {
|
||||||
return autoAssignType == null ? "" : autoAssignType.trim();
|
return autoAssignType == null ? "" : autoAssignType.trim();
|
||||||
}
|
}
|
||||||
@ -162,49 +224,33 @@ public class AssigneeVO {
|
|||||||
this.quickAssignee = quickAssignee;
|
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
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder sb = new StringBuilder("{");
|
final StringBuilder sb = new StringBuilder("{");
|
||||||
sb.append("\"nodeType\":\"")
|
sb.append("\"nodeType\":\"")
|
||||||
.append(nodeType).append('\"');
|
.append(nodeType).append('\"');
|
||||||
sb.append(",\"assigneeType\":\"")
|
sb.append(",\"assigneeCount\":\"")
|
||||||
.append(assigneeType).append('\"');
|
.append(assigneeCount).append('\"');
|
||||||
sb.append(",\"assigneeCount\":")
|
|
||||||
.append(assigneeCount);
|
|
||||||
sb.append(",\"assignee\":\"")
|
sb.append(",\"assignee\":\"")
|
||||||
.append(assignee).append('\"');
|
.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\":\"")
|
sb.append(",\"autoAssignType\":\"")
|
||||||
.append(autoAssignType).append('\"');
|
.append(autoAssignType).append('\"');
|
||||||
sb.append(",\"departmentType\":\"")
|
sb.append(",\"departmentType\":\"")
|
||||||
@ -223,14 +269,6 @@ public class AssigneeVO {
|
|||||||
.append(positionNames).append('\"');
|
.append(positionNames).append('\"');
|
||||||
sb.append(",\"quickAssignee\":\"")
|
sb.append(",\"quickAssignee\":\"")
|
||||||
.append(quickAssignee).append('\"');
|
.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('}');
|
sb.append('}');
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
@ -12,10 +12,14 @@
|
|||||||
`node_id` char(60) DEFAULT NULL COMMENT '节点ID',
|
`node_id` char(60) DEFAULT NULL COMMENT '节点ID',
|
||||||
`node_index` int(11) DEFAULT NULL COMMENT '节点下标',
|
`node_index` int(11) DEFAULT NULL COMMENT '节点下标',
|
||||||
`node_type` varchar(255) 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_count` varchar(255) DEFAULT NULL COMMENT '代理人数量',
|
||||||
`assignee` 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 '自动方式',
|
`auto_assign_type` varchar(255) DEFAULT NULL COMMENT '自动方式',
|
||||||
`department_type` varchar(255) DEFAULT NULL COMMENT '部门类型',
|
`department_type` varchar(255) DEFAULT NULL COMMENT '部门类型',
|
||||||
`departments` varchar(255) DEFAULT NULL COMMENT '部门',
|
`departments` varchar(255) DEFAULT NULL COMMENT '部门',
|
||||||
@ -25,10 +29,9 @@
|
|||||||
`positions` varchar(255) DEFAULT NULL COMMENT '职位',
|
`positions` varchar(255) DEFAULT NULL COMMENT '职位',
|
||||||
`position_names` varchar(255) DEFAULT NULL COMMENT '职位名称',
|
`position_names` varchar(255) DEFAULT NULL COMMENT '职位名称',
|
||||||
`quick_assignee` varchar(255) DEFAULT NULL COMMENT '快速代理人',
|
`quick_assignee` varchar(255) DEFAULT NULL COMMENT '快速代理人',
|
||||||
`sign_type` varchar(255) DEFAULT NULL COMMENT '会签类型',
|
`multiple_assignees` varchar(255) DEFAULT NULL COMMENT '多实例候选人',
|
||||||
`sign_users` varchar(255) DEFAULT NULL COMMENT '会签人',
|
`assignee_type` varchar(255) DEFAULT NULL COMMENT '代理人类型',
|
||||||
`complete_condition` varchar(255) DEFAULT NULL COMMENT '完成条件',
|
`multiple_assignee_names` varchar(255) DEFAULT NULL COMMENT '多实例候选人名称',
|
||||||
`complete_count` int(11) DEFAULT NULL COMMENT '完成人数量',
|
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='节点代理人';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='节点代理人';
|
||||||
</update>
|
</update>
|
||||||
@ -42,10 +45,17 @@
|
|||||||
node_id,
|
node_id,
|
||||||
node_index,
|
node_index,
|
||||||
node_type,
|
node_type,
|
||||||
assignee_type,
|
|
||||||
assignee_count,
|
assignee_count,
|
||||||
assignee,
|
assignee,
|
||||||
assignee_name,
|
assignee_name,
|
||||||
|
candidates,
|
||||||
|
candidate_names,
|
||||||
|
multiple_type,
|
||||||
|
complete_condition,
|
||||||
|
complete_count,
|
||||||
|
multiple_assignees,
|
||||||
|
multiple_assignee_names,
|
||||||
|
assignee_type,
|
||||||
auto_assign_type,
|
auto_assign_type,
|
||||||
department_type,
|
department_type,
|
||||||
departments,
|
departments,
|
||||||
@ -54,11 +64,7 @@
|
|||||||
role_names,
|
role_names,
|
||||||
positions,
|
positions,
|
||||||
position_names,
|
position_names,
|
||||||
quick_assignee,
|
quick_assignee
|
||||||
sign_type,
|
|
||||||
sign_users,
|
|
||||||
complete_condition,
|
|
||||||
complete_count
|
|
||||||
) VALUES(
|
) VALUES(
|
||||||
#{nodeFieldId},
|
#{nodeFieldId},
|
||||||
#{modelId},
|
#{modelId},
|
||||||
@ -66,10 +72,17 @@
|
|||||||
#{nodeId},
|
#{nodeId},
|
||||||
#{nodeIndex},
|
#{nodeIndex},
|
||||||
#{nodeType},
|
#{nodeType},
|
||||||
#{assigneeType},
|
|
||||||
#{assigneeCount},
|
#{assigneeCount},
|
||||||
#{assignee},
|
#{assignee},
|
||||||
#{assigneeName},
|
#{assigneeName},
|
||||||
|
#{candidates},
|
||||||
|
#{candidateNames},
|
||||||
|
#{multipleType},
|
||||||
|
#{completeCondition},
|
||||||
|
#{completeCount},
|
||||||
|
#{multipleAssignees},
|
||||||
|
#{multipleAssigneeNames},
|
||||||
|
#{assigneeType},
|
||||||
#{autoAssignType},
|
#{autoAssignType},
|
||||||
#{departmentType},
|
#{departmentType},
|
||||||
#{departments},
|
#{departments},
|
||||||
@ -78,11 +91,7 @@
|
|||||||
#{roleNames},
|
#{roleNames},
|
||||||
#{positions},
|
#{positions},
|
||||||
#{positionNames},
|
#{positionNames},
|
||||||
#{quickAssignee},
|
#{quickAssignee}
|
||||||
#{signType},
|
|
||||||
#{signUsers},
|
|
||||||
#{completeCondition},
|
|
||||||
#{completeCount}
|
|
||||||
)
|
)
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ var OaNodeManageCtrl = [ '$scope' , '$modal', '$timeout', '$translate', function
|
|||||||
}];
|
}];
|
||||||
|
|
||||||
var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function ($scope, $timeout, $http) {
|
var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function ($scope, $timeout, $http) {
|
||||||
// console.log($scope.selectedItem);
|
console.log($scope.selectedItem);
|
||||||
// console.log($scope.editor);
|
// console.log($scope.editor);
|
||||||
// console.log($scope.editor.modelMetaData.model.childShapes);
|
// console.log($scope.editor.modelMetaData.model.childShapes);
|
||||||
// console.log($scope.stencilItemGroups)
|
// console.log($scope.stencilItemGroups)
|
||||||
@ -17,6 +17,7 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti
|
|||||||
var model = $scope.editor.modelMetaData.model;
|
var model = $scope.editor.modelMetaData.model;
|
||||||
var childShapes = model.childShapes;
|
var childShapes = model.childShapes;
|
||||||
// 关联到的属性
|
// 关联到的属性
|
||||||
|
var assigneeProperty = $scope.selectedItem.properties[13];
|
||||||
var taskListenerProperty = $scope.selectedItem.properties[16];
|
var taskListenerProperty = $scope.selectedItem.properties[16];
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
@ -24,10 +25,17 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti
|
|||||||
$scope.oaNodeManage = {
|
$scope.oaNodeManage = {
|
||||||
assignee: {
|
assignee: {
|
||||||
nodeType: 'normal',
|
nodeType: 'normal',
|
||||||
assigneeType: '',
|
assigneeCount: '',
|
||||||
assigneeCount: 0,
|
|
||||||
assignee: '',
|
assignee: '',
|
||||||
assigneeName: '',
|
assigneeName: '',
|
||||||
|
candidates: '',
|
||||||
|
candidateNames: '',
|
||||||
|
multipleType: 'parallel',
|
||||||
|
completeCondition: 'allPass',
|
||||||
|
completeCount: 0,
|
||||||
|
multipleAssignees: '',
|
||||||
|
multipleAssigneeNames: '',
|
||||||
|
assigneeType: '',
|
||||||
autoAssignType: '',
|
autoAssignType: '',
|
||||||
departmentType: '',
|
departmentType: '',
|
||||||
departments: '',
|
departments: '',
|
||||||
@ -37,10 +45,6 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti
|
|||||||
positions: '',
|
positions: '',
|
||||||
positionNames: '',
|
positionNames: '',
|
||||||
quickAssignee: '',
|
quickAssignee: '',
|
||||||
signType: '',
|
|
||||||
signUsers: '',
|
|
||||||
completeCondition: '',
|
|
||||||
completeCount: 0
|
|
||||||
},
|
},
|
||||||
formId: '',
|
formId: '',
|
||||||
formFields: [],
|
formFields: [],
|
||||||
@ -65,6 +69,7 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti
|
|||||||
delegateExpression: delegateExpression ? delegateExpression : ''
|
delegateExpression: delegateExpression ? delegateExpression : ''
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断监听器是否存在
|
* 判断监听器是否存在
|
||||||
* @param event
|
* @param event
|
||||||
@ -136,12 +141,12 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 选择用户
|
// 选择用户
|
||||||
$scope.selectUser = function() {
|
$scope.selectAssignee = function () {
|
||||||
var assignee = $scope.oaNodeManage.assignee;
|
var assignee = $scope.oaNodeManage.assignee;
|
||||||
top.dialog.dialogData.selectedUserIds = assignee.assignee;
|
top.dialog.dialogData.selectedUserIds = assignee.multipleAssignees;
|
||||||
top.dialog.open({
|
top.dialog.open({
|
||||||
url: top.restAjax.path('route/department/user/select-user', []),
|
url: top.restAjax.path('route/department/user/select-user', []),
|
||||||
title: '选择用户',
|
title: '选择代理人【单选】',
|
||||||
width: '500px',
|
width: '500px',
|
||||||
height: '500px',
|
height: '500px',
|
||||||
closeBtn: 0,
|
closeBtn: 0,
|
||||||
@ -153,8 +158,6 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti
|
|||||||
top.dialog.msg('只能选择一位代理人');
|
top.dialog.msg('只能选择一位代理人');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var userId = selectedUsers[0].userId;
|
|
||||||
var userName = selectedUsers[0].userName;
|
|
||||||
assignee.assignee = selectedUsers[0].userId;
|
assignee.assignee = selectedUsers[0].userId;
|
||||||
assignee.assigneeName = selectedUsers[0].userName;
|
assignee.assigneeName = selectedUsers[0].userName;
|
||||||
} else {
|
} else {
|
||||||
@ -166,21 +169,91 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 选择候选人
|
||||||
|
$scope.selectCandidates = function () {
|
||||||
|
var assignee = $scope.oaNodeManage.assignee;
|
||||||
|
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 () {
|
$scope.selectDepartments = function () {
|
||||||
var assignee = $scope.oaNodeManage.assignee;
|
var assignee = $scope.oaNodeManage.assignee;
|
||||||
top.dialog.dialogData.checkedIds = !assignee.departments ? [] : assignee.departments.split(',');
|
top.dialog.dialogData.checkedDepartmentIds = !assignee.departments ? [] : assignee.departments.split(',');
|
||||||
top.dialog.open({
|
top.dialog.open({
|
||||||
url: top.restAjax.path('route/department/list-tree-check', []),
|
url: top.restAjax.path('route/department/list-tree-check', []),
|
||||||
title: '选择组织部门',
|
title: '选择组织部门【多选】',
|
||||||
width: '400px',
|
width: '400px',
|
||||||
height: '400px',
|
height: '400px',
|
||||||
onClose: function () {
|
onClose: function () {
|
||||||
var checkedNodes = top.dialog.dialogData.checkedNodes;
|
var checkedDepartmentNodes = top.dialog.dialogData.checkedDepartmentNodes;
|
||||||
if(checkedNodes && checkedNodes.length > 0) {
|
if (checkedDepartmentNodes && checkedDepartmentNodes.length > 0) {
|
||||||
var departments = '';
|
var departments = '';
|
||||||
var departmentNames = '';
|
var departmentNames = '';
|
||||||
for(var i = 0, item; item = checkedNodes[i++];) {
|
for (var i = 0, item; item = checkedDepartmentNodes[i++];) {
|
||||||
if (departments.length > 0) {
|
if (departments.length > 0) {
|
||||||
departments += ',';
|
departments += ',';
|
||||||
departmentNames += ',';
|
departmentNames += ',';
|
||||||
@ -194,23 +267,162 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti
|
|||||||
assignee.departments = '';
|
assignee.departments = '';
|
||||||
assignee.departmentNames = '';
|
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();
|
$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;
|
function updateCandidate() {
|
||||||
$scope.updatePropertyInModel($scope.property);
|
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 = {}
|
||||||
taskListenerProperty.value.taskListeners = $scope.oaNodeManage.oaUserTaskListeners;
|
taskListenerProperty.value.taskListeners = $scope.oaNodeManage.oaUserTaskListeners;
|
||||||
$scope.updatePropertyInModel(taskListenerProperty);
|
$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();
|
$scope.close();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -220,14 +432,16 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function($scope, $ti
|
|||||||
|
|
||||||
// Close button handler
|
// Close button handler
|
||||||
$scope.close = function () {
|
$scope.close = function () {
|
||||||
|
assigneeProperty.mode = 'read';
|
||||||
taskListenerProperty.mode = 'read';
|
taskListenerProperty.mode = 'read';
|
||||||
$scope.property.mode = 'read';
|
$scope.property.mode = 'read';
|
||||||
|
|
||||||
$scope.$hide();
|
$scope.$hide();
|
||||||
};
|
};
|
||||||
|
|
||||||
function initOaNodeManage() {
|
function initOaNodeManage() {
|
||||||
if ($scope.property.value) {
|
if ($scope.property.value) {
|
||||||
$scope.oaNodeManage = $scope.property.value;
|
$scope.oaNodeManage = EDITOR.UTIL.deepClone($scope.property.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,21 +34,66 @@
|
|||||||
<td>
|
<td>
|
||||||
<div>
|
<div>
|
||||||
<label class="radio-inline">
|
<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>
|
||||||
<label class="radio-inline">
|
<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>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- 普通节点 start -->
|
<!-- 普通节点 end -->
|
||||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal'">
|
<!-- 多实例节点 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>
|
<td>
|
||||||
<h5>代理人类型</h5>
|
<h5>代理人类型</h5>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal'">
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<div>
|
<div>
|
||||||
<label class="radio-inline">
|
<label class="radio-inline">
|
||||||
@ -60,7 +105,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- 手动指定代理人 start -->
|
<!-- 手动指定单实例代理人 start -->
|
||||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint'">
|
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint'">
|
||||||
<td>
|
<td>
|
||||||
<h5>代理人数量</h5>
|
<h5>代理人数量</h5>
|
||||||
@ -72,31 +117,65 @@
|
|||||||
<label class="radio-inline">
|
<label class="radio-inline">
|
||||||
<input ng-model="oaNodeManage.assignee.assigneeCount" type="radio" name="assigneeCount" value="single"> 单人
|
<input ng-model="oaNodeManage.assignee.assigneeCount" type="radio" name="assigneeCount" value="single"> 单人
|
||||||
</label>
|
</label>
|
||||||
|
<label class="radio-inline">
|
||||||
|
<input ng-model="oaNodeManage.assignee.assigneeCount" type="radio" name="assigneeCount" value="candidate"> 候选人
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint' && oaNodeManage.assignee.assigneeCount == 'single'">
|
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint' && oaNodeManage.assignee.assigneeCount == 'single'">
|
||||||
<td>
|
<td>
|
||||||
<h5>选择代理人</h5>
|
<h5>选择代理人【单选】</h5>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint' && oaNodeManage.assignee.assigneeCount == 'single'">
|
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'appoint' && oaNodeManage.assignee.assigneeCount == 'single'">
|
||||||
<td>
|
<td>
|
||||||
<input ng-model="oaNodeManage.assignee.assignee" type="hidden" name="assignee">
|
<input ng-model="oaNodeManage.assignee.assignee" type="hidden" name="assignee">
|
||||||
<input ng-model="oaNodeManage.assignee.assigneeName" type="hidden" name="assigneeName">
|
<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>
|
<span>{{oaNodeManage.assignee.assigneeName}}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</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 -->
|
<!-- 自动获取代理人 start -->
|
||||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto'">
|
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto'">
|
||||||
<td>
|
<td>
|
||||||
<h5>自动方式</h5>
|
<h5>自动方式</h5>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto'">
|
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto'">
|
||||||
<td>
|
<td>
|
||||||
<div>
|
<div>
|
||||||
<label class="radio-inline">
|
<label class="radio-inline">
|
||||||
@ -109,12 +188,12 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
<td>
|
||||||
<h5>部门类型</h5>
|
<h5>部门类型</h5>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
<td>
|
||||||
<div>
|
<div>
|
||||||
<label class="radio-inline">
|
<label class="radio-inline">
|
||||||
@ -127,12 +206,12 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
<td>
|
||||||
<h5>选择部门</h5>
|
<h5>选择部门【多选】</h5>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
<td>
|
||||||
<input ng-model="oaNodeManage.assignee.departments" type="hidden" name="departments">
|
<input ng-model="oaNodeManage.assignee.departments" type="hidden" name="departments">
|
||||||
<input ng-model="oaNodeManage.assignee.departmentNames" type="hidden" name="departmentNames">
|
<input ng-model="oaNodeManage.assignee.departmentNames" type="hidden" name="departmentNames">
|
||||||
@ -141,38 +220,39 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
<td>
|
||||||
<h5>选择角色</h5>
|
<h5>选择角色【多选】</h5>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
<td>
|
||||||
<input ng-model="oaNodeManage.assignee.roles" type="hidden" name="roles">
|
<input ng-model="oaNodeManage.assignee.roles" type="hidden" name="roles">
|
||||||
<button type="button">选择</button>
|
<input ng-model="oaNodeManage.assignee.roleNames" type="hidden" name="roleNames">
|
||||||
<span>角色1</span>
|
<button type="button" ng-click="selectRoles()">选择</button>
|
||||||
|
<span>{{oaNodeManage.assignee.roleNames}}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
<td>
|
||||||
<h5>选择职位</h5>
|
<h5>选择职位【多选】</h5>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
<td>
|
||||||
<input ng-model="oaNodeManage.assignee.positions" type="hidden" name="positions">
|
<input ng-model="oaNodeManage.assignee.positions" type="hidden" name="positions">
|
||||||
<button type="button">选择</button>
|
<input ng-model="oaNodeManage.assignee.positionNames" type="hidden" name="positionNames">
|
||||||
<span>职位1</span>
|
<button type="button" ng-click="selectPositions()">选择</button>
|
||||||
|
<span>{{oaNodeManage.assignee.positionNames}}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr ng-if="oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'quick'">
|
||||||
<tr ng-if="oaNodeManage.assignee.nodeType == 'normal' && oaNodeManage.assignee.assigneeType == 'auto' && oaNodeManage.assignee.autoAssignType == 'quick'">
|
|
||||||
<td>
|
<td>
|
||||||
<h5>快捷代理人</h5>
|
<h5>快捷代理人</h5>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
<td>
|
||||||
<div class="radio">
|
<div class="radio">
|
||||||
<label>
|
<label>
|
||||||
@ -208,62 +288,6 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- 自动获取代理人 end -->
|
<!-- 自动获取代理人 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>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
@ -43,7 +43,6 @@ KISBPM.TOOLBAR = {
|
|||||||
},
|
},
|
||||||
listOaNodeManage: function(json) {
|
listOaNodeManage: function(json) {
|
||||||
var nodes = json.childShapes;
|
var nodes = json.childShapes;
|
||||||
|
|
||||||
var oaNodeManages = [];
|
var oaNodeManages = [];
|
||||||
for(var i = 0, item; item = nodes[i++];) {
|
for(var i = 0, item; item = nodes[i++];) {
|
||||||
if(item.stencil.id === 'UserTask') {
|
if(item.stencil.id === 'UserTask') {
|
||||||
|
@ -130,6 +130,29 @@ EDITOR.UTIL = {
|
|||||||
} else {
|
} else {
|
||||||
return undefined;
|
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