Compare commits

..

39 Commits

Author SHA1 Message Date
李佳航
0de59dd77d Merge pull request #70 from dromara/dev
Dev
2024-12-10 09:58:59 +08:00
lijiahang
d0b25c38a6 Merge remote-tracking branch 'origin/dev' into dev 2024-12-09 15:28:11 +08:00
lijiahang
9fe2531d2f 📝 修改介绍. 2024-12-09 15:28:03 +08:00
lijiahangmax
28ce2317c0 merge dev into dev
合并

Created-by: liushaoshuai
Author-id: 3003091
MR-id: 5446172
Commit-by: liushaoshuai
Merged-by: lijiahangmax
E2E-issues: 
Description: ⬆️ 升级 orion-kit 版本. 

See merge request: dromara/orion-visor!15
2024-12-09 15:25:26 +08:00
liushaoshuai
f38ae06fa0 ⬆️ 升级 orion-kit 版本.
Signed-off-by: liushaoshuai <liushaoshuai@noreply.gitcode.com>
2024-12-09 15:23:27 +08:00
lijiahangmax
e434d85ea5 merge dev into dev
修改文档

Created-by: liushaoshuai
Author-id: 3003091
MR-id: 5361842
Commit-by: liushaoshuai
Merged-by: lijiahangmax
E2E-issues: 
Description: 📝修改文档. 

See merge request: dromara/orion-visor!14
2024-12-06 13:59:08 +08:00
liushaoshuai
d303406332 📝修改文档.
Signed-off-by: liushaoshuai <liushaoshuai@noreply.gitcode.com>
2024-12-06 13:58:09 +08:00
lijiahangmax
952d63b282 merge dev into dev
PR#1

Created-by: SuperOwn
Author-id: 3000065
MR-id: 5350395
Commit-by: SuperOwn
Merged-by: lijiahangmax
E2E-issues: 
Description: 🔖 升级版本. 

See merge request: dromara/orion-visor!13
2024-12-06 12:11:59 +08:00
SuperOwn
cffb3c9e90 🔖 升级版本.
Signed-off-by: SuperOwn <SuperOwn@noreply.gitcode.com>
2024-12-06 12:10:56 +08:00
lijiahangmax
d828d4a754 merge dev into dev
升级版本

Created-by: orionsec
Author-id: 3000702
MR-id: 5345512
Commit-by: orionsec
Merged-by: lijiahangmax
E2E-issues: 
Description: 🔖 升级版本. 

See merge request: dromara/orion-visor!12
2024-12-06 11:41:29 +08:00
orionsec
30ff601078 🔖 升级版本.
Signed-off-by: orionsec <orionsec@noreply.gitcode.com>
2024-12-06 11:40:36 +08:00
lijiahangmax
eb18f4281a merge dev into dev
禁用缓存

Created-by: orionsec
Author-id: 3000702
MR-id: 5345037
Commit-by: orionsec
Merged-by: lijiahangmax
E2E-issues: 
Description: 🔖 升级版本. 
🐳 禁用缓存. 

See merge request: dromara/orion-visor!11
2024-12-06 11:37:45 +08:00
orionsec
b850aa1f7f 🐳 禁用缓存.
Signed-off-by: orionsec <orionsec@noreply.gitcode.com>
2024-12-06 11:36:50 +08:00
orionsec
100b5e8740 🔖 升级版本.
Signed-off-by: orionsec <orionsec@noreply.gitcode.com>
2024-12-06 11:36:25 +08:00
lijiahangmax
148d9f1201 merge dev into dev
PR

Created-by: orionsec
Author-id: 3000702
MR-id: 5344615
Commit-by: orionsec
Merged-by: lijiahangmax
E2E-issues: 
Description: 🔖 升级版本. 

See merge request: dromara/orion-visor!10
2024-12-06 11:33:29 +08:00
orionsec
88ddc7c4b2 🔖 升级版本.
Signed-off-by: orionsec <orionsec@noreply.gitcode.com>
2024-12-06 11:31:10 +08:00
lijiahangmax
4a2c01fba6 merge dev into dev
merge

Created-by: SuperOwn
Author-id: 3000065
MR-id: 5343257
Commit-by: SuperOwn
Merged-by: lijiahangmax
E2E-issues: 
Description: 🔖 升级版本. 

See merge request: dromara/orion-visor!8
2024-12-06 11:20:14 +08:00
SuperOwn
45c83f6080 🔖 升级版本.
Signed-off-by: SuperOwn <SuperOwn@noreply.gitcode.com>
2024-12-06 11:19:27 +08:00
lijiahangmax
08a0eeb6b5 merge dev into dev
修改版本

Created-by: SuperOwn
Author-id: 3000065
MR-id: 5343027
Commit-by: SuperOwn
Merged-by: lijiahangmax
E2E-issues: 
Description: 🔖 升级版本. 

See merge request: dromara/orion-visor!7
2024-12-06 11:18:31 +08:00
SuperOwn
73b034b27c 🔖 升级版本.
Signed-off-by: SuperOwn <SuperOwn@noreply.gitcode.com>
2024-12-06 11:16:06 +08:00
lijiahang
95a31d613d Merge remote-tracking branch 'origin/dev' into dev 2024-12-06 10:53:44 +08:00
lijiahangmax
8027d39938 merge dev into dev
merge

Created-by: chaoyuyu
Author-id: 2987168
MR-id: 5338562
Commit-by: chaoyuyu
Merged-by: lijiahangmax
E2E-issues: 
Description: update: 更新文件 build.sh 

See merge request: dromara/orion-visor!5
2024-12-06 10:51:33 +08:00
chaoyuyu
e3d33295fe update: 更新文件 build.sh
Signed-off-by: chaoyuyu <chaoyuyu@noreply.gitcode.com>
2024-12-06 10:46:09 +08:00
lijiahangmax
691c61613f merge dev into dev
合并

Created-by: opensources
Author-id: 2983898
MR-id: 5338447
Commit-by: opensources
Merged-by: lijiahangmax
E2E-issues: 
Description: 🐳 修改 docker 版本. 
🔖 升级版本. 

