# bms **Repository Path**: ebuo/bms ## Basic Information - **Project Name**: bms - **Description**: Backstage Management System - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-10-15 - **Last Updated**: 2021-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BMS Backstage Management System ## 1. 简介 后台管理系统(Backstage Management System,简称BMS)是集合前端UI和Java后台框架的整体平台管理系统。 前端使用layui框架,类模块加载机制使得入口只需要一个主模块layui,其他所有模块均可使用layui入口引用加载,免去管理引用及先后加载的相关问题。界面使用JS代码执行加载及渲染,所以你只需要很少的代码就可以完成一个界面的开发,同时丰富的配置信息又提供了强大的自定义功能。本系统在layui基础上增加了以bms为前缀的模块,更加适合定制系统的开发,定义了更多的默认配置,通常,你在不需要修改配置的情况下就可以完成后台界面的开发。 后台使用SpringBoot集成常用的Mybatis、SpringSecurity等框架,实现安全控制、数据库通用查询等功能。使得你在不需要书写任何代码的情况下就能获得某些功能,并能以最少的代码完成后台开发工作。所以,去熟悉BMS框架吧,然后尽情享受她带来的便利。 ## 2. UI框架 本文并不打算对layui完整而又幽默的文档来一遍复制,这里仅会介绍BMS框架所使用的方法及增加和修改的地方,所以,如果想完整了解layui,请移步到文档末尾的项目依赖中查看layui官网。 ### 2.1 bmsajax.js layui并未对全局请求事件做任何处理,在每一步的ajax请求中你都需要做异常处理,而通常在前端对异常处理的方法仅仅是显示一个警告信息。所以很明显,这是一个模板方法,BMS需要做的就是尽量消除它。 异常事件通常有以下几种: * 403 未登录或登录超时 * 401 访问受限资源 * 404 资源未找到 * 500 服务器内部异常 * 你自定义的异常及相应的HTTP状态码 * 其他我也不知道的异常 BMS默认的处理办法如下: * 403 跳转登录页 * 401 404 500 及其他显示警告信息(使用layui.layer.alert) 通常你不需要做任何操作BMS就能替你处理各种异常,但可能你有特殊需要如在异常发生后做一些操作,因为BMS对异常的处理是使用 jquery全局ajax事件机制,所以BMS完全不会阻止你对异常的捕捉并做相应处理。 ### 2.2 bmsdate.js 在渲染表格时,你会想显示相应的数据,但有一点,如果是时间格式,后台未处理的情况下会返回unix毫秒级时间戳。 bmsdate.js对时间做相应处理,并在layui原table.js中增加了dataFormat行级属性,你直接在表格的cols相应数据列表上使用 dataFormat: 'yyyy-MM-dd',即可将数据解析成标准中文的日期格式。 但需要注意,bmsdate内部使用的是 new Date方法,如果不是 js Date支持的格式,并不能解析,而且还会发生异常。 ### 2.3 bmsform.js 通常,在完成 form 表单时,你需要处理表单渲染、事件绑定、元素ID和Filter定义,但bmsform为你完成了大部份的工作,在表单HTML完成的情况下,你只需要一行js代码即可完成所有操作,而这一行代码也是为了让你配置提交数据的URL。 bmsform默认使用 post 方式提交表单,并且没有提供任何方法去配置该属性(你改源码就当我没说),这是因为作者实在想不到能用 get 而不能用 post 提交的场境(如果有请告知)。 bmsform封装了事件处理机制,在调用 bmsform.render时,有三个参数,且均为对象, 以下按顺序介绍: 1. 配置:可能通过配置修改元素ID,数据提交URL 2. 事件:当发生表单元素事件时,会触发相应的事件,bmsform使用方法来指定接收事件: * switch 和 switch_{filter}:switch代表处理所有switch事件;switch_{filter}处理相应元素的lay-filter值对应的事件。switch_{filter}优先级高于 switch,即如果同时有 switch_{filter}和switch,只响应 switch_{filter}。事件响应的参数只有一个 data,data.elem 为事件触发的DOM元素,data.value 为元素值,data.othis为layui美化后的元素(通常,layui会对表单无素进行美化,这个过程是隐藏原始DOM元素,并新增美化元素来实现的) * radio 和 radio_{filter}:处理 radio 事件,事件传播机制同switch * select 和 select_{filter}:处理 select 事件,其他 switch * checkbox 和 checkbox_{filter}:处理checkbox事件,响应参数 多了data.elem.checked 属性表示当前元素是否选中,值为true/false,其他同 switch * text 和 text_{filter}:处理 text 事件,响应参数增加了data.event,值为 input、focus、blur,其他同 switch * password 和 password_{filter}:处理 password 事件,其他同 text * textarea 和 textarea_{filter}:处理 textarea 事件, 其他同 text 如果元素的 lay-filter 属性或值不存在,则会触发相应的无filter事件。 3. 元素验证:layui本身提供了验证规则,同时,在这里可以传入自定义的验证规则,key为元素的lay-verify值,value可以为方法(返回的值即视为错误提示)可两个元素的数组(第一个元素为正则,第二个元素为验证失败提示信息) ### 2.4 bmsglobal.js bmsglobal作为全局配置信息,并缓存元素,详情可查看代码说明。 ### 2.5 bmsrdm.js bmsrdm可生成随机字符串,可配置随机前缀和生成的随机字符串部份长度 ### 2.6 bmstable.js bmstable是表格传用的模块,通常情况下,数据表格自带搜索框,在bmstable中自动配置了form和table的元素ID和filter,你只需要将相应的元素放入HTML代码中即可。 bmstable会临听一些事件: 1. 搜索框提交: ## 3. 后台框架 ## 4. Mybatis通用组件 ## 5. SpringSecurity ## 5. 项目不足 1. 资源使用方式,哈 ## 6. 项目依赖 ### 1. layui和layer,