Blazor开发框架Known-V2.0.9

news2024/11/26 2:46:09

V2.0.9

Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。本次版本主要是修复一些BUG和表格页面功能增强。

  • 官网:http://known.pumantech.com
  • Gitee: https://gitee.com/known/Known
  • Github:https://github.com/known/Known

概述

  • 基于C#Blazor的快速开发框架,开箱即用,跨平台。
  • 模块化,单页应用,混合桌面应用,Web和桌面共享一处代码。
  • UI默认支持AntDesign,可扩展其他UI组件库。
  • 包含模块、字典、组织、角色、用户、日志、消息、工作流、定时任务等功能。
  • 低代码、简洁、易扩展,让开发更简单、更快捷!

特性

  • 快速开发:基于Blazor,在线表单设计,自动生成代码
  • 通用权限:内置通用权限模块,只需专注业务功能
  • 国际化:提供完备的国际化多语言解决方案
  • 抽象UI:抽象UI层,易扩展,支持Ant Design
  • 最佳实践:低代码,一人多角色,沟通高效,成本最低
  • C#语言:全量使用C#进行全栈开发

如果对您有帮助,点击⭐Star⭐关注 ,感谢支持开源!

更新日期

  • 2024-08-22

更新内容

  • 🐛修复DataReader转字典报错问题
  • 😄AntBlazor升级至V0.20.2
  • 🐛修复实体类表单确定继续主键重复问题
  • 🐛修复打开新增表单克隆默认实体只读属性报错问题
  • 🔨优化无代码表单界面无法验证和输入字符减少问题
  • 😄添加支持WebApi项目
  • 😄表格排序和默认排序方式设置
  • 😄表格页面添加默认分页大小设置
  • 😄表格查询条件支持默认值
  • 😄分页查询支持数据统计
  • 😄数据字典类别支持修改和删除
  • 🐛修复SqlSugar日期查询条件问题
  • 🔨优化多语言设置

详细内容

1. 内置功能增强

  • 数据字典类别支持修改和删除

image

2. 表格功能增强

  • 表格排序和默认排序方式设置
  • 表格页面添加默认分页大小设置

image

  • 表格查询条件支持默认值
//在OnPageInitAsync方法中设置DefaultQuery对象,对象属性为实体类属性
//注意:一定要在await base.OnPageInitAsync();之前设置
protected override async Task OnPageInitAsync()
{
    var date = DateTime.Now.ToString("yyyy-MM-dd");
    DefaultQuery = new { CreateTime = $"{date}~{date}" };
    
    await base.OnPageInitAsync();
    Service = await CreateServiceAsync<ISystemService>();

    Table.OnQuery = Service.QueryLogsAsync;
    Table.Column(c => c.Type).Template((b, r) => b.Tag(r.Type));
}

image

  • 分页查询支持数据统计,统计支持SQL函数和SQL表达式
//前端,在OnPageInitAsync中设置TopStatis模板,查询数据时根据后端返回结果自动刷新
protected override async Task OnPageInitAsync()
{
    await base.OnPageInitAsync();
    Service = await CreateServiceAsync<IApplyService>();

    Table.FormType = typeof(ApplyForm);
    Table.OnQuery = Service.QueryApplysAsync;
    Table.TopStatis = this.BuildTree<PagingResult<TbApply>>((b, r) =>
    {
        var sb = new System.Text.StringBuilder();
        sb.Append("<div style=\"padding-left:10px;color:#108ee9;\">");
        sb.Append($"总数:<span style=\"font-weight:bold\">{r?.TotalCount}</span>,");
        sb.Append($"撤回:<span style=\"font-weight:bold\">{r?.Statis?.GetValue<int>("RevokeCount")}</span>,");
        sb.Append($"待审核:<span style=\"font-weight:bold\">{r?.Statis?.GetValue<int>("VerifingCount")}</span>,");
        sb.Append($"审核通过:<span style=\"font-weight:bold\">{r?.Statis?.GetValue<int>("PassCount")}</span>,");
        sb.Append($"审核退回:<span style=\"font-weight:bold\">{r?.Statis?.GetValue<int>("FailCount")}</span>");
        sb.Append("</div>");
        b.Markup(sb.ToString());
    });
    Table.Column(c => c.BizStatus).Template((b, r) => b.Tag(r.BizStatus));
}

