feat(LookUpSms),refactor(OrderDialog),refactor(OrdersPage)

-Add new look up sms when order status changes ( like : customer-orderDelivery lookup , manager-orderSubmit look up)
-Change order dialog style and improve responseive
-Change orders page style and improve responsive
release
Amir Hossein Khademi 2024-06-06 22:52:50 +03:30
parent fdfe778a7a
commit 173e8e2dc0
9 changed files with 236 additions and 216 deletions

View File

@ -9,183 +9,184 @@
@inject IJSRuntime JsRuntime
@inject IConfiguration Configuration
<MudDialog class="w-full">
<MudDialog class="w-full overflow-y-scroll p-0">
<DialogContent>
<MudStack class="max-h-[50rem] mt-4 w-full" Style="overflow-y: scroll">
<MudGrid class="w-full">
<MudStack class="mt-2 h-full w-full p-0">
<MudGrid class="w-full" Spacing="0">
<MudItem xs="12" md="9">
<MudStack>
<MudStack Row="true">
<MudText Typo="Typo.h6" class="my-auto"><b>اطلاعات سفارش</b></MudText>
<MudSpacer />
<MudPaper Elevation="0" class="my-auto bg-blue-500 px-4 py-2">
<MudText Typo="Typo.body2" class="text-white">@ViewModel.PageDto.OrderStatus.ToDisplay()</MudText>
</MudPaper>
</MudStack>
<MudGrid>
<MudItem xs="12" sm="4">
<MudField Variant="Variant.Outlined" Label="نام و نام خانوادگی">@ViewModel.PageDto.CustomerFullName</MudField>
</MudItem>
<MudItem xs="12" sm="4">
<MudField Variant="Variant.Outlined" Label="شماره تماس">@ViewModel.PageDto.CustomerPhoneNumber</MudField>
</MudItem>
<MudItem xs="12" sm="4">
<MudField Variant="Variant.Outlined" Label="کد تخفیف">@ViewModel.PageDto.DiscountCode</MudField>
</MudItem>
<MudItem xs="12" sm="6">
<MudField Variant="Variant.Outlined" Label="آدرس">@ViewModel.PageDto?.OrderDelivery?.Address</MudField>
</MudItem>
<MudItem xs="12" sm="3">
<MudField Variant="Variant.Outlined" Label="روش ارسال">@ViewModel.PageDto?.OrderDelivery?.ShippingMethod</MudField>
</MudItem>
<MudItem xs="12" sm="3">
<MudField Variant="Variant.Outlined" Label="کدرهگیری ارسال">@ViewModel.PageDto?.OrderDelivery?.TrackingCode</MudField>
</MudItem>
</MudGrid>
<MudStack class="mt-3" Row="true">
<MudText Typo="Typo.h6"><b>کالاهای این سفارش</b></MudText>
<MudSpacer />
<MudPaper Elevation="0" class="border-2 my-auto border-dashed border-violet-400 px-3 py-1">
<MudText Typo="Typo.caption" class="text-violet-500"><b>@ViewModel.PageDto.OrderProducts.Sum(op => op.Count) قلم کالا</b></MudText>
</MudPaper>
</MudStack>
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
Elevation="0"
Bordered="true"
T="OrderProductSDto" Items="@ViewModel.PageDto.OrderProducts"
Filterable="false" Loading="@ViewModel.IsProcessing"
SortMode="@SortMode.None" Groupable="false"
class="border-2 border-solid border-gray-200">
<Columns>
<TemplateColumn T="OrderProductSDto" Title="نام کالا">
<CellTemplate>
<b>@context.Item.ProductName</b>
</CellTemplate>
</TemplateColumn>
<TemplateColumn T="OrderProductSDto" Title="قیمت کالا">
<CellTemplate>
<p>@context.Item.ProductFeeWithDiscount.ToString("N0") ریالــ</p>
</CellTemplate>
</TemplateColumn>
<PropertyColumn Title="تعداد" Property="arg => arg.Count" />
<TemplateColumn T="OrderProductSDto" Title="قیمت کل">
<CellTemplate>
<p>@context.Item.ProductCost.ToString("N0") ریالــ</p>
</CellTemplate>
</TemplateColumn>
</Columns>
</MudDataGrid>
<MudStack Row="true">
<MudText Typo="Typo.h6" class="my-auto"><b>اطلاعات سفارش</b></MudText>
<MudSpacer />
<MudPaper Elevation="0" class="my-auto bg-blue-500 px-4 py-2">
<MudText Typo="Typo.body2" class="text-white">@ViewModel.PageDto.OrderStatus.ToDisplay()</MudText>
</MudPaper>
</MudStack>
<MudGrid>
<MudItem xs="12" sm="4">
<MudField Variant="Variant.Outlined" Label="نام و نام خانوادگی">@ViewModel.PageDto.CustomerFullName</MudField>
</MudItem>
<MudItem xs="12" sm="4">
<MudField Variant="Variant.Outlined" Label="شماره تماس">@ViewModel.PageDto.CustomerPhoneNumber</MudField>
</MudItem>
<MudItem xs="12" sm="4">
<MudField Variant="Variant.Outlined" Label="کد تخفیف">@ViewModel.PageDto.DiscountCode</MudField>
</MudItem>
<MudItem xs="12" sm="6">
<MudField Variant="Variant.Outlined" Label="آدرس">@ViewModel.PageDto?.OrderDelivery?.Address</MudField>
</MudItem>
<MudItem xs="12" sm="3">
<MudField Variant="Variant.Outlined" Label="روش ارسال">@ViewModel.PageDto?.OrderDelivery?.ShippingMethod</MudField>
</MudItem>
<MudItem xs="12" sm="3">
<MudField Variant="Variant.Outlined" Label="کدرهگیری ارسال">@ViewModel.PageDto?.OrderDelivery?.TrackingCode</MudField>
</MudItem>
</MudGrid>
<MudStack class="mt-3" Row="true">
<MudText Typo="Typo.h6"><b>کالاهای این سفارش</b></MudText>
<MudSpacer />
<MudPaper Elevation="0" class="border-2 my-auto border-dashed border-violet-400 px-3 py-1">
<MudText Typo="Typo.caption" class="text-violet-500"><b>@ViewModel.PageDto.OrderProducts.Sum(op => op.Count) قلم کالا</b></MudText>
</MudPaper>
</MudStack>
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
Elevation="0"
Bordered="true"
T="OrderProductSDto" Items="@ViewModel.PageDto.OrderProducts"
Filterable="false" Loading="@ViewModel.IsProcessing"
SortMode="@SortMode.None" Groupable="false"
class="border-2 border-solid border-gray-200">
<Columns>
<TemplateColumn T="OrderProductSDto" Title="نام کالا">
<CellTemplate>
<b>@context.Item.ProductName</b>
</CellTemplate>
</TemplateColumn>
<TemplateColumn T="OrderProductSDto" Title="قیمت کالا">
<CellTemplate>
<p>@context.Item.ProductFeeWithDiscount.ToString("N0") ریالــ</p>
</CellTemplate>
</TemplateColumn>
<PropertyColumn Title="تعداد" Property="arg => arg.Count" />
<TemplateColumn T="OrderProductSDto" Title="قیمت کل">
<CellTemplate>
<p>@context.Item.ProductCost.ToString("N0") ریالــ</p>
</CellTemplate>
</TemplateColumn>
</Columns>
</MudDataGrid>
</MudItem>
<MudItem xs="12" md="3">
<MudText Typo="Typo.h6" class="mb-2"><b>مبــــالغ</b></MudText>
<MudPaper class="bg-[--mud-palette-background-grey] rounded-md">
<MudStack class="p-3">
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">جمع کالاها : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TotalProductsPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">مالیات : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TaxesPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">بسته بندی : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.PackingPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">هزینه ارسال : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.DeliveryPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
</MudStack>
<MudPaper class="mud-theme-dark rounded-md">
<MudStack class="sm:mr-3">
<MudText Typo="Typo.h6" class="mb-2"><b>مبــــالغ</b></MudText>
<MudPaper class="bg-[--mud-palette-background-grey] rounded-md">
<MudStack class="p-3">
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">جمع کل : </MudText>
<MudText class="my-auto" Typo="Typo.body2">جمع کالاها : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TotalPriceWithoutDiscount.ToString("N0")</b> ریالــ</MudText>
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TotalProductsPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">مقدار تخفیف : </MudText>
<MudText class="my-auto" Typo="Typo.body2">مالیات : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.DiscountPrice.ToString("N0")</b> ریالــ</MudText>
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TaxesPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">مبلغ قابل پرداخت : </MudText>
<MudText class="my-auto" Typo="Typo.body2">بسته بندی : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TotalPrice.ToString("N0")</b> ریالــ</MudText>
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.PackingPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">هزینه ارسال : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.DeliveryPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
</MudStack>
</MudPaper>
</MudPaper>
<MudText Typo="Typo.h6" class="mt-3"><b>پرداختــ ها</b></MudText>
<MudPaper class="mud-theme-dark rounded-md">
<MudPaper Elevation="0" class="bg-[--mud-palette-background-grey] rounded-md">
<MudStack class="p-3">
<MudStack class="p-3">
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">جمع کل : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TotalPriceWithoutDiscount.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">مقدار تخفیف : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.DiscountPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">مبلغ قابل پرداخت : </MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TotalPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
@foreach (var item in ViewModel.PageDto.Payments)
{
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">@item.Type.ToDisplay()</MudText>
<MudText class="my-auto" Typo="Typo.body2"> - </MudText>
<MudText class="my-auto" Typo="Typo.body2">@item.Status.ToDisplay()</MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@item.Amount.ToString("N0")</b> ریالــ</MudText>
</MudStack>
}
</MudPaper>
</MudPaper>
</MudStack>
</MudPaper>
<MudText Typo="Typo.h6" class="mt-3"><b>پرداختــ ها</b></MudText>
<MudPaper Elevation="0" class="bg-[--mud-palette-background-grey] rounded-md">
<MudStack class="p-3">
@foreach (var item in ViewModel.PageDto.Payments)
{
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">@item.Type.ToDisplay()</MudText>
<MudText class="my-auto" Typo="Typo.body2"> - </MudText>
<MudText class="my-auto" Typo="Typo.body2">@item.Status.ToDisplay()</MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@item.Amount.ToString("N0")</b> ریالــ</MudText>
</MudStack>
}
</MudStack>
</MudPaper>
</MudStack>
</MudItem>
</MudGrid>
</MudStack>
</DialogContent>
<DialogActions>
<MudGrid Row="true" class="bottom-0 mx-4 mb-3 h-fit w-full">
<MudGrid class="bottom-0 mx-4 mb-3 h-fit w-full">
<MudItem xs="12" sm="6" md="6">
<BaseButtonUi class="h-12 w-full rounded-md" IsProcessing="@ViewModel.IsProcessing"

