Compare commits
125
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
44fa37eac3 | ||
|
|
df841d64a2 | ||
|
|
0514bbb8bb | ||
|
|
833a515353 | ||
|
|
17d812cba9 | ||
|
|
34a3a39fea | ||
|
|
77abc7b0e2 | ||
|
|
32619cd138 | ||
|
|
89e2eb66ec | ||
|
|
2b0b81f2a7 | ||
|
|
1618b9fe25 | ||
|
|
f05aebf193 | ||
|
|
5660df5762 | ||
|
|
82fe3a76a0 | ||
|
|
eb2d0e02a8 | ||
|
|
9b61ab35b6 | ||
|
|
a4258a3851 | ||
|
|
12ad5eb169 | ||
|
|
8f804da741 | ||
|
|
8b9b58c802 | ||
|
|
1c10dc2ce2 | ||
|
|
65699dcab4 | ||
|
|
8a38e532e2 | ||
|
|
df43cd2333 | ||
|
|
65e94a204c | ||
|
|
da255fa7e0 | ||
|
|
d413ea4469 | ||
|
|
4eaa383717 | ||
|
|
d113ebfa2f | ||
|
|
f2898da525 | ||
|
|
462abff607 | ||
|
|
89803b3908 | ||
|
|
df6dc89b96 | ||
|
|
5989b8bc78 | ||
|
|
d41333c766 | ||
|
|
83c4e28527 | ||
|
|
1053669077 | ||
|
|
96647a055b | ||
|
|
02bff29f94 | ||
|
|
aaf3d5fa1c | ||
|
|
9e306aadc5 | ||
|
|
8918ce781b | ||
|
|
a93a44c3d4 | ||
|
|
ff723a6044 | ||
|
|
0c57ef3d84 | ||
|
|
bb664df62f | ||
|
|
40f4657d6f | ||
|
|
6c79c5a0d0 | ||
|
|
4fc51fa0b5 | ||
|
|
bba40ae048 | ||
|
|
252ae3765f | ||
|
|
7425577126 | ||
|
|
4d773797cd | ||
|
|
5178be95b3 | ||
|
|
4684b8ea5e | ||
|
|
5875ce0349 | ||
|
|
31c4c3c0e1 | ||
|
|
cf65b4f5ab | ||
|
|
c008daaaa1 | ||
|
|
85e4557376 | ||
|
|
c9db1e58f3 | ||
|
|
8e4e783871 | ||
|
|
64a9dd2a4f | ||
|
|
7f72553ddd | ||
|
|
c11fd19351 | ||
|
|
3b3bfff2c5 | ||
|
|
0685e3ba28 | ||
|
|
f41f436dd8 | ||
|
|
5aa5624350 | ||
|
|
8aa0830213 | ||
|
|
b88254084d | ||
|
|
a55fbe0f06 | ||
|
|
ff22d3072c | ||
|
|
46bb831dea | ||
|
|
e511ccdd6d | ||
|
|
4c7d250500 | ||
|
|
42b9adc5bd | ||
|
|
2ece7de4de | ||
|
|
e5f11bb452 | ||
|
|
00c3fddbf1 | ||
|
|
01761ebf91 | ||
|
|
a071953398 | ||
|
|
b8183844cd | ||
|
|
20fb90b373 | ||
|
|
67d2170eda | ||
|
|
547421ad44 | ||
|
|
da6fe40960 | ||
|
|
394d1409e1 | ||
|
|
6364b0f577 | ||
|
|
e88d535153 | ||
|
|
54cae0855b | ||
|
|
b2cae22719 | ||
|
|
1165eabb4b | ||
|
|
595ab093b9 | ||
|
|
2182e4bd66 | ||
|
|
467b2a7d93 | ||
|
|
bab3ea1a15 | ||
|
|
cddb0cff08 | ||
|
|
373a23159d | ||
|
|
48e6e9298a | ||
|
|
5248d75a6e | ||
|
|
4a4b3f1690 | ||
|
|
aa77eaf1b6 | ||
|
|
46ba8b966e | ||
|
|
6e778ff337 | ||
|
|
b15182afde | ||
|
|
88fbe36145 | ||
|
|
83f75831f0 | ||
|
|
377b0989f8 | ||
|
|
79b847f9a4 | ||
|
|
866e689ad3 | ||
|
|
4097e1801f | ||
|
|
c1521dcb9a | ||
|
|
5a9dfcbe4d | ||
|
|
830e122b79 | ||
|
|
765b993101 | ||
|
|
3a48388dec | ||
|
|
05914f1548 | ||
|
|
79cb44c522 | ||
|
|
fc951973a4 | ||
|
|
8113539fc6 | ||
|
|
e31d9d7be8 | ||
|
|
137a35ee28 | ||
|
|
69800ef5c7 | ||
|
|
6ca6fdd567 |
@@ -24,6 +24,7 @@
|
||||
- ~~常用的辅助类的类名, 以`Cs`开头~~
|
||||
- 常用的辅助类的类名, 以`Kit`开头。Kit有套件、装备等意思。
|
||||
- 枚举类名,以`Enum`结尾
|
||||
- 内部调用一律声明this
|
||||
- 拒绝过度包装
|
||||
- 命名规则(Mapper or Service)
|
||||
- 简单查询:get + 名词
|
||||
@@ -32,6 +33,7 @@
|
||||
- 搜索(分页)功能:search + 名词
|
||||
- 统计计数:count + By + 条件
|
||||
- 存在检查:exists + By + 条件
|
||||
- 增删改:save/delete/update
|
||||
- 例子: 查询分页、查询列表的方法
|
||||
- 分页:searchUser(args, page)
|
||||
- 列表:listUser + (args)
|
||||
@@ -44,6 +46,47 @@
|
||||
- 单个:getUser + by + (args)
|
||||
- 统计计数:count + By + (args)
|
||||
|
||||
#### 编码规范:举例说明
|
||||
|
||||
1. getUser - 简单查询
|
||||
核心: 获取单个特定实体。
|
||||
|
||||
- 输入: 通常是一个唯一标识符(如ID 123)。
|
||||
- 筛选: 非常精确,只匹配一个。
|
||||
- 返回: 单个对象或文档,包含该用户的完整/详细信息。
|
||||
- 示例: getUser(123) -> 返回 {id: 123, name: “Alice”, email: “...”}
|
||||
|
||||
2. listUsers - 列表查询
|
||||
核心: 获取一个符合简单条件的实体集合,通常是有限的、预定义的。
|
||||
|
||||
- 输入: 可能没有参数,或只有非常简单的过滤条件(如 status=‘active’)。
|
||||
- 筛选: 简单、常规。
|
||||
- 返回: 一个数组/列表,包含多个用户的基本信息(通常是摘要字段,非完整详情)。
|
||||
- 通常不分页,或隐式返回所有符合条件的(数据量预期不大)。
|
||||
- 示例: listUsers() -> 返回 [{id: 1, name: “Alice”}, {id: 2, name: “Bob”}]
|
||||
- 示例: listUsers({role: ‘admin’}) -> 返回所有管理员用户的列表。
|
||||
|
||||
3. queryUsersByCondition - 复杂查询
|
||||
核心: 基于多个、可能较复杂的条件进行筛选。
|
||||
|
||||
- 输入: 一个组合条件对象,可能涉及多个字段的比较(如 age > 18 AND department = ‘Sales’ AND joinDate < ‘2023-01-01’)。
|
||||
- 筛选: 复杂、灵活,类似数据库的WHERE子句。
|
||||
- 返回: 一个匹配条件的数组/列表。
|
||||
- 分页: 可能分页,也可能不分页。关键是它的侧重点在于复杂的“筛选”能力,而非分页机制。(这是标准,但是对于此项目来说,定为不分页的,复杂条件的,列表查询服务)
|
||||
- 示例: queryUsersByCondition({minAge: 18, department: ‘Sales’, hasCertification: true})
|
||||
|
||||
4. searchUsers - 搜索(分页)功能
|
||||
核心: 针对大量数据进行模糊匹配、全文检索,并强制包含分页机制以管理性能。
|
||||
|
||||
- 输入:
|
||||
- 搜索关键词(可能对多个字段进行模糊匹配)。
|
||||
- 分页参数(pageNumber, pageSize 或 limit, offset)。
|
||||
- 可能附加的其他过滤条件。
|
||||
- 筛选: 通常包含文本搜索(如 name LIKE ‘%Al%’),结果可能按相关性排序。
|
||||
- 返回: 一个分页响应对象,而不仅仅是数组。
|
||||
- 包含:data(当前页的数据列表)、total(总匹配数)、page(当前页)、pageSize(每页大小)等元数据。
|
||||
- 示例: searchUsers({keyword: ‘Al’, page: 1, pageSize: 20}) -> 返回 {data: […], total: 45, page: 1, pageSize: 20}
|
||||
|
||||
#### 主要特性
|
||||
|
||||
- 使用最新技术栈,社区资源丰富。
|
||||
@@ -75,4 +118,3 @@
|
||||
|
||||
- cutejava-framework:系统基础框架。提供核心功能,如:权限、数据权限、异常处理、缓存、工具类、接口限流、接口防重、接口幂等。
|
||||
- cutejava-module-system:系统功能模块。提供用户、角色、菜单、部门、岗位、字典、定时任务、邮件、Minio存储、服务监控等功能
|
||||
- cutejava-module-task:串行任务模块,已实现流水线功能。参考阿里云云效,提供流水线功能,可配置流水线任务,并支持任务依赖、任务参数、任务参数校验、任务参数回填。
|
||||
|
||||
@@ -45,7 +45,3 @@ npm run build:prod
|
||||
2、加速node-sass安装
|
||||
|
||||
https://www.ydyno.com/archives/1219.html
|
||||
|
||||
#### 特别鸣谢
|
||||
|
||||
- 感谢 [elunez](https://github.com/elunez/eladmin-mp) 大佬提供的基础框架
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "cutejava-front",
|
||||
"version": "1.4.1",
|
||||
"version": "1.5.0",
|
||||
"description": "CuteJava 前端源码",
|
||||
"author": "Odboy",
|
||||
"license": "Apache-2.0",
|
||||
@@ -38,7 +38,7 @@
|
||||
"@riophae/vue-treeselect": "^0.4.0",
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
"@wangeditor/editor-for-vue": "^1.0.2",
|
||||
"axios": "1.8.2",
|
||||
"axios": "1.12.0",
|
||||
"clipboard": "2.0.4",
|
||||
"codemirror": "^5.49.2",
|
||||
"core-js": "^2.6.12",
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function listMetadata(query) {
|
||||
return request({
|
||||
url: 'api/component/CuteDeptTree/listMetadata',
|
||||
method: 'post',
|
||||
data: query
|
||||
})
|
||||
}
|
||||
|
||||
export default { listMetadata }
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function listMetadata() {
|
||||
return request({
|
||||
url: 'api/component/CuteProductLineSelectPro/listMetadata',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function listMetadata() {
|
||||
return request({
|
||||
url: 'api/component/CuteProductLineSelect/listMetadata',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function listMetadata(query) {
|
||||
return request({
|
||||
url: 'api/component/CuteUserSelect/listMetadata',
|
||||
method: 'post',
|
||||
data: {
|
||||
blurry: query
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export function listMetadataByUsernames(usernameList = []) {
|
||||
return request({
|
||||
url: 'api/component/CuteUserSelect/listMetadataByUsernames',
|
||||
method: 'post',
|
||||
data: usernameList
|
||||
})
|
||||
}
|
||||
|
||||
export default { listMetadata, listMetadataByUsernames }
|
||||
|
||||
@@ -15,14 +15,14 @@ export function login(username, password, code, uuid) {
|
||||
|
||||
export function getInfo() {
|
||||
return request({
|
||||
url: 'auth/info',
|
||||
url: 'api/user/getCurrentUserInfo',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
export function getCodeImg() {
|
||||
return request({
|
||||
url: 'auth/captcha/getImage',
|
||||
url: 'captcha/getCode',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function sendResetEmailCaptcha(email) {
|
||||
export function sendResetEmailCode(email) {
|
||||
return request({
|
||||
url: 'api/captcha/sendResetEmailCaptcha?email=' + email,
|
||||
url: 'api/captcha/sendResetEmailCode?email=' + email,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
export function sendResetPasswordCaptcha(email) {
|
||||
export function sendResetPasswordCode(email) {
|
||||
return request({
|
||||
url: 'api/captcha/sendResetPasswordCaptcha?email=' + email,
|
||||
url: 'api/captcha/sendResetPasswordCode?email=' + email,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
export function checkEmailCaptcha(email, code, bizCode) {
|
||||
export function verifyCode(email, code, bizCode) {
|
||||
const params = {
|
||||
email: email,
|
||||
code: code,
|
||||
bizCode: bizCode
|
||||
}
|
||||
return request({
|
||||
url: 'api/captcha/checkEmailCaptcha',
|
||||
url: 'api/captcha/verifyCode',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function queryDeptSelectDataSource() {
|
||||
return request({
|
||||
url: 'api/component/queryDeptSelectDataSource',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
export function queryDeptSelectProDataSource() {
|
||||
return request({
|
||||
url: 'api/component/queryDeptSelectProDataSource',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
@@ -1,23 +1,8 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function queryDeptList(params) {
|
||||
return request({
|
||||
url: 'api/dept',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
export function queryDeptSuperiorTree(ids, exclude) {
|
||||
exclude = exclude !== undefined ? exclude : false
|
||||
const data = Array.isArray(ids) ? ids : [ids]
|
||||
return request({
|
||||
url: 'api/dept/queryDeptSuperiorTree?exclude=' + exclude,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 默认入口:add、del、edit、get
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/dept/saveDept',
|
||||
@@ -28,7 +13,7 @@ export function add(data) {
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/dept/removeDeptByIds',
|
||||
url: 'api/dept/deleteDeptByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
@@ -36,10 +21,28 @@ export function del(ids) {
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/dept/modifyDept',
|
||||
url: 'api/dept/updateDeptById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, queryDeptList, queryDeptSuperiorTree }
|
||||
export function searchDept(params) {
|
||||
return request({
|
||||
url: 'api/dept/searchDept',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
export function searchDeptTree(ids, exclude) {
|
||||
exclude = exclude !== undefined ? exclude : false
|
||||
const data = Array.isArray(ids) ? ids : [ids]
|
||||
return request({
|
||||
url: 'api/dept/searchDeptTree?exclude=' + exclude,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, searchDept, searchDeptTree }
|
||||
|
||||
+6
-4
@@ -1,5 +1,7 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 默认入口:add、del、edit、get
|
||||
*/
|
||||
export function get(dictName) {
|
||||
const params = {
|
||||
page: 1,
|
||||
@@ -9,7 +11,7 @@ export function get(dictName) {
|
||||
}
|
||||
}
|
||||
return request({
|
||||
url: 'api/dictDetail/queryDictDetailByArgs',
|
||||
url: 'api/dictDetail/searchDictDetail',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
@@ -25,7 +27,7 @@ export function add(data) {
|
||||
|
||||
export function del(id) {
|
||||
return request({
|
||||
url: 'api/dictDetail/removeDictDetailById',
|
||||
url: 'api/dictDetail/deleteDictDetailById',
|
||||
method: 'post',
|
||||
data: { id: id }
|
||||
})
|
||||
@@ -33,7 +35,7 @@ export function del(id) {
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/dictDetail/modifyDictDetailById',
|
||||
url: 'api/dictDetail/updateDictDetailById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
@@ -1,5 +1,7 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 默认入口:add、del、edit、get
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/dict/saveDict',
|
||||
@@ -10,7 +12,7 @@ export function add(data) {
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/dict/removeDictByIds',
|
||||
url: 'api/dict/deleteDictByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
@@ -18,18 +20,18 @@ export function del(ids) {
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/dict/modifyDictById',
|
||||
url: 'api/dict/updateDictById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function queryPageDict(data) {
|
||||
export function searchDict(data) {
|
||||
return request({
|
||||
url: 'api/dict',
|
||||
url: 'api/dict/searchDict',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, queryPageDict }
|
||||
export default { add, edit, del, searchDict }
|
||||
|
||||
@@ -7,17 +7,17 @@ export function getLastEmailConfig() {
|
||||
})
|
||||
}
|
||||
|
||||
export function modifyEmailConfig(data) {
|
||||
export function updateEmailConfigById(data) {
|
||||
return request({
|
||||
url: 'api/email/modifyEmailConfig',
|
||||
url: 'api/email/updateEmailConfigById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function sendEmail(data) {
|
||||
export function send(data) {
|
||||
return request({
|
||||
url: 'api/email/sendEmail',
|
||||
url: 'api/email/send',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
|
||||
@@ -1,20 +1,7 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function queryAllEnableJob() {
|
||||
const params = {
|
||||
page: 1,
|
||||
size: 9999999,
|
||||
args: {
|
||||
enabled: true
|
||||
}
|
||||
}
|
||||
return request({
|
||||
url: 'api/job/queryAllEnableJob',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 默认入口:add、del、edit、get
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/job/saveJob',
|
||||
@@ -25,7 +12,7 @@ export function add(data) {
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/job/removeJobByIds',
|
||||
url: 'api/job/deleteJobByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
@@ -33,10 +20,24 @@ export function del(ids) {
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/job/modifyJobById',
|
||||
url: 'api/job/updateJobById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
export function searchJob() {
|
||||
const params = {
|
||||
page: 1,
|
||||
size: 9999999,
|
||||
args: {
|
||||
enabled: true
|
||||
}
|
||||
}
|
||||
return request({
|
||||
url: 'api/job/searchJob',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del }
|
||||
|
||||
+5
-3
@@ -1,5 +1,7 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 默认入口:add、del、edit、get
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/localStorage/uploadFile',
|
||||
@@ -10,7 +12,7 @@ export function add(data) {
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/localStorage/removeFileByIds',
|
||||
url: 'api/localStorage/deleteFileByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
@@ -18,7 +20,7 @@ export function del(ids) {
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/localStorage/modifyLocalStorageById',
|
||||
url: 'api/localStorage/updateLocalStorageById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
@@ -1,15 +1,49 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function queryMenuListByPid(pid) {
|
||||
/**
|
||||
* 默认入口:add、del、edit、get
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/menu/queryMenuListByPid?pid=' + pid,
|
||||
url: 'api/menu/saveMenu',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/menu/deleteMenuByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
}
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/menu/updateMenuById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function listMenuByPid(pid) {
|
||||
return request({
|
||||
url: 'api/menu/listMenuByPid?pid=' + pid,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
export function queryMenuByArgs(params) {
|
||||
export function listRoleMenuByPid(pid) {
|
||||
return request({
|
||||
url: 'api/menu/queryMenuByArgs',
|
||||
url: 'api/menu/listRoleMenuByPid?pid=' + pid,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
export function searchMenu(params) {
|
||||
return request({
|
||||
url: 'api/menu/searchMenu',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
@@ -24,9 +58,9 @@ export function queryMenuSuperior(ids) {
|
||||
})
|
||||
}
|
||||
|
||||
export function queryChildMenuSet(id) {
|
||||
export function listChildMenuSetByMenuId(id) {
|
||||
return request({
|
||||
url: 'api/menu/queryChildMenuSet?id=' + id,
|
||||
url: 'api/menu/listChildMenuSetByMenuId?id=' + id,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
@@ -38,28 +72,4 @@ export function buildMenus() {
|
||||
})
|
||||
}
|
||||
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/menu/saveMenu',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/menu/removeMenuByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
}
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/menu/modifyMenuById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, queryMenuListByPid, queryMenuSuperior, queryMenuByArgs, queryChildMenuSet }
|
||||
export default { add, edit, del, listMenuByPid, queryMenuSuperior, searchMenu, listChildMenuSetByMenuId }
|
||||
|
||||
+4
-2
@@ -1,5 +1,7 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 默认入口:add、del、edit、get
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/ossStorage/uploadFile',
|
||||
@@ -10,7 +12,7 @@ export function add(data) {
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/ossStorage/removeFileByIds',
|
||||
url: 'api/ossStorage/deleteFileByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
+6
-4
@@ -1,5 +1,7 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 默认入口:add、del、edit、get
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/quartzJob/createQuartzJob',
|
||||
@@ -10,7 +12,7 @@ export function add(data) {
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/quartzJob/removeJobByIds',
|
||||
url: 'api/quartzJob/deleteJobByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
@@ -18,8 +20,8 @@ export function del(ids) {
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/quartzJob',
|
||||
method: 'put',
|
||||
url: 'api/quartzJob/updateQuartzJobResumeCron',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
@@ -1,13 +1,7 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 获取所有的Role
|
||||
export function queryRoleList() {
|
||||
return request({
|
||||
url: 'api/role/queryRoleList',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 默认入口:add、del、edit、get
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/role/saveRole',
|
||||
@@ -18,22 +12,15 @@ export function add(data) {
|
||||
|
||||
export function get(id) {
|
||||
return request({
|
||||
url: 'api/role/queryRoleById',
|
||||
url: 'api/role/getRoleById',
|
||||
method: 'post',
|
||||
data: { id: id }
|
||||
})
|
||||
}
|
||||
|
||||
export function getLevel() {
|
||||
return request({
|
||||
url: 'api/role/queryRoleLevel',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/role/removeRoleByIds',
|
||||
url: 'api/role/deleteRoleByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
@@ -41,18 +28,33 @@ export function del(ids) {
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/role/modifyRoleById',
|
||||
url: 'api/role/updateRoleById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取所有的Role
|
||||
export function listAllRole() {
|
||||
return request({
|
||||
url: 'api/role/listAllRole',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
export function getCurrentUserRoleLevel() {
|
||||
return request({
|
||||
url: 'api/role/getCurrentUserRoleLevel',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
export function editMenu(data) {
|
||||
return request({
|
||||
url: 'api/role/modifyBindMenuById',
|
||||
url: 'api/role/updateBindMenuById',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, get, editMenu, getLevel }
|
||||
export default { add, edit, del, get, editMenu, getCurrentUserRoleLevel }
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import request from '@/utils/request'
|
||||
import { encrypt } from '@/utils/CsRsaUtil'
|
||||
|
||||
/**
|
||||
* 默认入口:add、del、edit、get
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/user/saveUser',
|
||||
@@ -11,15 +14,7 @@ export function add(data) {
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/user/removeUserByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
}
|
||||
|
||||
export function resetPwd(ids) {
|
||||
return request({
|
||||
url: 'api/user/resetUserPasswordByIds',
|
||||
url: 'api/user/deleteUserByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
@@ -27,58 +22,51 @@ export function resetPwd(ids) {
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/user/modifyUserById',
|
||||
url: 'api/user/updateUserById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function editUser(data) {
|
||||
export function resetUserPasswordByIds(ids) {
|
||||
return request({
|
||||
url: 'api/user/modifyUserCenterInfoById',
|
||||
url: 'api/user/resetUserPasswordByIds',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
}
|
||||
|
||||
export function updateUserCenterInfoById(data) {
|
||||
return request({
|
||||
url: 'api/user/updateUserCenterInfoById',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function updatePass(user) {
|
||||
export function updateUserPasswordByUsername(user) {
|
||||
const data = {
|
||||
oldPass: encrypt(user.oldPass),
|
||||
newPass: encrypt(user.newPass)
|
||||
}
|
||||
return request({
|
||||
url: 'api/user/modifyUserPasswordByUsername',
|
||||
url: 'api/user/updateUserPasswordByUsername',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function updateEmail(form) {
|
||||
export function updateUserEmailByUsername(form) {
|
||||
const data = {
|
||||
password: encrypt(form.pass),
|
||||
email: form.email
|
||||
}
|
||||
return request({
|
||||
url: 'api/user/modifyUserEmailByUsername/' + form.code,
|
||||
url: 'api/user/updateUserEmailByUsername/' + form.code,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function queryUserMetaPage(query) {
|
||||
const params = {
|
||||
page: 1,
|
||||
size: 50,
|
||||
args: {
|
||||
blurry: query
|
||||
}
|
||||
}
|
||||
return request({
|
||||
url: 'api/user/queryUserMetadataOptions',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, resetPwd, queryUserMetaPage }
|
||||
export default { add, edit, del, resetUserPasswordByIds }
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
// 科技现代:极光幻境(梦幻唯美)
|
||||
// base color
|
||||
$blue: #6C5CE7;
|
||||
$light-blue: #A29BFE;
|
||||
$red: #FF7675;
|
||||
$pink: #FD79A8;
|
||||
$green: #00B894;
|
||||
$tiffany: #81ECEC;
|
||||
$yellow: #FFEAA7;
|
||||
$panGreen: #00B894;
|
||||
|
||||
// sidebar
|
||||
$menuText: #B2BEC3;
|
||||
$menuActiveText: #A29BFE;
|
||||
$subMenuActiveText: #FFFFFF;
|
||||
$menuBg: #0F0F1F;
|
||||
$menuHover: #1A1A35;
|
||||
$subMenuBg: #14142A;
|
||||
$subMenuHover: #2C2C5A;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色(从深靛蓝过渡到深紫蓝色)
|
||||
$navbarBgStart: $menuBg;
|
||||
$navbarBgEnd: #0A0A18;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(162, 155, 254, 0.18);
|
||||
$navbarShadowY: 2px;
|
||||
$navbarShadowBlur: 8px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(162, 155, 254, 0.25);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: rgba(162, 155, 254, 0.1);
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: $menuText;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: rgba(162, 155, 254, 0.32);
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: rgba(162, 155, 254, 0.3);
|
||||
$navbarAvatarHoverBorderColor: $menuActiveText;
|
||||
$navbarAvatarHoverGlow: rgba(162, 155, 254, 0.42);
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: $menuText;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: $menuText;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: 0 0 6px rgba(162, 155, 254, 0.45);
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #F0F1F8;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #F0F1F8;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: rgba(162, 155, 254, 0.18);
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $menuActiveText;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: 0 0 6px rgba(162, 155, 254, 0.4);
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: rgba(129, 236, 236, 0.55);
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #F7F8FC;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between/js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
// 赛博橙(热情奔放)
|
||||
// base color
|
||||
$blue: #FF5722;
|
||||
$light-blue: #FF7043;
|
||||
$red: #FF1744;
|
||||
$pink: #FF4081;
|
||||
$green: #00E676;
|
||||
$tiffany: #69F0AE;
|
||||
$yellow: #FFD600;
|
||||
$panGreen: #00E676;
|
||||
|
||||
// sidebar
|
||||
$menuText: #FFCCBC;
|
||||
$menuActiveText: #FF6D00;
|
||||
$subMenuActiveText: #FFFFFF;
|
||||
$menuBg: #261411;
|
||||
$menuHover: #3D1F1A;
|
||||
$subMenuBg: #1E0D0B;
|
||||
$subMenuHover: #502620;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色
|
||||
$navbarBgStart: $menuBg;
|
||||
$navbarBgEnd: #1A0E0C;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(255, 109, 0, 0.25);
|
||||
$navbarShadowY: 2px;
|
||||
$navbarShadowBlur: 8px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(255, 109, 0, 0.35);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: rgba(255, 109, 0, 0.12);
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: #FFD0BC;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: rgba(255, 109, 0, 0.4);
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: rgba(255, 109, 0, 0.4);
|
||||
$navbarAvatarHoverBorderColor: $menuActiveText;
|
||||
$navbarAvatarHoverGlow: rgba(255, 109, 0, 0.5);
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: #FFCCBC;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: #FFCCBC;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: 0 0 8px rgba(255, 109, 0, 0.5);
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #FFFFFF;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #FFFFFF;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: rgba(255, 109, 0, 0.18);
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $menuActiveText;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: 0 0 8px rgba(255, 109, 0, 0.5);
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: rgba(255, 64, 129, 0.6);
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #FFFFFF;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between/js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
// 默认风格
|
||||
// base color
|
||||
$blue: #324157;
|
||||
$light-blue: #3A71A8;
|
||||
$red: #C03639;
|
||||
$pink: #E65D6E;
|
||||
$green: #30B08F;
|
||||
$tiffany: #4AB7BD;
|
||||
$yellow: #FEC171;
|
||||
$panGreen: #30B08F;
|
||||
|
||||
// sidebar 默认
|
||||
$menuText: #bfcbd9;
|
||||
$menuActiveText: #409EFF;
|
||||
$subMenuActiveText: #f4f4f5; // https://github.com/ElemeFE/element/issues/12951
|
||||
$menuBg: #304156;
|
||||
$menuHover: #263445;
|
||||
$subMenuBg: #1f2d3d;
|
||||
$subMenuHover: #001528;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色(从侧边栏颜色过渡到深蓝色)
|
||||
$navbarBgStart: $menuBg;
|
||||
$navbarBgEnd: #263445;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(0, 21, 41, 0.15);
|
||||
$navbarShadowY: 1px;
|
||||
$navbarShadowBlur: 4px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(0, 21, 41, 0.2);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: rgba(0, 0, 0, 0.025);
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: #5a5e66;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: transparent;
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: transparent;
|
||||
$navbarAvatarHoverBorderColor: transparent;
|
||||
$navbarAvatarHoverGlow: transparent;
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: #5a5e66;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: $menuText;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: transparent;
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #97a8be;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #97a8be;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: transparent;
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $menuActiveText;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: transparent;
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: #97a8be;
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #97a8be;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between/js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
// 专业稳重(一般)
|
||||
// base color
|
||||
$blue: #3A71A8;
|
||||
$light-blue: #5A9BDB;
|
||||
$red: #D5657A;
|
||||
$pink: #E696A5;
|
||||
$green: #4AB7BD;
|
||||
$tiffany: #6BCFD5;
|
||||
$yellow: #FFD166;
|
||||
$panGreen: #4AB7BD;
|
||||
|
||||
// sidebar
|
||||
$menuText: #C0C9D5;
|
||||
$menuActiveText: #FFFFFF;
|
||||
$subMenuActiveText: #409EFF;
|
||||
$menuBg: #234781;
|
||||
$menuHover: #1D3A6B;
|
||||
$subMenuBg: #152B4F;
|
||||
$subMenuHover: #2D5BA6;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色(从侧边栏颜色过渡到深蓝色)
|
||||
$navbarBgStart: $menuBg;
|
||||
$navbarBgEnd: #1A3055;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(58, 113, 168, 0.2);
|
||||
$navbarShadowY: 2px;
|
||||
$navbarShadowBlur: 8px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(90, 155, 219, 0.3);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: rgba(90, 155, 219, 0.15);
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: $menuText;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: rgba(90, 155, 219, 0.3);
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: rgba(90, 155, 219, 0.3);
|
||||
$navbarAvatarHoverBorderColor: $light-blue;
|
||||
$navbarAvatarHoverGlow: rgba(90, 155, 219, 0.4);
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: $menuText;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: $menuText;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: 0 0 6px rgba(90, 155, 219, 0.3);
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #F0F4F8;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #F0F4F8;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: rgba(90, 155, 219, 0.2);
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $light-blue;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: 0 0 6px rgba(90, 155, 219, 0.3);
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: rgba(90, 155, 219, 0.4);
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #F5F8FC;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
// 科技现代:太阳耀斑(热烈活力)
|
||||
// base color
|
||||
$blue: #FF6B35;
|
||||
$light-blue: #FF8C42;
|
||||
$red: #E84C5B;
|
||||
$pink: #FF7B9C;
|
||||
$green: #FFC857;
|
||||
$tiffany: #FF9F45;
|
||||
$yellow: #FFD93D;
|
||||
$panGreen: #FFC857;
|
||||
|
||||
// sidebar
|
||||
$menuText: #D4A574;
|
||||
$menuActiveText: #FF8C42;
|
||||
$subMenuActiveText: #FFFFFF;
|
||||
$menuBg: #1A1512;
|
||||
$menuHover: #2A221D;
|
||||
$subMenuBg: #221E1A;
|
||||
$subMenuHover: #3D332C;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色(从深棕色过渡到炭黑色)
|
||||
$navbarBgStart: $menuBg;
|
||||
$navbarBgEnd: #15100D;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(255, 140, 66, 0.2);
|
||||
$navbarShadowY: 2px;
|
||||
$navbarShadowBlur: 8px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(255, 140, 66, 0.25);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: rgba(255, 140, 66, 0.1);
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: $menuText;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: rgba(255, 140, 66, 0.3);
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: rgba(255, 140, 66, 0.3);
|
||||
$navbarAvatarHoverBorderColor: $menuActiveText;
|
||||
$navbarAvatarHoverGlow: rgba(255, 140, 66, 0.45);
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: $menuText;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: $menuText;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: 0 0 6px rgba(255, 140, 66, 0.4);
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #FDF6EC;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #FDF6EC;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: rgba(255, 140, 66, 0.15);
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $menuActiveText;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: 0 0 6px rgba(255, 140, 66, 0.35);
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: rgba(255, 159, 69, 0.5);
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #FFF9F0;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between/js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
// 科技现代:深空极客(好看)
|
||||
// base color
|
||||
$blue: #4A90E2;
|
||||
$light-blue: #66CCFF;
|
||||
$red: #FF6B6B;
|
||||
$pink: #FF9E9E;
|
||||
$green: #66FFCC;
|
||||
$tiffany: #81D8D0;
|
||||
$yellow: #FFD93D;
|
||||
$panGreen: #66FFCC;
|
||||
|
||||
// sidebar
|
||||
$menuText: #A0AABF;
|
||||
$menuActiveText: #66FFCC;
|
||||
$subMenuActiveText: #FFFFFF;
|
||||
$menuBg: #0F1520;
|
||||
$menuHover: #1C2430;
|
||||
$subMenuBg: #1A2332;
|
||||
$subMenuHover: #2A3B5C;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色(从侧边栏颜色过渡到深蓝色)
|
||||
$navbarBgStart: $menuBg;
|
||||
$navbarBgEnd: #162035;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(74, 144, 226, 0.15);
|
||||
$navbarShadowY: 2px;
|
||||
$navbarShadowBlur: 8px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(74, 144, 226, 0.2);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: rgba(74, 144, 226, 0.1);
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: $menuText;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: rgba(102, 255, 204, 0.3);
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: rgba(102, 255, 204, 0.3);
|
||||
$navbarAvatarHoverBorderColor: $menuActiveText;
|
||||
$navbarAvatarHoverGlow: rgba(102, 255, 204, 0.4);
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: $menuText;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: $menuText;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: 0 0 6px $menuActiveText;
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #FFFFFF;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #FFFFFF;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: rgba(102, 255, 204, 0.3);
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $menuActiveText;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: 0 0 6px rgba(102, 255, 204, 0.4);
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: rgba(102, 255, 204, 0.5);
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #FFFFFF;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
// 科技现代:赛博蓝光(好看)
|
||||
// base color
|
||||
$blue: #4FC3F7;
|
||||
$light-blue: #81D4FA;
|
||||
$red: #FF8A80;
|
||||
$pink: #FFB3B8;
|
||||
$green: #80DEEA;
|
||||
$tiffany: #81D4FA;
|
||||
$yellow: #FFD54F;
|
||||
$panGreen: #80DEEA;
|
||||
|
||||
// sidebar
|
||||
$menuText: #B0B8D0;
|
||||
$menuActiveText: #4FC3F7;
|
||||
$subMenuActiveText: #FFFFFF;
|
||||
$menuBg: #0A0E17;
|
||||
$menuHover: #151A2A;
|
||||
$subMenuBg: #12182D;
|
||||
$subMenuHover: #1E3A8A;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色(从侧边栏颜色过渡到深蓝紫色)
|
||||
$navbarBgStart: $menuBg;
|
||||
$navbarBgEnd: #0D1422;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(79, 195, 247, 0.15);
|
||||
$navbarShadowY: 2px;
|
||||
$navbarShadowBlur: 8px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(79, 195, 247, 0.2);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: rgba(79, 195, 247, 0.1);
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: $menuText;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: rgba(79, 195, 247, 0.3);
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: rgba(79, 195, 247, 0.3);
|
||||
$navbarAvatarHoverBorderColor: $menuActiveText;
|
||||
$navbarAvatarHoverGlow: rgba(79, 195, 247, 0.4);
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: $menuText;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: $menuText;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: 0 0 6px $menuActiveText;
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #FFFFFF;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #FFFFFF;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: rgba(79, 195, 247, 0.2);
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $menuActiveText;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: 0 0 6px rgba(79, 195, 247, 0.4);
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: rgba(79, 195, 247, 0.5);
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #FFFFFF;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
// 科技现代:钛银脉冲(好看)
|
||||
// base color
|
||||
$blue: #393E7C;
|
||||
$light-blue: #4A50A0;
|
||||
$red: #E84C5B;
|
||||
$pink: #FF7B9C;
|
||||
$green: #4AB7BD;
|
||||
$tiffany: #64D2FF;
|
||||
$yellow: #FFD166;
|
||||
$panGreen: #4AB7BD;
|
||||
|
||||
// sidebar
|
||||
$menuText: #CCCCCC;
|
||||
$menuActiveText: #00E5FF;
|
||||
$subMenuActiveText: #FFFFFF;
|
||||
$menuBg: #1A1A2E;
|
||||
$menuHover: #222244;
|
||||
$subMenuBg: #252545;
|
||||
$subMenuHover: #393E7C;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色(从侧边栏颜色过渡到深紫色)
|
||||
$navbarBgStart: $menuBg;
|
||||
$navbarBgEnd: #141426;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(0, 229, 255, 0.15);
|
||||
$navbarShadowY: 2px;
|
||||
$navbarShadowBlur: 8px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(0, 229, 255, 0.2);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: rgba(0, 229, 255, 0.1);
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: $menuText;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: rgba(0, 229, 255, 0.3);
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: rgba(0, 229, 255, 0.3);
|
||||
$navbarAvatarHoverBorderColor: $menuActiveText;
|
||||
$navbarAvatarHoverGlow: rgba(0, 229, 255, 0.4);
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: $menuText;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: $menuText;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: 0 0 6px $menuActiveText;
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #FFFFFF;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #FFFFFF;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: rgba(0, 229, 255, 0.2);
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $menuActiveText;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: 0 0 6px rgba(0, 229, 255, 0.4);
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: rgba(0, 229, 255, 0.5);
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #FFFFFF;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between/js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
// 清新明亮:天空云朵(清新舒适)
|
||||
// base color
|
||||
$blue: #5BA3F0;
|
||||
$light-blue: #7BC4FF;
|
||||
$red: #FF6B8A;
|
||||
$pink: #FF8FA8;
|
||||
$green: #6BCB77;
|
||||
$tiffany: #7FD1AE;
|
||||
$yellow: #FFD93D;
|
||||
$panGreen: #6BCB77;
|
||||
|
||||
// sidebar
|
||||
$menuText: #2A3A4A;
|
||||
$menuActiveText: #2B7BD9;
|
||||
$subMenuActiveText: #2B7BD9;
|
||||
$menuBg: #FFFFFF;
|
||||
$menuHover: #F0F5FF;
|
||||
$subMenuBg: #F8FAFC;
|
||||
$subMenuHover: #E1E8F5;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色(从白色过渡到浅蓝)
|
||||
$navbarBgStart: #FFFFFF;
|
||||
$navbarBgEnd: #F5F9FF;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(91, 163, 240, 0.15);
|
||||
$navbarShadowY: 1px;
|
||||
$navbarShadowBlur: 4px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(91, 163, 240, 0.2);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: #F0F5FF;
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: #5A6C7D;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: rgba(91, 163, 240, 0.2);
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: rgba(91, 163, 240, 0.25);
|
||||
$navbarAvatarHoverBorderColor: $menuActiveText;
|
||||
$navbarAvatarHoverGlow: rgba(91, 163, 240, 0.3);
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: #5A6C7D;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: #5A6C7D;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: 0 0 4px rgba(91, 163, 240, 0.3);
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #3A4A5A;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #3A4A5A;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: transparent;
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $menuActiveText;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: transparent;
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: rgba(91, 163, 240, 0.4);
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #2A3A4A;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between/js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
// 清新明亮:薄荷清新(清爽自然)
|
||||
// base color
|
||||
$blue: #5F9EA0;
|
||||
$light-blue: #7DD3C0;
|
||||
$red: #FF7F7F;
|
||||
$pink: #FFA8A8;
|
||||
$green: #95E1D3;
|
||||
$tiffany: #B8F2E6;
|
||||
$yellow: #FFEAA7;
|
||||
$panGreen: #95E1D3;
|
||||
|
||||
// sidebar
|
||||
$menuText: #3A4A5A;
|
||||
$menuActiveText: #5F9EA0;
|
||||
$subMenuActiveText: #5F9EA0;
|
||||
$menuBg: #FAFEFC;
|
||||
$menuHover: #F0FAF7;
|
||||
$subMenuBg: #FCFDFB;
|
||||
$subMenuHover: #E5F5F0;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色(从白色过渡到淡薄荷色)
|
||||
$navbarBgStart: #FFFFFF;
|
||||
$navbarBgEnd: #F5FFFA;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(95, 158, 160, 0.12);
|
||||
$navbarShadowY: 1px;
|
||||
$navbarShadowBlur: 4px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(95, 158, 160, 0.15);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: #F0FAF7;
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: #5A6B7A;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: rgba(95, 158, 160, 0.2);
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: rgba(95, 158, 160, 0.25);
|
||||
$navbarAvatarHoverBorderColor: $menuActiveText;
|
||||
$navbarAvatarHoverGlow: rgba(95, 158, 160, 0.3);
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: #5A6B7A;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: #5A6B7A;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: 0 0 4px rgba(95, 158, 160, 0.3);
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #3A4A5A;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #3A4A5A;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: transparent;
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $menuActiveText;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: transparent;
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: rgba(90, 107, 122, 0.4);
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #2A3A4A;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between/js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
// 清新明亮:海风浅蓝(宁静舒适)
|
||||
// base color
|
||||
$blue: #4A90E2;
|
||||
$light-blue: #6BB3FF;
|
||||
$red: #FF7F7F;
|
||||
$pink: #FFA3A3;
|
||||
$green: #7DD3C0;
|
||||
$tiffany: #9CE6DC;
|
||||
$yellow: #FFEAA7;
|
||||
$panGreen: #7DD3C0;
|
||||
|
||||
// sidebar
|
||||
$menuText: #3A4A5A;
|
||||
$menuActiveText: #4A90E2;
|
||||
$subMenuActiveText: #4A90E2;
|
||||
$menuBg: #F5FAFF;
|
||||
$menuHover: #EBF4FF;
|
||||
$subMenuBg: #F8FCFF;
|
||||
$subMenuHover: #D9EBFF;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// ===== Navbar 顶部导航栏样式变量 =====
|
||||
// Navbar 背景渐变色(从白色过渡到浅蓝色)
|
||||
$navbarBgStart: #FFFFFF;
|
||||
$navbarBgEnd: #F5FAFF;
|
||||
|
||||
// Navbar 阴影颜色和透明度
|
||||
$navbarShadowColor: rgba(74, 144, 226, 0.12);
|
||||
$navbarShadowY: 1px;
|
||||
$navbarShadowBlur: 4px;
|
||||
$navbarShadowSpread: 0px;
|
||||
|
||||
// Navbar 底部边框颜色和透明度
|
||||
$navbarBorderColor: rgba(74, 144, 226, 0.15);
|
||||
$navbarBorderWidth: 1px;
|
||||
|
||||
// Navbar 悬停背景色(hamburger 和右侧菜单项)
|
||||
$navbarHoverBg: #EBF4FF;
|
||||
|
||||
// 右侧菜单项文字颜色
|
||||
$navbarRightMenuColor: #5A6C7D;
|
||||
|
||||
// 右侧菜单项悬停效果颜色
|
||||
$navbarRightMenuHoverColor: $menuActiveText;
|
||||
$navbarRightMenuHoverGlow: rgba(74, 144, 226, 0.2);
|
||||
|
||||
// 头像边框颜色
|
||||
$navbarAvatarBorderColor: rgba(74, 144, 226, 0.25);
|
||||
$navbarAvatarHoverBorderColor: $menuActiveText;
|
||||
$navbarAvatarHoverGlow: rgba(74, 144, 226, 0.3);
|
||||
|
||||
// 下拉箭头颜色
|
||||
$navbarCaretColor: #5A6C7D;
|
||||
|
||||
// ===== Hamburger 汉堡菜单按钮样式变量 =====
|
||||
// Hamburger 默认颜色
|
||||
$hamburgerColor: #5A6C7D;
|
||||
|
||||
// Hamburger 激活状态颜色
|
||||
$hamburgerActiveColor: $menuActiveText;
|
||||
|
||||
// Hamburger 发光效果
|
||||
$hamburgerGlow: 0 0 4px rgba(74, 144, 226, 0.3);
|
||||
|
||||
// ===== Breadcrumb 面包屑导航样式变量 =====
|
||||
// Breadcrumb 文字颜色
|
||||
$breadcrumbTextColor: #3A4A5A;
|
||||
|
||||
// Breadcrumb 链接颜色(可点击项)
|
||||
$breadcrumbLinkColor: #3A4A5A;
|
||||
|
||||
// Breadcrumb 发光效果
|
||||
$breadcrumbTextGlow: transparent;
|
||||
|
||||
// Breadcrumb 悬停颜色
|
||||
$breadcrumbHoverColor: $menuActiveText;
|
||||
|
||||
// Breadcrumb 悬停发光效果
|
||||
$breadcrumbHoverGlow: transparent;
|
||||
|
||||
// Breadcrumb 分隔符颜色
|
||||
$breadcrumbSeparatorColor: rgba(90, 108, 125, 0.4);
|
||||
|
||||
// Breadcrumb 当前页面文字颜色(不可点击项)
|
||||
$breadcrumbNoRedirectColor: #2A3A4A;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between/js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
@@ -1,36 +1 @@
|
||||
// base color
|
||||
$blue:#324157;
|
||||
$light-blue:#3A71A8;
|
||||
$red:#C03639;
|
||||
$pink: #E65D6E;
|
||||
$green: #30B08F;
|
||||
$tiffany: #4AB7BD;
|
||||
$yellow:#FEC171;
|
||||
$panGreen: #30B08F;
|
||||
|
||||
// sidebar
|
||||
$menuText:#bfcbd9;
|
||||
$menuActiveText:#409EFF;
|
||||
$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951
|
||||
|
||||
$menuBg:#304156;
|
||||
$menuHover:#263445;
|
||||
|
||||
$subMenuBg:#1f2d3d;
|
||||
$subMenuHover:#001528;
|
||||
|
||||
// 左侧菜单栏宽度
|
||||
$sideBarWidth: 250px;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
||||
@import 'themes/light/variables.cloudsky';
|
||||
|
||||
@@ -70,15 +70,57 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "~@/assets/styles/variables";
|
||||
|
||||
.app-breadcrumb.el-breadcrumb {
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
line-height: 50px;
|
||||
margin-left: 8px;
|
||||
|
||||
::v-deep .el-breadcrumb__item {
|
||||
.el-breadcrumb__inner {
|
||||
color: $breadcrumbTextColor !important;
|
||||
font-weight: 500;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&.is-link {
|
||||
color: $breadcrumbLinkColor !important;
|
||||
text-shadow: 0 0 4px $breadcrumbTextGlow;
|
||||
|
||||
&:hover {
|
||||
color: $breadcrumbHoverColor !important;
|
||||
filter: drop-shadow($breadcrumbHoverGlow);
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: $breadcrumbHoverColor !important;
|
||||
filter: drop-shadow($breadcrumbHoverGlow);
|
||||
}
|
||||
}
|
||||
|
||||
.el-breadcrumb__separator {
|
||||
color: $breadcrumbSeparatorColor;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: $breadcrumbLinkColor !important;
|
||||
font-weight: 500;
|
||||
text-shadow: 0 0 4px $breadcrumbTextGlow;
|
||||
|
||||
&:hover {
|
||||
color: $breadcrumbHoverColor !important;
|
||||
filter: drop-shadow($breadcrumbHoverGlow);
|
||||
}
|
||||
}
|
||||
|
||||
.no-redirect {
|
||||
color: #97a8be;
|
||||
color: $breadcrumbNoRedirectColor !important;
|
||||
cursor: text;
|
||||
font-weight: 500;
|
||||
text-shadow: 0 0 4px $breadcrumbTextGlow;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -17,8 +17,10 @@ function CRUD(options) {
|
||||
idField: 'id',
|
||||
// 标题
|
||||
title: '',
|
||||
// 请求数据的url
|
||||
// 请求数据的url, @Controller注解的路径
|
||||
url: '',
|
||||
// 分页查询路由,@PostMapping注解的路径
|
||||
searchRouter: '',
|
||||
// 表格数据
|
||||
data: [],
|
||||
// 选择项
|
||||
@@ -134,7 +136,7 @@ function CRUD(options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
crud.loading = true
|
||||
// 请求数据
|
||||
initData(crud.url, crud.getQueryParams()).then(data => {
|
||||
initData(crud.url + crud.searchRouter, crud.getQueryParams()).then(data => {
|
||||
const table = crud.getTable()
|
||||
if (table && table.lazy) { // 懒加载子节点数据,清掉已加载的数据
|
||||
table.store.states.treeData = {}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Vue from 'vue'
|
||||
import { get as getDictDetail } from '@/api/system/dictDetail'
|
||||
import { get as getDictDetail } from '@/api/system/dict-detail'
|
||||
|
||||
export default class Dict {
|
||||
constructor(dict) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<a
|
||||
href="https://github.com/odboy-tianjun/cutejava"
|
||||
href="https://gitee.com/odboy-tianjun/cutejava"
|
||||
target="_blank"
|
||||
class="github-corner"
|
||||
aria-label="View source on Github"
|
||||
|
||||
@@ -32,15 +32,25 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
<style lang="scss" scoped>
|
||||
@import "~@/assets/styles/variables";
|
||||
|
||||
.hamburger {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
fill: $hamburgerColor;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.hamburger.is-active {
|
||||
transform: rotate(180deg);
|
||||
fill: $hamburgerActiveColor;
|
||||
filter: drop-shadow($hamburgerGlow);
|
||||
}
|
||||
|
||||
.hamburger:hover {
|
||||
fill: $hamburgerActiveColor;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -12,10 +12,9 @@
|
||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip content="布局设置" effect="dark" placement="bottom">
|
||||
<size-select id="size-select" class="right-menu-item hover-effect" />
|
||||
</el-tooltip>
|
||||
|
||||
<!--<el-tooltip content="布局设置" effect="dark" placement="bottom">-->
|
||||
<!-- <size-select id="size-select" class="right-menu-item hover-effect" />-->
|
||||
<!--</el-tooltip>-->
|
||||
</template>
|
||||
|
||||
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
|
||||
@@ -50,7 +49,7 @@ import { mapGetters } from 'vuex'
|
||||
import Breadcrumb from '@/components/Breadcrumb'
|
||||
import Hamburger from '@/components/Hamburger'
|
||||
import Screenfull from '@/components/Screenfull'
|
||||
import SizeSelect from '@/components/SizeSelect'
|
||||
// import SizeSelect from '@/components/SizeSelect'
|
||||
import Search from '@/components/HeaderSearch'
|
||||
import Avatar from '@/assets/images/avatar.png'
|
||||
|
||||
@@ -59,7 +58,7 @@ export default {
|
||||
Breadcrumb,
|
||||
Hamburger,
|
||||
Screenfull,
|
||||
SizeSelect,
|
||||
// SizeSelect,
|
||||
Search
|
||||
},
|
||||
data() {
|
||||
@@ -110,23 +109,30 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "~@/assets/styles/variables";
|
||||
.navbar {
|
||||
height: 50px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
background: #fff;
|
||||
box-shadow: 0 1px 4px rgba(0,21,41,.08);
|
||||
background: linear-gradient(90deg, $navbarBgStart 0%, $navbarBgEnd 100%);
|
||||
box-shadow: 0 $navbarShadowY $navbarShadowBlur $navbarShadowSpread $navbarShadowColor;
|
||||
border-bottom: $navbarBorderWidth solid $navbarBorderColor;
|
||||
|
||||
.hamburger-container {
|
||||
line-height: 46px;
|
||||
height: 100%;
|
||||
float: left;
|
||||
cursor: pointer;
|
||||
transition: background .3s;
|
||||
transition: all 0.3s ease;
|
||||
-webkit-tap-highlight-color:transparent;
|
||||
|
||||
&:hover {
|
||||
background: rgba(0, 0, 0, .025)
|
||||
background: $navbarHoverBg;
|
||||
|
||||
.hamburger {
|
||||
color: $menuActiveText;
|
||||
filter: drop-shadow($hamburgerGlow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,15 +159,17 @@ export default {
|
||||
padding: 0 8px;
|
||||
height: 100%;
|
||||
font-size: 18px;
|
||||
color: #5a5e66;
|
||||
color: $menuText;
|
||||
vertical-align: text-bottom;
|
||||
|
||||
&.hover-effect {
|
||||
cursor: pointer;
|
||||
transition: background .3s;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
background: rgba(0, 0, 0, .025)
|
||||
background: $navbarHoverBg;
|
||||
color: $navbarRightMenuHoverColor;
|
||||
filter: drop-shadow(0 0 8px $navbarRightMenuHoverGlow);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -178,6 +186,13 @@ export default {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 10px;
|
||||
border: 2px solid $navbarAvatarBorderColor;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
border-color: $navbarAvatarHoverBorderColor;
|
||||
box-shadow: 0 0 15px $navbarAvatarHoverGlow;
|
||||
}
|
||||
}
|
||||
|
||||
.el-icon-caret-bottom {
|
||||
@@ -186,6 +201,12 @@ export default {
|
||||
right: -20px;
|
||||
top: 25px;
|
||||
font-size: 12px;
|
||||
color: $navbarCaretColor;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
color: $menuActiveText;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ export default {
|
||||
url: '',
|
||||
// 查询数据的参数
|
||||
params: {},
|
||||
// 是否自定义参数
|
||||
isCustomParams: false,
|
||||
// 待查询的对象
|
||||
query: {},
|
||||
// 等待时间
|
||||
@@ -76,11 +78,21 @@ export default {
|
||||
Object.keys(this.params).length !== 0 && Object.keys(this.params).forEach(item => {
|
||||
if (this.params[item] === null || this.params[item] === '') this.params[item] = undefined
|
||||
})
|
||||
return {
|
||||
page: this.page,
|
||||
size: this.size,
|
||||
...this.query,
|
||||
...this.params
|
||||
if (this.isCustomParams) {
|
||||
return {
|
||||
page: this.page,
|
||||
size: this.size,
|
||||
args: {
|
||||
...this.params
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
page: this.page,
|
||||
size: this.size,
|
||||
...this.query,
|
||||
...this.params
|
||||
}
|
||||
}
|
||||
},
|
||||
// 改变页码
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
* @type {any}
|
||||
*/
|
||||
const getters = {
|
||||
deployUploadApi: state => state.api.deployUploadApi,
|
||||
databaseUploadApi: state => state.api.databaseUploadApi,
|
||||
size: state => state.app.size,
|
||||
sidebar: state => state.app.sidebar,
|
||||
device: state => state.app.device,
|
||||
@@ -24,6 +22,9 @@ const getters = {
|
||||
swaggerApi: state => state.api.swaggerApi,
|
||||
websocketApi: state => state.api.websocketApi,
|
||||
sidebarRouters: state => state.permission.sidebarRouters,
|
||||
statusConst: state => state.pipeline.statusConst
|
||||
statusConst: state => state.pipeline.statusConst,
|
||||
// 上传组件专用
|
||||
fileUploadApplicationApi: state => state.api.fileUploadApplicationApi,
|
||||
ossUploadApplicationApi: state => state.api.ossUploadApplicationApi
|
||||
}
|
||||
export default getters
|
||||
|
||||
@@ -5,7 +5,7 @@ const api = {
|
||||
// 图片上传
|
||||
imagesUploadApi: baseUrl + '/api/localStorage/uploadPicture',
|
||||
// 修改头像
|
||||
updateAvatarApi: baseUrl + '/api/user/modifyUserAvatar',
|
||||
updateAvatarApi: baseUrl + '/api/user/updateUserAvatar',
|
||||
// Sql 监控
|
||||
druidSqlApi: baseUrl + '/druid/index.html',
|
||||
// websocket
|
||||
@@ -16,6 +16,9 @@ const api = {
|
||||
fileUploadApi: baseUrl + '/api/localStorage/uploadFile',
|
||||
// oss上传
|
||||
ossUploadApi: baseUrl + '/api/ossStorage/uploadFile',
|
||||
// 上传组件专用
|
||||
fileUploadApplicationApi: baseUrl + '/api/component/CuteFileUpload/uploadLocal',
|
||||
ossUploadApplicationApi: baseUrl + '/api/component/CuteFileUpload/uploadOSS',
|
||||
// baseUrl,
|
||||
baseApi: baseUrl
|
||||
}
|
||||
|
||||
@@ -2,8 +2,11 @@ import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'
|
||||
|
||||
// 密钥对生成 http://web.chacuo.net/netrsakeypair
|
||||
|
||||
const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' +
|
||||
'2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ=='
|
||||
const publicKey = 'MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAg975XAOL1zg5EOcSSGPIcxwx5DxcvPD2rBRQa0/o1HTF25cnsU9uSHfzP+qohkDG76kDk+1FA/cuQda4CDAmK2fWW' +
|
||||
'q7KgglKd08hRkByjLuRsXu5WVApAAG15ItNM0CrXI7P47aOan+6YPU0Ni1+4WYQnwxfRYdUaKgY5G5gb3S+hx6VO1iN1KuRMBJ7y5FMh1WNJOM9bQb3X1pvaJ73drTpy1wJHAvfP80iG2+sSh0FfcOxCoRNEff' +
|
||||
'CUsU2bYNH6dG6mXIDvo6XZStspwUfSitfgOER207uvBCCVyFlas+2Xs09yyAoJNjaWmeCPfA7uJvJrXUft/SMy8JNIXBY40vlwk4d4FE6OKOG9Wn0oRlofRKZ7NGvpUxEA5zOW6g2LsHKUUXpgOfu59M6ZHxviGM' +
|
||||
't26WxJiq/ifVKJE3yVgx0MVIGEFTrG+spOCVsDYMSHnVsPEUdL6g5FV2YLyqNHljBqUqwyOEfUinp7hPRxrLJDMyX6GWy7y48Djg0wyh2hXro/ygVrZ6jcSd7MUAd2lYueUKK8Bey7OzIcOJ6GveHdLzGrspbbkn' +
|
||||
'DuRsbcInR5bD6l7YA4vpnLsbiOH2wbKJWXNnxRwN5KuWSpwHDHhARB8f4wWrewUKIOxcFI/eJ6ke6D52JMOKhiGeZKn+2/giHwrPGkTREe47Ose6UvTMCAwEAAQ=='
|
||||
|
||||
// 加密
|
||||
export function encrypt(txt) {
|
||||
|
||||
@@ -30,13 +30,13 @@
|
||||
|
||||
<script>
|
||||
|
||||
import { queryDeptList } from '@/api/system/dept'
|
||||
import CuteDeptTreeApi from '@/api/application/cute-dept-tree'
|
||||
|
||||
export default {
|
||||
name: 'CuteDeptTree',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
type: String,
|
||||
required: false,
|
||||
default: null
|
||||
}
|
||||
@@ -61,15 +61,11 @@ export default {
|
||||
params['pid'] = node.data.id
|
||||
}
|
||||
setTimeout(() => {
|
||||
queryDeptList({
|
||||
page: 1,
|
||||
size: 9999999,
|
||||
args: params
|
||||
}).then(res => {
|
||||
CuteDeptTreeApi.listMetadata(params).then(res => {
|
||||
if (resolve) {
|
||||
resolve(res.content)
|
||||
resolve(res)
|
||||
} else {
|
||||
this.deptData = res.content
|
||||
this.deptData = res
|
||||
}
|
||||
})
|
||||
}, 100)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
:headers="headers"
|
||||
:on-success="handleSuccess"
|
||||
:on-error="handleError"
|
||||
:action="ossUploadApi"
|
||||
:action="mode === 'oss' ? ossUploadApplicationApi: fileUploadApplicationApi"
|
||||
>
|
||||
<i class="el-icon-upload" />
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
@@ -34,6 +34,14 @@ export default {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: null
|
||||
},
|
||||
/**
|
||||
* 上传方式:local、oss
|
||||
*/
|
||||
mode: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: 'oss'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -44,7 +52,8 @@ export default {
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'baseApi',
|
||||
'ossUploadApi'
|
||||
'fileUploadApplicationApi',
|
||||
'ossUploadApplicationApi'
|
||||
])
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
:headers="headers"
|
||||
:on-success="handleSuccess"
|
||||
:on-error="handleError"
|
||||
:action="ossUploadApi"
|
||||
:action="mode === 'oss' ? ossUploadApplicationApi: fileUploadApplicationApi"
|
||||
>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<div slot="tip" class="el-upload__tip">只能上传不超过100MB的文件</div>
|
||||
@@ -32,6 +32,14 @@ export default {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: null
|
||||
},
|
||||
/**
|
||||
* 上传方式:local、oss
|
||||
*/
|
||||
mode: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: 'oss'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -42,7 +50,8 @@ export default {
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'baseApi',
|
||||
'ossUploadApi'
|
||||
'fileUploadApplicationApi',
|
||||
'ossUploadApplicationApi'
|
||||
])
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -25,14 +25,14 @@
|
||||
|
||||
<script>
|
||||
|
||||
import { queryDeptSelectDataSource } from '@/api/system/component'
|
||||
import { listMetadata } from '@/api/application/cute-product-line-select'
|
||||
import CsMessage from '@/utils/elementui/CsMessage'
|
||||
|
||||
export default {
|
||||
name: 'CuteProductLineSelect',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
disabled: {
|
||||
@@ -56,7 +56,7 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
fetchDeptData() {
|
||||
queryDeptSelectDataSource().then(data => {
|
||||
listMetadata().then(data => {
|
||||
this.deptOptions = data
|
||||
}).catch(error => {
|
||||
console.error('获取部门数据失败:', error)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
<script>
|
||||
|
||||
import { queryDeptSelectProDataSource } from '@/api/system/component'
|
||||
import { listMetadata } from '@/api/application/cute-product-line-select-pro'
|
||||
import CsMessage from '@/utils/elementui/CsMessage'
|
||||
|
||||
export default {
|
||||
@@ -62,7 +62,7 @@ export default {
|
||||
})
|
||||
},
|
||||
fetchDeptData() {
|
||||
queryDeptSelectProDataSource().then(data => {
|
||||
listMetadata().then(data => {
|
||||
this.deptOptions = this.cleanEmptyChildren(data)
|
||||
// console.error('deptOptions', this.deptOptions)
|
||||
}).catch(error => {
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
<script>
|
||||
|
||||
import UserService from '@/api/system/user'
|
||||
import CuteUserSelectApi from '@/api/application/cute-user-select'
|
||||
|
||||
export default {
|
||||
name: 'CuteSingleUserSelect',
|
||||
@@ -41,7 +41,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
user: this.value,
|
||||
user: [],
|
||||
loading: false,
|
||||
options: []
|
||||
}
|
||||
@@ -51,21 +51,28 @@ export default {
|
||||
this.user = newVal
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
const that = this
|
||||
if (that.value && that.value.length > 0) {
|
||||
that.options = await CuteUserSelectApi.listMetadataByUsernames(that.value)
|
||||
that.users = that.value
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
remoteMethod(query) {
|
||||
if (query !== '') {
|
||||
this.loading = true
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
this.queryUserMetaPage(query)
|
||||
this.listMetadata(query)
|
||||
}, 200)
|
||||
} else {
|
||||
this.options = []
|
||||
}
|
||||
},
|
||||
queryUserMetaPage(query, options) {
|
||||
listMetadata(query, options) {
|
||||
const that = this
|
||||
UserService.queryUserMetaPage(query).then(res => {
|
||||
CuteUserSelectApi.listMetadata(query).then(res => {
|
||||
that.options = res
|
||||
})
|
||||
},
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
<script>
|
||||
|
||||
import UserService from '@/api/system/user'
|
||||
import CuteUserSelectApi from '@/api/application/cute-user-select'
|
||||
|
||||
export default {
|
||||
name: 'CuteUserSelect',
|
||||
@@ -37,16 +37,11 @@ export default {
|
||||
type: Array,
|
||||
required: false,
|
||||
default: null
|
||||
},
|
||||
dataSource: {
|
||||
type: Array,
|
||||
required: false,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
users: this.value,
|
||||
users: [],
|
||||
loading: false,
|
||||
options: []
|
||||
}
|
||||
@@ -56,9 +51,11 @@ export default {
|
||||
this.users = newVal
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
if (this.dataSource && this.dataSource.length > 0) {
|
||||
this.options = this.dataSource
|
||||
async mounted() {
|
||||
const that = this
|
||||
if (that.value && that.value.length > 0) {
|
||||
that.options = await CuteUserSelectApi.listMetadataByUsernames(that.value)
|
||||
that.users = that.value
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -67,15 +64,15 @@ export default {
|
||||
this.loading = true
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
this.queryUserMetaPage(query)
|
||||
this.listMetadata(query)
|
||||
}, 200)
|
||||
} else {
|
||||
this.options = []
|
||||
}
|
||||
},
|
||||
queryUserMetaPage(query, options) {
|
||||
listMetadata(query, options) {
|
||||
const that = this
|
||||
UserService.queryUserMetaPage(query).then(res => {
|
||||
CuteUserSelectApi.listMetadata(query).then(res => {
|
||||
that.options = res
|
||||
})
|
||||
},
|
||||
|
||||
@@ -26,7 +26,7 @@ export default {
|
||||
href: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: 'https://github.com/odboy-tianjun'
|
||||
default: 'https://gitee.com/odboy-tianjun'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
user: null,
|
||||
user: [],
|
||||
dept: null,
|
||||
productLine: null,
|
||||
productLinePro: null
|
||||
|
||||
@@ -78,7 +78,7 @@ export default {
|
||||
}
|
||||
},
|
||||
fetch: async(queryParams) => {
|
||||
return DictService.queryPageDict(queryParams)
|
||||
return DictService.searchDict(queryParams)
|
||||
},
|
||||
pageProps: {
|
||||
current: 1,
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="文件上传" prop="fileUrl">
|
||||
<cute-file-drag-upload v-model="form" />
|
||||
<cute-file-drag-upload v-model="form" mode="local" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm('form')">提 交</el-button>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="文件上传" prop="fileUrl">
|
||||
<cute-file-upload v-model="form" />
|
||||
<cute-file-upload v-model="form" mode="local" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm('form')">提 交</el-button>
|
||||
|
||||
@@ -105,7 +105,7 @@ export default {
|
||||
}
|
||||
},
|
||||
fetch: async(queryParams) => {
|
||||
return DictService.queryPageDict(queryParams)
|
||||
return DictService.searchDict(queryParams)
|
||||
},
|
||||
columns: [
|
||||
{ prop: 'name', label: '名称' },
|
||||
|
||||
@@ -220,7 +220,7 @@ export default {
|
||||
|
||||
.login-form-box {
|
||||
width: 360px;
|
||||
height: 370px;
|
||||
height: 390px;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@ export default {
|
||||
name: 'Dept',
|
||||
components: { Treeselect, crudOperation, rrOperation, udOperation, DateRangePicker },
|
||||
cruds() {
|
||||
return CRUD({ title: '部门', url: 'api/dept', crudMethod: { ...crudDept }})
|
||||
return CRUD({ title: '部门', url: 'api/dept', searchRouter: '/searchDept', crudMethod: { ...crudDept }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
// 设置数据字典
|
||||
@@ -175,7 +175,7 @@ export default {
|
||||
args: { pid: tree.id }
|
||||
}
|
||||
setTimeout(() => {
|
||||
crudDept.queryDeptList(params).then(res => {
|
||||
crudDept.searchDept(params).then(res => {
|
||||
resolve(res.content)
|
||||
})
|
||||
}, 100)
|
||||
@@ -195,7 +195,7 @@ export default {
|
||||
}
|
||||
},
|
||||
getSupDepts(id) {
|
||||
crudDept.queryDeptSuperiorTree(id, true).then(res => {
|
||||
crudDept.searchDeptTree(id, true).then(res => {
|
||||
const data = res.content
|
||||
this.buildDepts(data)
|
||||
this.depts = data
|
||||
@@ -212,7 +212,7 @@ export default {
|
||||
})
|
||||
},
|
||||
getDepts() {
|
||||
crudDept.queryDeptList({
|
||||
crudDept.searchDept({
|
||||
page: 1,
|
||||
size: 9999999,
|
||||
args: { enabled: true }
|
||||
@@ -228,7 +228,7 @@ export default {
|
||||
// 获取弹窗内部门数据
|
||||
loadDepts({ action, parentNode, callback }) {
|
||||
if (action === LOAD_CHILDREN_OPTIONS) {
|
||||
crudDept.queryDeptList({
|
||||
crudDept.searchDept({
|
||||
page: 1,
|
||||
size: 9999999,
|
||||
args: { enabled: true, pid: parentNode.id }
|
||||
|
||||
@@ -4,22 +4,6 @@
|
||||
<div class="my-code">点击字典查看详情</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<!--工具栏-->
|
||||
<div class="head-container">
|
||||
<div v-if="crud.props.searchToggle">
|
||||
<!-- 搜索 -->
|
||||
<el-input
|
||||
v-model="query.label"
|
||||
clearable
|
||||
size="small"
|
||||
placeholder="输入字典标签查询"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="toQuery"
|
||||
/>
|
||||
<rrOperation />
|
||||
</div>
|
||||
</div>
|
||||
<!--表单组件-->
|
||||
<el-dialog
|
||||
append-to-body
|
||||
@@ -88,20 +72,19 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crudDictDetail from '@/api/system/dictDetail'
|
||||
import crudDictDetail from '@/api/system/dict-detail'
|
||||
import CRUD, { form, header, presenter } from '@crud/crud'
|
||||
import pagination from '@crud/Pagination'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
|
||||
const defaultForm = { id: null, label: null, value: null, dictSort: 999 }
|
||||
|
||||
export default {
|
||||
components: { pagination, rrOperation, udOperation },
|
||||
components: { pagination, udOperation },
|
||||
cruds() {
|
||||
return [
|
||||
CRUD({
|
||||
title: '字典详情', url: 'api/dictDetail', query: { dictName: '' },
|
||||
title: '字典详情', url: 'api/dictDetail', searchRouter: '/searchDictDetail', query: { dictName: '' },
|
||||
crudMethod: { ...crudDictDetail },
|
||||
optShow: {
|
||||
add: true,
|
||||
|
||||
@@ -114,7 +114,7 @@ export default {
|
||||
components: { crudOperation, pagination, rrOperation, udOperation, dictDetail },
|
||||
cruds() {
|
||||
return [
|
||||
CRUD({ title: '字典', url: 'api/dict', crudMethod: { ...crudDict }})
|
||||
CRUD({ title: '字典', url: 'api/dict', searchRouter: '/searchDict', crudMethod: { ...crudDict }})
|
||||
]
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm)],
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getLastEmailConfig, modifyEmailConfig } from '@/api/system/email'
|
||||
import { getLastEmailConfig, updateEmailConfigById } from '@/api/system/email'
|
||||
|
||||
export default {
|
||||
name: 'Config',
|
||||
@@ -67,7 +67,7 @@ export default {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
modifyEmailConfig(this.form).then(res => {
|
||||
updateEmailConfigById(this.form).then(res => {
|
||||
this.$notify({
|
||||
title: '修改成功',
|
||||
type: 'success',
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { sendEmail } from '@/api/system/email'
|
||||
import { send } from '@/api/system/email'
|
||||
import { mapGetters } from 'vuex'
|
||||
import E from 'wangeditor'
|
||||
import { UploadFile } from '@/utils/CsDomUtil'
|
||||
@@ -74,7 +74,7 @@ export default {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
sendEmail(this.form).then(res => {
|
||||
send(this.form).then(res => {
|
||||
this.$notify({
|
||||
title: '发送成功',
|
||||
type: 'success',
|
||||
|
||||
@@ -70,6 +70,7 @@ export default {
|
||||
return CRUD({
|
||||
title: '岗位',
|
||||
url: 'api/job',
|
||||
searchRouter: '/searchJob',
|
||||
crudMethod: { ...crudJob }
|
||||
})
|
||||
},
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
ref="table"
|
||||
v-loading="crud.loading"
|
||||
lazy
|
||||
:load="queryMenuByArgs"
|
||||
:load="searchMenu"
|
||||
:data="crud.data"
|
||||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
||||
row-key="id"
|
||||
@@ -239,7 +239,7 @@ export default {
|
||||
name: 'Menu',
|
||||
components: { Treeselect, IconSelect, crudOperation, rrOperation, udOperation, DateRangePicker },
|
||||
cruds() {
|
||||
return CRUD({ title: '菜单', url: 'api/menu', crudMethod: { ...crudMenu }})
|
||||
return CRUD({ title: '菜单', url: 'api/menu', searchRouter: '/searchMenu', crudMethod: { ...crudMenu }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
@@ -273,14 +273,14 @@ export default {
|
||||
this.menus.push({ id: 0, label: '顶级类目', children: null })
|
||||
}
|
||||
},
|
||||
queryMenuByArgs(tree, treeNode, resolve) {
|
||||
searchMenu(tree, treeNode, resolve) {
|
||||
const params = {
|
||||
page: 1,
|
||||
size: 9999999,
|
||||
args: { pid: tree.id }
|
||||
}
|
||||
setTimeout(() => {
|
||||
crudMenu.queryMenuByArgs(params).then(res => {
|
||||
crudMenu.searchMenu(params).then(res => {
|
||||
resolve(res.content)
|
||||
})
|
||||
}, 100)
|
||||
@@ -298,7 +298,7 @@ export default {
|
||||
},
|
||||
loadMenus({ action, parentNode, callback }) {
|
||||
if (action === LOAD_CHILDREN_OPTIONS) {
|
||||
crudMenu.queryMenuListByPid(parentNode.id).then(res => {
|
||||
crudMenu.listMenuByPid(parentNode.id).then(res => {
|
||||
parentNode.children = res.map(function(obj) {
|
||||
if (!obj.leaf) {
|
||||
obj.children = null
|
||||
|
||||
@@ -85,7 +85,7 @@ export default {
|
||||
name: 'OnlineUser',
|
||||
components: { pagination, crudOperation, rrOperation },
|
||||
cruds() {
|
||||
return CRUD({ url: 'api/user/online', title: '在线用户' })
|
||||
return CRUD({ url: 'api/user/online', searchRouter: '/searchOnlineUser', title: '在线用户' })
|
||||
},
|
||||
mixins: [presenter(), header(), crud()],
|
||||
data() {
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
>日志
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<el-link type="primary" href="https://cron.ciding.cc/" target="_blank">Cron在线表达式生成</el-link>
|
||||
<Log ref="log" />
|
||||
</div>
|
||||
<!--Form表单-->
|
||||
@@ -166,7 +167,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crudJob from '@/api/system/quartzJob'
|
||||
import crudJob from '@/api/system/quartz-job'
|
||||
import Log from './log'
|
||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
@@ -192,7 +193,7 @@ export default {
|
||||
name: 'QuartzJob',
|
||||
components: { Log, pagination, crudOperation, rrOperation, DateRangePicker },
|
||||
cruds() {
|
||||
return CRUD({ title: '定时任务', url: 'api/quartzJob', crudMethod: { ...crudJob }})
|
||||
return CRUD({ title: '定时任务', url: 'api/quartzJob', searchRouter: '/searchQuartzJob', crudMethod: { ...crudJob }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
<el-pagination
|
||||
:total="total"
|
||||
:current-page="page"
|
||||
:page-size="6"
|
||||
:page-size="size"
|
||||
style="margin-top:8px;"
|
||||
layout="total, prev, pager, next"
|
||||
@size-change="sizeChange"
|
||||
@@ -109,8 +109,14 @@ export default {
|
||||
},
|
||||
// 获取数据前设置好接口地址
|
||||
beforeInit() {
|
||||
this.url = 'api/quartzJob/logs'
|
||||
this.size = 6
|
||||
this.url = 'api/quartzJob/searchQuartzLog'
|
||||
this.page = 1
|
||||
this.isCustomParams = true
|
||||
this.params = {
|
||||
jobName: this.query.jobName,
|
||||
createTime: this.query.createTime,
|
||||
isSuccess: this.query.isSuccess
|
||||
}
|
||||
return true
|
||||
},
|
||||
// 异常详情
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
</el-dialog>
|
||||
<el-row :gutter="15">
|
||||
<!--角色管理-->
|
||||
<el-col :xs="24" :sm="24" :md="16" :lg="16" :xl="17" style="margin-bottom: 10px">
|
||||
<el-col span="18" style="margin-bottom: 10px">
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">角色列表</span>
|
||||
@@ -113,7 +113,7 @@
|
||||
</el-card>
|
||||
</el-col>
|
||||
<!-- 菜单授权 -->
|
||||
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="7">
|
||||
<el-col span="6">
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<el-tooltip class="item" effect="dark" content="选择指定角色分配菜单" placement="top">
|
||||
@@ -152,8 +152,8 @@
|
||||
|
||||
<script>
|
||||
import crudRoles from '@/api/system/role'
|
||||
import { queryDeptList, queryDeptSuperiorTree } from '@/api/system/dept'
|
||||
import { queryChildMenuSet, queryMenuListByPid } from '@/api/system/menu'
|
||||
import { searchDept, searchDeptTree } from '@/api/system/dept'
|
||||
import { listChildMenuSetByMenuId, listRoleMenuByPid } from '@/api/system/menu'
|
||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
@@ -168,7 +168,7 @@ export default {
|
||||
name: 'Role',
|
||||
components: { Treeselect, pagination, crudOperation, rrOperation, udOperation, DateRangePicker },
|
||||
cruds() {
|
||||
return CRUD({ title: '角色', url: 'api/role', crudMethod: { ...crudRoles }})
|
||||
return CRUD({ title: '角色', url: 'api/role', searchRouter: '/searchRole', crudMethod: { ...crudRoles }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
@@ -190,14 +190,14 @@ export default {
|
||||
}
|
||||
},
|
||||
created() {
|
||||
crudRoles.getLevel().then(data => {
|
||||
crudRoles.getCurrentUserRoleLevel().then(data => {
|
||||
this.level = data.level
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getMenuDatas(node, resolve) {
|
||||
setTimeout(() => {
|
||||
queryMenuListByPid(node.data.id ? node.data.id : 0).then(res => {
|
||||
listRoleMenuByPid(node.data.id ? node.data.id : 0).then(res => {
|
||||
resolve(res)
|
||||
})
|
||||
}, 100)
|
||||
@@ -261,7 +261,7 @@ export default {
|
||||
},
|
||||
menuChange(menu) {
|
||||
// 获取该节点的所有子节点,id 包含自身
|
||||
queryChildMenuSet(menu.id).then(childIds => {
|
||||
listChildMenuSetByMenuId(menu.id).then(childIds => {
|
||||
// 判断是否在 menuIds 中,如果存在则删除,否则添加
|
||||
if (this.menuIds.indexOf(menu.id) !== -1) {
|
||||
for (let i = 0; i < childIds.length; i++) {
|
||||
@@ -313,7 +313,7 @@ export default {
|
||||
},
|
||||
// 获取部门数据
|
||||
getDepts() {
|
||||
queryDeptList({
|
||||
searchDept({
|
||||
page: 1,
|
||||
size: 9999999,
|
||||
args: { enabled: true }
|
||||
@@ -331,7 +331,7 @@ export default {
|
||||
depts.forEach(dept => {
|
||||
ids.push(dept.id)
|
||||
})
|
||||
queryDeptSuperiorTree(ids).then(res => {
|
||||
searchDeptTree(ids).then(res => {
|
||||
const date = res.content
|
||||
this.buildDepts(date)
|
||||
this.depts = date
|
||||
@@ -350,7 +350,7 @@ export default {
|
||||
// 获取弹窗内部门数据
|
||||
loadDepts({ action, parentNode, callback }) {
|
||||
if (action === LOAD_CHILDREN_OPTIONS) {
|
||||
queryDeptList({
|
||||
searchDept({
|
||||
page: 1,
|
||||
size: 9999999,
|
||||
args: { enabled: true, pid: parentNode.id }
|
||||
|
||||
@@ -154,7 +154,7 @@ export default {
|
||||
return {
|
||||
show: false,
|
||||
monitor: null,
|
||||
url: 'api/monitor/queryServerMonitorInfo',
|
||||
url: 'api/monitor/getServerMonitorInfo',
|
||||
data: {},
|
||||
cpuInfo: {
|
||||
tooltip: {
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import crudFile from '@/api/system/localStorage'
|
||||
import crudFile from '@/api/system/local-storage'
|
||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
@@ -136,7 +136,7 @@ const defaultForm = { id: null, name: '' }
|
||||
export default {
|
||||
components: { pagination, crudOperation, rrOperation, DateRangePicker },
|
||||
cruds() {
|
||||
return CRUD({ title: '文件', url: 'api/localStorage', crudMethod: { ...crudFile }})
|
||||
return CRUD({ title: '文件', url: 'api/localStorage', searchRouter: '/searchLocalStorage', crudMethod: { ...crudFile }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import crudFile from '@/api/system/ossStorage'
|
||||
import crudFile from '@/api/system/oss-storage'
|
||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
@@ -107,7 +107,7 @@ const defaultForm = { id: null }
|
||||
export default {
|
||||
components: { pagination, crudOperation, rrOperation, DateRangePicker },
|
||||
cruds() {
|
||||
return CRUD({ title: '文件', url: 'api/ossStorage', crudMethod: { ...crudFile }})
|
||||
return CRUD({ title: '文件', url: 'api/ossStorage', searchRouter: '/searchOssStorage', crudMethod: { ...crudFile }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
|
||||
@@ -55,8 +55,8 @@
|
||||
<svg-icon icon-class="anq" />
|
||||
安全设置
|
||||
<div class="user-right">
|
||||
<a @click="$refs.pass.dialog = true">修改密码</a>
|
||||
<a @click="$refs.email.dialog = true">修改邮箱</a>
|
||||
<el-button type="text" style="padding: 0" @click="$refs.pass.dialog = true">修改密码</el-button>
|
||||
<el-button type="text" style="padding: 0" @click="$refs.email.dialog = true">修改邮箱</el-button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -98,15 +98,15 @@
|
||||
<!-- 操作日志 -->
|
||||
<el-tab-pane label="操作日志" name="second">
|
||||
<el-table v-loading="loading" :data="data" style="width: 100%;">
|
||||
<el-table-column prop="description" label="行为" />
|
||||
<el-table-column prop="bizName" label="业务名称" />
|
||||
<el-table-column prop="requestIp" label="IP" />
|
||||
<el-table-column :show-overflow-tooltip="true" prop="address" label="IP来源" />
|
||||
<el-table-column prop="browser" label="浏览器" />
|
||||
<el-table-column prop="time" label="请求耗时" align="center">
|
||||
<el-table-column prop="browserInfo" label="浏览器" />
|
||||
<el-table-column prop="executeTime" label="请求耗时" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.time <= 300">{{ scope.row.time }}ms</el-tag>
|
||||
<el-tag v-else-if="scope.row.time <= 1000" type="warning">{{ scope.row.time }}ms</el-tag>
|
||||
<el-tag v-else type="danger">{{ scope.row.time }}ms</el-tag>
|
||||
<el-tag v-if="scope.row.executeTime <= 300">{{ scope.row.time || 0 }}ms</el-tag>
|
||||
<el-tag v-else-if="scope.row.executeTime <= 1000" type="warning">{{ scope.row.executeTime || 0 }}ms</el-tag>
|
||||
<el-tag v-else type="danger">{{ scope.row.executeTime || 0 }}ms</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -151,7 +151,7 @@ import { getToken } from '@/utils/auth'
|
||||
import store from '@/store'
|
||||
import { IsValidPhone } from '@/utils/CsValidateUtil'
|
||||
import crud from '@/mixins/crud'
|
||||
import { editUser } from '@/api/system/user'
|
||||
import { updateUserCenterInfoById } from '@/api/system/user'
|
||||
import Avatar from '@/assets/images/avatar.png'
|
||||
|
||||
export default {
|
||||
@@ -211,7 +211,7 @@ export default {
|
||||
}
|
||||
},
|
||||
beforeInit() {
|
||||
this.url = 'api/logs/user'
|
||||
this.url = 'api/logs/searchUserLog'
|
||||
return true
|
||||
},
|
||||
cropUploadSuccess(jsonData, field) {
|
||||
@@ -223,7 +223,7 @@ export default {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.saveLoading = true
|
||||
editUser(this.form).then(() => {
|
||||
updateUserCenterInfoById(this.form).then(() => {
|
||||
this.editSuccessNotify()
|
||||
store.dispatch('GetInfo').then(() => {
|
||||
})
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
|
||||
<script>
|
||||
import store from '@/store'
|
||||
import { validEmail } from '@/utils/CsValidateUtil'
|
||||
import { updateEmail } from '@/api/system/user'
|
||||
import { sendResetEmailCaptcha } from '@/api/system/code'
|
||||
import { IsValidEmail } from '@/utils/CsValidateUtil'
|
||||
import { updateUserEmailByUsername } from '@/api/system/user'
|
||||
import { sendResetEmailCode } from '@/api/system/code'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
@@ -51,7 +51,7 @@ export default {
|
||||
callback(new Error('新邮箱不能为空'))
|
||||
} else if (value === this.email) {
|
||||
callback(new Error('新邮箱不能与旧邮箱相同'))
|
||||
} else if (validEmail(value)) {
|
||||
} else if (IsValidEmail(value)) {
|
||||
callback()
|
||||
} else {
|
||||
callback(new Error('邮箱格式错误'))
|
||||
@@ -83,7 +83,7 @@ export default {
|
||||
this.codeLoading = true
|
||||
this.buttonName = '验证码发送中'
|
||||
const _this = this
|
||||
sendResetEmailCaptcha(this.form.email).then(res => {
|
||||
sendResetEmailCode(this.form.email).then(res => {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '发送成功,验证码有效期5分钟',
|
||||
@@ -113,7 +113,7 @@ export default {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
updateEmail(this.form).then(res => {
|
||||
updateUserEmailByUsername(this.form).then(res => {
|
||||
this.loading = false
|
||||
this.resetForm()
|
||||
this.$notify({
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
<script>
|
||||
import store from '@/store'
|
||||
import { updatePass } from '@/api/system/user'
|
||||
import { updateUserPasswordByUsername } from '@/api/system/user'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@@ -69,7 +69,7 @@ export default {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
updatePass(this.form).then(res => {
|
||||
updateUserPasswordByUsername(this.form).then(res => {
|
||||
this.resetForm()
|
||||
this.$notify({
|
||||
title: '密码修改成功,请重新登录',
|
||||
|
||||
@@ -196,9 +196,9 @@
|
||||
<script>
|
||||
import crudUser from '@/api/system/user'
|
||||
import { IsValidPhone } from '@/utils/CsValidateUtil'
|
||||
import { queryDeptList, queryDeptSuperiorTree } from '@/api/system/dept'
|
||||
import { getLevel, queryRoleList } from '@/api/system/role'
|
||||
import { queryAllEnableJob } from '@/api/system/job'
|
||||
import { searchDept, searchDeptTree } from '@/api/system/dept'
|
||||
import { getCurrentUserRoleLevel, listAllRole } from '@/api/system/role'
|
||||
import { searchJob } from '@/api/system/job'
|
||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
@@ -228,7 +228,7 @@ export default {
|
||||
name: 'User',
|
||||
components: { CuteDeptTree, Treeselect, crudOperation, rrOperation, udOperation, pagination, DateRangePicker },
|
||||
cruds() {
|
||||
return CRUD({ title: '用户', url: 'api/user', crudMethod: { ...crudUser }})
|
||||
return CRUD({ title: '用户', url: 'api/user', searchRouter: '/aggregationSearchUser', crudMethod: { ...crudUser }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
// 数据字典
|
||||
@@ -401,7 +401,7 @@ export default {
|
||||
this.crud.toQuery()
|
||||
},
|
||||
getDepts() {
|
||||
queryDeptList({
|
||||
searchDept({
|
||||
page: 1,
|
||||
size: 9999999,
|
||||
args: { enabled: true }
|
||||
@@ -415,7 +415,7 @@ export default {
|
||||
})
|
||||
},
|
||||
getSupDepts(deptId) {
|
||||
queryDeptSuperiorTree(deptId).then(res => {
|
||||
searchDeptTree(deptId).then(res => {
|
||||
const date = res.content
|
||||
this.buildDepts(date)
|
||||
this.depts = date
|
||||
@@ -434,7 +434,7 @@ export default {
|
||||
// 获取弹窗内部门数据
|
||||
loadDepts({ action, parentNode, callback }) {
|
||||
if (action === LOAD_CHILDREN_OPTIONS) {
|
||||
queryDeptList({
|
||||
searchDept({
|
||||
page: 1,
|
||||
size: 9999999,
|
||||
args: { enabled: true, pid: parentNode.id }
|
||||
@@ -469,21 +469,21 @@ export default {
|
||||
},
|
||||
// 获取弹窗内角色数据
|
||||
getRoles() {
|
||||
queryRoleList().then(res => {
|
||||
listAllRole().then(res => {
|
||||
this.roles = res
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
// 获取弹窗内岗位数据
|
||||
getJobs() {
|
||||
queryAllEnableJob().then(res => {
|
||||
searchJob().then(res => {
|
||||
this.jobs = res.content
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
// 获取权限级别
|
||||
getRoleLevel() {
|
||||
getLevel().then(res => {
|
||||
getCurrentUserRoleLevel().then(res => {
|
||||
this.level = res.level
|
||||
}).catch(() => {
|
||||
})
|
||||
@@ -502,7 +502,7 @@ export default {
|
||||
ids.push(val.id)
|
||||
})
|
||||
console.log(ids)
|
||||
crudUser.resetPwd(ids).then(() => {
|
||||
crudUser.resetUserPasswordByIds(ids).then(() => {
|
||||
this.crud.notify('重置成功, 用户新密码:123456', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
}).catch(() => {
|
||||
})
|
||||
|
||||
@@ -41,6 +41,13 @@ module.exports = {
|
||||
pathRewrite: {
|
||||
'^/auth': 'auth'
|
||||
}
|
||||
},
|
||||
'/captcha': {
|
||||
target: process.env.VUE_APP_BASE_API,
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
'^/captcha': 'captcha'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>cutejava</artifactId>
|
||||
<groupId>cn.odboy</groupId>
|
||||
<version>1.4.1</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>cutejava-framework</artifactId>
|
||||
<name>公共模块</name>
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>cutejava</artifactId>
|
||||
<groupId>cn.odboy</groupId>
|
||||
<version>1.5.2</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>cutejava-framework</artifactId>
|
||||
<name>公共模块</name>
|
||||
</project>
|
||||
+7
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -15,7 +15,12 @@
|
||||
*/
|
||||
package cn.odboy.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Inherited;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* 用于标记匿名访问方法
|
||||
|
||||
+34
-32
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,15 +13,17 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* Annotation for mapping HTTP {@code DELETE} requests onto specific handler methods. 支持匿名访问 DeleteMapping
|
||||
*
|
||||
@@ -38,38 +40,38 @@ import java.lang.annotation.*;
|
||||
@RequestMapping(method = RequestMethod.DELETE)
|
||||
public @interface AnonymousDeleteMapping {
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#name}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String name() default "";
|
||||
/**
|
||||
* Alias for {@link RequestMapping#name}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String name() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#value}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] value() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#value}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] value() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#path}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] path() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#path}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] path() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#params}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] params() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#params}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] params() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#headers}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] headers() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#headers}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] headers() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#consumes}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#consumes}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#produces}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] produces() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#produces}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] produces() default {};
|
||||
}
|
||||
|
||||
+36
-34
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,15 +13,17 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* Annotation for mapping HTTP {@code GET} requests onto specific handler methods.
|
||||
* <p>
|
||||
@@ -36,40 +38,40 @@ import java.lang.annotation.*;
|
||||
@RequestMapping(method = RequestMethod.GET)
|
||||
public @interface AnonymousGetMapping {
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#name}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String name() default "";
|
||||
/**
|
||||
* Alias for {@link RequestMapping#name}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String name() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#value}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] value() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#value}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] value() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#path}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] path() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#path}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] path() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#params}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] params() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#params}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] params() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#headers}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] headers() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#headers}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] headers() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#consumes}.
|
||||
*
|
||||
* @since 4.3.5
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#consumes}.
|
||||
*
|
||||
* @since 4.3.5
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#produces}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] produces() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#produces}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] produces() default {};
|
||||
}
|
||||
|
||||
+34
-32
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,15 +13,17 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* Annotation for mapping HTTP {@code PATCH} requests onto specific handler methods. 支持匿名访问 PatchMapping
|
||||
*
|
||||
@@ -38,38 +40,38 @@ import java.lang.annotation.*;
|
||||
@RequestMapping(method = RequestMethod.PATCH)
|
||||
public @interface AnonymousPatchMapping {
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#name}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String name() default "";
|
||||
/**
|
||||
* Alias for {@link RequestMapping#name}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String name() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#value}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] value() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#value}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] value() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#path}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] path() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#path}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] path() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#params}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] params() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#params}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] params() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#headers}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] headers() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#headers}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] headers() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#consumes}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#consumes}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#produces}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] produces() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#produces}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] produces() default {};
|
||||
}
|
||||
|
||||
+34
-32
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,15 +13,17 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* Annotation for mapping HTTP {@code POST} requests onto specific handler methods. 支持匿名访问 PostMapping
|
||||
*
|
||||
@@ -38,38 +40,38 @@ import java.lang.annotation.*;
|
||||
@RequestMapping(method = RequestMethod.POST)
|
||||
public @interface AnonymousPostMapping {
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#name}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String name() default "";
|
||||
/**
|
||||
* Alias for {@link RequestMapping#name}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String name() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#value}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] value() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#value}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] value() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#path}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] path() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#path}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] path() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#params}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] params() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#params}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] params() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#headers}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] headers() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#headers}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] headers() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#consumes}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#consumes}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#produces}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] produces() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#produces}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] produces() default {};
|
||||
}
|
||||
|
||||
+34
-32
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,15 +13,17 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* Annotation for mapping HTTP {@code PUT} requests onto specific handler methods. 支持匿名访问 PutMapping
|
||||
*
|
||||
@@ -38,38 +40,38 @@ import java.lang.annotation.*;
|
||||
@RequestMapping(method = RequestMethod.PUT)
|
||||
public @interface AnonymousPutMapping {
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#name}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String name() default "";
|
||||
/**
|
||||
* Alias for {@link RequestMapping#name}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String name() default "";
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#value}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] value() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#value}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] value() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#path}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] path() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#path}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] path() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#params}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] params() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#params}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] params() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#headers}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] headers() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#headers}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] headers() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#consumes}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#consumes}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
|
||||
|
||||
/**
|
||||
* Alias for {@link RequestMapping#produces}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] produces() default {};
|
||||
/**
|
||||
* Alias for {@link RequestMapping#produces}.
|
||||
*/
|
||||
@AliasFor(annotation = RequestMapping.class) String[] produces() default {};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,7 +13,6 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
@@ -27,17 +26,20 @@ import lombok.Setter;
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
public class KitArgs {
|
||||
@Getter
|
||||
@Setter
|
||||
public static class FindByLongId extends KitObject {
|
||||
@NotNull(message = "id必填")
|
||||
private Long id;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public static class DeleteById extends KitObject {
|
||||
@NotNull(message = "id必填")
|
||||
private Long id;
|
||||
}
|
||||
@Getter
|
||||
@Setter
|
||||
public static class FindByLongId extends KitObject {
|
||||
|
||||
@NotNull(message = "id必填")
|
||||
private Long id;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public static class DeleteById extends KitObject {
|
||||
|
||||
@NotNull(message = "id必填")
|
||||
private Long id;
|
||||
}
|
||||
}
|
||||
|
||||
+7
-8
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,23 +13,22 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.Date;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class KitBaseCreateTimeTb extends KitObject {
|
||||
@Schema(name = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@ApiModelProperty(value = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date createTime;
|
||||
}
|
||||
|
||||
+9
-11
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,27 +13,25 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.Date;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class KitBaseTimeTb extends KitObject {
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(name = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date createTime;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(name = "更新时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date updateTime;
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@ApiModelProperty(value = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date createTime;
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@ApiModelProperty(value = "更新时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date updateTime;
|
||||
}
|
||||
|
||||
+7
-8
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,23 +13,22 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.Date;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class KitBaseUpdateTimeTb extends KitObject {
|
||||
@Schema(name = "更新时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private Date updateTime;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@ApiModelProperty(value = "更新时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date updateTime;
|
||||
}
|
||||
|
||||
+33
-33
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,55 +13,55 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Date;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.springframework.data.annotation.CreatedBy;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Date;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class KitBaseUserCreateTimeTb extends KitObject {
|
||||
|
||||
@CreatedBy
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(name = "创建人", hidden = true)
|
||||
private String createBy;
|
||||
@CreatedBy
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@ApiModelProperty(value = "创建人", hidden = true)
|
||||
private String
|
||||
createBy;
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@ApiModelProperty(value = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date createTime;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(name = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date createTime;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
ToStringBuilder builder = new ToStringBuilder(this);
|
||||
Field[] fields = this.getClass().getDeclaredFields();
|
||||
try {
|
||||
for (Field f : fields) {
|
||||
f.setAccessible(true);
|
||||
builder.append(f.getName(), f.get(this)).append("\n");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
builder.append("toString builder encounter an error");
|
||||
}
|
||||
return builder.toString();
|
||||
@Override
|
||||
public String toString() {
|
||||
ToStringBuilder builder = new ToStringBuilder(this);
|
||||
Field[] fields = this.getClass().getDeclaredFields();
|
||||
try {
|
||||
for (Field f : fields) {
|
||||
f.setAccessible(true);
|
||||
builder.append(f.getName(), f.get(this)).append("\n");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
builder.append("toString builder encounter an error");
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/* 分组校验 */
|
||||
public @interface Create {
|
||||
}
|
||||
/* 分组校验 */
|
||||
public @interface Create {
|
||||
|
||||
/* 分组校验 */
|
||||
public @interface Update {
|
||||
}
|
||||
}
|
||||
|
||||
/* 分组校验 */
|
||||
public @interface Update {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+23
-23
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,20 +13,18 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.Date;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.data.annotation.CreatedBy;
|
||||
import org.springframework.data.annotation.LastModifiedBy;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 逻辑删除通用模型
|
||||
*
|
||||
@@ -36,22 +34,24 @@ import java.util.Date;
|
||||
@Getter
|
||||
@Setter
|
||||
public class KitBaseUserTimeLogicTb extends KitObject {
|
||||
@CreatedBy
|
||||
@TableField(value = "create_by", fill = FieldFill.INSERT)
|
||||
@Schema(name = "创建人", hidden = true)
|
||||
private String createBy;
|
||||
@LastModifiedBy
|
||||
@TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(name = "更新人", hidden = true)
|
||||
private String updateBy;
|
||||
@TableField(value = "create_time", fill = FieldFill.INSERT)
|
||||
@Schema(name = "创建时间", hidden = true)
|
||||
private Date createTime;
|
||||
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(name = "更新时间", hidden = true)
|
||||
private Date updateTime;
|
||||
@Schema(name = "数据有效性", hidden = true)
|
||||
@TableLogic
|
||||
@TableField("available")
|
||||
private Integer available;
|
||||
|
||||
@CreatedBy
|
||||
@TableField(value = "create_by", fill = FieldFill.INSERT)
|
||||
@ApiModelProperty(value = "创建人", hidden = true)
|
||||
private String createBy;
|
||||
@LastModifiedBy
|
||||
@TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
|
||||
@ApiModelProperty(value = "更新人", hidden = true)
|
||||
private String updateBy;
|
||||
@TableField(value = "create_time", fill = FieldFill.INSERT)
|
||||
@ApiModelProperty(value = "创建时间", hidden = true)
|
||||
private Date createTime;
|
||||
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
|
||||
@ApiModelProperty(value = "更新时间", hidden = true)
|
||||
private Date updateTime;
|
||||
@ApiModelProperty(value = "数据有效性", hidden = true)
|
||||
@TableLogic
|
||||
@TableField("available")
|
||||
private Integer
|
||||
available;
|
||||
}
|
||||
|
||||
+40
-42
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,12 +13,13 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Date;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -26,52 +27,49 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.springframework.data.annotation.CreatedBy;
|
||||
import org.springframework.data.annotation.LastModifiedBy;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Date;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class KitBaseUserTimeTb extends KitObject {
|
||||
|
||||
@CreatedBy
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(name = "创建人", hidden = true)
|
||||
private String createBy;
|
||||
@CreatedBy
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@ApiModelProperty(value = "创建人", hidden = true)
|
||||
private String
|
||||
createBy;
|
||||
@LastModifiedBy
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@ApiModelProperty(value = "更新人", hidden = true)
|
||||
private String updateBy;
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@ApiModelProperty(value = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date createTime;
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@ApiModelProperty(value = "更新时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date updateTime;
|
||||
|
||||
@LastModifiedBy
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(name = "更新人", hidden = true)
|
||||
private String updateBy;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(name = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date createTime;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(name = "更新时间: yyyy-MM-dd HH:mm:ss", hidden = true)
|
||||
private Date updateTime;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
ToStringBuilder builder = new ToStringBuilder(this);
|
||||
Field[] fields = this.getClass().getDeclaredFields();
|
||||
try {
|
||||
for (Field f : fields) {
|
||||
f.setAccessible(true);
|
||||
builder.append(f.getName(), f.get(this)).append("\n");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
builder.append("toString builder encounter an error");
|
||||
}
|
||||
return builder.toString();
|
||||
@Override
|
||||
public String toString() {
|
||||
ToStringBuilder builder = new ToStringBuilder(this);
|
||||
Field[] fields = this.getClass().getDeclaredFields();
|
||||
try {
|
||||
for (Field f : fields) {
|
||||
f.setAccessible(true);
|
||||
builder.append(f.getName(), f.get(this)).append("\n");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
builder.append("toString builder encounter an error");
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/* 分组校验 */
|
||||
public @interface Create {
|
||||
}
|
||||
/* 分组校验 */
|
||||
public @interface Create {
|
||||
|
||||
/* 分组校验 */
|
||||
public @interface Update {
|
||||
}
|
||||
}
|
||||
|
||||
/* 分组校验 */
|
||||
public @interface Update {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,10 +13,8 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
@@ -26,6 +24,6 @@ import java.io.Serializable;
|
||||
* @date 2022-01-12
|
||||
*/
|
||||
public class KitObject implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
||||
|
||||
+13
-14
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,18 +13,16 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.io.Serializable;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 数据分页参数
|
||||
*
|
||||
@@ -35,13 +33,14 @@ import java.io.Serializable;
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class KitPageArgs<T> implements Serializable {
|
||||
@NotNull(message = "参数page不能为空")
|
||||
@Min(value = 1, message = "参数page最小值为1")
|
||||
@Schema(name = "页码", example = "1")
|
||||
private Integer page;
|
||||
@NotNull(message = "参数size不能为空")
|
||||
@Min(value = 1, message = "参数size最小值为1")
|
||||
@Schema(name = "每页数据量", example = "10")
|
||||
private Integer size;
|
||||
private T args;
|
||||
|
||||
@NotNull(message = "参数page不能为空")
|
||||
@Min(value = 1, message = "参数page最小值为1")
|
||||
@ApiModelProperty(value = "页码", example = "1")
|
||||
private Integer page;
|
||||
@NotNull(message = "参数size不能为空")
|
||||
@Min(value = 1, message = "参数size最小值为1")
|
||||
@ApiModelProperty(value = "每页数据量", example = "10")
|
||||
private Integer size;
|
||||
private T args;
|
||||
}
|
||||
|
||||
+18
-19
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,18 +13,16 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 结果封装类
|
||||
*/
|
||||
@@ -33,20 +31,21 @@ import java.util.List;
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class KitPageResult<T> extends KitObject {
|
||||
private List<T> content;
|
||||
private long totalElements;
|
||||
|
||||
public static <T> KitPageResult<T> emptyListData() {
|
||||
KitPageResult<T> result = new KitPageResult<>();
|
||||
result.setTotalElements(0);
|
||||
result.setContent(new ArrayList<>());
|
||||
return result;
|
||||
}
|
||||
private List<T> content;
|
||||
private long totalElements;
|
||||
|
||||
public static <T> KitPageResult<T> listData(IPage<T> page) {
|
||||
KitPageResult<T> result = new KitPageResult<>();
|
||||
result.setTotalElements(page.getTotal());
|
||||
result.setContent(page.getRecords());
|
||||
return result;
|
||||
}
|
||||
public static <T> KitPageResult<T> emptyListData() {
|
||||
KitPageResult<T> result = new KitPageResult<>();
|
||||
result.setTotalElements(0);
|
||||
result.setContent(new ArrayList<>());
|
||||
return result;
|
||||
}
|
||||
|
||||
public static <T> KitPageResult<T> listData(IPage<T> page) {
|
||||
KitPageResult<T> result = new KitPageResult<>();
|
||||
result.setTotalElements(page.getTotal());
|
||||
result.setContent(page.getRecords());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
+10
-7
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,12 +13,14 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.base;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import java.util.Map;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 元数据选项
|
||||
@@ -32,7 +34,8 @@ import java.util.Map;
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class KitSelectOptionVo extends KitObject {
|
||||
private String label;
|
||||
private String value;
|
||||
private Map<String, Object> ext;
|
||||
|
||||
private String label;
|
||||
private String value;
|
||||
private Map<String, Object> ext;
|
||||
}
|
||||
|
||||
+21
-22
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,31 +13,30 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.constant;
|
||||
|
||||
/**
|
||||
* 验证码配置枚举
|
||||
*/
|
||||
public enum CaptchaCodeEnum {
|
||||
/**
|
||||
* 算数
|
||||
*/
|
||||
ARITHMETIC,
|
||||
/**
|
||||
* 中文
|
||||
*/
|
||||
CHINESE,
|
||||
/**
|
||||
* 中文闪图
|
||||
*/
|
||||
CHINESE_GIF,
|
||||
/**
|
||||
* 闪图
|
||||
*/
|
||||
GIF,
|
||||
/**
|
||||
* 静态
|
||||
*/
|
||||
SPEC
|
||||
/**
|
||||
* 算数
|
||||
*/
|
||||
ARITHMETIC,
|
||||
/**
|
||||
* 中文
|
||||
*/
|
||||
CHINESE,
|
||||
/**
|
||||
* 中文闪图
|
||||
*/
|
||||
CHINESE_GIF,
|
||||
/**
|
||||
* 闪图
|
||||
*/
|
||||
GIF,
|
||||
/**
|
||||
* 静态
|
||||
*/
|
||||
SPEC
|
||||
}
|
||||
|
||||
+5
-7
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,7 +13,6 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.constant;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -22,9 +21,8 @@ import lombok.Getter;
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum FileTypeEnum {
|
||||
/* 文件类型 */
|
||||
IMAGE("image", "图片"), DOC("doc", "文档"), VOICE("voice", "音频"), VIDEO("video", "视频"), OTHER("other", "其他");
|
||||
|
||||
private final String code;
|
||||
private final String description;
|
||||
/* 文件类型 */
|
||||
IMAGE("image", "图片"), DOC("doc", "文档"), VOICE("voice", "音频"), VIDEO("video", "视频"), OTHER("other", "其他");
|
||||
private final String code;
|
||||
private final String description;
|
||||
}
|
||||
|
||||
+36
-44
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,7 +13,6 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.constant;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -22,48 +21,41 @@ import lombok.Getter;
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum RequestMethodEnum {
|
||||
/**
|
||||
* 搜寻 @AnonymousGetMapping
|
||||
*/
|
||||
GET("GET"),
|
||||
/**
|
||||
* 搜寻 @AnonymousPostMapping
|
||||
*/
|
||||
POST("POST"),
|
||||
/**
|
||||
* 搜寻 @AnonymousPutMapping
|
||||
*/
|
||||
PUT("PUT"),
|
||||
/**
|
||||
* 搜寻 @AnonymousPatchMapping
|
||||
*/
|
||||
PATCH("PATCH"),
|
||||
/**
|
||||
* 搜寻 @AnonymousDeleteMapping
|
||||
*/
|
||||
DELETE("DELETE"),
|
||||
/**
|
||||
* 否则就是所有 Request 接口都放行
|
||||
*/
|
||||
ALL("All");
|
||||
/**
|
||||
* Request 类型
|
||||
*/
|
||||
private final String type;
|
||||
|
||||
/**
|
||||
* 搜寻 @AnonymousGetMapping
|
||||
*/
|
||||
GET("GET"),
|
||||
|
||||
/**
|
||||
* 搜寻 @AnonymousPostMapping
|
||||
*/
|
||||
POST("POST"),
|
||||
|
||||
/**
|
||||
* 搜寻 @AnonymousPutMapping
|
||||
*/
|
||||
PUT("PUT"),
|
||||
|
||||
/**
|
||||
* 搜寻 @AnonymousPatchMapping
|
||||
*/
|
||||
PATCH("PATCH"),
|
||||
|
||||
/**
|
||||
* 搜寻 @AnonymousDeleteMapping
|
||||
*/
|
||||
DELETE("DELETE"),
|
||||
|
||||
/**
|
||||
* 否则就是所有 Request 接口都放行
|
||||
*/
|
||||
ALL("All");
|
||||
|
||||
/**
|
||||
* Request 类型
|
||||
*/
|
||||
private final String type;
|
||||
|
||||
public static RequestMethodEnum find(String type) {
|
||||
for (RequestMethodEnum value : RequestMethodEnum.values()) {
|
||||
if (value.getType().equals(type)) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return ALL;
|
||||
public static RequestMethodEnum find(String type) {
|
||||
for (RequestMethodEnum value : RequestMethodEnum.values()) {
|
||||
if (value.getType().equals(type)) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return ALL;
|
||||
}
|
||||
}
|
||||
|
||||
+29
-31
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -13,41 +13,39 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package cn.odboy.constant;
|
||||
|
||||
/**
|
||||
* 常用静态常量
|
||||
*/
|
||||
public interface SystemConst {
|
||||
/**
|
||||
* win 系统
|
||||
*/
|
||||
String WIN = "win";
|
||||
|
||||
/**
|
||||
* mac 系统
|
||||
*/
|
||||
String MAC = "mac";
|
||||
|
||||
/**
|
||||
* 请求头名称
|
||||
*/
|
||||
String HEADER_NAME = "Authorization";
|
||||
|
||||
/**
|
||||
* Token前缀
|
||||
*/
|
||||
String TOKEN_PREFIX = "Bearer";
|
||||
|
||||
/**
|
||||
* 小数点
|
||||
*/
|
||||
String SYMBOL_DOT = ".";
|
||||
String SYMBOL_EQUAL = "=";
|
||||
String SYMBOL_ADD = "+";
|
||||
String SYMBOL_SUBTRACT = "-";
|
||||
String SYMBOL_AT = "@";
|
||||
String PROPERTY_OS_NAME = "os.name";
|
||||
String OS_NAME_WINDOWS = "Windows";
|
||||
/**
|
||||
* win 系统
|
||||
*/
|
||||
String WIN = "win";
|
||||
/**
|
||||
* mac 系统
|
||||
*/
|
||||
String MAC = "mac";
|
||||
/**
|
||||
* 请求头名称
|
||||
*/
|
||||
String HEADER_NAME = "Authorization";
|
||||
/**
|
||||
* Token前缀
|
||||
*/
|
||||
String TOKEN_PREFIX = "Bearer";
|
||||
/**
|
||||
* 小数点
|
||||
*/
|
||||
String SYMBOL_DOT = ".";
|
||||
String SYMBOL_EQUAL = "=";
|
||||
String SYMBOL_ADD = "+";
|
||||
String SYMBOL_SUBTRACT = "-";
|
||||
String SYMBOL_AT = "@";
|
||||
String PROPERTY_OS_NAME = "os.name";
|
||||
String OS_NAME_WINDOWS = "Windows";
|
||||
String CURRENT_APP_NAME = "cutejava";
|
||||
String CURRENT_APP_TITLE = "CuteJava";
|
||||
}
|
||||
|
||||
+6
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -30,8 +30,9 @@ import org.springframework.stereotype.Component;
|
||||
@Slf4j
|
||||
@Component
|
||||
public class BeanLoadFinishListener implements ApplicationListener<ContextRefreshedEvent> {
|
||||
@Override
|
||||
public void onApplicationEvent(ContextRefreshedEvent event) {
|
||||
log.info("所有的Bean都加载完毕了");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ContextRefreshedEvent event) {
|
||||
log.info("所有的Bean都加载完毕了");
|
||||
}
|
||||
}
|
||||
+22
-21
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2021-2025 Odboy
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -17,14 +17,13 @@
|
||||
package cn.odboy.framework.context;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
/**
|
||||
* 主要目的是输出应用的服务地址
|
||||
*
|
||||
@@ -33,22 +32,24 @@ import java.net.UnknownHostException;
|
||||
*/
|
||||
@Slf4j
|
||||
public class BootApplication {
|
||||
protected static void inited(ConfigurableApplicationContext application) throws UnknownHostException {
|
||||
Environment env = application.getEnvironment();
|
||||
String ip = InetAddress.getLocalHost().getHostAddress();
|
||||
String port = env.getProperty("server.port");
|
||||
String path = StrUtil.isEmpty(env.getProperty("config.servlet.context-path")) ? "" : env.getProperty("config.servlet.context-path");
|
||||
log.info("""
|
||||
----------------------------------------------------------
|
||||
\tApplication is running! Access URLs:
|
||||
\tLocal: \t\thttp://localhost:{}{}
|
||||
\tExternal: \thttp://{}:{}{}
|
||||
\tSwagger文档: \thttp://{}:{}{}/doc.html
|
||||
----------------------------------------------------------""", port, path, ip, port, path, ip, port, path);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public KitSpringBeanHolder springBeanHolder() {
|
||||
return new KitSpringBeanHolder();
|
||||
}
|
||||
protected static void inited(ConfigurableApplicationContext application) throws UnknownHostException {
|
||||
Environment env = application.getEnvironment();
|
||||
String ip = InetAddress.getLocalHost().getHostAddress();
|
||||
String port = env.getProperty("server.port");
|
||||
String path = StrUtil.isEmpty(env.getProperty("config.servlet.context-path")) ? ""
|
||||
: env.getProperty("config.servlet.context-path");
|
||||
log.info("""
|
||||
----------------------------------------------------------
|
||||
\tApplication is running! Access URLs:
|
||||
\tLocal: \t\thttp://localhost:{}{}
|
||||
\tExternal: \thttp://{}:{}{}
|
||||
\tSwagger文档: \thttp://{}:{}{}/doc.html
|
||||
----------------------------------------------------------""", port, path, ip, port, path, ip, port, path);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public KitSpringBeanHolder springBeanHolder() {
|
||||
return new KitSpringBeanHolder();
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user