@coopenomics/desktop 2.2.5 → 2.2.6

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 (78) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/extensions/powerup/boot.ts +1 -1
  3. package/package.json +6 -6
  4. package/src/app/App.vue +4 -2
  5. package/src/app/providers/card/store.ts +6 -3
  6. package/src/boot/branch-selector.ts +0 -2
  7. package/src/boot/navigation-guards.ts +5 -7
  8. package/src/components/menu/footerMobileMenu.vue +4 -2
  9. package/src/components/soviet/staff.vue +9 -7
  10. package/src/desktops/User/model/index.ts +94 -87
  11. package/src/entities/Request/api/index.ts +19 -19
  12. package/src/entities/Request/model/stores.ts +1 -0
  13. package/src/entities/User/model/entity.ts +1 -0
  14. package/src/features/Agreementer/GenerateAgreement/ui/AgreementReader.vue +4 -2
  15. package/src/features/Agreementer/SignAgreementDialog/model/index.ts +4 -3
  16. package/src/features/Agreementer/SignAgreementDialog/ui/SignAgreementDialog.vue +4 -2
  17. package/src/features/Branch/CreateBranch/model/index.ts +4 -3
  18. package/src/features/Branch/EditBranch/model/index.ts +3 -2
  19. package/src/features/Decision/AuthorizeAndExecDecision/model/index.ts +6 -6
  20. package/src/features/Decision/VoteForDecision/model/index.ts +4 -2
  21. package/src/features/Installer/ui/RequestKeyForm/RequestKeyForm.vue +4 -2
  22. package/src/features/PaymentMethod/AddPaymentMethod/model/index.ts +4 -6
  23. package/src/features/PaymentMethod/DeletePaymentMethod/model/index.ts +3 -2
  24. package/src/features/Request/AcceptRequest/api/index.ts +20 -21
  25. package/src/features/Request/CancelRequest/api/index.ts +13 -17
  26. package/src/features/Request/CompleteOnRequest/api/index.ts +13 -17
  27. package/src/features/Request/ConfirmRecieveOnRequest/api/index.ts +17 -21
  28. package/src/features/Request/ConfirmSupplyOnRequest/api/index.ts +17 -21
  29. package/src/features/Request/CreateChildOrder/api/index.ts +27 -30
  30. package/src/features/Request/CreateParentOffer/api/index.ts +4 -14
  31. package/src/features/Request/CreateParentOffer/ui/CreateParentOfferForm/CreateParentOfferForm.vue +5 -2
  32. package/src/features/Request/DeclineRequest/api/index.ts +14 -18
  33. package/src/features/Request/DeliverOnRequest/api/index.ts +13 -17
  34. package/src/features/Request/DisputeOnRequest/api/index.ts +3 -7
  35. package/src/features/Request/ModerateRequest/api/index.ts +14 -18
  36. package/src/features/Request/ModerateRequest/ui/ModerateRequestButton.vue +4 -3
  37. package/src/features/Request/ProhibitRequest/api/index.ts +14 -18
  38. package/src/features/Request/PublishRequest/api/index.ts +13 -17
  39. package/src/features/Request/RecieveOnRequest/api/index.ts +17 -21
  40. package/src/features/Request/SupplyOnRequest/api/index.ts +3 -3
  41. package/src/features/Request/UnpublishRequest/api/index.ts +14 -17
  42. package/src/features/Request/UpdateRequest/api/index.ts +0 -4
  43. package/src/features/User/AddUser/ui/AddUserDialog/AddUserDialog.vue +4 -2
  44. package/src/features/User/CreateUser/model/index.ts +10 -8
  45. package/src/features/User/LoginUser/ui/LoginForm/LoginForm.vue +4 -2
  46. package/src/features/Wallet/DepositToWallet/ui/DepositButton/DepositButton.vue +4 -2
  47. package/src/pages/Cooperative/ListOfBranches/ui/ListOfBranchesPage.vue +4 -2
  48. package/src/pages/Documentor/ListOfDocuments/ListOfDocumentsPage.vue +4 -2
  49. package/src/pages/Marketplace/CreateParentOffer/ui/CreateParentOfferPage.vue +3 -3
  50. package/src/pages/Marketplace/MainPage/ui/MainPage.vue +13 -13
  51. package/src/pages/Marketplace/Moderation/ui/ModerationPage.vue +7 -3
  52. package/src/pages/Marketplace/OfferPage/ui/OfferPage.vue +4 -2
  53. package/src/pages/Registrator/SignUp/PayInitial.vue +4 -2
  54. package/src/pages/Registrator/SignUp/ReadStatement.vue +7 -1
  55. package/src/pages/Registrator/SignUp/SelectBranch.vue +4 -2
  56. package/src/pages/Registrator/SignUp/SignUp.vue +7 -7
  57. package/src/pages/Registrator/SignUp/WaitingRegistration.vue +4 -2
  58. package/src/pages/Union/Connection/ConnectionPage.vue +1 -1
  59. package/src/pages/_layouts/default.vue +3 -2
  60. package/src/shared/store/index.ts +16 -18
  61. package/src/shared/ui/BaseDocument/BaseDocument.vue +1 -3
  62. package/src/shared/ui/Providers/Bank/Bank.vue +54 -2
  63. package/src/widgets/Agreementer/RequireAgreements/ui/RequireAgreements.vue +5 -3
  64. package/src/widgets/Cooperative/Agenda/ListOfQuestions/ui/ListOfQuestions.vue +11 -3
  65. package/src/widgets/Cooperative/Contacts/ui/ChangeContacts.vue +5 -3
  66. package/src/widgets/Cooperative/Contributions/ui/ChangeContributions.vue +6 -4
  67. package/src/widgets/Cooperative/Funds/ui/AccumulationFunds.vue +8 -7
  68. package/src/widgets/Cooperative/Funds/ui/AddAccumulationFund.vue +5 -3
  69. package/src/widgets/Cooperative/Funds/ui/AddExpenseFund.vue +5 -3
  70. package/src/widgets/Cooperative/Funds/ui/ExpenseFunds.vue +8 -7
  71. package/src/widgets/Cooperative/Members/ui/Members.vue +4 -2
  72. package/src/widgets/Desktop/SecondLevelMenu/SecondLevelMenu.vue +4 -2
  73. package/src/widgets/Desktop/SecondLevelMenuList/SecondLevelMenuList.vue +61 -62
  74. package/src/widgets/Desktop/WorkspaceMenu/WorkspaceMenu.vue +5 -3
  75. package/src/widgets/Request/CreateChildOrderCard/CreateChildOrderCard.vue +5 -3
  76. package/src/widgets/Request/SupplyOrderRequestCard/ui/Steps/FirstStep.vue +3 -3
  77. package/src/widgets/User/PaymentMethods/ui/PaymentMethods.vue +4 -2
  78. package/src/shared/api/wif.ts +0 -9
