|
|
|
|
@ -59,12 +59,45 @@
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<el-card>
|
|
|
|
|
<h4 style="margin: 10px 0">当前系统配置</h4>
|
|
|
|
|
|
|
|
|
|
<el-table :data="systemConfigsList" stripe border>
|
|
|
|
|
<el-table-column prop="configName" label="配置名称" width="180" />
|
|
|
|
|
<el-table-column prop="configKey" label="配置键" width="200" />
|
|
|
|
|
<el-table-column prop="configValue" label="配置值" />
|
|
|
|
|
<el-table-column prop="currentDbType" label="当前数据库类型" width="150">
|
|
|
|
|
<template #default="{ row }">
|
|
|
|
|
<el-tag v-if="row.currentDbType" :type="row.currentDbType === 'postgresql' ? 'success' : row.currentDbType === 'sqlite' ? 'info' : 'warning'">
|
|
|
|
|
{{ row.currentDbType }}
|
|
|
|
|
</el-tag>
|
|
|
|
|
<span v-else>-</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="isActive" label="启用状态" width="100">
|
|
|
|
|
<template #default="{ row }">
|
|
|
|
|
<el-tag :type="row.isActive ? 'success' : 'danger'">
|
|
|
|
|
{{ row.isActive ? '启用' : '禁用' }}
|
|
|
|
|
</el-tag>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
|
|
|
|
|
<el-divider />
|
|
|
|
|
|
|
|
|
|
<h4 style="margin: 10px 0">修改配置</h4>
|
|
|
|
|
|
|
|
|
|
<el-form
|
|
|
|
|
ref="systemFormRef"
|
|
|
|
|
:model="systemForm"
|
|
|
|
|
:rules="systemRules"
|
|
|
|
|
label-width="100px"
|
|
|
|
|
>
|
|
|
|
|
<el-form-item label="配置名称" prop="configName">
|
|
|
|
|
<el-input v-model="systemForm.configName" placeholder="例如: DATABASE_URL" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="配置键" prop="configKey">
|
|
|
|
|
<el-input v-model="systemForm.configKey" placeholder="例如: DATABASE_URL" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="数据库类型" prop="dbType">
|
|
|
|
|
<el-select v-model="systemForm.dbType" placeholder="选择数据库类型">
|
|
|
|
|
<el-option label="SQLite" value="sqlite" />
|
|
|
|
|
@ -90,9 +123,15 @@
|
|
|
|
|
<el-form-item label="SQLite路径" prop="dbPath" v-if="systemForm.dbType === 'sqlite'">
|
|
|
|
|
<el-input v-model="systemForm.dbPath" placeholder="例如: ./amazing_data.db" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="Redis连接" prop="redis">
|
|
|
|
|
<el-form-item label="启用状态">
|
|
|
|
|
<el-switch v-model="systemForm.isActive" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="Redis连接" prop="redis" v-if="systemForm.configKey === 'REDIS_URL'">
|
|
|
|
|
<el-input v-model="systemForm.redis" placeholder="例如: redis://localhost:6379/0" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="Redis启用" prop="redisEnabled" v-if="systemForm.configKey === 'REDIS_URL'">
|
|
|
|
|
<el-switch v-model="systemForm.redisEnabled" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button type="primary" @click="handleSystemSubmit" :loading="systemSubmitting">
|
|
|
|
|
保存配置
|
|
|
|
|
@ -198,7 +237,10 @@ const formRef = ref()
|
|
|
|
|
const currentId = ref<number | null>(null)
|
|
|
|
|
|
|
|
|
|
// 系统配置相关
|
|
|
|
|
const systemConfigsList = ref<any[]>([])
|
|
|
|
|
const systemForm = reactive({
|
|
|
|
|
configName: '数据库配置',
|
|
|
|
|
configKey: 'DATABASE_URL',
|
|
|
|
|
dbType: 'sqlite',
|
|
|
|
|
dbHost: 'localhost',
|
|
|
|
|
dbPort: 5432,
|
|
|
|
|
@ -206,7 +248,9 @@ const systemForm = reactive({
|
|
|
|
|
dbPassword: '',
|
|
|
|
|
dbName: 'amazing_data',
|
|
|
|
|
dbPath: './amazing_data.db',
|
|
|
|
|
redis: 'redis://localhost:6379/0'
|
|
|
|
|
redis: 'redis://localhost:6379/0',
|
|
|
|
|
isActive: true,
|
|
|
|
|
redisEnabled: true
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const systemRules = {
|
|
|
|
|
@ -295,8 +339,18 @@ const fetchSystemConfigs = async () => {
|
|
|
|
|
try {
|
|
|
|
|
const res: any = await getSystemConfigs()
|
|
|
|
|
if (res.data) {
|
|
|
|
|
parseDatabaseUrl(res.data.database || 'sqlite:///./amazing_data.db')
|
|
|
|
|
systemForm.redis = res.data.redis || 'redis://localhost:6379/0'
|
|
|
|
|
systemConfigsList.value = res.data.configs || []
|
|
|
|
|
const dbConfig = systemConfigsList.value.find(c => c.configKey === 'DATABASE_URL')
|
|
|
|
|
if (dbConfig) {
|
|
|
|
|
parseDatabaseUrl(dbConfig.configValue || 'sqlite:///./amazing_data.db')
|
|
|
|
|
systemForm.configName = dbConfig.configName || '数据库配置'
|
|
|
|
|
systemForm.isActive = dbConfig.isActive ?? true
|
|
|
|
|
}
|
|
|
|
|
const redisConfig = systemConfigsList.value.find(c => c.configKey === 'REDIS_URL')
|
|
|
|
|
if (redisConfig) {
|
|
|
|
|
systemForm.redis = redisConfig.configValue || 'redis://localhost:6379/0'
|
|
|
|
|
systemForm.redisEnabled = redisConfig.isActive ?? true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error(error)
|
|
|
|
|
@ -365,10 +419,25 @@ const handleSystemSubmit = async () => {
|
|
|
|
|
try {
|
|
|
|
|
const databaseUrl = buildDatabaseUrl()
|
|
|
|
|
await updateSystemConfigs({
|
|
|
|
|
database: databaseUrl,
|
|
|
|
|
redis: systemForm.redis
|
|
|
|
|
configs: [
|
|
|
|
|
{
|
|
|
|
|
configName: systemForm.configName,
|
|
|
|
|
configKey: systemForm.configKey,
|
|
|
|
|
configValue: databaseUrl,
|
|
|
|
|
currentDbType: systemForm.dbType,
|
|
|
|
|
isActive: systemForm.isActive
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
configName: 'Redis配置',
|
|
|
|
|
configKey: 'REDIS_URL',
|
|
|
|
|
configValue: systemForm.redis,
|
|
|
|
|
currentDbType: null,
|
|
|
|
|
isActive: systemForm.redisEnabled
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
})
|
|
|
|
|
ElMessage.success('保存成功')
|
|
|
|
|
fetchSystemConfigs()
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error(error)
|
|
|
|
|
} finally {
|
|
|
|
|
@ -377,6 +446,8 @@ const handleSystemSubmit = async () => {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleSystemReset = () => {
|
|
|
|
|
systemForm.configName = '数据库配置'
|
|
|
|
|
systemForm.configKey = 'DATABASE_URL'
|
|
|
|
|
systemForm.dbType = 'sqlite'
|
|
|
|
|
systemForm.dbHost = 'localhost'
|
|
|
|
|
systemForm.dbPort = 5432
|
|
|
|
|
@ -385,6 +456,8 @@ const handleSystemReset = () => {
|
|
|
|
|
systemForm.dbName = 'amazing_data'
|
|
|
|
|
systemForm.dbPath = './amazing_data.db'
|
|
|
|
|
systemForm.redis = 'redis://localhost:6379/0'
|
|
|
|
|
systemForm.isActive = true
|
|
|
|
|
systemForm.redisEnabled = true
|
|
|
|
|
dbStructureStatus.value = null
|
|
|
|
|
showInitButton.value = false
|
|
|
|
|
}
|
|
|
|
|
|