@coopenomics/desktop 2.2.10 → 2025.5.2

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 (366) hide show
  1. package/.env-example +6 -1
  2. package/.env-testnet +8 -0
  3. package/Dockerfile +12 -0
  4. package/alias-resolver.js +35 -0
  5. package/extensions/market/install.ts +78 -0
  6. package/extensions/market-admin/install.ts +42 -0
  7. package/extensions/participant/install.ts +125 -0
  8. package/extensions/powerup/install.ts +20 -0
  9. package/extensions/soviet/install.ts +83 -0
  10. package/package.json +14 -7
  11. package/quasar.config.cjs +28 -15
  12. package/src/app/App.vue +44 -73
  13. package/src/app/layouts/default.vue +40 -0
  14. package/src/app/layouts/useDefaultLayoutLogic.ts +59 -0
  15. package/src/app/providers/router.ts +4 -3
  16. package/src/app/providers/routes/index.ts +19 -34
  17. package/src/app/styles/style.css +4 -0
  18. package/src/boot/init.ts +6 -0
  19. package/src/boot/sentry.ts +14 -14
  20. package/src/desktops/index.ts +0 -6
  21. package/src/entities/Account/model/index.ts +1 -1
  22. package/src/entities/Agenda/api/index.ts +20 -0
  23. package/src/entities/Agenda/index.ts +2 -0
  24. package/src/entities/Agenda/model/index.ts +2 -0
  25. package/src/entities/Agenda/model/store.ts +36 -0
  26. package/src/entities/Agenda/model/types.ts +4 -0
  27. package/src/entities/Branch/model/index.ts +1 -1
  28. package/src/entities/Desktop/api/index.ts +16 -1
  29. package/src/entities/Desktop/model/store.ts +112 -106
  30. package/src/entities/Desktop/model/types.ts +14 -1
  31. package/src/entities/Document/api/index.ts +24 -0
  32. package/src/entities/Document/index.ts +2 -0
  33. package/src/entities/Document/model/store.ts +117 -0
  34. package/src/entities/Document/model/types.ts +18 -0
  35. package/src/entities/Meet/api/index.ts +58 -0
  36. package/src/entities/Meet/index.ts +2 -0
  37. package/src/entities/Meet/model/store.ts +72 -0
  38. package/src/entities/Meet/types/index.ts +7 -0
  39. package/src/entities/Payment/api/index.ts +20 -0
  40. package/src/entities/Payment/model/index.ts +2 -0
  41. package/src/entities/Payment/model/store.ts +62 -0
  42. package/src/entities/Payment/model/types.ts +7 -0
  43. package/src/entities/Session/model/store.ts +4 -4
  44. package/src/entities/System/model/store.ts +1 -1
  45. package/src/entities/User/model/stores.ts +3 -1
  46. package/src/entities/Wallet/api/index.ts +15 -33
  47. package/src/entities/Wallet/model/stores.ts +3 -23
  48. package/src/entities/Wallet/model/types.ts +2 -3
  49. package/src/env.d.ts +2 -0
  50. package/src/features/Agreementer/SignAgreementDialog/ui/SignAgreementDialog.vue +1 -1
  51. package/src/features/Branch/SelectBranch/index.ts +2 -0
  52. package/src/features/Branch/SelectBranch/ui/SelectBranchOverlay.vue +52 -105
  53. package/src/features/Decision/CreateProject/ui/CreateProjectFreeDecisionButton.vue +1 -1
  54. package/src/features/Decision/ParticipantApplication/model/index.ts +38 -0
  55. package/src/features/FreeDecision/CreateProject/model/index.ts +92 -0
  56. package/src/features/FreeDecision/CreateProject/ui/CreateProjectFreeDecisionButton.vue +51 -0
  57. package/src/features/FreeDecision/CreateProject/ui/index.ts +1 -0
  58. package/src/features/FreeDecision/GenerateDecision/index.ts +1 -0
  59. package/src/features/FreeDecision/GenerateDecision/model/index.ts +36 -0
  60. package/src/features/FreeDecision/index.ts +2 -0
  61. package/src/features/Meet/CloseMeetWithDecision/index.ts +1 -0
  62. package/src/features/Meet/CloseMeetWithDecision/model/index.ts +92 -0
  63. package/src/features/Meet/CreateMeet/index.ts +2 -0
  64. package/src/features/Meet/CreateMeet/model/index.ts +65 -0
  65. package/src/features/Meet/CreateMeet/ui/CreateMeet.vue +34 -0
  66. package/src/features/Meet/CreateMeet/ui/CreateMeetForm.vue +136 -0
  67. package/src/features/Meet/CreateMeet/ui/index.ts +2 -0
  68. package/src/features/Meet/GenerateAgenda/index.ts +1 -0
  69. package/src/features/Meet/GenerateAgenda/model/index.ts +18 -0
  70. package/src/features/Meet/GenerateBallot/index.ts +1 -0
  71. package/src/features/Meet/GenerateBallot/model/index.ts +18 -0
  72. package/src/features/Meet/GenerateNotification/index.ts +1 -0
  73. package/src/features/Meet/GenerateNotification/model/index.ts +18 -0
  74. package/src/features/Meet/GenerateSovietDecision/index.ts +1 -0
  75. package/src/features/Meet/GenerateSovietDecision/model/index.ts +48 -0
  76. package/src/features/Meet/MeetDetailsManagement/index.ts +1 -0
  77. package/src/features/Meet/MeetDetailsManagement/model/index.ts +121 -0
  78. package/src/features/Meet/RestartMeet/index.ts +2 -0
  79. package/src/features/Meet/RestartMeet/model/index.ts +54 -0
  80. package/src/features/Meet/RestartMeet/ui/RestartMeet.vue +46 -0
  81. package/src/features/Meet/RestartMeet/ui/RestartMeetForm.vue +92 -0
  82. package/src/features/Meet/RestartMeet/ui/index.ts +2 -0
  83. package/src/features/Meet/VoteOnMeet/index.ts +1 -0
  84. package/src/features/Meet/VoteOnMeet/model/index.ts +18 -0
  85. package/src/features/Payment/SetStatus/api/index.ts +20 -0
  86. package/src/features/Payment/SetStatus/index.ts +1 -0
  87. package/src/features/Payment/SetStatus/model/index.ts +30 -0
  88. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderPaidStatusButton/SetOrderPaidStatusButton.vue +7 -3
  89. package/src/features/PaymentMethod/AddPaymentMethod/model/index.ts +2 -2
  90. package/src/features/PaymentMethod/AddPaymentMethod/ui/AddPaymentButton.vue +1 -1
  91. package/src/features/PaymentMethod/DeletePaymentMethod/model/index.ts +1 -1
  92. package/src/features/PaymentMethod/DeletePaymentMethod/ui/DeletePaymentMethodButton.vue +3 -1
  93. package/src/features/Request/CancelRequest/ui/CancelButton.vue +1 -1
  94. package/src/features/Request/ConfirmRecieveOnRequest/ui/ConfirmRecieveOnRequest.vue +1 -1
  95. package/src/features/Request/CreateParentOffer/ui/CreateParentOfferForm/CreateParentOfferForm.vue +4 -5
  96. package/src/features/Request/CreateParentOffer/ui/ImageUploaderWithPreview/ImageUploaderWithPreview.vue +5 -3
  97. package/src/features/Request/DisputeOnRequest/ui/DisputeOnRequestButton.vue +1 -1
  98. package/src/features/Request/ModerateRequest/ui/ModerateRequestButton.vue +2 -2
  99. package/src/features/Request/PublishRequest/ui/PublishRequestButton.vue +1 -1
  100. package/src/features/Request/RecieveOnRequest/ui/RecieveOnRequestButton.vue +1 -1
  101. package/src/features/Request/UnpublishRequest/ui/UnpublishRequestButton.vue +1 -1
  102. package/src/features/Union/AddCooperative/model/index.ts +5 -5
  103. package/src/features/Union/AddCooperative/ui/AddCooperativeForm.vue +6 -9
  104. package/src/features/User/AddUser/ui/AddUserDialog/AddUserDialog.vue +4 -4
  105. package/src/features/User/LoginUser/model/index.ts +3 -7
  106. package/src/features/User/LoginUser/ui/LoginForm/LoginForm.vue +0 -6
  107. package/src/features/User/Logout/model/index.ts +2 -1
  108. package/src/features/Wallet/DepositToWallet/ui/DepositButton/DepositButton.vue +10 -7
  109. package/src/features/Wallet/WithdrawFromWallet/ui/withdrawButton.vue +7 -6
  110. package/src/pages/Blank/index.ts +1 -0
  111. package/src/pages/Contacts/ContactsPage.vue +64 -0
  112. package/src/{widgets/Cooperative/Contacts → pages/Cooperative/ChangeContacts}/ui/index.ts +0 -1
  113. package/src/{widgets/Cooperative/Contributions/ui/ChangeContributions.vue → pages/Cooperative/ChangeRegisterPayments/ui/ChangeRegisterPayments.vue} +12 -11
  114. package/src/pages/Cooperative/ChangeRegisterPayments/ui/index.ts +1 -0
  115. package/src/pages/Cooperative/ListOfAgenda/index.ts +1 -0
  116. package/src/pages/Cooperative/ListOfAgenda/ui/ListOfAgendaQuestions.vue +118 -0
  117. package/src/pages/Cooperative/ListOfAgenda/ui/index.ts +1 -0
  118. package/src/pages/Cooperative/ListOfDocuments/ListOfDocumentsPage.vue +24 -0
  119. package/src/pages/Cooperative/ListOfMeets/model/index.ts +1 -0
  120. package/src/pages/Cooperative/ListOfMeets/model/model.ts +117 -0
  121. package/src/pages/Cooperative/ListOfMeets/ui/ListOfMeetsPage.vue +90 -0
  122. package/src/pages/Cooperative/ListOfMeets/ui/index.ts +1 -0
  123. package/src/pages/Cooperative/ListOfOrders/index.ts +1 -1
  124. package/src/pages/Cooperative/ListOfOrders/ui/ListOfOrdersPage.vue +0 -4
  125. package/src/pages/Cooperative/ListOfParticipants/ui/ListOfParticipantsPage.vue +61 -10
  126. package/src/pages/Cooperative/ListOfParticipants/ui/index.ts +1 -1
  127. package/src/pages/Cooperative/MeetDetails/ui/MeetDetailsPage.vue +88 -0
  128. package/src/pages/Cooperative/MeetDetails/ui/index.ts +1 -0
  129. package/src/pages/Cooperative/MemberBranchList/ui/index.ts +1 -0
  130. package/src/pages/Cooperative/Payments/index.ts +1 -0
  131. package/src/pages/Cooperative/Payments/ui/PaymentsPage.vue +7 -0
  132. package/src/pages/{ExtStore → ExtensionStore}/ExtensionPage/ExtensionPage.vue +51 -24
  133. package/src/pages/{ExtStore → ExtensionStore}/ExtensionsShowcase/ExtensionsShowcase.vue +2 -2
  134. package/src/pages/{ExtStore → ExtensionStore}/InstalledExtensions/InstalledExtensions.vue +2 -2
  135. package/src/pages/Marketplace/OfferPage/ui/OfferPage.vue +1 -1
  136. package/src/pages/Marketplace/Showcase/ui/ShowcasePage.vue +1 -1
  137. package/src/pages/Marketplace/SuppliesList/ui/SuppliesListPage.vue +1 -1
  138. package/src/pages/Marketplace/UserParentOffers/ui/UserParentOffersPage.vue +1 -1
  139. package/src/pages/Marketplace/UserSuppliesList/ui/UserSuppliesListPage.vue +1 -1
  140. package/src/pages/PermissionDenied/index.ts +1 -0
  141. package/src/pages/Registrator/SignUp/EmailInput.vue +4 -3
  142. package/src/pages/Registrator/SignUp/GenerateAccount.vue +2 -3
  143. package/src/pages/Registrator/SignUp/PayInitial.vue +1 -1
  144. package/src/pages/Registrator/SignUp/ReadStatement.vue +2 -2
  145. package/src/pages/Registrator/SignUp/SelectBranch.vue +2 -2
  146. package/src/pages/Registrator/SignUp/SignStatement.vue +2 -2
  147. package/src/pages/Registrator/SignUp/SignUp.vue +5 -12
  148. package/src/pages/Registrator/SignUp/WaitingRegistration.vue +1 -5
  149. package/src/pages/Registrator/SignUp/Welcome.vue +6 -3
  150. package/src/pages/Union/ConnectionAgreement/index.ts +1 -0
  151. package/src/pages/Union/ListOfCooperatives/ui/UnionPageListOfCooperatives.vue +139 -6
  152. package/src/pages/User/DocumentsPage/UserDocumentsPage.vue +23 -0
  153. package/src/pages/User/DocumentsPage/index.ts +1 -0
  154. package/src/pages/User/PaymentsPage/ui/UserPayments.vue +11 -0
  155. package/src/pages/User/PaymentsPage/ui/index.ts +1 -0
  156. package/src/pages/User/ProfilePage/index.ts +1 -0
  157. package/src/pages/User/ProfilePage/ui/ProfilePage.vue +114 -0
  158. package/src/pages/User/ProfilePage/ui/index.ts +1 -0
  159. package/src/pages/User/SettingsPage/ui/index.ts +1 -1
  160. package/src/pages/User/WalletPage/index.ts +1 -0
  161. package/src/pages/User/WalletPage/ui/WalletPage.vue +72 -0
  162. package/src/pages/User/WalletPage/ui/index.ts +1 -0
  163. package/src/processes/init-app/index.ts +28 -0
  164. package/src/processes/init-installed-extensions/index.ts +25 -0
  165. package/src/processes/init-wallet/index.ts +40 -0
  166. package/src/processes/navigation-guard-setup/index.ts +45 -0
  167. package/src/processes/process-decisions/index.ts +275 -0
  168. package/src/processes/select-branch/index.ts +80 -0
  169. package/src/processes/watch-branch-overlay/index.ts +38 -0
  170. package/src/processes/watch-desktop-health/index.ts +33 -0
  171. package/src/shared/api/alerts.ts +2 -6
  172. package/src/shared/api/axios.ts +5 -5
  173. package/src/shared/api/client.ts +4 -4
  174. package/src/shared/api/eosio.ts +2 -2
  175. package/src/shared/api/indexDB.ts +3 -0
  176. package/src/shared/api/utils.ts +2 -2
  177. package/src/shared/config/Environment.ts +68 -0
  178. package/src/shared/config/index.ts +2 -1
  179. package/src/shared/hooks/index.ts +2 -0
  180. package/src/shared/hooks/useAgendaPoints.ts +24 -0
  181. package/src/shared/hooks/useWindowSize.ts +13 -0
  182. package/src/shared/lib/composables/useDisplayName.ts +34 -0
  183. package/src/shared/lib/navigation/index.ts +2 -0
  184. package/src/shared/lib/navigation/routeUtils.ts +51 -0
  185. package/src/shared/lib/navigation/useBackButton.ts +63 -0
  186. package/src/shared/lib/proxy/dicebear-collection.cjs +21 -0
  187. package/src/shared/lib/proxy/dicebear-core.cjs +20 -0
  188. package/src/shared/lib/proxy/email-regex.cjs +19 -0
  189. package/src/shared/lib/utils/dates/validateDateWithinRange.ts +23 -0
  190. package/src/shared/ui/BaseDocument/BaseDocument.vue +120 -90
  191. package/src/{components/menu/blockchainStatus.vue → shared/ui/BlockchainStatusBar/BlockchainStatusBar.vue} +1 -0
  192. package/src/shared/ui/BlockchainStatusBar/index.ts +1 -0
  193. package/src/shared/ui/CardStyles/index.scss +61 -0
  194. package/src/shared/ui/ClientOnly/ClientOnly.vue +15 -0
  195. package/src/shared/ui/ClientOnly/index.ts +1 -0
  196. package/src/shared/ui/ComplexDocument/ComplexDocument.vue +31 -8
  197. package/src/shared/ui/CopyableInput/index.ts +1 -0
  198. package/src/shared/ui/CopyableInput/ui/CopyableInput.vue +62 -0
  199. package/src/shared/ui/EditableEntrepreneurCard/EditableEntrepreneurCard.vue +9 -8
  200. package/src/shared/ui/EditableIndividualCard/EditableIndividualCard.vue +10 -10
  201. package/src/shared/ui/EditableOrganizationCard/EditableOrganizationCard.vue +57 -47
  202. package/src/shared/ui/Form/Form.vue +3 -1
  203. package/src/shared/ui/InputStyles/index.scss +29 -0
  204. package/src/shared/ui/TabStyles/index.scss +53 -0
  205. package/src/shared/ui/index.ts +1 -0
  206. package/src/{components/history/AccountEvents.vue → widgets/AccountActions/AccountActionsPage.vue} +2 -2
  207. package/src/widgets/AccountActions/index.ts +1 -0
  208. package/src/widgets/BankDetailsCard/ui/BankDetailsCard.vue +2 -2
  209. package/src/widgets/BranchCard/ui/BranchCard.vue +2 -2
  210. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/DocumentCard.vue +48 -0
  211. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/DocumentsTable.vue +162 -0
  212. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/ListOfDocumentsWidget.vue +77 -120
  213. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/index.ts +3 -1
  214. package/src/widgets/Cooperative/Orders/ListOfOrders/ui/ListOfOrdersWidget.vue +135 -128
  215. package/src/widgets/Cooperative/Orders/ListOfOrders/ui/OrderCard.vue +74 -0
  216. package/src/widgets/Cooperative/Orders/ListOfOrders/ui/index.ts +2 -1
  217. package/src/widgets/Cooperative/Payments/ListOfPayments/ui/ListOfPaymentsWidget.vue +216 -0
  218. package/src/widgets/Cooperative/Payments/ListOfPayments/ui/PaymentCard.vue +73 -0
  219. package/src/widgets/Cooperative/Payments/ListOfPayments/ui/index.ts +2 -0
  220. package/src/widgets/Cooperative/Payments/index.ts +1 -0
  221. package/src/widgets/Desktop/LeftDrawerMenu/LeftDrawerMenu.vue +3 -2
  222. package/src/widgets/Desktop/SecondLevelMenuList/SecondLevelMenuList.vue +58 -91
  223. package/src/widgets/Desktop/WorkspaceMenu/WorkspaceMenu.vue +114 -59
  224. package/src/widgets/{ExtStore/ExtensionCard → ExtensionCard}/ExtensionCard.vue +12 -7
  225. package/src/widgets/Header/BackButton/BackButton.vue +25 -0
  226. package/src/widgets/Header/BackButton/index.ts +1 -0
  227. package/src/widgets/Header/CommonHeader/CooperativeSettingsHeader.vue +34 -0
  228. package/src/widgets/Header/CommonHeader/ExtstoreHeader.vue +41 -0
  229. package/src/widgets/Header/CommonHeader/Header.vue +33 -198
  230. package/src/widgets/Header/CommonHeader/HeaderStyles.scss +22 -0
  231. package/src/widgets/Header/CommonHeader/MainHeader.vue +88 -0
  232. package/src/widgets/Header/CommonHeader/UserSettingsHeader.vue +29 -0
  233. package/src/widgets/Header/CommonHeader/index.ts +1 -1
  234. package/src/widgets/Header/SettingsDropdown/SettingsDropdown.vue +0 -6
  235. package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Base/Base.vue +2 -2
  236. package/src/widgets/Meets/MeetDetailsActions/MeetDetailsActions.vue +51 -0
  237. package/src/widgets/Meets/MeetDetailsActions/index.ts +1 -0
  238. package/src/widgets/Meets/MeetDetailsActions/model.ts +46 -0
  239. package/src/widgets/Meets/MeetDetailsAgenda/MeetDetailsAgenda.vue +29 -0
  240. package/src/widgets/Meets/MeetDetailsAgenda/index.ts +1 -0
  241. package/src/widgets/Meets/MeetDetailsHeader/MeetDetailsHeader.vue +40 -0
  242. package/src/widgets/Meets/MeetDetailsHeader/index.ts +1 -0
  243. package/src/widgets/Meets/MeetDetailsVoting/MeetDetailsVoting.vue +77 -0
  244. package/src/widgets/Meets/MeetDetailsVoting/index.ts +1 -0
  245. package/src/widgets/Meets/MeetDetailsVoting/model.ts +117 -0
  246. package/src/widgets/Meets/MeetInfoCard/ui/MeetInfoCard.vue +38 -0
  247. package/src/widgets/Meets/MeetInfoCard/ui/index.ts +1 -0
  248. package/src/widgets/Meets/MeetsTable/ui/MeetsTable.vue +118 -0
  249. package/src/widgets/Meets/MeetsTable/ui/index.ts +1 -0
  250. package/src/widgets/Participants/index.ts +1 -0
  251. package/src/widgets/Participants/ui/ParticipantCard.vue +89 -0
  252. package/src/widgets/Participants/ui/ParticipantDetails.vue +79 -0
  253. package/src/widgets/Participants/ui/ParticipantsTable.vue +129 -0
  254. package/src/widgets/Participants/ui/index.ts +4 -0
  255. package/src/widgets/Questions/index.ts +3 -0
  256. package/src/widgets/Questions/ui/QuestionCard/QuestionCard.vue +109 -0
  257. package/src/widgets/Questions/ui/QuestionCard/index.ts +1 -0
  258. package/src/widgets/Questions/ui/QuestionsTable/QuestionsTable.vue +177 -0
  259. package/src/widgets/Questions/ui/QuestionsTable/index.ts +1 -0
  260. package/src/widgets/Questions/ui/VotingButtons/VotingButtons.vue +75 -0
  261. package/src/widgets/Questions/ui/VotingButtons/index.ts +1 -0
  262. package/src/widgets/Questions/ui/index.ts +3 -0
  263. package/src/widgets/RequireAgreements/index.ts +1 -0
  264. package/src/widgets/User/PaymentMethods/ui/PaymentMethods.vue +81 -85
  265. package/src-ssr/middlewares/injectEnv.ts +49 -0
  266. package/tsconfig.json +1 -1
  267. package/extensions/powerup/boot.ts +0 -17
  268. package/src/app/providers/card/store.ts +0 -42
  269. package/src/boot/branch-selector.ts +0 -40
  270. package/src/boot/init-stores.ts +0 -51
  271. package/src/boot/navigation-guards.ts +0 -46
  272. package/src/components/menu/footerMobileMenu.vue +0 -79
  273. package/src/components/soviet/index.vue +0 -76
  274. package/src/components/soviet/staff.vue +0 -274
  275. package/src/desktops/User/index.ts +0 -1
  276. package/src/desktops/User/model/index.ts +0 -329
  277. package/src/entities/Menu/model/store.ts +0 -69
  278. package/src/entities/Menu/model/types.ts +0 -11
  279. package/src/entities/Menu/ui/index.ts +0 -1
  280. package/src/entities/Order/api/index.ts +0 -14
  281. package/src/entities/Order/model/store.ts +0 -87
  282. package/src/features/Order/SetStatus/api/index.ts +0 -7
  283. package/src/features/Order/SetStatus/model/index.ts +0 -23
  284. package/src/pages/Cooperative/Contacts/ui/ContactsPage.vue +0 -7
  285. package/src/pages/Cooperative/ListOfBranches/ui/index.ts +0 -1
  286. package/src/pages/Documentor/ListOfDocuments/ListOfDocumentsPage.vue +0 -12
  287. package/src/pages/Union/Connection/index.ts +0 -1
  288. package/src/pages/_layouts/blank.vue +0 -24
  289. package/src/pages/_layouts/default.vue +0 -79
  290. package/src/types/index.ts +0 -3
  291. package/src/widgets/Commutator/Commutator.vue +0 -7
  292. package/src/widgets/Commutator/index.ts +0 -1
  293. package/src/widgets/Cooperative/Agenda/ListOfQuestions/ui/ListOfQuestions.vue +0 -273
  294. package/src/widgets/Cooperative/Agenda/ListOfQuestions/ui/index.ts +0 -1
  295. package/src/widgets/Cooperative/Contacts/ui/Contacts.vue +0 -52
  296. package/src/widgets/Cooperative/Contributions/ui/index.ts +0 -1
  297. package/src/widgets/Cooperative/Description/ui/SetDescription.vue +0 -4
  298. package/src/widgets/Cooperative/Description/ui/index.ts +0 -1
  299. package/src/widgets/Cooperative/Participants/ListOfParticipants/ui/ListOfParticipantsWidget.vue +0 -186
  300. package/src/widgets/Cooperative/Participants/ListOfParticipants/ui/index.ts +0 -1
  301. package/src/widgets/Desktop/SecondLevelMenu/SecondLevelMenu.vue +0 -59
  302. package/src/widgets/Desktop/SecondLevelMenu/index.ts +0 -1
  303. package/src/widgets/IndividualCard/ui/IndividualCard.vue +0 -170
  304. package/src/widgets/IndividualCard/ui/index.ts +0 -1
  305. package/src/widgets/OrganizationCard/ui/OrganizationCard.vue +0 -44
  306. package/src/widgets/OrganizationCard/ui/index.ts +0 -1
  307. package/src/widgets/Union/ListOfCooperatives/ui/UnionListOfCooperatives.vue +0 -136
  308. package/src/widgets/Union/ListOfCooperatives/ui/index.ts +0 -1
  309. package/src/entities/{Menu → Document}/model/index.ts +0 -0
  310. package/src/entities/{Order → Meet}/model/index.ts +0 -0
  311. package/src/entities/{Order → Payment}/index.ts +0 -0
  312. package/src/features/{Order/SetStatus → Decision/ParticipantApplication}/index.ts +0 -0
  313. package/src/{widgets/Request/SupplyOrderRequestCard → features/FreeDecision/CreateProject}/index.ts +0 -0
  314. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderCompletedStatusButton/SetOrderCompletedStatusButton.vue +0 -0
  315. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderCompletedStatusButton/index.ts +0 -0
  316. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderPaidStatusButton/index.ts +0 -0
  317. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderRefundedStatusButton/SetOrderRefundedStatusButton.vue +0 -0
  318. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderRefundedStatusButton/index.ts +0 -0
  319. package/src/pages/{blank/blank.vue → Blank/BlankPage.vue} +0 -0
  320. package/src/pages/{Cooperative/Contacts/ui → Contacts}/index.ts +0 -0
  321. package/src/pages/Cooperative/{Contacts → ChangeContacts}/index.ts +0 -0
  322. package/src/{widgets/Cooperative/Contacts → pages/Cooperative/ChangeContacts}/ui/ChangeContacts.vue +0 -0
  323. package/src/pages/Cooperative/{ListOfBranches → ChangeRegisterPayments}/index.ts +0 -0
  324. package/src/pages/{Documentor → Cooperative}/ListOfDocuments/index.ts +0 -0
  325. package/src/pages/{Installer → Cooperative/ListOfMeets}/index.ts +0 -0
  326. package/src/{widgets/Cooperative/Agenda/ListOfQuestions → pages/Cooperative/MeetDetails}/index.ts +0 -0
  327. package/src/{widgets/Cooperative/Contacts → pages/Cooperative/MemberBranchList}/index.ts +0 -0
  328. package/src/pages/Cooperative/{ListOfBranches/ui/ListOfBranchesPage.vue → MemberBranchList/ui/MemberBranchListPage.vue} +0 -0
  329. package/src/pages/{ExtStore → ExtensionStore}/BaseRoute/ExtensionStoreBase.vue +0 -0
  330. package/src/pages/{ExtStore → ExtensionStore}/BaseRoute/index.ts +0 -0
  331. package/src/pages/{ExtStore → ExtensionStore}/ExtensionPage/index.ts +0 -0
  332. package/src/pages/{ExtStore → ExtensionStore}/ExtensionsShowcase/index.ts +0 -0
  333. package/src/pages/{ExtStore → ExtensionStore}/InstalledExtensions/index.ts +0 -0
  334. package/src/pages/{_layouts/permissionDenied.vue → PermissionDenied/PermissionDenied.vue} +0 -0
  335. package/src/pages/Union/{Connection/ConnectionPage.vue → ConnectionAgreement/ConnectionAgreementPage.vue} +0 -0
  336. package/src/{widgets/Cooperative/Contributions → pages/Union/InstallCooperative}/index.ts +0 -0
  337. package/src/pages/{Installer → Union/InstallCooperative}/ui/InstallCooperativePage.vue +0 -0
  338. package/src/pages/{Installer → Union/InstallCooperative}/ui/index.ts +0 -0
  339. package/src/{widgets/Cooperative/Participants/ListOfParticipants → pages/User/PaymentsPage}/index.ts +0 -0
  340. package/src/{components/history → widgets/AccountActions}/AccountLink.vue +0 -0
  341. package/src/{components/history → widgets/AccountActions}/ActionCell.vue +0 -0
  342. package/src/{components/history → widgets/AccountActions}/DataCell.vue +0 -0
  343. package/src/widgets/{IndividualCard → Cooperative/Payments/ListOfPayments}/index.ts +0 -0
  344. package/src/widgets/{ExtStore/ExtensionCard → ExtensionCard}/index.ts +0 -0
  345. package/src/widgets/{Request → Marketplace}/CreateChildOrderCard/CreateChildOrderCard.vue +0 -0
  346. package/src/widgets/{Request → Marketplace}/CreateChildOrderCard/index.ts +0 -0
  347. package/src/widgets/{Request → Marketplace}/RequestCard/RequestCard.vue +0 -0
  348. package/src/widgets/{Request → Marketplace}/RequestCard/index.ts +0 -0
  349. package/src/{entities/Menu → widgets/Marketplace/SupplyOrderRequestCard}/index.ts +1 -1
  350. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/model/index.ts +0 -0
  351. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/model/types.ts +0 -0
  352. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Base/index.ts +0 -0
  353. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/EightStep.vue +0 -0
  354. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/FifthStep.vue +0 -0
  355. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/FirstStep.vue +0 -0
  356. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/FourthStep.vue +0 -0
  357. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/SecondStep.vue +0 -0
  358. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/SeventhStep.vue +0 -0
  359. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/SixthStep.vue +0 -0
  360. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/ThirdStep.vue +0 -0
  361. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/index.ts +0 -0
  362. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/index.ts +0 -0
  363. /package/src/widgets/{OrganizationCard → Meets/MeetInfoCard}/index.ts +0 -0
  364. /package/src/widgets/{Union/ListOfCooperatives → Meets/MeetsTable}/index.ts +0 -0
  365. /package/src/widgets/{Agreementer/RequireAgreements → RequireAgreements}/ui/RequireAgreements.vue +0 -0
  366. /package/src/widgets/{Agreementer/RequireAgreements → RequireAgreements}/ui/index.ts +0 -0
