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: '',