See merge request: dromara/orion-visor!4
2024-12-06 10:42:56 +08:00
opensources
a75ce2143d 🔖 升级版本.
Signed-off-by: opensources <opensources@noreply.gitcode.com>
2024-12-06 10:35:37 +08:00
opensources
cb828e5684 🐳 修改 docker 版本.
Signed-off-by: opensources <opensources@noreply.gitcode.com>
2024-12-06 10:34:30 +08:00
lijiahangmax
168f193416 merge dev into dev
修改 docker

Created-by: opensources
Author-id: 2983898
MR-id: 5338443
Commit-by: opensources
Merged-by: lijiahangmax
E2E-issues: 
Description: 🐳 修改版本. 

See merge request: dromara/orion-visor!3
2024-12-06 10:32:00 +08:00
opensources
211a50d33d 🐳 修改版本.
Signed-off-by: opensources <opensources@noreply.gitcode.com>
2024-12-06 10:31:17 +08:00
lijiahangmax
713af9d032 merge dev into dev
升级版本

Created-by: chaoyuyu
Author-id: 2987168
MR-id: 5338426
Commit-by: chaoyuyu
Merged-by: lijiahangmax
E2E-issues: 
Description: 🔖 升级版本. 

See merge request: dromara/orion-visor!2
2024-12-06 10:29:14 +08:00
chaoyuyu
214b6fe9ac 🔖 升级版本.
Signed-off-by: chaoyuyu <chaoyuyu@noreply.gitcode.com>
2024-12-06 10:25:02 +08:00
lijiahangmax
343c188749 merge dev into dev
merge

Created-by: Hanner
Author-id: 2987512
MR-id: 5338327
Commit-by: Hanner
Merged-by: lijiahangmax
E2E-issues: 
Description: 🔖 升级版本. 
update: 更新文件 pom.xml 
🔖 升级版本. 

See merge request: dromara/orion-visor!1
2024-12-06 10:14:32 +08:00
Hanner
fc6418caf3 🔖 升级版本.
Signed-off-by: Hanner <Hanner@noreply.gitcode.com>
2024-12-06 10:11:51 +08:00
Hanner
cf093e1023 update: 更新文件 pom.xml
Signed-off-by: Hanner <Hanner@noreply.gitcode.com>
2024-12-06 10:10:27 +08:00
Hanner
90eb6003c9 🔖 升级版本.
Signed-off-by: Hanner <Hanner@noreply.gitcode.com>
2024-12-06 10:08:54 +08:00
lijiahang
652691b32b 📝 修改 README. 2024-12-04 11:37:36 +08:00
lijiahang
eb77f33574 去除轮询接口错误信息. 2024-12-03 11:28:58 +08:00
lijiahang
9bfd5888bf 修改代码生成器. 2024-11-25 10:23:40 +08:00
lijiahang
73c18c79b8 🐛 计划任务创建后会自动执行. 2024-11-13 10:00:25 +08:00
lijiahang
562052b868 优化前端代码语义. 2024-11-07 10:46:17 +08:00
58 changed files with 199 additions and 352 deletions

View File

@@ -1,5 +1,5 @@
<div align="center"><img src="https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/9/11/11e7e78e-2af0-4c68-9811-db8a4c4400f4.png" alt="logo" width="520" /></div> <div align="center"><img src="https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/9/11/11e7e78e-2af0-4c68-9811-db8a4c4400f4.png" alt="logo" width="520" /></div>
<p style="margin-top: 12px" align="center"><b>一款高颜值、现代化的自动化运维&轻量堡垒机平台。</b></p> <p style="margin-top: 12px" align="center"><b>【Dromara】 一款高颜值、现代化的自动化运维&轻量堡垒机平台。</b></p>
<p align="center"> <p align="center">
<a target="_blank" <a target="_blank"
style="text-decoration: none !important;" style="text-decoration: none !important;"

View File

@@ -1,7 +1,7 @@
version: '3.3' version: '3.3'
services: services:
service: service:
image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-service:2.2.0 image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-service:2.2.1
privileged: true privileged: true
ports: ports:
- 1081:80 - 1081:80
@@ -32,7 +32,7 @@ services:
- mysql - mysql
- redis - redis
mysql: mysql:
image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-mysql:2.2.0 image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-mysql:2.2.1
privileged: true privileged: true
ports: ports:
- 3307:3306 - 3307:3306
@@ -52,7 +52,7 @@ services:
retries: 10 retries: 10
start_period: 3s start_period: 3s
redis: redis:
image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-redis:2.2.0 image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-redis:2.2.1
privileged: true privileged: true
ports: ports:
- 6380:6379 - 6380:6379

View File

@@ -1,7 +1,7 @@
version: '3.3' version: '3.3'
services: services:
service: service:
image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-service:2.2.0 image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-service:2.2.1
privileged: true privileged: true
ports: ports:
- ${SERVICE_PORT:-1081}:80 - ${SERVICE_PORT:-1081}:80
@@ -32,7 +32,7 @@ services:
- mysql - mysql
- redis - redis
mysql: mysql:
image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-mysql:2.2.0 image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-mysql:2.2.1
privileged: true privileged: true
ports: ports:
- 3307:3306 - 3307:3306
@@ -52,7 +52,7 @@ services:
retries: 15 retries: 15
start_period: 3s start_period: 3s
redis: redis:
image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-redis:2.2.0 image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-redis:2.2.1
privileged: true privileged: true
ports: ports:
- 6380:6379 - 6380:6379
@@ -68,7 +68,7 @@ services:
retries: 15 retries: 15
start_period: 3s start_period: 3s
adminer: adminer:
image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-adminer:2.2.0 image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-adminer:2.2.1
ports: ports:
- 8081:8080 - 8081:8080
depends_on: depends_on:

View File

@@ -1,4 +1,4 @@
#/bin/bash #/bin/bash
version=2.2.0 version=2.2.1
docker build -t orion-visor-adminer:${version} . docker build -t orion-visor-adminer:${version} .
docker tag orion-visor-adminer:${version} registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-adminer:${version} docker tag orion-visor-adminer:${version} registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-adminer:${version}

View File

