This commit is contained in:
2026-07-20 22:36:30 +07:00
parent 34520a95d4
commit 301cfcd61b
17 changed files with 171 additions and 95 deletions
+17 -12
View File
@@ -18,17 +18,18 @@ const props = defineProps({
}
})
import { getAuthClient } from '@/api/auth_client';
import { useAuthStore } from '@/stores/auth';
import { useMessage } from 'naive-ui';
import { ref } from 'vue';
import { useRouter } from 'vue-router';
import { NIcon } from 'naive-ui'
import { Key24Regular } from '@vicons/fluent'
import { DoorOpen } from '@vicons/fa'
import { h } from 'vue'
import { Key24Regular } from '@vicons/fluent'
import { DoorFrontFilled } from '@vicons/material'
import { Icon } from '@vicons/utils'
import { useMessage } from 'naive-ui';
import { NIcon } from 'naive-ui'
import { ref } from 'vue';
import { h } from 'vue'
import { useRouter } from 'vue-router';
import { getAuthClient } from '@/api/auth_client';
import { useAuthStore } from '@/stores/auth';
const authStore = useAuthStore();
authStore.initFromStorage()
@@ -73,16 +74,20 @@ const goToLogout = () => {
<template>
<div class="menu-block">
<div class="left-group">
<div class="menu-item-block" :class="{ active: props.active == 'office' }" v-if="authStore.hasRole('user')" @click="router.push('/office')">
<div class="menu-item-block" :class="{ active: props.active == 'office' }" v-if="authStore.hasRole('user')"
@click="router.push('/office')">
Кабинет
</div>
<div class="menu-item-block" :class="{ active: props.active == 'games' }" v-if="hasPermission('games_page')" @click="router.push('/games')">
<div class="menu-item-block" :class="{ active: props.active == 'games' }" v-if="hasPermission('games_page')"
@click="router.push('/games')">
Игры
</div>
<div class="menu-item-block" :class="{ active: props.active == 'scenarios' }" v-if="hasPermission('scenarios_page')" @click="router.push('/scenarios')">
<div class="menu-item-block" :class="{ active: props.active == 'scenarios' }"
v-if="hasPermission('scenarios_page')" @click="router.push('/scenarios')">
Мои сценарии
</div>
<div class="menu-item-block" :class="{ active: props.active == 'users' }" v-if="hasPermission('users_page')" @click="router.push('/users')">
<div class="menu-item-block" :class="{ active: props.active == 'users' }" v-if="hasPermission('users_page')"
@click="router.push('/users')">
Пользователи
</div>
</div>
+3 -3
View File
@@ -1,10 +1,10 @@
<script setup lang="ts">
import { NAutoComplete, NButton, NCard, NCheckbox, NInput, NSpace, NTabPane, NTabs, useMessage } from 'naive-ui'
import { computed, ref } from 'vue'
import { NCard, NTabs, NTabPane, NCheckbox, NButton, NSpace, NInput, NAutoComplete, useMessage } from 'naive-ui'
import { useAuthStore } from '@/stores/auth';
import { useRouter } from 'vue-router';
import { useAuthStore } from '@/stores/auth';
const authStore = useAuthStore();
const router = useRouter()
+3 -2
View File
@@ -1,8 +1,9 @@
<script setup lang="ts">
import { getAuthClient } from '@/api/auth_client';
import { useAuthStore } from '@/stores/auth';
import { ref } from 'vue';
import { getAuthClient } from '@/api/auth_client';
import HeaderMenu from '@/components/HeaderMenu.vue'
import { useAuthStore } from '@/stores/auth';
const authStore = useAuthStore();
const client = getAuthClient();
+5 -4
View File
@@ -1,9 +1,10 @@
<script setup lang="ts">
import type { Application, Door, Key, Place, Scenario } from '@/api/generated/crabs/evening_detective_server';
import { NCard, NModal, NInput, NSpace, NText, NUpload, NUploadDragger, NSwitch, NDynamicInput, NInputGroup } from 'naive-ui'
import { NDynamicInput, NInput, NInputGroup, NSpace, NSwitch } from 'naive-ui'
import type { PropType } from 'vue';
import type { Application, Door, Key, Place } from '@/api/generated/crabs/evening_detective_server';
const props = defineProps({
place: {
type: Object as PropType<Place>,
@@ -15,7 +16,7 @@ const props = defineProps({
}
})
const emit = defineEmits<{ 'update:mode': [value: String] }>()
const emit = defineEmits<{ 'update:mode': [value: string] }>()
const updateMode = (mode: string) => {
console.log(mode)
emit('update:mode', mode)
@@ -52,7 +53,7 @@ function onCreateKey(): Key {
<div v-if="mode == 'show-editor'" class="place-block show-editor-block" @click="updateMode('edit')">
<p>[{{ props.place.code }}] - {{ props.place.name }}</p>
<div class="message-content">{{ props.place.text }}</div>
<p v-for="application in props.place.applications">{{ application.name }}</p>
<p v-for="application in props.place.applications" v-bind:key="application.name">{{ application.name }}</p>
</div>
<div v-if="mode == 'edit'" class="place-block">
+10 -9
View File
@@ -1,15 +1,16 @@
<script setup lang="ts">
import { getAuthClient } from '@/api/auth_client';
import type { Application, Door, Key, Place, Scenario } from '@/api/generated/crabs/evening_detective_server';
import HeaderMenu from '@/components/HeaderMenu.vue'
import { NButton, useMessage, type UploadFileInfo } from 'naive-ui';
import { Settings } from '@vicons/carbon'
import { Icon } from '@vicons/utils'
import { NButton, type UploadFileInfo,useMessage } from 'naive-ui';
import { NCard,NFlex, NInput, NModal, NSpace, NText, NUpload, NUploadDragger } from 'naive-ui'
import { ref } from 'vue';
import { useRoute } from 'vue-router';
import { Icon } from '@vicons/utils'
import { Settings } from '@vicons/carbon'
import router from '@/router';
import { NCard, NModal, NInput, NSpace, NText, NUpload, NUploadDragger, NFlex, NSwitch, NDynamicInput } from 'naive-ui'
import { getAuthClient } from '@/api/auth_client';
import type { Place, Scenario } from '@/api/generated/crabs/evening_detective_server';
import HeaderMenu from '@/components/HeaderMenu.vue'
import PlaceBlock from '@/components/PlaceBlock.vue';
import router from '@/router';
const client = getAuthClient();
const route = useRoute()
@@ -188,7 +189,7 @@ async function deletePlace(place: Place) {
</n-flex>
</PlaceBlock>
<PlaceBlock :place="place" v-model:mode="place.mode" v-for="place in scenario.story?.places">
<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>
+6 -5
View File
@@ -1,11 +1,12 @@
<script setup lang="ts">
import { useMessage } from 'naive-ui';
import { NButton, NCard, NInput,NModal } from 'naive-ui'
import { ref } from 'vue';
import { useRouter } from 'vue-router';
import { getAuthClient } from '@/api/auth_client';
import type { Scenario } from '@/api/generated/crabs/evening_detective_server';
import HeaderMenu from '@/components/HeaderMenu.vue'
import { useMessage } from 'naive-ui';
import { ref } from 'vue';
import { useRouter } from 'vue-router';
import { NCard, NModal, NButton, NInput } from 'naive-ui'
const client = getAuthClient();
@@ -53,7 +54,7 @@ getScenarios()
<p class="scenario-title">Создать новый сценарий</p>
</div>
<div class="scenario-block" v-for="scenario in scenarios" @click="toScenarioEditor(scenario.id!)">
<div class="scenario-block" v-for="scenario in scenarios" @click="toScenarioEditor(scenario.id!)" v-bind:key="scenario.id">
<div class="scenario-image-block scenario-image"
:style="{ backgroundImage: `url(${scenario.image})` }"></div>
<p class="scenario-title">{{ scenario.name }}</p>