diff --git a/@rbv b/@rbv index e30741d98..b97388f77 160000 --- a/@rbv +++ b/@rbv @@ -1 +1 @@ -Subproject commit e30741d980c3d40f31590401bcb3c4070bbe8268 +Subproject commit b97388f77b68c6fcdf174168472948fdadbf3707 diff --git a/pom.xml b/pom.xml index 902c7bbea..fca7f3ff4 100644 --- a/pom.xml +++ b/pom.xml @@ -316,17 +316,17 @@ org.aspectj aspectjweaver - 1.9.20 + 1.9.21.1 com.alibaba druid - 1.2.20 + 1.2.21 com.mysql mysql-connector-j - 8.2.0 + 8.3.0 net.sf.ehcache @@ -341,7 +341,7 @@ com.qiniu qiniu-java-sdk - 7.14.0 + 7.15.0 com.github.whvcse @@ -351,12 +351,12 @@ com.github.oshi oshi-core - 6.4.5 + 6.4.12 org.jsoup jsoup - 1.16.1 + 1.17.2 com.hankcs @@ -391,7 +391,7 @@ com.alibaba easyexcel - 3.3.2 + 3.3.3 ehcache @@ -402,17 +402,17 @@ com.deepoove poi-tl - 1.12.1 + 1.12.2 org.apache.poi poi - 5.2.4 + 5.2.5 org.apache.poi poi-ooxml - 5.2.4 + 5.2.5 org.apache.poi @@ -422,12 +422,12 @@ com.h2database h2 - 2.2.220 + 2.2.224 com.googlecode.aviator aviator - 5.3.3 + 5.4.1 net.coobird @@ -442,12 +442,12 @@ com.google.zxing javase - 3.5.2 + 3.5.3 org.redisson redisson - 3.23.3 + 3.26.1 org.apache.commons @@ -473,12 +473,12 @@ cn.hutool hutool-core - 5.8.25 + 5.8.26 org.apache.commons commons-lang3 - 3.13.0 + 3.14.0 commons-io commons-io - 2.13.0 + 2.15.1 org.apache.commons commons-compress - 1.24.0 + 1.25.0 org.yaml @@ -523,12 +523,12 @@ com.fasterxml.woodstox woodstox-core - 6.4.0 + 6.6.0 io.netty netty-handler - 4.1.94.Final + 4.1.107.Final diff --git a/src/main/java/com/rebuild/core/service/datareport/DataReportManager.java b/src/main/java/com/rebuild/core/service/datareport/DataReportManager.java index 2b97df616..5ba634d0b 100644 --- a/src/main/java/com/rebuild/core/service/datareport/DataReportManager.java +++ b/src/main/java/com/rebuild/core/service/datareport/DataReportManager.java @@ -151,7 +151,7 @@ public class DataReportManager implements ConfigManager { // v35 HTML5 if (templateContent != null) { - return new TemplateFile(templateContent, entity); + return new TemplateFile(templateContent, entity, reportId); } if (templateFile == null) { @@ -163,7 +163,7 @@ public class DataReportManager implements ConfigManager { throw new ConfigurationException("File of template not extsts : " + file); } - return new TemplateFile(file, entity, type, isV33); + return new TemplateFile(file, entity, type, isV33, reportId); } /** diff --git a/src/main/java/com/rebuild/core/service/datareport/EasyExcelGenerator.java b/src/main/java/com/rebuild/core/service/datareport/EasyExcelGenerator.java index 66864f835..7a5295bf5 100644 --- a/src/main/java/com/rebuild/core/service/datareport/EasyExcelGenerator.java +++ b/src/main/java/com/rebuild/core/service/datareport/EasyExcelGenerator.java @@ -239,6 +239,7 @@ public class EasyExcelGenerator extends SetUser { final Map>> datas = new HashMap<>(); final String baseSql = "select %s,%s from %s where %s = ?"; + // 主记录 if (!fieldsOfMain.isEmpty()) { String sql = String.format(baseSql, StringUtils.join(fieldsOfMain, ","), diff --git a/src/main/java/com/rebuild/core/service/datareport/EasyExcelGenerator33.java b/src/main/java/com/rebuild/core/service/datareport/EasyExcelGenerator33.java index 8fbb1f7b8..63859a954 100644 --- a/src/main/java/com/rebuild/core/service/datareport/EasyExcelGenerator33.java +++ b/src/main/java/com/rebuild/core/service/datareport/EasyExcelGenerator33.java @@ -22,10 +22,15 @@ import com.rebuild.core.support.general.RecordBuilder; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.PrintSetup; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.apache.poi.xssf.usermodel.XSSFFont; +import org.apache.poi.xssf.usermodel.XSSFRichTextString; +import org.apache.poi.xssf.usermodel.XSSFSimpleShape; +import org.apache.poi.xssf.usermodel.XSSFTextRun; import org.springframework.util.Assert; import java.io.File; @@ -38,6 +43,8 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; import static com.rebuild.core.service.datareport.TemplateExtractor.APPROVAL_PREFIX; import static com.rebuild.core.service.datareport.TemplateExtractor.NROW_PREFIX; @@ -57,6 +64,9 @@ public class EasyExcelGenerator33 extends EasyExcelGenerator { final private List recordIdMultiple; + private Set inShapeVars; + private Map mdataHolder; + protected EasyExcelGenerator33(File templateFile, ID recordId) { super(templateFile, recordId); this.recordIdMultiple = null; @@ -146,6 +156,7 @@ public class EasyExcelGenerator33 extends EasyExcelGenerator { Map d = buildData(record, varsMapOfMain); datas.put(MDATA_KEY, Collections.singletonList(d)); + mdataHolder = d; } // 相关记录(含明细、审批) @@ -219,6 +230,7 @@ public class EasyExcelGenerator33 extends EasyExcelGenerator { datas.put(refKey, refDatas); } + inShapeVars = templateExtractor33.getInShapeVars(); return datas; } @@ -233,7 +245,7 @@ public class EasyExcelGenerator33 extends EasyExcelGenerator { @Override public File generate() { - if (recordIdMultiple == null) return super.generate(); + if (recordIdMultiple == null) return superGenerate(); // init File targetFile = super.getTargetFile(); @@ -282,7 +294,7 @@ public class EasyExcelGenerator33 extends EasyExcelGenerator { this.phNumber = 1; this.phValues.clear(); - targetFile = super.generate(); + targetFile = superGenerate(); } // 删除模板 Sheet @@ -297,4 +309,54 @@ public class EasyExcelGenerator33 extends EasyExcelGenerator { return targetFile; } + + private File superGenerate() { + File file = super.generate(); + if (inShapeVars.isEmpty() || mdataHolder == null) return file; + + // v3.6 提取文本框 + try (Workbook wb = WorkbookFactory.create(file)) { + Sheet sheet = wb.getSheetAt(0); + for (Object o : sheet.getDrawingPatriarch()) { + XSSFSimpleShape shape = (XSSFSimpleShape) o; + String shapeText = shape.getText(); + Matcher matcher = TemplateExtractor33.PATT_V2.matcher(shapeText); + while (matcher.find()) { + String varName = matcher.group(1); + if (StringUtils.isNotBlank(varName)) { + shapeText = shapeText.replace("{" + varName +"}", String.valueOf(mdataHolder.get(varName))); + } + } + + // 样式 + XSSFTextRun s = shape.getTextParagraphs().get(0).getTextRuns().get(0); + XSSFFont font = (XSSFFont) wb.createFont(); + font.setFontName(s.getFontFamily()); + font.setFontHeightInPoints((short) s.getFontSize()); + font.setBold(s.isBold()); + font.setItalic(s.isItalic()); + font.setStrikeout(s.isStrikethrough()); + font.setUnderline(s.isUnderline() ? Font.U_SINGLE : Font.U_NONE); + // TODO 颜色不生效 + + XSSFRichTextString richTextString = new XSSFRichTextString(shapeText); + richTextString.applyFont(font); + shape.setText(richTextString); + } + + // 保存生效 + File file2 = new File(file.getParent(), "2" + file.getName()); + try (FileOutputStream fos = new FileOutputStream(file2)) { + wb.write(fos); + + FileUtils.deleteQuietly(file); + return file2; + } + + } catch (Exception ex) { + log.error("Cannot fill vars to shape", ex); + } + + return file; + } } diff --git a/src/main/java/com/rebuild/core/service/datareport/EasyExcelListGenerator.java b/src/main/java/com/rebuild/core/service/datareport/EasyExcelListGenerator.java index 545fb5061..1719d2a13 100644 --- a/src/main/java/com/rebuild/core/service/datareport/EasyExcelListGenerator.java +++ b/src/main/java/com/rebuild/core/service/datareport/EasyExcelListGenerator.java @@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j; import java.io.File; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -95,7 +96,9 @@ public class EasyExcelListGenerator extends EasyExcelGenerator { if (varsMap.containsKey(PH__CURRENTDATE)) phValues.put(PH__CURRENTDATE, getPhValue(PH__CURRENTDATE)); if (varsMap.containsKey(PH__CURRENTDATETIME)) phValues.put(PH__CURRENTDATETIME, getPhValue(PH__CURRENTDATETIME)); - return Collections.singletonMap(MDATA_KEY, datas); + Map>> datasMap = new HashMap<>(); + datasMap.put(MDATA_KEY, datas); + return datasMap; } public int getExportCount() { @@ -110,7 +113,8 @@ public class EasyExcelListGenerator extends EasyExcelGenerator { * @return */ public static EasyExcelListGenerator create(ID reportId, JSONObject queryData) { - TemplateFile tb = DataReportManager.instance.getTemplateFile(MetadataHelper.getEntity(queryData.getString("entity")), reportId); + TemplateFile tb = DataReportManager.instance.getTemplateFile( + MetadataHelper.getEntity(queryData.getString("entity")), reportId); return create(tb.templateFile, queryData); } diff --git a/src/main/java/com/rebuild/core/service/datareport/TemplateExtractor33.java b/src/main/java/com/rebuild/core/service/datareport/TemplateExtractor33.java index bdc8f36e9..b9a6f58d9 100644 --- a/src/main/java/com/rebuild/core/service/datareport/TemplateExtractor33.java +++ b/src/main/java/com/rebuild/core/service/datareport/TemplateExtractor33.java @@ -11,11 +11,20 @@ import cn.devezhao.persist4j.Entity; import cn.devezhao.persist4j.Field; import com.rebuild.core.metadata.EntityHelper; import com.rebuild.core.metadata.MetadataHelper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.Drawing; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.apache.poi.xssf.usermodel.XSSFSimpleShape; import java.io.File; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.regex.Matcher; /** * V33 @@ -23,6 +32,7 @@ import java.util.Set; * @author devezhao * @since 2023/4/5 */ +@Slf4j public class TemplateExtractor33 extends TemplateExtractor { // 明细字段 @@ -37,6 +47,8 @@ public class TemplateExtractor33 extends TemplateExtractor { private static final String SORT_DESC = ":desc"; private Map sortFields = new HashMap<>(); + private Set inShapeVars = new HashSet<>(); + /** * @param templateFile */ @@ -161,4 +173,43 @@ public class TemplateExtractor33 extends TemplateExtractor { || varName.contains(NROW_PREFIX + PLACEHOLDER) || varName.contains(NROW_PREFIX2 + PLACEHOLDER); } + + @Override + protected Set extractVars() { + Set vars = super.extractVars(); + + // v3.6 LAB 提取文本框 + if (templateFile.getName().endsWith(".xlsx")) { + try (Workbook wb = WorkbookFactory.create(templateFile)) { + Sheet sheet = wb.getSheetAt(0); + Drawing drawing = sheet.getDrawingPatriarch(); + if (drawing != null) { + for (Object o : sheet.getDrawingPatriarch()) { + XSSFSimpleShape shape = (XSSFSimpleShape) o; + String shapeText = shape.getText(); + Matcher matcher = PATT_V2.matcher(shapeText); + while (matcher.find()) { + String varName = matcher.group(1); + if (StringUtils.isNotBlank(varName)) { + vars.add(varName); + inShapeVars.add(varName); + } + } + } + } + + } catch (Exception ex) { + log.error("Cannot extract vars in shape", ex); + } + } + + return vars; + } + + /** + * @return + */ + public Set getInShapeVars() { + return inShapeVars; + } } diff --git a/src/main/java/com/rebuild/core/service/datareport/TemplateFile.java b/src/main/java/com/rebuild/core/service/datareport/TemplateFile.java index 7d2a3cab6..6cc5bac86 100644 --- a/src/main/java/com/rebuild/core/service/datareport/TemplateFile.java +++ b/src/main/java/com/rebuild/core/service/datareport/TemplateFile.java @@ -8,6 +8,7 @@ See LICENSE and COMMERCIAL in the project root for license information. package com.rebuild.core.service.datareport; import cn.devezhao.persist4j.Entity; +import cn.devezhao.persist4j.engine.ID; import java.io.File; @@ -22,21 +23,24 @@ public class TemplateFile { final public Entity entity; final public int type; final public boolean isV33; + final public ID configId; - public TemplateFile(File templateFile, Entity entity, int type, boolean isV33) { + public TemplateFile(File templateFile, Entity entity, int type, boolean isV33, ID configId) { this.templateFile = templateFile; this.entity = entity; this.type = type; this.isV33 = isV33; this.templateContent = null; + this.configId = configId; } // HTML5 - public TemplateFile(String templateContent, Entity entity) { + public TemplateFile(String templateContent, Entity entity, ID configId) { this.templateContent = templateContent; this.entity = entity; this.type = DataReportManager.TYPE_HTML5; this.isV33 = true; this.templateFile = null; + this.configId = configId; } } diff --git a/src/main/java/com/rebuild/core/service/files/FilesHelper.java b/src/main/java/com/rebuild/core/service/files/FilesHelper.java index f76e7895e..ae68b54bd 100644 --- a/src/main/java/com/rebuild/core/service/files/FilesHelper.java +++ b/src/main/java/com/rebuild/core/service/files/FilesHelper.java @@ -71,7 +71,8 @@ public class FilesHelper { if (FILESIZES.containsKey(filePath)) { attach.setInt("fileSize", FILESIZES.remove(filePath)); } else { - Object[] db = Application.createQueryNoFilter("select fileSize from Attachment where filePath = ?") + Object[] db = Application.createQueryNoFilter( + "select fileSize from Attachment where filePath = ?") .setParameter(1, filePath) .unique(); if (db != null) { diff --git a/src/main/java/com/rebuild/core/service/trigger/ActionType.java b/src/main/java/com/rebuild/core/service/trigger/ActionType.java index 6aea038d9..ec34c473e 100644 --- a/src/main/java/com/rebuild/core/service/trigger/ActionType.java +++ b/src/main/java/com/rebuild/core/service/trigger/ActionType.java @@ -7,7 +7,13 @@ See LICENSE and COMMERCIAL in the project root for license information. package com.rebuild.core.service.trigger; -import com.rebuild.core.service.trigger.impl.*; +import com.rebuild.core.service.trigger.impl.AutoApproval; +import com.rebuild.core.service.trigger.impl.AutoAssign; +import com.rebuild.core.service.trigger.impl.AutoShare; +import com.rebuild.core.service.trigger.impl.FieldAggregation; +import com.rebuild.core.service.trigger.impl.FieldWriteback; +import com.rebuild.core.service.trigger.impl.GroupAggregation; +import com.rebuild.core.service.trigger.impl.SendNotification; import org.apache.commons.lang.ClassUtils; import org.springframework.util.ReflectionUtils; @@ -36,6 +42,7 @@ public enum ActionType { CREATEFEED("新建动态", "com.rebuild.rbv.trigger.CreateFeed"), HOOKURL("回调 URL", "com.rebuild.rbv.trigger.HookUrl"), PROXYTRIGGERACTION("自定义触发器", "com.rebuild.rbv.trigger.ProxyTriggerAction"), + AUTOGENREPORT("自动报表导出", "com.rebuild.rbv.trigger.AutoGenReport"), ; diff --git a/src/main/java/com/rebuild/core/service/trigger/TriggerResult.java b/src/main/java/com/rebuild/core/service/trigger/TriggerResult.java index d6bd439a9..b1ff5e19f 100644 --- a/src/main/java/com/rebuild/core/service/trigger/TriggerResult.java +++ b/src/main/java/com/rebuild/core/service/trigger/TriggerResult.java @@ -23,11 +23,11 @@ import java.util.Collection; public class TriggerResult implements JSONAware { // 状态 1=成功, 2=警告, 3=错误 - private int level; + final private int level; // 消息 - private String message; + final private String message; // 影响的记录 - private Collection affected; + final private Collection affected; private TriggerSource chain; @@ -44,6 +44,14 @@ public class TriggerResult implements JSONAware { public boolean hasAffected() { return affected != null && !affected.isEmpty(); } + + public int getLevel() { + return level; + } + + public String getMessage() { + return message; + } @Override public String toJSONString() { diff --git a/src/main/java/com/rebuild/core/service/trigger/impl/FieldAggregation.java b/src/main/java/com/rebuild/core/service/trigger/impl/FieldAggregation.java index 274c1cc92..b53fc542f 100644 --- a/src/main/java/com/rebuild/core/service/trigger/impl/FieldAggregation.java +++ b/src/main/java/com/rebuild/core/service/trigger/impl/FieldAggregation.java @@ -142,6 +142,10 @@ public class FieldAggregation extends TriggerAction { @Override public Object execute(OperatingContext operatingContext) throws TriggerException { + if (operatingContext.getAction() == BizzPermission.UPDATE && !hasUpdateFields(operatingContext)) { + return TriggerResult.noUpdateFields(); + } + final String chainName = String.format("%s:%s:%s", actionContext.getConfigId(), operatingContext.getFixedRecordId(), operatingContext.getAction().getName()); final List tschain = checkTriggerChain(chainName); diff --git a/src/main/java/com/rebuild/core/service/trigger/impl/FieldWriteback.java b/src/main/java/com/rebuild/core/service/trigger/impl/FieldWriteback.java index 83cc7ffa4..8f0735408 100644 --- a/src/main/java/com/rebuild/core/service/trigger/impl/FieldWriteback.java +++ b/src/main/java/com/rebuild/core/service/trigger/impl/FieldWriteback.java @@ -107,6 +107,10 @@ public class FieldWriteback extends FieldAggregation { @Override public Object execute(OperatingContext operatingContext) throws TriggerException { + if (operatingContext.getAction() == BizzPermission.UPDATE && !hasUpdateFields(operatingContext)) { + return TriggerResult.noUpdateFields(); + } + final String chainName = String.format("%s:%s:%s", actionContext.getConfigId(), operatingContext.getFixedRecordId(), operatingContext.getAction().getName()); final List tschain = checkTriggerChain(chainName); diff --git a/src/main/java/com/rebuild/core/support/SysbaseSupport.java b/src/main/java/com/rebuild/core/support/SysbaseSupport.java index f54784ae7..c9704729e 100644 --- a/src/main/java/com/rebuild/core/support/SysbaseSupport.java +++ b/src/main/java/com/rebuild/core/support/SysbaseSupport.java @@ -17,6 +17,7 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; +import org.apache.commons.lang3.StringUtils; import java.io.File; import java.io.IOException; @@ -35,11 +36,18 @@ public class SysbaseSupport { * @return */ public String submit() { - File file = SysbaseHeartbeat.getLogbackFile(); + StringBuilder logConf = new StringBuilder("RebuildConfiguration :\n----------\n"); + for (ConfigurationItem item : ConfigurationItem.values()) { + String v = RebuildConfiguration.get(item); + logConf.append(StringUtils.rightPad(item.name(), 31)).append(" : ").append(v == null ? "" : v).append("\n"); + } + log.warn(logConf.append("----------").toString()); + + File logFile = SysbaseHeartbeat.getLogbackFile(); JSONObject resJson; try { - String res = upload(file, "https://getrebuild.com/api/misc/request-support"); + String res = upload(logFile, "https://getrebuild.com/api/misc/request-support"); log.info("Upload support-file : {}", res); resJson = (JSONObject) JSON.parse(res); } catch (IOException e) { diff --git a/src/main/java/com/rebuild/utils/PdfConverter.java b/src/main/java/com/rebuild/utils/PdfConverter.java index fbd457758..4c1f6492b 100644 --- a/src/main/java/com/rebuild/utils/PdfConverter.java +++ b/src/main/java/com/rebuild/utils/PdfConverter.java @@ -92,17 +92,17 @@ public class PdfConverter { protected static Path convert(Path path, String type, boolean forceRegen) throws IOException { type = StringUtils.defaultIfBlank(type, TYPE_PDF); - String pathFileName = path.getFileName().toString(); - boolean isExcel = pathFileName.endsWith(".xlsx") || pathFileName.endsWith(".xls"); - boolean isWord = pathFileName.endsWith(".docx") || pathFileName.endsWith(".doc"); + final String pathFileName = path.getFileName().toString(); + final boolean isExcel = pathFileName.endsWith(".xlsx") || pathFileName.endsWith(".xls"); + final boolean isWord = pathFileName.endsWith(".docx") || pathFileName.endsWith(".doc"); // Excel 公式生效 if (isExcel) { ExcelUtils.reSaveAndCalcFormula(path); } - final File outdir = RebuildConfiguration.getFileOfTemp(null); - String outName = pathFileName.substring(0, pathFileName.lastIndexOf(".") + 1) + type; - final File dest = new File(outdir, outName); + final File outDir = RebuildConfiguration.getFileOfTemp(null); + final String outName = pathFileName.substring(0, pathFileName.lastIndexOf(".") + 1) + type; + final File dest = new File(outDir, outName); if (dest.exists()) { if (forceRegen) FileUtils.deleteQuietly(dest); @@ -125,7 +125,7 @@ public class PdfConverter { // alias String soffice = RebuildConfiguration.get(ConfigurationItem.LibreofficeBin); if (StringUtils.isBlank(soffice)) soffice = SystemUtils.IS_OS_WINDOWS ? "soffice.exe" : "libreoffice"; - String cmd = String.format("%s --headless --convert-to %s \"%s\" --outdir \"%s\"", soffice, type, path, outdir); + String cmd = String.format("%s --headless --convert-to %s \"%s\" --outdir \"%s\"", soffice, type, path, outDir); String echo = DatabaseBackup.execFor(cmd); if (!echo.isEmpty()) log.info(echo); diff --git a/src/main/java/com/rebuild/web/admin/data/ReportTemplateController.java b/src/main/java/com/rebuild/web/admin/data/ReportTemplateController.java index c9c58a690..0410fa8c0 100644 --- a/src/main/java/com/rebuild/web/admin/data/ReportTemplateController.java +++ b/src/main/java/com/rebuild/web/admin/data/ReportTemplateController.java @@ -174,7 +174,7 @@ public class ReportTemplateController extends BaseController { String entity = getParameter(request, "entity"); String template = getParameter(request, "file"); int type = getIntParameter(request, "type", DataReportManager.TYPE_RECORD); - tt = new TemplateFile(RebuildConfiguration.getFileOfData(template), MetadataHelper.getEntity(entity), type, true); + tt = new TemplateFile(RebuildConfiguration.getFileOfData(template), MetadataHelper.getEntity(entity), type, true, null); } else { // 使用配置 tt = DataReportManager.instance.getTemplateFile(reportId); diff --git a/src/main/resources/web/admin/integration/dingtalk.html b/src/main/resources/web/admin/integration/dingtalk.html index 7eb245247..b2fd67e0a 100644 --- a/src/main/resources/web/admin/integration/dingtalk.html +++ b/src/main/resources/web/admin/integration/dingtalk.html @@ -28,11 +28,11 @@ [[${DingtalkAgentid ?:bundle.L('未设置')}]] - AppKey + AppKey (Client ID) [[${DingtalkAppkey ?:bundle.L('未设置')}]] - AppSecret + AppSecret (Client Secret) [[${DingtalkAppsecret ?:bundle.L('未设置')}]] diff --git a/src/main/resources/web/assets/css/triggers.css b/src/main/resources/web/assets/css/triggers.css index 39cbbc2cd..5b3500d88 100644 --- a/src/main/resources/web/assets/css/triggers.css +++ b/src/main/resources/web/assets/css/triggers.css @@ -565,3 +565,18 @@ textarea.formula-code + .fields-vars { padding: 4px 10px; border-left: 4px solid #e0e0e0; } + +.auto-gen-report .dist-tips .alert { + width: auto; + margin-bottom: 0; +} + +.v36-logdesc > .badge { + font-size: 12px; + margin-left: 5px; + margin-right: 5px; +} + +.v36-logdesc > .badge + .badge { + margin-left: 0; +} diff --git a/src/main/resources/web/assets/js/general/print-preview.js b/src/main/resources/web/assets/js/general/print-preview.js index ffb9c5522..40762eacd 100644 --- a/src/main/resources/web/assets/js/general/print-preview.js +++ b/src/main/resources/web/assets/js/general/print-preview.js @@ -182,7 +182,7 @@ class PreviewTable extends React.Component { ) } } else if (item.type === 'BOOL') { - return item.value ? $L('是') : $L('否') + return item.value === 'T' || item.value === true ? $L('是') : $L('否') } else if (item.type === 'MULTISELECT') { return (
    diff --git a/src/main/resources/web/assets/js/metadata/entity-new2.js b/src/main/resources/web/assets/js/metadata/entity-new2.js index e1459844e..c16a35619 100644 --- a/src/main/resources/web/assets/js/metadata/entity-new2.js +++ b/src/main/resources/web/assets/js/metadata/entity-new2.js @@ -6,11 +6,6 @@ See LICENSE and COMMERCIAL in the project root for license information. */ /* global InitModels, FIELD_TYPES */ -window.__LAB_SHOWNDETAIL = false -window.bosskeyTrigger = function () { - window.__LAB_SHOWNDETAIL = true -} - // ~~ 新建实体 // eslint-disable-next-line no-unused-vars class EntityNew2 extends RbModalHandler { @@ -98,7 +93,7 @@ class EntityNew2 extends RbModalHandler { {this.state.entities && this.state.entities.map((item) => { if (item.mainEntity) return null - if (item.detailEntity && !window.__LAB_SHOWNDETAIL) return null + if (item.detailEntity && !window.__BOSSKEY) return null return (