@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
@@ -1,156 +1,113 @@
1
1
  <template lang="pug">
2
-
3
2
  div.row.justify-center
4
3
  div.col-12
5
- q-table(
6
- ref="tableRef"
7
- flat
8
- :rows="documents"
9
- :columns="columns"
10
- :table-colspan="9"
11
- :pagination="pagination"
12
- virtual-scroll
13
- :virtual-scroll-item-size="48"
14
- :rows-per-page-options="[10]"
15
- :loading='onLoading'
16
- :no-data-label="'документы не найдены'"
17
- ).full-height
4
+ DocumentsTable(
5
+ :documents="documentStore.documents"
6
+ :loading="documentStore.loading"
7
+ @toggle-expand="toggleExpand"
8
+ @load="loadMoreDocuments"
9
+ )
18
10
  template(#top v-if="showFilter")
19
- q-btn-toggle(
20
- size="sm"
21
- v-model="documentType"
22
- spread
23
- toggle-color="teal"
24
- color="white"
25
- text-color="black"
26
- :options="[{label: 'Все входящие', value: 'newsubmitted'}, {label: 'Только утверждённые', value: 'newresolved'}]"
27
- ).full-width
28
-
29
- template(#header="props")
30
-
31
- q-tr(:props="props")
32
- q-th(auto-width)
33
-
34
- q-th(
35
- v-for="col in props.cols"
36
- :key="col.name"
37
- :props="props"
38
- ) {{ col.label }}
39
-
40
- template(#body="props")
41
- q-tr(:key="`m_${props.row?.statement?.action?.global_sequence}`" :props="props")
42
- q-td(auto-width)
43
- q-btn(v-if="!expand" size="sm" color="primary" round dense :icon="expanded.get(props.row?.statement?.action?.global_sequence) ? 'remove' : 'add'" @click="toggleExpand(props.row?.statement?.action?.global_sequence)")
44
-
45
- q-td {{ props.row.statement?.action?.data?.document.hash.substring(0, 10) }}
46
-
47
- q-td {{ props.row.statement?.document?.full_title }}
48
-
49
- q-tr(v-if="expanded.get(props.row?.statement?.action?.global_sequence) || expand" :key="`e_${props.row?.statement?.action?.global_sequence}`" :props="props" class="q-virtual-scroll--with-prev")
50
- q-td(colspan="100%")
51
- ComplexDocument(:documents="props.row")
52
-
53
-
11
+ div.full-width
12
+ q-btn-toggle.full-width(
13
+ size="sm"
14
+ :model-value="typeForToggle"
15
+ @update:model-value="onTypeChange"
16
+ spread
17
+ toggle-color="teal"
18
+ color="white"
19
+ text-color="black"
20
+ :options="[{label: 'Все входящие', value: 'newsubmitted'}, {label: 'Только утверждённые', value: 'newresolved'}]"
21
+ )
54
22
  </template>
55
23
 
56
24
  <script setup lang="ts">
57
- import { onMounted, ref, computed, reactive, watch } from 'vue'
58
- import { Notify } from 'quasar'
59
- import { sendGET } from 'src/shared/api';
60
- import { ComplexDocument } from 'src/shared/ui/ComplexDocument';
61
- import type { IComplexDocument, IGetDocuments } from '@coopenomics/controller';
62
-
63
- const documents = ref<IComplexDocument[]>([])
64
- const onLoading = ref(false)
25
+ import { onMounted, ref, onBeforeUnmount } from 'vue'
26
+ import { DocumentModel } from 'src/entities/Document'
27
+ import { DocumentsTable } from '../ui'
28
+ import { FailAlert } from 'src/shared/api'
29
+ import type { DocumentType } from 'src/entities/Document/model/types'
65
30
 
66
31
  const props = defineProps({
32
+ username: {
33
+ type: String,
34
+ required: true
35
+ },
67
36
  filter: {
68
37
  type: Object,
69
- required: true,
70
- validator: (value: any) => {
71
- // Проверка на наличие поля 'receiver' и типа string
72
- return typeof value.receiver === 'string'
73
- }
74
- },
75
- expand: {
76
- type: Boolean,
77
38
  required: false,
78
- default: false
39
+ default: () => ({})
79
40
  },
80
41
  showFilter: {
81
42
  type: Boolean,
82
43
  required: false,
83
44
  default: false,
84
45
  },
85
- documentType: {
86
- type: String,
46
+ initialDocumentType: {
47
+ type: String as () => DocumentType,
87
48
  required: false,
49
+ default: 'newsubmitted',
88
50
  }
89
51
  })
90
52
 
91
- const receiver = computed(() => props.filter.receiver)
92
- const documentType = ref(props.documentType || 'newsubmitted')
93
-
94
- const loadDocuments = async () => {
95
- try {
96
- onLoading.value = true
53
+ const emit = defineEmits(['toggle-expand'])
97
54
 
98
- const data: IGetDocuments = {
99
- filter: {
100
- receiver: receiver.value,
101
- ...props.filter
102
- },
103
- type: documentType.value as 'newresolved' | 'newsubmitted'
104
- }
55
+ // Получаем store документов
56
+ const documentStore = DocumentModel.useDocumentStore()
105
57
 
106
- documents.value = (await sendGET('/v1/documents/get-documents', {
107
- ...data
108
- })).results as IComplexDocument[]
58
+ // Переменная для отслеживания типа в интерфейсе
59
+ const typeForToggle = ref<DocumentType>(props.initialDocumentType)
109
60
 
110
- onLoading.value = false
111
- } catch (e: any) {
112
- onLoading.value = false
113
- console.log(e)
114
- Notify.create({
115
- message: e.message,
116
- type: 'negative',
117
- })
61
+ // Обработчик изменения типа документов
62
+ async function onTypeChange(newType: DocumentType) {
63
+ if (newType === 'newresolved' || newType === 'newsubmitted') {
64
+ typeForToggle.value = newType
65
+ try {
66
+ await documentStore.changeDocumentType(newType, props.username, props.filter)
67
+ } catch (e) {
68
+ FailAlert(e)
69
+ }
118
70
  }
119
71
  }
120
72
 
121
- onMounted(() => {
122
- loadDocuments()
123
- })
124
-
125
- watch(documentType, (newValue, oldValue) => {
126
- if (newValue != oldValue) {
127
- documents.value = []
128
- loadDocuments()
129
- }
130
- })
131
-
132
- // const getHumanActionName = (action) => {
133
- // if (action == 'joincoop') {
134
- // return 'Заявление на вступление'
135
- // }
136
- // }
73
+ // Функция для загрузки следующей страницы документов
74
+ async function loadMoreDocuments() {
75
+ try {
76
+ // Проверяем, не загружаются ли уже документы
77
+ if (documentStore.loading) {
78
+ return
79
+ }
137
80
 
138
- const columns = [
139
- { name: 'id', align: 'left', label: 'id', field: 'id', sortable: true },
81
+ const nextPage = documentStore.pagination.currentPage + 1
140
82
 
141
- { name: 'action', align: 'left', label: 'Документ', field: 'action', sortable: true },
142
- // { name: 'timestamp', align: 'left', label: 'Дата', field: 'timestamp', sortable: true },
143
- // { name: 'username', align: 'left', label: 'Аккаунт', field: 'username', sortable: true },
144
- ] as any
83
+ if (nextPage <= documentStore.pagination.totalPages)
84
+ await documentStore.changePage(nextPage, props.username, props.filter)
145
85
 
146
- const expanded = reactive(new Map()) // Используем Map для отслеживания состояния развертывания каждой записи
86
+ } catch (e) {
87
+ FailAlert(e)
88
+ }
89
+ }
147
90
 
148
- // Функция для переключения состояния развертывания
149
- const toggleExpand = (id: any) => {
150
- expanded.set(id, !expanded.get(id))
91
+ // Функция для переключения состояния раскрытия
92
+ function toggleExpand(document: any) {
93
+ emit('toggle-expand', document)
151
94
  }
152
95
 
96
+ // Периодическое обновление данных
97
+ let interval: number | null = null
153
98
 
154
- const tableRef = ref(null)
155
- const pagination = ref({ rowsPerPage: 10 })
99
+ // Загрузка документов при монтировании
100
+ onMounted(() => {
101
+ // Начальная загрузка документов
102
+ documentStore.resetDocuments()
103
+ documentStore.changeDocumentType(typeForToggle.value, props.username, props.filter)
104
+ .catch(e => FailAlert(e))
105
+ })
106
+
107
+ // Очистка таймера при размонтировании компонента
108
+ onBeforeUnmount(() => {
109
+ if (interval !== null) {
110
+ window.clearInterval(interval)
111
+ }
112
+ })
156
113
  </script>
@@ -1 +1,3 @@
1
- export {default as ListOfDocumentsWidget} from './ListOfDocumentsWidget.vue'
1
+ export { default as DocumentCard } from './DocumentCard.vue'
2
+ export { default as ListOfDocumentsWidget } from './ListOfDocumentsWidget.vue'
3
+ export { default as DocumentsTable } from './DocumentsTable.vue'
@@ -1,131 +1,156 @@
1
1
  <template lang="pug">
2
2
  div.row.justify-center
3
3
  div.col-12
4
- q-table(
5
- v-if="orders && orders.results"
6
- ref="tableRef"
7
- class="my-sticky-dynamic"
8
- flat
9
- :rows="orders.results"
10
- row-key="id"
11
- :columns="columns"
12
- :table-colspan="9"
13
- :loading="onLoading"
14
- :no-data-label="'ордера не найдены'"
15
- virtual-scroll
16
- @virtual-scroll="onScroll"
17
- :virtual-scroll-item-size="48"
18
- :virtual-scroll-sticky-size-start="48"
19
- :rows-per-page-options="[0]"
20
- :pagination="pagination"
21
- )
22
- template(#header="props")
23
- q-tr(:props="props")
24
- q-th(auto-width)
25
- q-th(
26
- v-for="col in props.cols"
27
- :key="col.name"
28
- :props="props"
29
- @click="onSort(col)"
30
- ) {{ col.label }}
31
-
32
- template(#body="props")
33
- q-tr(:key="`m_${props.row.order_num}`" :props="props")
34
- q-td(auto-width)
35
- q-btn(size="sm" color="primary" round dense :icon="expanded.get(props.row.order_num) ? 'remove' : 'add'" @click="toggleExpand(props.row.order_num)")
36
- q-td {{props.row.order_num}}
37
- q-td {{ props.row.quantity }}
38
- q-td
39
- q-badge(v-if="props.row.type ==='registration'") регистрационный
40
- q-badge(v-if="props.row.type ==='deposit'") паевый
41
-
42
- q-td {{getNameFromUserData(props.row.user?.private_data)}}
43
-
44
- q-td
45
- q-badge(v-if="props.row.status ==='completed'" color="teal") обработан
46
- q-badge(v-if="props.row.status ==='pending'" color="orange") ожидание оплаты
47
- q-badge(v-if="props.row.status ==='failed'" color="red") ошибка
48
- q-badge(v-if="props.row.status ==='paid'" color="orange") оплачен
49
- q-badge(v-if="props.row.status ==='refunded'" color="grey") отменён
50
- q-badge(v-if="props.row.status ==='expired'" color="grey") истёк
51
- q-td
52
- q-btn-dropdown(size="sm" label="действия" color="primary" v-model="dropdowns[props.row.order_num]")
53
- q-list(dense)
54
- SetOrderPaidStatusButton(:id="props.row.id" @close="closeDropdown(props.row.order_num)")
55
- SetOrderRefundedStatusButton(:id="props.row.id" @close="closeDropdown(props.row.order_num)")
56
- //- SetOrderCompletedStatusButton(:id="props.row.id" @close="closeDropdown(props.row.order_num)")
57
-
58
- q-tr(v-if="expanded.get(props.row.order_num)" :key="`e_${props.row.order_num}`" :props="props" class="q-virtual-scroll--with-prev")
59
- q-td(colspan="100%")
60
- div(v-if="props.row.status=='failed'")
61
- p Причина ошибки: {{props.row.message}}
62
-
4
+ div.scroll-area(style="height: 90vh; overflow-y: auto;")
5
+ q-table(
6
+ v-if="payments && payments.items"
7
+ ref="tableRef"
8
+ flat
9
+ :grid="isMobile"
10
+ :rows="payments.items"
11
+ row-key="id"
12
+ :columns="columns"
13
+ :table-colspan="9"
14
+ :loading="onLoading"
15
+ :no-data-label="'платежи не найдены'"
16
+ virtual-scroll
17
+ @virtual-scroll="onScroll"
18
+ :virtual-scroll-target="'.scroll-area'"
19
+ :virtual-scroll-item-size="48"
20
+ :virtual-scroll-sticky-size-start="48"
21
+ :rows-per-page-options="[0]"
22
+ :pagination="pagination"
23
+ class="q-mb-md"
24
+ )
25
+ template(#item="props")
26
+ OrderCard(
27
+ :order="props.row"
28
+ :expanded="expanded.get(props.row.id)"
29
+ :hideActions="hideActions"
30
+ @toggle-expand="toggleExpand(props.row.id)"
31
+ )
32
+
33
+ template(#header="props")
34
+ q-tr(:props="props")
35
+ q-th(auto-width)
36
+ q-th(
37
+ v-for="col in props.cols"
38
+ :key="col.name"
39
+ :props="props"
40
+ @click="onSort(col)"
41
+ ) {{ col.label }}
42
+
43
+ template(#body="props")
44
+ q-tr(:key="`m_${props.row.id}`" :props="props")
45
+ q-td(auto-width)
46
+ q-btn(
47
+ size="sm"
48
+ color="primary"
49
+ round
50
+ dense
51
+ :icon="expanded.get(props.row.id) ? 'remove' : 'add'"
52
+ @click="toggleExpand(props.row.id)"
53
+ )
54
+ q-td {{props.row.id}}
55
+ q-td {{ props.row.amount }} {{props.row.symbol}}
56
+ q-td
57
+ q-badge(v-if="props.row.details.data.includes('registration')") регистрационный
58
+ q-badge(v-else) паевой
59
+
60
+ q-td(style="max-width: 150px; word-wrap: break-word; white-space: normal;") {{props.row.username}}
61
+
62
+
63
+ q-td
64
+ q-badge(v-if="props.row.status ==='COMPLETED'" color="teal") обработан
65
+ q-badge(v-if="props.row.status ==='PENDING'" color="orange") ожидание оплаты
66
+ q-badge(v-if="props.row.status ==='FAILED'" color="red") ошибка
67
+ q-badge(v-if="props.row.status ==='PAID'" color="orange") оплачен
68
+ q-badge(v-if="props.row.status ==='REFUNDED'" color="grey") отменён
69
+ q-badge(v-if="props.row.status ==='EXPIRED'" color="grey") истёк
70
+ q-td
71
+ SetOrderPaidStatusButton(
72
+ v-if="!hideActions && ['EXPIRED', 'PENDING', 'FAILED'].includes(props.row.status)"
73
+ :id="props.row.id"
74
+ )
75
+ span(v-else-if="!hideActions").text-grey нет доступных действий
76
+
77
+ q-tr(v-if="expanded.get(props.row.id)" :key="`e_${props.row.id}`" :props="props" class="q-virtual-scroll--with-prev")
78
+ q-td(colspan="100%")
79
+ div(v-if="props.row.status=='FAILED'")
80
+ span Причина ошибки: {{props.row.message ?? 'нет дополнительной информации'}}
81
+ div(v-else)
82
+ span нет дополнительной информации
63
83
  </template>
64
84
  <script setup lang="ts">
65
85
  import { onMounted, ref, computed, reactive, nextTick } from 'vue'
66
86
  import { Notify } from 'quasar'
67
- import { getNameFromUserData } from 'src/shared/lib/utils/getNameFromUserData';
68
- // import { formatToHumanDate } from 'src/shared/lib/utils/dates/formatToHumanDate';
69
- import { useOrderStore } from 'src/entities/Order';
70
- import { SetOrderPaidStatusButton } from 'src/features/Order/SetStatus/ui/SetOrderPaidStatusButton';
71
- import { SetOrderRefundedStatusButton } from 'src/features/Order/SetStatus/ui/SetOrderRefundedStatusButton';
72
- // import { SetOrderCompletedStatusButton } from 'src/features/Cooperative/Orders/SetStatus/ui/SetOrderCompletedStatusButton';
73
-
74
- const orderStore = useOrderStore()
75
- const orders = computed(() => orderStore.orders)
76
- console.log('orders: ', orders.value)
87
+ import { usePaymentStore } from 'src/entities/Payment/model';
88
+ import { SetOrderPaidStatusButton } from 'src/features/Payment/SetStatus/ui/SetOrderPaidStatusButton';
89
+ import OrderCard from './OrderCard.vue';
90
+ import { useWindowSize } from 'src/shared/hooks';
91
+
92
+ const paymentStore = usePaymentStore()
93
+ const payments = computed(() => paymentStore.payments)
77
94
  const onLoading = ref(false)
78
95
  const nextPage = ref(1)
79
96
  const lastPage = ref(1);
80
-
81
- const dropdowns = reactive({})
97
+ const { isMobile } = useWindowSize()
82
98
 
83
99
  const sortState = reactive({
84
100
  sortBy: '',
85
101
  sortDir: ''
86
102
  })
87
103
 
88
- const sortedQuery = computed(() => {
89
- if (sortState.sortBy && sortState.sortDir)
90
- return `${sortState.sortBy}:${sortState.sortDir}`
91
- else return ''
92
- })
93
-
94
104
  const onSort = (col) => {
95
-
96
105
  if (!col.sortable) return
97
106
 
98
- // Меняем направление сортировки, если кликнули на тот же столбец
99
- if (sortState.sortBy === col.name) {
100
- sortState.sortDir = sortState.sortDir === 'asc' ? 'desc' : 'asc'
101
- } else {
102
- // Если сортируем новый столбец, сбрасываем на 'asc'
103
- sortState.sortBy = col.name
104
- sortState.sortDir = 'asc'
105
- }
106
- orderStore.clear()
107
- nextPage.value = 1
108
- lastPage.value = 1
109
- loadOrders(1) // Перезагружаем с новыми параметрами сортировки
110
- }
111
-
112
- const closeDropdown = (id: string) => {
113
- dropdowns[id] = false // Закрываем дропдаун для конкретной строки
107
+ // Меняем направление сортировки, если кликнули на тот же столбец
108
+ if (sortState.sortBy === col.name) {
109
+ sortState.sortDir = sortState.sortDir === 'asc' ? 'desc' : 'asc'
110
+ } else {
111
+ // Если сортируем новый столбец, сбрасываем на 'asc'
112
+ sortState.sortBy = col.name
113
+ sortState.sortDir = 'asc'
114
+ }
115
+ paymentStore.clear()
116
+ nextPage.value = 1
117
+ lastPage.value = 1
118
+ loadPayments(1) // Перезагружаем с новыми параметрами сортировки
114
119
  }
115
120
 
116
121
  const props = defineProps({
117
- receiver: {
122
+ username: {
118
123
  type: String,
119
124
  required: false,
120
125
  default: null
121
126
  },
127
+ hideActions: {
128
+ type: Boolean,
129
+ default: false
130
+ }
122
131
  })
123
132
 
124
- const loadOrders = async (page = 1) => {
133
+ const loadPayments = async (page = 1) => {
125
134
  try {
126
135
  onLoading.value = true
127
- await orderStore.loadCoopOrders({username: props.receiver, page, limit: 25, sortBy: sortedQuery.value})
128
- lastPage.value = orderStore.orders?.totalPages || 1
136
+
137
+ // Данные для фильтрации
138
+ const data = props.username ? { username: props.username } : undefined;
139
+
140
+ // Опции пагинации и сортировки
141
+ const options = {
142
+ page,
143
+ limit: 25,
144
+ sortBy: sortState.sortBy || undefined,
145
+ sortOrder: sortState.sortDir ? sortState.sortDir.toUpperCase() as 'ASC' | 'DESC' : 'ASC'
146
+ };
147
+
148
+ await paymentStore.loadPayments(data, options);
149
+
150
+ if (payments.value) {
151
+ lastPage.value = payments.value.totalPages || 1
152
+ }
153
+
129
154
  onLoading.value = false
130
155
  } catch (e: any) {
131
156
  onLoading.value = false
@@ -139,16 +164,15 @@
139
164
 
140
165
  // Функция обработки виртуального скролла
141
166
  const onScroll = ({ to, ref }) => {
142
- if(orders.value) {
143
-
144
- const lastIndex = orders.value.results.length - 1
167
+ if(payments.value) {
168
+ const lastIndex = payments.value.items.length - 1
145
169
 
146
170
  if (onLoading.value !== true && nextPage.value < lastPage.value && to === lastIndex) {
147
171
  onLoading.value = true
148
172
 
149
173
  setTimeout(() => {
150
174
  nextPage.value++
151
- loadOrders(nextPage.value) // Загружаем следующую страницу
175
+ loadPayments(nextPage.value) // Загружаем следующую страницу
152
176
 
153
177
  nextTick(() => {
154
178
  ref.refresh() // Обновляем виртуальный скролл после загрузки
@@ -160,17 +184,18 @@
160
184
  }
161
185
 
162
186
  onMounted(() => {
163
- orderStore.clear()
164
- loadOrders()
187
+ paymentStore.clear()
188
+ loadPayments()
165
189
  })
166
190
 
167
191
 
168
- const columns = [
169
- { name: 'order_num', align: 'left', label: '№', field: 'order_num', sortable: true },
170
- { name: 'quantity', align: 'left', label: 'Сумма', field: '', sortable: false },
171
- { name: 'type', align: 'left', label: 'Тип платежа', field: 'type', sortable: true },
172
- { name: 'name', align: 'left', label: 'От кого', field: '', sortable: false },
173
- { name: 'status', align: 'left', label: 'Статус', field: '', sortable: true },
192
+ const columns: any[] = [
193
+ { name: 'id', align: 'left', label: '№', field: 'id', sortable: true },
194
+ { name: 'amount', align: 'left', label: 'Сумма', field: 'amount', sortable: true },
195
+ { name: 'type', align: 'left', label: 'Тип платежа', field: '', sortable: false },
196
+ { name: 'username', align: 'left', label: 'От кого', field: 'username', sortable: true },
197
+ { name: 'status', align: 'left', label: 'Статус', field: 'status', sortable: true },
198
+ { name: 'actions', align: 'left', label: '', field: '', sortable: false, hide: props.hideActions },
174
199
  ] as any
175
200
 
176
201
  const expanded = reactive(new Map()) // Используем Map для отслеживания состояния развертывания каждой записи
@@ -184,24 +209,6 @@
184
209
  const pagination = ref({ rowsPerPage: 0 })
185
210
  </script>
186
211
 
187
- <style lang="sass">
188
- .my-sticky-dynamic
189
- /* height or max-height is important */
190
- height: 100vh
191
-
192
- /* this will be the loading indicator */
193
- thead tr:last-child th
194
- /* height of all previous header rows */
195
- top: 48px
196
- thead tr:first-child th
197
- top: 0
198
-
199
- /* prevent scrolling behind sticky top row on focus */
200
- tbody
201
- /* height of all previous header rows */
202
- scroll-margin-top: 48px
203
-
204
- </style>
205
212
  <style>
206
213
  .q-list--dense > .q-item, .q-item--dense {
207
214
  padding: 0px !important;
@@ -0,0 +1,74 @@
1
+ <template lang="pug">
2
+ div.q-pa-xs.col-xs-12.col-sm-12.col-md-12.q-mt-md
3
+ q-card(bordered flat)
4
+ q-card-section.q-py-xs
5
+ div.text-subtitle2 № {{ order.order_num }}
6
+ div.text-caption Сумма: {{ order.quantity }}
7
+
8
+ q-separator
9
+
10
+ q-card-section.q-py-xs
11
+ div.row.items-center
12
+ div.col-6 Тип платежа:
13
+ div.col-6.text-right
14
+ q-badge(v-if="order.type ==='registration'") регистрационный
15
+ q-badge(v-if="order.type ==='deposit'") паевой
16
+
17
+ div.row.items-center.q-mt-sm
18
+ div.col-6 От кого:
19
+ div.col-6.text-right {{ getNameFromUserData(order.user?.private_data) }}
20
+
21
+ div.row.items-center.q-mt-sm
22
+ div.col-6 Статус:
23
+ div.col-6.text-right
24
+ q-badge(v-if="order.status ==='completed'" color="teal") обработан
25
+ q-badge(v-if="order.status ==='pending'" color="orange") ожидание оплаты
26
+ q-badge(v-if="order.status ==='failed'" color="red") ошибка
27
+ q-badge(v-if="order.status ==='paid'" color="orange") оплачен
28
+ q-badge(v-if="order.status ==='refunded'" color="grey") отменён
29
+ q-badge(v-if="order.status ==='expired'" color="grey") истёк
30
+
31
+ q-card-actions(align="right")
32
+ q-btn(
33
+ v-if="order.message"
34
+ size="sm"
35
+ flat
36
+ icon="expand_more"
37
+ @click="$emit('toggle-expand')"
38
+ )
39
+ | {{ expanded ? 'Скрыть' : 'Подробнее' }}
40
+
41
+ q-btn-dropdown(v-if="!hideActions" size="sm" label="действия" color="primary")
42
+ q-list(dense)
43
+ SetOrderPaidStatusButton(:id="order.id" @close="$emit('close-dropdown')")
44
+ SetOrderRefundedStatusButton(:id="order.id" @close="$emit('close-dropdown')")
45
+
46
+ q-slide-transition
47
+ div(v-show="expanded && order.message")
48
+ q-separator
49
+ q-card-section
50
+ p Причина ошибки: {{order.message}}
51
+ </template>
52
+
53
+ <script setup lang="ts">
54
+ import { getNameFromUserData } from 'src/shared/lib/utils/getNameFromUserData';
55
+ import { SetOrderPaidStatusButton } from 'src/features/Payment/SetStatus/ui/SetOrderPaidStatusButton';
56
+ import { SetOrderRefundedStatusButton } from 'src/features/Payment/SetStatus/ui/SetOrderRefundedStatusButton';
57
+
58
+ defineProps({
59
+ order: {
60
+ type: Object,
61
+ required: true
62
+ },
63
+ expanded: {
64
+ type: Boolean,
65
+ default: false
66
+ },
67
+ hideActions: {
68
+ type: Boolean,
69
+ default: false
70
+ }
71
+ })
72
+
73
+ defineEmits(['toggle-expand', 'close-dropdown'])
74
+ </script>
@@ -1 +1,2 @@
1
- export {default as ListOfOrdersWidget} from './ListOfOrdersWidget.vue'
1
+ export { default as OrderCard } from './OrderCard.vue'
2
+ export { default as ListOfOrdersWidget } from './ListOfOrdersWidget.vue'