@@ -1,5 +1,5 @@
#/bin/bash #/bin/bash
version=2.2.0 version=2.2.1
cp -r ../../sql ./sql cp -r ../../sql ./sql
docker build -t orion-visor-mysql:${version} . docker build -t orion-visor-mysql:${version} .
rm -rf ./sql rm -rf ./sql

View File

@@ -1,5 +1,5 @@
#/bin/bash #/bin/bash
version=2.2.0 version=2.2.1
docker push registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-adminer:${version} docker push registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-adminer:${version}
docker push registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-mysql:${version} docker push registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-mysql:${version}
docker push registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-redis:${version} docker push registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-redis:${version}

View File

@@ -1,4 +1,4 @@
#/bin/bash #/bin/bash
version=2.2.0 version=2.2.1
docker build -t orion-visor-redis:${version} . docker build -t orion-visor-redis:${version} .
docker tag orion-visor-redis:${version} registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-redis:${version} docker tag orion-visor-redis:${version} registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-redis:${version}

View File

@@ -1,8 +1,8 @@
#/bin/bash #/bin/bash
version=2.2.0 version=2.2.1
mv ../../orion-visor-launch/target/orion-visor-launch.jar ./orion-visor-launch.jar mv ../../orion-visor-launch/target/orion-visor-launch.jar ./orion-visor-launch.jar
mv ../../orion-visor-ui/dist ./dist mv ../../orion-visor-ui/dist ./dist
docker build -t orion-visor-service:${version} . docker build --no-cache -t orion-visor-service:${version} .
rm -rf ./orion-visor-launch.jar rm -rf ./orion-visor-launch.jar
rm -rf ./dist rm -rf ./dist
docker tag orion-visor-service:${version} registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-service:${version} docker tag orion-visor-service:${version} registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-visor-service:${version}

View File

@@ -20,7 +20,7 @@
// 左侧文档名称 // 左侧文档名称
name: 'orion-visor', name: 'orion-visor',
// 右上角仓库 // 右上角仓库
repo: 'https://github.com/lijiahangmax/orion-visor', repo: 'https://github.com/dromara/orion-visor',
coverpage: true, coverpage: true,
// 加载侧边栏 // 加载侧边栏
loadSidebar: true, loadSidebar: true,

View File

@@ -10,15 +10,15 @@
<packaging>pom</packaging> <packaging>pom</packaging>
<name>${project.artifactId}</name> <name>${project.artifactId}</name>
<description>项目所有依赖</description> <description>项目全部依赖</description>
<url>https://github.com/dromara/orion-visor</url> <url>https://github.com/dromara/orion-visor</url>
<properties> <properties>
<revision>2.2.0</revision> <revision>2.2.1</revision>
<spring.boot.version>2.7.17</spring.boot.version> <spring.boot.version>2.7.17</spring.boot.version>
<spring.boot.admin.version>2.7.15</spring.boot.admin.version> <spring.boot.admin.version>2.7.15</spring.boot.admin.version>
<flatten.maven.plugin.version>1.5.0</flatten.maven.plugin.version> <flatten.maven.plugin.version>1.5.0</flatten.maven.plugin.version>
<orion.kit.version>2.0.0</orion.kit.version> <orion.kit.version>2.0.1</orion.kit.version>
<aspectj.version>1.9.7</aspectj.version> <aspectj.version>1.9.7</aspectj.version>
<lombok.version>1.18.26</lombok.version> <lombok.version>1.18.26</lombok.version>
<springdoc.version>1.6.15</springdoc.version> <springdoc.version>1.6.15</springdoc.version>

View File

