@coopenomics/desktop 2025.6.14 → 2025.6.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/package.json +7 -7
  2. package/src/entities/Branch/api/index.ts +1 -2
  3. package/src/entities/Branch/model/types.ts +2 -1
  4. package/src/entities/Session/model/store.ts +1 -1
  5. package/src/features/Branch/CreateBranch/ui/CreateBranchButton.vue +85 -33
  6. package/src/features/Branch/DeleteBranch/api/index.ts +15 -0
  7. package/src/features/Branch/DeleteBranch/index.ts +1 -0
  8. package/src/features/Branch/DeleteBranch/model/index.ts +44 -0
  9. package/src/features/Branch/DeleteBranch/ui/DeleteBranchButton.vue +56 -0
  10. package/src/features/Cooperative/UpdateBoard/index.ts +1 -0
  11. package/src/features/Cooperative/UpdateBoard/ui/AddMemberDialog.vue +59 -0
  12. package/src/features/Cooperative/UpdateBoard/ui/index.ts +1 -0
  13. package/src/features/Installer/ui/RequestKeyForm/RequestKeyForm.vue +1 -1
  14. package/src/features/Installer/ui/SetSovietForm/SetSovietForm.vue +1 -1
  15. package/src/features/Meet/CreateMeet/model/index.ts +4 -2
  16. package/src/features/Meet/CreateMeet/ui/CreateMeet.vue +8 -0
  17. package/src/features/Meet/CreateMeet/ui/CreateMeetForm.vue +164 -76
  18. package/src/features/Meet/GenerateSovietDecision/model/index.ts +1 -1
  19. package/src/features/Meet/RestartMeet/model/index.ts +16 -3
  20. package/src/features/Meet/RestartMeet/ui/RestartMeetForm.vue +135 -73
  21. package/src/features/PaymentMethod/AddPaymentMethod/ui/AddPaymentButton.vue +1 -1
  22. package/src/features/PaymentMethod/DeletePaymentMethod/ui/DeletePaymentMethodButton.vue +1 -1
  23. package/src/features/Request/AcceptRequest/ui/AcceptButton.vue +1 -1
  24. package/src/features/Request/CancelRequest/ui/CancelButton.vue +1 -1
  25. package/src/features/Request/CompleteOnRequest/ui/CompleteOnRequestButton.vue +1 -1
  26. package/src/features/Request/ConfirmRecieveOnRequest/ui/ConfirmRecieveOnRequest.vue +1 -1
  27. package/src/features/Request/ConfirmSupplyOnRequest/ui/ConfirmSupplyOnRequestButton.vue +1 -1
  28. package/src/features/Request/CreateChildOrder/ui/CreateChildOrderButton/CreateChildOrderButton.vue +1 -1
  29. package/src/features/Request/CreateParentOffer/ui/CreateParentOfferForm/CreateParentOfferForm.vue +1 -1
  30. package/src/features/Request/DeliverOnRequest/ui/DeliverOnRequestButton.vue +1 -1
  31. package/src/features/Request/DisputeOnRequest/ui/DisputeOnRequestButton.vue +1 -1
  32. package/src/features/Request/PublishRequest/ui/PublishRequestButton.vue +1 -1
  33. package/src/features/Request/RecieveOnRequest/ui/RecieveOnRequestButton.vue +1 -1
  34. package/src/features/Request/SupplyOnRequest/ui/SupplyOnRequestButton.vue +1 -1
  35. package/src/features/Request/UnpublishRequest/ui/UnpublishRequestButton.vue +1 -1
  36. package/src/features/Union/AddCooperative/ui/AddCooperativeForm.vue +1 -1
  37. package/src/features/User/LoginUser/ui/LoginForm/LoginForm.vue +1 -1
  38. package/src/features/Wallet/DepositToWallet/ui/DepositButton/DepositButton.vue +1 -1
  39. package/src/features/Wallet/WithdrawFromWallet/ui/withdrawButton.vue +1 -1
  40. package/src/pages/Cooperative/ListOfMeets/ui/ListOfMeetsPage.vue +1 -1
  41. package/src/pages/Cooperative/MemberBranchList/ui/MemberBranchListPage.vue +3 -0
  42. package/src/pages/Registrator/SignUp/GenerateAccount.vue +1 -1
  43. package/src/pages/Registrator/SignUp/ReadStatement.vue +1 -1
  44. package/src/pages/Registrator/SignUp/SignUp.vue +0 -2
  45. package/src/pages/Union/ListOfCooperatives/ui/UnionPageListOfCooperatives.vue +2 -2
  46. package/src/processes/navigation-guard-setup/index.ts +31 -31
  47. package/src/processes/process-decisions/index.ts +6 -1
  48. package/src/processes/select-branch/index.ts +11 -4
  49. package/src/shared/api/errors.ts +2 -1
  50. package/src/shared/ui/UserSearchSelector/UserSearchSelector.vue +328 -0
  51. package/src/shared/ui/UserSearchSelector/composables/useUserSearch.ts +70 -0
  52. package/src/shared/ui/UserSearchSelector/index.ts +3 -0
  53. package/src/shared/ui/UserSearchSelector/model/types.ts +17 -0
  54. package/src/shared/ui/index.ts +1 -0
  55. package/src/widgets/Cooperative/Funds/ui/AccumulationFunds.vue +3 -3
  56. package/src/widgets/Cooperative/Funds/ui/AddAccumulationFund.vue +1 -1
  57. package/src/widgets/Cooperative/Funds/ui/AddExpenseFund.vue +1 -1
  58. package/src/widgets/Cooperative/Funds/ui/ExpenseFunds.vue +3 -3
  59. package/src/widgets/Cooperative/Members/ui/Members.vue +167 -135
  60. package/src/widgets/Registrator/LostKey/ui/LostKey.vue +1 -1
  61. package/src/widgets/Registrator/ResetKey/ui/ResetKey.vue +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coopenomics/desktop",