View File

@ -5,9 +5,9 @@
@inject IDialogService DialogService
<MudDialog class="mx-auto">
<MudDialog class="mx-auto overflow-y-scroll">
<DialogContent>
<MudContainer class="h-full">
<MudContainer class="h-full p-0">
<MudTabs Outlined="true" Elevation="0" Rounded="true" Centered="true">
<MudTabPanel class="h-full" Text="اطلاعات کلی" Icon="@Icons.Material.Outlined.Info">
<div class="h-full">
@ -18,13 +18,13 @@
</MudStack>
<MudGrid>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudTextField @bind-Value="@ViewModel.PageDto.PersianName" T="string" Label="نام فارسی محصول" Variant="Variant.Outlined" />
</MudItem>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudTextField @bind-Value="@ViewModel.PageDto.EnglishName" T="string" Label="نام انگلیسی محصول" Variant="Variant.Outlined" />
</MudItem>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudAutocomplete Required="true" ToStringFunc="dto => dto.Name" @bind-Value="@ViewModel.SelectedCategory"
SearchFunc="ViewModel.SearchProductCategory"
@ -34,9 +34,9 @@
<ProgressIndicatorInPopoverTemplate>
<MudList Clickable="false">
<MudListItem>
<div class="flex flex-row w-full mx-auto">
<MudProgressCircular class="my-auto mr-1 -ml-4" Size="Size.Small" Indeterminate="true" />
<p class="font-bold my-1 mx-auto text-md">منتظر بمانید</p>
<div class="mx-auto flex w-full flex-row">
<MudProgressCircular class="my-auto -ml-4 mr-1" Size="Size.Small" Indeterminate="true" />
<p class="text-md mx-auto my-1 font-bold">منتظر بمانید</p>
</div>
</MudListItem>
</MudList>
@ -46,7 +46,7 @@
</ItemTemplate>
</MudAutocomplete>
</MudItem>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudAutocomplete Required="true" ToStringFunc="dto => dto.PersianName" @bind-Value="@ViewModel.SelectedBrand"
SearchFunc="ViewModel.SearchBrand"
@ -56,9 +56,9 @@
<ProgressIndicatorInPopoverTemplate>
<MudList Clickable="false">
<MudListItem>
<div class="flex flex-row w-full mx-auto">
<MudProgressCircular class="my-auto mr-1 -ml-4" Size="Size.Small" Indeterminate="true" />
<p class="font-bold my-1 mx-auto text-md">منتظر بمانید</p>
<div class="mx-auto flex w-full flex-row">
<MudProgressCircular class="my-auto -ml-4 mr-1" Size="Size.Small" Indeterminate="true" />
<p class="text-md mx-auto my-1 font-bold">منتظر بمانید</p>
</div>
</MudListItem>
</MudList>
@ -68,39 +68,39 @@
</ItemTemplate>
</MudAutocomplete>
</MudItem>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudTextField @bind-Value="@ViewModel.PageDto.Cost" T="double" Label="قیمت محصول" Adornment="Adornment.End" Format="N0" AdornmentText="ریالــ" Variant="Variant.Outlined" />
</MudItem>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudTextField @bind-Value="@ViewModel.PageDto.PackingCost" T="double" Label="مبلغ بسته بندی" Format="N0" Adornment="Adornment.End" AdornmentText="ریالــ" Variant="Variant.Outlined" />
</MudItem>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudTextField @bind-Value="@ViewModel.PageDto.Stock" T="int" Format="N0" Label="موجودی انبار" Variant="Variant.Outlined" />
</MudItem>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudTextField @bind-Value="@ViewModel.PageDto.MaxOrderCount" T="int" Format="N0" Label="بیشترین خرید" Variant="Variant.Outlined" />
</MudItem>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudTextField @bind-Value="@ViewModel.PageDto.Warranty" T="string" Label="گارانتی" Variant="Variant.Outlined" />
</MudItem>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudSelect T="bool" @bind-Value="@ViewModel.PageDto.HasExpressDelivery" Label="آیا ارسال سریع دارد ؟" ToStringFunc="b=>b.ToPersianString()" Variant="Variant.Outlined" AnchorOrigin="Origin.BottomCenter">
<MudSelectItem T="bool" Value="true" />
<MudSelectItem T="bool" Value="false" />
</MudSelect>
</MudItem>
<MudItem sm="12" lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudSelect T="bool" @bind-Value="@ViewModel.PageDto.BeDisplayed" Label="آیا نمایش داده شود است ؟" ToStringFunc="b=>b.ToPersianString()" Variant="Variant.Outlined" AnchorOrigin="Origin.BottomCenter">
<MudSelectItem T="bool" Value="true" />
<MudSelectItem T="bool" Value="false" />
</MudSelect>
</MudItem>
<MudItem sm="12" lg="12" md="12">
<MudItem xs="12" lg="12" md="12">
<MudStack>
<MudTextField @bind-Value="@ViewModel.PageDto.Tags" T="string" Label="تگ ها" HelperText="تگ ها را با , میتوانید جدا کنید" HelperTextOnFocus="true" Variant="Variant.Outlined" />
</MudStack>
</MudItem>
<MudItem sm="12" lg="12" md="12">
<MudItem xs="12" lg="12" md="12">
<MudTextField class="-mt-3" @bind-Value="@ViewModel.PageDto.Summery" T="string" Label="توضیحاتــ" Variant="Variant.Outlined"></MudTextField>
</MudItem>
</MudGrid>
@ -116,24 +116,25 @@
</MudStack>
<MudGrid>
<MudItem lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudTextField @bind-Value="@ViewModel.SpecificationTitle" T="string" Label="عنوان" Variant="Variant.Outlined"></MudTextField>
</MudItem>
<MudItem lg="4" md="6">
<MudItem xs="12" lg="4" md="6">
<MudTextField @bind-Value="@ViewModel.SpecificationValue" T="string" Label="مقدار" Variant="Variant.Outlined"></MudTextField>
</MudItem>
<MudItem lg="4" md="12">
<MudItem xs="12" lg="4" md="12">
<MudButton Variant="Variant.Filled"
Size="Size.Large"
FullWidth="true"
Color="Color.Info"
class="w-full py-3 mt-2"
class="mt-2 w-full py-3"
OnClick="ViewModel.AddSpecification"
StartIcon="@Icons.Material.Outlined.Add">افزودن</MudButton>
</MudItem>
<MudItem sm="12">
<MudItem xs="12">
<MudDataGrid Items="@ViewModel.Specifications" Elevation="0" Outlined="true" Bordered="true" Striped="true" Filterable="false" SortMode="@SortMode.None" Groupable="false">
<Columns>
<PropertyColumn Property="x => x.Title" Title="عنوان" />
@ -176,7 +177,7 @@
<MudTabPanel Text="تـــــصاویر" Icon="@Icons.Material.Outlined.ImageSearch">
<div class="min-h-[33rem]">
<MudStack class="mt-4 mb-2" Spacing="0">
<MudStack class="mb-2 mt-4" Spacing="0">
<MudText Typo="Typo.h6">تصاویر محصول</MudText>
<MudText Typo="Typo.caption">می توانید برای محصول چند تصویر اپلود کنید</MudText>
@ -185,15 +186,15 @@
<MudIconButton HtmlTag="label"
Color="Color.Info"
Variant="Variant.Outlined"
class="w-28 h-28"
class="h-28 w-28"
Size="Size.Large"
Icon="@Icons.Material.Outlined.Wallpaper"
OnClick="async () => await ViewModel.SelectFileAsync()">
</MudIconButton>
@foreach (var item in ViewModel.Files)
{
<div class="w-28 h-28">
<MudImage Src="@item.GetLink()" Elevation="25" Class="rounded-lg w-28 h-28 absolute" />
<div class="h-28 w-28">
<MudImage Src="@item.GetLink()" Elevation="25" Class="absolute h-28 w-28 rounded-lg" />
<MudIconButton DisableElevation="true"
class="absolute m-1.5"
@ -204,11 +205,11 @@
Icon="@Icons.Material.Outlined.Delete" />
@if (item.IsHeader)
{
<p class="bg-pink-500 px-1.5 py-0.5 absolute bottom-0 mr-2 rounded-lg text-white">هدر</p>
<p class="absolute bottom-0 mr-2 rounded-lg bg-pink-500 px-1.5 py-0.5 text-white">هدر</p>
}
@if (item.IsPrimary)
{
<p class="bg-blue-500 px-1.5 py-0.5 absolute bottom-0 mr-2 rounded-lg text-white">اصلی</p>
<p class="absolute bottom-0 mr-2 rounded-lg bg-blue-500 px-1.5 py-0.5 text-white">اصلی</p>
}
</div>
}
@ -232,7 +233,7 @@
Color="Color.Info" />
</MudItem>
<MudItem md="4">
<MudItem xs="12" md="4">
<MudSelect Disabled="@ViewModel.IsSpecialOffer.Not()" T="DiscountAmountType" ValueChanged="@ViewModel.AmountTypeChanged" Label="نوع تخفیفـــ" ToStringFunc="b=>b.ToDisplay()" Variant="Variant.Outlined" AnchorOrigin="Origin.BottomCenter">
<MudSelectItem T="DiscountAmountType" Value="DiscountAmountType.Percent" />
@ -240,20 +241,20 @@
</MudSelect>
</MudItem>
<MudItem md="4">
<MudItem xs="12" md="4">
<MudTextField Disabled="@ViewModel.IsPercentType.Not()" @bind-Value="@ViewModel.Discount.DiscountPercent" Format="N0" T="int" Label="درصد تخفیف" Variant="Variant.Outlined" />
</MudItem>
<MudItem md="4">
<MudItem xs="12" md="4">
<MudTextField Disabled="@ViewModel.IsAmountType.Not()" @bind-Value="@ViewModel.Discount.DiscountAmount" Format="N0" T="long" Label="مبلغ تخفیفــ" Adornment="Adornment.End" AdornmentText="ریالــ" Variant="Variant.Outlined" />
</MudItem>
<MudItem sm="6">
<MudItem xs="12" sm="6">
<MudDatePicker Disabled="@ViewModel.IsSpecialOffer.Not()" @bind-Date="@ViewModel.StartDate" UseShortNames="false" TitleDateFormat="dddd, dd MMMM" Label="تاریخ شروع تخفیفــ" Variant="Variant.Outlined" Culture="@PersianCultureInfo.GetPersianCulture()" />
</MudItem>
<MudItem sm="6">
<MudItem xs="12" sm="6">
<MudDatePicker Disabled="@ViewModel.IsSpecialOffer.Not()" @bind-Date="@ViewModel.ExpireDate" UseShortNames="false" TitleDateFormat="dddd, dd MMMM" Label="تاریخ پایان تخفیفــ" Variant="Variant.Outlined" Culture="@PersianCultureInfo.GetPersianCulture()" />
</MudItem>
@ -266,18 +267,18 @@
</MudContainer>
</DialogContent>
<DialogActions>
<MudStack Row="true" class="w-full h-fit mx-4 mb-3 bottom-0">
<MudStack Row="true" class="bottom-0 mx-4 mb-3 h-fit w-full">
@if (ViewModel.IsEditing)
{
<BaseButtonUi class="w-64 rounded-md" IsProcessing="@ViewModel.IsProcessing"
<BaseButtonUi class="w-52 rounded-md sm:w-64" IsProcessing="@ViewModel.IsProcessing"
Icon="@Icons.Material.Outlined.Check"
Variant="Variant.Filled" Color="Color.Success"
Content="ثبت ویرایش" OnClickCallback="async()=>await ViewModel.SubmitEditAsync()" />
}
else
{
<BaseButtonUi class="w-64 rounded-md" IsProcessing="@ViewModel.IsProcessing"
<BaseButtonUi class="w-52 rounded-md sm:w-64" IsProcessing="@ViewModel.IsProcessing"
Icon="@Icons.Material.Outlined.Check"
Variant="Variant.Filled" Color="Color.Success"
Content="تایید" OnClickCallback="ViewModel.SubmitCreateAsync" />

View File

@ -6,9 +6,9 @@
@inject ISnackbar Snackbar
@inject IUserUtility UserUtility
@inject IRestWrapper RestWrapper
@inject IBrowserViewportService BrowserViewportService
<MudStack class="bg-[--mud-palette-background-grey] h-screen w-full overflow-x-hidden overflow-y-scroll px-3 md:p-5 lg:px-8">
<MudStack class="bg-[--mud-palette-background-grey] h-screen w-full overflow-x-hidden overflow-y-scroll md:p-5 lg:px-8">
<MudHidden Breakpoint="Breakpoint.Xs">
<MudGrid>
@ -85,7 +85,7 @@
Clearable="true"
AdornmentIcon="@Icons.Material.Filled.Search"
IconSize="Size.Medium"
class="my-auto"
class="mx-2 my-auto"
@bind-Value="@ViewModel.FactorCodeSearch"
OnAdornmentClick="@ViewModel.SearchAsync"></MudTextField>
</MudItem>
@ -94,7 +94,7 @@
Value="@ViewModel.OrderStatusSearch"
SearchFunc="@ViewModel.OrderStatusSearchAsync"
T="FilterOptionDto<OrderStatus>"
class="-mt-0.5"
class="-mt-0.5 mx-2"
OnClearButtonClick="async () => await ViewModel.SearchByOrderStatusAsync(null)"
Clearable="true"
Label="وظعیت سفارش">
@ -238,7 +238,7 @@
public OrdersPageViewModel ViewModel { get; set; }
protected override async Task OnInitializedAsync()
{
ViewModel = new OrdersPageViewModel(NavigationManager, Snackbar, UserUtility, RestWrapper, DialogService);
ViewModel = new OrdersPageViewModel(NavigationManager, Snackbar, UserUtility, RestWrapper, DialogService, BrowserViewportService);
await ViewModel.InitializeAsync();
await base.OnInitializedAsync();
}

View File

@ -6,6 +6,7 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
private readonly ISnackbar _snackbar;
private readonly IUserUtility _userUtility;
private readonly IDialogService _dialogService;
private readonly IBrowserViewportService _browserViewportService;
private readonly IRestWrapper _restWrapper;
public string Search = string.Empty;
@ -18,13 +19,15 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
ISnackbar snackbar,
IUserUtility userUtility,
IRestWrapper restWrapper,
IDialogService dialogService) : base(userUtility)
IDialogService dialogService,
IBrowserViewportService browserViewportService) : base(userUtility)
{
_navigationManager = navigationManager;
_snackbar = snackbar;
_userUtility = userUtility;
_restWrapper = restWrapper;
_dialogService = dialogService;
_browserViewportService = browserViewportService;
}
public override async Task InitializeAsync()
@ -109,6 +112,11 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
public async Task ShowClicked(OrderSDto order)
{
DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.False, NoHeader = true, FullWidth = true, DisableBackdropClick = true };
var breakPoint = await _browserViewportService.GetCurrentBreakpointAsync();
if (breakPoint == Breakpoint.Xs)
maxWidth = new DialogOptions { FullScreen = true, CloseButton = true };
var parameters = new DialogParameters<OrderActionDialogBox>();
parameters.Add(x => x.Order, order);
var dialogResult = await _dialogService.ShowAsync<OrderActionDialogBox>($" سفارش {order.FactorCode}", parameters, maxWidth);

