add institution plan front

This commit is contained in:
MahanCh
2025-04-22 18:31:00 +03:30
parent aff835fd7f
commit 10bfbad3cb
10 changed files with 1224 additions and 5 deletions

View File

@@ -221,10 +221,18 @@
لیست مشاغل </a>
</li>
<li permission="304"><a class="clik3" asp-page="/Company/Holidays/Index">
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
</svg>
تعطیلات رسمی </a>
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
</svg>
تعطیلات رسمی </a>
</li>
<li permission="305">
<a class="clik3" asp-area="AdminNew" asp-page="/Company/ServiceAmountsManagement/Index">
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
</svg>
مبالغ سرویس‌ها
</a>
</li>
<li permission="305"><a class="clik3" asp-page="/Company/MandatoryHours/Index">
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">

View File

@@ -0,0 +1,126 @@
@model CompanyManagment.App.Contracts.InstitutionPlan.EditInstitutionPlanPercentage
@{
string clientVersion = _0_Framework.Application.Version.StyleVersion;
<link href="~/AssetsAdminNew/serviceamountsmanagement/css/CreateServiceModal.css?ver=@clientVersion" rel="stylesheet" />
}
<form role="form" method="post" name="create-form" id="create-form" autocomplete="off">
<div class="modal-content">
<div class="modal-header pb-0 d-flex align-items-center justify-content-center text-center">
<button type="button" class="btn-close position-absolute text-start" data-bs-dismiss="modal" aria-label="Close"></button>
<div>
<p class="m-0 pdHeaderTitle1">سرویس جدید</p>
</div>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-12 col-md-6 my-1 d-none">
<div class="d-flex align-items-center justify-content-between">
<span class="titleInput">رکب برای نال</span>
<div class="position-relative">
<input type="text" class="form-control numeric-only text-center ms-2" asp-for="@Model.ContractAndCheckoutPercent" style="direction: ltr;width: 70px;" pattern="[0-9]*" inputmode="numeric" />
<span class="position-absolute percentageInput">٪</span>
</div>
</div>
</div>
<div class="col-12 col-md-6 my-1">
<div class="d-flex align-items-center justify-content-between">
<span class="titleInput">درصد مبلغ قرداد و تصفیه</span>
<div class="position-relative">
<input type="text" class="form-control numeric-only text-center ms-2" asp-for="@Model.ContractAndCheckoutPercentStr" style="direction: ltr;width: 70px;" pattern="[0-9]*" inputmode="numeric" />
<span class="position-absolute percentageInput">٪</span>
</div>
</div>
</div>
<div class="col-12 col-md-6 my-1">
<div class="d-flex align-items-center justify-content-between">
<span class="titleInput">درصد خدمات بیمه</span>
<div class="position-relative">
<input type="text" class="form-control numeric-only text-center ms-2" asp-for="@Model.InsurancePercentStr" style="direction: ltr;width: 70px;" pattern="[0-9]*" inputmode="numeric" />
<span class="position-absolute percentageInput">٪</span>
</div>
</div>
</div>
<div class="col-12 col-md-6 my-1">
<div class="d-flex align-items-center justify-content-between">
<span class="titleInput">درصد خدمات خصور و غیاب</span>
<div class="position-relative">
<input type="text" class="form-control numeric-only text-center ms-2" asp-for="@Model.RollCallPercentStr" style="direction: ltr;width: 70px;" pattern="[0-9]*" inputmode="numeric" />
<span class="position-absolute percentageInput">٪</span>
</div>
</div>
</div>
<div class="col-12 col-md-6 my-1">
<div class="d-flex align-items-center justify-content-between">
<span class="titleInput">درصد خدمات فیش حقوقی غیر رسمی</span>
<div class="position-relative">
<input type="text" class="form-control numeric-only text-center ms-2" asp-for="@Model.CustomizeCheckoutPercentStr" style="direction: ltr;width: 70px;" pattern="[0-9]*" inputmode="numeric" />
<span class="position-absolute percentageInput">٪</span>
</div>
</div>
</div>
<div class="col-12 col-md-6 my-1">
<div class="d-flex align-items-center justify-content-between">
<span class="titleInput">درصد خدمات حضوری قرارداد و تصفیه</span>
<div class="position-relative">
<input type="text" class="form-control numeric-only text-center ms-2" asp-for="@Model.ContractAndCheckoutInPersonPercentStr" style="direction: ltr;width: 70px;" pattern="[0-9]*" inputmode="numeric" />
<span class="position-absolute percentageInput">٪</span>
</div>
</div>
</div>
<div class="col-12 col-md-6 my-1">
<div class="d-flex align-items-center justify-content-between">
<span class="titleInput">درصد خدمات حضور بیمه</span>
<div class="position-relative">
<input type="text" class="form-control numeric-only text-center ms-2" asp-for="@Model.InsuranceInPersonPercentStr" style="direction: ltr;width: 70px;" pattern="[0-9]*" inputmode="numeric" />
<span class="position-absolute percentageInput">٪</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer d-block">
<div class="container p-0 m-0">
<div class="row">
<div class="col-6 d-flex justify-content-end">
<button type="button" class="btn-cancel d-flex justify-content-center" data-bs-dismiss="modal" aria-label="Close">انصراف</button>
</div>
<div class="col-6 d-flex justify-content-start">
<button type="button" class="btn-save position-relative" onclick="SaveDataAjax()">
<span class="text-nowrap">ثبت</span>
<div class="spinner-loading loading" style="display: none;">
<span class="spinner-border spinner-border-sm loading text-white" role="status" aria-hidden="true"></span>
</div>
</button>
</div>
</div>
</div>
</div>
</div>
</form>
<script src="~/assetsclient/js/site.js?ver=@clientVersion"></script>
<script src="~/assetsclient/libs/jalaali-js/jalaali.js"></script>
<script src="~/admintheme/js/jquery.mask_1.14.16.min.js"></script>
<script src="~/assetsclient/libs/cleave/cleave.min.js"></script>
<script src="~/assetsclient/libs/wordifyfa/wordifyfa.min.js"></script>
<script>
var antiForgeryToken = $(`@Html.AntiForgeryToken()`).val();
var createInstitutionPlanUrl = `@Url.Page("./Index", "CreateInstitutionPlan")`;
</script>
<script src="~/AssetsAdminNew/serviceamountsmanagement/js/CreateServiceModal.js?ver=@clientVersion"></script>

