更新nuget&&添加swagger
This commit is contained in:
@@ -98,12 +98,18 @@ interface PageResult<T> {
|
||||
pageSize: number
|
||||
}
|
||||
|
||||
interface SwaggerDocumentationSettings {
|
||||
isEnabled: boolean
|
||||
}
|
||||
|
||||
const loading = ref(true)
|
||||
const refreshing = ref(false)
|
||||
const backupBusy = ref(false)
|
||||
const summary = ref<Summary>()
|
||||
const backups = ref<BackupArtifact[]>([])
|
||||
const activeLedger = ref<'audit' | 'jobs'>('audit')
|
||||
const swaggerEnabled = ref(false)
|
||||
const swaggerBusy = ref(false)
|
||||
|
||||
const auditLoading = ref(false)
|
||||
const auditRows = ref<AuditLog[]>([])
|
||||
@@ -204,12 +210,36 @@ function httpStatusType(status: number) {
|
||||
}
|
||||
|
||||
async function loadSummary() {
|
||||
const [{ data: summaryData }, { data: backupData }] = await Promise.all([
|
||||
const [{ data: summaryData }, { data: backupData }, { data: swaggerData }] = await Promise.all([
|
||||
http.get<Summary>('/operations/summary'),
|
||||
http.get<BackupArtifact[]>('/operations/backups'),
|
||||
http.get<SwaggerDocumentationSettings>('/operations/swagger'),
|
||||
])
|
||||
summary.value = summaryData
|
||||
backups.value = backupData
|
||||
swaggerEnabled.value = swaggerData.isEnabled
|
||||
}
|
||||
|
||||
async function updateSwaggerDocumentation(value: string | number | boolean) {
|
||||
if (typeof value !== 'boolean') return
|
||||
const isEnabled = value
|
||||
swaggerBusy.value = true
|
||||
try {
|
||||
const { data } = await http.put<SwaggerDocumentationSettings>(
|
||||
'/operations/swagger',
|
||||
{ isEnabled },
|
||||
)
|
||||
swaggerEnabled.value = data.isEnabled
|
||||
ElMessage.success(data.isEnabled ? 'Swagger 文档已开放。' : 'Swagger 文档已关闭。')
|
||||
} catch (error) {
|
||||
ElMessage.error(apiErrorMessage(error))
|
||||
} finally {
|
||||
swaggerBusy.value = false
|
||||
}
|
||||
}
|
||||
|
||||
function openSwaggerDocumentation() {
|
||||
window.open('/swagger', '_blank', 'noopener')
|
||||
}
|
||||
|
||||
async function loadAudit() {
|
||||
@@ -371,6 +401,35 @@ onMounted(refreshAll)
|
||||
</el-button>
|
||||
</header>
|
||||
|
||||
<section class="swagger-panel">
|
||||
<div>
|
||||
<span>API DOCUMENTATION</span>
|
||||
<h3>Swagger 文档</h3>
|
||||
<p>
|
||||
{{ swaggerEnabled
|
||||
? '文档与 OpenAPI 定义当前已对外开放。'
|
||||
: '文档当前关闭,访问 /swagger 将返回 404。' }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="swagger-actions">
|
||||
<el-switch
|
||||
:model-value="swaggerEnabled"
|
||||
:loading="swaggerBusy"
|
||||
active-text="已开放"
|
||||
inactive-text="已关闭"
|
||||
@change="updateSwaggerDocumentation"
|
||||
/>
|
||||
<el-button
|
||||
v-if="swaggerEnabled"
|
||||
type="primary"
|
||||
plain
|
||||
@click="openSwaggerDocumentation"
|
||||
>
|
||||
打开文档
|
||||
</el-button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="signal-board" aria-label="系统健康链路">
|
||||
<div class="signal-summary">
|
||||
<span>当前值守结论</span>
|
||||
@@ -670,6 +729,28 @@ onMounted(refreshAll)
|
||||
padding: 4px 2px 16px;
|
||||
}
|
||||
|
||||
.swagger-panel {
|
||||
align-items: center;
|
||||
background: #fff;
|
||||
border: 1px solid var(--line);
|
||||
border-left: 4px solid var(--signal);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 18px;
|
||||
padding: 18px 20px;
|
||||
}
|
||||
|
||||
.swagger-panel span {
|
||||
color: var(--signal);
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: .08em;
|
||||
}
|
||||
|
||||
.swagger-panel h3 { margin: 4px 0; }
|
||||
.swagger-panel p { color: var(--muted); margin: 0; }
|
||||
.swagger-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 12px; }
|
||||
|
||||
.console-kicker,
|
||||
.panel-heading span,
|
||||
.signal-summary > span,
|
||||
@@ -1011,6 +1092,7 @@ onMounted(refreshAll)
|
||||
@media (max-width: 560px) {
|
||||
.operations-console { gap: 12px; }
|
||||
.console-heading { align-items: flex-start; gap: 14px; }
|
||||
.swagger-panel { align-items: flex-start; flex-direction: column; }
|
||||
.console-heading p { font-size: 12px; line-height: 1.5; }
|
||||
.signal-track { display: block; }
|
||||
.signal-node { border-bottom: 1px solid #e4e9ea; padding: 13px 12px; }
|
||||
|
||||
Reference in New Issue
Block a user