3
- "version": "2025.6.14",
3
+ "version": "2025.6.24",
4
4
  "description": "A Desktop Project",
5
5
  "productName": "Desktop App",
6
6
  "author": "Alex Ant <dacom.dark.sun@gmail.com>",
@@ -24,8 +24,8 @@
24
24
  "start": "node -r ./alias-resolver.js dist/ssr/index.js"
25
25
  },
26
26
  "dependencies": {
27
- "@coopenomics/controller": "2025.6.14",
28
- "@coopenomics/sdk": "2025.6.14",
27
+ "@coopenomics/controller": "2025.6.24",
28
+ "@coopenomics/sdk": "2025.6.24",
29
29
  "@dicebear/collection": "^9.0.1",
30
30
  "@dicebear/core": "^9.0.1",
31
31
  "@fortawesome/fontawesome-svg-core": "^6.5.2",
@@ -50,7 +50,7 @@
50
50
  "@wharfkit/wallet-plugin-privatekey": "^1.1.0",
51
51
  "axios": "^1.2.1",
52
52
  "compression": "^1.7.4",
53
- "cooptypes": "2025.6.14",
53
+ "cooptypes": "2025.6.24",
54
54
  "dompurify": "^3.1.7",
55
55
  "dotenv": "^16.4.5",
56
56
  "email-regex": "^5.0.0",
@@ -80,7 +80,7 @@
80
80
  },
81
81
  "devDependencies": {
82
82
  "@intlify/vite-plugin-vue-i18n": "^3.3.1",
83
- "@prettier/plugin-pug": "^3.0.0",
83
+ "@prettier/plugin-pug": "^3.2.0",
84
84
  "@quasar/app-vite": "^1.9.3",
85
85
  "@types/node": "^12.20.21",
86
86
  "@typescript-eslint/eslint-plugin": "^5.10.0",
@@ -93,7 +93,7 @@
93
93
  "eslint-plugin-pug": "^1.2.5",
94
94
  "eslint-plugin-vue": "^9.26.0",
95
95
  "eslint-plugin-vue-pug": "^0.6.2",
96
- "prettier": "^2.8.8",
96
+ "prettier": "^3.6.0",
97
97
  "typescript": "^4.5.4",
98
98
  "vite-plugin-checker": "^0.6.4",
99
99
  "vue-tsc": "^1.8.22"
@@ -103,5 +103,5 @@
103
103
  "npm": ">= 6.13.4",
104
104
  "yarn": ">= 1.21.1"
105
105
  },
106
- "gitHead": "1c376c003ab7d30e5fa11e13152795ac4823885a"
106
+ "gitHead": "32e6a45f0597e651c2f3ab787462f7aa723c1732"
107
107
  }
@@ -27,8 +27,7 @@ async function loadPublicBranches(data: IGetBranchesInput): Promise<IPublicBranc
27
27
  return output;
