update editor

This commit is contained in:
2026-07-23 01:23:53 +07:00
parent beefb549d0
commit 32c2dae619
2 changed files with 57 additions and 32 deletions
+30 -5
View File
@@ -7,9 +7,17 @@ import { Key24Regular } from '@vicons/fluent'
import type { Application, Door, Key, Place } from '@/api/generated/crabs/evening_detective_server' import type { Application, Door, Key, Place } from '@/api/generated/crabs/evening_detective_server'
const props = defineProps({ const props = defineProps({
newPlaceCode: {
type: String,
},
newPlaceName: {
type: String,
},
newPlaceText: {
type: String,
},
place: { place: {
type: Object as PropType<Place>, type: Object as PropType<Place>,
required: true,
}, },
mode: { mode: {
type: String, type: String,
@@ -17,9 +25,22 @@ const props = defineProps({
}, },
}) })
const emit = defineEmits<{ 'update:mode': [value: string] }>() const emit = defineEmits<{
'update:newPlaceCode': [value: string],
'update:newPlaceName': [value: string],
'update:newPlaceText': [value: string],
'update:mode': [value: string]
}>()
const updateCode = (code: string) => {
emit('update:newPlaceCode', code)
}
const updateName = (name: string) => {
emit('update:newPlaceName', name)
}
const updateText = (text: string) => {
emit('update:newPlaceText', text)
}
const updateMode = (mode: string) => { const updateMode = (mode: string) => {
console.log(mode)
emit('update:mode', mode) emit('update:mode', mode)
} }
@@ -53,9 +74,13 @@ function onCreateKey(): Key {
<div v-if="mode == 'add'" class="place-block"> <div v-if="mode == 'add'" class="place-block">
<n-space vertical> <n-space vertical>
<n-input-group> <n-input-group>
<n-input :style="{ width: '20%' }" v-model:value="props.place.code" type="text" placeholder="Ы-1" /> <n-input :style="{ width: '20%' }" :value="newPlaceCode" @update:value="updateCode" type="text"
<n-input :style="{ width: '80%' }" v-model:value="props.place.name" type="text" placeholder="Дом №Ы" /> placeholder=-1" />
<n-input :style="{ width: '80%' }" :value="newPlaceName" @update:value="updateName" type="text"
placeholder="Дом №Ы" />
</n-input-group> </n-input-group>
<n-input :value="newPlaceText" @update:value="updateText" type="textarea" :autosize="{ minRows: 3 }"
placeholder="В начале было слово..." />
<slot></slot> <slot></slot>
</n-space> </n-space>
</div> </div>
+27 -27
View File
@@ -33,18 +33,6 @@ const scenario = ref<Scenario>({
publishedAt: undefined, publishedAt: undefined,
}) })
const newPlace = ref<Place>({
code: undefined,
name: undefined,
text: undefined,
image: undefined,
hidden: undefined,
applications: undefined,
doors: undefined,
keys: undefined,
mode: 'mini-add',
})
async function getScenario(id: number) { async function getScenario(id: number) {
const res = await client.GetScenario({ id: id }) const res = await client.GetScenario({ id: id })
if (res.error != '') { if (res.error != '') {
@@ -106,10 +94,25 @@ function uint8ToBase64(uint8Array: Uint8Array) {
return btoa(binaryString) return btoa(binaryString)
} }
const code = ref('')
const name = ref('')
const text = ref('')
const mode = ref('mini-add')
async function addPlace() { async function addPlace() {
const res = await client.AddScenarioPlace({ const res = await client.AddScenarioPlace({
id: scenario.value.id, id: scenario.value.id,
place: newPlace.value, place: {
code: code.value,
name: name.value,
text: text.value,
image: undefined,
hidden: undefined,
applications: undefined,
doors: undefined,
keys: undefined,
},
}) })
if (res.error != '') { if (res.error != '') {
message.error(res.error!) message.error(res.error!)
@@ -117,17 +120,10 @@ async function addPlace() {
} }
await getScenario(Number(scenarioId)) await getScenario(Number(scenarioId))
newPlace.value = { code.value = ''
code: undefined, name.value = ''
name: undefined, text.value = ''
text: undefined, mode.value = 'add'
image: undefined,
hidden: undefined,
applications: undefined,
doors: undefined,
keys: undefined,
mode: 'add'
}
} }
async function addNotFoundDoors(scenario: Scenario, place: Place) { async function addNotFoundDoors(scenario: Scenario, place: Place) {
@@ -208,10 +204,14 @@ async function deletePlace(place: Place) {
</n-button> </n-button>
</div> </div>
<PlaceBlock :place="newPlace" v-model:mode="newPlace.mode"> {{ code }}
{{ name }}
{{ text }}
<PlaceBlock v-model:mode="mode" v-model:newPlaceCode="code" v-model:newPlaceName="name"
v-model:newPlaceText="text">
<n-flex justify="end"> <n-flex justify="end">
<n-button @click="collapseAddPlace(newPlace)">Отмена</n-button> <n-button @click="mode = 'add'">Отмена</n-button>
<n-button @click="addPlace()" :disabled="!newPlace.code">Добавить точку</n-button> <n-button @click="addPlace()" :disabled="!code">Добавить точку</n-button>
</n-flex> </n-flex>
</PlaceBlock> </PlaceBlock>