@@ -29,7 +29,7 @@ public interface AppConst extends OrionConst {
/** /**
* 同 ${orion.version} 迭代时候需要手动更改 * 同 ${orion.version} 迭代时候需要手动更改
*/ */
String VERSION = "2.2.0"; String VERSION = "2.2.1";
/** /**
* 同 ${spring.application.name} * 同 ${spring.application.name}

View File

@@ -142,8 +142,8 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
// 查询 // 查询
return ${typeLower}DAO.of(wrapper).list(${type}Convert.MAPPER::to); return ${typeLower}DAO.of(wrapper).list(${type}Convert.MAPPER::to);
} }
#if($meta.enableCache) #if($meta.enableCache)
@Override @Override
public List<${type}VO> get${type}ListByCache() { public List<${type}VO> get${type}ListByCache() {
// 查询缓存 // 查询缓存

View File

@@ -72,14 +72,14 @@ export interface ${vue.featureEntity}QueryResponse extends TableData {
* $apiComment.create * $apiComment.create
*/ */
export function create${vue.featureEntity}(request: ${vue.featureEntity}CreateRequest) { export function create${vue.featureEntity}(request: ${vue.featureEntity}CreateRequest) {
return axios.post('/${package.ModuleName}/${typeHyphen}/create', request); return axios.post<number>('/${package.ModuleName}/${typeHyphen}/create', request);
} }
/** /**
* $apiComment.updateById * $apiComment.updateById
*/ */
export function update${vue.featureEntity}(request: ${vue.featureEntity}UpdateRequest) { export function update${vue.featureEntity}(request: ${vue.featureEntity}UpdateRequest) {
return axios.put('/${package.ModuleName}/${typeHyphen}/update', request); return axios.put<number>('/${package.ModuleName}/${typeHyphen}/update', request);
} }
/** /**
@@ -126,14 +126,14 @@ export function get${vue.featureEntity}Count(request: ${vue.featureEntity}QueryR
* $apiComment.deleteById * $apiComment.deleteById
*/ */
export function delete${vue.featureEntity}(id: number) { export function delete${vue.featureEntity}(id: number) {
return axios.delete('/${package.ModuleName}/${typeHyphen}/delete', { params: { id } }); return axios.delete<number>('/${package.ModuleName}/${typeHyphen}/delete', { params: { id } });
} }
/** /**
* $apiComment.batchDelete * $apiComment.batchDelete
*/ */
export function batchDelete${vue.featureEntity}(idList: Array<number>) { export function batchDelete${vue.featureEntity}(idList: Array<number>) {
return axios.delete('/${package.ModuleName}/${typeHyphen}/batch-delete', { return axios.delete<number>('/${package.ModuleName}/${typeHyphen}/batch-delete', {
params: { idList }, params: { idList },
paramsSerializer: params => { paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'comma' }); return qs.stringify(params, { arrayFormat: 'comma' });

View File

@@ -34,8 +34,8 @@
#if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long") #if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
<a-input-number v-model="formModel.${field.propertyName}" <a-input-number v-model="formModel.${field.propertyName}"
placeholder="请输入${field.comment}" placeholder="请输入${field.comment}"
allow-clear hide-button
hide-button /> allow-clear />
#elseif("$field.propertyType" == "Date") #elseif("$field.propertyType" == "Date")
<a-date-picker v-model="formModel.${field.propertyName}" <a-date-picker v-model="formModel.${field.propertyName}"
style="width: 100%" style="width: 100%"
@@ -180,19 +180,12 @@
}); });
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchCardData(); fetchCardData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchCardData();
};
defineExpose({
addedCallback, updatedCallback
});
// 重置条件 // 重置条件
const reset = () => { const reset = () => {

View File

@@ -21,17 +21,20 @@
#if(${dictMap.containsKey(${field.propertyName})}) #if(${dictMap.containsKey(${field.propertyName})})
<a-select v-model="formModel.${field.propertyName}" <a-select v-model="formModel.${field.propertyName}"
:options="toOptions($dictMap.get(${field.propertyName}).keyField)" :options="toOptions($dictMap.get(${field.propertyName}).keyField)"
placeholder="请选择${field.comment}" /> placeholder="请选择${field.comment}"
allow-clear />
#else #else
#if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long") #if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
<a-input-number v-model="formModel.${field.propertyName}" <a-input-number v-model="formModel.${field.propertyName}"
placeholder="请输入${field.comment}" placeholder="请输入${field.comment}"
hide-button /> hide-button
allow-clear />
#elseif("$field.propertyType" == "Date") #elseif("$field.propertyType" == "Date")
<a-date-picker v-model="formModel.${field.propertyName}" <a-date-picker v-model="formModel.${field.propertyName}"
style="width: 100%" style="width: 100%"
placeholder="请选择${field.comment}" placeholder="请选择${field.comment}"
show-time /> show-time
allow-clear />
#else #else
<a-input v-model="formModel.${field.propertyName}" <a-input v-model="formModel.${field.propertyName}"
placeholder="请输入${field.comment}" placeholder="请输入${field.comment}"

View File

@@ -25,17 +25,20 @@
#if(${dictMap.containsKey(${field.propertyName})}) #if(${dictMap.containsKey(${field.propertyName})})
<a-select v-model="formModel.${field.propertyName}" <a-select v-model="formModel.${field.propertyName}"
:options="toOptions($dictMap.get(${field.propertyName}).keyField)" :options="toOptions($dictMap.get(${field.propertyName}).keyField)"
placeholder="请选择${field.comment}" /> placeholder="请选择${field.comment}"
allow-clear />
#else #else
#if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long") #if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
<a-input-number v-model="formModel.${field.propertyName}" <a-input-number v-model="formModel.${field.propertyName}"
placeholder="请输入${field.comment}" placeholder="请输入${field.comment}"
hide-button /> hide-button
allow-clear />
#elseif("$field.propertyType" == "Date") #elseif("$field.propertyType" == "Date")
<a-date-picker v-model="formModel.${field.propertyName}" <a-date-picker v-model="formModel.${field.propertyName}"
style="width: 100%" style="width: 100%"
placeholder="请选择${field.comment}" placeholder="请选择${field.comment}"
show-time /> show-time
allow-clear />
#else #else
<a-input v-model="formModel.${field.propertyName}" <a-input v-model="formModel.${field.propertyName}"
placeholder="请输入${field.comment}" placeholder="请输入${field.comment}"

View File

@@ -18,8 +18,8 @@
#if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long") #if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
<a-input-number v-model="formModel.${field.propertyName}" <a-input-number v-model="formModel.${field.propertyName}"
placeholder="请输入${field.comment}" placeholder="请输入${field.comment}"
allow-clear hide-button
hide-button /> allow-clear />
#elseif("$field.propertyType" == "Date") #elseif("$field.propertyType" == "Date")
<a-date-picker v-model="formModel.${field.propertyName}" <a-date-picker v-model="formModel.${field.propertyName}"
style="width: 100%" style="width: 100%"
@@ -63,7 +63,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['${package.ModuleName}:${typeHyphen}:delete']" <a-button v-permission="['${package.ModuleName}:${typeHyphen}:delete']"
type="secondary" type="secondary"
status="danger" status="danger"
@@ -182,7 +182,7 @@
#if($vue.enableRowSelection) #if($vue.enableRowSelection)
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口
@@ -215,19 +215,12 @@
} }
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchTableData(); fetchTableData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchTableData();
};
defineExpose({
addedCallback, updatedCallback
});
// 加载数据 // 加载数据
const doFetchTableData = async (request: ${vue.featureEntity}QueryRequest) => { const doFetchTableData = async (request: ${vue.featureEntity}QueryRequest) => {

View File

@@ -18,15 +18,15 @@
@open-update="(e) =>#if($vue.enableDrawerForm) drawer#else modal#end.openUpdate(e)" /> @open-update="(e) =>#if($vue.enableDrawerForm) drawer#else modal#end.openUpdate(e)" />
#end #end
#if($vue.enableDrawerForm) #if($vue.enableDrawerForm)
<!-- 添加修改模态框 --> <!-- 添加修改抽屉 -->
<${vue.feature}-form-drawer ref="drawer" <${vue.feature}-form-drawer ref="drawer"
@added="modalAddCallback" @added="reload"
@updated="modalUpdateCallback" /> @updated="reload" />
#else #else
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<${vue.feature}-form-modal ref="modal" <${vue.feature}-form-modal ref="modal"
@added="modalAddCallback" @added="reload"
@updated="modalUpdateCallback" /> @updated="reload" />
#end #end
</div> </div>
</template> </template>
@@ -81,29 +81,16 @@
const modal = ref(); const modal = ref();
#end #end
// 添加回调 // 重新加载
const modalAddCallback = () => { const reload = () => {
#if($vue.enableCardView) #if($vue.enableCardView)
if (renderTable.value) { if (renderTable.value) {
table.value.addedCallback(); table.value.reload();
} else { } else {
card.value.addedCallback(); card.value.reload();
} }
#else #else
table.value.addedCallback(); table.value.reload();
#end
};
// 修改回调
const modalUpdateCallback = () => {
#if($vue.enableCardView)
if (renderTable.value) {
table.value.updatedCallback();
} else {
card.value.updatedCallback();
}
#else
table.value.updatedCallback();
#end #end
}; };

View File

@@ -112,7 +112,7 @@ public class ExecJobServiceImpl implements ExecJobService {
// 设置任务主机 // 设置任务主机
execJobHostService.setHostIdByJobId(id, request.getHostIdList()); execJobHostService.setHostIdByJobId(id, request.getHostIdList());
// 设置 quartz 状态 // 设置 quartz 状态
this.setQuartzJobStatus(record, false, true); // this.setQuartzJobStatus(record, false, false);
log.info("ExecJobService-createExecJob id: {}, effect: {}", id, effect); log.info("ExecJobService-createExecJob id: {}, effect: {}", id, effect);
return id; return id;
} }

View File

@@ -1,5 +1,5 @@
VITE_API_BASE_URL= 'http://127.0.0.1:9200/orion-visor/api' VITE_API_BASE_URL= 'http://127.0.0.1:9200/orion-visor/api'
VITE_WS_BASE_URL= 'ws://127.0.0.1:9200/orion-visor/keep-alive' VITE_WS_BASE_URL= 'ws://127.0.0.1:9200/orion-visor/keep-alive'
VITE_APP_VERSION= '2.2.0' VITE_APP_VERSION= '2.2.1'
VITE_APP_RELEASE= 'community' VITE_APP_RELEASE= 'community'
VITE_DEMO_MODE= false VITE_DEMO_MODE= false

View File

@@ -1,5 +1,5 @@
VITE_API_BASE_URL= '/orion-visor/api' VITE_API_BASE_URL= '/orion-visor/api'
VITE_WS_BASE_URL= '/orion-visor/keep-alive' VITE_WS_BASE_URL= '/orion-visor/keep-alive'
VITE_APP_VERSION= '2.2.0' VITE_APP_VERSION= '2.2.1'
VITE_APP_RELEASE= 'community' VITE_APP_RELEASE= 'community'
VITE_DEMO_MODE= false VITE_DEMO_MODE= false

View File

@@ -1,7 +1,7 @@
{ {
"name": "orion-visor-ui", "name": "orion-visor-ui",
"description": "Orion Visor UI", "description": "Orion Visor UI",
"version": "2.2.0", "version": "2.2.1",
"private": true, "private": true,
"author": "Jiahang Li", "author": "Jiahang Li",
"license": "Apache 2.0", "license": "Apache 2.0",

View File

@@ -38,6 +38,8 @@ export function getExecCommandHostLogList(logId: number) {
export function getExecCommandLogStatus(idList: Array<number>) { export function getExecCommandLogStatus(idList: Array<number>) {
return axios.get<ExecLogStatusResponse>('/asset/exec-command-log/status', { return axios.get<ExecLogStatusResponse>('/asset/exec-command-log/status', {
params: { idList }, params: { idList },
promptBizErrorMessage: false,
promptRequestErrorMessage: false,
paramsSerializer: params => { paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'comma' }); return qs.stringify(params, { arrayFormat: 'comma' });
} }

View File

@@ -146,6 +146,8 @@ export function getUploadTaskPage(request: UploadTaskQueryRequest) {
export function getUploadTaskStatus(idList: Array<number>, queryFiles: boolean) { export function getUploadTaskStatus(idList: Array<number>, queryFiles: boolean) {
return axios.get<Array<UploadTaskStatusResponse>>('/asset/upload-task/status', { return axios.get<Array<UploadTaskStatusResponse>>('/asset/upload-task/status', {
params: { idList, queryFiles }, params: { idList, queryFiles },
promptBizErrorMessage: false,
promptRequestErrorMessage: false,
paramsSerializer: params => { paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'comma' }); return qs.stringify(params, { arrayFormat: 'comma' });
} }

View File

@@ -38,6 +38,8 @@ export function getExecJobHostLogList(logId: number) {
export function getExecJobLogStatus(idList: Array<number>) { export function getExecJobLogStatus(idList: Array<number>) {
return axios.get<ExecLogStatusResponse>('/asset/exec-job-log/status', { return axios.get<ExecLogStatusResponse>('/asset/exec-job-log/status', {
params: { idList }, params: { idList },
promptBizErrorMessage: false,
promptRequestErrorMessage: false,
paramsSerializer: params => { paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'comma' }); return qs.stringify(params, { arrayFormat: 'comma' });
} }

View File

@@ -43,7 +43,10 @@ export function getSystemMessageCount(queryUnread: boolean) {
* 查询是否有未读消息 * 查询是否有未读消息
*/ */
export function checkHasUnreadMessage() { export function checkHasUnreadMessage() {
return axios.get<boolean>('/infra/system-message/has-unread'); return axios.get<boolean>('/infra/system-message/has-unread', {
promptBizErrorMessage: false,
promptRequestErrorMessage: false,
});
} }
/** /**

View File

@@ -371,6 +371,22 @@ body {
font-size: 16px; font-size: 16px;
} }
.fs17 {
font-size: 17px;
}
.fs18 {
font-size: 18px;
}
.fs19 {
font-size: 19px;
}
.fs20 {
font-size: 20px;
}
.text-ellipsis { .text-ellipsis {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;

View File

@@ -55,6 +55,14 @@ export function isWindow(el: any): el is Window {
/** /**
* 是否为移动端 ua * 是否为移动端 ua
*/ */
export function isMobile(userAgent: string) { export function isMobile(userAgent: string): boolean {
return /Mobi|Android|iPhone/i.test(userAgent); return /Mobi|Android|iPhone/i.test(userAgent);
} }
/**
* 是否为 IPv4
*/
export function isIPv4(ip: string): boolean {
const reg = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
return reg.test(ip);
}

View File

@@ -76,7 +76,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['asset:terminal-connect-log:management:delete']" <a-button v-permission="['asset:terminal-connect-log:management:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -276,7 +276,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口

View File

@@ -60,7 +60,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['infra:operator-log:delete', 'asset:terminal-sftp-log:management:delete']" <a-button v-permission="['infra:operator-log:delete', 'asset:terminal-sftp-log:management:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -240,7 +240,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口

View File

@@ -209,19 +209,12 @@
}); });
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchCardData(); fetchCardData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchCardData();
};
defineExpose({
addedCallback, updatedCallback
});
// 重置条件 // 重置条件
const reset = () => { const reset = () => {

View File

@@ -78,7 +78,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['asset:host-identity:delete']" <a-button v-permission="['asset:host-identity:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -224,7 +224,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口
@@ -239,19 +239,12 @@
} }
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchTableData(); fetchTableData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchTableData();
};
defineExpose({
addedCallback, updatedCallback
});
// 加载数据 // 加载数据
const doFetchTableData = async (request: HostIdentityQueryRequest) => { const doFetchTableData = async (request: HostIdentityQueryRequest) => {

View File

@@ -14,8 +14,8 @@
@open-key-view="(e) => keyDrawer.openView(e) " /> @open-key-view="(e) => keyDrawer.openView(e) " />
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<host-identity-form-modal ref="modal" <host-identity-form-modal ref="modal"
@added="modalAddCallback" @added="reload"
@updated="modalUpdateCallback" /> @updated="reload" />
<!-- 主机密钥抽屉 --> <!-- 主机密钥抽屉 -->
<host-key-form-drawer ref="keyDrawer" /> <host-key-form-drawer ref="keyDrawer" />
</div> </div>
@@ -45,21 +45,12 @@
const renderTable = computed(() => appStore.hostIdentityView === 'table'); const renderTable = computed(() => appStore.hostIdentityView === 'table');
// 添加回调 // 重新加载
const modalAddCallback = () => { const reload = () => {
if (renderTable.value) { if (renderTable.value) {
table.value.addedCallback(); table.value.reload();
} else { } else {
card.value.addedCallback(); card.value.reload();
}
};
// 修改回调
const modalUpdateCallback = () => {
if (renderTable.value) {
table.value.updatedCallback();
} else {
card.value.updatedCallback();
} }
}; };

View File

@@ -126,19 +126,12 @@
}); });
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchCardData(); fetchCardData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchCardData();
};
defineExpose({
addedCallback, updatedCallback
});
// 重置条件 // 重置条件
const reset = () => { const reset = () => {

View File

@@ -63,7 +63,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['asset:host-key:delete']" <a-button v-permission="['asset:host-key:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -173,7 +173,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口
@@ -188,19 +188,12 @@
} }
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchTableData(); fetchTableData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchTableData();
};
defineExpose({
addedCallback, updatedCallback
});
// 加载数据 // 加载数据
const doFetchTableData = async (request: HostKeyQueryRequest) => { const doFetchTableData = async (request: HostKeyQueryRequest) => {

View File

@@ -14,8 +14,8 @@
@open-update="(e) => drawer.openUpdate(e)" /> @open-update="(e) => drawer.openUpdate(e)" />
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<host-key-form-drawer ref="drawer" <host-key-form-drawer ref="drawer"
@added="modalAddCallback" @added="reload"
@updated="modalUpdateCallback" /> @updated="reload" />
</div> </div>
</template> </template>
@@ -39,21 +39,12 @@
const renderTable = computed(() => appStore.hostKeyView === 'table'); const renderTable = computed(() => appStore.hostKeyView === 'table');
// 添加回调 // 重新加载
const modalAddCallback = () => { const reload = () => {
if (renderTable.value) { if (renderTable.value) {
table.value.addedCallback(); table.value.reload();
} else { } else {
card.value.addedCallback(); card.value.reload();
}
};
// 修改回调
const modalUpdateCallback = () => {
if (renderTable.value) {
table.value.updatedCallback();
} else {
card.value.updatedCallback();
} }
}; };

View File

@@ -303,19 +303,12 @@
}); });
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchCardData(); fetchCardData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchCardData();
};
defineExpose({
addedCallback, updatedCallback
});
// 重置条件 // 重置条件
const reset = () => { const reset = () => {

View File

@@ -103,7 +103,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['asset:host:delete']" <a-button v-permission="['asset:host:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -330,7 +330,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口
@@ -345,19 +345,12 @@
} }
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchTableData(); fetchTableData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchTableData();
};
defineExpose({
addedCallback, updatedCallback
});
// 加载数据 // 加载数据
const doFetchTableData = async (request: HostQueryRequest) => { const doFetchTableData = async (request: HostQueryRequest) => {

View File

@@ -18,8 +18,8 @@
@open-update-config="(e) => hostConfig.open(e)" /> @open-update-config="(e) => hostConfig.open(e)" />
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<host-form-modal ref="modal" <host-form-modal ref="modal"
@added="modalAddCallback" @added="reload"
@updated="modalUpdateCallback" /> @updated="reload" />
<!-- 配置面板 --> <!-- 配置面板 -->
<host-config-drawer ref="hostConfig" /> <host-config-drawer ref="hostConfig" />
<!-- 分组配置 --> <!-- 分组配置 -->
@@ -54,21 +54,12 @@
const renderTable = computed(() => appStore.hostView === 'table'); const renderTable = computed(() => appStore.hostView === 'table');
// 添加回调 // 重新加载
const modalAddCallback = () => { const reload = () => {
if (renderTable.value) { if (renderTable.value) {
table.value.addedCallback(); table.value.reload();
} else { } else {
card.value.addedCallback(); card.value.reload();
}
};
// 修改回调
const modalUpdateCallback = () => {
if (renderTable.value) {
table.value.updatedCallback();
} else {
card.value.updatedCallback();
} }
}; };

View File

@@ -83,7 +83,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗? 删除后会中断执行!`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗? 删除后会中断执行!`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['asset:exec-command-log:delete']" <a-button v-permission="['asset:exec-command-log:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -255,7 +255,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口

View File

@@ -53,7 +53,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['asset:exec-template:delete']" <a-button v-permission="['asset:exec-template:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -168,7 +168,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口
@@ -183,19 +183,12 @@
} }
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchTableData(); fetchTableData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchTableData();
};
defineExpose({
addedCallback, updatedCallback
});
// 加载数据 // 加载数据
const doFetchTableData = async (request: ExecTemplateQueryRequest) => { const doFetchTableData = async (request: ExecTemplateQueryRequest) => {

View File

@@ -7,8 +7,8 @@
@open-exec="(e) => execModal.open(e)" /> @open-exec="(e) => execModal.open(e)" />
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<exec-template-form-drawer ref="drawer" <exec-template-form-drawer ref="drawer"
@added="modalAddCallback" @added="() => table.reload()"
@updated="modalUpdateCallback" @updated="() => table.reload()"
@open-host="(e) => openHostModal('drawer', e)" /> @open-host="(e) => openHostModal('drawer', e)" />
<!-- 执行模态框 --> <!-- 执行模态框 -->
<exec-template-exec-drawer ref="execModal" <exec-template-exec-drawer ref="execModal"
@@ -40,16 +40,6 @@
const hostModal = ref(); const hostModal = ref();
const lastOpenHostRef = ref(); const lastOpenHostRef = ref();
// 添加回调
const modalAddCallback = () => {
table.value.addedCallback();
};
// 修改回调
const modalUpdateCallback = () => {
table.value.updatedCallback();
};
// 打开主机模态框 // 打开主机模态框
const openHostModal = (openRef: string, data: any) => { const openHostModal = (openRef: string, data: any) => {
lastOpenHostRef.value = openRef; lastOpenHostRef.value = openRef;

View File

@@ -83,7 +83,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['asset:upload-task:delete']" <a-button v-permission="['asset:upload-task:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -231,7 +231,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口

View File

@@ -68,7 +68,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗? 删除后会中断执行!`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗? 删除后会中断执行!`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['asset:exec-job-log:delete']" <a-button v-permission="['asset:exec-job-log:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -235,7 +235,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口

View File

@@ -60,7 +60,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['asset:exec-job:delete']" <a-button v-permission="['asset:exec-job:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -238,7 +238,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口
@@ -253,19 +253,12 @@
} }
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchTableData(); fetchTableData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchTableData();
};
defineExpose({
addedCallback, updatedCallback
});
// 修改状态 // 修改状态
const updateStatus = async (id: number, status: number) => { const updateStatus = async (id: number, status: number) => {

View File

@@ -8,12 +8,12 @@
@test-cron="openNextCron" /> @test-cron="openNextCron" />
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<exec-job-form-drawer ref="drawer" <exec-job-form-drawer ref="drawer"
@added="modalAddCallback" @added="() => table.reload()"
@updated="modalUpdateCallback" @updated="() => table.reload()"
@open-host="(e) => hostModal.open(e)" @open-host="(e) => hostModal.open(e)"
@open-template="() => templateModal.open()" @open-template="() => templateModal.open()"
@test-cron="openNextCron" @test-cron="openNextCron"
@gen-cron="openGeneratorCron" /> @gen-cron="(e) => genModal.open(e)" />
<!-- 任务详情模态框 --> <!-- 任务详情模态框 -->
<exec-job-detail-drawer ref="detail" /> <exec-job-detail-drawer ref="detail" />
<!-- cron 执行时间模态框 --> <!-- cron 执行时间模态框 -->
@@ -58,26 +58,11 @@
const templateModal = ref(); const templateModal = ref();
const hostModal = ref(); const hostModal = ref();
// 添加回调
const modalAddCallback = () => {
table.value.addedCallback();
};
// 修改回调
const modalUpdateCallback = () => {
table.value.updatedCallback();
};
// 打开下次执行时间 // 打开下次执行时间
const openNextCron = (cron: string) => { const openNextCron = (cron: string) => {
nextCron.value.open({ expression: cron, times: CronNextTimes }); nextCron.value.open({ expression: cron, times: CronNextTimes });
}; };
// 打开生成表达式
const openGeneratorCron = (cron: string) => {
genModal.value.open(cron);
};
onBeforeMount(async () => { onBeforeMount(async () => {
const dictStore = useDictStore(); const dictStore = useDictStore();
await dictStore.loadKeys(dictKeys); await dictStore.loadKeys(dictKeys);

View File

@@ -67,7 +67,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['infra:dict-key:delete']" <a-button v-permission="['infra:dict-key:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -206,7 +206,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口
@@ -222,21 +222,13 @@
} }
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchTableData(); fetchTableData();
cacheStore.reset('dictKeys'); cacheStore.reset('dictKeys');
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchTableData();
cacheStore.reset('dictKeys');
};
defineExpose({
addedCallback, updatedCallback
});
// 打开查看视图 // 打开查看视图
const openView = async (record: DictKeyQueryResponse) => { const openView = async (record: DictKeyQueryResponse) => {

View File

@@ -7,8 +7,8 @@
@open-view="(v, t) => view.open(v, t)" /> @open-view="(v, t) => view.open(v, t)" />
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<dict-key-form-modal ref="modal" <dict-key-form-modal ref="modal"
@added="modalAddCallback" @added="() => table.reload()"
@updated="modalUpdateCallback" /> @updated="() => table.reload()" />
<!-- json 查看器模态框 --> <!-- json 查看器模态框 -->
<json-editor-modal ref="view" /> <json-editor-modal ref="view" />
</div> </div>
@@ -33,16 +33,6 @@
const modal = ref(); const modal = ref();
const view = ref(); const view = ref();
// 添加回调
const modalAddCallback = () => {
table.value.addedCallback();
};
// 修改回调
const modalUpdateCallback = () => {
table.value.updatedCallback();
};
onBeforeMount(async () => { onBeforeMount(async () => {
const dictStore = useDictStore(); const dictStore = useDictStore();
await dictStore.loadKeys(dictKeys); await dictStore.loadKeys(dictKeys);

View File

@@ -53,7 +53,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['infra:dict-value:delete']" <a-button v-permission="['infra:dict-value:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -168,7 +168,7 @@
}); });
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口
@@ -198,19 +198,12 @@
} }
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchTableData(); fetchTableData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchTableData();
};
defineExpose({
addedCallback, updatedCallback
});
// 修改 key // 修改 key
const changeKey = ({ id, keyName }: { id: number, keyName: string }) => { const changeKey = ({ id, keyName }: { id: number, keyName: string }) => {

View File

@@ -7,13 +7,13 @@
@open-history="(e) => history.open(e.id, e.label)" /> @open-history="(e) => history.open(e.id, e.label)" />
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<dict-value-form-modal ref="modal" <dict-value-form-modal ref="modal"
@added="modalAddCallback" @added="() => table.reload()"
@updated="modalUpdateCallback" /> @updated="() => table.reload()" />
<!-- 历史值模态框 --> <!-- 历史值模态框 -->
<history-value-modal ref="history" <history-value-modal ref="history"
:type="historyType" :type="historyType"
:rollback="rollback" :rollback="rollback"
@updated="modalUpdateCallback" /> @updated="() => table.reload()" />
</div> </div>
</template> </template>
@@ -37,16 +37,6 @@
const history = ref(); const history = ref();
const cacheStore = useCacheStore(); const cacheStore = useCacheStore();
// 添加回调
const modalAddCallback = () => {
table.value.addedCallback();
};
// 修改回调
const modalUpdateCallback = () => {
table.value.updatedCallback();
};
// 回滚 // 回滚
const rollback = async (id: number, valueId: number) => { const rollback = async (id: number, valueId: number) => {
await rollbackDictValue({ id, valueId }); await rollbackDictValue({ id, valueId });

View File

@@ -270,21 +270,13 @@
} }
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
formRef.value.resetFields(); formRef.value.resetFields();
loadMenuData(true); loadMenuData(true);
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
formRef.value.resetFields();
loadMenuData(true);
};
defineExpose({
addedCallback, updatedCallback
});
// 加载菜单 // 加载菜单
const loadMenuData = async (all: any = undefined) => { const loadMenuData = async (all: any = undefined) => {

View File

@@ -6,8 +6,8 @@
@open-update="(e) => modal.openUpdate(e)" /> @open-update="(e) => modal.openUpdate(e)" />
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<menu-form-modal ref="modal" <menu-form-modal ref="modal"
@added="() => table.addedCallback()" @added="() => table.reload()"
@updated="() => table.updatedCallback()" /> @updated="() => table.reload()" />
</div> </div>
</template> </template>

View File

@@ -31,7 +31,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['infra:operator-log:delete']" <a-button v-permission="['infra:operator-log:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -174,7 +174,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口

View File

@@ -181,19 +181,12 @@
} }
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchTableData(); fetchTableData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchTableData();
};
defineExpose({
addedCallback, updatedCallback
});
// 加载数据 // 加载数据
const doFetchTableData = async (request: RoleQueryRequest) => { const doFetchTableData = async (request: RoleQueryRequest) => {

View File

@@ -7,8 +7,8 @@
@open-grant="(e) => grantModal.open(e)" /> @open-grant="(e) => grantModal.open(e)" />
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<role-form-modal ref="modal" <role-form-modal ref="modal"
@added="() => table.addedCallback()" @added="() => table.reload()"
@updated="() => table.updatedCallback()" /> @updated="() => table.reload()" />
<!-- 分配角色菜单模态框 --> <!-- 分配角色菜单模态框 -->
<role-menu-grant-modal ref="grantModal" /> <role-menu-grant-modal ref="grantModal" />
</div> </div>

View File

@@ -64,7 +64,7 @@
<a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`" <a-popconfirm :content="`确认删除选中的 ${selectedKeys.length} 条记录吗?`"
position="br" position="br"
type="warning" type="warning"
@ok="deleteSelectRows"> @ok="deleteSelectedRows">
<a-button v-permission="['infra:system-user:delete']" <a-button v-permission="['infra:system-user:delete']"
type="primary" type="primary"
status="danger" status="danger"
@@ -226,7 +226,7 @@
}; };
// 删除选中行 // 删除选中行
const deleteSelectRows = async () => { const deleteSelectedRows = async () => {
try { try {
setLoading(true); setLoading(true);
// 调用删除接口 // 调用删除接口
@@ -258,19 +258,12 @@
}); });
}; };
// 添加后回调 // 重新加载
const addedCallback = () => { const reload = () => {
fetchTableData(); fetchTableData();
}; };
// 更新后回调 defineExpose({ reload });
const updatedCallback = () => {
fetchTableData();
};
defineExpose({
addedCallback, updatedCallback
});
// 加载数据 // 加载数据
const doFetchTableData = async (request: UserQueryRequest) => { const doFetchTableData = async (request: UserQueryRequest) => {

View File

@@ -8,8 +8,8 @@
@open-grant-role="(e) => grantRoleModal.open(e)" /> @open-grant-role="(e) => grantRoleModal.open(e)" />
<!-- 添加修改模态框 --> <!-- 添加修改模态框 -->
<user-form-modal ref="modal" <user-form-modal ref="modal"
@added="() => table.addedCallback()" @added="() => table.reload()"
@updated="() => table.updatedCallback()" /> @updated="() => table.reload()" />
<!-- 重置密码模态框 --> <!-- 重置密码模态框 -->
<user-reset-password-form-modal ref="resetModal" /> <user-reset-password-form-modal ref="resetModal" />
<!-- 分配角色模态框 --> <!-- 分配角色模态框 -->

View File

@@ -22,7 +22,7 @@
</modules> </modules>
<properties> <properties>
<revision>2.2.0</revision> <revision>2.2.1</revision>
<maven.compiler.source>8</maven.compiler.source> <maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
<maven.surefire.plugin.version>3.0.0-M5</maven.surefire.plugin.version> <maven.surefire.plugin.version>3.0.0-M5</maven.surefire.plugin.version>