@@ -1,37 +1,41 @@
1
1
  <template lang="pug">
2
- q-list(
3
- v-if="routes"
4
- class="second-menu"
5
- )
6
-
7
- q-item(
8
- v-for="route in routes"
9
- :key="route.name"
10
- clickable
11
- v-ripple
12
- :active="isActive(route)"
13
- active-class="bg-gradient-dark text-white"
14
- @click="navigate(route)"
2
+ q-list(
3
+ v-if="filteredRoutes"
4
+ class="second-menu"
15
5
  )
16
6
 
17
- q-item-section
18
- q-item-label.no-select {{ route.meta.title }}
7
+ q-item(
8
+ v-for="route in filteredRoutes"
9
+ :key="route.name"
10
+ clickable
11
+ v-ripple
12
+ :active="isActive(route)"
13
+ active-class="bg-gradient-dark text-white"
14
+ @click="navigate(route)"
15
+ )
16
+
17
+ q-item-section
18
+ q-item-label.no-select
19
+ span {{ route.meta.title }}
20
+
21
+ // показываем иконку замка с цветом если требуется роль не user
22
+ q-icon(v-if="route.meta.roles && !route.meta.roles.includes('user') && route.meta.roles.length > 0" name="fa-solid fa-lock-open" :color="context.userRole == 'member' ? 'orange' : 'teal' ")
19
23
 
20
24
  </template>
21
25
 
22
26
  <script lang="ts" setup>
23
27
  import { useCurrentUserStore } from 'src/entities/User';
24
- import { ref, watch } from 'vue';
28
+ import { computed } from 'vue';
25
29
  import { useRoute, useRouter } from 'vue-router';
26
30
  import { useDesktopStore } from 'src/entities/Desktop/model';
27
31
  import { type IRoute } from 'src/entities/Desktop/model/types';
28
- import { COOPNAME } from 'src/shared/config';
32
+ import { useSystemStore } from 'src/entities/System/model';
29
33
 
30
- const desktop = useDesktopStore()
31
- const routes = ref<IRoute[]>([])
32
- const route = useRoute()
33
- const router = useRouter()
34
- const user = useCurrentUserStore()
34
+ const desktop = useDesktopStore();
35
+ const route = useRoute();
36
+ const router = useRouter();
37
+ const user = useCurrentUserStore();
38
+ const { info } = useSystemStore();
35
39
 
36
40
  const evaluateCondition = (condition: string, context: Record<string, any>): boolean => {
37
41
  try {
@@ -43,7 +47,7 @@ q-list(
43
47
  }
44
48
  };
45
49
 
46
- const init = () => {
50
+ const context = computed(() => {
47
51
  const isCoop = user.userAccount?.type === 'organization' &&
48
52
  user.userAccount?.private_data &&
49
53
  'type' in user.userAccount.private_data &&
@@ -51,38 +55,34 @@ q-list(
51
55
 
52
56
  const userRole = user.userAccount?.role || 'user';
53
57
 
54
- const context = {
58
+ return {
55
59
  isCoop,
56
60
  userRole,
57
61
  userAccount: user.userAccount,
58
- coopname: COOPNAME,
59
- // любые другие свойства, которые нужно использовать в условиях
62
+ coopname: info.coopname,
60
63
  };
64
+ });
61
65
 
62
- routes.value = (desktop.getSecondLevel(route) as unknown as IRoute[]).filter(
63
- (route) => {
64
- const rolesMatch = route.meta?.roles?.includes(userRole) || route.meta?.roles?.length === 0;
66
+ const filteredRoutes = computed(() => {
67
+ const secondLevelRoutes = desktop.getSecondLevel(route) as unknown as IRoute[];
68
+ return secondLevelRoutes.filter((route) => {
69
+ const rolesMatch = route.meta?.roles?.includes(context.value.userRole) || route.meta?.roles?.length === 0;
65
70
  const conditionMatch = route.meta?.conditions
66
- ? evaluateCondition(route.meta.conditions, context)
71
+ ? evaluateCondition(route.meta.conditions, context.value)
67
72
  : true; // Если условия нет, пропускаем проверку
68
73
  return rolesMatch && conditionMatch;
69
- }
70
- );
71
- }
74
+ });
75
+ });
72
76
 
73
77
  // Функция проверки активного маршрута
74
78
  const isActive = (routeToCheck: IRoute) => {
75
- return route.name === routeToCheck.name
76
- }
79
+ return route.name === routeToCheck.name;
80
+ };
77
81
 
78
82
  // Функция навигации при клике на элемент
79
83
  const navigate = (routeToNavigate: IRoute) => {
80
- router.push({ name: routeToNavigate.name, params: { coopname: COOPNAME } });
81
- }
82
-
83
- init()
84
-
85
- watch(route, () => init())
84
+ router.push({ name: routeToNavigate.name, params: { coopname: info.coopname } });
85
+ };
86
86
  </script>
87
87
 
88
88
  <style>
@@ -91,26 +91,25 @@ q-list(
91
91
  }
92
92
 
93
93
  .custom-ripple {
94
- position: relative;
95
- overflow: hidden;
96
- }
97
-
98
- .custom-ripple::before {
99
- content: "";
100
- position: absolute;
101
- top: 0;
102
- left: 0;
103
- width: 100%;
104
- height: 100%;
105
- background: rgba(0, 0, 0, 0.1);
106
- transform: scaleX(0);
107
- transform-origin: left;
108
- transition: transform 0.4s ease-out;
109
- z-index: 0;
110
- }
111
-
112
- .custom-ripple:active::before {
113
- transform: scaleX(1);
114
- }
94
+ position: relative;
95
+ overflow: hidden;
96
+ }
115
97
 
98
+ .custom-ripple::before {
99
+ content: "";
100
+ position: absolute;
101
+ top: 0;
102
+ left: 0;
103
+ width: 100%;
104
+ height: 100%;
105
+ background: rgba(0, 0, 0, 0.1);
106
+ transform: scaleX(0);
107
+ transform-origin: left;
108
+ transition: transform 0.4s ease-out;
109
+ z-index: 0;
110
+ }
111
+
112
+ .custom-ripple:active::before {
113
+ transform: scaleX(1);
114
+ }
116
115
  </style>
@@ -20,7 +20,9 @@ div
20
20
  import { computed } from 'vue'
21
21
  import { useRouter, useRoute } from 'vue-router'
22
22
  import { useQuasar } from 'quasar'
23
- import { COOPNAME } from 'src/shared/config'
23
+ import { useSystemStore } from 'src/entities/System/model';
24
+ const { info } = useSystemStore()
25
+
24
26
  import { useCurrentUserStore } from 'src/entities/User'
25
27
  import { type IRoute } from 'src/entities/Desktop/model/types'
26
28
  import { useDesktopStore } from 'src/entities/Desktop/model'
@@ -46,8 +48,8 @@ div
46
48
 
47
49
  const open = (route: IRoute) => {
48
50
  if (route.children)
49
- router.push({ name: route.children[0].name, params: { coopname: COOPNAME } })
50
- else router.push({ name: route.name, params: { coopname: COOPNAME } })
51
+ router.push({ name: route.children[0].name, params: { coopname: info.coopname } })
52
+ else router.push({ name: route.name, params: { coopname: info.coopname } })
51
53
 
52
54
  }
53
55
 
@@ -4,11 +4,13 @@ import { Map } from 'src/shared/ui/Map'
4
4
  import { CreateChildOrderButton } from 'src/features/Request/CreateChildOrder'
5
5
  import type { IRequestData } from 'src/entities/Request'
6
6
  import { useCooperativeStore, type IAddressesData } from 'src/entities/Cooperative'
7
- import { COOPNAME } from 'src/shared/config'
7
+
8
8
  import { useSessionStore } from 'src/entities/Session'
9
9
  const session = useSessionStore()
10
10
  const username = computed(() => session.username)
11
11
  const cooperativeStore = useCooperativeStore()
12
+ import { useSystemStore } from 'src/entities/System/model';
13
+ const { info } = useSystemStore()
12
14
 
13
15
  let units = ref(1)
14
16
  const selectedAddress = ref<IAddressesData>()
@@ -27,7 +29,7 @@ cooperativeStore.addresses.map((el: any) => {
27
29
  )
28
30
 
29
31
  onMounted(async () => {
30
- await cooperativeStore.loadAddresses({ coopname: COOPNAME })
32
+ await cooperativeStore.loadAddresses({ coopname: info.coopname })
31
33
  selectedAddress.value = addresses.value[0]
32
34
  })
33
35
 
@@ -53,5 +55,5 @@ div.q-pl-md.q-pr-md
53
55
 
54
56
  q-input(v-model="units" label="Введите количество единиц")
55
57
 
56
- CreateChildOrderButton(:coopname="COOPNAME" :username="username" :offer="offer" :units="units")
58
+ CreateChildOrderButton(:coopname="info.coopname" :username="username" :offer="offer" :units="units")
57
59
  </template>
@@ -24,10 +24,10 @@ div
24
24
  span Пожалуйста, подтвердите свою готовность совершить поставку.
25
25
 
26
26
  q-stepper-navigation.q-gutter-sm
27
- DeclineButton(v-if="iAmSupplier && isActive" :request-id=Number("request.id") :coopname="request.coopname" :username="username")
27
+ DeclineButton(v-if="iAmSupplier && isActive" :request-id="Number(request.id)" :coopname="request.coopname" :username="username")
28
28
  //- q-btn(v-if="iAmSupplier && isActive" @click="decline") Отклонить
29
- AcceptButton(v-if="iAmSupplier && isActive" :request-id=Number("request.id") :coopname="request.coopname" :username="username")
30
-
29
+ AcceptButton(v-if="iAmSupplier && isActive" :request-id="Number(request.id)" :coopname="request.coopname" :username="username")
30
+ p {{request}}
31
31
  template(v-else)
32
32
  q-step(
33
33
  :name="1"
@@ -85,7 +85,9 @@ div(flat bordered).q-pa-md
85
85
 
86
86
  <script lang="ts" setup>
87
87
  import { useWalletStore } from 'src/entities/Wallet';
88
- import { COOPNAME } from 'src/shared/config';
88
+ import { useSystemStore } from 'src/entities/System/model';
89
+ const { info } = useSystemStore()
90
+
89
91
  import { computed } from 'vue';
90
92
  import { AddPaymentMethodButton } from 'src/features/PaymentMethod/AddPaymentMethod';
91
93
  import type { IBankTransferData, ISBPData } from 'src/features/PaymentMethod/AddPaymentMethod/model';
@@ -102,7 +104,7 @@ const wallet = useWalletStore()
102
104
 
103
105
  const username = computed(() => props.username)
104
106
 
105
- wallet.loadUserWalet({ coopname: COOPNAME, username: username.value })
107
+ wallet.loadUserWalet({ coopname: info.coopname, username: username.value })
106
108
 
107
109
  function isSBPData(data: ISBPData | IBankTransferData): data is ISBPData {
108
110
  return (data as ISBPData).phone !== undefined;
@@ -1,9 +0,0 @@
1
- import { LocalStorage } from 'quasar'
2
- import { COOPNAME } from '../config'
3
-
4
- export function getWIF(): string {
5
- const wif = LocalStorage.getItem(`${COOPNAME}:WIF`) as string
6
- if (!wif) throw new Error('Ошибка авторизации: приватный ключ не найден')
7
-
8
- return wif
9
- }