阅读目录
简介
ligerRM V2是基于 ligerui的web应用系统。以权限管理作为设计重点,引入Northwind作为主要的数据演示模块。权限方面,在上一个版本的基础上面加多了数据权限控制。后台方面采用dot net 3.5框架开发。
- 系统演示:http://case.ligerui.com
- 前台插件:jQuery、jQuery.ligerui、jQuery.form.js、jquery.validation
- 数据交互:liger.Data(一个小型的ORM组件)
- 源码下载:ligerRMV2
演示账户:
账户
|
名字
|
头衔
|
密码
|
test3
|
录入员1
|
基础数据录入员1
|
1
|
test2
|
录入员2
|
客户数据录入员2
|
1
|
test1
|
高级演示账号1
|
高级演示账号1
|
1
|
test4
|
订单查看员1
|
订单查看员1 - Sales Representative
|
1
|
test5
|
供应商1
|
供应商1 - Exotic Liquids44
|
1
|
系统特色
1,不采用code-behind机制,不使用任何服务器控件,全面将工作放在前台实现,后台只处理数据部分。页面还是用aspx后缀,继承于统一的页面基类(为了方便权限的控制)。
2, 极大得避免代码冗余。无论是列表页面还是明细页面,你看到的代码都是极其简洁的,就算是表单,甚至不需要任何的html代码,而是定义【有用的信息】,对【布局】、【数据】有用的 【数据结构】,当然表格、搜索框 都是如此。
3,统一的数据提交/接收接口,所有的数据请求通过ajax实现,经过 handler/*.ashx处理,针对前台数据请求类型的不同,一共有6个:
ajax.ashx ---- 通用的数据请求入口(表单提交入口、表单加载入口、常用的数据加载入口等等)
grid.ashx ---- 通用的ligerGrid表格数据加载入口
treegrid.ashx ---- 通用的ligerGrid表格树格式数据加载入口
tree.ashx ---- 通用的ligerTree树格式数据加载入口
select.ashx ---- 通用的ligerComboBox数据加载入口
validate.ashx ---- 通用的验证数据验证入口(针对jQuery.validation remote验证)
4,完善的数据权限控制机制。除了基本的 (用户角色) => (模块功能) 这类的功能权限控制,还在数据请求入口做了一点小动作,根据【当前的用户信息】和【配置好的数据权限规则】筛选过滤数据。
5,自动的搜索框、自动的表单。 表单和搜索框不再需要一堆复杂冗余的html,而是定义好字段的信息(字段名、宽度、类型等)就可以自动完成页面的构造。
6,自动的表格,同样地表格也只是需要一些配置信息,就可以自动完成。并利用过滤器插件,拥有高级自定义查询功能,和历史查询功能。
系统介绍 - 首页
带权限控制的模块
加载首页时,系统会根据用户的信息加载权限许可的菜单模块:
系统介绍 - 列表页(配置的搜索框、表格、动态的按钮(权限控制))
搜索框、表格不再是一堆html拼出来,而是只定义了与【布局】和【数据】配置信息的。
操作按钮是根据当前页面的权限控制,加载有权限许可的操作按钮。
具体的做法是判断页面的MenuNo(菜单唯一编码),根据MenuNo和当前用户信息加载权限许可的按钮,MenuNo的获取规则:
优先级一:如果页面定义了ID为“MenuNo”的隐藏域,那么读取这个隐藏域的值,比如:<ipnut type="hidden" id="MenuNo" value="OrderManageOrders" />
优先级二:根据页面URL的QueryString,Name为MenuNo的值
优先级三:根据页面URL进行匹配,/OrderManage/Orders.aspx,MenuNo就是OrderManageOrders
界面效果:
相关代码:
搜索框表单元素并不是都以文本框的形式,而是支持日期、下拉框等等类型,这些编辑器是可以扩展的,理论上是通用的。比如发货城市,可以配置为下拉框选择:
display: "城市", name: "ShipCity", newline: true, labelWidth: 100, width: 220, space: 30, type: "select", cssClass: "field", options:{ url: "../handler/select.ashx?view=Orders&idfield=ShipCity&textfield=ShipCity&distinct=true" }
系统介绍 - 明细页(自动创建表单、表单自动加载、表单提交)
表单应该包括三个部分,表单结构、表单数据、表单提交 :
表单结构:为了样式的统一,代码的简洁,表单同样也是通过“配置”出来的(利用了ligerForm插件)
表单数据:通过指定一个视图/表名、主键字段名、主键值加载到一条记录以后,利用JS访问每一个属性加载到相应的控件上面,并更新控件的样式。
表单提交:利用jquery.validate做表单验证,利用jQuery.form.js做ajax提交数据
说明两点:
1,更新控件的样式:表单的文本框、下拉框都是用ligerui内置的表单元素组件,这些组件都有updateStyle方法,就是当值改变时,界面上面没有及时反应,可调用这个方法
2,表单提交的统一入口是ajax.ashx,我们会传入type和method,利用反射的机制找到相应的方法,将请求的数据(Request.Form)传给那个方法。比如增加订单的签名:AjaxResult AddOrders(NameValueCollection form)
界面如下:
系统介绍 - 菜单/按钮
菜单的编辑保存,采用表格【行编辑】模式,并且支持提交前验证,图标在dialog中选取,使得操作更加简单。
按钮的编辑模式同菜单一样,采用表格的【行编辑模式】。对应字段信息不多的,我也比较推荐这种方式,而不是再打开一个页面。
如果需要全表格同时编辑,那么可以采用表格的【单元格编辑模式】,比如系统中【订单编辑页-订单明细表格】
系统介绍 - 权限中心
设计思想同上一个版本一样,采用 【用户】、【角色】 =》 【模块】、【功能】 的权限控制。不清楚的朋友可以参考我之前的一篇介绍:《通用权限管理设计 之 数据库结构设计》
在界面上仅仅只是用了一个页面,就完成了全部的权限控制,操作很简洁。设计规则上,角色可以授权权限许可。而用户,是在角色的基础上面,单独设置为许可、或者禁止。
可以单独给用户设置权限(许可或者禁止)
系统介绍 - 数据权限
这个版本新增的功能,可以在功能权限(上面提到的)的基础上进一步的权限控制扩展,比如销售员只能查看到自己的销售订单。
使用了ligerFilter过滤器插件,这是一个通用条件查询组件。可以自定义编辑器的类型,如下图选择角色的下拉框。
下图是编辑页面,定义了数据权限规则:【订单查看员只能查看自己的】、【订单管理员和演示角色可以看到全部的】。
管理员永远不会受到数据权限的限制
注意到有5个可选择的用户信息参数,根据业务需求这里可以扩展
5个用户信息参数在组织最终的数据库执行语句时将会返回以下的匹配关系,这里是可以很好地扩展的。
数据权限的限制总是:{字段名 条件 允许值}
下图列出了订单表的所有字段,并且加入几个用户参数方便做权限的具体分配。
利用ligerFilter编辑器可自定义的特性,这里当前用户信息可以在下拉框中选择,你甚至可以改成在弹出窗口中选择。
系统介绍 - 字段权限
如果说数据权限是对功能权限在纵向的扩展,那么字段权限就是在横向的扩展。可以禁止指定用户/角色 对某些字段的访问,这个功能同样是本版本增加的:
系统介绍 - 下拉框应用细节
下拉框在系统中的应用都很经典,比如下拉框树,下拉框表格,下拉框在弹出窗口中选取数据。这里介绍几个应用的细节
用户在部门树中选择:
实则上系统针对下拉框选取数据的各种情况都通用化了,只需要简单的配置信息就可以实现在指定数据源中选择,比如上图,只需要这样配置:
上图是下拉框树的实例,再看看普通下拉框的:
这两种情况都是加载全部数据的,如果下拉框的数据来源很大,我们当然不想在一次性加载全部数据中,而是可以在弹出的、分页的、可过滤的表格中选取数据,这样会让表单的应用变得更加人性化。基于这种需求,在这个系统对下拉框插件中扩展了openSelect方法,只需要指定grid的配置参数,search的配置参数(可选),返回的字段名,就可以快速实现这个应用。可以参考系统中【订单中选择客户】、【产品中选择供应商】。
Code:
结语
这个版本对于【增删改】常用的操作封装得更加彻底,大大强化了客户端javascript的处理能力,而服务器端只是起到数据处理的作用。
系统中大量使用了grid、tree以及各种表单插件,更大程度地展示了ligerui的很多功能的使用。
还有很多的细节和使用技巧,比如订单明细编辑表格中引入产品、Tab选项延时加载。都有待你的体验和建议。
相关推荐
ligerRM V2是基于 ligerui的web应用系统。以权限管理作为设计重点,引入Northwind作为主要的数据演示模块。权限方面,在上一个版本的基础上面加多了数据权限控制。后台方面采用dot net 3.5框架开发。
ligerRM V2是基于 ligerui的web应用系统。以权限管理作为设计重点,引入Northwind作为主要的数据演示模块。权限方面,在上一个版本的基础上面加多了数据权限控制。后台方面采用dot net 3.5框架开发。 系统演示:...
# 基于OpenTelemetry的GPS设备监控项目 ## 项目简介 这是一个基于OpenTelemetry的GPS设备监控项目,旨在收集GPS设备的定位和运动数据,并通过OpenTelemetry协议发送到指定的接收端。本项目主要面向开发人员和对GPS监控感兴趣的用户。 ## 项目的主要特性和功能 1. 实时数据收集实时收集GPS设备的定位数据,包括经度、纬度、速度等信息。 2. 多传感器支持集成加速度计等其他传感器,收集更丰富的运动数据。 3. 数据传输通过OpenTelemetry协议将数据发送到接收端,支持多种数据传输方式。 4. 可视化界面具有可视化界面,可实时查看设备位置和运动数据。 5. 硬件兼容性支持多种硬件平台,具有良好的可扩展性和兼容性。 ## 安装使用步骤 1. 复制代码复制本项目代码并导入到Arduino或其他支持的微控制器开发环境。 2. 配置参数配置WiFi连接和OpenTelemetry接收端的参数。
网络安全:实验四:IKE实验(Cisco仿真-注意版本号,版本不一致打不开)
内容概要:本文详细介绍了模块化多电平变换器(MMC)在380V交流到800V直流转换中的仿真搭建过程及其关键技术。首先解释了MMC的基本原理,包括子模块的结构和工作方式。接着探讨了环流抑制的方法,通过模型预测控制和其他控制策略减少不必要的损耗和提高系统稳定性。此外,讨论了相间均能和电容均压的技术手段,确保系统的功率均衡和电压一致性。最后,描述了具体的仿真搭建步骤,包括电路拓扑的选择、参数设定、控制策略实现以及仿真结果分析。文中还提供了详细的仿真介绍文档和参考文献,帮助读者更好地理解和应用这些技术。 适合人群:电力电子领域的研究人员和技术人员,尤其是对MMC仿真感兴趣的初学者和有一定基础的研究者。 使用场景及目标:适用于希望深入了解MMC工作原理及其仿真技术的人群。主要目标是掌握MMC的仿真搭建方法,理解环流抑制、相间均能和电容均压等关键技术的应用,最终能够独立完成类似的仿真项目。 其他说明:文章不仅提供了理论知识,还包括了大量的代码示例和具体的操作指南,使读者能够在实践中验证所学内容。同时,提供的参考文献有助于进一步深入研究相关课题。
题目:非接触式转速测量仪 主控:STM32 显示屏:Oled 电机驱动:L298 电机(带编码器可测速的三线电机) 按键(增速或者减速等)
内容概要:本文详细介绍了基于MCU的固件加锁系统,涵盖上位机和设备端的实现细节。上位机部分使用C#和Python实现了多线程并行处理框架,能够高效地管理和监控多个设备的同时加锁操作。设备端代码采用C语言编写,实现了闪存写保护、状态机控制以及通信协议设计,确保加锁过程的安全性和可靠性。文中还讨论了硬件抽象层的移植性、通信协议的优化、密钥处理的安全措施等问题,并分享了实际应用中的经验和技巧。 适合人群:嵌入式系统开发人员、MCU固件工程师、硬件安全研究人员。 使用场景及目标:适用于需要批量处理固件加锁的生产环境,如智能锁具、水表等产品的生产线。目标是提供一种轻量级、高效的固件保护方案,防止未经授权的固件烧录和逆向工程。 其他说明:文中提供了详细的代码片段和技术细节,帮助读者理解和实现类似的固件加锁系统。强调了安全性、稳定性和易移植性的设计原则。
房地产培训 -物业客服礼仪培训.ppt
智慧城管,作为现代城市管理的新模式,正以其独特的魅力引领着城市管理方式的深刻变革。这一解决方案融合了物联网、云计算、大数据等前沿技术,为城市打造了一套高效、智能、全面的管理体系。 想象一下,城市的每一个角落都被智能感知设备所覆盖,从街道的监控摄像头到井盖下的传感器,它们就像城市的神经末梢,实时收集着城市运行的点点滴滴。这些数据通过高速网络汇聚到智慧城管平台,经过大数据分析处理,为管理者提供了精准的决策支持。无论是违规停车的自动抓拍,还是公共设施损坏的及时预警,智慧城管都能迅速响应,让城市管理变得更加主动、高效。 更令人兴奋的是,智慧城管不仅提升了管理效率,还极大地丰富了服务手段。市民可以通过手机APP一键上报问题,从路灯不亮到井盖丢失,各种问题都能得到快速处理。同时,智慧城管平台还整合了城市服务资源,如网上办事大厅、公共信息查询等,让市民享受到了更加便捷、高效的城市服务。此外,智慧城管还通过大数据分析,为城市规划、交通管理、环境保护等领域提供了科学依据,助力城市可持续发展。 总之,智慧城管综合解决方案以其先进的技术、丰富的功能和卓越的性能,为城市管理注入了新的活力。它不仅让城市管理变得更加智能、高效,还极大地提升了市民的幸福感和满意度。对于致力于提升城市管理水平的城市管理者来说,智慧城管无疑是一个值得深入研究和推广的解决方案。
# 基于C++编程语言的智能家居控制系统 ## 项目简介 本项目是一个基于C++编程语言的智能家居控制系统,旨在通过Arduino平台实现对家居设备的智能控制,包括气候控制、安全警报、门禁系统等功能。通过WiFi连接和MQTT协议,实现了对家中环境参数的监控和调整,以及通过RFID识别和MQTT消息处理实现基本的家居自动化功能。 ## 项目的主要特性和功能 1. 气候控制通过DHT传感器监控客厅、厨房和卧室的温度和湿度,并根据设定的目标值自动调整室内环境。 2. 安全警报通过红外人体感应器和磁传感器监测家中的异常情况,如入侵或门窗未关,并通过RGB灯和MQTT消息通知用户。 3. 门禁系统通过RFID识别和键盘输入实现身份验证,控制门的开启和关闭。 4. OLED显示在OLED屏幕上显示当前时间、温度、湿度等信息,提供用户友好的交互界面。 5. MQTT通信使用MQTT协议与服务器通信,实现消息的发布和订阅,便于远程控制和日志记录。
# 基于Spring Boot的数据交易平台 ## 项目简介 本项目是一个基于区块链技术的数据交易与鉴权平台,名为“DataMall”。它提供了一个安全、可靠的环境,用于数据的交易和鉴权,确保数据的完整性和安全性。平台采用Spring Boot作为后端开发框架,结合MyBatis Plus进行数据库操作,支持支付宝支付和阿里云OSS存储服务。 ## 项目的主要特性和功能 1. 用户管理包括用户注册、登录、找回密码、账号信息查询等功能。 2. 商品管理用户可以发布、修改、删除商品,管理员可以冻结或解冻商品。 3. 订单管理用户可以提交订单、支付订单,管理员可以查询订单详情。 4. 权限管理管理员可以管理角色和权限,确保系统的安全性和可控性。 5. 支付功能集成支付宝支付功能,支持用户在线支付。 6. 文件存储使用阿里云OSS进行文件存储,确保数据的安全性和可靠性。
内容概要:本文详细介绍了VIC水文模型的径流模拟方法,涵盖从环境搭建、数据预处理到模型参数率定的全过程。首先讲解了如何使用Python进行土壤分层、能量平衡计算以及产流计算的具体实现,接着分享了模型执行流程的关键步骤,如气象数据处理、参数配置和优化技巧。文中还提供了许多实际操作中的经验和技巧,帮助初学者避开常见陷阱。最后强调了模型可视化验证的重要性,并给出了具体的代码示例。 适合人群:对水文学感兴趣的研究人员、学生以及希望深入了解水文模型应用的技术爱好者。 使用场景及目标:适用于希望通过Python实现VIC水文模型径流模拟的学习者,旨在帮助他们掌握从理论到实践的完整流程,提高模型构建能力和数据分析水平。 其他说明:作者结合自身实践经验,提供了一系列实用的操作指南和技术细节,使读者能够更好地理解和应用VIC水文模型。
452047732824847酒店民宿预订管理系统(含12个月预订明细)1.xlsx
内容概要:本文详细介绍了如何复现2023年发表于《Science》的论文 'Extreme ultraviolet metalens by vacuum guiding' 中提出的极紫外超透镜设计。文章涵盖了硅-空气纳米柱结构的传输相位计算、理想相位分布的构建、FDTD仿真步骤及其结果分析。通过Matlab和Python代码示例,展示了如何计算不同纳米柱半径对应的传输相位,并利用FDTD仿真验证设计的有效性。此外,文中还讨论了仿真过程中遇到的问题及解决方法,如相位库构建、相位梯度约束、倏逝波修正等。 适合人群:从事光学、特别是极紫外光学领域的研究人员和技术人员,以及对超透镜设计感兴趣的科研工作者。 使用场景及目标:①理解和掌握极紫外超透镜的设计原理;②通过FDTD仿真验证设计方案;③拓展应用于其他极紫外光学器件的设计,如极紫外全息和涡旋光生成器。 其他说明:文章不仅提供了详细的代码示例,还分享了许多实用的仿真技巧和实践经验,有助于提高极紫外光学系统的性能。
内容概要:本文详细介绍了利用粒子群算法(PSO)在Matlab中设计宽带消色差超透镜的方法及其FDTD仿真验证。首先,通过定义合理的初始参数范围和适应度函数,将超透镜的纳米结构参数(如纳米柱的直径、高度、周期)作为粒子的位置,采用PSO进行优化。适应度函数结合了预存的相位延迟查找表和实时FDTD仿真结果,确保优化过程中能够高效评估不同结构参数的效果。文中还讨论了惯性权重的动态调整、震荡因子的引入以及适应度函数中物理约束的添加,以提高优化效果并防止陷入局部最优。最终,通过FDTD仿真验证优化结果,展示了在可见光波段内的聚焦效率和焦斑尺寸的改进。 适合人群:从事光学设计、超材料研究、电磁仿真领域的科研人员和技术开发者。 使用场景及目标:适用于需要设计高性能宽带消色差超透镜的研究项目,旨在通过粒子群算法优化超透镜结构参数,减少色差并提高聚焦效率。 其他说明:文中提供了详细的Matlab代码片段和FDTD仿真设置示例,帮助读者更好地理解和实施该方法。此外,强调了在实际应用中需要注意的参数选择和物理约束,以确保设计方案的可行性和有效性。
内容概要:本文详细介绍了700张道路裂纹语义分割数据集的构成及其应用场景。数据集采用VOC格式,包含原图、mask二值图和标注文件。文中提供了处理mask、标注以及数据集划分的方法,并讨论了如何将这些数据用于训练分割网络,如UNet。此外,还探讨了数据增强技术和损失函数的选择,以应对数据量不足和类别不平衡的问题。最后,介绍了滑动窗口预测方法,确保大尺寸图像的边缘处理更加平滑。 适合人群:从事计算机视觉、图像处理领域的研究人员和技术开发者,尤其是关注道路维护和安全监测的人群。 使用场景及目标:适用于需要进行道路裂纹检测的应用场景,如城市基础设施维护、自动驾驶车辆的安全检测等。主要目标是提高裂纹检测的准确性,优化模型性能,提升检测效率。 其他说明:文中提供的代码片段和技巧有助于初学者快速上手语义分割任务,同时也为经验丰富的研究者提供了优化模型的具体思路。
# 基于MSP430G2553微控制器的多功能应用平台 ## 项目简介 本项目是一个基于MSP430G2553微控制器的多功能平台。集成多种硬件模块,如超声波传感器、七段LED显示器、蓝牙通信、ESP8266 WiFi模块等,并提供对应驱动和函数库,用于实现复杂控制和应用。 ## 项目的主要特性和功能 1. 丰富的硬件接口借助MSP430G2553微控制器的GPIO、ADC、PWM等接口,与各类硬件模块通信和控制。 2. 模块化设计将硬件接口、驱动、应用等功能分离,便于扩展和维护。 3. 齐全的功能涵盖超声波距离测量、LED显示、蓝牙通信、WiFi连接等多种功能。 4. 高效的中断处理利用MSP430G2553的硬件中断处理功能,实现高效的数据接收和响应。 5. 数据处理优化使用环形缓冲区处理接收到的数据,提升数据处理效率。 6. 清晰的代码结构代码结构清晰,易于理解和修改,适合嵌入式系统开发。 ## 安装使用步骤
# 基于megaTiny和nRF24L01+的无线BootLoader ## 项目简介 本项目是一个基于megaTiny系列微控制器(如ATtiny1614)和nRF24L01+无线模块的BootLoader实现。它允许用户通过无线方式对嵌入式系统进行固件更新,适用于那些难以通过传统方式访问或更新固件的场景。 ## 项目的主要特性和功能 1. 无线固件更新通过nRF24L01+无线模块接收新的固件代码,并将其烧写到MCU的Flash内存中。 2. 小型化设计BootLoader代码占用空间小,适合资源有限的嵌入式系统。 3. 多设备支持支持多种megaTiny系列芯片,如ATtiny1614、ATtiny814等。 4. CRC校验使用内置的CRC硬件进行数据校验,确保固件更新的正确性。 5. API支持提供API供应用程序使用,方便集成和扩展。 6. Arduino兼容支持与Arduino开发环境的集成,方便开发者使用。 ## 安装使用步骤
Screenshot_2025-04-17-20-35-51-251_tv.danmaku.bili.jpg
# 基于Vulkan和OpenGL的Yutrel渲染引擎 ## 项目简介 Yutrel是一个个人开发的小型渲染引擎,旨在学习和实践OpenGL、Vulkan和C++17技术,同时加深对游戏引擎架构的理解。该项目主要用于实现各种图形学算法,并提供一个方便的平台来学习和实现这些算法。 ## 项目的主要特性和功能 ECS架构采用类似Bevy引擎的ECS架构进行资源管理,窗口、渲染器等均作为ECS系统的资源。 多层架构渲染器内部类似游戏引擎的架构,分为核心(core)、平台(platform)、功能(function)、资源(resource)四层。 RHI封装提供对渲染API的RHI封装,方便进行创建、绑定、删除等操作。 预定义组件提供部分预定义的组件,如变换、光照、摄像机、模型、动画、skybox等。 渲染算法实现多种渲染算法,如PBR渲染、IBL烘焙、阴影贴图、OIT顺序无关透明、SSAO、视锥体裁剪、骨骼动画等。 ## 安装使用步骤