update editor

This commit is contained in:
2026-07-21 00:32:31 +07:00
parent db558c87d1
commit 16114bb134
2 changed files with 189 additions and 105 deletions
+40 -42
View File
@@ -126,9 +126,37 @@ async function addPlace() {
applications: undefined,
doors: undefined,
keys: undefined,
mode: 'add'
}
}
async function addNotFoundDoors(scenario: Scenario, place: Place) {
place.doors?.forEach(async (door) => {
let place = scenario.story?.places?.find((place) => {
return place.code == door.code
})
if (place == undefined) {
const res = await client.AddScenarioPlace({
id: scenario.id,
place: {
code: door.code,
name: door.name,
text: undefined,
image: undefined,
hidden: undefined,
applications: undefined,
doors: undefined,
keys: undefined
},
})
if (res.error != '') {
message.error(res.error!)
return
}
}
})
}
async function collapseAddPlace(place: Place) {
place.mode = 'mini-add'
}
@@ -140,6 +168,7 @@ async function cancelUpdatePlace(place: Place) {
}
async function updatePlace(place: Place) {
await addNotFoundDoors(scenario.value, place)
const res = await client.UpdateScenarioPlace({
id: scenario.value.id,
code: place.oldCode,
@@ -188,12 +217,8 @@ async function deletePlace(place: Place) {
</n-flex>
</PlaceBlock>
<PlaceBlock
:place="place"
v-model:mode="place.mode"
v-for="place in scenario.story?.places"
v-bind:key="place.code"
>
<PlaceBlock :place="place" v-model:mode="place.mode" v-for="place in scenario.story?.places"
v-bind:key="place.code">
<n-flex justify="end">
<n-button @click="deletePlace(place)" type="error" ghost>Удалить</n-button>
<n-button @click="cancelUpdatePlace(place)">Отмена</n-button>
@@ -205,39 +230,20 @@ async function deletePlace(place: Place) {
<!-- Окно настроек сценария -->
<n-modal v-model:show="showSettingsScenarioModal">
<n-card
style="width: 600px"
title="Настройки сценария"
:bordered="false"
size="huge"
role="dialog"
aria-modal="true"
>
<n-card style="width: 600px" title="Настройки сценария" :bordered="false" size="huge" role="dialog"
aria-modal="true">
<template #header-extra>
<n-button @click="showSettingsScenarioModal = false"> x </n-button>
</template>
<n-space vertical>
<p>Название</p>
<n-input
v-model:value="scenario.name"
type="text"
placeholder='Дело №0 "Следствие ведут овечки"'
/>
<n-input v-model:value="scenario.name" type="text" placeholder='Дело №0 "Следствие ведут овечки"' />
<p class="settings-header">Описание</p>
<n-input
v-model:value="scenario.description"
type="textarea"
placeholder="Убийство пастуха..."
/>
<n-input v-model:value="scenario.description" type="textarea" placeholder="Убийство пастуха..." />
<p class="settings-header">Картинка</p>
<n-input
v-model:value="scenario.image"
type="text"
placeholder="default_scenario.png"
disabled
/>
<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-dragger>
<n-text style="font-size: 16px">
@@ -254,17 +260,9 @@ async function deletePlace(place: Place) {
Введите название сценария
<n-text class="name-text" strong>{{ scenario.name }}</n-text> чтобы удалить его
</p>
<n-input
v-model:value="deletedScenarioName"
type="text"
placeholder='Дело №0 "Следствие ведут овечки"'
/>
<n-button
@click="deleteScenario(scenario.id!)"
type="error"
ghost
:disabled="deletedScenarioName != scenario.name"
>
<n-input v-model:value="deletedScenarioName" type="text" placeholder='Дело №0 "Следствие ведут овечки"' />
<n-button @click="deleteScenario(scenario.id!)" type="error" ghost
:disabled="deletedScenarioName != scenario.name">
Удалить сценарий
</n-button>
</n-space>
@@ -312,7 +310,7 @@ async function deletePlace(place: Place) {
/* border: 1px solid red; */
}
@media (width >= 1024px) {
@media (width >=1024px) {
.places-container {
padding: 20px 250px;
height: calc(100vh - 70px);