【初始化】前端工程项目

This commit is contained in:
chudong
2025-05-09 15:11:21 +08:00
parent c012704c9a
commit d7c556c3b0
524 changed files with 55595 additions and 112 deletions

View File

@@ -0,0 +1,51 @@
import { useApi } from './index'
import type {
AccessListParams,
AccessListResponse,
AddAccessParams,
UpdateAccessParams,
DeleteAccessParams,
GetAccessAllListParams,
GetAccessAllListResponse,
} from '../types/access'
import type { AxiosResponseData } from '../types/public'
/**
* @description 获取授权列表
* @param {AccessListParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AccessListResponse>>} 授权列表
*/
export const getAccessList = (params?: AccessListParams) =>
useApi<AccessListResponse, AccessListParams>('/v1/access/get_list', params)
/**
* @description 新增授权
* @param {AddAccessParams<string>} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 新增结果
*/
export const addAccess = (params?: AddAccessParams<string>) =>
useApi<AxiosResponseData, AddAccessParams<string>>('/v1/access/add_access', params)
/**
* @description 修改授权
* @param {UpdateAccessParams<string>} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 修改结果
*/
export const updateAccess = (params?: UpdateAccessParams<string>) =>
useApi<AxiosResponseData, UpdateAccessParams<string>>('/v1/access/upd_access', params)
/**
* @description 删除授权
* @param {DeleteAccessParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 删除结果
*/
export const deleteAccess = (params?: DeleteAccessParams) =>
useApi<AxiosResponseData, DeleteAccessParams>('/v1/access/del_access', params)
/**
* @description 获取DNS提供商列表
* @param {GetAccessAllListParams} [params] 请求参数
* @returns {Promise<AxiosResponse<GetAccessAllListResponse>>} 工作流 dns 配置
*/
export const getAccessAllList = (params?: GetAccessAllListParams) =>
useApi<GetAccessAllListResponse, GetAccessAllListParams>('/v1/access/get_all', params)

View File

@@ -0,0 +1,56 @@
import { useApi } from './index'
import type {
CertListParams,
CertListResponse,
ApplyCertParams,
ApplyCertResponse,
UploadCertParams,
UploadCertResponse,
DeleteCertParams,
DeleteCertResponse,
DownloadCertParams,
} from '../types/cert'
import axios from 'axios'
/**
* @description 获取证书列表
* @param {CertListParams} [params] 请求参数
* @returns {Promise<AxiosResponse<CertListResponse>>} 证书列表
*/
export const getCertList = (params?: CertListParams) =>
useApi<CertListResponse, CertListParams>('/v1/cert/get_list', params)
/**
* @description 申请证书
* @param {ApplyCertParams} [params] 请求参数
* @returns {Promise<AxiosResponse<ApplyCertResponse>>} 申请结果
*/
export const applyCert = (params?: ApplyCertParams) =>
useApi<ApplyCertResponse, ApplyCertParams>('/v1/cert/apply_cert', params)
/**
* @description 上传证书
* @param {UploadCertParams} [params] 请求参数
* @returns {Promise<AxiosResponse<UploadCertResponse>>} 上传结果
*/
export const uploadCert = (params?: UploadCertParams) =>
useApi<UploadCertResponse, UploadCertParams>('/v1/cert/upload_cert', params)
/**
* @description 删除证书
* @param {DeleteCertParams} [params] 请求参数
* @returns {Promise<AxiosResponse<DeleteCertResponse>>} 删除结果
*/
export const deleteCert = (params?: DeleteCertParams) =>
useApi<DeleteCertResponse, DeleteCertParams>('/v1/cert/del_cert', params)
/**
* @description 下载证书
* @param {DownloadCertParams} [params] 请求参数
* @returns {Promise<AxiosResponse<DownloadCertResponse>>} 下载结果
*/
export const downloadCert = (params?: DownloadCertParams) => {
return axios.get('/v1/cert/download', {
params,
})
}

View File