28
28
  }
29
29
 
30
-
31
- export const api ={
30
+ export const api = {
32
31
  loadBranches,
33
32
  loadPublicBranches
34
33
  }
@@ -1,7 +1,8 @@
1
- import type { Queries } from '@coopenomics/sdk';
1
+ import type { Queries, Mutations } from '@coopenomics/sdk';
2
2
 
3
3
  export type IBranch = Queries.Branches.GetBranches.IOutput[typeof Queries.Branches.GetBranches.name][number]
4
4
  export type IPublicBranch = Queries.Branches.GetPublicBranches.IOutput[typeof Queries.Branches.GetPublicBranches.name][number]
5
5
 
6
6
  export type IGetBranchesInput = Queries.Branches.GetBranches.IInput['data']
7
+ export type IDeleteBranchInput = Mutations.Branches.DeleteBranch.IInput['data']
7
8
 
@@ -77,7 +77,7 @@ export const useSessionStore = defineStore('session', (): ISessionStore => {
77
77
  }
78
78
  } catch (e: any) {
79
79
  console.error(e);
80
- FailAlert(e.message);
80
+ FailAlert(e);
81
81
  close()
82
82
  globalStore.logout()
83
83
  }
@@ -1,61 +1,113 @@
1
1
  <template lang="pug">
2
2
  div
3
- q-btn(@click="show = true" color="primary" size="sm" icon="add") добавить участок
4
- q-dialog(v-model="show" persistent :maximized="false" )
5
- ModalBase(style="width: 500px; max-width: 100% !important;" :title="'Создать кооперативный участок'" :show_close="true")
6
- Form(:handler-submit="create" :is-submitting="isSubmitting" :showSubmit="!isLoading" :showCancel="true" :button-submit-txt="'Создать'" @cancel="clear" ).q-pa-md
7
- div().q-mb-lg
8
- q-input(dense v-model="createBranchInput.trustee" standout="bg-teal text-white" placeholder="" label="Имя аккаунта председателя участка" :rules="[val => notEmpty(val)]" autocomplete="off")
3
+ q-btn(@click='show = true', color='primary', size='sm', icon='add') добавить участок
4
+ q-dialog(v-model='show', persistent, :maximized='false')
5
+ ModalBase(
6
+ style='width: 500px; max-width: 100% !important',
7
+ :title='"Создать кооперативный участок"',
8
+ :show_close='true'
9
+ )
10
+ Form.q-pa-md(
11
+ :handler-submit='create',
12
+ :is-submitting='isSubmitting',
13
+ :showSubmit='!isLoading',
14
+ :showCancel='true',
15
+ :button-submit-txt='"Создать"',
16
+ @cancel='clear'
17
+ )
18
+ .q-mb-lg
19
+ UserSearchSelector(
20
+ v-model='createBranchInput.trustee',
21
+ label='Председатель участка',
22
+ :rules='[(val) => notEmpty(val)]',
23
+ dense,
24
+ standout='bg-teal text-white'
25
+ )
9
26
 
10
- q-input(dense v-model="createBranchInput.short_name" standout="bg-teal text-white" placeholder="РОМАШКА" label="Наименование участка" :rules="[val => notEmpty(val)]" autocomplete="off")
11
- q-input(dense v-model="createBranchInput.phone" standout="bg-teal text-white" label="Номер телефона участка" mask="+7 (###) ###-##-##" fill-mask placeholder="" :rules="[val => notEmpty(val), val => notEmptyPhone(val)]" autocomplete="off")
12
- q-input(dense v-model="createBranchInput.fact_address" standout="bg-teal text-white" placeholder="" label="Фактический адрес участка" :rules="[val => notEmpty(val)]" autocomplete="off")
13
27
  q-input(
14
- dense v-model='createBranchInput.email',
15
- standout="bg-teal text-white",
28
+ dense,
29
+ v-model='createBranchInput.short_name',
30
+ standout='bg-teal text-white',
31
+ placeholder='РОМАШКА',
32
+ label='Наименование участка',
33
+ :rules='[(val) => notEmpty(val)]',
34
+ autocomplete='off'
35
+ )
36
+ q-input(
37
+ dense,
38
+ v-model='createBranchInput.phone',
39
+ standout='bg-teal text-white',
40
+ label='Номер телефона участка',
41
+ mask='+7 (###) ###-##-##',
42
+ fill-mask,
43
+ placeholder='',
44
+ :rules='[(val) => notEmpty(val), (val) => notEmptyPhone(val)]',
45
+ autocomplete='off'
46
+ )
47
+ q-input(
48
+ dense,
49
+ v-model='createBranchInput.fact_address',
50
+ standout='bg-teal text-white',
51
+ placeholder='',
52
+ label='Фактический адрес участка',
53
+ :rules='[(val) => notEmpty(val)]',
54
+ autocomplete='off'
55
+ )
56
+ q-input(
57
+ dense,
58
+ v-model='createBranchInput.email',
59
+ standout='bg-teal text-white',
16
60
  type='email',
17
61
  label='Email-адрес участка',
18
62
  color='primary',
19
63
  :rules='[validEmail, notEmpty]'
20
64
  )
21
65
 
22
- q-input(dense v-model="createBranchInput.based_on" standout="bg-teal text-white" label="Председатель действует на основании" placeholder="решение собрания совета №СС-10-04-2025 от 10 апреля 2025 г" :rules="[val => notEmpty(val)]" autocomplete="off")
23
-
24
-
25
-
66
+ q-input(
67
+ dense,
68
+ v-model='createBranchInput.based_on',
69
+ standout='bg-teal text-white',
70
+ label='Председатель действует на основании',
71
+ placeholder='решение собрания совета №СС-10-04-2025 от 10 апреля 2025 г',
72
+ :rules='[(val) => notEmpty(val)]',
73
+ autocomplete='off'
74
+ )
26
75
  </template>
27
76
 
28
77
  <script lang="ts" setup>
29
78
  import { ModalBase } from 'src/shared/ui/ModalBase';
30
79
  import { Form } from 'src/shared/ui/Form';
80
+ import { UserSearchSelector } from 'src/shared/ui';
31
81
  import { ref } from 'vue';
32
82
  import { useCreateBranch } from '../model';
33
- import { extractGraphQLErrorMessages, FailAlert, SuccessAlert } from 'src/shared/api';
83
+ import {
84
+ extractGraphQLErrorMessages,
85
+ FailAlert,
86
+ SuccessAlert,
87
+ } from 'src/shared/api';
34
88
  import { notEmpty } from 'src/shared/lib/utils';
35
89
  import { validEmail } from 'src/shared/lib/utils/validEmailRule';
36
90
  import { notEmptyPhone } from 'src/shared/lib/utils';
37
91
 
38
- const show = ref(false)
39
- const isSubmitting = ref(false)
40
- const isLoading = ref(false)
41
- const {createBranchInput, createBranch} = useCreateBranch()
92
+ const show = ref(false);
93
+ const isSubmitting = ref(false);
94
+ const isLoading = ref(false);
95
+ const { createBranchInput, createBranch } = useCreateBranch();
42
96
 
43
97
  const create = async () => {
44
98
  try {
45
- isSubmitting.value = true
46
- await createBranch(createBranchInput.value)
47
- isSubmitting.value = false
48
- show.value = false
49
- SuccessAlert('Кооперативный участок добавлен')
50
- } catch(e){
51
- isSubmitting.value = false
52
- FailAlert(`Ошибка при создании: ${extractGraphQLErrorMessages(e)}`)
99
+ isSubmitting.value = true;
100
+ await createBranch(createBranchInput.value);
101
+ isSubmitting.value = false;
102
+ show.value = false;
103
+ SuccessAlert('Кооперативный участок добавлен');
104
+ } catch (e) {
105
+ isSubmitting.value = false;
106
+ FailAlert(`Ошибка при создании: ${extractGraphQLErrorMessages(e)}`);
53
107
  }
54
-
55
- }
108
+ };
56
109
 