View File

@@ -0,0 +1,251 @@
@page
@model ServiceHost.Areas.AdminNew.Pages.Company.ServiceAmountsManagement.IndexModel
@{
string adminVersion = _0_Framework.Application.Version.AdminVersion;
var index = 1;
}
@section Styles {
<link href="~/AssetsClient/css/table-style.css?ver=@adminVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/table-responsive.css?ver=@adminVersion" rel="stylesheet" />
<link href="~/assetsclient/css/table-grid.css?ver=@adminVersion" rel="stylesheet" />
<link href="~/assetsclient/css/operation-button.css?ver=@adminVersion" rel="stylesheet" />
<link href="~/AssetsAdminNew/serviceamountsmanagement/css/index.css?ver=@adminVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/select2.css?ver=@adminVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/datetimepicker.css?ver=@adminVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/dropdown.css?ver=@adminVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/filter-search.css?ver=@adminVersion" rel="stylesheet" />
<style>
.errored {
animation: shake 300ms;
color: #eb3434 !important;
background-color: #fef2f2 !important;
border: 1px solid #eb3434 !important;
border-radius: 7px;
}
@@media (max-width: 767px) {
.sticky {
position: sticky;
top: 3px;
z-index: 60;
}
}
</style>
}
<div class="row pb-2">
<div class="col p-0 m-0 d-flex align-items-center justify-content-between">
<div class="col d-flex align-items-center">
<img src="~/AssetsClient/images/icons/workshop.png" alt="" class="img-fluid me-2" style="width: 45px;object-fit: cover;" />
<div>
<h4 class="title d-flex align-items-center">مدیریت مبالغ سرویس‌ها</h4>
</div>
</div>
<div>
<a asp-area="Admin" asp-page="/Index" class="back-btn" type="button">
<span>بازگشت</span>
</a>
</div>
</div>
</div>
<button type="button" class="btn btn-rounded mb-5 goToTop" style="display: none"> <i class="fa fa-chevron-up" style="font-size: 20px"></i> برو بالا</button>
@* <input type="hidden" asp-for="SearchModel.PageIndex" id="pageIndex" value="@Model.SearchModel.PageIndex" /> *@
<!-- List Items -->
<div class="row">
<div class="col-12 mb-2">
<div class="d-flex w-100 section-btns-task">
@*Search Box *@
</div>
<div class=" d-none d-md-block">
<div class="row px-2">
<div class="search-box card border-0">
<form role="form" method="get" name="search-theme-form1" id="search-theme-form1" autocomplete="off">
<div class="row">
<div class="col-12">
<div class="d-grid search-section gap-2" data-title="جستجو لیست قرارداد" data-intro="شما در این لیست قرارداد میتوانید جستجو کنید.">
<div class="d-grid grid-cols-2 gap-2 col-span-2">
<div class="col-span-2">
<input type="text" class="form-control" id="countPersonInput" placeholder="تعداد پرسنل" pattern="[0-9]*" inputmode="numeric" />
</div>
</div>
<div class="d-flex gap-2 col-span-2">
<button class="btn-search btn-w-size btn-search-click text-nowrap d-flex align-items-center justify-content-center" type="button">
<span>جستجو</span>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="20" height="20" class="ms-1">
<path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
</svg>
</button>
<a href="/AdminNew/Company/ServiceAmountsManagement" class="btn-clear-filter btn-w-size text-nowrap d-flex align-items-center justify-content-center disable" id="filterRemove">
<span>حذف جستجو</span>
</a>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="d-block d-md-none">
<div class="row d-flex align-items-center justify-content-between">
<div>
<div class="col text-center">
<button class="btn-search w-100" type="button" data-bs-toggle="modal" data-bs-target="#searchModal">
<span>جستجو پیشرفته</span>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
<circle cx="11" cy="11" r="6" stroke="white" />
<path d="M20 20L17 17" stroke="white" stroke-linecap="round" />
</svg>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row p-lg-2 p-auto">
<div class="card">
<div class="wrapper list-box table-service">
<div class="row align-items-center">
<div class="col-6 col-md-4">
<button class="btn-create mb-1" onclick="openCreateModal()">
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11" cy="11" r="8.25" stroke-width="1.5" stroke="white"/>
<path d="M11 13.75L11 8.25" stroke-width="1.5" stroke="white" stroke-linecap="round"/>
<path d="M13.75 11L8.25 11" stroke-width="1.5" stroke="white" stroke-linecap="round"/>
</svg>
ایجاد سرویس
</button>
</div>
<div class="d-none d-md-block col-4 text-center">
<span>
لیست سرویس ها
</span>
</div>
<div class="col-6 col-md-4 text-end">
<div class="d-flex align-items-center justify-content-end my-1">
</div>
</div>
</div>
<div class="Rtable Rtable--collapse">
<div class="Rtable-row Rtable-row--head align-items-center d-none d-lg-flex sticky p-0">
<div class="Rtable-cell column-heading d-md-flex d-none width1 text-center">تعداد پرسنل</div>
<div class="Rtable-cell column-heading d-md-flex d-none width2 text-center" style="background: #16b797;">مبلغ قرداد و تصفیه</div>
<div class="Rtable-cell column-heading d-flex width3 text-center" style="background: #16b797;">خدمات بیمه</div>
<div class="Rtable-cell column-heading d-flex width4 text-center" style="background: #16b797;">خدمات خصور و غیاب</div>
<div class="Rtable-cell column-heading d-md-flex d-none width5 text-center" style="background: #16b797;">خدمات فیش حقوقی غیر رسمی</div>
<div class="Rtable-cell column-heading d-md-flex d-none width6 text-center" style="background: #17b0d0;">خدمات حضوری قرارداد و تصفیه</div>
<div class="Rtable-cell column-heading d-md-flex d-none width7 text-center" style="background: #17b0d0;">خدمات حضور بیمه</div>
<div class="Rtable-cell column-heading d-flex width8 text-center" style="background: #ccc90a;">خدمات حضوری موسسه</div>
<div class="Rtable-cell column-heading d-flex width9 text-center" style="background: #ccc90a;">مبلغ کل خدمات سامانه بدون خدمات خصوری</div>
<div class="Rtable-cell column-heading d-flex width10 text-center" style="background: #ccc90a;">مبلغ کل خدمات سامانه + خدمات خصوری</div>
</div>
<div class="w-100" id="LoadDataOfServices">
<div></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="searchModal" tabindex="-1" data-bs-backdrop="static" aria-labelledby="searchModalModalLabel" aria-hidden="true">
<div class="modal-dialog modal-fullscreen">
<div class="modal-content">
<form role="form" method="get" name="search-theme-form2" id="search-theme-form2" autocomplete="off">
<div class="modal-header d-block text-center pb-0">
<div class="iphone-line mx-auto mb-3"></div>
<h5 class="modal-title mb-4 text-start" id="searchModalLabel">جستجوی پیشرفته</h5>
</div>
<div class="modal-body pt-0 mb-3">
<div class="container-fluid search-box">
<div id="overlaySearchAdvance" class=""></div>
<div class="row">
<div>
<div class="d-grid grid-cols-2 gap-2 col-span-2 mb-2">
<div class="col-span-2">
<input type="text" class="form-control" id="countPersonInputMobile" placeholder="تعداد پرسنل" pattern="[0-9]*" inputmode="numeric" />
</div>
</div>
</div>
<div class="d-flex justify-content-center gap-4 col-span-2 mt-2 w-100">
<button class="btn-search btn-w-size btn-search-click text-nowrap d-flex align-items-center justify-content-center w-100" id="searchBtn" type="button">
<span>جستجو</span>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="20" height="20" class="ms-1">
<path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
</svg>
</button>
<a href="/AdminNew/Company/ServiceAmountsManagement" class="btn-clear-filter btn-w-size text-nowrap d-flex align-items-center justify-content-center w-100 disable" id="filterRemove">
<span>حذف جستجو</span>
</a>
</div>
</div>
</div>
</div>
<div class="modal-footer justify-content-center align-items-center">
<div class="container-fluid">
<div class="row">
<div class="col-12 text-center">
<button type="button" class="btn-cancel w-100" data-bs-dismiss="modal">انصراف</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<div id="MainModal" class="modal fade" aria-labelledby="myModalLabel" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-hidden="true" style="display: none;">
<div class="modal-dialog ServiceModal-width modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content" id="ModalContent">
</div>
</div>
</div>
@section Script {
<script src="~/assetsclient/js/site.js"></script>
<script>
var antiForgeryToken = $(`@Html.AntiForgeryToken()`).val();
var loadInstitutionPlanListUrl = `@Url.Page("./Index", "InstitutionPlanList")`;
var showModalNewServiceUrl = `@Url.Page("./Index", "CreateInstitutionPlan")`;
</script>
<script src="~/assetsadminnew/serviceamountsmanagement/js/index.js?ver=@adminVersion"></script>
}