//后端,设置查询条件StatisColumns统计栏位属性,支持Function和Expression
    internal static Task<PagingResult<TbApply>> QueryApplysAsync(Database db, PagingCriteria criteria)
    {
        var sql = @"select a.*,b.BizStatus,b.CurrStep,b.CurrBy,b.ApplyBy,b.ApplyTime,b.VerifyBy,b.VerifyTime,b.VerifyNote 
from TbApply a,SysFlow b 
where a.Id=b.BizId and a.CompNo=@CompNo";
        criteria.StatisColumns = [
            new StatisColumnInfo { Id = nameof(TbApply.Id), Function = "count" },
            new StatisColumnInfo { Id = "RevokeCount", Expression = $"sum(case when BizStatus='{FlowStatus.Revoked}' then 1 else 0 end)" },
            new StatisColumnInfo { Id = "VerifingCount", Expression = $"sum(case when BizStatus='{FlowStatus.Verifing}' then 1 else 0 end)" },
            new StatisColumnInfo { Id = "PassCount", Expression = $"sum(case when BizStatus='{FlowStatus.VerifyPass}' then 1 else 0 end)" },
            new StatisColumnInfo { Id = "FailCount", Expression = $"sum(case when BizStatus='{FlowStatus.VerifyFail}' then 1 else 0 end)" }
        ];
        return db.QueryPageAsync<TbApply>(sql, criteria);
    }

image

3. WebApi项目

  • 添加支持WebApi项目,在项目Program中AddKnown和AddKnownCore
