diff --git a/src/api/types.ts b/src/api/types.ts index d9604ed..a6c7b13 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -16,6 +16,8 @@ export interface LoginData { export interface UserItem { id?: number account?: string + password?: string + confirmPassword?: string name?: string username?: string nickname?: string diff --git a/src/views/ops/pages/dc/server/index.vue b/src/views/ops/pages/dc/server/index.vue index 5d5b695..b45c60a 100644 --- a/src/views/ops/pages/dc/server/index.vue +++ b/src/views/ops/pages/dc/server/index.vue @@ -204,6 +204,11 @@ import { } from '@/api/ops/server' import axios from 'axios' +// 创建独立的 axios 实例用于请求外部 agent,绕过全局拦截器 +const agentAxios = axios.create({ + timeout: 5000, +}) + const router = useRouter() // 状态管理 @@ -290,7 +295,7 @@ const fetchServers = async () => { const res: any = await fetchServerList(params) - if (res.code === 200 || res.code === 0) { + if (res.code === 0) { const responseData = res.data || res.details || {} tableData.value = responseData.data || [] pagination.total = responseData.total || 0 @@ -414,7 +419,7 @@ const handleDelete = async (record: any) => { onOk: async () => { try { const res: any = await deleteServer(record.id) - if (res.code === 200 || res.code === 0) { + if (res.code === 0) { Message.success('删除成功') fetchServers() } else { @@ -445,33 +450,30 @@ const getAllMetrics = async () => { } catch (urlError) { console.warn(`服务器 ${record.name} 的 agent_config 不是合法的 URL:`, metricsUrl) // 设置默认值 0 - record.cpu_state = { value: 0, total: '', used: '' } - record.memory_state = { value: 0, total: '', used: '' } - record.disk_state = { value: 0, total: '', used: '' } + record.cpu_info = { value: 0, total: '', used: '' } + record.memory_info = { value: 0, total: '', used: '' } + record.disk_info = { value: 0, total: '', used: '' } return } - - // 发送请求获取指标数据 - const response = await axios.get(metricsUrl, { - timeout: 5000, // 5 秒超时 - }) - + // 使用独立的 axios 实例请求外部 agent,绕过全局拦截器 + const response = await agentAxios.get(metricsUrl) + console.log('获取指标数据:', response.data) if (response.data) { // 更新记录的监控数据 - record.cpu_state = { - value: response.data.cpu_usage || 0, - total: response.data.cpu?.[0]?.cores ? `${response.data.cpu[0].cores}核` : '', + record.cpu_info = { + value: Number((response.data.cpu_usage || 0).toFixed(2)), + total: response.data.cpu?.length ? `${response.data.cpu.length}核` : '', used: '', } - - record.memory_state = { - value: response.data.mem_usage?.used_percent || 0, + + record.memory_info = { + value: Number((response.data.mem_usage?.used_percent || 0).toFixed(2)), total: response.data.mem_usage?.total ? `${(response.data.mem_usage.total / 1024 / 1024 / 1024).toFixed(1)}GB` : '', used: response.data.mem_usage?.used ? `${(response.data.mem_usage.used / 1024 / 1024 / 1024).toFixed(1)}GB` : '', } - - record.disk_state = { - value: response.data.disk_usage?.used_percent || 0, + + record.disk_info = { + value: Number((response.data.disk_usage?.used_percent || 0).toFixed(2)), total: response.data.disk_usage?.total ? `${(response.data.disk_usage.total / 1024 / 1024 / 1024).toFixed(0)}GB` : '', used: response.data.disk_usage?.used ? `${(response.data.disk_usage.used / 1024 / 1024 / 1024).toFixed(0)}GB` : '', } @@ -479,15 +481,15 @@ const getAllMetrics = async () => { } catch (error) { console.warn(`获取服务器 ${record.name} 的监控指标失败:`, error) // 初始化默认值 - record.cpu_state = { value: 0, total: '', used: '' } - record.memory_state = { value: 0, total: '', used: '' } - record.disk_state = { value: 0, total: '', used: '' } + record.cpu_info = { value: 0, total: '', used: '' } + record.memory_info = { value: 0, total: '', used: '' } + record.disk_info = { value: 0, total: '', used: '' } } } else { // 没有配置 agent,设置默认值 - record.cpu_state = { value: 0, total: '', used: '' } - record.memory_state = { value: 0, total: '', used: '' } - record.disk_state = { value: 0, total: '', used: '' } + record.cpu_info = { value: 0, total: '', used: '' } + record.memory_info = { value: 0, total: '', used: '' } + record.disk_info = { value: 0, total: '', used: '' } } }) diff --git a/src/views/ops/pages/system-settings/account-management/index.vue b/src/views/ops/pages/system-settings/account-management/index.vue index 8d8b543..f03e240 100644 --- a/src/views/ops/pages/system-settings/account-management/index.vue +++ b/src/views/ops/pages/system-settings/account-management/index.vue @@ -72,6 +72,20 @@ :disabled="isEdit" /> + + + + + + @@ -120,6 +134,7 @@ import { ref, reactive, computed, onMounted } from 'vue' import { Message } from '@arco-design/web-vue' import type { TableColumnData } from '@arco-design/web-vue/es/table/interface' +import dayjs from 'dayjs' import SearchTable from '@/components/search-table/index.vue' import type { FormItem } from '@/components/search-form/types' import type { UserItem } from '@/api/types' @@ -180,6 +195,9 @@ const columns: TableColumnData[] = [ title: '创建时间', dataIndex: 'created_at', width: 180, + render: ({ record }: any) => { + return record.created_at ? dayjs(record.created_at).format('YYYY-MM-DD HH:mm') : '-' + }, }, { title: '操作', @@ -212,18 +230,39 @@ const formRef = ref() const formData = reactive({ id: undefined, account: '', + password: '', + confirmPassword: '', name: '', email: '', phone: '', status: 1, }) +// 确认密码验证 +const validateConfirmPassword = (value: string | undefined, callback: (error?: string) => void) => { + if (!value) { + callback('请再次输入密码') + } else if (value !== formData.password) { + callback('两次输入的密码不一致') + } else { + callback() + } +} + // 表单验证规则 const formRules = { account: [ { required: true, message: '请输入账号' }, { minLength: 3, message: '账号至少3个字符' }, ], + password: [ + { required: true, message: '请输入密码' }, + { minLength: 6, message: '密码至少6个字符' }, + ], + confirmPassword: [ + { required: true, message: '请再次输入密码' }, + { validator: validateConfirmPassword }, + ], name: [ { required: true, message: '请输入姓名' }, ], @@ -401,6 +440,8 @@ const resetFormData = () => { Object.assign(formData, { id: undefined, account: '', + password: '', + confirmPassword: '', name: '', email: '', phone: '',