View File

@@ -0,0 +1,50 @@
using CompanyManagment.App.Contracts.InstitutionPlan;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace ServiceHost.Areas.AdminNew.Pages.Company.ServiceAmountsManagement
{
[Authorize]
public class IndexModel : PageModel
{
private readonly IInstitutionPlanApplication _institutionPlanApplication;
public IndexModel(IInstitutionPlanApplication institutionPlanApplication)
{
_institutionPlanApplication = institutionPlanApplication;
}
public void OnGet()
{
}
public IActionResult OnGetInstitutionPlanList(int pageIndex, int countPeron)
{
var resultData = _institutionPlanApplication.GetInstitutionPlanList(pageIndex, countPeron);
return new JsonResult(new
{
success = true,
data = resultData,
pageIndex = resultData.Count()
});
}
public IActionResult OnGetCreateInstitutionPlan()
{
var command = _institutionPlanApplication.GetByFirst();
return Partial("CreateServiceModal", command);
}
public IActionResult OnPostCreateInstitutionPlan(CreateInstitutionPlanPercentage command)
{
var result = _institutionPlanApplication.CreateInstitutionPlanPercentage(command);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message
});
}
}
}

View File

@@ -60,7 +60,9 @@
<script src="~/AdminTheme/assets/notifications/notify-metro.js"></script>
<script src="~/AdminTheme/assets/notifications/notifications.js"></script>
<script src="~/assetsadminnew/sidbar_adminnew/sidebar_admin.js"></script>
<script src="~/assetsadminnew/sidbar_adminnew/sidebar_admin.js"></script>
<script src="~/assetsclient/js/services/ajax-service.js"></script>
@* <script src="~/assetsclient/js/smooth-scrollbar.js"></script> *@

