feat(系统设置): 系统参数分类优化

This commit is contained in:
dataeaseShu 2024-11-26 14:05:19 +08:00
parent 93b2d9b721
commit ce7cac0d4f
7 changed files with 87 additions and 27 deletions

View File

@ -3376,6 +3376,7 @@ Scatter chart (bubble) chart: {a} (series name), {b} (data name), {c} (value arr
empty_desc: 'Please enter information on the left and save' empty_desc: 'Please enter information on the left and save'
}, },
setting_basic: { setting_basic: {
third_platform_settings: 'Third-party platform settings',
autoCreateUser: 'Third party automatically creates users', autoCreateUser: 'Third party automatically creates users',
dsIntervalTime: 'Data source detection time interval', dsIntervalTime: 'Data source detection time interval',
dsExecuteTime: 'Data source detection frequency', dsExecuteTime: 'Data source detection frequency',

View File

@ -3290,13 +3290,14 @@ export default {
empty_desc: '請在左側輸入訊息然後儲存' empty_desc: '請在左側輸入訊息然後儲存'
}, },
setting_basic: { setting_basic: {
third_platform_settings: '第三方平台設置',
autoCreateUser: '第三方自動建立使用者', autoCreateUser: '第三方自動建立使用者',
dsIntervalTime: '資料來源偵測時間間隔', dsIntervalTime: '資料來源偵測時間間隔',
dsExecuteTime: '資料來源偵測頻率', dsExecuteTime: '資料來源偵測頻率',
frontTimeOut: '請求超時時間', frontTimeOut: '請求超時時間 ()',
logLiveTime: '操作日誌保留時間', logLiveTime: '操作日誌保留時間 ()',
thresholdLogLiveTime: '閾值警告記錄保留時間', thresholdLogLiveTime: '閾值警告記錄保留時間 ()',
exportFileLiveTime: '後台匯出檔案保留時間', exportFileLiveTime: '後台匯出檔案保留時間 ()',
platformOid: '第三方平台使用者組織', platformOid: '第三方平台使用者組織',
platformRid: '第三方平台使用者角色', platformRid: '第三方平台使用者角色',
pwdStrategy: '開啟密碼策略', pwdStrategy: '開啟密碼策略',
@ -3308,8 +3309,8 @@ export default {
defaultSort: '資源預設排序方式', defaultSort: '資源預設排序方式',
defaultOpen: '頁面開啟方式', defaultOpen: '頁面開啟方式',
loginLimit: '限制登入', loginLimit: '限制登入',
loginLimitRate: '限制登入失敗次數()', loginLimitRate: '限制登入失敗次數 ()',
loginLimitTime: '限制登入失敗時間()' loginLimitTime: '限制登入失敗時間 ()'
}, },
resource_sort: { resource_sort: {
time_asc: '按建立時間升序', time_asc: '按建立時間升序',

View File

@ -3292,13 +3292,14 @@ export default {
empty_desc: '请在左侧输入信息然后保存' empty_desc: '请在左侧输入信息然后保存'
}, },
setting_basic: { setting_basic: {
third_platform_settings: '第三方平台设置',
autoCreateUser: '第三方自动创建用户', autoCreateUser: '第三方自动创建用户',
dsIntervalTime: '数据源检测时间间隔', dsIntervalTime: '数据源检测时间间隔',
dsExecuteTime: '数据源检测频率', dsExecuteTime: '数据源检测频率',
frontTimeOut: '请求超时时间', frontTimeOut: '请求超时时间 ()',
logLiveTime: '操作日志保留时间', logLiveTime: '操作日志保留时间 ()',
thresholdLogLiveTime: '阈值告警记录保留时间', thresholdLogLiveTime: '阈值告警记录保留时间 ()',
exportFileLiveTime: '后台导出文件保留时间', exportFileLiveTime: '后台导出文件保留时间 ()',
platformOid: '第三方平台用户组织', platformOid: '第三方平台用户组织',
platformRid: '第三方平台用户角色', platformRid: '第三方平台用户角色',
pwdStrategy: '开启密码策略', pwdStrategy: '开启密码策略',
@ -3310,8 +3311,8 @@ export default {
defaultSort: '资源默认排序方式', defaultSort: '资源默认排序方式',
defaultOpen: '页面打开方式', defaultOpen: '页面打开方式',
loginLimit: '限制登录', loginLimit: '限制登录',
loginLimitRate: '限制登录失败次数()', loginLimitRate: '限制登录失败次数 ()',
loginLimitTime: '限制登录失败时间()' loginLimitTime: '限制登录失败时间 ()'
}, },
resource_sort: { resource_sort: {
time_asc: '按创建时间升序', time_asc: '按创建时间升序',

View File

@ -223,6 +223,8 @@ formatLabel()
} }
.info-template-container { .info-template-container {
padding: 24px 24px 0; padding: 24px 24px 0;
background: var(--ContentBG, #ffffff);
border-radius: 4px;
.info-template-header { .info-template-header {
display: flex; display: flex;
margin-top: -4px; margin-top: -4px;

View File

@ -113,6 +113,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
const resetForm = (formEl: FormInstance | undefined) => { const resetForm = (formEl: FormInstance | undefined) => {
state.settingList = [] state.settingList = []
settingList.value = []
if (!formEl) return if (!formEl) return
formEl.resetFields() formEl.resetFields()
dialogVisible.value = false dialogVisible.value = false
@ -128,8 +129,19 @@ const showLoading = () => {
const closeLoading = () => { const closeLoading = () => {
loadingInstance.value?.close() loadingInstance.value?.close()
} }
const title = ref()
const edit = (list, orgOptions, roleOptions, loginOptions, sortOptions, openOptions) => { const settingList = ref([])
const edit = (
list,
orgOptions,
roleOptions,
loginOptions,
sortOptions,
openOptions,
titleVal,
settingListVal
) => {
title.value = titleVal
state.orgOptions = orgOptions || [] state.orgOptions = orgOptions || []
state.roleOptions = roleOptions || [] state.roleOptions = roleOptions || []
state.loginOptions = loginOptions || [] state.loginOptions = loginOptions || []
@ -185,6 +197,8 @@ const edit = (list, orgOptions, roleOptions, loginOptions, sortOptions, openOpti
state.form[item['pkey']] = pval || state.form[item['pkey']] state.form[item['pkey']] = pval || state.form[item['pkey']]
return item return item
}) })
settingList.value = state.settingList.filter(ele => settingListVal.includes(ele.pkey))
dialogVisible.value = true dialogVisible.value = true
} }
const loadRoleOptions = async () => { const loadRoleOptions = async () => {
@ -222,7 +236,7 @@ defineExpose({
<template> <template>
<el-drawer <el-drawer
:title="t('system.basic_settings')" :title="title"
v-model="dialogVisible" v-model="dialogVisible"
custom-class="basic-param-drawer" custom-class="basic-param-drawer"
size="600px" size="600px"
@ -237,7 +251,7 @@ defineExpose({
label-position="top" label-position="top"
> >
<el-form-item <el-form-item
v-for="item in state.settingList" v-for="item in settingList"
:key="item.pkey" :key="item.pkey"
:prop="item.pkey" :prop="item.pkey"
:class="{ 'setting-hidden-item': item.pkey === 'dsExecuteTime' }" :class="{ 'setting-hidden-item': item.pkey === 'dsExecuteTime' }"

View File

@ -5,7 +5,12 @@
setting-key="basic" setting-key="basic"
:setting-title="t('system.basic_settings')" :setting-title="t('system.basic_settings')"
:setting-data="baseInfoSettings" :setting-data="baseInfoSettings"
@edit="edit" @edit="
edit(
t('system.basic_settings'),
baseInfoSettings.map(ele => ele.pkey.split('.')[1])
)
"
/> />
<InfoTemplate <InfoTemplate
ref="loginTemplate" ref="loginTemplate"
@ -14,7 +19,27 @@
setting-key="basic" setting-key="basic"
:setting-title="t('system.login_settings')" :setting-title="t('system.login_settings')"
:setting-data="loginInoSettings" :setting-data="loginInoSettings"
@edit="edit" @edit="
edit(
t('system.login_settings'),
loginInoSettings.map(ele => ele.pkey.split('.')[1])
)
"
/>
<InfoTemplate
ref="thirdTemplate"
class="login-setting-template"
:label-tooltips="tooltips"
setting-key="basic"
:setting-title="t('setting_basic.third_platform_settings')"
:setting-data="thirdInfoSettings"
@edit="
edit(
t('setting_basic.third_platform_settings'),
thirdInfoSettings.map(ele => ele.pkey.split('.')[1])
)
"
/> />
<basic-edit ref="editor" @saved="refresh" /> <basic-edit ref="editor" @saved="refresh" />
</template> </template>
@ -32,6 +57,7 @@ const { t } = useI18n()
const editor = ref() const editor = ref()
const infoTemplate = ref() const infoTemplate = ref()
const loginTemplate = ref() const loginTemplate = ref()
const thirdTemplate = ref()
const showDefaultLogin = ref(false) const showDefaultLogin = ref(false)
const pvpOptions = [ const pvpOptions = [
{ value: '0', label: t('commons.date.permanent') }, { value: '0', label: t('commons.date.permanent') },
@ -66,6 +92,12 @@ const loginSettings = [
'setting_basic.loginLimitRate', 'setting_basic.loginLimitRate',
'setting_basic.loginLimitTime' 'setting_basic.loginLimitTime'
] ]
const thirdSettings = [
'setting_basic.autoCreateUser',
'setting_basic.platformOid',
'setting_basic.platformRid'
]
const state = reactive({ const state = reactive({
templateList: [] as SettingRecord[], templateList: [] as SettingRecord[],
orgOptions: [], orgOptions: [],
@ -109,11 +141,14 @@ const selectedRName = ref<string[]>([])
const selectedPvp = ref('0') const selectedPvp = ref('0')
const baseInfoSettings = computed(() => const baseInfoSettings = computed(() =>
state.templateList.filter(item => !loginSettings.includes(item.pkey)) state.templateList.filter(item => !loginSettings.concat(thirdSettings).includes(item.pkey))
)
const thirdInfoSettings = computed(() =>
state.templateList.filter(item => thirdSettings.includes(item.pkey))
) )
const loginInoSettings = computed(() => { const loginInoSettings = computed(() => {
const list = state.templateList.filter(item => loginSettings.includes(item.pkey)) const list = state.templateList.filter(item => loginSettings.includes(item.pkey))
console.log(list)
return list return list
}) })
@ -212,19 +247,22 @@ const refresh = () => {
nextTick(() => { nextTick(() => {
infoTemplate?.value.init() infoTemplate?.value.init()
loginTemplate?.value.init() loginTemplate?.value.init()
thirdTemplate?.value.init()
}) })
}) })
} }
refresh() refresh()
const edit = () => { const edit = (val, arr) => {
editor?.value.edit( editor?.value.edit(
cloneDeep(originData), cloneDeep(originData),
cloneDeep(state.orgOptions), cloneDeep(state.orgOptions),
cloneDeep(state.roleOptions), cloneDeep(state.roleOptions),
cloneDeep(state.loginOptions), cloneDeep(state.loginOptions),
cloneDeep(state.sortOptions), cloneDeep(state.sortOptions),
cloneDeep(state.openOptions) cloneDeep(state.openOptions),
val,
arr
) )
} }
const loadOrgOptions = async () => { const loadOrgOptions = async () => {
@ -311,9 +349,6 @@ const resetDefaultLogin = () => {
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.login-setting-template { .login-setting-template {
padding-top: 0; margin-top: 16px;
:deep(button) {
display: none;
}
} }
</style> </style>

View File

@ -4,7 +4,10 @@
<el-tab-pane v-for="item in tabArray" :key="item.name" :label="item.label" :name="item.name" /> <el-tab-pane v-for="item in tabArray" :key="item.name" :label="item.label" :name="item.name" />
</el-tabs> </el-tabs>
<div class="sys-setting-p"> <div class="sys-setting-p">
<div class="container-sys-param" :class="{ 'setting-max-h': activeName === 'map' }"> <div
class="container-sys-param"
:class="{ 'setting-max-h': activeName === 'map', 'basic-info_bg': activeName === 'basic' }"
>
<map-setting v-if="activeName === 'map'" /> <map-setting v-if="activeName === 'map'" />
<basic-info v-if="activeName === 'basic'" /> <basic-info v-if="activeName === 'basic'" />
<engine-info v-if="activeName === 'engine'" /> <engine-info v-if="activeName === 'engine'" />
@ -64,6 +67,9 @@ const addTable = tab => {
overflow-y: auto; overflow-y: auto;
background: var(--ContentBG, #ffffff); background: var(--ContentBG, #ffffff);
border-radius: 4px; border-radius: 4px;
&.basic-info_bg {
background: none;
}
} }
.setting-max-h { .setting-max-h {
height: 100% !important; height: 100% !important;