diff --git a/src/api/admin/userVm.js b/src/api/admin/userVm.js new file mode 100644 index 0000000..fe303de --- /dev/null +++ b/src/api/admin/userVm.js @@ -0,0 +1,103 @@ +import { http2 } from '@/utils/request.js' + +const BASE = '/api/v1/admin/good/user_vm' +const GOODS_BASE = '/api/v1/admin/good/user_goods' + +const fd = (data) => { + const f = new FormData() + Object.entries(data).forEach(([k, v]) => { + if (v === undefined || v === null || v === '') return + // 数组类型逐个 append(如 network_ids) + if (Array.isArray(v)) { + v.forEach(item => f.append(k, item)) + } else { + f.append(k, v) + } + }) + return f +} + +// ========== 用户虚拟机 ========== +export const getUserVmList = (params) => http2.get(`${BASE}/list`, { params }) +export const getUserVmDetail = (params) => http2.get(`${BASE}/detail`, { params }) +export const getUserVmVnc = (params) => http2.get(`${BASE}/vnc`, { params }) +export const getUserVmHostImages = (params) => http2.get(`${BASE}/host_images`, { params }) +export const createUserVm = (data) => http2.post(`${BASE}/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const bindUserVm = (data) => http2.post(`${BASE}/bind`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const transferUserVm = (data) => http2.post(`${BASE}/transfer`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const migrateUserVm = (data) => http2.post(`${BASE}/migrate`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const updateUserVmTraffic = (data) => http2.post(`${BASE}/update_traffic`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const updateUserVm = (data) => http2.post(`${BASE}/update`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const refactorUserVm = (data) => http2.post(`${BASE}/refactor`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const startUserVm = (data) => http2.post(`${BASE}/start`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const stopUserVm = (data) => http2.post(`${BASE}/stop`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const rebootUserVm = (data) => http2.post(`${BASE}/reboot`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const suspendUserVm = (data) => http2.post(`${BASE}/suspend`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const resumeUserVm = (data) => http2.post(`${BASE}/resume`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const rescueUserVm = (data) => http2.post(`${BASE}/rescue`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const exitRescueUserVm = (data) => http2.post(`${BASE}/exit_rescue`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const rebuildUserVm = (data) => http2.post(`${BASE}/rebuild`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const deleteUserVm = (params) => http2.delete(`${BASE}/delete`, { params }) + +// ========== 数据卷 ========== +export const getUserVmVolumeList = (params) => http2.get(`${BASE}/volume/list`, { params }) +export const getUserVmVolumeDetail = (params) => http2.get(`${BASE}/volume/detail`, { params }) +export const createUserVmVolume = (data) => http2.post(`${BASE}/volume/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const resizeUserVmVolume = (data) => http2.post(`${BASE}/volume/resize`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const mountUserVmVolume = (data) => http2.post(`${BASE}/volume/mount`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const unmountUserVmVolume = (data) => http2.post(`${BASE}/volume/unmount`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const deleteUserVmVolume = (params) => http2.delete(`${BASE}/volume/delete`, { params }) + +// ========== 快照 ========== +export const getUserVmSnapshotList = (params) => http2.get(`${BASE}/snapshot/list`, { params }) +export const getUserVmSnapshotProgress = (params) => http2.get(`${BASE}/snapshot/progress`, { params }) +export const getUserVmSnapshotCount = (params) => http2.get(`${BASE}/snapshot/count`, { params }) +export const createUserVmSnapshot = (data) => http2.post(`${BASE}/snapshot/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const restoreUserVmSnapshot = (data) => http2.post(`${BASE}/snapshot/restore`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const deleteUserVmSnapshot = (data) => http2.post(`${BASE}/snapshot/delete`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const setUserVmSnapshotLimit = (data) => http2.post(`${BASE}/snapshot/set_limit`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) + +// ========== 备份 ========== +export const getUserVmBackupList = (params) => http2.get(`${BASE}/backup/list`, { params }) +export const getUserVmBackupProgress = (params) => http2.get(`${BASE}/backup/progress`, { params }) +export const getUserVmBackupCount = (params) => http2.get(`${BASE}/backup/count`, { params }) +export const createUserVmBackup = (data) => http2.post(`${BASE}/backup/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const restoreUserVmBackup = (data) => http2.post(`${BASE}/backup/restore`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const deleteUserVmBackup = (data) => http2.post(`${BASE}/backup/delete`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const setUserVmBackupLimit = (data) => http2.post(`${BASE}/backup/set_limit`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) + +// ========== 安全组 ========== +export const getUserVmPostGroupList = (params) => http2.get(`${BASE}/post_group/list`, { params }) +export const getUserVmPostGroupDetail = (params) => http2.get(`${BASE}/post_group/detail`, { params }) +export const getUserVmPostGroupUserList = (params) => http2.get(`${BASE}/post_group/user_list`, { params }) +export const createUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const updateUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/update`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const bindUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/bind`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const unbindUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/unbind`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const applyUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/apply`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const setSharedUserVmPostGroup = (data) => http2.post(`${BASE}/post_group/set_shared`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const deleteUserVmPostGroup = (params) => http2.delete(`${BASE}/post_group/delete`, { params }) +export const enableUserVmPostGroupWhitelist = (data) => http2.post(`${BASE}/post_group/enable_whitelist`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const disableUserVmPostGroupWhitelist = (data) => http2.post(`${BASE}/post_group/disable_whitelist`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const createUserVmPostGroupRule = (data) => http2.post(`${BASE}/post_group/create_rule`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const updateUserVmPostGroupRule = (data) => http2.post(`${BASE}/post_group/update_rule`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const deleteUserVmPostGroupRule = (params) => http2.delete(`${BASE}/post_group/delete_rule`, { params }) + +// ========== 网络 ========== +export const getUserVmNetworkList = (params) => http2.get(`${BASE}/network/list`, { params }) +export const getUserVmNetworkDetail = (params) => http2.get(`${BASE}/network/detail`, { params }) + +// ========== 组网 ========== +export const getUserVmNetworkingList = (params) => http2.get(`${BASE}/networking/list`, { params }) +export const getUserVmNetworkingDetail = (params) => http2.get(`${BASE}/networking/detail`, { params }) +export const createUserVmNetworking = (data) => http2.post(`${BASE}/networking/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const assignUserVmNetworking = (data) => http2.post(`${BASE}/networking/assign`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const removeUserVmNetworkingNetwork = (data) => http2.post(`${BASE}/networking/remove_network`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const deleteUserVmNetworking = (params) => http2.delete(`${BASE}/networking/delete`, { params }) + +// ========== 用户商品 ========== +export const getUserGoodsList = (params) => http2.get(`${GOODS_BASE}/list`, { params }) +export const getUserGoodsDetail = (params) => http2.get(`${GOODS_BASE}/detail`, { params }) +export const createUserGoods = (data) => http2.post(`${GOODS_BASE}/create`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const updateUserGoods = (data) => http2.post(`${GOODS_BASE}/update`, fd(data), { headers: { 'Content-Type': 'multipart/form-data' } }) +export const deleteUserGoods = (params) => http2.delete(`${GOODS_BASE}/delete`, { params }) diff --git a/src/components/UserSelector/index.vue b/src/components/UserSelector/index.vue index d1675d6..0c24b2b 100644 --- a/src/components/UserSelector/index.vue +++ b/src/components/UserSelector/index.vue @@ -46,7 +46,7 @@