View File

@@ -304,6 +304,14 @@
تعطیلات رسمی
</a>
</li>
<li permission="305">
<a class="clik3" asp-area="AdminNew" asp-page="/Company/ServiceAmountsManagement/Index">
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
<circle cx="6.5" cy="6.5" r="6.5" fill="white" />
</svg>
مبالغ سرویس‌ها
</a>
</li>
<li permission="305">
<a class="clik3" asp-area="Admin" asp-page="/Company/MandatoryHours/Index">
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">

View File

@@ -0,0 +1,32 @@
.modal-body {
user-select: none;
}
.titleInput {
font-size: 14px;
color: #4E4E4E;
}
.btn-cancel {
padding: 6px 10px;
width: 190px;
}
.btn-save {
padding: 6px 10px;
width: 190px;
background-color: #84CC16;
border-radius: 5px;
color: #ffffff;
font-size: 14px;
font-style: normal;
font-weight: 600;
line-height: 24px;
}
.percentageInput {
top: 50%;
left: 8px;
color: #8B8B8B;
transform: translate(0, -50%);
}

View File

@@ -0,0 +1,469 @@
.ServiceModal-width {
max-width: 710px;
}
.sticky {
position: sticky;
top: 5px;
z-index: 10;
}
.goToTop {
position: fixed;
bottom: -10px;
margin-right: 100px;
z-index: 100;
color: #fff;
background-color: #25acacd6;
}
.goToTop:hover {
color: #fff;
background-color: #2ca4a4;
}
.btn-create {
background-color: #84CC16;
border-radius: 7px;
color: #ffffff;
padding: 3px 12px;
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 24px;
}
.Rtable .Rtable-row .Rtable-cell.column-heading {
height: 100%;
align-items: center;
justify-content: center;
}
.service-list .Rtable-cell.width2,
.service-list .Rtable-cell.width3,
.service-list .Rtable-cell.width4,
.service-list .Rtable-cell.width5 {
background: #16b7971f;
padding: 8px 0;
}
.service-list .Rtable-cell.width6,
.service-list .Rtable-cell.width7 {
background: #359bb130;
padding: 8px 0;
}
.service-list .Rtable-cell.width8,
.service-list .Rtable-cell.width9,
.service-list .Rtable-cell.width10 {
background: #d3d00836;
padding: 8px 0;
}
.table-service .width1,
.table-service .service-list .width1 {
width: 5% !important;
}
.table-service .width2,
.table-service .service-list .width2 {
width: 10% !important;
}
.table-service .width3,
.table-service .service-list .width3 {
width: 10% !important;
}
.table-service .width4,
.table-service .service-list .width4 {
width: 10% !important;
}
.table-service .width5,
.table-service .service-list .width5 {
width: 10% !important;
}
.table-service .width6,
.table-service .service-list .width6 {
width: 11% !important;
}
.table-service .width7,
.table-service .service-list .width7 {
width: 11% !important;
}
.table-service .width8,
.table-service .service-list .width8 {
width: 11% !important;
}
.table-service .width9,
.table-service .service-list .width9 {
width: 11% !important;
}
.table-service .width10,
.table-service .service-list .width10 {
width: 11% !important;
}
.table-service .width11,
.table-service .service-list .width11 {
width: 95% !important;
}
.table-service .service-list .width3 .Rtable-cell--content,
.table-service .service-list .width7 .Rtable-cell--content {
text-align: center;
text-align: -webkit-center;
}
.table-service .ticket-list .green {
background-color: #C4FFC2;
}
.badget-inprogress {
color: #ffffff;
background-color: #EAB308;
width: 60%;
text-align: center;
padding: 3px 6px;
border-radius: 30px;
display: inline-block;
}
.badget-open {
color: #353535;
background-color: #E2E8F0;
width: 60%;
text-align: center;
padding: 3px 6px;
border-radius: 30px;
display: inline-block;
}
.badget-answer {
color: #ffffff;
background-color: #60A5FA;
width: 60%;
text-align: center;
padding: 3px 6px;
border-radius: 30px;
display: inline-block;
}
.badget-closed {
color: #ffffff;
background-color: #84CC16;
width: 60%;
text-align: center;
padding: 3px 6px;
border-radius: 30px;
display: inline-block;
}
.btn-ticket-detail {
background: rgba(93, 209, 52, 0.3);
border: 0.5px solid #2E8F2F54;
border-radius: 6px;
position: relative;
overflow: hidden;
color: #ffffff;
text-align: right;
font-size: 11px;
padding: 3px;
font-style: normal;
font-weight: 400;
line-height: normal;
white-space: nowrap;
}
.btn-ticket-task {
background: #C9EEFE;
border: 0.5px solid #FFFFFF;
border-radius: 6px;
position: relative;
overflow: hidden;
color: #ffffff;
text-align: right;
font-size: 11px;
padding: 3px;
font-style: normal;
font-weight: 400;
line-height: normal;
white-space: nowrap;
margin: 0 2px;
}
.btn-ticket-edit {
background: rgba(52, 209, 209, 0.3);
border-radius: 6px;
position: relative;
overflow: hidden;
color: #009EE2;
text-align: right;
font-size: 11px;
padding: 3px;
font-style: normal;
font-weight: 400;
line-height: normal;
white-space: nowrap;
}
.btn-ticket-delete {
background: rgba(209, 50, 50, 0.15);
border-radius: 6px;
position: relative;
overflow: hidden;
color: #BF3737;
text-align: right;
font-size: 11px;
padding: 3px;
font-style: normal;
font-weight: 400;
line-height: normal;
white-space: nowrap;
}
.btn-ticket-detail:hover {
background: rgba(93, 209, 52, 0.4);
}
.btn-ticket-edit:hover {
background: rgba(52, 209, 209, 0.5);
}
.btn-ticket-delete:hover {
background: rgba(209, 50, 50, 0.3);
}
.btn-ticket-more {
background: #C7F8F8;
border: 1px solid #0B5959;
border-radius: 7px;
position: relative;
overflow: hidden;
color: #0B5959;
text-align: right;
font-size: 11px;
padding: 3px;
font-style: normal;
font-weight: 400;
line-height: normal;
white-space: nowrap;
}
.btn-ticket-more:hover {
background: #ACD2D2;
}
.table-service .Rtable .Rtable-row .Rtable-cell .Rtable-cell--content > span {
border-radius: 5px;
background: rgba(87, 227, 227, 0.25);
width: 32px;
height: 32px;
display: inline-block;
padding: 0 10px;
font-weight: 600;
}
.operations-btns .span1 {
color: #0B5959;
font-size: 14px;
font-weight: 500;
}
.operations-btns .span2 {
color: #0B5959;
font-size: 13px;
font-weight: 500;
}
.black-background {
background-color: #E3E3E3 !important;
}
.status {
display: inline-block;
padding: 6px;
width: 60px;
border-radius: 20px;
color: #ffffff;
font-weight: 500;
}
.status-green {
background-color: #84cc16;
}
.status-red {
background-color: #ef4444;
}
@media (max-width: 1380px) {
.badget-inprogress,
.badget-answer,
.badget-closed,
.badget-open {
width: 110px;
font-size: 10px;
}
.Rtable .Rtable-row .Rtable-cell .Rtable-cell--content {
font-size: 10px;
}
.table-service .Rtable-cell.column-heading {
font-size: 12px !important;
}
/*.table-service .width1,
.table-service .ticket-list .width1 {
width: 5% !important;
}*/
.table-service .Rtable-cell.column-heading.width2 {
width: 18% !important;
}
.table-service .width2,
.table-service .ticket-list .width2 {
width: 12% !important;
}
/* .table-service .width3,
.table-service .ticket-list .width3 {
width: 5% !important;
}*/
/*/*.table-service .width3,
.table-service .ticket-list .width3 {
width: 17% !important;
text-align: center !important;
}
.table-service .width4,
.table-service .ticket-list .width4 {
width: 15% !important;
}
.table-service .width5,
.table-service .ticket-list .width5 {
width: 15% !important;*/
/*text-align: center !important;*/
/*}*/
.table-service .ticket-list .width3 .Rtable-cell--content {
text-align: center;
text-align: -webkit-center;
}
.table-service .ticket-list .Rtable-cell--content {
font-size: 11px;
}
.table-service .width6,
.table-service .ticket-list .width6 {
width: 16% !important;
}
.table-service .width7,
.table-service .ticket-list .width7 {
width: 8% !important;
text-align: center !important;
}
.table-service .width8,
.table-service .ticket-list .width8 {
width: 5% !important;
}
}
@media (max-width: 992px) {
.table-service .width1 {
width: 4% !important;
}
.table-service .width7, .table-service .ticket-list .width7 {
width: 4% !important;
text-align: end !important;
}
}
@media (max-width: 767px) {
.goToTop {
position: fixed;
bottom: 54px;
margin-right: 39%;
z-index: 100;
color: #fff;
background-color: #25acac70;
}
.Rtable--collapse .Rtable-row {
outline: 0;
border: 1px solid #ECFFFF;
padding: 0;
margin: 5px 0px 0;
}
.Rtable--collapse .Rtable-row .Rtable-cell.width3 .Rtable-cell--content {
justify-content: right;
display: flex;
}
.Rtable--collapse .Rtable-row .Rtable-cell.width8 {
justify-content: end;
}
.Rtable--collapse .Rtable-row .Rtable-cell.width8 {
justify-content: end;
}
.Rtable--collapse .Rtable-row .Rtable-cell.width5 {
justify-content: center;
}
.Rtable--collapse .Rtable-row .Rtable-cell.width4 {
justify-content: center;
}
.Rtable--collapse .Rtable-row .Rtable-cell.width8 .Rtable-cell--content {
justify-content: end;
display: flex;
}
.Rtable--collapse .Rtable-row .Rtable-cell {
border-bottom: 0;
}
.badget-inprogress,
.badget-answer,
.badget-closed {
border-radius: 0;
}
.btn-ticket-detail {
border: 1px solid #248826;
border-radius: 8px;
color: #248826;
background-color: #B7EABA;
}
.table-service .width1,
.table-service .service-list .width1 {
width: 10% !important;
}
.table-service .width11,
.table-service .service-list .width11 {
width: 90% !important;
}
}

