1
This commit is contained in:
@@ -57,11 +57,8 @@ async function loadAll() {
|
||||
}
|
||||
}
|
||||
|
||||
// ---------- 添加图片(本地上传 / AI 生成 二选一) ----------
|
||||
// ---------- 添加图片(AI 生成) ----------
|
||||
const addVisible = ref(false)
|
||||
const addMode = ref('upload') // upload | ai
|
||||
const uploadList = ref([])
|
||||
const uploading = ref(false)
|
||||
const genForm = reactive({ species: '', count: 1, size: '704x1248', animalCount: 3, distanceMin: 20, distanceMax: 30 })
|
||||
const speciesOptions = ref([])
|
||||
const generating = ref(false)
|
||||
@@ -74,8 +71,6 @@ function loadGenOptions() {
|
||||
}
|
||||
|
||||
function openAdd() {
|
||||
addMode.value = 'upload'
|
||||
uploadList.value = []
|
||||
genForm.species = ''
|
||||
loadGenOptions()
|
||||
genForm.count = 1
|
||||
@@ -86,29 +81,6 @@ function openAdd() {
|
||||
addVisible.value = true
|
||||
}
|
||||
|
||||
function submitUpload() {
|
||||
if (!uploadList.value.length) {
|
||||
ElMessage.warning('请选择图片文件')
|
||||
return
|
||||
}
|
||||
uploading.value = true
|
||||
const fd = new FormData()
|
||||
fd.append('datasetId', datasetId.value)
|
||||
uploadList.value.forEach((f) => fd.append('files', f.raw))
|
||||
request
|
||||
.post('/datasets/upload', fd, { timeout: 300000 })
|
||||
.then((data) => {
|
||||
const extra = data.skipped ? `(${data.skipped} 张重名跳过)` : ''
|
||||
ElMessage.success(`已上传 ${data.added || 0} 张${extra},自动标注处理中…`)
|
||||
uploadList.value = []
|
||||
addVisible.value = false
|
||||
loadAll()
|
||||
})
|
||||
.finally(() => {
|
||||
uploading.value = false
|
||||
})
|
||||
}
|
||||
|
||||
function submitGen() {
|
||||
if (genForm.distanceMax < genForm.distanceMin) {
|
||||
ElMessage.warning('距离范围上限不能小于下限')
|
||||
@@ -629,33 +601,9 @@ onBeforeUnmount(() => {
|
||||
<el-empty v-else-if="!loading" description="暂无图片,请上传或 AI 生成" />
|
||||
</div>
|
||||
|
||||
<!-- 添加图片:本地上传 / AI 生成,表单随选择切换 -->
|
||||
<el-dialog v-model="addVisible" title="添加图片" width="min(520px, 92vw)" append-to-body>
|
||||
<div class="add-mode">
|
||||
<el-radio-group v-model="addMode">
|
||||
<el-radio-button value="upload">本地上传</el-radio-button>
|
||||
<el-radio-button value="ai">AI 生成</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
|
||||
<div v-if="addMode === 'upload'" class="add-upload">
|
||||
<el-upload
|
||||
v-model:file-list="uploadList"
|
||||
:auto-upload="false"
|
||||
multiple
|
||||
:limit="50"
|
||||
accept=".jpg,.jpeg,.png"
|
||||
list-type="picture-card"
|
||||
>
|
||||
<div class="upload-tile">
|
||||
<el-icon :size="22"><Plus /></el-icon>
|
||||
<div class="upload-tile-text">点击选择图片</div>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div class="add-tip">支持 jpg/jpeg/png 多选(已选显示预览,可点右上角×移除);与库内重名的文件自动跳过。</div>
|
||||
</div>
|
||||
|
||||
<el-form v-else label-width="90px">
|
||||
<!-- 添加图片:AI 生成 -->
|
||||
<el-dialog v-model="addVisible" title="AI 生成图片" width="min(520px, 92vw)" append-to-body>
|
||||
<el-form label-width="90px">
|
||||
<el-form-item label="动物名称">
|
||||
<el-select
|
||||
v-model="genForm.species"
|
||||
@@ -693,16 +641,7 @@ onBeforeUnmount(() => {
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<el-button
|
||||
v-if="addMode === 'upload'"
|
||||
type="primary"
|
||||
:loading="uploading"
|
||||
:disabled="!uploadList.length"
|
||||
@click="submitUpload"
|
||||
>
|
||||
上传 {{ uploadList.length ? `${uploadList.length} 张` : '' }}
|
||||
</el-button>
|
||||
<el-button v-else type="primary" :loading="generating" @click="submitGen">开始生成(可能需数分钟)</el-button>
|
||||
<el-button type="primary" :loading="generating" @click="submitGen">开始生成(可能需数分钟)</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user