builder.Services.AddKnown(info =>
{
    info.Id = "API";
    info.Type = AppType.WebApi;//App类型设为WebApi
});
builder.Services.AddKnownCore(info =>
{
    //数据库连接
    info.Connections = [new Known.ConnectionInfo
    {
        Name = "Default",
        DatabaseType = DatabaseType.SQLite,
        ProviderType = typeof(Microsoft.Data.Sqlite.SqliteFactory),
        ConnectionString = builder.Configuration.GetSection("ConnString").Get<string>()
    }];
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2063365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是蒙太奇谎言

蒙太奇谎言&#xff0c;可以理解为不表述全部事实&#xff0c;而是进表达部分事实&#xff0c;让听众形成错误的观点。 比如&#xff0c;某X国家队水平很差&#xff0c;从来没进入过世界杯。 可以这样说&#xff1a;世界足球强国巴西&#xff0c;从来没在世界大赛上赢过X国家队…

C++构造数据类型|枚举类型

C构造数据类型|枚举类型 1. 枚举类型1.1 函数重载的定义1.2 枚举类型的声明1.3 例1&#xff1a;1.4 例2&#xff1a; 2. 枚举类型的定义说明3. 枚举类型的使用3.1 枚举变量的赋值3.2 枚举变量的运算3.3 枚举变量的输入3.4 注意事项 4 示例代码 1. 枚举类型 1.1 函数重载的定义…

cdr工具介绍之刻刀工具

在日常的生活当中&#xff0c;在很多时候我们会遇到各种各样的难题&#xff0c;但软件cdr他就是一个神奇的存在&#xff0c;因为他能帮助我们解决很多专业方面的的知识。尽管他的内容相比较其他的一些设计软件而言相对于较为少&#xff0c;但是他确实一个非常适合于平常的工作学…

arthas源码刨析:arthas-core (2)

文章目录 attach JVMagent**ArthasBootstrap** arthas-core的启动可以从上一篇做参考 参考 pom&#xff0c;即启动是调用的 Arthas 的 main 方法 attach JVM JVM提供了 Java Attach 功能&#xff0c;能够让客户端与目标JVM进行通讯从而获取JVM运行时的数据&#xff0c;甚至可以…

算法-矩阵置零(73)

leetcode题目链接 这道题因为要求在O&#xff08;1&#xff09;的空间复杂度下面完成&#xff0c;所以最好的情况就是利用矩阵本身有的元素进行代码编写&#xff0c;而不另外开辟空间。 所以思路如下&#xff1a; 1.遍历第一行第一列&#xff0c;观察是否需要置0&#xff0c…

【面试实战】2024-08-22-面试总结

文章目录 1. 讲讲内存管理2. 什么是智能指针&#xff1f;有哪些种类&#xff1f;分别应用于哪些场景&#xff1f; 1. 讲讲内存管理 栈和堆的区别&#xff1a; ①栈和堆都是用来存储程序数据的内存区域。栈上的内存区域是有限的&#xff0c;栈用来存储局部变量和函数的调用信息。…

史上最强座舱AI芯登场,座舱「百模大战」爆发前夜

作者 |张马也 编辑 |德新 一场座舱大模型的竞赛&#xff0c;正在拉开序幕。 8月&#xff0c;英特尔在深圳举办AI座舱产品暨车载独立显卡发布会上。 会上&#xff0c;其发布了首款锐炫车载独立显卡ARC A760-A&#xff0c;这在已经高度内卷的座舱市场&#xff0c;又投下一颗重…

微软发布 Phi-3.5 系列模型,涵盖端侧、多模态、MOE;字节 Seed-ASR:自动识别多语言丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

DatePicker 两个日期选择框的时间范围设置不可选日期

思路 截至时间的不可选择日期&#xff0c;通过监听开始时间&#xff0c;生成

tp5php7.4配置sqlserver问题汇总

先修改database.php文件 查看php版本选择sqlserver扩展 通过百度网盘分享的文件&#xff1a;sqlserver 链接&#xff1a;https://pan.baidu.com/s/1zrIV8VWQZM9miLpyH01Aww?pwdxdgx 提取码&#xff1a;xdgx 通过我的分享链接复制自己需要的dll到php的ext下 在php.ini里添加扩…

电子看板助力线缆工厂生产数字化改善

在当今数字化时代&#xff0c;线缆工厂面临着日益激烈的市场竞争和不断提高的客户需求。为了提高生产效率、降低成本、提升产品质量&#xff0c;越来越多的线缆工厂开始引入电子看板系统&#xff0c;实现生产数字化改善。 一、线缆工厂生产面临的挑战 1、生产过程复杂 线缆生产…

【与C++的邂逅】--- 类和对象(中)

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 与C的邂逅 本篇博客我们将学习类和对象中&#xff0c;认识类的六个默认成员函数以及实现日期类。下图为本节思维导图。 &#x1f3e0; 类的6个默认成员函…

云渲染助力:轻松应对UE5的高电脑配置需求

UE5以其革命性的图形和模拟技术&#xff0c;不断推动游戏和视觉艺术的边界&#xff0c;但对高端硬件的依赖往往成为创意实现的瓶颈。幸运的是&#xff0c;云渲染的出现打破了这一限制。通过云端的强大计算资源&#xff0c;云渲染为艺术家和开发者提供了灵活、可扩展的解决方案&…

个人理解—uboot启动过程(2)BL1低级初始化

lowlevel_init看名字就知道是关于初级方面的初始化&#xff0c;其中可用将其干的事情分为11个步骤&#xff1a; &#xff08;1&#xff09;push {lr} 也就是lr压栈。 &#xff08;2&#xff09;检测复位状态&#xff1a;如冷上电、热启动、睡眠等。冷上电要初始化DDR后才能使用…

无线电子产品前端射频设计注意事项

1 引言 1.1 编写目的 整理带无线的产品RF部分对外壳及PCBA设计注意事项&#xff0c;主要目的是为设计者提供一些参考&#xff0c;提高无线产品的设计质量和效率、保证可生产性。 1.2 背景 RF布局是射频电路设计极为重要的步骤和环节&#xff0c;关系到射频信号能否有效的工…

房产系统架构开发小程序分析

房产系统架构开发小程序在当前市场中具有显著的优势和潜力。以下是对房产小程序的分析&#xff1a; 用户需求满足&#xff1a;房产小程序通过提供楼盘信息查询、VR看房体验、购房流程指南等功能&#xff0c;满足用户对房产信息的需求&#xff0c;并提供更加便捷的用户体验 。…

第4章 汇编语言和汇编软件

第4章 汇编语言和汇编软件 该章主要介绍了汇编语言和汇编语言编译器的安装和使用。 汇编语言程序 该小节主要介绍了为什么要有汇编语言和汇编语言程序的一些基础写法。 书中有提到CPU有不同的架构&#xff0c;汇编语言有不同的风格&#xff0c;那么不同的CPU架构和不同的汇…

线上陪玩APP开发功能分析

随着电子竞技和在线娱乐的兴起&#xff0c;线上陪玩APP作为一种新兴的服务模式&#xff0c;逐渐受到广大游戏爱好者的青睐。开发一款高效、便捷、用户友好的线上陪玩APP&#xff0c;需要综合考虑市场调研、功能规划、技术选型、用户体验及安全性等多个方面。以下是对线上陪玩AP…

matter模组有无源测试事例

测试一款matter模组的硬件性能 1.1 天线阻抗、电压驻波比测试 主要测试&#xff1a;PCB板载天线设计效率及板材PCB铜面的平整度等 1.2 模组有源数据测试 主要测试&#xff1a;模组的阻抗匹配、频偏等情况 1.3 模组传输能量精度 主要测试&#xff1a;矢量误差等数据 1.4 模…

PCL “libvtkCommonCore-9.1.so.9.1.0: undefined reference to...@GLIBCXX_3.4.30”

1.问题描述&#xff1a; 完成 PCL、VTK 搭建后(https://mp.csdn.net/mp_blog/creation/editor/139858438)&#xff0c;笔者运行PCL项目程序中&#xff0c;遇到下面错误&#xff1a; [build] /usr/bin/ld: /usr/lib/x86_64-linux-gnu/libvtkCommonCore-9.1.so.9.1.0: undefine…