From dc42a317116bbc5f5c1001391b52f3458b952e3e Mon Sep 17 00:00:00 2001 From: lijiahang Date: Mon, 20 Jan 2025 10:24:40 +0800 Subject: [PATCH] =?UTF-8?q?:hammer:=20=E4=BF=AE=E6=94=B9=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=80=BB=E8=BE=91.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orion-visor-ui/src/api/system/setting.ts | 114 +++++--- orion-visor-ui/src/utils/index.ts | 15 + orion-visor-ui/src/utils/rsa.ts | 4 +- .../setting/components/auto-clear-setting.vue | 156 +++++++++++ .../setting/components/encrypt-setting.vue | 18 +- .../system/setting/components/log-setting.vue | 141 ++++++++++ .../setting/components/login-setting.vue | 258 ++++++++++++++++++ .../setting/components/sftp-setting.vue | 47 +++- .../src/views/system/setting/index.vue | 23 ++ .../src/views/system/setting/types/const.ts | 11 +- 10 files changed, 721 insertions(+), 66 deletions(-) create mode 100644 orion-visor-ui/src/views/system/setting/components/auto-clear-setting.vue create mode 100644 orion-visor-ui/src/views/system/setting/components/log-setting.vue create mode 100644 orion-visor-ui/src/views/system/setting/components/login-setting.vue diff --git a/orion-visor-ui/src/api/system/setting.ts b/orion-visor-ui/src/api/system/setting.ts index 63056297..4fcaac5e 100644 --- a/orion-visor-ui/src/api/system/setting.ts +++ b/orion-visor-ui/src/api/system/setting.ts @@ -1,35 +1,15 @@ import axios from 'axios'; import { dateFormat } from '@/utils'; -/** - * 系统设置类型 - */ -export type SystemSettingType = 'SFTP' | 'ENCRYPT'; - /** * 系统设置更新请求 */ export interface SystemSettingUpdateRequest { - type?: SystemSettingType; - item?: string; - value?: any; + type?: string; + value?: string; settings?: Record; } -/** - * 应用信息查询响应 - */ -export interface SystemLicenseResponse { - userCount: number; - hostCount: number; - release: string; - releaseName: string; - issueDate: number; - expireDate: number; - expireDay: number; - uuid: string; -} - /** * 应用信息查询响应 */ @@ -47,28 +27,72 @@ export interface AppReleaseResponse { } /** - * 系统聚合设置响应 + * RSA 密钥对响应 */ -export interface SystemSettingAggregateResponse { - sftp: SftpSetting; - encrypt: EncryptSetting; -} - -/** - * SFTP 配置 - */ -export interface SftpSetting { - previewSize: number; -} - -/** - * 加密配置 - */ -export interface EncryptSetting { +export interface RsaKeyPairResponse { publicKey: string; privateKey: string; } +/** + * 系统设置 + */ +export type SystemSetting = SftpSetting + & LoginSetting & EncryptSetting + & LogSetting & AutoClearSetting; + +/** + * SFTP 设置 + */ +export interface SftpSetting { + sftp_previewSize: number; + sftp_uploadPresentBackup: string; + sftp_uploadBackupFileName: string; +} + +/** + * 登录设置 + */ +export interface LoginSetting { + login_allowMultiDevice: string; + login_allowRefresh: string; + login_maxRefreshCount: number; + login_refreshInterval: number; + login_loginFailedLock: string; + login_loginFailedLockThreshold: number; + login_loginFailedLockTime: number; + login_loginFailedSend: string; + login_loginFailedSendThreshold: number; + login_loginSessionTime: number; +} + +/** + * 加密设置 + */ +export interface EncryptSetting { + encrypt_publicKey: string; + encrypt_privateKey: string; +} + +/** + * 日志设置 + */ +export interface LogSetting { + log_trackerOffset: number; + log_trackerDelay: number; + log_execAppendAnsi: string; +} + +/** + * 自动清理设置 + */ +export interface AutoClearSetting { + autoClear_execLogEnabled: string; + autoClear_execLogKeepDays: number; + autoClear_terminalLogEnabled: string; + autoClear_terminalLogKeepDays: number; +} + /** * 查询应用信息 */ @@ -80,7 +104,7 @@ export function getSystemAppInfo() { * 获取系统聚合设置 */ export function getSystemAggregateSetting() { - return axios.get('/infra/system-setting/setting'); + return axios.get>('/infra/system-setting/setting'); } /** @@ -101,26 +125,26 @@ export function getAppLatestRelease() { * 生成密钥对 */ export function generatorKeypair() { - return axios.get('/infra/system-setting/generator-keypair'); + return axios.get('/infra/system-setting/generator-keypair'); } /** * 更新系统设置-单个 */ export function updateSystemSetting(request: SystemSettingUpdateRequest) { - return axios.put('/infra/system-setting/update', request); + return axios.put('/infra/system-setting/update', request); } /** * 更新系统设置-多个 */ export function updateSystemSettingBatch(request: SystemSettingUpdateRequest) { - return axios.put('/infra/system-setting/update-batch', request); + return axios.put('/infra/system-setting/update-batch', request); } /** * 查询系统设置 */ -export function getSystemSetting(type: SystemSettingType) { - return axios.get('/infra/system-setting/get', { params: { type } }); +export function getSystemSetting(type: string) { + return axios.get>('/infra/system-setting/get', { params: { type } }); } diff --git a/orion-visor-ui/src/utils/index.ts b/orion-visor-ui/src/utils/index.ts index a8efff50..2d101056 100644 --- a/orion-visor-ui/src/utils/index.ts +++ b/orion-visor-ui/src/utils/index.ts @@ -129,6 +129,21 @@ export function formatDuration(start: number, end?: number): string { return result; } +/** + * 转为匿名数字 number | undefined + */ +export function toAnonymousNumber(value: string | undefined): number { + if (value === undefined || value === null) { + return value as unknown as number; + } + const num = Number.parseInt(value); + if (Number.isNaN(num)) { + return undefined as unknown as number; + } else { + return num; + } +} + /** * 格式化数字为 ,分割 */ diff --git a/orion-visor-ui/src/utils/rsa.ts b/orion-visor-ui/src/utils/rsa.ts index 98befd05..80e846d9 100644 --- a/orion-visor-ui/src/utils/rsa.ts +++ b/orion-visor-ui/src/utils/rsa.ts @@ -9,9 +9,9 @@ export const encrypt = async (data: string | undefined): Promise + + +

自动清理设置

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 保存 + + + +
+ + + + + + + diff --git a/orion-visor-ui/src/views/system/setting/components/encrypt-setting.vue b/orion-visor-ui/src/views/system/setting/components/encrypt-setting.vue index 5648e97b..4c214b39 100644 --- a/orion-visor-ui/src/views/system/setting/components/encrypt-setting.vue +++ b/orion-visor-ui/src/views/system/setting/components/encrypt-setting.vue @@ -13,22 +13,22 @@ 请输入 PKCS8 格式的 RSA Base64 密钥, 用于前后端传输时的数据加密 - - - - { setLoading(true); try { - const { data } = await getSystemSetting(SystemSettingTypes.ENCRYPT); - setting.value = data; + const { data } = await getSystemSetting(SystemSettingTypes.ENCRYPT); + setting.value = { + ...data + }; } catch (e) { } finally { setLoading(false); diff --git a/orion-visor-ui/src/views/system/setting/components/log-setting.vue b/orion-visor-ui/src/views/system/setting/components/log-setting.vue new file mode 100644 index 00000000..90337ab0 --- /dev/null +++ b/orion-visor-ui/src/views/system/setting/components/log-setting.vue @@ -0,0 +1,141 @@ + + + + + + + diff --git a/orion-visor-ui/src/views/system/setting/components/login-setting.vue b/orion-visor-ui/src/views/system/setting/components/login-setting.vue new file mode 100644 index 00000000..19ef5ab8 --- /dev/null +++ b/orion-visor-ui/src/views/system/setting/components/login-setting.vue @@ -0,0 +1,258 @@ + + + + + + + diff --git a/orion-visor-ui/src/views/system/setting/components/sftp-setting.vue b/orion-visor-ui/src/views/system/setting/components/sftp-setting.vue index aa5225f8..116d8da6 100644 --- a/orion-visor-ui/src/views/system/setting/components/sftp-setting.vue +++ b/orion-visor-ui/src/views/system/setting/components/sftp-setting.vue @@ -8,12 +8,40 @@ class="setting-form" label-align="right" :auto-label-width="true"> + + + + + + + + + + - - + @@ -50,6 +81,7 @@ import { getSystemSetting, updateSystemSettingBatch } from '@/api/system/setting'; import useLoading from '@/hooks/loading'; import { Message } from '@arco-design/web-vue'; + import { toAnonymousNumber } from '@/utils'; import { SystemSettingTypes } from '../types/const'; const { loading, setLoading } = useLoading(); @@ -68,7 +100,7 @@ try { await updateSystemSettingBatch({ type: SystemSettingTypes.SFTP, - settings: setting.value + settings: setting.value, }); Message.success('修改成功'); } catch (e) { @@ -81,8 +113,11 @@ onMounted(async () => { setLoading(true); try { - const { data } = await getSystemSetting(SystemSettingTypes.SFTP); - setting.value = data; + const { data } = await getSystemSetting(SystemSettingTypes.SFTP); + setting.value = { + ...data, + sftp_previewSize: toAnonymousNumber(data.sftp_previewSize), + }; } catch (e) { } finally { setLoading(false); @@ -93,6 +128,6 @@ diff --git a/orion-visor-ui/src/views/system/setting/index.vue b/orion-visor-ui/src/views/system/setting/index.vue index ee6359dc..77421866 100644 --- a/orion-visor-ui/src/views/system/setting/index.vue +++ b/orion-visor-ui/src/views/system/setting/index.vue @@ -11,12 +11,30 @@ title="SFTP"> + + + + + + + + + + + + @@ -36,7 +54,10 @@ import { useRoute } from 'vue-router'; import usePermission from '@/hooks/permission'; import SftpSetting from './components/sftp-setting.vue'; + import LoginSetting from './components/login-setting.vue'; import EncryptSetting from './components/encrypt-setting.vue'; + import LogSetting from './components/log-setting.vue'; + import AutoClearSetting from './components/auto-clear-setting.vue'; import AboutSetting from './components/about-setting.vue'; const route = useRoute(); @@ -96,6 +117,7 @@ margin-top: 0; margin-bottom: 20px; font-weight: 600; + user-select: none; } .setting-form { @@ -104,6 +126,7 @@ .arco-descriptions-title { font-weight: 600; + user-select: none; } .alert-href { diff --git a/orion-visor-ui/src/views/system/setting/types/const.ts b/orion-visor-ui/src/views/system/setting/types/const.ts index b04bccdd..5881ef91 100644 --- a/orion-visor-ui/src/views/system/setting/types/const.ts +++ b/orion-visor-ui/src/views/system/setting/types/const.ts @@ -1,7 +1,8 @@ -import type { SystemSettingType } from '@/api/system/setting'; - // 系统设置类型 -export const SystemSettingTypes: Record = { - SFTP: 'SFTP', - ENCRYPT: 'ENCRYPT', +export const SystemSettingTypes = { + SFTP: 'sftp', + ENCRYPT: 'encrypt', + LOGIN: 'login', + LOG: 'log', + AUTO_CLEAR: 'autoClear', };