44d2b690de
后端(bms-back):
- 新增区域管理完整后端:Domain/Mapper/Service/Controller + MyBatis XML
- 新增 RestTemplateConfig 配置类,用于第三方API调用
- 新增 countries.json 本地国家数据源(105个国家)
- RuoYiApplication 加 @EnableAsync 支持异步任务
- application-druid.yml 修复 Druid 连接池字符集配置(SET NAMES utf8mb4)
- logback.xml 日志路径改为 ${user.dir}/logs 避免沙箱写入受限
- pom.xml 增加 JVM 编码参数(-Dfile.encoding=UTF-8)
- 新增 sql/bms_region.sql 建表脚本+菜单权限
前端(bms-front):
- 新增区域管理页面(列表/编辑/状态切换/同步国家数据/导出)
- 新增同步日志功能(内嵌为区域管理弹窗,移除独立菜单)
- 新增 API 层: region.js / region-log.js
- 修复 BasicForm/index.vue 缺失 import FormControl 导致搜索栏控件不渲染
- 修复 user/role/region 三个页面 el-switch 初始化时弹 undefined 提示
108 lines
2.4 KiB
Vue
108 lines
2.4 KiB
Vue
<template>
|
||
<div class="app-container home">
|
||
<el-row :gutter="20">
|
||
<el-col :sm="24" :lg="12" style="padding-left: 20px">
|
||
<h2>若依后台管理框架</h2>
|
||
<p>
|
||
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了BMS,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
|
||
</p>
|
||
<p>
|
||
<b>当前版本:</b> <span>v{{ version }}</span>
|
||
</p>
|
||
<p>
|
||
<el-tag type="danger">¥免费开源</el-tag>
|
||
</p>
|
||
<p>
|
||
<el-button
|
||
type="primary"
|
||
icon="Cloudy"
|
||
plain
|
||
@click="goTarget('https://gitee.com/y_project/RuoYi-Vue')"
|
||
>访问码云</el-button
|
||
>
|
||
<el-button
|
||
icon="HomeFilled"
|
||
plain
|
||
@click="goTarget('http://ruoyi.vip')"
|
||
>访问主页</el-button
|
||
>
|
||
</p>
|
||
</el-col>
|
||
|
||
</el-row>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup name="Index">
|
||
const version = ref('3.9.2')
|
||
|
||
function goTarget(url) {
|
||
window.open(url, '__blank')
|
||
}
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.home {
|
||
blockquote {
|
||
padding: 10px 20px;
|
||
margin: 0 0 20px;
|
||
font-size: 17.5px;
|
||
border-left: 5px solid #eee;
|
||
}
|
||
hr {
|
||
margin-top: 20px;
|
||
margin-bottom: 20px;
|
||
border: 0;
|
||
border-top: 1px solid #eee;
|
||
}
|
||
.col-item {
|
||
margin-bottom: 20px;
|
||
}
|
||
|
||
ul {
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||
font-size: 13px;
|
||
color: #676a6c;
|
||
overflow-x: hidden;
|
||
|
||
ul {
|
||
list-style-type: none;
|
||
}
|
||
|
||
h4 {
|
||
margin-top: 0px;
|
||
}
|
||
|
||
h2 {
|
||
margin-top: 10px;
|
||
font-size: 26px;
|
||
font-weight: 100;
|
||
}
|
||
|
||
p {
|
||
margin-top: 10px;
|
||
|
||
b {
|
||
font-weight: 700;
|
||
}
|
||
}
|
||
|
||
.update-log {
|
||
ol {
|
||
display: block;
|
||
list-style-type: decimal;
|
||
margin-block-start: 1em;
|
||
margin-block-end: 1em;
|
||
margin-inline-start: 0;
|
||
margin-inline-end: 0;
|
||
padding-inline-start: 40px;
|
||
}
|
||
}
|
||
}
|
||
</style>
|
||
|