up. 配置对比
This commit is contained in:
parent
c8eed0f11c
commit
7007ece750
@ -124,8 +124,20 @@ class ConfigController extends BaseController
|
|||||||
|
|
||||||
public function info()
|
public function info()
|
||||||
{
|
{
|
||||||
$info = Cache::get('sysConfigInfo');
|
$table_php = SysConfig::where(['status'=>1])->order(['name'=>'asc'])
|
||||||
$version = Cache::get('sysConfigVersion');
|
->select();
|
||||||
return $this->writeSuccess('success', ['info'=>$info, 'version'=>$version]);
|
$table_version = md5($table_php->toJson());
|
||||||
|
|
||||||
|
$cache_php = Cache::get('sysConfigInfo');
|
||||||
|
$cache_version = Cache::get('sysConfigVersion');
|
||||||
|
|
||||||
|
return $this->writeSuccess('success', [
|
||||||
|
// 表版本
|
||||||
|
'table_version'=> $table_version,
|
||||||
|
'table_php' => var_export($table_php->column('value','name'), true),
|
||||||
|
// 缓存版本
|
||||||
|
'cache_version'=> $cache_version,
|
||||||
|
'cache_php' => var_export($cache_php, true),
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,13 +69,13 @@ Route::group("adminapi", function () {
|
|||||||
* 配置管理
|
* 配置管理
|
||||||
*/
|
*/
|
||||||
Route::get('config$', [ConfigController::class, "list"])->name("system.listConfig");
|
Route::get('config$', [ConfigController::class, "list"])->name("system.listConfig");
|
||||||
|
Route::get("config/info", [ConfigController::class, "info"])->name("system.getConfigInfo");
|
||||||
Route::get('config/data', [ConfigController::class, "data"])->name("system.getConfigData");
|
Route::get('config/data', [ConfigController::class, "data"])->name("system.getConfigData");
|
||||||
Route::get('config/existence', [ConfigController::class, "existence"])->name("system.configExistence");
|
Route::get('config/existence', [ConfigController::class, "existence"])->name("system.configExistence");
|
||||||
Route::post("config", [ConfigController::class, "add"])->name("system.addConfig");
|
Route::post("config", [ConfigController::class, "add"])->name("system.addConfig");
|
||||||
Route::put("config$", [ConfigController::class, "update"])->name("system.updateConfig");
|
Route::put("config$", [ConfigController::class, "update"])->name("system.updateConfig");
|
||||||
Route::delete("config/batch", [ConfigController::class, "batchDelete"])->name("system.batchDeleteConfig");
|
Route::delete("config/batch", [ConfigController::class, "batchDelete"])->name("system.batchDeleteConfig");
|
||||||
Route::put("config/sync", [ConfigController::class, "sync"])->name("system.syncConfig");
|
Route::put("config/sync", [ConfigController::class, "sync"])->name("system.syncConfig");
|
||||||
Route::put("config/info", [ConfigController::class, "info"])->name("system.getConfigInfo");
|
|
||||||
Route::put("config/status", [ConfigController::class, "updateStatus"])->name("system.updateConfigStatus");
|
Route::put("config/status", [ConfigController::class, "updateStatus"])->name("system.updateConfigStatus");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -104,3 +104,14 @@ export async function syncConfigs() {
|
|||||||
}
|
}
|
||||||
return Promise.reject(new Error(res.data.message));
|
return Promise.reject(new Error(res.data.message));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前配置表数据
|
||||||
|
*/
|
||||||
|
export async function infoConfigs() {
|
||||||
|
const res = await request.get<ApiResult<any>>('/system/config/info');
|
||||||
|
if (res.data.code === 0 && res.data.data) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|||||||
@ -28,12 +28,6 @@ export function strToValue(type: string, value: string): any {
|
|||||||
case 'time_range':
|
case 'time_range':
|
||||||
case 'datetime_range':
|
case 'datetime_range':
|
||||||
return [null, null];
|
return [null, null];
|
||||||
case 'alert':
|
|
||||||
// 提示
|
|
||||||
return '-';
|
|
||||||
case '-':
|
|
||||||
// 分割线
|
|
||||||
return '-';
|
|
||||||
default:
|
default:
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
@ -95,7 +89,24 @@ export function valueToStr(type: string, value: any) {
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case 'json':
|
case 'json':
|
||||||
return value ? JSON.stringify(value) : "{}";
|
return value ? JSON.stringify(value) : "{}";
|
||||||
|
case 'int':
|
||||||
|
case 'number':
|
||||||
|
return value.toString();
|
||||||
|
case 'switch':
|
||||||
|
return value ? '1' : '0'
|
||||||
|
case 'checkbox':
|
||||||
|
return value.join(",")
|
||||||
|
case 'text':
|
||||||
|
case 'textarea':
|
||||||
|
case 'date':
|
||||||
|
case 'datetime':
|
||||||
|
case 'time':
|
||||||
|
return value === null ? "" : value;
|
||||||
|
case 'date_range':
|
||||||
|
case 'time_range':
|
||||||
|
case 'datetime_range':
|
||||||
|
return value.join(",");
|
||||||
default:
|
default:
|
||||||
return value;
|
return value === null ? "" : value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,9 @@
|
|||||||
<el-button type="danger" class="ele-btn-icon" :icon="Refresh" @click="sync()" :loading="syncLoading">
|
<el-button type="danger" class="ele-btn-icon" :icon="Refresh" @click="sync()" :loading="syncLoading">
|
||||||
同步配置
|
同步配置
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button type="success" class="ele-btn-icon" @click="info()">
|
||||||
|
配置列表
|
||||||
|
</el-button>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<ele-card :body-style="{ paddingTop: '8px' }" v-loading="configLoading">
|
<ele-card :body-style="{ paddingTop: '8px' }" v-loading="configLoading">
|
||||||
@ -41,18 +44,49 @@
|
|||||||
<el-empty v-else description="没有定义配置列表" />
|
<el-empty v-else description="没有定义配置列表" />
|
||||||
</el-form>
|
</el-form>
|
||||||
</ele-card>
|
</ele-card>
|
||||||
|
|
||||||
|
|
||||||
|
<ele-drawer
|
||||||
|
size="100%"
|
||||||
|
title="配置变更对比"
|
||||||
|
:append-to-body="true"
|
||||||
|
style="max-width: 100%"
|
||||||
|
v-model="showInfo"
|
||||||
|
:body-style="{ paddingBottom: '8px' }"
|
||||||
|
>
|
||||||
|
<div style="margin-bottom: 30px;">
|
||||||
|
<el-descriptions
|
||||||
|
class="margin-top"
|
||||||
|
title="With border"
|
||||||
|
:column="2"
|
||||||
|
border
|
||||||
|
>
|
||||||
|
<el-descriptions-item label="缓存版本号">{{ infoData.cache_version }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="数据版本号">{{ infoData.table_version }}</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</div>
|
||||||
|
<monaco-editor
|
||||||
|
v-model="infoData.table_php"
|
||||||
|
language="php"
|
||||||
|
v-model:original="infoData.cache_php"
|
||||||
|
original-language="php"
|
||||||
|
:diff="true"
|
||||||
|
style="height: 460px"
|
||||||
|
/>
|
||||||
|
</ele-drawer>
|
||||||
</ele-page>
|
</ele-page>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import {onMounted, ref } from 'vue';
|
import {onMounted, ref } from 'vue';
|
||||||
import {Refresh} from '@element-plus/icons-vue';
|
import {Refresh} from '@element-plus/icons-vue';
|
||||||
import {listConfigs, syncConfigs} from '@/api/system/config';
|
import {infoConfigs, listConfigs, syncConfigs} from '@/api/system/config';
|
||||||
import {getSysConfig, strToBind, strToOption} from '@/utils/sys-config';
|
import {getSysConfig, strToBind, strToOption} from '@/utils/sys-config';
|
||||||
import {useFormData} from '@/utils/use-form-data';
|
import {useFormData} from '@/utils/use-form-data';
|
||||||
import type {Config} from '@/api/system/config/model';
|
import type {Config} from '@/api/system/config/model';
|
||||||
import ConfigFormList from './components/config-form-list.vue';
|
import ConfigFormList from './components/config-form-list.vue';
|
||||||
import {EleMessage, toTree} from 'ele-admin-plus';
|
import {EleMessage, toTree} from 'ele-admin-plus';
|
||||||
|
import MonacoEditor from "@/components/MonacoEditor/index.vue";
|
||||||
|
|
||||||
defineOptions({name: 'SystemConfigSet'});
|
defineOptions({name: 'SystemConfigSet'});
|
||||||
|
|
||||||
@ -92,6 +126,26 @@ const sync = () => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const showInfo = ref(false);
|
||||||
|
const infoData = ref<any>({
|
||||||
|
cache_version: "",
|
||||||
|
cache_php: "",
|
||||||
|
table_php: "",
|
||||||
|
table_version: "",
|
||||||
|
});
|
||||||
|
const info = ()=>{
|
||||||
|
infoConfigs({}).then((data)=>{
|
||||||
|
showInfo.value = true;
|
||||||
|
infoData.value = {
|
||||||
|
table_php: data.table_php,
|
||||||
|
table_version: data.table_version,
|
||||||
|
cache_version: data.cache_version,
|
||||||
|
cache_php: data.cache_php,
|
||||||
|
|
||||||
|
};
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const configFormListRef = ref(null);
|
const configFormListRef = ref(null);
|
||||||
const saveForm = () => {
|
const saveForm = () => {
|
||||||
const allValues = configFormListRef.value?.getFormData();
|
const allValues = configFormListRef.value?.getFormData();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user