初始提交:OCI 面板前端(含 GenAI 网关一期)

This commit is contained in:
Wang Defa
2026-07-09 15:31:29 +08:00
commit db45a669e3
135 changed files with 25220 additions and 0 deletions
+62
View File
@@ -0,0 +1,62 @@
<script setup lang="ts">
import { NButton, NModal } from 'naive-ui'
defineProps<{
show: boolean
title: string
submitting?: boolean
submitText?: string
submitDisabled?: boolean
danger?: boolean
width?: number
}>()
const emit = defineEmits<{ 'update:show': [boolean]; submit: [] }>()
</script>
<template>
<NModal
:show="show"
preset="card"
:title="title"
:style="{ width: `${width ?? 480}px`, maxWidth: 'calc(100vw - 24px)' }"
:mask-closable="!submitting"
:close-on-esc="!submitting"
@update:show="emit('update:show', $event)"
>
<!-- 标题插槽:需要在标题旁放徽章等富内容时覆盖 -->
<template v-if="$slots.header" #header>
<slot name="header" />
</template>
<div class="form-modal-body">
<slot />
</div>
<template #footer>
<div class="flex justify-end gap-2.5">
<NButton size="small" :disabled="submitting" @click="emit('update:show', false)">
取消
</NButton>
<NButton
size="small"
:type="danger ? 'error' : 'primary'"
:loading="submitting"
:disabled="submitDisabled"
@click="emit('submit')"
>
{{ submitText ?? '确定' }}
</NButton>
</div>
</template>
</NModal>
</template>
<style scoped>
/* 长表单不撑破视口:内容区限高滚动,页脚按钮常驻;
负 margin + 等量 padding 让滚动条贴弹窗边缘(变量继承自 .n-card) */
.form-modal-body {
max-height: min(62vh, calc(100vh - 220px));
overflow-y: auto;
margin-inline: calc(-1 * var(--n-padding-left, 24px));
padding-inline: var(--n-padding-left, 24px);
}
</style>