feat: excel importer

This commit is contained in:
2025-03-10 16:31:08 +07:00
parent 8fbbd7b142
commit 6bf4f1e289
12 changed files with 250 additions and 145 deletions

View File

@@ -50,6 +50,11 @@ export function GetById(id: number): Promise<$models.PostType | null> & { cancel
return $typingPromise;
}
export function ImportFromExcel(): Promise<void> & { cancel(): void } {
let $resultPromise = $Call.ByID(1671814244) as any;
return $resultPromise;
}
export function Update(item: $models.PostType): Promise<$models.PostType> & { cancel(): void } {
let $resultPromise = $Call.ByID(2773888269, item) as any;
let $typingPromise = $resultPromise.then(($result: any) => {

View File

@@ -1,18 +1,27 @@
<script setup lang="ts">
import { Dialog } from 'primevue';
import { useErrorStore } from './stores/error.store';
import { Dialog } from "primevue";
import { useErrorStore } from "./stores/error.store";
import CommentScheme from "./comment/CommentScheme.vue";
import PostScheme from "./post/PostScheme.vue";
import PosttypeScheme from "./posttype/PosttypeScheme.vue";
import AuthorScheme from "./author/AuthorScheme.vue";
const errorStore = useErrorStore()
const errorStore = useErrorStore();
</script>
<template>
<Dialog v-model:visible="errorStore.show" maximizable class="w-[400px] h-[400px]">
<template #header>
Ошибка
</template>
<h1 class="text-red-500 text-2xl">{{ errorStore.message }}</h1>
<Dialog
v-model:visible="errorStore.show"
maximizable
class="w-[400px] h-[400px]"
>
<template #header> Ошибка </template>
<h1 class="text-red-500 text-2xl">{{ errorStore.message }}</h1>
</Dialog>
<main class="w-screen h-screen">
<CommentScheme></CommentScheme>
<PostScheme></PostScheme>
<PosttypeScheme></PosttypeScheme>
<AuthorScheme></AuthorScheme>
</main>
</template>

View File

@@ -22,112 +22,111 @@ const service = new Service();
const items = ref<Post[]>([]);
const load = async () => {
(scheme as any).Author.type!.nested!.values = await authorService.readAll();
(scheme as any).Author.type!.nested!.values = await authorService.readAll();
(scheme as any).PostType.type!.nested!.values =
await posttypeService.readAll();
(scheme as any).PostType.type!.nested!.values =
await posttypeService.readAll();
(scheme as any).Comments.type!.nested!.values =
await commentService.readAll();
(scheme as any).Comments.type!.nested!.values =
await commentService.readAll();
items.value = await service.readAll();
return items.value;
items.value = await service.readAll();
return items.value;
};
onMounted(async () => {
load();
await load();
});
const scheme: Scheme<Post> = reactive({
entityId: "PostId",
entityId: "PostId",
Id: {
hidden: true,
type: {
primitive: "number",
Id: {
hidden: true,
type: {
primitive: "number",
},
},
},
Text: {
russian: "Текст",
type: {
primitive: "string",
Text: {
russian: "Текст",
type: {
primitive: "string",
},
},
},
Deadline: {
russian: "Дедлайн",
date: true,
type: {
primitive: "date",
Deadline: {
russian: "Дедлайн",
date: true,
type: {
primitive: "date",
},
},
},
CreatedAt: {
readonly: true,
date: true,
type: {
primitive: "date",
CreatedAt: {
russian: "Дата создания",
type: {
primitive: "date",
},
},
},
AuthorId: {
hidden: true,
type: {
primitive: "number",
AuthorId: {
hidden: true,
type: {
primitive: "number",
},
},
},
Author: {
russian: "Автор",
type: {
nested: {
values: [],
field: ["Name"],
},
Author: {
russian: "Автор",
type: {
nested: {
values: [],
field: ["Name"],
},
},
},
},
PostTypeId: {
hidden: true,
type: {
primitive: "number",
PostTypeId: {
hidden: true,
type: {
primitive: "number",
},
},
},
PostType: {
russian: "Тип",
type: {
nested: {
values: [],
field: ["Name"],
},
PostType: {
russian: "Тип",
type: {
nested: {
values: [],
field: ["Name"],
},
},
},
},
Comments: {
russian: "Комментарии",
many: true,
type: {
nested: {
values: [],
field: ["Text"],
},
Comments: {
russian: "Комментарии",
many: true,
type: {
nested: {
values: [],
field: ["Text"],
},
},
},
},
});
const getDefaults = () => getDefaultValues(scheme);
const validate: Validate<Post> = (entity) => {
return {
status: "success",
};
return {
status: "success",
};
};
</script>
<template>
<main class="w-screen h-screen">
<Table :scheme :service :get-defaults :load :items :validate></Table>
</main>
<main class="w-screen h-screen">
<Table :scheme :service :get-defaults :load :items :validate></Table>
</main>
</template>

View File

@@ -7,49 +7,51 @@ import type { Scheme } from "../types/scheme.type";
import { PostType } from "../../bindings/app/internal/services";
import { ref } from "vue";
import type { Validate } from "../types/validate.type";
import { ImportFromExcel } from "../../bindings/app/internal/services/posttypeservice.ts";
const service = new Service();
const items = ref<PostType[]>([]);
const load = async () => {
items.value = await service.readAll();
return items.value;
items.value = await service.readAll();
return items.value;
};
onMounted(async () => {
load();
await load();
await ImportFromExcel();
});
const scheme: Scheme<PostType> = reactive({
entityId: "PostTypeId",
entityId: "PostTypeId",
Id: {
hidden: true,
type: {
primitive: "number",
Id: {
hidden: true,
type: {
primitive: "number",
},
},
},
Name: {
russian: "Название",
type: {
primitive: "string",
Name: {
russian: "Название",
type: {
primitive: "string",
},
},
},
});
const getDefaults = () => getDefaultValues(scheme);
const validate: Validate<PostType> = (entity) => {
return {
status: "success",
};
return {
status: "success",
};
};
</script>
<template>
<main class="w-screen h-screen">
<Table :scheme :service :get-defaults :load :items :validate></Table>
</main>
<main class="w-screen h-screen">
<Table :scheme :service :get-defaults :load :items :validate></Table>
</main>
</template>