This commit is contained in:
vadim committed 2026-09-24 15:13:12 +03:00
1 parent fcec12e5ba
commit 13f6ad35c5
5 files changed
+4 -101

No files matched your search

-4
View File
@@ -24,10 +24,6 @@ const issue = ref<Issue>()
const { ckey } = defineProps<Props>() const { ckey } = defineProps<Props>()
const statusName = computed(() => {
return statusStore.statuses?.find((el) => el.alias === issue.value?.status)?.name ?? issue.value?.status
})
const createdAtFormatted = computed(() => { const createdAtFormatted = computed(() => {
if (!issue.value?.createdAt) return '' if (!issue.value?.createdAt) return ''
return new Intl.DateTimeFormat('ru-RU', { dateStyle: 'medium', timeStyle: 'short' }).format( return new Intl.DateTimeFormat('ru-RU', { dateStyle: 'medium', timeStyle: 'short' }).format(
+1 -2
View File
@@ -37,8 +37,7 @@ export const useIssueStore = defineStore('item', () => {
async function getByKey(ckey: string) { async function getByKey(ckey: string) {
try { try {
const res = await itemGetByKey(ckey) return await itemGetByKey(ckey)
return res
} catch (e) { } catch (e) {
error.value = e instanceof Error ? e.message : 'error get item by key' error.value = e instanceof Error ? e.message : 'error get item by key'
} }
-1
View File
@@ -8,7 +8,6 @@ import IssueDetails from '@/components/IssueDetails.vue'
import IssueCreate from '@/components/IssueCreate.vue' import IssueCreate from '@/components/IssueCreate.vue'
import type { Issue } from '@/api/issue.api.ts' import type { Issue } from '@/api/issue.api.ts'
import IssuesListElement from '@/components/IssuesListElement.vue' import IssuesListElement from '@/components/IssuesListElement.vue'
import IssueFilter from '@/components/IssueFilter.vue'
import IssueStats from '@/components/IssueStats.vue' import IssueStats from '@/components/IssueStats.vue'
const issueStore = useIssueStore() const issueStore = useIssueStore()
+1 -1
View File
@@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, onMounted, onUnmounted, ref } from 'vue' import { computed, onUnmounted, ref } from 'vue'
const cards = ref<string[]>([]) const cards = ref<string[]>([])
+2 -93
View File
@@ -1,96 +1,5 @@
<script setup lang="ts"> <script setup lang="ts"></script>
import { ref, watch, watchEffect } from 'vue'
import { type Item, useIssueStore } from '@/stores/issue'
import { useRoute, useRouter } from 'vue-router'
const issueStore = useIssueStore()
const route = useRoute()
const router = useRouter()
const itemsPerPage = ref(10)
const page = ref(1)
const text = ref<string | null>(null)
const serverItems = ref<Item[]>([])
const loading = ref(true)
const totalItems = ref(0)
async function fetch() {
syncQuery()
loading.value = true
const res = await issueStore.list({
page: page.value,
itemsPerPage: itemsPerPage.value,
text: text.value,
})
serverItems.value = res.items
totalItems.value = res.total
loading.value = false
}
async function loadItems(params: { page: number; itemsPerPage: number; sortBy?: unknown }) {
page.value = params.page
itemsPerPage.value = params.itemsPerPage
await fetch()
}
async function onSearch() {
page.value = 1
await fetch()
}
function syncQuery() {
const query: Record<string, string> = {
page: String(page.value),
}
if (text.value) query.text = text.value
router.replace({ query })
}
watch(
() => route.query,
(query) => {
page.value = query.page ? Number(query.page) : 1
text.value = query.text ? String(query.text) : null
},
{ immediate: true },
)
</script>
<template> <template>
<div class="d-flex flex-column ga-2"> <div class="">reports</div>
<v-text-field
v-model="text"
clearable
variant="outlined"
density="compact"
placeholder="Search name..."
hide-details
@keydown.enter.prevent="onSearch"
@click:clear="onSearch"
/>
<v-data-table-server
density="compact"
hide-default-header
hover
:headers="[
{ key: 'key', title: 'key' },
{ key: 'text', title: 'text' },
{ key: 'status', title: 'status' },
{ key: 'priority', title: 'priority' },
{ key: 'assignee', title: 'assignee' },
]"
:items-per-page="itemsPerPage"
:items-per-page-options="[itemsPerPage]"
:page="page"
:items="serverItems"
:items-length="totalItems"
item-value="text"
@update:options="loadItems"
/>
</div>
</template> </template>