View File

@ -6,8 +6,9 @@
@inject ISnackbar Snackbar
@inject IUserUtility UserUtility
@inject IRestWrapper RestWrapper
@inject IBrowserViewportService BrowserViewportService
<MudStack class="w-full p-8 h-screen bg-[--mud-palette-background-grey]">
<MudStack class="bg-[--mud-palette-background-grey] h-screen w-full p-8">
<MudGrid>
<MudItem xs="12">
<MudGrid Row="true" class="mb-5">
@ -23,13 +24,13 @@
StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Secondary"
OnClick="@ViewModel.AddProductClicked"
class="md:my-auto w-full md:w-auto">افزودن محصول</MudButton>
class="w-full md:my-auto md:w-auto">افزودن محصول</MudButton>
<MudButton Variant="Variant.Filled"
DisableElevation="true"
StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Error"
OnClick="@ViewModel.AddDigikalaProductClicked"
class="md:my-auto w-full md:w-auto">افزودن محصول از دیجیکالا</MudButton>
class="w-full md:my-auto md:w-auto">افزودن محصول از دیجیکالا</MudButton>
</MudItem>
</MudGrid>
<MudHidden Breakpoint="Breakpoint.SmAndUp">
@ -54,9 +55,9 @@
<ProgressIndicatorInPopoverTemplate>
<MudList Clickable="false">
<MudListItem>
<div class="flex flex-row w-full mx-auto">
<MudProgressCircular class="my-auto mr-1 -ml-4" Size="Size.Small" Indeterminate="true" />
<p class="font-bold my-1 mx-auto text-md">منتظر بمانید</p>
<div class="mx-auto flex w-full flex-row">
<MudProgressCircular class="my-auto -ml-4 mr-1" Size="Size.Small" Indeterminate="true" />
<p class="text-md mx-auto my-1 font-bold">منتظر بمانید</p>
</div>
</MudListItem>
</MudList>
@ -77,7 +78,7 @@
SortMode="@SortMode.None" Groupable="false">
<ToolBarContent>
<MudGrid class="md:visible collapse">
<MudGrid class="collapse md:visible">
<MudItem xs="12" sm="6">
<MudTextField T="string" Placeholder="جست جو بر اساس نام" Adornment="Adornment.Start" Immediate="true"
@ -98,9 +99,9 @@
<ProgressIndicatorInPopoverTemplate>
<MudList Clickable="false">
<MudListItem>
<div class="flex flex-row w-full mx-auto">
<MudProgressCircular class="my-auto mr-1 -ml-4" Size="Size.Small" Indeterminate="true" />
<p class="font-bold my-1 mx-auto text-md">منتظر بمانید</p>
<div class="mx-auto flex w-full flex-row">
<MudProgressCircular class="my-auto -ml-4 mr-1" Size="Size.Small" Indeterminate="true" />
<p class="text-md mx-auto my-1 font-bold">منتظر بمانید</p>
</div>
</MudListItem>
</MudList>
@ -161,7 +162,7 @@
<MudStack Row="true" class="w-full">
<MudPagination Rectangular="true" Variant="Variant.Filled" Count="@ViewModel.PageCount"
SelectedChanged="@ViewModel.ChangePageAsync" class="my-4 mx-auto"/>
SelectedChanged="@ViewModel.ChangePageAsync" class="mx-auto my-4"/>
</MudStack>
</PagerContent>
@ -176,7 +177,7 @@
public ProductsPageViewModel ViewModel { get; set; }
protected override async Task OnInitializedAsync()
{
ViewModel = new ProductsPageViewModel(NavigationManager, Snackbar, UserUtility, RestWrapper, DialogService);
ViewModel = new ProductsPageViewModel(NavigationManager, Snackbar, UserUtility, RestWrapper, DialogService, BrowserViewportService);
await ViewModel.InitializeAsync();
await base.OnInitializedAsync();
}

