@coopenomics/desktop 2.2.10 → 2025.4.29

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 (355) hide show
  1. package/.env-example +6 -1
  2. package/.env-testnet +8 -0
  3. package/Dockerfile +12 -0
  4. package/extensions/market/install.ts +78 -0
  5. package/extensions/market-admin/install.ts +42 -0
  6. package/extensions/participant/install.ts +125 -0
  7. package/extensions/powerup/install.ts +20 -0
  8. package/extensions/soviet/install.ts +83 -0
  9. package/package.json +6 -5
  10. package/quasar.config.cjs +5 -12
  11. package/src/app/App.vue +44 -73
  12. package/src/app/layouts/default.vue +40 -0
  13. package/src/app/layouts/useDefaultLayoutLogic.ts +59 -0
  14. package/src/app/providers/routes/index.ts +19 -34
  15. package/src/app/styles/style.css +4 -0
  16. package/src/boot/init.ts +6 -0
  17. package/src/boot/sentry.ts +1 -2
  18. package/src/desktops/index.ts +0 -6
  19. package/src/entities/Account/model/index.ts +1 -1
  20. package/src/entities/Agenda/api/index.ts +20 -0
  21. package/src/entities/Agenda/index.ts +2 -0
  22. package/src/entities/Agenda/model/index.ts +2 -0
  23. package/src/entities/Agenda/model/store.ts +36 -0
  24. package/src/entities/Agenda/model/types.ts +4 -0
  25. package/src/entities/Branch/model/index.ts +1 -1
  26. package/src/entities/Desktop/api/index.ts +16 -1
  27. package/src/entities/Desktop/model/store.ts +112 -106
  28. package/src/entities/Desktop/model/types.ts +14 -1
  29. package/src/entities/Document/api/index.ts +24 -0
  30. package/src/entities/Document/index.ts +2 -0
  31. package/src/entities/Document/model/store.ts +117 -0
  32. package/src/entities/Document/model/types.ts +18 -0
  33. package/src/entities/Meet/api/index.ts +58 -0
  34. package/src/entities/Meet/index.ts +2 -0
  35. package/src/entities/Meet/model/store.ts +72 -0
  36. package/src/entities/Meet/types/index.ts +7 -0
  37. package/src/entities/Payment/api/index.ts +20 -0
  38. package/src/entities/Payment/model/index.ts +2 -0
  39. package/src/entities/Payment/model/store.ts +62 -0
  40. package/src/entities/Payment/model/types.ts +7 -0
  41. package/src/entities/Session/model/store.ts +3 -3
  42. package/src/entities/System/model/store.ts +1 -1
  43. package/src/entities/User/model/stores.ts +3 -1
  44. package/src/entities/Wallet/api/index.ts +15 -33
  45. package/src/entities/Wallet/model/stores.ts +3 -23
  46. package/src/entities/Wallet/model/types.ts +2 -3
  47. package/src/features/Agreementer/SignAgreementDialog/ui/SignAgreementDialog.vue +1 -1
  48. package/src/features/Branch/SelectBranch/index.ts +2 -0
  49. package/src/features/Branch/SelectBranch/ui/SelectBranchOverlay.vue +52 -105
  50. package/src/features/Decision/CreateProject/ui/CreateProjectFreeDecisionButton.vue +1 -1
  51. package/src/features/Decision/ParticipantApplication/model/index.ts +38 -0
  52. package/src/features/FreeDecision/CreateProject/model/index.ts +92 -0
  53. package/src/features/FreeDecision/CreateProject/ui/CreateProjectFreeDecisionButton.vue +51 -0
  54. package/src/features/FreeDecision/CreateProject/ui/index.ts +1 -0
  55. package/src/features/FreeDecision/GenerateDecision/index.ts +1 -0
  56. package/src/features/FreeDecision/GenerateDecision/model/index.ts +36 -0
  57. package/src/features/FreeDecision/index.ts +2 -0
  58. package/src/features/Meet/CloseMeetWithDecision/index.ts +1 -0
  59. package/src/features/Meet/CloseMeetWithDecision/model/index.ts +92 -0
  60. package/src/features/Meet/CreateMeet/index.ts +2 -0
  61. package/src/features/Meet/CreateMeet/model/index.ts +65 -0
  62. package/src/features/Meet/CreateMeet/ui/CreateMeet.vue +34 -0
  63. package/src/features/Meet/CreateMeet/ui/CreateMeetForm.vue +136 -0
  64. package/src/features/Meet/CreateMeet/ui/index.ts +2 -0
  65. package/src/features/Meet/GenerateAgenda/index.ts +1 -0
  66. package/src/features/Meet/GenerateAgenda/model/index.ts +18 -0
  67. package/src/features/Meet/GenerateBallot/index.ts +1 -0
  68. package/src/features/Meet/GenerateBallot/model/index.ts +18 -0
  69. package/src/features/Meet/GenerateNotification/index.ts +1 -0
  70. package/src/features/Meet/GenerateNotification/model/index.ts +18 -0
  71. package/src/features/Meet/GenerateSovietDecision/index.ts +1 -0
  72. package/src/features/Meet/GenerateSovietDecision/model/index.ts +48 -0
  73. package/src/features/Meet/MeetDetailsManagement/index.ts +1 -0
  74. package/src/features/Meet/MeetDetailsManagement/model/index.ts +121 -0
  75. package/src/features/Meet/RestartMeet/index.ts +2 -0
  76. package/src/features/Meet/RestartMeet/model/index.ts +54 -0
  77. package/src/features/Meet/RestartMeet/ui/RestartMeet.vue +46 -0
  78. package/src/features/Meet/RestartMeet/ui/RestartMeetForm.vue +92 -0
  79. package/src/features/Meet/RestartMeet/ui/index.ts +2 -0
  80. package/src/features/Meet/VoteOnMeet/index.ts +1 -0
  81. package/src/features/Meet/VoteOnMeet/model/index.ts +18 -0
  82. package/src/features/Payment/SetStatus/api/index.ts +20 -0
  83. package/src/features/Payment/SetStatus/index.ts +1 -0
  84. package/src/features/Payment/SetStatus/model/index.ts +30 -0
  85. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderPaidStatusButton/SetOrderPaidStatusButton.vue +7 -3
  86. package/src/features/PaymentMethod/AddPaymentMethod/model/index.ts +2 -2
  87. package/src/features/PaymentMethod/AddPaymentMethod/ui/AddPaymentButton.vue +1 -1
  88. package/src/features/PaymentMethod/DeletePaymentMethod/model/index.ts +1 -1
  89. package/src/features/PaymentMethod/DeletePaymentMethod/ui/DeletePaymentMethodButton.vue +3 -1
  90. package/src/features/Request/CancelRequest/ui/CancelButton.vue +1 -1
  91. package/src/features/Request/ConfirmRecieveOnRequest/ui/ConfirmRecieveOnRequest.vue +1 -1
  92. package/src/features/Request/CreateParentOffer/ui/CreateParentOfferForm/CreateParentOfferForm.vue +3 -5
  93. package/src/features/Request/CreateParentOffer/ui/ImageUploaderWithPreview/ImageUploaderWithPreview.vue +4 -3
  94. package/src/features/Request/DisputeOnRequest/ui/DisputeOnRequestButton.vue +1 -1
  95. package/src/features/Request/ModerateRequest/ui/ModerateRequestButton.vue +2 -2
  96. package/src/features/Request/PublishRequest/ui/PublishRequestButton.vue +1 -1
  97. package/src/features/Request/RecieveOnRequest/ui/RecieveOnRequestButton.vue +1 -1
  98. package/src/features/Request/UnpublishRequest/ui/UnpublishRequestButton.vue +1 -1
  99. package/src/features/Union/AddCooperative/model/index.ts +4 -5
  100. package/src/features/Union/AddCooperative/ui/AddCooperativeForm.vue +5 -6
  101. package/src/features/User/AddUser/ui/AddUserDialog/AddUserDialog.vue +4 -4
  102. package/src/features/User/LoginUser/model/index.ts +3 -3
  103. package/src/features/User/LoginUser/ui/LoginForm/LoginForm.vue +0 -6
  104. package/src/features/User/Logout/model/index.ts +2 -0
  105. package/src/features/Wallet/DepositToWallet/ui/DepositButton/DepositButton.vue +8 -7
  106. package/src/features/Wallet/WithdrawFromWallet/ui/withdrawButton.vue +6 -7
  107. package/src/pages/Blank/index.ts +1 -0
  108. package/src/pages/Contacts/ContactsPage.vue +64 -0
  109. package/src/{widgets/Cooperative/Contacts → pages/Cooperative/ChangeContacts}/ui/index.ts +0 -1
  110. package/src/{widgets/Cooperative/Contributions/ui/ChangeContributions.vue → pages/Cooperative/ChangeRegisterPayments/ui/ChangeRegisterPayments.vue} +10 -11
  111. package/src/pages/Cooperative/ChangeRegisterPayments/ui/index.ts +1 -0
  112. package/src/pages/Cooperative/ListOfAgenda/index.ts +1 -0
  113. package/src/pages/Cooperative/ListOfAgenda/ui/ListOfAgendaQuestions.vue +118 -0
  114. package/src/pages/Cooperative/ListOfAgenda/ui/index.ts +1 -0
  115. package/src/pages/Cooperative/ListOfDocuments/ListOfDocumentsPage.vue +24 -0
  116. package/src/pages/Cooperative/ListOfMeets/model/index.ts +1 -0
  117. package/src/pages/Cooperative/ListOfMeets/model/model.ts +117 -0
  118. package/src/pages/Cooperative/ListOfMeets/ui/ListOfMeetsPage.vue +90 -0
  119. package/src/pages/Cooperative/ListOfMeets/ui/index.ts +1 -0
  120. package/src/pages/Cooperative/ListOfOrders/index.ts +1 -1
  121. package/src/pages/Cooperative/ListOfOrders/ui/ListOfOrdersPage.vue +0 -4
  122. package/src/pages/Cooperative/ListOfParticipants/ui/ListOfParticipantsPage.vue +61 -10
  123. package/src/pages/Cooperative/ListOfParticipants/ui/index.ts +1 -1
  124. package/src/pages/Cooperative/MeetDetails/ui/MeetDetailsPage.vue +88 -0
  125. package/src/pages/Cooperative/MeetDetails/ui/index.ts +1 -0
  126. package/src/pages/Cooperative/MemberBranchList/ui/index.ts +1 -0
  127. package/src/pages/Cooperative/Payments/index.ts +1 -0
  128. package/src/pages/Cooperative/Payments/ui/PaymentsPage.vue +7 -0
  129. package/src/pages/{ExtStore → ExtensionStore}/ExtensionPage/ExtensionPage.vue +35 -20
  130. package/src/pages/{ExtStore → ExtensionStore}/ExtensionsShowcase/ExtensionsShowcase.vue +2 -2
  131. package/src/pages/{ExtStore → ExtensionStore}/InstalledExtensions/InstalledExtensions.vue +2 -2
  132. package/src/pages/Marketplace/OfferPage/ui/OfferPage.vue +1 -1
  133. package/src/pages/Marketplace/Showcase/ui/ShowcasePage.vue +1 -1
  134. package/src/pages/Marketplace/SuppliesList/ui/SuppliesListPage.vue +1 -1
  135. package/src/pages/Marketplace/UserParentOffers/ui/UserParentOffersPage.vue +1 -1
  136. package/src/pages/Marketplace/UserSuppliesList/ui/UserSuppliesListPage.vue +1 -1
  137. package/src/pages/PermissionDenied/index.ts +1 -0
  138. package/src/pages/Registrator/SignUp/EmailInput.vue +2 -3
  139. package/src/pages/Registrator/SignUp/GenerateAccount.vue +2 -3
  140. package/src/pages/Registrator/SignUp/PayInitial.vue +1 -1
  141. package/src/pages/Registrator/SignUp/ReadStatement.vue +2 -2
  142. package/src/pages/Registrator/SignUp/SelectBranch.vue +2 -2
  143. package/src/pages/Registrator/SignUp/SignStatement.vue +2 -2
  144. package/src/pages/Registrator/SignUp/SignUp.vue +5 -12
  145. package/src/pages/Registrator/SignUp/WaitingRegistration.vue +1 -5
  146. package/src/pages/Registrator/SignUp/Welcome.vue +4 -3
  147. package/src/pages/Union/ConnectionAgreement/index.ts +1 -0
  148. package/src/pages/Union/ListOfCooperatives/ui/UnionPageListOfCooperatives.vue +139 -6
  149. package/src/pages/User/DocumentsPage/UserDocumentsPage.vue +23 -0
  150. package/src/pages/User/DocumentsPage/index.ts +1 -0
  151. package/src/pages/User/PaymentsPage/ui/UserPayments.vue +11 -0
  152. package/src/pages/User/PaymentsPage/ui/index.ts +1 -0
  153. package/src/pages/User/ProfilePage/index.ts +1 -0
  154. package/src/pages/User/ProfilePage/ui/ProfilePage.vue +114 -0
  155. package/src/pages/User/ProfilePage/ui/index.ts +1 -0
  156. package/src/pages/User/SettingsPage/ui/index.ts +1 -1
  157. package/src/pages/User/WalletPage/index.ts +1 -0
  158. package/src/pages/User/WalletPage/ui/WalletPage.vue +72 -0
  159. package/src/pages/User/WalletPage/ui/index.ts +1 -0
  160. package/src/processes/init-app/index.ts +28 -0
  161. package/src/processes/init-installed-extensions/index.ts +25 -0
  162. package/src/processes/init-wallet/index.ts +40 -0
  163. package/src/processes/navigation-guard-setup/index.ts +45 -0
  164. package/src/processes/process-decisions/index.ts +275 -0
  165. package/src/processes/select-branch/index.ts +80 -0
  166. package/src/processes/watch-branch-overlay/index.ts +38 -0
  167. package/src/processes/watch-desktop-health/index.ts +33 -0
  168. package/src/shared/api/alerts.ts +2 -6
  169. package/src/shared/api/axios.ts +4 -5
  170. package/src/shared/api/client.ts +3 -4
  171. package/src/shared/api/eosio.ts +1 -2
  172. package/src/shared/api/utils.ts +1 -3
  173. package/src/shared/config/index.ts +0 -1
  174. package/src/shared/hooks/index.ts +2 -0
  175. package/src/shared/hooks/useAgendaPoints.ts +24 -0
  176. package/src/shared/hooks/useWindowSize.ts +13 -0
  177. package/src/shared/lib/composables/useDisplayName.ts +34 -0
  178. package/src/shared/lib/navigation/index.ts +2 -0
  179. package/src/shared/lib/navigation/routeUtils.ts +51 -0
  180. package/src/shared/lib/navigation/useBackButton.ts +63 -0
  181. package/src/shared/lib/utils/dates/validateDateWithinRange.ts +23 -0
  182. package/src/shared/ui/BaseDocument/BaseDocument.vue +120 -90
  183. package/src/{components/menu/blockchainStatus.vue → shared/ui/BlockchainStatusBar/BlockchainStatusBar.vue} +1 -0
  184. package/src/shared/ui/BlockchainStatusBar/index.ts +1 -0
  185. package/src/shared/ui/CardStyles/index.scss +61 -0
  186. package/src/shared/ui/ComplexDocument/ComplexDocument.vue +31 -8
  187. package/src/shared/ui/CopyableInput/index.ts +1 -0
  188. package/src/shared/ui/CopyableInput/ui/CopyableInput.vue +62 -0
  189. package/src/shared/ui/EditableEntrepreneurCard/EditableEntrepreneurCard.vue +9 -8
  190. package/src/shared/ui/EditableIndividualCard/EditableIndividualCard.vue +10 -10
  191. package/src/shared/ui/EditableOrganizationCard/EditableOrganizationCard.vue +57 -47
  192. package/src/shared/ui/Form/Form.vue +3 -1
  193. package/src/shared/ui/InputStyles/index.scss +29 -0
  194. package/src/shared/ui/TabStyles/index.scss +53 -0
  195. package/src/shared/ui/index.ts +1 -0
  196. package/src/{components/history/AccountEvents.vue → widgets/AccountActions/AccountActionsPage.vue} +2 -2
  197. package/src/widgets/AccountActions/index.ts +1 -0
  198. package/src/widgets/BankDetailsCard/ui/BankDetailsCard.vue +2 -2
  199. package/src/widgets/BranchCard/ui/BranchCard.vue +2 -2
  200. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/DocumentCard.vue +48 -0
  201. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/DocumentsTable.vue +162 -0
  202. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/ListOfDocumentsWidget.vue +77 -120
  203. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/index.ts +3 -1
  204. package/src/widgets/Cooperative/Orders/ListOfOrders/ui/ListOfOrdersWidget.vue +135 -128
  205. package/src/widgets/Cooperative/Orders/ListOfOrders/ui/OrderCard.vue +74 -0
  206. package/src/widgets/Cooperative/Orders/ListOfOrders/ui/index.ts +2 -1
  207. package/src/widgets/Cooperative/Payments/ListOfPayments/ui/ListOfPaymentsWidget.vue +216 -0
  208. package/src/widgets/Cooperative/Payments/ListOfPayments/ui/PaymentCard.vue +73 -0
  209. package/src/widgets/Cooperative/Payments/ListOfPayments/ui/index.ts +2 -0
  210. package/src/widgets/Cooperative/Payments/index.ts +1 -0
  211. package/src/widgets/Desktop/LeftDrawerMenu/LeftDrawerMenu.vue +3 -2
  212. package/src/widgets/Desktop/SecondLevelMenuList/SecondLevelMenuList.vue +58 -91
  213. package/src/widgets/Desktop/WorkspaceMenu/WorkspaceMenu.vue +114 -59
  214. package/src/widgets/{ExtStore/ExtensionCard → ExtensionCard}/ExtensionCard.vue +12 -7
  215. package/src/widgets/Header/BackButton/BackButton.vue +25 -0
  216. package/src/widgets/Header/BackButton/index.ts +1 -0
  217. package/src/widgets/Header/CommonHeader/CooperativeSettingsHeader.vue +34 -0
  218. package/src/widgets/Header/CommonHeader/ExtstoreHeader.vue +41 -0
  219. package/src/widgets/Header/CommonHeader/Header.vue +33 -198
  220. package/src/widgets/Header/CommonHeader/HeaderStyles.scss +22 -0
  221. package/src/widgets/Header/CommonHeader/MainHeader.vue +87 -0
  222. package/src/widgets/Header/CommonHeader/UserSettingsHeader.vue +29 -0
  223. package/src/widgets/Header/CommonHeader/index.ts +1 -1
  224. package/src/widgets/Header/SettingsDropdown/SettingsDropdown.vue +0 -6
  225. package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Base/Base.vue +1 -2
  226. package/src/widgets/Meets/MeetDetailsActions/MeetDetailsActions.vue +51 -0
  227. package/src/widgets/Meets/MeetDetailsActions/index.ts +1 -0
  228. package/src/widgets/Meets/MeetDetailsActions/model.ts +46 -0
  229. package/src/widgets/Meets/MeetDetailsAgenda/MeetDetailsAgenda.vue +29 -0
  230. package/src/widgets/Meets/MeetDetailsAgenda/index.ts +1 -0
  231. package/src/widgets/Meets/MeetDetailsHeader/MeetDetailsHeader.vue +40 -0
  232. package/src/widgets/Meets/MeetDetailsHeader/index.ts +1 -0
  233. package/src/widgets/Meets/MeetDetailsVoting/MeetDetailsVoting.vue +77 -0
  234. package/src/widgets/Meets/MeetDetailsVoting/index.ts +1 -0
  235. package/src/widgets/Meets/MeetDetailsVoting/model.ts +117 -0
  236. package/src/widgets/Meets/MeetInfoCard/ui/MeetInfoCard.vue +38 -0
  237. package/src/widgets/Meets/MeetInfoCard/ui/index.ts +1 -0
  238. package/src/widgets/Meets/MeetsTable/ui/MeetsTable.vue +118 -0
  239. package/src/widgets/Meets/MeetsTable/ui/index.ts +1 -0
  240. package/src/widgets/Participants/index.ts +1 -0
  241. package/src/widgets/Participants/ui/ParticipantCard.vue +89 -0
  242. package/src/widgets/Participants/ui/ParticipantDetails.vue +79 -0
  243. package/src/widgets/Participants/ui/ParticipantsTable.vue +129 -0
  244. package/src/widgets/Participants/ui/index.ts +4 -0
  245. package/src/widgets/Questions/index.ts +3 -0
  246. package/src/widgets/Questions/ui/QuestionCard/QuestionCard.vue +109 -0
  247. package/src/widgets/Questions/ui/QuestionCard/index.ts +1 -0
  248. package/src/widgets/Questions/ui/QuestionsTable/QuestionsTable.vue +177 -0
  249. package/src/widgets/Questions/ui/QuestionsTable/index.ts +1 -0
  250. package/src/widgets/Questions/ui/VotingButtons/VotingButtons.vue +75 -0
  251. package/src/widgets/Questions/ui/VotingButtons/index.ts +1 -0
  252. package/src/widgets/Questions/ui/index.ts +3 -0
  253. package/src/widgets/RequireAgreements/index.ts +1 -0
  254. package/src/widgets/User/PaymentMethods/ui/PaymentMethods.vue +81 -85
  255. package/tsconfig.json +1 -1
  256. package/extensions/powerup/boot.ts +0 -17
  257. package/src/app/providers/card/store.ts +0 -42
  258. package/src/boot/branch-selector.ts +0 -40
  259. package/src/boot/init-stores.ts +0 -51
  260. package/src/boot/navigation-guards.ts +0 -46
  261. package/src/components/menu/footerMobileMenu.vue +0 -79
  262. package/src/components/soviet/index.vue +0 -76
  263. package/src/components/soviet/staff.vue +0 -274
  264. package/src/desktops/User/index.ts +0 -1
  265. package/src/desktops/User/model/index.ts +0 -329
  266. package/src/entities/Menu/model/store.ts +0 -69
  267. package/src/entities/Menu/model/types.ts +0 -11
  268. package/src/entities/Menu/ui/index.ts +0 -1
  269. package/src/entities/Order/api/index.ts +0 -14
  270. package/src/entities/Order/model/store.ts +0 -87
  271. package/src/features/Order/SetStatus/api/index.ts +0 -7
  272. package/src/features/Order/SetStatus/model/index.ts +0 -23
  273. package/src/pages/Cooperative/Contacts/ui/ContactsPage.vue +0 -7
  274. package/src/pages/Cooperative/ListOfBranches/ui/index.ts +0 -1
  275. package/src/pages/Documentor/ListOfDocuments/ListOfDocumentsPage.vue +0 -12
  276. package/src/pages/Union/Connection/index.ts +0 -1
  277. package/src/pages/_layouts/blank.vue +0 -24
  278. package/src/pages/_layouts/default.vue +0 -79
  279. package/src/types/index.ts +0 -3
  280. package/src/widgets/Commutator/Commutator.vue +0 -7
  281. package/src/widgets/Commutator/index.ts +0 -1
  282. package/src/widgets/Cooperative/Agenda/ListOfQuestions/ui/ListOfQuestions.vue +0 -273
  283. package/src/widgets/Cooperative/Agenda/ListOfQuestions/ui/index.ts +0 -1
  284. package/src/widgets/Cooperative/Contacts/ui/Contacts.vue +0 -52
  285. package/src/widgets/Cooperative/Contributions/ui/index.ts +0 -1
  286. package/src/widgets/Cooperative/Description/ui/SetDescription.vue +0 -4
  287. package/src/widgets/Cooperative/Description/ui/index.ts +0 -1
  288. package/src/widgets/Cooperative/Participants/ListOfParticipants/ui/ListOfParticipantsWidget.vue +0 -186
  289. package/src/widgets/Cooperative/Participants/ListOfParticipants/ui/index.ts +0 -1
  290. package/src/widgets/Desktop/SecondLevelMenu/SecondLevelMenu.vue +0 -59
  291. package/src/widgets/Desktop/SecondLevelMenu/index.ts +0 -1
  292. package/src/widgets/IndividualCard/ui/IndividualCard.vue +0 -170
  293. package/src/widgets/IndividualCard/ui/index.ts +0 -1
  294. package/src/widgets/OrganizationCard/ui/OrganizationCard.vue +0 -44
  295. package/src/widgets/OrganizationCard/ui/index.ts +0 -1
  296. package/src/widgets/Union/ListOfCooperatives/ui/UnionListOfCooperatives.vue +0 -136
  297. package/src/widgets/Union/ListOfCooperatives/ui/index.ts +0 -1
  298. package/src/entities/{Menu → Document}/model/index.ts +0 -0
  299. package/src/entities/{Order → Meet}/model/index.ts +0 -0
  300. package/src/entities/{Order → Payment}/index.ts +0 -0
  301. package/src/features/{Order/SetStatus → Decision/ParticipantApplication}/index.ts +0 -0
  302. package/src/{widgets/Request/SupplyOrderRequestCard → features/FreeDecision/CreateProject}/index.ts +0 -0
  303. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderCompletedStatusButton/SetOrderCompletedStatusButton.vue +0 -0
  304. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderCompletedStatusButton/index.ts +0 -0
  305. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderPaidStatusButton/index.ts +0 -0
  306. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderRefundedStatusButton/SetOrderRefundedStatusButton.vue +0 -0
  307. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderRefundedStatusButton/index.ts +0 -0
  308. package/src/pages/{blank/blank.vue → Blank/BlankPage.vue} +0 -0
  309. package/src/pages/{Cooperative/Contacts/ui → Contacts}/index.ts +0 -0
  310. package/src/pages/Cooperative/{Contacts → ChangeContacts}/index.ts +0 -0
  311. package/src/{widgets/Cooperative/Contacts → pages/Cooperative/ChangeContacts}/ui/ChangeContacts.vue +0 -0
  312. package/src/pages/Cooperative/{ListOfBranches → ChangeRegisterPayments}/index.ts +0 -0
  313. package/src/pages/{Documentor → Cooperative}/ListOfDocuments/index.ts +0 -0
  314. package/src/pages/{Installer → Cooperative/ListOfMeets}/index.ts +0 -0
  315. package/src/{widgets/Cooperative/Agenda/ListOfQuestions → pages/Cooperative/MeetDetails}/index.ts +0 -0
  316. package/src/{widgets/Cooperative/Contacts → pages/Cooperative/MemberBranchList}/index.ts +0 -0
  317. package/src/pages/Cooperative/{ListOfBranches/ui/ListOfBranchesPage.vue → MemberBranchList/ui/MemberBranchListPage.vue} +0 -0
  318. package/src/pages/{ExtStore → ExtensionStore}/BaseRoute/ExtensionStoreBase.vue +0 -0
  319. package/src/pages/{ExtStore → ExtensionStore}/BaseRoute/index.ts +0 -0
  320. package/src/pages/{ExtStore → ExtensionStore}/ExtensionPage/index.ts +0 -0
  321. package/src/pages/{ExtStore → ExtensionStore}/ExtensionsShowcase/index.ts +0 -0
  322. package/src/pages/{ExtStore → ExtensionStore}/InstalledExtensions/index.ts +0 -0
  323. package/src/pages/{_layouts/permissionDenied.vue → PermissionDenied/PermissionDenied.vue} +0 -0
  324. package/src/pages/Union/{Connection/ConnectionPage.vue → ConnectionAgreement/ConnectionAgreementPage.vue} +0 -0
  325. package/src/{widgets/Cooperative/Contributions → pages/Union/InstallCooperative}/index.ts +0 -0
  326. package/src/pages/{Installer → Union/InstallCooperative}/ui/InstallCooperativePage.vue +0 -0
  327. package/src/pages/{Installer → Union/InstallCooperative}/ui/index.ts +0 -0
  328. package/src/{widgets/Cooperative/Participants/ListOfParticipants → pages/User/PaymentsPage}/index.ts +0 -0
  329. package/src/{components/history → widgets/AccountActions}/AccountLink.vue +0 -0
  330. package/src/{components/history → widgets/AccountActions}/ActionCell.vue +0 -0
  331. package/src/{components/history → widgets/AccountActions}/DataCell.vue +0 -0
  332. package/src/widgets/{IndividualCard → Cooperative/Payments/ListOfPayments}/index.ts +0 -0
  333. package/src/widgets/{ExtStore/ExtensionCard → ExtensionCard}/index.ts +0 -0
  334. package/src/widgets/{Request → Marketplace}/CreateChildOrderCard/CreateChildOrderCard.vue +0 -0
  335. package/src/widgets/{Request → Marketplace}/CreateChildOrderCard/index.ts +0 -0
  336. package/src/widgets/{Request → Marketplace}/RequestCard/RequestCard.vue +0 -0
  337. package/src/widgets/{Request → Marketplace}/RequestCard/index.ts +0 -0
  338. package/src/{entities/Menu → widgets/Marketplace/SupplyOrderRequestCard}/index.ts +1 -1
  339. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/model/index.ts +0 -0
  340. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/model/types.ts +0 -0
  341. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Base/index.ts +0 -0
  342. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/EightStep.vue +0 -0
  343. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/FifthStep.vue +0 -0
  344. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/FirstStep.vue +0 -0
  345. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/FourthStep.vue +0 -0
  346. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/SecondStep.vue +0 -0
  347. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/SeventhStep.vue +0 -0
  348. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/SixthStep.vue +0 -0
  349. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/ThirdStep.vue +0 -0
  350. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/index.ts +0 -0
  351. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/index.ts +0 -0
  352. /package/src/widgets/{OrganizationCard → Meets/MeetInfoCard}/index.ts +0 -0
  353. /package/src/widgets/{Union/ListOfCooperatives → Meets/MeetsTable}/index.ts +0 -0
  354. /package/src/widgets/{Agreementer/RequireAgreements → RequireAgreements}/ui/RequireAgreements.vue +0 -0
  355. /package/src/widgets/{Agreementer/RequireAgreements → RequireAgreements}/ui/index.ts +0 -0