@@ -0,0 +1,86 @@
import { AxiosError } from 'axios'
import MD5 from 'crypto-js/md5'
import { isDev } from '@baota/utils/browser'
import { HttpClient, useAxios, useAxiosReturn } from '@baota/hooks/axios'
import { errorMiddleware } from '@baota/hooks/axios/model'
import { router } from '@router/index'
import type { AxiosResponseData } from '@/types/public'
/**
* @description 处理返回数据,如果状态码为 401
* @param {AxiosResponseData<T>} response 返回数据
* @returns {AxiosResponseData<T>} 返回数据
*/
export const responseHandleStatusCode = errorMiddleware((error: AxiosError) => {
// 处理 401 状态码
if (error.status === 401) {
router.push(`/login`)
}
// 处理404状态码
if (error.status === 404) {
router.go(0) // 刷新页面
}
return error
})
/**
* @description 返回数据
* @param {T} data 数据
* @returns {AxiosResponseData<T>} 返回数据
*/
export const useApiReturn = <T>(data: T, message?: string): AxiosResponseData<T> => {
return {
code: 200,
count: 0,
data,
message: message || '请求返回值错误,请检查',
status: false,
} as AxiosResponseData<T>
}
/**
* @description 创建http客户端实例
*/
export const instance = new HttpClient({
baseURL: isDev() ? '/api' : '/',
timeout: 50000,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
middlewares: [responseHandleStatusCode],
})
/**
* @description 创建api token
* @returns {string} api token
*/
export const createApiToken = () => {
const now = new Date().getTime()
const apiKey = '123456'
const api_token = MD5(now + MD5(apiKey).toString()).toString()
return { api_token, timestamp: now }
}
/**
/**
* @description 创建axios请求
* @param {string} url 请求地址
* @param {Z} params 请求参数
* @returns {useAxiosReturn<T, Z>} 返回结果
*/
export const useApi = <T, Z = Record<string, unknown>>(url: string, params?: Z) => {
const { urlRef, paramsRef, ...other } = useAxios<T>(instance)
const apiParams = createApiToken()
urlRef.value = url
paramsRef.value = isDev() ? { ...(params || {}), ...apiParams } : params || {}
return { urlRef, paramsRef: paramsRef as Ref<Z>, ...other } as useAxiosReturn<T, Z>
}
// 导出所有模块
export * from './public'
export * from './workflow'
export * from './cert'
export * from './access'
export * from './monitor'
export * from './setting'

View File

@@ -0,0 +1,50 @@
import { useApi } from './index'
import type { AxiosResponseData } from '@/types/public'
import type {
SiteMonitorListParams,
SiteMonitorListResponse,
AddSiteMonitorParams,
UpdateSiteMonitorParams,
DeleteSiteMonitorParams,
SetSiteMonitorParams,
} from '../types/monitor'
/**
* @description 获取站点监控列表
* @param {SiteMonitorListParams} [params] 请求参数
* @returns {Promise<AxiosResponse<SiteMonitorListResponse>>} 站点监控列表
*/
export const getSiteMonitorList = (params?: SiteMonitorListParams) =>
useApi<SiteMonitorListResponse, SiteMonitorListParams>('/v1/siteMonitor/get_list', params)
/**
* @description 新增站点监控
* @param {AddSiteMonitorParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 新增结果
*/
export const addSiteMonitor = (params?: AddSiteMonitorParams) =>
useApi<AxiosResponseData, AddSiteMonitorParams>('/v1/siteMonitor/add_site_monitor', params)
/**
* @description 修改站点监控
* @param {UpdateSiteMonitorParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 修改结果
*/
export const updateSiteMonitor = (params?: UpdateSiteMonitorParams) =>
useApi<AxiosResponseData, UpdateSiteMonitorParams>('/v1/siteMonitor/upd_site_monitor', params)
/**
* @description 删除站点监控
* @param {DeleteSiteMonitorParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 删除结果
*/
export const deleteSiteMonitor = (params?: DeleteSiteMonitorParams) =>
useApi<AxiosResponseData, DeleteSiteMonitorParams>('/v1/siteMonitor/del_site_monitor', params)
/**
* @description 启用/禁用站点监控
* @param {SetSiteMonitorParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 操作结果
*/
export const setSiteMonitor = (params?: SetSiteMonitorParams) =>
useApi<AxiosResponseData, SetSiteMonitorParams>('/v1/siteMonitor/set_site_monitor', params)

View File

@@ -0,0 +1,38 @@
import axios from 'axios'
import { useApi } from './index'
import type {
loginParams,
loginResponse,
GetOverviewsParams,
GetOverviewsResponse,
AxiosResponseData,
} from '@/types/public'
/**
* @description 登录
* @param {loginParams} [params] 登录参数
* @returns {Promise<AxiosResponse<loginResponse>>} 登录结果
*/
export const login = (params?: loginParams) => useApi<loginResponse, loginParams>('/v1/login/sign', params)
/**
* @description 获取登录验证码
* @returns {Promise<AxiosResponse<loginCodeResponse>>} 登录验证码
*/
export const getLoginCode = () => {
return axios.get('/v1/login/get_code')
}
/**
* @description 登出
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 登出结果
*/
export const signOut = () => useApi<AxiosResponseData>('/v1/login/sign-out')
/**
* @description 获取首页概览
* @param {GetOverviewsParams} [params] 请求参数
* @returns {Promise<AxiosResponse<GetOverviewsResponse>>} 首页概览数据
*/
export const getOverviews = (params?: GetOverviewsParams) =>
useApi<GetOverviewsResponse, GetOverviewsParams>('/v1/overview/get_overviews', params)

View File

