feat: add refresh functionality to various components

- Implemented refresh event emission in multiple list components across partner and superAdmin modules.
- Updated consumers and customers list components to handle refresh actions.
- Enhanced dashboard component to fetch partner info on initialization.
- Introduced new API method in PartnerService to retrieve current partner data.
- Modified PartnerStore to utilize the new API method for fetching partner information.
- Updated UI elements to reflect changes in partner and license management, including new fields for license renewals.
- Added a new POS display component for better presentation of POS terminal information.
- Updated layout service and top bar to reflect new titles and improve user experience.
- Refactored existing components to ensure consistency and maintainability.
This commit is contained in:
2026-04-24 23:01:44 +03:30
parent 5bb5f10dbf
commit a816c05777
73 changed files with 559 additions and 97 deletions
@@ -58,6 +58,7 @@
[items]="invoice()?.items"
[loading]="loading"
pageTitle=""
(onRefresh)="refresh()"
/>
</app-card-data>
</div>
@@ -4,7 +4,7 @@ import {
PageDataListComponent,
} from '@/shared/components/pageDataList/page-data-list.component';
import { getGoodUnitTypeProperties } from '@/utils';
import { Component, Input } from '@angular/core';
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { Badge } from 'primeng/badge';
import { ButtonDirective } from 'primeng/button';
import { Divider } from 'primeng/divider';
@@ -30,6 +30,8 @@ export class ConsumerSaleInvoiceSharedComponent {
@Input({ required: true }) invoice!: any;
@Input() variant: TConsumerSaleInvoice = 'full';
@Output() onRefresh = new EventEmitter<void>();
printInvoice = () => {
window.print();
};
@@ -86,4 +88,8 @@ export class ConsumerSaleInvoiceSharedComponent {
];
expandedRows: { [key: string]: boolean } = {};
refresh() {
this.onRefresh.emit();
}
}
@@ -4,6 +4,7 @@
emptyPlaceholderTitle="حساب‌ کاربری‌ای یافت نشد"
[items]="items()"
[loading]="loading()"
(onRefresh)="refresh()"
/>
@if (selectedItemForEdit()) {
@@ -13,6 +13,7 @@
(onAdd)="openAddForm()"
(onEdit)="onEditClick($event)"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
>
</app-page-data-list>
<consumer-complex-form
@@ -12,6 +12,7 @@
[fullHeight]="fullHeight"
(onEdit)="onEditClick($event)"
(onAdd)="openAddForm()"
(onRefresh)="refresh()"
/>
<consumer-complex-good-form
[businessId]="businessId"
@@ -7,6 +7,7 @@
[showDetails]="true"
(onEdit)="onEditClick($event)"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
>
</app-page-data-list>
<consumer-businessActivity-form
@@ -11,6 +11,12 @@
<app-enum-select [control]="form.controls.pos_type" type="posType" name="pos_type" />
@if (form.controls.pos_type.value === "PSP") {
<app-input label="سریال دستگاه" [control]="form.controls.serial_number" name="serial_number" />
<catalog-device-select [control]="form.controls.device_id" />
<catalog-provider-select [control]="form.controls.provider_id" />
}
@if (!editMode) {
<p-divider align="center"> اطلاعات ورود </p-divider>
<app-input label="نام کاربری" [control]="form.controls.username" name="username" [isLtrInput]="true" />
@@ -51,12 +57,6 @@
</uikit-field>
}
@if (form.controls.pos_type.value === "PSP") {
<app-input label="سریال دستگاه" [control]="form.controls.serial_number" name="serial_number" />
<catalog-device-select [control]="form.controls.device_id" />
<catalog-provider-select [control]="form.controls.provider_id" />
}
<app-form-footer-actions [submitLabel]="'ذخیره'" [loading]="submitLoading()" (onCancel)="close()" />
</form>
</p-dialog>
@@ -12,6 +12,7 @@
(onAdd)="openAddForm()"
(onEdit)="onEditClick($event)"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
>
</app-page-data-list>
<consumer-pos-form
@@ -4,5 +4,6 @@
emptyPlaceholderTitle="تا به حال فاکتور فروشی توسط این پایانه ایجاد نشده است."
[items]="items()"
[loading]="loading()"
(onRefresh)="refresh()"
>
</app-page-data-list>
@@ -8,6 +8,7 @@
[showDetails]="true"
(onEdit)="onEditClick($event)"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
/>
@if (selectedItemForEdit()) {
@@ -6,4 +6,5 @@
[loading]="loading()"
[showDetails]="true"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
/>
@@ -6,6 +6,7 @@
[showDetails]="true"
[loading]="loading()"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
>
<ng-template #moreActions>
<a routerLink pButton [routerLink]="invoicesPageRoute" outlined>تمامی فاکتورها</a>
@@ -8,6 +8,7 @@
[showEdit]="true"
(onEdit)="onEditClick($event)"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
>
<ng-template #toPosLandingAction let-item>
<p-button type="button" variant="outlined" (onClick)="toPosLanding(item.id)"> ورود به پایانه </p-button>
@@ -6,4 +6,5 @@
[loading]="loading()"
[showDetails]="true"
(onDetails)="toSinglePage($event)"
(onRefresh)="refresh()"
/>
+1 -1
View File
@@ -39,7 +39,7 @@ export class ConsumerStore extends EntityStore<IConsumerInfoResponse, ConsumerSt
)
.subscribe((entity) => {
this.layoutService.setPanelInfo({
title: 'پنل مدیریت کسب و کار',
title: 'پنل مدیریت صورت‌حساب‌های مالیاتی',
});
this.patchState({ entity });
});