@@ -0,0 +1,36 @@
1
+ import { client } from 'src/shared/api/client'
2
+ import { Mutations } from '@coopenomics/sdk'
3
+ import { useSystemStore } from 'src/entities/System/model'
4
+
5
+ export type IGenerateFreeDecisionData = Mutations.FreeDecisions.GenerateFreeDecision.IInput['data']
6
+ export type IGenerateFreeDecisionResult = Mutations.FreeDecisions.GenerateFreeDecision.IOutput[typeof Mutations.FreeDecisions.GenerateFreeDecision.name]
7
+
8
+ export function useGenerateFreeDecision() {
9
+ const { info } = useSystemStore()
10
+
11
+ /**
12
+ * Генерирует документ для свободного решения
13
+ */
14
+ async function generateFreeDecision(data: Omit<IGenerateFreeDecisionData, 'coopname'>): Promise<IGenerateFreeDecisionResult> {
15
+ const { [Mutations.FreeDecisions.GenerateFreeDecision.name]: result } = await client.Mutation(
16
+ Mutations.FreeDecisions.GenerateFreeDecision.mutation,
17
+ {
18
+ variables: {
19
+ data: {
20
+ coopname: info.coopname,
21
+ ...data
22
+ },
23
+ options: {
24
+ lang: 'ru'
25
+ }
26
+ }
27
+ }
28
+ )
29
+
30
+ return result
31
+ }
32
+
33
+ return {
34
+ generateFreeDecision
35
+ }
36
+ }
@@ -0,0 +1,2 @@
1
+ export * from './CreateProject'
2
+ export * from './GenerateDecision'
@@ -0,0 +1 @@
1
+ export * from './model'
@@ -0,0 +1,92 @@
1
+ import { client } from 'src/shared/api/client'
2
+ import { useSignDocument } from 'src/shared/lib/document/model/entity'
3
+ import { Mutations } from '@coopenomics/sdk'
4
+
5
+ export type ISignBySecretaryResult = Mutations.Meet.SignBySecretaryOnAnnualGeneralMeet.IOutput[typeof Mutations.Meet.SignBySecretaryOnAnnualGeneralMeet.name]
6
+ export type ISignByPresiderResult = Mutations.Meet.SignByPresiderOnAnnualGeneralMeet.IOutput[typeof Mutations.Meet.SignByPresiderOnAnnualGeneralMeet.name]
7
+
8
+ interface ICloseMeetWithDecisionInput {
9
+ coopname: string
10
+ hash: string
11
+ username: string
12
+ }
13
+
14
+
15
+ export async function signBySecretaryOnAnnualGeneralMeetWithDecision(data: ICloseMeetWithDecisionInput): Promise<ISignBySecretaryResult> {
16
+ const { signDocument } = useSignDocument()
17
+
18
+ const variables: Mutations.Meet.GenerateAnnualGeneralMeetDecisionDocument.IInput = {
19
+ data: {
20
+ coopname: data.coopname,
21
+ username: data.username,
22
+ }
23
+ }
24
+
25
+ // Генерируем документ решения
26
+ const { [Mutations.Meet.GenerateAnnualGeneralMeetDecisionDocument.name]: generatedDocument } = await client.Mutation(
27
+ Mutations.Meet.GenerateAnnualGeneralMeetDecisionDocument.mutation,
28
+ {
29
+ variables
30
+ }
31
+ )
32
+
33
+ // Подписываем документ
34
+ const signedDocument = await signDocument(generatedDocument)
35
+
36
+ const variables2: Mutations.Meet.SignBySecretaryOnAnnualGeneralMeet.IInput = {
37
+ data: {
38
+ coopname: data.coopname,
39
+ hash: data.hash,
40
+ username: data.username,
41
+ secretary_decision: signedDocument
42
+ }
43
+ }
44
+ // Закрываем собрание с подписанным решением секретаря
45
+ const { [Mutations.Meet.SignBySecretaryOnAnnualGeneralMeet.name]: result } = await client.Mutation(
46
+ Mutations.Meet.SignBySecretaryOnAnnualGeneralMeet.mutation,
47
+ {
48
+ variables: variables2
49
+ }
50
+ )
51
+
52
+ return result
53
+ }
54
+
55
+ export async function signByPresiderOnAnnualGeneralMeetWithDecision(data: ICloseMeetWithDecisionInput): Promise<ISignByPresiderResult> {
56
+ const { signDocument } = useSignDocument()
57
+
58
+ const variables: Mutations.Meet.GenerateAnnualGeneralMeetDecisionDocument.IInput = {
59
+ data: {
60
+ coopname: data.coopname,
61
+ username: data.username,
62
+ }
63
+ }
64
+ // Генерируем документ решения
65
+ const { [Mutations.Meet.GenerateAnnualGeneralMeetDecisionDocument.name]: generatedDocument } = await client.Mutation(
66
+ Mutations.Meet.GenerateAnnualGeneralMeetDecisionDocument.mutation,
67
+ {
68
+ variables
69
+ }
70
+ )
71
+
72
+ // Подписываем документ
73
+ const signedDocument = await signDocument(generatedDocument)
74
+
75
+ const variables2: Mutations.Meet.SignByPresiderOnAnnualGeneralMeet.IInput = {
76
+ data: {
77
+ coopname: data.coopname,
78
+ hash: data.hash,
79
+ username: data.username,
80
+ presider_decision: signedDocument
81
+ }
82
+ }
83
+ // Закрываем собрание с подписанным решением председателя
84
+ const { [Mutations.Meet.SignByPresiderOnAnnualGeneralMeet.name]: result } = await client.Mutation(
85
+ Mutations.Meet.SignByPresiderOnAnnualGeneralMeet.mutation,
86
+ {
87
+ variables: variables2
88
+ }
89
+ )
90
+
91
+ return result
92
+ }
@@ -0,0 +1,2 @@
1
+ export * from './model'
2
+ export * from './ui'
@@ -0,0 +1,65 @@
1
+ import { client } from 'src/shared/api/client'
2
+ import { Mutations } from '@coopenomics/sdk'
3
+ import { generateAgenda } from 'src/features/Meet/GenerateAgenda/model'
4
+ import { useSignDocument } from 'src/shared/lib/document/model/entity'
5
+ import { hashSHA256 } from 'src/shared/api/crypto'
6
+
7
+ export type ICreateMeetInput = Mutations.Meet.CreateAnnualGeneralMeet.IInput['data']
8
+ export type ICreateMeetResult = Mutations.Meet.CreateAnnualGeneralMeet.IOutput[typeof Mutations.Meet.CreateAnnualGeneralMeet.name]
9
+
10
+ export interface ICreateMeetWithAgendaInput {
11
+ coopname: string
12
+ initiator: string
13
+ presider: string
14
+ secretary: string
15
+ open_at: string
16
+ close_at: string
17
+ username: string
18
+ agenda_points: {
19
+ title: string
20
+ context: string
21
+ decision: string
22
+ }[]
23
+ }
24
+
25
+ export async function createMeet(data: ICreateMeetInput): Promise<ICreateMeetResult> {
26
+ const { [Mutations.Meet.CreateAnnualGeneralMeet.name]: result } = await client.Mutation(
27
+ Mutations.Meet.CreateAnnualGeneralMeet.mutation,
28
+ {
29
+ variables: {
30
+ data
31
+ }
32
+ }
33
+ );
34
+
35
+ return result;
36
+ }
37
+
38
+ export async function createMeetWithAgenda(data: ICreateMeetWithAgendaInput): Promise<ICreateMeetResult> {
39
+ const { signDocument } = useSignDocument()
40
+ // Генерируем документ повестки
41
+ const generatedDocument = await generateAgenda({
42
+ coopname: data.coopname,
43
+ username: data.username
44
+ })
45
+ // Подписываем документ
46
+ const signedDocument = await signDocument(generatedDocument)
47
+
48
+ // Создаем собрание
49
+ const result = await createMeet({
50
+ coopname: data.coopname,
51
+ agenda: data.agenda_points,
52
+ initiator: data.initiator,
53
+ presider: data.presider,
54
+ secretary: data.secretary,
55
+ open_at: data.open_at,
56
+ close_at: data.close_at,
57
+ hash: await hashSHA256(JSON.stringify({
58
+ coopname: data.coopname,
59
+ initiator: data.initiator,
60
+ timestamp: Date.now()
61
+ })),
62
+ proposal: signedDocument
63
+ })
64
+ return result
65
+ }
@@ -0,0 +1,34 @@
1
+ <template lang="pug">
2
+ div
3
+ q-btn(
4
+ color="primary"
5
+ label="Создать общее собрание"
6
+ @click="showCreateMeetDialog = true"
7
+ )
8
+ CreateMeetForm(
9
+ v-model="showCreateMeetDialog"
10
+ :loading="isCreating"
11
+ @create="handleCreate"
12
+ )
13
+ </template>
14
+
15
+ <script setup lang="ts">
16
+ import { ref } from 'vue'
17
+ import { CreateMeetForm } from './index'
18
+
19
+ const showCreateMeetDialog = ref(false)
20
+ const isCreating = ref(false)
21
+
22
+ const emit = defineEmits<{
23
+ (e: 'create', formData: any): void
24
+ }>()
25
+
26
+ const handleCreate = async (formData: any) => {
27
+ isCreating.value = true
28
+ try {
29
+ emit('create', formData)
30
+ } finally {
31
+ isCreating.value = false
32
+ }
33
+ }
34
+ </script>
@@ -0,0 +1,136 @@
1
+ <template lang="pug">
2
+ q-dialog(:model-value="modelValue" @update:model-value="$emit('update:modelValue', $event)" persistent)
3
+ q-card(style="min-width: 500px")
4
+ q-card-section.row.items-center
5
+ div.text-h6 Создать общее собрание
6
+ q-space
7
+ q-btn(icon="close" flat round dense v-close-popup @click="$emit('update:modelValue', false)")
8
+
9
+ q-card-section
10
+ q-form(@submit="handleSubmit")
11
+ q-input(
12
+ v-model="formData.initiator"
13
+ label="Инициатор"
14
+ :rules="[val => !!val || 'Обязательное поле']"
15
+ dense
16
+ )
17
+ q-input(
18
+ v-model="formData.presider"
19
+ label="Председатель"
20
+ :rules="[val => !!val || 'Обязательное поле']"
21
+ dense
22
+ )
23
+ q-input(
24
+ v-model="formData.secretary"
25
+ label="Секретарь"
26
+ :rules="[val => !!val || 'Обязательное поле']"
27
+ dense
28
+ )
29
+ q-input(
30
+ v-model="formData.open_at"
31
+ label="Дата и время открытия, UTC"
32
+ type="datetime-local"
33
+ :rules="[val => !!val || 'Обязательное поле']"
34
+ dense
35
+ )
36
+ q-input(
37
+ v-model="formData.close_at"
38
+ label="Дата и время закрытия, UTC"
39
+ type="datetime-local"
40
+ :rules="[val => !!val || 'Обязательное поле']"
41
+ dense
42
+ )
43
+
44
+ div.text-h6.q-mt-md Повестка собрания
45
+
46
+ div(v-for="(point, index) in formData.agenda_points" :key="index")
47
+ div.row.q-mb-sm
48
+ div.col
49
+ q-input(
50
+ v-model="point.title"
51
+ label="Заголовок"
52
+ :rules="[val => !!val || 'Обязательное поле']"
53
+ dense
54
+ )
55
+ div.col
56
+ q-input(
57
+ v-model="point.context"
58
+ label="Описание"
59
+ :rules="[val => !!val || 'Обязательное поле']"
60
+ dense
61
+ )
62
+ div.col
63
+ q-input(
64
+ v-model="point.decision"
65
+ label="Решение"
66
+ :rules="[val => !!val || 'Обязательное поле']"
67
+ dense
68
+ )
69
+ div.col-auto
70
+ q-btn(flat icon="delete" @click="removeAgendaPoint(index)")
71
+
72
+ div.text-center.q-mb-md
73
+ q-btn(outline label="Добавить пункт повестки" @click="addAgendaPoint")
74
+
75
+ q-card-section.q-pt-none
76
+ div.text-caption.text-grey При создании собрания будет сгенерирован документ повестки.
77
+
78
+ q-card-actions(align="right")
79
+ q-btn(flat label="Отмена" v-close-popup @click="$emit('update:modelValue', false)" :disable="loading")
80
+ q-btn(color="primary" label="Создать" type="submit" @click="handleSubmit" :loading="loading" )
81
+ </template>
82
+
83
+ <script setup lang="ts">
84
+ import { reactive } from 'vue'
85
+ import { useAgendaPoints } from 'src/shared/hooks/useAgendaPoints'
86
+
87
+ defineProps<{
88
+ modelValue: boolean,
89
+ loading?: boolean
90
+ }>()
91
+
92
+ const emit = defineEmits<{
93
+ (e: 'update:modelValue', value: boolean): void
94
+ (e: 'create', data: any): void
95
+ }>()
96
+
97
+ // Форма для создания собрания
98
+
99
+ const formData = reactive(
100
+ {
101
+ 'coopname': 'voskhod',
102
+ 'initiator': 'ant',
103
+ 'presider': 'ant',
104
+ 'secretary': 'ant',
105
+ 'open_at': new Date(Date.now() + 10000).toISOString().slice(0, 16),
106
+ 'close_at': new Date(Date.now() + 120000).toISOString().slice(0, 16),
107
+ 'username': 'ant',
108
+ 'agenda_points': [
109
+ {
110
+ 'title': 'test',
111
+ 'context': 'testt',
112
+ 'decision': 'testtt'
113
+ }
114
+ ]
115
+ }
116
+ // {
117
+ // initiator: '',
118
+ // presider: '',
119
+ // secretary: '',
120
+ // open_at: '',
121
+ // close_at: '',
122
+ // agenda_points: [{
123
+ // title: '',
124
+ // context: '',
125
+ // decision: ''
126
+ // }
127
+ // ]
128
+ // }
129
+ )
130
+
131
+ const { addAgendaPoint, removeAgendaPoint } = useAgendaPoints(formData.agenda_points)
132
+
133
+ const handleSubmit = () => {
134
+ emit('create', formData)
135
+ }
136
+ </script>
@@ -0,0 +1,2 @@
1
+ export { default as CreateMeetForm } from './CreateMeetForm.vue'
2
+ export { default as CreateMeet } from './CreateMeet.vue'
@@ -0,0 +1 @@
1
+ export * from './model'
@@ -0,0 +1,18 @@
1
+ import { client } from 'src/shared/api/client';
2
+ import { Mutations } from '@coopenomics/sdk';
3
+
4
+ export type IGenerateAgendaInput = Mutations.Meet.GenerateAnnualGeneralMeetAgendaDocument.IInput['data'];
5
+ export type IGenerateAgendaResult = Mutations.Meet.GenerateAnnualGeneralMeetAgendaDocument.IOutput[typeof Mutations.Meet.GenerateAnnualGeneralMeetAgendaDocument.name];
6
+
7
+ export async function generateAgenda(data: IGenerateAgendaInput): Promise<IGenerateAgendaResult> {
8
+ const { [Mutations.Meet.GenerateAnnualGeneralMeetAgendaDocument.name]: generatedDocument } = await client.Mutation(
9
+ Mutations.Meet.GenerateAnnualGeneralMeetAgendaDocument.mutation,
10
+ {
11
+ variables: {
12
+ data
13
+ }
14
+ }
15
+ );
16
+
17
+ return generatedDocument;
18
+ }
@@ -0,0 +1 @@
1
+ export * from './model'
@@ -0,0 +1,18 @@
1
+ import { client } from 'src/shared/api/client';
2
+ import { Mutations } from '@coopenomics/sdk';
3
+
4
+ export type IGenerateBallotInput = Mutations.Meet.GenerateBallotForAnnualGeneralMeetDocument.IInput['data'];
5
+ export type IGenerateBallotResult = Mutations.Meet.GenerateBallotForAnnualGeneralMeetDocument.IOutput[typeof Mutations.Meet.GenerateBallotForAnnualGeneralMeetDocument.name];
6
+
7
+ export async function generateBallot(data: IGenerateBallotInput): Promise<IGenerateBallotResult> {
8
+ const { [Mutations.Meet.GenerateBallotForAnnualGeneralMeetDocument.name]: result } = await client.Mutation(
9
+ Mutations.Meet.GenerateBallotForAnnualGeneralMeetDocument.mutation,
10
+ {
11
+ variables: {
12
+ data
13
+ }
14
+ }
15
+ );
16
+
17
+ return result;
18
+ }
@@ -0,0 +1 @@
1
+ export * from './model'
@@ -0,0 +1,18 @@
1
+ import { client } from 'src/shared/api/client'
2
+ import { Mutations } from '@coopenomics/sdk'
3
+
4
+ export type IGenerateNotificationInput = Mutations.Meet.GenerateAnnualGeneralMeetNotificationDocument.IInput['data']
5
+ export type IGenerateNotificationResult = Mutations.Meet.GenerateAnnualGeneralMeetNotificationDocument.IOutput[typeof Mutations.Meet.GenerateAnnualGeneralMeetNotificationDocument.name]
6
+
7
+ export async function generateNotification(data: IGenerateNotificationInput): Promise<IGenerateNotificationResult> {
8
+ const { [Mutations.Meet.GenerateAnnualGeneralMeetNotificationDocument.name]: result } = await client.Mutation(
9
+ Mutations.Meet.GenerateAnnualGeneralMeetNotificationDocument.mutation,
10
+ {
11
+ variables: {
12
+ data
13
+ }
14
+ }
15
+ )
16
+
17
+ return result
18
+ }
@@ -0,0 +1 @@
1
+ export * from './model'
@@ -0,0 +1,48 @@
1
+ import { client } from 'src/shared/api/client';
2
+ import { Mutations } from '@coopenomics/sdk';
3
+ import { useSystemStore } from 'src/entities/System/model'
4
+
5
+ export type IGenerateSovietDecisionInput = Mutations.Meet.GenerateSovietDecisionOnAnnualMeetDocument.IInput['data'];
6
+ export type IGenerateSovietDecisionResult = Mutations.Meet.GenerateSovietDecisionOnAnnualMeetDocument.IOutput[typeof Mutations.Meet.GenerateSovietDecisionOnAnnualMeetDocument.name];
7
+
8
+ export async function generateSovietDecision(data: IGenerateSovietDecisionInput): Promise<IGenerateSovietDecisionResult> {
9
+ const { [Mutations.Meet.GenerateSovietDecisionOnAnnualMeetDocument.name]: result } = await client.Mutation(
10
+ Mutations.Meet.GenerateSovietDecisionOnAnnualMeetDocument.mutation,
11
+ {
12
+ variables: {
13
+ data
14
+ }
15
+ }
16
+ );
17
+
18
+ return result;
19
+ }
20
+
21
+ export function useGenerateSovietDecisionOnAnnualMeet() {
22
+ const { info } = useSystemStore()
23
+
24
+ /**
25
+ * Генерирует документ для решения о проведении общего собрания
26
+ */
27
+ async function generateSovietDecisionOnAnnualMeet(
28
+ data: Omit<IGenerateSovietDecisionInput, 'coopname'>
29
+ ): Promise<IGenerateSovietDecisionResult> {
30
+ const { [Mutations.Meet.GenerateSovietDecisionOnAnnualMeetDocument.name]: result } = await client.Mutation(
31
+ Mutations.Meet.GenerateSovietDecisionOnAnnualMeetDocument.mutation,
32
+ {
33
+ variables: {
34
+ data: {
35
+ coopname: info.coopname,
36
+ ...data
37
+ }
38
+ }
39
+ }
40
+ )
41
+
42
+ return result
43
+ }
44
+
45
+ return {
46
+ generateSovietDecisionOnAnnualMeet
47
+ }
48
+ }
@@ -0,0 +1 @@
1
+ export * from './model'
@@ -0,0 +1,121 @@
1
+ import { computed, type Ref } from 'vue'
2
+ import type { IMeet } from 'src/entities/Meet'
3
+ import { useMeetStore } from 'src/entities/Meet'
4
+ import { useSessionStore } from 'src/entities/Session'
5
+ import { FailAlert, SuccessAlert } from 'src/shared/api'
6
+ import { signByPresiderOnAnnualGeneralMeetWithDecision } from 'src/features/Meet/CloseMeetWithDecision/model'
7
+ import { restartMeetWithProposal } from 'src/features/Meet/RestartMeet/model'
8
+ import moment from 'moment-with-locales-es6'
9
+
10
+ moment.locale('ru')
11
+
12
+ export const useMeetDetailsManagement = (
13
+ meet: IMeet,
14
+ coopname: string,
15
+ meetHash: string,
16
+ isProcessing: Ref<boolean>
17
+ ) => {
18
+ const meetStore = useMeetStore()
19
+ const sessionStore = useSessionStore()
20
+
21
+ const canManageMeet = computed(() => true) // Здесь можно добавить проверку ролей
22
+
23
+ const canCloseBySecretary = computed(() => {
24
+ if (!meet?.processing?.meet) return false
25
+
26
+ const now = moment()
27
+ const closeAt = moment(meet.processing.meet.close_at)
28
+
29
+ const isAfterCloseDate = now.isAfter(closeAt)
30
+ const isQuorumPassed = meet.processing.meet.quorum_passed === true
31
+ const isAuthorized = meet.processing.meet.status === 'authorized'
32
+
33
+ return isAfterCloseDate && isQuorumPassed && isAuthorized
34
+ })
35
+
36
+ const canCloseByPresider = computed(() => {
37
+ if (!meet?.processing?.meet) return false
38
+ return meet.processing.meet.status === 'preclose'
39
+ })
40
+
41
+ const canRestartMeet = computed(() => {
42
+ if (!meet?.processing?.meet) return false
43
+
44
+ const now = moment()
45
+ const closeAt = moment(meet.processing.meet.close_at)
46
+
47
+ const isAfterCloseDate = now.isAfter(closeAt)
48
+ const isQuorumNotPassed = meet.processing.meet.quorum_passed !== true
49
+
50
+ return isAfterCloseDate && isQuorumNotPassed && meet.processing.meet.status === 'authorized'
51
+ })
52
+
53
+ const closeMeetBySecretary = async () => {
54
+ isProcessing.value = true
55
+ try {
56
+ await signByPresiderOnAnnualGeneralMeetWithDecision({
57
+ coopname,
58
+ hash: meetHash,
59
+ username: sessionStore.username,
60
+ })
61
+
62
+ await meetStore.loadMeet({ coopname, hash: meetHash })
63
+ SuccessAlert('Собрание успешно закрыто')
64
+ } catch (error: any) {
65
+ FailAlert(error)
66
+ } finally {
67
+ isProcessing.value = false
68
+ }
69
+ }
70
+
71
+ const closeMeetByPresider = async () => {
72
+ isProcessing.value = true
73
+ try {
74
+ await signByPresiderOnAnnualGeneralMeetWithDecision({
75
+ coopname,
76
+ hash: meetHash,
77
+ username: sessionStore.username,
78
+ })
79
+
80
+ await meetStore.loadMeet({ coopname, hash: meetHash })
81
+ SuccessAlert('Собрание успешно закрыто')
82
+ } catch (error: any) {
83
+ FailAlert(error)
84
+ } finally {
85
+ isProcessing.value = false
86
+ }
87
+ }
88
+
89
+ const handleRestartMeet = async (data: any) => {
90
+ isProcessing.value = true
91
+ try {
92
+ await restartMeetWithProposal({
93
+ coopname,
94
+ hash: meetHash,
95
+ username: sessionStore.username,
96
+ new_open_at: data.new_open_at,
97
+ new_close_at: data.new_close_at,
98
+ agenda_points: data.agenda_points
99
+ })
100
+
101
+ await meetStore.loadMeet({ coopname, hash: meetHash })
102
+ SuccessAlert('Собрание успешно перезапущено')
103
+ return true
104
+ } catch (error: any) {
105
+ FailAlert(error)
106
+ return false
107
+ } finally {
108
+ isProcessing.value = false
109
+ }
110
+ }
111
+
112
+ return {
113
+ canManageMeet,
114
+ canCloseBySecretary,
115
+ canCloseByPresider,
116
+ canRestartMeet,
117
+ closeMeetBySecretary,
118
+ closeMeetByPresider,
119
+ handleRestartMeet
120
+ }
121
+ }
@@ -0,0 +1,2 @@
1
+ export * from './model'
2
+ export * from './ui'
@@ -0,0 +1,54 @@
1
+ import { client } from 'src/shared/api/client';
2
+ import { Mutations } from '@coopenomics/sdk';
3
+ import { generateAgenda } from 'src/features/Meet/GenerateAgenda/model'
4
+ import { useSignDocument } from 'src/shared/lib/document'
5
+
6
+ export type IRestartMeetInput = Mutations.Meet.RestartAnnualGeneralMeet.IInput['data'];
7
+ export type IRestartMeetResult = Mutations.Meet.RestartAnnualGeneralMeet.IOutput[typeof Mutations.Meet.RestartAnnualGeneralMeet.name];
8
+
9
+ export interface IRestartMeetWithProposalInput {
10
+ coopname: string
11
+ hash: string
12
+ username: string
13
+ new_open_at: string
14
+ new_close_at: string
15
+ agenda_points: {
16
+ title: string
17
+ context: string
18
+ decision: string
19
+ }[]
20
+ }
21
+
22
+ export async function restartMeet(data: IRestartMeetInput): Promise<IRestartMeetResult> {
23
+ const { [Mutations.Meet.RestartAnnualGeneralMeet.name]: result } = await client.Mutation(
24
+ Mutations.Meet.RestartAnnualGeneralMeet.mutation,
25
+ {
26
+ variables: {
27
+ data
28
+ }
29
+ }
30
+ );
31
+
32
+ return result;
33
+ }
34
+
35
+ export async function restartMeetWithProposal(data: IRestartMeetWithProposalInput): Promise<IRestartMeetResult> {
36
+ const { signDocument } = useSignDocument()
37
+ // Генерируем документ повестки
38
+ const generatedDocument = await generateAgenda({
39
+ coopname: data.coopname,
40
+ username: data.username
41
+ })
42
+ // Подписываем документ
43
+ const signedDocument = await signDocument(generatedDocument)
44
+
45
+ // Перезапускаем собрание
46
+ const result = await restartMeet({
47
+ coopname: data.coopname,
48
+ hash: data.hash,
49
+ new_open_at: data.new_open_at,
50
+ new_close_at: data.new_close_at,
51
+ newproposal: signedDocument
52
+ })
53
+ return result
54
+ }