57
110
  const clear = () => {
58
- show.value = false
59
- }
60
-
111
+ show.value = false;
112
+ };
61
113
  </script>
@@ -0,0 +1,15 @@
1
+ import { client } from 'src/shared/api/client';
2
+ import { Mutations } from '@coopenomics/sdk';
3
+ import type { IDeleteBranchInput } from 'src/entities/Branch/model';
4
+
5
+ export async function deleteBranch(data: IDeleteBranchInput): Promise<boolean> {
6
+ const { [Mutations.Branches.DeleteBranch.name]: result } = await client.Mutation(
7
+ Mutations.Branches.DeleteBranch.mutation,
8
+ {
9
+ variables: {
10
+ data
11
+ }
12
+ }
13
+ );
14
+ return result;
15
+ }
@@ -0,0 +1 @@
1
+ export { default as DeleteBranchButton } from './ui/DeleteBranchButton.vue';
@@ -0,0 +1,44 @@
1
+ import { useBranchStore } from 'src/entities/Branch/model';
2
+ import { useSystemStore } from 'src/entities/System/model';
3
+ import { deleteBranch as apiDeleteBranch } from '../api';
4
+ import { FailAlert, SuccessAlert } from 'src/shared/api';
5
+ import { ref } from 'vue';
6
+
7
+ export function useDeleteBranch() {
8
+ const branchStore = useBranchStore();
9
+ const systemStore = useSystemStore();
10
+ const loading = ref(false);
11
+
12
+ const deleteBranch = async (data: { coopname: string; braname: string; short_name: string }): Promise<boolean> => {
13
+ try {
14
+ loading.value = true;
15
+ const result = await apiDeleteBranch({
16
+ coopname: data.coopname,
17
+ braname: data.braname
18
+ });
19
+
20
+ if (result) {
21
+ SuccessAlert(`Кооперативный участок "${data.short_name}" успешно удален`);
22
+
23
+ // После успешного удаления обновляем состояние системы и списка участков
24
+ await systemStore.loadSystemInfo();
25
+ await branchStore.loadBranches({
26
+ coopname: data.coopname
27
+ });
28
+
29
+ return true;
30
+ }
31
+ return false;
32
+ } catch (error: any) {
33
+ FailAlert(error);
34
+ return false;
35
+ } finally {
36
+ loading.value = false;
37
+ }
38
+ };
39
+
40
+ return {
41
+ deleteBranch,
42
+ loading
43
+ };
44
+ }
@@ -0,0 +1,56 @@
1
+ <template lang="pug">
2
+ div
3
+ q-btn(
4
+ color="negative"
5
+ icon="delete"
6
+ @click="showDialog = true"
7
+ :loading="loading"
8
+ :disable="loading"
9
+ )
10
+
11
+ span.q-ml-xs Удалить участок
12
+
13
+ q-dialog(v-model="showDialog" @hide="clear")
14
+ ModalBase(:title='"Удаление кооперативного участка"')
15
+ Form(
16
+ :handler-submit="handleDeleteBranch"
17
+ :is-submitting="loading"
18
+ :button-cancel-txt="'Отменить'"
19
+ :button-submit-txt="'Удалить'"
20
+ @cancel="clear"
21
+ ).q-pa-md
22
+ div(style="max-width: 500px;")
23
+ p.text-weight-bold Вы уверены, что хотите удалить кооперативный участок {{ branch?.short_name }}?
24
+ p Это действие необратимо. Все пайщики будут отключены от участка и увидят приглашение выбрать новый участок.
25
+ </template>
26
+
27
+ <script lang="ts" setup>
28
+ import { ref } from 'vue';
29
+ import type { IBranch } from 'src/entities/Branch/model/types';
30
+ import { ModalBase } from 'src/shared/ui/ModalBase';
31
+ import { Form } from 'src/shared/ui/Form';
32
+ import { useDeleteBranch } from '../model';
33
+
34
+ const props = defineProps<{
35
+ branch: IBranch
36
+ }>();
37
+
38
+ const showDialog = ref(false);
39
+ const { deleteBranch, loading } = useDeleteBranch();
40
+
41
+ const clear = (): void => {
42
+ showDialog.value = false;
43
+ };
44
+
45
+ const handleDeleteBranch = async (): Promise<void> => {
46
+ const success = await deleteBranch({
47
+ coopname: props.branch.coopname,
48
+ braname: props.branch.braname,
49
+ short_name: props.branch.short_name
50
+ });
51
+
52
+ if (success) {
53
+ showDialog.value = false;
54
+ }
55
+ };
56
+ </script>
@@ -1 +1,2 @@
1
1
  export * from './model';