View File

@@ -0,0 +1,62 @@
var ajax = new AjaxService(antiForgeryToken);
$(document).ready(function () {
$(".select2Option").select2({
language: "fa",
dir: "rtl",
dropdownParent: $('#MainModal'),
templateResult: function (data, container) {
if (data.element) {
$(container).addClass($(data.element).attr("class"));
}
return data.text;
}
});
$(document).ready(function () {
$('.numeric-only').on('input', function () {
let element = $(this);
let value = convertPersianNumbersToEnglish(element.val());
value = value.replace(/[^0-9]/g, '');
element.val(value);
});
});
});
function SaveDataAjax() {
var loading = $('#createData .spinner-loading');
var data = $('#create-form').serialize();
ajax.post(createInstitutionPlanUrl, data, false)
.then(response => {
if (response.success) {
loading.show();
$('.alert-success-msg').show();
$('.alert-success-msg p').text(response.message);
setTimeout(function () {
$('.alert-success-msg').hide();
$('.alert-success-msg p').text('');
}, 2000);
pageIndexMain = 0;
$('#LoadDataOfServices').html('<div></div>');
ajaxDataService();
loading.hide();
$('#MainModal').modal('hide');
} else {
$('.alert-msg').show();
$('.alert-msg p').text(response.message);
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
loading.hide();
}
});
}