@@ -0,0 +1,69 @@
import { useApi } from './index'
import type { AxiosResponseData } from '../types/public'
import type {
GetSettingParams,
GetSettingResponse,
SaveSettingParams,
GetReportListParams,
GetReportListResponse,
AddReportParams,
UpdateReportParams,
DeleteReportParams,
TestReportParams,
} from '../types/setting'
/**
* @description 获取系统设置
* @param {GetSettingParams} [params] 请求参数
* @returns {Promise<AxiosResponse<GetSettingResponse>>} 系统设置
*/
export const getSystemSetting = (params?: GetSettingParams) =>
useApi<GetSettingResponse, GetSettingParams>('/v1/setting/get_setting', params)
/**
* @description 保存系统设置
* @param {SaveSettingParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 保存结果
*/
export const saveSystemSetting = (params?: SaveSettingParams) =>
useApi<AxiosResponseData, SaveSettingParams>('/v1/setting/save_setting', params)
/**
* @description 添加告警
* @param {AddReportParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 配置结果
*/
export const addReport = (params?: AddReportParams) =>
useApi<AxiosResponseData, AddReportParams>('/v1/report/add_report', params)
/**
* @description 更新告警
* @param {UpdateReportParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 更新结果
*/
export const updateReport = (params?: UpdateReportParams) =>
useApi<AxiosResponseData, UpdateReportParams>('/v1/report/upd_report', params)
/**
* @description 删除告警
* @param {DeleteReportParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 删除结果
*/
export const deleteReport = (params?: DeleteReportParams) =>
useApi<AxiosResponseData, DeleteReportParams>('/v1/report/del_report', params)
/**
* @description 测试告警
* @param {TestReportParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 测试结果
*/
export const testReport = (params?: TestReportParams) =>
useApi<AxiosResponseData, TestReportParams>('/v1/report/notify_test', params)
/**
* @description 获取告警类型列表
* @param {GetReportListParams} [params] 请求参数
* @returns {Promise<AxiosResponse<GetReportListResponse>>} 告警类型列表
*/
export const getReportList = (params?: GetReportListParams) =>
useApi<GetReportListResponse, GetReportListParams>('/v1/report/get_list', params)

View File

@@ -0,0 +1,90 @@
import { useApi } from './index'
import type {
WorkflowListParams,
WorkflowListResponse,
AddWorkflowParams,
UpdateWorkflowParams,
DeleteWorkflowParams,
WorkflowHistoryParams,
WorkflowHistoryResponse,
ExecuteWorkflowParams,
UpdateWorkflowExecTypeParams,
EnableWorkflowParams,
WorkflowHistoryDetailParams,
} from '../types/workflow'
import { AxiosResponseData } from '@/types/public'
/**
* @description 获取工作流列表
* @param {WorkflowListParams} [params] 请求参数
* @returns {Promise<AxiosResponse<WorkflowListResponse>>} 工作流列表
*/
export const getWorkflowList = (params?: WorkflowListParams) =>
useApi<WorkflowListResponse, WorkflowListParams>('/v1/workflow/get_list', params)
/**
* @description 新增工作流
* @param {AddWorkflowParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 新增结果
*/
export const addWorkflow = (params?: AddWorkflowParams) =>
useApi<AxiosResponseData, AddWorkflowParams>('/v1/workflow/add_workflow', params)
/**
* @description 修改工作流
* @param {UpdateWorkflowParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 修改结果
*/
export const updateWorkflow = (params?: UpdateWorkflowParams) =>
useApi<AxiosResponseData, UpdateWorkflowParams>('/v1/workflow/upd_workflow', params)
/**
* @description 删除工作流
* @param {DeleteWorkflowParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 删除结果
*/
export const deleteWorkflow = (params?: DeleteWorkflowParams) =>
useApi<AxiosResponseData, DeleteWorkflowParams>('/v1/workflow/del_workflow', params)
/**
* @description 获取工作流执行历史
* @param {WorkflowHistoryParams} [params] 请求参数
* @returns {Promise<AxiosResponse<WorkflowHistoryResponse>>} 工作流执行历史
*/
export const getWorkflowHistory = (params?: WorkflowHistoryParams) =>
useApi<WorkflowHistoryResponse, WorkflowHistoryParams>('/v1/workflow/get_workflow_history', params)
/**
* @description 获取工作流执行历史详情
* @param {WorkflowHistoryDetailParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 工作流执行历史详情
*/
export const getWorkflowHistoryDetail = (params?: WorkflowHistoryDetailParams) =>
useApi<AxiosResponseData, WorkflowHistoryDetailParams>('/v1/workflow/get_exec_log', params)
/**
* @description 手动执行工作流
* @param {ExecuteWorkflowParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 执行结果
*/
export const executeWorkflow = (params?: ExecuteWorkflowParams) =>
useApi<AxiosResponseData, ExecuteWorkflowParams>('/v1/workflow/execute_workflow', params)
/**
* @description 修改工作流执行方式
* @param {UpdateWorkflowExecTypeParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 修改结果
*/
export const updateWorkflowExecType = (params?: UpdateWorkflowExecTypeParams) =>
useApi<AxiosResponseData, UpdateWorkflowExecTypeParams>('/v1/workflow/exec_type', params)
/**
* @description 启用工作流或禁用工作流
* @param {EnableWorkflowParams} [params] 请求参数
* @returns {Promise<AxiosResponse<AxiosResponseData>>} 启用或禁用结果
*/
export const enableWorkflow = (params?: EnableWorkflowParams) =>
useApi<AxiosResponseData, EnableWorkflowParams>('/v1/workflow/active', params)