@@ -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
+ }
@@ -0,0 +1,46 @@
1
+ <template lang="pug">
2
+ div
3
+ q-btn(
4
+ v-if="showButton"
5
+ color="primary"
6
+ icon="fa-solid fa-rotate"
7
+ label="Перезапустить собрание"
8
+ @click="showRestartDialog = true"
9
+ :loading="isProcessing"
10
+ )
11
+
12
+ RestartMeetForm(
13
+ v-model="showRestartDialog"
14
+ :meet="meet"
15
+ :loading="isProcessing"
16
+ @restart="handleRestart"
17
+ )
18
+ </template>
19
+
20
+ <script setup lang="ts">
21
+ import { ref } from 'vue'
22
+ import { RestartMeetForm } from '.';
23
+ import type { IMeet } from 'src/entities/Meet'
24
+
25
+ defineProps<{
26
+ meet: IMeet
27
+ showButton?: boolean
28
+ }>()
29
+
30
+ const emit = defineEmits<{
31
+ (e: 'restart', data: any): void
32
+ }>()
33
+
34
+ const showRestartDialog = ref(false)
35
+ const isProcessing = ref(false)
36
+
37
+ const handleRestart = async (data: any) => {
38
+ isProcessing.value = true
39
+ try {
40
+ await emit('restart', data)
41
+ showRestartDialog.value = false
42
+ } finally {
43
+ isProcessing.value = false
44
+ }
45
+ }
46
+ </script>
@@ -0,0 +1,92 @@
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
+ q-card-section
9
+ q-form(@submit="handleSubmit")
10
+ div.text-subtitle1.q-mb-sm Выберите новые даты для собрания
11
+ q-input(
12
+ v-model="formData.new_open_at"
13
+ label="Новая дата и время открытия, UTC"
14
+ type="datetime-local"
15
+ :rules="[val => !!val || 'Обязательное поле']"
16
+ dense
17
+ class="q-mb-md"
18
+ )
19
+ q-input(
20
+ v-model="formData.new_close_at"
21
+ label="Новая дата и время закрытия, UTC"
22
+ type="datetime-local"
23
+ :rules="[val => !!val || 'Обязательное поле']"
24
+ dense
25
+ class="q-mb-md"
26
+ )
27
+
28
+ div.text-subtitle1.q-mb-sm При перезапуске собрания будут использованы существующие пункты повестки:
29
+
30
+ div.q-pa-sm.q-my-sm.bg-grey-2.rounded-borders(v-if="meet?.processing?.questions?.length")
31
+ div.q-mb-md(v-for="(question, index) in meet.processing.questions" :key="index")
32
+ div.text-weight-bold {{ question.title }}
33
+ div.text-caption {{ question.context }}
34
+
35
+ div.q-pa-sm.q-my-sm.bg-red-1.text-red-8.rounded-borders(v-else)
36
+ div.text-center Вопросы повестки не найдены
37
+
38
+ q-card-actions(align="right")
39
+ q-btn(flat label="Отмена" v-close-popup @click="$emit('update:modelValue', false)" :disable="loading")
40
+ q-btn(
41
+ color="primary"
42
+ label="Перезапустить"
43
+ type="submit"
44
+ @click="handleSubmit"
45
+ :loading="loading"
46
+ :disable="!meet?.processing?.questions?.length"
47
+ )
48
+ </template>
49
+
50
+ <script setup lang="ts">
51
+ import { reactive, watch } from 'vue'
52
+ import type { IMeet } from 'src/entities/Meet'
53
+
54
+ const props = defineProps<{
55
+ modelValue: boolean,
56
+ meet: IMeet | null,
57
+ loading?: boolean
58
+ }>()
59
+
60
+ const emit = defineEmits<{
61
+ (e: 'update:modelValue', value: boolean): void
62
+ (e: 'restart', data: any): void
63
+ }>()
64
+
65
+ // Форма для перезапуска собрания
66
+ const formData = reactive({
67
+ new_open_at: '',
68
+ new_close_at: ''
69
+ })
70
+
71
+ // Сброс формы при открытии диалога
72
+ watch(() => props.modelValue, (newVal) => {
73
+ if (newVal) {
74
+ formData.new_open_at = ''
75
+ formData.new_close_at = ''
76
+ }
77
+ })
78
+
79
+ const handleSubmit = () => {
80
+ if (!props.meet) return
81
+
82
+ // Проверяем наличие вопросов повестки
83
+ if (!props.meet.processing?.questions || props.meet.processing.questions.length === 0) {
84
+ return
85
+ }
86
+
87
+ emit('restart', {
88
+ ...formData,
89
+ hash: props.meet.hash
90
+ })
91
+ }
92
+ </script>
@@ -0,0 +1,2 @@
1
+ export { default as RestartMeetForm } from './RestartMeetForm.vue'
2
+ export { default as RestartMeet } from './RestartMeet.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 IVoteOnMeetInput = Mutations.Meet.VoteOnAnnualGeneralMeet.IInput['data'];
5
+ export type IVoteOnMeetResult = Mutations.Meet.VoteOnAnnualGeneralMeet.IOutput[typeof Mutations.Meet.VoteOnAnnualGeneralMeet.name];
6
+
7
+ export async function voteOnMeet(data: IVoteOnMeetInput): Promise<IVoteOnMeetResult> {
8
+ const { [Mutations.Meet.VoteOnAnnualGeneralMeet.name]: result } = await client.Mutation(
9
+ Mutations.Meet.VoteOnAnnualGeneralMeet.mutation,
10
+ {
11
+ variables: {
12
+ data
13
+ }
14
+ }
15
+ );
16
+
17
+ return result;
18
+ }
@@ -0,0 +1,20 @@
1
+ import { client } from 'src/shared/api/client';
2
+ import { Mutations } from '@coopenomics/sdk';
3
+ import type { IPayment } from 'src/entities/Payment/model';
4
+
5
+ type ISetPaymentStatusInput = Mutations.Payments.SetPaymentStatus.IInput['data']
6
+
7
+ async function setPaymentStatus(data: ISetPaymentStatusInput): Promise<IPayment> {
8
+ const { [Mutations.Payments.SetPaymentStatus.name]: result } = await client.Mutation(
9
+ Mutations.Payments.SetPaymentStatus.mutation,
10
+ {
11
+ variables: {
12
+ data
13
+ }
14
+ }
15
+ );
16
+
17
+ return result;
18
+ }
19
+
20
+ export const api = { setPaymentStatus };
@@ -0,0 +1 @@
1
+ export * from './model'
@@ -0,0 +1,30 @@
1
+ import { usePaymentStore } from 'src/entities/Payment/model'
2
+ import { api } from '../api'
3
+ import { Zeus } from '@coopenomics/sdk'
4
+
5
+ export const useSetStatus = () => {
6
+ const paymentStore = usePaymentStore()
7
+
8
+ const setPaidStatus = async (id: string) => {
9
+ await api.setPaymentStatus({ id, status: Zeus.PaymentStatus.PAID })
10
+ setTimeout(async () => {
11
+ await paymentStore.updatePayments({ id })
12
+ }, 1000)
13
+ }
14
+
15
+ const setRefundedStatus = async (id: string) => {
16
+ await api.setPaymentStatus({ id, status: Zeus.PaymentStatus.REFUNDED })
17
+ setTimeout(async () => {
18
+ await paymentStore.updatePayments({ id })
19
+ }, 1000)
20
+ }
21
+
22
+ const setCompletedStatus = async (id: string) => {
23
+ await api.setPaymentStatus({ id, status: Zeus.PaymentStatus.COMPLETED })
24
+ setTimeout(async () => {
25
+ await paymentStore.updatePayments({ id })
26
+ }, 1000)
27
+ }
28
+
29
+ return { setPaidStatus, setRefundedStatus, setCompletedStatus }
30
+ }