View File

@@ -0,0 +1,211 @@
var ajax = new AjaxService(antiForgeryToken);
var pageIndexMain = 0;
$(document).on('click', ".openAction", function () {
if (window.matchMedia('(max-width: 767px)').matches) {
$(this).next().find(".operations-btns").slideToggle(500);
$(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500);
}
});
$(document).ready(function () {
ajaxDataService();
const { countPerson } = getSearchParamsFromUrl();
$('#countPersonInput').val(countPerson);
$('#countPersonInputMobile').val(countPerson);
if (countPerson !== "") {
$('.btn-clear-filter').removeClass('disable');
} else {
$('.btn-clear-filter').addClass('disable');
}
$(window).scroll(function () {
if ($(window).scrollTop() + $(window).height() > $(document).height() - 600) {
ajaxDataService();
}
if ($(this).scrollTop() > 100) {
$('.goToTop').show().fadeIn();
} else {
$('.goToTop').fadeOut().hide();
}
});
$('.goToTop').on('click', function () {
$('html, body').animate({ scrollTop: 0 }, 360);
return false;
});
$('.btn-search-click').click(function () {
var isMobile = window.matchMedia('(max-width: 767px)').matches;
var inputCountPerson = isMobile ? $('#countPersonInputMobile') : $('#countPersonInput');
if (inputCountPerson.val().trim() === '') {
inputCountPerson.addClass('errored');
$('.alert-msg').show();
$('.alert-msg p').text('لطفا تعداد پرسنل وارد کنید.');
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
inputCountPerson.removeClass('errored');
}, 3500);
return;
}
const { countPerson } = getSearchParamsFromUrl();
var countPersonParams = countPerson;
if (countPersonParams !== '') {
$('.btn-clear-filter').removeClass('disable');
} else {
$('.btn-clear-filter').addClass('disable');
}
paramsUrl(inputCountPerson.val());
pageIndexMain = 0;
$('#LoadDataOfServices').html('<div></div>');
ajaxDataService();
if (isMobile) {
$('#searchModal').modal('hide');
}
});
});
function ajaxDataService() {
var htmlContent = '';
const { countPerson } = getSearchParamsFromUrl();
ajax.get(loadInstitutionPlanListUrl, { pageIndex: pageIndexMain, countPeron: countPerson }, false)
.then(response => {
pageIndexMain = pageIndexMain + response.pageIndex;
var data = response.data;
if (data.length > 0) {
data.forEach(function (item, index) {
htmlContent += `
<div class="service-list Rtable-row align-items-center position-relative openAction p-0">
<div class="Rtable-cell d-block width1">
<div class="Rtable-cell--content text-center">${item.countPerson}</div>
</div>
<div class="Rtable-cell d-md-block d-none width2">
<div class="Rtable-cell--content text-center">${item.contractAndCheckout}</div>
</div>
<div class="Rtable-cell d-md-block d-none width3">
<div class="Rtable-cell--content text-center">${item.insurance}</div>
</div>
<div class="Rtable-cell d-md-block d-none width4">
<div class="Rtable-cell--content text-center">${item.rollCall}</div>
</div>
<div class="Rtable-cell d-md-block d-none width5">
<div class="Rtable-cell--content text-center">${item.customizeCheckout}</div>
</div>
<div class="Rtable-cell d-md-block d-none width6">
<div class="Rtable-cell--content text-center">${item.contractAndCheckoutInPerson}</div>
</div>
<div class="Rtable-cell d-md-block d-none width7">
<div class="Rtable-cell--content text-center">${item.insuranceInPerson}</div>
</div>
<div class="Rtable-cell d-md-block d-none width8">
<div class="Rtable-cell--content text-center">${item.inPersonSumAmountStr}</div>
</div>
<div class="Rtable-cell d-md-block d-none width9">
<div class="Rtable-cell--content text-center">${item.onlineOnlySumAmountStr}</div>
</div>
<div class="Rtable-cell d-md-block d-none width10">
<div class="Rtable-cell--content text-center">${item.onlineAndInPersonSumAmountStr}</div>
</div>
<div class="Rtable-cell d-md-none d-block width11">
<div class="Rtable-cell--content text-end">
<div class="my-1">
<span style="background-color: #B6F2E1;padding: 5px;border-radius: 4px;">عملیات بیشتر</span>
</div>
</div>
</div>
</div>
<div class="operation-div w-100">
<div class="operations-btns">
<div class="row p-0">
<div class="d-flex align-items-center justify-content-between">
<span class="span1">تعداد پرسنل</span>
<span class="span1">${item.countPerson}</span>
</div>
<div class="d-flex align-items-center justify-content-between">
<span class="span2">مبلغ قرداد و تصفیه</span>
<span class="span2">${item.contractAndCheckout} ریال</span>
</div>
<div class="d-flex align-items-center justify-content-between">
<span class="span2">خدمات بیمه</span>
<span class="span2">${item.insurance} ریال</span>
</div>
<div class="d-flex align-items-center justify-content-between">
<span class="span2">خدمات خصور و غیاب</span>
<span class="span2">${item.rollCall} ریال</span>
</div>
<div class="d-flex align-items-center justify-content-between">
<span class="span2">خدمات فیش حقوقی غیر رسمی</span>
<span class="span2">${item.customizeCheckout} ریال</span>
</div>
<div class="d-flex align-items-center justify-content-between">
<span class="span2">خدمات حضوری قرارداد و تصفیه</span>
<span class="span2">${item.contractAndCheckoutInPerson} ریال</span>
</div>
<div class="d-flex align-items-center justify-content-between">
<span class="span2">خدمات حضور بیمه</span>
<span class="span2">${item.insuranceInPerson} ریال</span>
</div>
<div class="d-flex align-items-center justify-content-between">
<span class="span2">خدمات حضوری موسسه</span>
<span class="span2">${item.inPersonSumAmountStr} ریال</span>
</div>
<div class="d-flex align-items-center justify-content-between">
<span class="span2">مبلغ کل خدمات سامانه بدون خدمات خصوری</span>
<span class="span2">${item.onlineOnlySumAmountStr} ریال</span>
</div>
<div class="d-flex align-items-center justify-content-between">
<span class="span2">مبلغ کل خدمات سامانه + خدمات خصوری</span>
<span class="span2">${item.onlineAndInPersonSumAmountStr} ریال</span>
</div>
</div>
</div>
</div>
`;
});
$('#LoadDataOfServices').append(htmlContent);
}
});
}
function openCreateModal() {
AjaxUrlContentModal(showModalNewServiceUrl);
}
function paramsUrl(countPerson) {
const params = new URLSearchParams();
let hasAnyFilter = false;
if (countPerson !== '') {
params.set("count-person", countPerson);
hasAnyFilter = true;
}
const newUrl = hasAnyFilter
? `${window.location.origin}/AdminNew/Company/ServiceAmountsManagement?${params.toString()}`
: `${window.location.origin}/AdminNew/Company/ServiceAmountsManagement`;
window.history.pushState({}, '', newUrl);
}
function getSearchParamsFromUrl() {
const urlParams = new URLSearchParams(window.location.search);
return {
countPerson : urlParams.get("count-person") || ""
};
}