View File

@ -1,4 +1,6 @@
namespace Netina.AdminPanel.PWA.Pages;
using MudBlazor.Services;
namespace Netina.AdminPanel.PWA.Pages;
public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductSDto>>
{
@ -6,6 +8,7 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
private readonly ISnackbar _snackbar;
private readonly IUserUtility _userUtility;
private readonly IDialogService _dialogService;
private readonly IBrowserViewportService _browserViewportService;
private readonly IRestWrapper _restWrapper;
public string Search = string.Empty;
@ -17,13 +20,15 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
ISnackbar snackbar,
IUserUtility userUtility,
IRestWrapper restWrapper,
IDialogService dialogService) : base(userUtility)
IDialogService dialogService,
IBrowserViewportService browserViewportService) : base(userUtility)
{
_navigationManager = navigationManager;
_snackbar = snackbar;
_userUtility = userUtility;
_restWrapper = restWrapper;
_dialogService = dialogService;
_browserViewportService = browserViewportService;
}
public override async Task InitializeAsync()
@ -106,6 +111,9 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
public async Task AddProductClicked()
{
DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Large, FullWidth = true, DisableBackdropClick = true };
var breakPoint = await _browserViewportService.GetCurrentBreakpointAsync();
if (breakPoint == Breakpoint.Xs)
maxWidth = new DialogOptions { FullScreen = true , CloseButton = true};
var dialogResult = await _dialogService.ShowAsync<ProductActionDialogBox>("افزودن محصول جدید", maxWidth);
var result = await dialogResult.Result;
if (!result.Canceled && result.Data is bool and true)

