diff --git a/src/api/api-clients.js b/src/api/api-clients.js
index 48eceb3..6ec6760 100644
--- a/src/api/api-clients.js
+++ b/src/api/api-clients.js
@@ -4,3 +4,4 @@ export const getApiClients = (params) => adminHttp.get('/admin/api-clients', { p
export const createApiClient = (data) => adminHttp.post('/admin/api-clients', data)
export const updateApiClient = (clientKey, data) => adminHttp.patch(`/admin/api-clients/${clientKey}`, data)
export const rotateApiClientKey = (clientKey) => adminHttp.post(`/admin/api-clients/${clientKey}/rotate-key`)
+export const deleteApiClient = (clientKey) => adminHttp.delete(`/admin/api-clients/${clientKey}`)
diff --git a/src/api/companies.js b/src/api/companies.js
index 732817c..a5d7268 100644
--- a/src/api/companies.js
+++ b/src/api/companies.js
@@ -3,4 +3,5 @@ import { adminHttp } from './http'
export const getCompanies = () => adminHttp.get('/admin/companies')
export const createCompany = (data) => adminHttp.post('/admin/companies', data)
export const updateCompany = (companyKey, data) => adminHttp.patch(`/admin/companies/${companyKey}`, data)
+export const deleteCompany = (companyKey) => adminHttp.delete(`/admin/companies/${companyKey}`)
export const getCompanySites = (companyKey) => adminHttp.get(`/admin/companies/${companyKey}/sites`)
diff --git a/src/api/members.js b/src/api/members.js
index 5105673..d7a5b10 100644
--- a/src/api/members.js
+++ b/src/api/members.js
@@ -3,6 +3,7 @@ import { adminHttp } from './http'
export const getMembers = () => adminHttp.get('/admin/members')
export const upsertMember = (data) => adminHttp.post('/admin/members/upsert', data)
export const updateMember = (authentikSub, data) => adminHttp.patch(`/admin/members/${authentikSub}`, data)
+export const deleteMember = (authentikSub) => adminHttp.delete(`/admin/members/${authentikSub}`)
export const resetMemberPassword = (authentikSub) => adminHttp.post(`/admin/members/${authentikSub}/password/reset`)
export const getMemberPermissionGroups = (authentikSub) => adminHttp.get(`/admin/members/${authentikSub}/permission-groups`)
export const setMemberPermissionGroups = (authentikSub, groupKeys) =>
diff --git a/src/api/modules.js b/src/api/modules.js
index 2e48669..44ee34d 100644
--- a/src/api/modules.js
+++ b/src/api/modules.js
@@ -3,5 +3,6 @@ import { adminHttp } from './http'
export const getModules = () => adminHttp.get('/admin/modules')
export const createModule = (data) => adminHttp.post('/admin/modules', data)
export const updateModule = (moduleKey, data) => adminHttp.patch(`/admin/modules/${moduleKey}`, data)
+export const deleteModule = (moduleKey) => adminHttp.delete(`/admin/modules/${moduleKey}`)
export const getModuleGroups = (moduleKey) => adminHttp.get(`/admin/modules/${moduleKey}/groups`)
export const getModuleMembers = (moduleKey) => adminHttp.get(`/admin/modules/${moduleKey}/members`)
diff --git a/src/api/permission-groups.js b/src/api/permission-groups.js
index 9d5a238..b30d4f2 100644
--- a/src/api/permission-groups.js
+++ b/src/api/permission-groups.js
@@ -3,6 +3,7 @@ import { adminHttp } from './http'
export const getPermissionGroups = () => adminHttp.get('/admin/permission-groups')
export const createPermissionGroup = (data) => adminHttp.post('/admin/permission-groups', data)
export const updatePermissionGroup = (groupKey, data) => adminHttp.patch(`/admin/permission-groups/${groupKey}`, data)
+export const deletePermissionGroup = (groupKey) => adminHttp.delete(`/admin/permission-groups/${groupKey}`)
export const getPermissionGroupPermissions = (groupKey) => adminHttp.get(`/admin/permission-groups/${groupKey}/permissions`)
export const getPermissionGroupBindings = (groupKey) => adminHttp.get(`/admin/permission-groups/${groupKey}/bindings`)
export const updatePermissionGroupBindings = (groupKey, data) =>
diff --git a/src/api/sites.js b/src/api/sites.js
index 7cfa055..9556165 100644
--- a/src/api/sites.js
+++ b/src/api/sites.js
@@ -3,3 +3,4 @@ import { adminHttp } from './http'
export const getSites = () => adminHttp.get('/admin/sites')
export const createSite = (data) => adminHttp.post('/admin/sites', data)
export const updateSite = (siteKey, data) => adminHttp.patch(`/admin/sites/${siteKey}`, data)
+export const deleteSite = (siteKey) => adminHttp.delete(`/admin/sites/${siteKey}`)
diff --git a/src/api/systems.js b/src/api/systems.js
index 3e87b58..486a96f 100644
--- a/src/api/systems.js
+++ b/src/api/systems.js
@@ -3,5 +3,6 @@ import { adminHttp } from './http'
export const getSystems = () => adminHttp.get('/admin/systems')
export const createSystem = (data) => adminHttp.post('/admin/systems', data)
export const updateSystem = (systemKey, data) => adminHttp.patch(`/admin/systems/${systemKey}`, data)
+export const deleteSystem = (systemKey) => adminHttp.delete(`/admin/systems/${systemKey}`)
export const getSystemGroups = (systemKey) => adminHttp.get(`/admin/systems/${systemKey}/groups`)
export const getSystemMembers = (systemKey) => adminHttp.get(`/admin/systems/${systemKey}/members`)
diff --git a/src/pages/admin/ApiClientsPage.vue b/src/pages/admin/ApiClientsPage.vue
index 6408fc4..cd3a638 100644
--- a/src/pages/admin/ApiClientsPage.vue
+++ b/src/pages/admin/ApiClientsPage.vue
@@ -31,6 +31,7 @@
{{ row.status === 'active' ? '停用' : '啟用' }}
+ 刪除
@@ -101,7 +102,7 @@
import { ref, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Refresh } from '@element-plus/icons-vue'
-import { createApiClient, getApiClients, rotateApiClientKey, updateApiClient } from '@/api/api-clients'
+import { createApiClient, getApiClients, rotateApiClientKey, updateApiClient, deleteApiClient } from '@/api/api-clients'
const items = ref([])
const loading = ref(false)
@@ -278,5 +279,17 @@ async function toggleStatus(row) {
}
}
+async function handleDelete(row) {
+ try {
+ await ElMessageBox.confirm(`確認刪除 API Client ${row.name}(${row.client_key})?`, '刪除確認', { type: 'warning' })
+ await deleteApiClient(row.client_key)
+ ElMessage.success('刪除成功')
+ await load()
+ } catch (err) {
+ if (err === 'cancel') return
+ ElMessage.error(err.response?.data?.detail || '刪除失敗')
+ }
+}
+
onMounted(load)
diff --git a/src/pages/admin/CompaniesPage.vue b/src/pages/admin/CompaniesPage.vue
index a473450..faa91b4 100644
--- a/src/pages/admin/CompaniesPage.vue
+++ b/src/pages/admin/CompaniesPage.vue
@@ -13,10 +13,11 @@
-
+
編輯
站台
+ 刪除
@@ -64,9 +65,9 @@
diff --git a/src/pages/admin/MembersPage.vue b/src/pages/admin/MembersPage.vue
index a7d20da..8e9b051 100644
--- a/src/pages/admin/MembersPage.vue
+++ b/src/pages/admin/MembersPage.vue
@@ -24,6 +24,7 @@
編輯
重設密碼
+ 刪除
@@ -71,12 +72,13 @@
diff --git a/src/pages/admin/ModulesPage.vue b/src/pages/admin/ModulesPage.vue
index db5b1dd..bc6271f 100644
--- a/src/pages/admin/ModulesPage.vue
+++ b/src/pages/admin/ModulesPage.vue
@@ -29,6 +29,7 @@
編輯
群組
會員
+ 刪除
@@ -102,9 +103,9 @@
diff --git a/src/pages/admin/SystemsPage.vue b/src/pages/admin/SystemsPage.vue
index 401d180..a37c1c8 100644
--- a/src/pages/admin/SystemsPage.vue
+++ b/src/pages/admin/SystemsPage.vue
@@ -26,6 +26,7 @@
編輯
群組
會員
+ 刪除
@@ -94,9 +95,9 @@