feat: 路由优化

This commit is contained in:
tbphp
2025-07-01 00:13:01 +08:00
parent b9a833ceab
commit d5ebbf10f5
12 changed files with 206 additions and 142 deletions

View File

@@ -2,5 +2,5 @@ import request from './index';
import type { DashboardStats } from '@/types/models';
export const getDashboardStats = (): Promise<DashboardStats> => {
return request.get('/api/dashboard/stats');
return request.get('/dashboard/stats');
};

View File

@@ -1,7 +1,7 @@
import axios from "axios";
const apiClient = axios.create({
baseURL: "/",
baseURL: "/api",
headers: {
"Content-Type": "application/json",
},

View File

@@ -20,5 +20,5 @@ export interface PaginatedLogs {
}
export const getLogs = (query: LogQuery): Promise<PaginatedLogs> => {
return request.get('/api/logs', { params: query });
return request.get('/logs', { params: query });
};

View File

@@ -2,9 +2,9 @@ import request from './index';
import type { Setting } from '@/types/models';
export function getSettings() {
return request.get<Setting[]>('/api/settings');
return request.get<Setting[]>('/settings');
}
export function updateSettings(settings: Setting[]) {
return request.put('/api/settings', settings);
return request.put('/settings', settings);
}

View File

@@ -4,11 +4,17 @@
<template #header>
<div class="card-header">
<span>分组配置</span>
<el-button type="primary" @click="handleSave" :loading="isSaving">保存</el-button>
<el-button type="primary" @click="handleSave" :loading="isSaving"
>保存</el-button
>
</div>
</template>
<el-form :model="formData" label-width="120px" ref="formRef">
<el-form-item label="分组名称" prop="name" :rules="[{ required: true, message: '请输入分组名称' }]">
<el-form-item
label="分组名称"
prop="name"
:rules="[{ required: true, message: '请输入分组名称' }]"
>
<el-input v-model="formData.name"></el-input>
</el-form-item>
<el-form-item label="描述" prop="description">
@@ -24,29 +30,42 @@
</template>
<script setup lang="ts">
import { ref, watch, reactive } from 'vue';
import { useGroupStore } from '@/stores/groupStore';
import { updateGroup } from '@/api/groups';
import { ElCard, ElForm, ElFormItem, ElInput, ElButton, ElSwitch, ElMessage, ElEmpty } from 'element-plus';
import type { FormInstance } from 'element-plus';
import { ref, watch, reactive } from "vue";
import { useGroupStore } from "@/stores/groupStore";
import { updateGroup } from "@/api/groups";
import {
ElCard,
ElForm,
ElFormItem,
ElInput,
ElButton,
ElSwitch,
ElMessage,
ElEmpty,
} from "element-plus";
import type { FormInstance } from "element-plus";
const groupStore = useGroupStore();
const formRef = ref<FormInstance>();
const isSaving = ref(false);
const formData = reactive({
name: '',
description: '',
name: "",
description: "",
is_default: false,
});
watch(() => groupStore.selectedGroupDetails, (newGroup) => {
if (newGroup) {
formData.name = newGroup.name;
formData.description = newGroup.description;
formData.is_default = newGroup.is_default;
}
}, { immediate: true, deep: true });
watch(
() => groupStore.selectedGroupDetails,
(newGroup) => {
if (newGroup) {
formData.name = newGroup.name;
formData.description = newGroup.description;
formData.is_default = newGroup.is_default;
}
},
{ immediate: true, deep: true }
);
const handleSave = async () => {
if (!formRef.value || !groupStore.selectedGroupId) return;
@@ -55,16 +74,16 @@ const handleSave = async () => {
await formRef.value.validate();
isSaving.value = true;
await updateGroup(groupStore.selectedGroupId, {
name: formData.name,
description: formData.description,
is_default: formData.is_default,
name: formData.name,
description: formData.description,
is_default: formData.is_default,
});
ElMessage.success('保存成功');
ElMessage.success("保存成功");
// 刷新列表以获取最新数据
await groupStore.fetchGroups();
} catch (error) {
console.error('Failed to save group config:', error);
ElMessage.error('保存失败,请查看控制台');
console.error("Failed to save group config:", error);
ElMessage.error("保存失败,请查看控制台");
} finally {
isSaving.value = false;
}
@@ -77,4 +96,4 @@ const handleSave = async () => {
justify-content: space-between;
align-items: center;
}
</style>
</style>