1
This commit is contained in:
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>视野管理端</title>
|
||||
<script type="module" crossorigin src="/admin/assets/index-CLCH2RGt.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/admin/assets/index-CQqGq03-.css">
|
||||
<script type="module" crossorigin src="/admin/assets/index-DOXyyubn.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/admin/assets/index-CLxGZFm2.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
+4
-4
@@ -45,9 +45,9 @@ imageGen:
|
||||
promptTemplate: "野外大远景实拍:广角镜头下{scene},{distanceWord}有{count}{species}的小小身影在{action},鸟离镜头很远,只是很小的深色鸟形轮廓,隐约可辨,画面绝大部分是{scene},没有任何靠近镜头的动物,{light},写实野外摄影,真实照片质感"
|
||||
distanceWord: "二十多米外" # 与校验距离带呼应的观感词
|
||||
speciesByDataset: # 数据集名 → 物种池(表单未填动物名称时随机取一个)
|
||||
鸽子: [家鸽, 山斑鸠, 火斑鸠, 虎纹斑鸠, 珠颈斑鸠]
|
||||
野鸡: [雉鸡]
|
||||
兔子: [野兔]
|
||||
鸽子: [家鸽,火斑鸠,虎纹斑鸠,珠颈斑鸠,灰斑鸠]
|
||||
雉鸡: [雉鸡]
|
||||
兔子: [兔子]
|
||||
鸭子: [野鸭]
|
||||
鹌鹑: [鹌鹑]
|
||||
scenes: # 环境场景池(同一短语在模板中出现两次,须两处都读得通)
|
||||
@@ -72,7 +72,7 @@ imageGen:
|
||||
default: 0.35
|
||||
家鸽: 0.35
|
||||
珠颈斑鸠: 0.30
|
||||
山斑鸠: 0.30
|
||||
灰斑鸠: 0.30
|
||||
火斑鸠: 0.25
|
||||
虎纹斑鸠: 0.30
|
||||
野鸡: 0.45
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
@@ -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