feat: 路由优化
This commit is contained in:
@@ -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');
|
||||
};
|
@@ -1,7 +1,7 @@
|
||||
import axios from "axios";
|
||||
|
||||
const apiClient = axios.create({
|
||||
baseURL: "/",
|
||||
baseURL: "/api",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
|
@@ -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 });
|
||||
};
|
@@ -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);
|
||||
}
|
@@ -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>
|
||||
|
Reference in New Issue
Block a user