2
+ export * from './ui';
@@ -0,0 +1,59 @@
1
+ <template lang="pug">
2
+ q-dialog(v-model='show', persistent, :maximized='false')
3
+ q-card
4
+ div
5
+ q-bar.bg-gradient-dark
6
+ span Добавить члена совета
7
+ q-space
8
+ q-btn(v-close-popup, dense, flat, icon='close')
9
+ q-tooltip Close
10
+
11
+ .q-pa-sm
12
+ .q-pa-md
13
+ p Внимание! Вы собираетесь добавить участника в совет кооператива. Выберите участника для добавления:
14
+ .q-pa-md
15
+ UserSearchSelector(
16
+ v-model='selectedUsername',
17
+ label='Участник для добавления в совет',
18
+ dense,
19
+ standout='bg-teal text-white',
20
+ :rules='[(val) => !!val || "Обязательное поле"]'
21
+ )
22
+ div
23
+ q-btn(flat, @click='cancel') Отменить
24
+ q-btn(color='primary', @click='add', :loading='loading') Добавить
25
+ </template>
26
+
27
+ <script setup lang="ts">
28
+ import { ref, computed } from 'vue';
29
+ import { UserSearchSelector } from 'src/shared/ui';
30
+
31
+ const props = defineProps<{
32
+ modelValue: boolean;
33
+ loading?: boolean;
34
+ }>();
35
+
36
+ const emit = defineEmits<{
37
+ (e: 'update:modelValue', value: boolean): void;
38
+ (e: 'add', username: string): void;
39
+ }>();
40
+
41
+ const selectedUsername = ref('');
42
+
43
+ const show = computed({
44
+ get: () => props.modelValue,
45
+ set: (value) => emit('update:modelValue', value),
46
+ });
47
+
48
+ const add = () => {
49
+ if (selectedUsername.value) {
50
+ emit('add', selectedUsername.value);
51
+ selectedUsername.value = '';
52
+ }
53
+ };
54
+
55
+ const cancel = () => {
56
+ emit('update:modelValue', false);
57
+ selectedUsername.value = '';
58
+ };
59
+ </script>
@@ -0,0 +1 @@
1
+ export { default as AddMemberDialog } from './AddMemberDialog.vue'
@@ -52,7 +52,7 @@ form(@submit.prevent="submit").full-width
52
52
 