View File

@ -18,4 +18,5 @@
@using Netina.Common.Extensions
@using Netina.Domain.Entities.Users
@using Netina.AdminPanel.PWA.Components.Originals
@using Netina.Domain.Models.Claims
@using Netina.Domain.Models.Claims
@using MudBlazor.Services

View File

@ -1298,9 +1298,6 @@ input:checked + .toggle-bg {
.max-h-\[30rem\] {
max-height: 30rem;
}
.max-h-\[50rem\] {
max-height: 50rem;
}
.max-h-\[60vh\] {
max-height: 60vh;
}
@ -2223,10 +2220,18 @@ code {
@media (min-width: 640px) {
.sm\:mr-3 {
margin-right: 0.75rem;
}
.sm\:mt-6 {
margin-top: 1.5rem;
}
.sm\:w-64 {
width: 16rem;
}
.sm\:py-3 {
padding-top: 0.75rem;
padding-bottom: 0.75rem;

View File

@ -1443,10 +1443,6 @@ input:checked + .toggle-bg {
max-height: 30rem;
}
.max-h-\[50rem\] {
max-height: 50rem;
}
.max-h-\[60vh\] {
max-height: 60vh;
}
@ -1987,10 +1983,6 @@ input:checked + .toggle-bg {
text-align: center;
}
.text-justify {
text-align: justify;
}
.align-bottom {
vertical-align: bottom;
}
@ -2049,11 +2041,6 @@ input:checked + .toggle-bg {
color: rgb(217 119 6 / var(--tw-text-opacity));
}
.text-blue-500 {
--tw-text-opacity: 1;
color: rgb(63 131 248 / var(--tw-text-opacity));
}
.text-blue-600 {
--tw-text-opacity: 1;
color: rgb(28 100 242 / var(--tw-text-opacity));
@ -2571,10 +2558,18 @@ code {
}
@media (min-width: 640px) {
.sm\:mr-3 {
margin-right: 0.75rem;
}
.sm\:mt-6 {
margin-top: 1.5rem;
}
.sm\:w-64 {
width: 16rem;
}
.sm\:py-3 {
padding-top: 0.75rem;
padding-bottom: 0.75rem;