diff --git a/src/main/java/com/rebuild/core/service/approval/RobotApprovalConfigService.java b/src/main/java/com/rebuild/core/service/approval/RobotApprovalConfigService.java index fda04216b..c3612316b 100644 --- a/src/main/java/com/rebuild/core/service/approval/RobotApprovalConfigService.java +++ b/src/main/java/com/rebuild/core/service/approval/RobotApprovalConfigService.java @@ -20,6 +20,7 @@ import com.rebuild.core.privileges.AdminGuard; import com.rebuild.core.service.DataSpecificationException; import com.rebuild.core.support.i18n.Language; +import org.springframework.core.NamedThreadLocal; import org.springframework.stereotype.Service; /** @@ -52,7 +53,9 @@ public Record update(Record record) { if (record.hasValue("flowDefinition")) { int inUsed = ApprovalHelper.checkInUsed(record.getPrimary()); if (inUsed > 0) { - throw new DataSpecificationException(Language.L("有 %d 条记录正在使用此流程,禁止修改", inUsed)); + Boolean force40 = _FORCESAVE.get(); + if (force40 != null) _FORCESAVE.remove(); + else throw new DataSpecificationException(Language.L("有 %d 条记录正在使用此流程,禁止修改", inUsed)); } } return super.update(record); @@ -87,4 +90,11 @@ protected void cleanCache(ID cfgid) { RobotApprovalManager.instance.clean(entity); } } + + private static final ThreadLocal _FORCESAVE = new NamedThreadLocal<>("Force save on used"); + /** + */ + public static void setForceSave() { + _FORCESAVE.set(true); + } } diff --git a/src/main/java/com/rebuild/web/general/CommonOperatingController.java b/src/main/java/com/rebuild/web/general/CommonOperatingController.java index c91e640d9..9d7e33a21 100644 --- a/src/main/java/com/rebuild/web/general/CommonOperatingController.java +++ b/src/main/java/com/rebuild/web/general/CommonOperatingController.java @@ -24,6 +24,7 @@ import com.rebuild.core.metadata.MetadataSorter; import com.rebuild.core.metadata.easymeta.DisplayType; import com.rebuild.core.service.DataSpecificationException; +import com.rebuild.core.service.approval.RobotApprovalConfigService; import com.rebuild.core.service.query.AdvFilterParser; import com.rebuild.core.service.query.ParseHelper; import com.rebuild.core.service.query.QueryHelper; @@ -68,6 +69,12 @@ record = EntityHelper.parse((JSONObject) formJson, getRequestUser(request)); return RespBody.error(known.getLocalizedMessage()); } + // 特殊处理 + if (getBoolParameter(request, "force") + && record.getEntity().getEntityCode() == EntityHelper.RobotApprovalConfig) { + RobotApprovalConfigService.setForceSave(); + } + return saveRecord(record); } diff --git a/src/main/resources/web/admin/metadata/entity-advanced.html b/src/main/resources/web/admin/metadata/entity-advanced.html index 2c74be121..2c0004618 100644 --- a/src/main/resources/web/admin/metadata/entity-advanced.html +++ b/src/main/resources/web/admin/metadata/entity-advanced.html @@ -132,9 +132,7 @@
[[${bundle.L('卡片模式')}]]
- +
[[${bundle.L('系统内置,不允许删除')}]]
diff --git a/src/main/resources/web/admin/robot/approval-design.html b/src/main/resources/web/admin/robot/approval-design.html index 6915ff569..e7cbbb1d0 100644 --- a/src/main/resources/web/admin/robot/approval-design.html +++ b/src/main/resources/web/admin/robot/approval-design.html @@ -30,6 +30,7 @@
diff --git a/src/main/resources/web/assets/css/rb-page.css b/src/main/resources/web/assets/css/rb-page.css index d5910a061..ba36129a4 100644 --- a/src/main/resources/web/assets/css/rb-page.css +++ b/src/main/resources/web/assets/css/rb-page.css @@ -354,6 +354,11 @@ a.btn { cursor: default; } +.btn .icon { + min-width: 12px; + transform: translateY(-1px); +} + .btn .icon.x14 { font-size: 1.431rem; } diff --git a/src/main/resources/web/assets/js/admin/approval-design.js b/src/main/resources/web/assets/js/admin/approval-design.js index fe7aee091..1b2834d2c 100644 --- a/src/main/resources/web/assets/js/admin/approval-design.js +++ b/src/main/resources/web/assets/js/admin/approval-design.js @@ -1092,7 +1092,7 @@ class RbFlowCanvas extends NodeGroupSpec { $('.box-scale').draggable({ cursor: 'move', axis: 'x', scroll: false }) $('#rbflow').removeClass('rb-loading-active') - const $btn = $('.J_save').on('click', () => { + const $btn = $('.J_save').on('click', (e) => { const s = this.serialize() if (!s) return @@ -1104,7 +1104,7 @@ class RbFlowCanvas extends NodeGroupSpec { const noApproverNode = !data.includes('"approver"') $btn.button('loading') - $.post('/app/entity/common-save', data, (res) => { + $.post(`/app/entity/common-save?force=${!!$(e.target).data('force')}`, data, (res) => { if (res.error_code === 0) { const msg = (