53
53
  } catch (e: any) {
54
54
  loading.value = false
55
- FailAlert(e.message)
55
+ FailAlert(e)
56
56
  }
57
57
 
58
58
  }
@@ -59,7 +59,7 @@ const next = async () => {
59
59
 
60
60
  SuccessAlert('Установка произведена успешно')
61
61
  } catch(e: any){
62
- FailAlert(e.message)
62
+ FailAlert(e)
63
63
  loading.value = false
64
64
  }
65
65
 
@@ -18,6 +18,7 @@ export interface ICreateMeetWithAgendaInput {
18
18
  open_at: string
19
19
  close_at: string
20
20
  username: string
21
+ type: 'regular' | 'extra'
21
22
  agenda_points: {
22
23
  title: string
23
24
  context: string
@@ -81,11 +82,12 @@ export async function createMeetWithAgenda(data: ICreateMeetWithAgendaInput): Pr
81
82
  coopname: data.coopname,
82
83
  username: data.username,
83
84
  meet: {
84
- type: 'regular', // По умолчанию очередное собрание
85
+ type: data.type,
85
86
  open_at_datetime: openAtFormatted,
86
87
  close_at_datetime: closeAtFormatted
87
88
  },
88
- questions: questions
89
+ questions: questions,
90
+ is_repeated: false
89
91
  })
90
92
 
91
93
 
@@ -5,9 +5,11 @@ div
5
5
  label="Создать общее собрание"
6
6
  @click="showCreateMeetDialog = true"
7
7
  )
8
+
8
9
  CreateMeetForm(
9
10
  v-model="showCreateMeetDialog"
10
11
  :loading="isCreating"
12
+ :is-chairman="isChairman"
11
13
  @create="handleCreate"
12
14
  )
13
15
  </template>
@@ -22,6 +24,11 @@ import { useRoute } from 'vue-router'
22
24
  import { Notify } from 'quasar'
23
25
  import { FailAlert } from 'src/shared/api'
24
26
 
27
+ // Определяем пропсы
28
+ defineProps<{
29
+ isChairman: boolean
30
+ }>()
31
+
25
32
  const route = useRoute()
26
33
  const sessionStore = useSessionStore()
27
34
  const meetStore = useMeetStore()
@@ -40,6 +47,7 @@ const handleCreate = async (formData: any) => {
40
47
  open_at: formData.open_at,
41
48
  close_at: formData.close_at,
42
49
  username: sessionStore.username,
50
+ type: formData.type,
43
51
  agenda_points: formData.agenda_points
44
52
  })
45
53