正式版发布:Oinone 6.3.0 版本 集成设计器新增 MCP,流程设计器优化,邀您体验

版本号: 6.3.0 版本
发布日期:2025.09.05
更新要点:集成设计器新增 MCP,流程设计器优化

6.3.0 版本

20250905 升级内容

  • 镜像版本升级: 6.3.0
  • 后端版本升级: 6.3.0
  • 前端版本升级
  • 新增 集成接口、开放接口、Oinone Function 能力转化为 MCP Tools 查看文档
  • 新增自由下钻 点击图表或表格中的数据点,查看下一级明细,在钻取菜单或路径导航中切换其他维度,支持交叉分析。 查看文档
  • 新增工作流加签支持配置审批前/审批后/用户自选加签方式 查看文档
  • 新增工作流任务委托 查看文档
  • 新增工作流待办与任务交接 查看文档
  • 新增待办页支持展示流程图 查看文档
  • 新增人工节点退回新增“直达当前节点”、人工节点支持配置条件自动退回 查看文档
  • 新增分支节点支持移动与配置“首个匹配执行”,分支移动的快捷按钮 查看文档
  • 新增流程设计器退回路线显示 查看文档
  • 新增流程设计器支持刷新所有人工节点视图权限 查看文档
  • 新增流程设计器支持历史版本的查看与恢复 查看文档
  • 新增工作流待办支持反悔 查看文档
  • 新增节点交互优化(提供复制、剪切) 查看文档
  • 新增流程设计器提供鸟瞰图
  • 新增流程设计器选择审批/填写人组件支持以公司纬度筛选员工和部门
  • 修复并行节点重命名BUG
  • 修复流程设计器刷新人工节点视图权限保留原有权限配置
  • 修复工作流无法缩放
  • 修复当工作流过小时,缩放区域不是全屏
  • 修复节点详情抽屉按钮点击偏移问题
  • 重构流程设计器添加审批人组件

业务工程新增依赖

PS:与设计器一套环境的所有业务工程都必须新增该依赖,否则 MCP 功能将无法使用

<dependency>
    <groupId>pro.shushi.pamirs.eip2</groupId>
    <artifactId>pamirs-eip2-mcp-api</artifactId>
</dependency>
<dependency>
    <groupId>pro.shushi.pamirs.eip2</groupId>
    <artifactId>pamirs-eip2-mcp-core</artifactId>
</dependency>

后端版本包信息

Oinone平台部署及依赖说明(v6.3)

未使用到的版本号请忽略,按项目中使用到的进行替换。

