fix: 站点管理改用admin全量接口, 显示待审核站点并提供通过/拒绝
This commit is contained in:
@@ -258,6 +258,13 @@ public class AdminController {
|
||||
|
||||
// ===================== 站点审核 =====================
|
||||
|
||||
@GetMapping("/sites")
|
||||
public ApiResponse<List<com.par.core.dto.SiteDTO>> listAllSites(HttpServletRequest request) {
|
||||
checkAdmin(request);
|
||||
return ApiResponse.success(siteService.listAllSites().stream()
|
||||
.map(siteService::toDTO).toList());
|
||||
}
|
||||
|
||||
@GetMapping("/sites/pending")
|
||||
public ApiResponse<List<com.par.core.dto.SiteDTO>> listPendingSites(HttpServletRequest request) {
|
||||
checkAdmin(request);
|
||||
|
||||
@@ -43,6 +43,9 @@ public interface SiteService {
|
||||
Site updateSite(String siteId, String name, String description, String baseUrl,
|
||||
String siteType, Long operatorId);
|
||||
|
||||
/** 所有站点列表(管理员用) */
|
||||
List<Site> listAllSites();
|
||||
|
||||
/** 待审核站点列表 */
|
||||
List<Site> listPendingSites();
|
||||
|
||||
|
||||
@@ -172,6 +172,14 @@ public class SiteServiceImpl implements SiteService {
|
||||
return site;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Site> listAllSites() {
|
||||
return siteMapper.selectList(
|
||||
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<Site>()
|
||||
.eq(Site::getDeleted, 0)
|
||||
.orderByAsc(Site::getCreatedAt));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Site> listPendingSites() {
|
||||
return siteMapper.selectList(
|
||||
|
||||
@@ -32,9 +32,12 @@ export default {
|
||||
},
|
||||
sites: {
|
||||
list: () => api.get('/sites'),
|
||||
adminList: () => api.get('/admin/sites'),
|
||||
get: (id) => api.get(`/sites/${id}`),
|
||||
create: (data) => api.post('/sites', data),
|
||||
update: (id, data) => api.put(`/sites/${id}`, data)
|
||||
update: (id, data) => api.put(`/sites/${id}`, data),
|
||||
approve: (id) => api.post(`/admin/sites/${id}/approve`),
|
||||
reject: (id) => api.post(`/admin/sites/${id}/reject`),
|
||||
},
|
||||
configs: {
|
||||
list: () => api.get('/configs'),
|
||||
|
||||
@@ -9,16 +9,20 @@
|
||||
<el-table-column prop="siteType" label="类型" width="100" />
|
||||
<el-table-column prop="status" label="状态" width="100">
|
||||
<template #default="scope">
|
||||
<el-tag :type="scope.row.status === 'active' ? 'success' : 'info'">
|
||||
<el-tag :type="statusType(scope.row.status)">
|
||||
{{ scope.row.status }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="schemaVersion" label="Schema版本" width="120" />
|
||||
<el-table-column label="操作" width="200">
|
||||
<el-table-column label="操作" width="280">
|
||||
<template #default="scope">
|
||||
<el-button size="small" @click="handleEdit(scope.row)">编辑</el-button>
|
||||
<el-button size="small" @click="handleViewConfig(scope.row)">配置</el-button>
|
||||
<template v-if="scope.row.status === 'pending'">
|
||||
<el-button size="small" type="success" @click="handleApprove(scope.row)">通过</el-button>
|
||||
<el-button size="small" type="danger" @click="handleReject(scope.row)">拒绝</el-button>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -145,10 +149,16 @@ const escapeHtml = (str) => {
|
||||
return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')
|
||||
}
|
||||
|
||||
const statusType = (s) => {
|
||||
if (s === 'active') return 'success'
|
||||
if (s === 'pending') return 'warning'
|
||||
return 'info'
|
||||
}
|
||||
|
||||
const fetchSites = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const res = await api.sites.list()
|
||||
const res = await api.sites.adminList()
|
||||
sites.value = res.data || []
|
||||
} catch (e) {
|
||||
ElMessage.error('获取站点列表失败')
|
||||
@@ -157,6 +167,27 @@ const fetchSites = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
const handleApprove = async (row) => {
|
||||
try {
|
||||
await api.sites.approve(row.id)
|
||||
ElMessage.success('已通过')
|
||||
fetchSites()
|
||||
} catch (e) {
|
||||
ElMessage.error(e.response?.data?.message || '操作失败')
|
||||
}
|
||||
}
|
||||
|
||||
const handleReject = async (row) => {
|
||||
try {
|
||||
await ElMessageBox.confirm(`确认拒绝站点 "${row.name}"?此操作将删除该站点。`, '警告', { type: 'warning' })
|
||||
await api.sites.reject(row.id)
|
||||
ElMessage.success('已拒绝')
|
||||
fetchSites()
|
||||
} catch (e) {
|
||||
if (e !== 'cancel') ElMessage.error(e.response?.data?.message || '操作失败')
|
||||
}
|
||||
}
|
||||
|
||||
const handleEdit = (row) => {
|
||||
editForm.value = {
|
||||
id: row.id,
|
||||
|
||||
Reference in New Issue
Block a user