mirror of
https://github.com/getrebuild/rebuild.git
synced 2024-09-20 15:35:55 +08:00
approval no-privi
This commit is contained in:
parent
a95ef8d1c3
commit
8f18c44f91
|
@ -11,7 +11,9 @@ import cn.devezhao.persist4j.Entity;
|
||||||
import cn.devezhao.persist4j.Record;
|
import cn.devezhao.persist4j.Record;
|
||||||
import cn.devezhao.persist4j.engine.ID;
|
import cn.devezhao.persist4j.engine.ID;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.rebuild.core.DefinedException;
|
||||||
import com.rebuild.core.configuration.general.FormsBuilder;
|
import com.rebuild.core.configuration.general.FormsBuilder;
|
||||||
|
import com.rebuild.core.support.i18n.Language;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审批可修改字段表单
|
* 审批可修改字段表单
|
||||||
|
@ -39,6 +41,10 @@ public class FormBuilder {
|
||||||
*/
|
*/
|
||||||
public JSONArray build(JSONArray elements) {
|
public JSONArray build(JSONArray elements) {
|
||||||
Record data = UseFormsBuilder.instance.findRecord(record, user, elements);
|
Record data = UseFormsBuilder.instance.findRecord(record, user, elements);
|
||||||
|
if (data == null) {
|
||||||
|
throw new DefinedException(403, Language.L("无法读取审批记录"));
|
||||||
|
}
|
||||||
|
|
||||||
UseFormsBuilder.instance.buildModelElements(elements, data.getEntity(), data, user);
|
UseFormsBuilder.instance.buildModelElements(elements, data.getEntity(), data, user);
|
||||||
return elements;
|
return elements;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ See LICENSE and COMMERCIAL in the project root for license information.
|
||||||
|
|
||||||
package com.rebuild.web;
|
package com.rebuild.web;
|
||||||
|
|
||||||
|
import cn.devezhao.bizz.security.AccessDeniedException;
|
||||||
import cn.devezhao.commons.ThrowableUtils;
|
import cn.devezhao.commons.ThrowableUtils;
|
||||||
import cn.devezhao.commons.web.ServletUtils;
|
import cn.devezhao.commons.web.ServletUtils;
|
||||||
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
|
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
|
||||||
|
@ -41,7 +42,6 @@ import org.thymeleaf.spring5.view.ThymeleafViewResolver;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.nio.file.AccessDeniedException;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -184,6 +184,8 @@ public class RebuildWebConfigurer implements WebMvcConfigurer, ErrorViewResolver
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(errorMsg)) errorMsg = Language.L("系统繁忙,请稍后重试");
|
||||||
|
|
||||||
error.getModel().put("error_code", errorCode);
|
error.getModel().put("error_code", errorCode);
|
||||||
error.getModel().put("error_msg", errorMsg);
|
error.getModel().put("error_msg", errorMsg);
|
||||||
|
|
||||||
|
|
|
@ -219,6 +219,14 @@ class ApprovalUsersForm extends RbFormHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderUsers() {
|
renderUsers() {
|
||||||
|
if (this.state.hasError) {
|
||||||
|
return (
|
||||||
|
<div className="form-group">
|
||||||
|
<RbAlertBox message={this.state.hasError} type="danger" />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
const approverHas = (this.state.nextApprovers || []).length > 0 || this.state.approverSelfSelecting
|
const approverHas = (this.state.nextApprovers || []).length > 0 || this.state.approverSelfSelecting
|
||||||
const ccHas = (this.state.nextCcs || []).length > 0 || this.state.ccSelfSelecting
|
const ccHas = (this.state.nextCcs || []).length > 0 || this.state.ccSelfSelecting
|
||||||
|
|
||||||
|
@ -284,7 +292,13 @@ class ApprovalUsersForm extends RbFormHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
getNextStep(approval) {
|
getNextStep(approval) {
|
||||||
$.get(`/app/entity/approval/fetch-nextstep?record=${this.props.id}&approval=${approval || this.props.approval}`, (res) => this.setState(res.data))
|
$.get(`/app/entity/approval/fetch-nextstep?record=${this.props.id}&approval=${approval || this.props.approval}`, (res) => {
|
||||||
|
if (res.error_code === 0) {
|
||||||
|
this.setState({ ...res.data, hasError: null })
|
||||||
|
} else {
|
||||||
|
this.setState({ hasError: res.error_msg })
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,10 +412,10 @@ class ApprovalApproveForm extends ApprovalUsersForm {
|
||||||
</div>
|
</div>
|
||||||
{this.renderUsers()}
|
{this.renderUsers()}
|
||||||
<div className="dialog-footer" ref={(c) => (this._btns = c)}>
|
<div className="dialog-footer" ref={(c) => (this._btns = c)}>
|
||||||
<button type="button" className="btn btn-primary btn-space" onClick={() => this.post(10)}>
|
<button type="button" className="btn btn-primary btn-space" onClick={() => this.post(10)} disabled={!!this.state.hasError}>
|
||||||
{$L('同意')}
|
{$L('同意')}
|
||||||
</button>
|
</button>
|
||||||
<button type="button" className="btn btn-danger btn-outline btn-space" onClick={() => this.post(11)}>
|
<button type="button" className="btn btn-danger btn-outline btn-space" onClick={() => this.post(11)} disabled={!!this.state.hasError}>
|
||||||
{$L('驳回')}
|
{$L('驳回')}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue