diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 1499fd0..6e4ca1b 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -14,7 +14,9 @@
"primeicons": "^7.0.0",
"primelocale": "^2.0.3",
"primevue": "^4.2.5",
- "vue": "^3.5.13"
+ "qalendar": "^3.9.0",
+ "vue": "^3.5.13",
+ "vue-router": "^4.5.0"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.2.1",
@@ -512,6 +514,61 @@
"node": ">=18"
}
},
+ "node_modules/@fortawesome/fontawesome-common-types": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz",
+ "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/fontawesome-svg-core": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz",
+ "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==",
+ "license": "MIT",
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "6.7.2"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/free-regular-svg-icons": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.7.2.tgz",
+ "integrity": "sha512-7Z/ur0gvCMW8G93dXIQOkQqHo2M5HLhYrRVC0//fakJXxcF1VmMPsxnG6Ee8qEylA8b8Q3peQXWMNZ62lYF28g==",
+ "license": "(CC-BY-4.0 AND MIT)",
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "6.7.2"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/free-solid-svg-icons": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz",
+ "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==",
+ "license": "(CC-BY-4.0 AND MIT)",
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "6.7.2"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/vue-fontawesome": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.8.tgz",
+ "integrity": "sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@fortawesome/fontawesome-svg-core": "~1 || ~6",
+ "vue": ">= 3.0.0 < 4"
+ }
+ },
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -2114,6 +2171,12 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/perfect-scrollbar": {
+ "version": "1.5.6",
+ "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.6.tgz",
+ "integrity": "sha512-rixgxw3SxyJbCaSpo1n35A/fwI1r2rdwMKOTCg/AcG+xOEyZcE8UHVjpZMFCVImzsFoCZeJTT+M/rdEIQYO2nw==",
+ "license": "MIT"
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -2356,6 +2419,22 @@
"node": ">=12.11.0"
}
},
+ "node_modules/qalendar": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/qalendar/-/qalendar-3.9.0.tgz",
+ "integrity": "sha512-RYjE+a5q+hv3kPh/0GRurFK2J70S6mbR8Bz2+UcmYWW1btboP913k4RbqQy5KnxmLmWYwdBm5ct8cpHjVDfj4g==",
+ "license": "MIT",
+ "dependencies": {
+ "@fortawesome/fontawesome-svg-core": "^6.3.0",
+ "@fortawesome/free-regular-svg-icons": "^6.3.0",
+ "@fortawesome/free-solid-svg-icons": "^6.3.0",
+ "@fortawesome/vue-fontawesome": "^3.0.3",
+ "perfect-scrollbar": "^1.5.5"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -2939,6 +3018,21 @@
}
}
},
+ "node_modules/vue-router": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz",
+ "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-api": "^6.6.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
"node_modules/vue-tsc": {
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.2.8.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index e49cacd..3a031b3 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -15,7 +15,9 @@
"primeicons": "^7.0.0",
"primelocale": "^2.0.3",
"primevue": "^4.2.5",
- "vue": "^3.5.13"
+ "qalendar": "^3.9.0",
+ "vue": "^3.5.13",
+ "vue-router": "^4.5.0"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.2.1",
@@ -27,5 +29,11 @@
"typescript": "~5.6.2",
"vite": "^6.0.5",
"vue-tsc": "^2.2.0"
+ },
+ "pnpm": {
+ "onlyBuiltDependencies": [
+ "esbuild",
+ "vue-demi"
+ ]
}
}
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
index 556f8a7..6231604 100644
--- a/frontend/pnpm-lock.yaml
+++ b/frontend/pnpm-lock.yaml
@@ -26,9 +26,15 @@ importers:
primevue:
specifier: ^4.2.5
version: 4.3.1(vue@3.5.13(typescript@5.6.3))
+ qalendar:
+ specifier: ^3.9.0
+ version: 3.9.0(vue@3.5.13(typescript@5.6.3))
vue:
specifier: ^3.5.13
version: 3.5.13(typescript@5.6.3)
+ vue-router:
+ specifier: ^4.5.0
+ version: 4.5.0(vue@3.5.13(typescript@5.6.3))
devDependencies:
'@vitejs/plugin-vue':
specifier: ^5.2.1
@@ -231,6 +237,28 @@ packages:
cpu: [x64]
os: [win32]
+ '@fortawesome/fontawesome-common-types@6.7.2':
+ resolution: {integrity: sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==}
+ engines: {node: '>=6'}
+
+ '@fortawesome/fontawesome-svg-core@6.7.2':
+ resolution: {integrity: sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==}
+ engines: {node: '>=6'}
+
+ '@fortawesome/free-regular-svg-icons@6.7.2':
+ resolution: {integrity: sha512-7Z/ur0gvCMW8G93dXIQOkQqHo2M5HLhYrRVC0//fakJXxcF1VmMPsxnG6Ee8qEylA8b8Q3peQXWMNZ62lYF28g==}
+ engines: {node: '>=6'}
+
+ '@fortawesome/free-solid-svg-icons@6.7.2':
+ resolution: {integrity: sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==}
+ engines: {node: '>=6'}
+
+ '@fortawesome/vue-fontawesome@3.0.8':
+ resolution: {integrity: sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==}
+ peerDependencies:
+ '@fortawesome/fontawesome-svg-core': ~1 || ~6
+ vue: '>= 3.0.0 < 4'
+
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@@ -466,12 +494,9 @@ packages:
vue:
optional: true
-<<<<<<< HEAD
'@wailsio/runtime@3.0.0-alpha.66':
resolution: {integrity: sha512-ENLu8rn1griL1gFHJqkq1i+BVxrrA0JPJHYneUJYuf/s54kjuQViW0RKDEe/WTDo56ABpfykrd/T8OYpPUyXUw==}
-=======
->>>>>>> 4ec5fd2 (fix: creating, updating)
alien-signals@1.0.4:
resolution: {integrity: sha512-DJqqQD3XcsaQcQ1s+iE2jDUZmmQpXwHiR6fCAim/w87luaW+vmLY8fMlrdkmRwzaFXhkxf3rqPCR59tKVv1MDw==}
@@ -758,6 +783,9 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
+ perfect-scrollbar@1.5.6:
+ resolution: {integrity: sha512-rixgxw3SxyJbCaSpo1n35A/fwI1r2rdwMKOTCg/AcG+xOEyZcE8UHVjpZMFCVImzsFoCZeJTT+M/rdEIQYO2nw==}
+
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -826,17 +854,18 @@ packages:
primeicons@7.0.0:
resolution: {integrity: sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==}
-<<<<<<< HEAD
primelocale@2.0.3:
resolution: {integrity: sha512-/sMoTdLxDFJs2Bdns+F4lm33ph6m4j18Rho8y9dsz5DqgWliqXsfYu1We4tkHtviRWq8AzEj31TDLDA3NEYC0Q==}
engines: {node: '>=18.0.0', npm: '>=8.6.0'}
-=======
->>>>>>> 4ec5fd2 (fix: creating, updating)
primevue@4.3.1:
resolution: {integrity: sha512-NSUpcWf2WpXgqOvjgXu5zQM3E5UEXoA2iXLi6xV+h1SBZ1TmgNfrjme96KRzfUY2RBsI0rTSUuPv0I+fXvtcmA==}
engines: {node: '>=12.11.0'}
+ qalendar@3.9.0:
+ resolution: {integrity: sha512-RYjE+a5q+hv3kPh/0GRurFK2J70S6mbR8Bz2+UcmYWW1btboP913k4RbqQy5KnxmLmWYwdBm5ct8cpHjVDfj4g==}
+ engines: {node: '>=16.0.0'}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -992,6 +1021,11 @@ packages:
'@vue/composition-api':
optional: true
+ vue-router@4.5.0:
+ resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==}
+ peerDependencies:
+ vue: ^3.2.0
+
vue-tsc@2.2.8:
resolution: {integrity: sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==}
hasBin: true
@@ -1116,6 +1150,25 @@ snapshots:
'@esbuild/win32-x64@0.25.0':
optional: true
+ '@fortawesome/fontawesome-common-types@6.7.2': {}
+
+ '@fortawesome/fontawesome-svg-core@6.7.2':
+ dependencies:
+ '@fortawesome/fontawesome-common-types': 6.7.2
+
+ '@fortawesome/free-regular-svg-icons@6.7.2':
+ dependencies:
+ '@fortawesome/fontawesome-common-types': 6.7.2
+
+ '@fortawesome/free-solid-svg-icons@6.7.2':
+ dependencies:
+ '@fortawesome/fontawesome-common-types': 6.7.2
+
+ '@fortawesome/vue-fontawesome@3.0.8(@fortawesome/fontawesome-svg-core@6.7.2)(vue@3.5.13(typescript@5.6.3))':
+ dependencies:
+ '@fortawesome/fontawesome-svg-core': 6.7.2
+ vue: 3.5.13(typescript@5.6.3)
+
'@isaacs/cliui@8.0.2':
dependencies:
string-width: 5.1.2
@@ -1344,11 +1397,8 @@ snapshots:
typescript: 5.6.3
vue: 3.5.13(typescript@5.6.3)
-<<<<<<< HEAD
'@wailsio/runtime@3.0.0-alpha.66': {}
-=======
->>>>>>> 4ec5fd2 (fix: creating, updating)
alien-signals@1.0.4: {}
ansi-regex@5.0.1: {}
@@ -1618,6 +1668,8 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
+ perfect-scrollbar@1.5.6: {}
+
picocolors@1.1.1: {}
picomatch@2.3.1: {}
@@ -1675,11 +1727,8 @@ snapshots:
primeicons@7.0.0: {}
-<<<<<<< HEAD
primelocale@2.0.3: {}
-=======
->>>>>>> 4ec5fd2 (fix: creating, updating)
primevue@4.3.1(vue@3.5.13(typescript@5.6.3)):
dependencies:
'@primeuix/styled': 0.5.0
@@ -1690,6 +1739,16 @@ snapshots:
transitivePeerDependencies:
- vue
+ qalendar@3.9.0(vue@3.5.13(typescript@5.6.3)):
+ dependencies:
+ '@fortawesome/fontawesome-svg-core': 6.7.2
+ '@fortawesome/free-regular-svg-icons': 6.7.2
+ '@fortawesome/free-solid-svg-icons': 6.7.2
+ '@fortawesome/vue-fontawesome': 3.0.8(@fortawesome/fontawesome-svg-core@6.7.2)(vue@3.5.13(typescript@5.6.3))
+ perfect-scrollbar: 1.5.6
+ transitivePeerDependencies:
+ - vue
+
queue-microtask@1.2.3: {}
read-cache@1.0.0:
@@ -1846,6 +1905,11 @@ snapshots:
dependencies:
vue: 3.5.13(typescript@5.6.3)
+ vue-router@4.5.0(vue@3.5.13(typescript@5.6.3)):
+ dependencies:
+ '@vue/devtools-api': 6.6.4
+ vue: 3.5.13(typescript@5.6.3)
+
vue-tsc@2.2.8(typescript@5.6.3):
dependencies:
'@volar/typescript': 2.4.12
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 6cf7961..ac0e30f 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -1,11 +1,11 @@
@@ -18,6 +18,6 @@ const errorStore = useErrorStore();
{{ errorStore.message }}
-
+
diff --git a/frontend/src/components/calendar/Calendar.vue b/frontend/src/components/calendar/Calendar.vue
new file mode 100644
index 0000000..3f763ea
--- /dev/null
+++ b/frontend/src/components/calendar/Calendar.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/calendar/qalendar.d.ts b/frontend/src/components/calendar/qalendar.d.ts
new file mode 100644
index 0000000..6642906
--- /dev/null
+++ b/frontend/src/components/calendar/qalendar.d.ts
@@ -0,0 +1,4 @@
+declare module 'qalendar' {
+ import { DefineComponent } from 'vue';
+ export const Qalendar: DefineComponent<{}, {}, any>;
+ }
\ No newline at end of file
diff --git a/frontend/src/main.ts b/frontend/src/main.ts
index 47e4827..0e7f47f 100644
--- a/frontend/src/main.ts
+++ b/frontend/src/main.ts
@@ -6,8 +6,9 @@ import Aura from '@primevue/themes/aura'
import 'primeicons/primeicons.css'
import { ru } from 'primelocale/js/ru.js'
import { createPinia } from 'pinia'
+import { router } from './router/router'
-createApp(App).use(createPinia()).use(Config, {
+createApp(App).use(router).use(createPinia()).use(Config, {
theme: {
preset: Aura,
},
diff --git a/frontend/src/pages/Index.vue b/frontend/src/pages/Index.vue
new file mode 100644
index 0000000..aa2332d
--- /dev/null
+++ b/frontend/src/pages/Index.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/router/router.ts b/frontend/src/router/router.ts
new file mode 100644
index 0000000..3fc1501
--- /dev/null
+++ b/frontend/src/router/router.ts
@@ -0,0 +1,13 @@
+import { createRouter, createWebHistory, type RouteRecordRaw } from "vue-router";
+import Index from "../pages/Index.vue";
+
+export const routes: RouteRecordRaw[] = [{
+ path: "/",
+ component: Index,
+ name: 'Главная',
+}]
+
+export const router = createRouter({
+ history: createWebHistory(),
+ routes,
+});
\ No newline at end of file
diff --git a/wails_windows_amd64.syso b/wails_windows_amd64.syso
deleted file mode 100644
index fca2145..0000000
Binary files a/wails_windows_amd64.syso and /dev/null differ