add images

This commit is contained in:
2026-07-24 00:50:46 +07:00
parent 9bcfe42683
commit 7d04e5a1cd
7 changed files with 80 additions and 23 deletions
+36 -11
View File
@@ -56,28 +56,45 @@ async function deleteScenario(id: number) {
router.push('/scenarios')
}
async function updateScenario() {
const file = fileList.value[0].file
if (!file) return
async function uploadFile(file: File | null, filename: string): Promise<string> {
if (!file) {
return ''
}
// Читаем как ArrayBuffer
const arrayBuffer = await file.arrayBuffer()
const bytes = new Uint8Array(arrayBuffer)
const resUploadFile = await client.UploadFile({
filename: 'scenarios_' + scenario.value.id + '_' + file.name,
filename: filename,
data: uint8ToBase64(bytes),
})
if (resUploadFile.error != '') {
message.error(resUploadFile.error!)
return
return ''
}
return resUploadFile.filename || ''
}
async function updateScenario() {
let resUploadFilename = ''
if (fileList.value.length > 0) {
const file = fileList.value[0].file || null
if (file == null) {
return
}
resUploadFilename = await uploadFile(file, 'scenarios_' + scenario.value.id + '_' + file.name)
if (resUploadFilename === '') {
return
}
}
const res = await client.UpdateScenario({
id: scenario.value.id,
name: scenario.value.name,
description: scenario.value.description,
image: resUploadFile.filename,
image: resUploadFilename,
})
if (res.error != '') {
message.error(res.error!)
@@ -160,10 +177,6 @@ async function addNotFoundDoors(scenario: Scenario, place: Place) {
}
}
async function collapseAddPlace(place: Place) {
place.mode = 'mini-add'
}
async function cancelUpdatePlace(place: Place) {
await getScenario(Number(scenarioId))
@@ -171,6 +184,18 @@ async function cancelUpdatePlace(place: Place) {
}
async function updatePlace(place: Place) {
if (place.fileList.length > 0) {
const file = place.fileList[0].file || null
if (file == null) {
return
}
const resUploadFilename = await uploadFile(file, 'scenarios_' + scenario.value.id + '_place_' + place.code + '_' + file.name)
if (resUploadFilename === '') {
return
}
place.image = resUploadFilename
}
await addNotFoundDoors(scenario.value, place)
const res = await client.UpdateScenarioPlace({
id: scenario.value.id,
@@ -247,7 +272,7 @@ async function deletePlace(place: Place) {
<p class="settings-header">Картинка</p>
<n-input v-model:value="scenario.image" type="text" placeholder="default_scenario.png" disabled />
<n-upload multiple directory-dnd :max="1" v-model:file-list="fileList">
<n-upload directory-dnd :max="1" v-model:file-list="fileList">
<n-upload-dragger>
<n-text style="font-size: 16px">
Щелкните или перетащите файл в эту область для загрузки