<!-- 平台基础 -->
<oinone-bom.version>6.3.0</oinone-bom.version>
<!-- 设计器 -->
<pamirs.workflow.designer.version>6.3.0</pamirs.workflow.designer.version>
<pamirs.model.designer.version>6.3.0</pamirs.model.designer.version>
<pamirs.ui.designer.version>6.3.0</pamirs.ui.designer.version>
<pamirs.print.designer.version>6.3.0</pamirs.print.designer.version>
<pamirs.data.designer.version>6.3.0</pamirs.data.designer.version>
<pamirs.dataflow.designer.version>6.3.0</pamirs.dataflow.designer.version>
<pamirs.eip.designer.version>6.3.0</pamirs.eip.designer.version>
<pamirs.microflow.designer.version>6.3.0</pamirs.microflow.designer.version>
<pamirs.ai.designer.version>6.3.0</pamirs.ai.designer.version>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>pro.shushi</groupId>
            <artifactId>oinone-bom</artifactId>
            <version>${oinone-bom.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>pro.shushi.pamirs.designer</groupId>
            <artifactId>pamirs-model-designer-api</artifactId>
            <version>${pamirs.model.designer.version}</version>
        </dependency>
        <dependency>
            <groupId>pro.shushi.pamirs.designer</groupId>
            <artifactId>pamirs-ui-designer-api</artifactId>
            <version>${pamirs.ui.designer.version}</version>
        </dependency>
        <dependency>
            <groupId>pro.shushi.pamirs.dataflow</groupId>
            <artifactId>pamirs-dataflow-designer-api</artifactId>
            <version>${pamirs.dataflow.designer.version}</version>
        </dependency>
        <dependency>
            <groupId>pro.shushi.pamirs.designer</groupId>
            <artifactId>pamirs-eip-designer-api</artifactId>
            <version>${pamirs.eip.designer.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

oinone-bom详细版本信息

<!-- 平台基础 -->
<oinone-pamirs.version>6.3.0</oinone-pamirs.version>
<!-- 元数据增强 -->
<pamirs.meta.enhance.version>6.3.0</pamirs.meta.enhance.version>
<!-- 平台功能 -->
<pamirs.distribution.version>6.3.0</pamirs.distribution.version>
<pamirs.metadata.manager>6.3.0</pamirs.metadata.manager>
<pamirs.designer.metadata.version>6.3.0</pamirs.designer.metadata.version>
<pamirs.workflow.version>6.3.0</pamirs.workflow.version>
<pamirs.workbench.version>6.3.0</pamirs.workbench.version>
<pamirs.data.visualization.version>6.3.0</pamirs.data.visualization.version>
<pamirs.fusion.version>6.3.0</pamirs.fusion.version>
<!-- 设计器 -->
<pamirs.designer.common.version>6.3.0</pamirs.designer.common.version>
<pamirs.flow.designer.base.version>6.3.0</pamirs.flow.designer.base.version>

前端版本包信息

{
    "@oinone/kunlun-dependencies": "~6.3.0",
    "@oinone/kunlun-vue-ui-antd": "~6.3.0",
    "@oinone/kunlun-vue-ui-el": "~6.3.0",
    "@oinone/kunlun-mobile-dependencies": "~6.3.0",
    "@oinone/kunlun-vue-ui-mobile-vant": "~6.3.0",
    "@oinone/kunlun-mobile-workbench": "~6.3.0",
    "@oinone/kunlun-data-designer-open-pc": "~6.3.0",
    "@oinone/kunlun-data-designer-open-mobile": "~6.3.0"
}

前端详细版本信息

可通过node_modules/@oinone查看

{
    "@oinone/kunlun-cache": "6.3.0",
    "@oinone/kunlun-dsl": "6.3.0",
    "@oinone/kunlun-environment": "6.3.0",
    "@oinone/kunlun-event": "6.3.0",
    "@oinone/kunlun-expression": "6.3.0",
    "@oinone/kunlun-meta": "6.3.0",
    "@oinone/kunlun-request": "6.3.0",
    "@oinone/kunlun-router": "6.3.0",
    "@oinone/kunlun-service": "6.3.0",
    "@oinone/kunlun-shared": "6.3.0",
    "@oinone/kunlun-spi": "6.3.0",
    "@oinone/kunlun-state": "6.3.0",
    "@oinone/kunlun-theme": "6.3.0",
    "@oinone/kunlun-engine": "6.3.0",
    "@oinone/kunlun-vue-admin-base": "6.3.0",
    "@oinone/kunlun-vue-admin-layout": "6.3.0",
    "@oinone/kunlun-dependencies": "6.3.0",
    "@oinone/kunlun-vue-router": "6.3.0",
    "@oinone/kunlun-vue-ui": "6.3.0",
    "@oinone/kunlun-vue-ui-antd": "6.3.0",
    "@oinone/kunlun-vue-ui-common": "6.3.0",
    "@oinone/kunlun-vue-ui-el": "6.3.0",
    "@oinone/kunlun-vue-widget": "6.3.0",
    "@oinone/kunlun-vue-expression": "6.3.0",
    "@oinone/kunlun-mobile-dependencies": "6.3.0",
    "@oinone/kunlun-vue-mobile-base": "6.3.0",
    "@oinone/kunlun-vue-ui-mobile-vant": "6.3.0",
    "@oinone/kunlun-mobile-workbench": "6.3.0",
    "@oinone/kunlun-data-designer-core": "6.3.0",
    "@oinone/kunlun-data-designer-core-mobile": "6.3.0",
    "@oinone/kunlun-data-designer-core-pc": "6.3.0",
    "@oinone/kunlun-data-designer-open-mobile": "6.3.0",
    "@oinone/kunlun-data-designer-open-pc": "6.3.0"
}

镜像说明

所有镜像均使用docker manifest支持amd64arm64架构。
如镜像拉取过慢,可在对应镜像Tag添加-amd64-arm64后缀获取单一架构镜像。

docker pull harbor.oinone.top/oinone/oinone-designer-full-v6.3:6.3.0-amd64
docker pull harbor.oinone.top/oinone/oinone-designer-full-v6.3:6.3.0-arm64

镜像拉取

镜像或JAR版本:6.3.0

体验镜像:(所有中间件及前后端服务,包含全部设计器)

docker pull harbor.oinone.top/oinone/oinone-designer-full-v6.3:6.3.0

部署镜像:(包含前后端服务,包含全部设计器)

docker pull harbor.oinone.top/oinone/oinone-designer-mini-v6.3:6.3.0

流程设计器镜像:(包含前后端服务,仅包含流程设计器)

docker pull harbor.oinone.top/oinone/workflow-designer-v6.3:6.3.0

后端镜像:(仅包含后端服务,包含全部设计器)

docker pull harbor.oinone.top/oinone/designer-backend-v6.3:6.3.0

前端镜像:(仅包含前端服务,包含全部设计器)

PS:前端镜像版本为独立版本,与其他镜像版本不同。
原基础镜像为nginx-1.21.0版本,从5.0.7版本开始使用nginx-1.24.0版为基础镜像

docker pull harbor.oinone.top/oinone/designer-frontend-v6.3:6.3.0

独立部署所有设计器JAR:(后端服务,包含所有设计器)
pamirs-designer-boot-v6.3-6.3.0.jar
pamirs-designer-boot-v6.3-latest.jar

独立部署流程设计器JAR:(后端服务,仅包含流程设计器)
pamirs-workflow-designer-boot-v6.3-6.3.0.jar
pamirs-workflow-designer-boot-v6.3-latest.jar

后端无代码设计器Jar包启动方法

独立部署前端dist:(前端静态资源文件,包含所有设计器)
pamirs-designer-frontend-v6.3-6.3.0.tar.gz
pamirs-designer-frontend-v6.3-latest.tar.gz

前端部署资源包:(包含静态资源文件,manifest.js,nginx配置参考)
pamirs-designer-frontend-resources.zip

如果您有任何问题、建议或反馈,请随时联系我们。为了获得最佳体验,请及时更新至最新版本。我们将继续努力改进产品,提供更好的服务。谢谢!

Oinone社区 作者:张博昊原创文章,如若转载,请注明出处:https://doc.oinone.top/other/21695.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
张博昊的头像张博昊数式管理员
上一篇 1天前
下一篇 2024年5月23日 pm3:58

相关推荐

  • 如何使用源码的方式配置表达式

    自定义占位符定义表达式 数据权限定义表达式: ${thisTeacherName} 界面设计器查询条件定义:$#{thisTeacherName}需要加上#号 以上配置都可以通过查看queryWrapper里面的originRsql查看占位符是否被正确替换。 显隐、过滤条件表达式定义 显隐、过滤都可以加载字段注解里以及xml定义里 显隐: invisible="$!{activeRecord.deadline}" / invisible = true @Field.String @Field(displayName = "视图/页面", invisible = true) private String viewName; 过滤。 domain = " code == ${activeRecord.id} " / domain = "code == '111' " @Field.one2many @Field(displayName = "子订单列表", summary = "子订单列表") @Field.Relation(relationFields = {"code"}, referenceFields = {"code"}, domain = "code != '1234'") private List<ChildOrder> orderList; 更多获取视图数据的写法参考文章上下文在字段和动作中的应用 rsql表达式定义 参考:oinone的rsql与传统sql语法对照表

    2025年3月13日
    57700
  • 如何实现业务表格跳转页面设计器设计器页面

    后端实现 代理继承界面设计器视图模型 @Model.model(MyView.MODEL_MODEL) @Model(displayName = "视图代理") @Model.Advanced(type = ModelTypeEnum.PROXY) public class MyView extends UiDesignerViewProxy { public static final String MODEL_MODEL = "hr.simple.MyView"; @Field.Integer @Field(displayName = "页面布局ID") private Long uiDesignerViewLayoutId; } 重写查询接口,返回页面布局ID,重写创建接口,实现创建页面逻辑。 package pro.shushi.pamirs.top.core.action; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import pro.shushi.pamirs.boot.base.constants.ViewConstants; import pro.shushi.pamirs.boot.base.enmu.ActionTargetEnum; import pro.shushi.pamirs.boot.base.ux.annotation.action.UxAction; import pro.shushi.pamirs.boot.base.ux.annotation.action.UxRoute; import pro.shushi.pamirs.boot.base.ux.annotation.button.UxRouteButton; import pro.shushi.pamirs.framework.connectors.data.sql.Pops; import pro.shushi.pamirs.framework.connectors.data.sql.query.LambdaQueryWrapper; import pro.shushi.pamirs.meta.annotation.Action; import pro.shushi.pamirs.meta.annotation.Function; import pro.shushi.pamirs.meta.annotation.Model; import pro.shushi.pamirs.meta.api.dto.condition.Pagination; import pro.shushi.pamirs.meta.api.dto.wrapper.IWrapper; import pro.shushi.pamirs.meta.api.session.PamirsSession; import pro.shushi.pamirs.meta.constant.FunctionConstants; import pro.shushi.pamirs.meta.enmu.*; import pro.shushi.pamirs.top.api.model.MyView; import pro.shushi.pamirs.ui.designer.api.designe.UiDesignerViewLayoutService; import pro.shushi.pamirs.ui.designer.model.UiDesignerViewLayout; import pro.shushi.pamirs.ui.designer.pmodel.UiDesignerViewLayoutProxy; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @author Yexiu at 20:39 on 2025/3/27 */ @Component @Model.model(MyView.MODEL_MODEL) public class MyViewAction { @Autowired private UiDesignerViewLayoutService uiDesignerViewLayoutService; @Action.Advanced(name = FunctionConstants.create, managed = true) @Action(displayName = "创建", summary = "添加", bindingType = ViewTypeEnum.FORM) @Function(name = FunctionConstants.create) @Function.fun(FunctionConstants.create) public MyView create(MyView data) { UiDesignerViewLayoutProxy uiDesignerViewLayoutProxy = new UiDesignerViewLayoutProxy(); uiDesignerViewLayoutProxy.setBizType(data.getBizType()); uiDesignerViewLayoutProxy.setDesignerActionBarType(data.getDesignerActionBarType()); uiDesignerViewLayoutProxy.setViewType(data.getType()); uiDesignerViewLayoutProxy.setModel(data.getModel()); uiDesignerViewLayoutProxy.setModule(PamirsSession.getServApp()); uiDesignerViewLayoutProxy.setViewTitle(data.getTitle()); uiDesignerViewLayoutProxy.setUsingDefaultView(data.getLoadLayout()); UiDesignerViewLayoutProxy saveUiDesigner = uiDesignerViewLayoutService.create(uiDesignerViewLayoutProxy); data.setDesignerViewId(saveUiDesigner.getId()); return data; } @Function.Advanced(type = FunctionTypeEnum.QUERY, displayName = "查询列表") @Function.fun(FunctionConstants.queryPage) @Function(openLevel = {FunctionOpenEnum.API, FunctionOpenEnum.LOCAL}) public Pagination<MyView> queryPage(Pagination<MyView> page, IWrapper<MyView> queryWrapper) { LambdaQueryWrapper<MyView> wrapper = Pops.<MyView>lambdaQuery().from(MyView.MODEL_MODEL) .eq(MyView::getSys, Boolean.FALSE) .eq(MyView::getSystemSource, SystemSourceEnum.UI); Pagination<MyView> myViewPagination = new MyView().queryPage(page, wrapper); List<MyView> content…

    2025年3月31日
    24400
  • 工作流审批退回,撤销API

    审批退回API mutation { workflowUserTaskMutation { approveRejust( workflowUserTask: {id: 701530152718787758, userTaskViewName: "工作流任务待办xml_workflow", userTaskReadonlyViewName: "工作流任务待办detail_workflow", source: "超级管理员", statusDisplayName: "待处理", avatarUrl: "https://pamirs.oss-cn-hangzhou.aliyuncs.com/oinone/img/workflow/default.png", name: "测试流程", instanceId: 701530152718787737, taskId: 701530152718787756, definitionId: 701530152718787698, definitionVersion: 34, canAddSignApproval: false, content: null, nodeId: "APPROVAL0000000000014502", userType: USER_TYPE_USER, userId: 10001, model: "top.Teacher", nodeContext: "{\"id\":\"700755598316612629\",\"teacherName\":\"1234312\",\"readStatus\":\"NO_READ\",\"pamirsUser\":[]}", taskType: APPROVE, viewId: 701530152718787696, viewReadonlyId: 701530152718787697, taskCreateDate: "2025-01-22 14:31:12", flowCreateDate: "2025-01-22 14:30:50", allowTransfer: false, allowAddSign: false, allowFallback: true, allowStaging: true, allowAgree: true, allowReject: true, readConfirm: false, mustReason: false, isUrge: false, status: ACTIVE, filterAddSign: "id>=0 ", filterTransfer: "id>=0 ", hasFallback: true, workflowBackNode: {id: 701530152718787702, fallBackNodeName: "填写"}, filterFallBackNodeIds: "'WRITE0000000000014501'"} ) { id addSignUserId transferUserId workflowBackNodeId enableCustomView isCopy isRecall isClose isFallBack operateType workflowModule { id logo bitOptions attributes displayName sys name systemSource module sign abbr hash dsKey summary description state boot application latestVersion platformVersion publishedVersion publishCount defaultCategory category moduleDependencies moduleExclusions moduleUpstreams excludeHooks priority website author demo web license toBuy maintainer contributors url selfBuilt metaSource clientTypes show defaultHomePageModel homePageModel defaultHomePageName homePageName defaultLogo createDate writeDate createUid writeUid } module userTaskViewName userTaskReadonlyViewName source fromDepartment fromCorpName fromCorpLogo fromCorpId workflowVersion statusDisplayName helpDisplayName avatarUrl name title workflowUserInstanceId instanceId instance { id name title bizType source fromDepartment…

    2025年1月22日
    67500
  • Excel导出模块翻译值

    由于目前翻译资源导出只可以导出应用资源,无法导出模块资源,所以暂时提供以下方法导出模块资源。6.2.11、5.7.4.20 之前版本验证 方案一: 导出环境覆盖以下类 package pro.shushi.pamirs.translate.template.imports; import com.alibaba.fastjson.JSON; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import pro.shushi.pamirs.file.api.context.ExcelDefinitionContext; import pro.shushi.pamirs.file.api.entity.ExcelExportFetchDataContext; import pro.shushi.pamirs.file.api.extpoint.impl.DefaultExcelExportFetchDataExtPoint; import pro.shushi.pamirs.file.api.model.ExcelExportTask; import pro.shushi.pamirs.framework.connectors.data.sql.Pops; import pro.shushi.pamirs.framework.connectors.data.sql.query.LambdaQueryWrapper; import pro.shushi.pamirs.framework.connectors.data.sql.query.QueryWrapper; import pro.shushi.pamirs.meta.annotation.Ext; import pro.shushi.pamirs.meta.annotation.ExtPoint; import pro.shushi.pamirs.meta.annotation.fun.extern.Slf4j; import pro.shushi.pamirs.meta.api.Models; import pro.shushi.pamirs.meta.api.dto.wrapper.IWrapper; import pro.shushi.pamirs.meta.common.lambda.LambdaUtil; import pro.shushi.pamirs.meta.common.util.PStringUtils; import pro.shushi.pamirs.meta.constant.SqlConstants; import pro.shushi.pamirs.meta.domain.module.ModuleDefinition; import pro.shushi.pamirs.resource.api.enmu.TranslationApplicationScopeEnum; import pro.shushi.pamirs.resource.api.model.ResourceTranslation; import pro.shushi.pamirs.resource.api.model.ResourceTranslationItem; import pro.shushi.pamirs.translate.constant.TranslateConstants; import pro.shushi.pamirs.translate.proxy.TranslationItemExportProxy; import pro.shushi.pamirs.translate.service.TranslationDslNodeVisitor; import pro.shushi.pamirs.translate.template.TranslateTemplate; import pro.shushi.pamirs.translate.utils.UniversalParser; import java.util.*; import java.util.stream.Collectors; import static pro.shushi.pamirs.translate.constant.TranslateConstants.FIELD_TO_EXCLUDE; /** * @author Adamancy Zhang * @date 2020-11-04 18:09 */ @Slf4j @Component @Ext(ExcelExportTask.class) @SuppressWarnings({"unchecked"}) public class ResourceTranslationExportExtPoint extends DefaultExcelExportFetchDataExtPoint { private String resLangCodeColumn = PStringUtils.fieldName2Column(LambdaUtil.fetchFieldName(ResourceTranslationItem::getResLangCode)); private String langCodeColumn = PStringUtils.fieldName2Column(LambdaUtil.fetchFieldName(ResourceTranslationItem::getLangCode)); private String moduleColumn = PStringUtils.fieldName2Column(LambdaUtil.fetchFieldName(ResourceTranslationItem::getModule)); @Override @ExtPoint.Implement(expression = "context.name=="" + TranslateTemplate.TEMPLATE_NAME + "" && context.model=="" + ResourceTranslation.MODEL_MODEL + """) public List<Object> fetchExportData(ExcelExportTask exportTask, ExcelDefinitionContext context) { ArrayList<Object> objects = new ArrayList<>(); Map<String, Object> queryData = exportTask.getConditionWrapper().getQueryData(); TranslationItemExportProxy data = JSON.parseObject(JSON.toJSONString(queryData), TranslationItemExportProxy.class); LambdaQueryWrapper<TranslationItemExportProxy> queryWrapper = Pops.<TranslationItemExportProxy>lambdaQuery() .from(TranslationItemExportProxy.MODEL_MODEL) .eq(StringUtils.isNotBlank(data.getModule()), ResourceTranslationItem::getModule, data.getModule()) .eq(ResourceTranslationItem::getResLangCode, TranslateConstants.RES_LANG_CODE) .eq(StringUtils.isNotBlank(data.getLangCode()), ResourceTranslationItem::getLangCode, data.getLangCode()) .eq(data.getState() != null, ResourceTranslationItem::getState, data.getState()) .like(StringUtils.isNotBlank(data.getResLangInclude()), ResourceTranslationItem::getOrigin, data.getResLangInclude()) .like(StringUtils.isNotBlank(data.getTargetInclude()), ResourceTranslationItem::getTarget, data.getResLangInclude()); Map<String, String> moduleNameMap = Models.origin().queryListByWrapper(Pops.<ModuleDefinition>lambdaQuery() .from(ModuleDefinition.MODEL_MODEL) .eq(StringUtils.isNotBlank(data.getModule()), ModuleDefinition::getModule, data.getModule())) .stream() .collect(Collectors.toMap(ModuleDefinition::getModule, ModuleDefinition::getDisplayName, (_a, _b)…

    2025年8月21日
    11600
  • 自定义字段样式

    在日常开发中,我们经常会遇到需要根据业务规则动态展示字段样式的场景,比如表格、表单或详情中的某些字段需要改变文字颜色。本文将通过一个具体的案例,带大家实现这一功能。 以下以 自定义表格字段文字颜色 为例。 实现步骤 1. 在界面设计器中添加组件 通过界面设计器,添加一个组件 2. 创建元件 以表格的「金额字段」为例,创建对应的元件(可根据自己的业务场景调整)。 3. 配置元件属性 进入元件设计页面,从组件库中拖入「单行文本」到设计区域。在右侧属性面板中填写相关配置并保存 4. 保存元件 完成配置后,保存元件。 5. 发布元件 将元件发布,供页面设计使用。 6. 切换表格字段 进入页面设计器,将表格中的字段切换为刚刚创建的元件。 7. 配置字段颜色 在右侧属性面板中,配置字段的文字颜色: 固定颜色:直接输入颜色值(如 red)。 动态颜色:输入表达式,根据业务逻辑动态展示颜色。例如:当前行的名称等于 1 时显示红色,否则为蓝色。 示例表达式: activeRecord.name === '1' ? 'red' : 'blue' 8: 在代码中,自定义对应的表格字段 import { SPI, BaseFieldWidget, ModelFieldType, ViewType, TableCurrencyFieldWidget, Widget, RowContext, numberZeroFill, numberAddThousandth, Expression, ExpressionRunParam } from '@kunlun/dependencies'; import { toString } from 'lodash-es'; import { createVNode, VNode } from 'vue'; @SPI.ClassFactory( BaseFieldWidget.Token({ viewType: [ViewType.Table], ttype: [ModelFieldType.Currency], widget: 'TableCurrencyColor' }) ) export class TableCustomCurrencyFieldWidget extends TableCurrencyFieldWidget { computedFieldColor(context: RowContext) { const { fieldColor = ' ' } = this.getDsl(); if (!fieldColor) { return null; } // 如果当前颜色是表达式,则需要计算 if (Expression.hasKeywords(fieldColor)) { const params: ExpressionRunParam = { activeRecords: [context.data], rootRecord: {}, openerRecord: {}, scene: '' }; return Expression.run(params, fieldColor, fieldColor)!; } return fieldColor; } @Widget.Method() public renderDefaultSlot(context: RowContext): VNode[] | string { let value = numberZeroFill(toString(super.compute(context)), this.getPrecision(context)); if (this.getShowThousandth(context)) { value = numberAddThousandth(value); } return [ createVNode( 'div', { style: { color: this.computedFieldColor(context) } }, value ) ]; } } 9: 页面效果图

    2025年1月9日
    4.5K00

Leave a Reply

登录后才能评论