merge from teamwork
This commit is contained in:
@@ -74,7 +74,8 @@ public class AdminMonthlyOverviewListViewModel
|
||||
public string AdminFullName { get; set; }
|
||||
public string EmployerName { get; set; }
|
||||
public string EmployerPhoneNumber { get; set; }
|
||||
public int EmployeeCount { get; set; }
|
||||
public int ContractEmployeeCount { get; set; }
|
||||
public int CheckoutEmployeeCount { get; set; }
|
||||
public AdminMonthlyOverviewStatus Status { get; set; }
|
||||
public bool IsBlock { get; set; }
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
@@ -25,6 +26,7 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
|
||||
|
||||
public async Task<List<AdminMonthlyOverviewListViewModel>> GetWorkshopStatus(AdminMonthlyOverviewSearchModel searchModel)
|
||||
{
|
||||
|
||||
var year = searchModel.Year;
|
||||
var month = searchModel.Month;
|
||||
var accountId = searchModel.AdminAccountId;
|
||||
@@ -32,6 +34,9 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
|
||||
if ($"{year:0000}/{month:00}/01".TryToGeorgianDateTime(out var targetDate) == false)
|
||||
return [];
|
||||
|
||||
_ = $"{year:0000}/{month:00}/01".ToGeorgianDateTime().AddMonthsFa(1, out var nextMonth);
|
||||
|
||||
|
||||
// دریافت اطلاعات ادمین
|
||||
var adminAccount = await _accountContext.Accounts.FirstOrDefaultAsync(x => x.id == searchModel.AdminAccountId);
|
||||
|
||||
@@ -40,28 +45,28 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
|
||||
return [];
|
||||
|
||||
// دریافت طرف حساب های معتبر برای تاریخ مورد نظر
|
||||
var contractingPartyIds = await _companyContext.InstitutionContractSet.AsNoTracking()
|
||||
var contractingPartyIds = _companyContext.InstitutionContractSet.AsNoTracking()
|
||||
.Where(c => c.ContractStartGr <= targetDate && c.ContractEndGr >= targetDate && c.IsActiveString == "true")
|
||||
.Select(c => c.ContractingPartyId)
|
||||
.ToListAsync();
|
||||
.Select(c => c.ContractingPartyId);
|
||||
|
||||
// دریافت کارگاههای مرتبط با اکانت
|
||||
var accountWorkshopIds = await _companyContext.WorkshopAccounts
|
||||
var workshopAccounts = _companyContext.WorkshopAccounts
|
||||
.AsNoTracking()
|
||||
.Where(w => w.AccountId == accountId)
|
||||
.Select(w => w.WorkshopId)
|
||||
.ToListAsync();
|
||||
.Select(w => w.WorkshopId);
|
||||
|
||||
var workshopsHasLeftWorkEmployees = _companyContext.LeftWorkList.Where(x =>
|
||||
(x.StartWorkDate <= targetDate && x.LeftWorkDate.AddDays(-1) >= targetDate)
|
||||
|| (x.StartWorkDate <= nextMonth && x.LeftWorkDate.AddDays(-1) >= nextMonth)&& workshopAccounts.Contains(x.WorkshopId)).Select(x=>x.WorkshopId);
|
||||
|
||||
|
||||
|
||||
|
||||
// دریافت کارگاههای مربوط به طرف حساب و اکانت
|
||||
// Replace the selected code with the following to return a list of anonymous objects containing both workshop and contractingParty
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var workshopsWithContractingParty =await _companyContext.Workshops
|
||||
var workshopsWithContractingParty = await _companyContext.Workshops
|
||||
.AsNoTracking()
|
||||
.Where(w => accountWorkshopIds.Contains(w.id))
|
||||
.Where(w => workshopsHasLeftWorkEmployees.Contains(w.id))
|
||||
.Include(w => w.WorkshopEmployers)
|
||||
.ThenInclude(we => we.Employer)
|
||||
.ThenInclude(e => e.ContractingParty).AsSplitQuery().
|
||||
@@ -78,8 +83,10 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
|
||||
var workshopIds = workshopsWithContractingParty.Select(x => x.Workshop.id).ToList();
|
||||
|
||||
|
||||
// پیدا کردن کارگاههایی که قبلاً برای این ماه/سال AdminMonthlyOverview دارند
|
||||
var adminMonthlyOverviewWorkshopIds = await _companyContext.AdminMonthlyOverviews
|
||||
.AsNoTracking()
|
||||
@@ -92,13 +99,14 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
|
||||
.Except(adminMonthlyOverviewWorkshopIds)
|
||||
.ToList();
|
||||
|
||||
|
||||
|
||||
// ایجاد رکوردهای AdminMonthlyOverview که وجود ندارند
|
||||
if (notExistAdminMonthlyReviewsWorkshopIds.Any())
|
||||
await CreateRangeAdminMonthlyOverview(notExistAdminMonthlyReviewsWorkshopIds, month, year);
|
||||
|
||||
// بهروزرسانی وضعیتها
|
||||
await UpdateAdminMonthlyOverviewStatus(year, month, workshopIds);
|
||||
|
||||
await UpdateAdminMonthlyOverviewStatus(year, month, workshopIds, targetDate, nextMonth);
|
||||
|
||||
if (searchModel.ActivationStatus != IsActive.None)
|
||||
{
|
||||
@@ -125,16 +133,21 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
|
||||
adminMonthlyOverviewsQuery = adminMonthlyOverviewsQuery.Where(x => searchWorkshopId.Contains(x.WorkshopId));
|
||||
}
|
||||
|
||||
var employeeCheckoutCounts = _companyContext.LeftWorkList.Where(x =>
|
||||
x.StartWorkDate <= targetDate && x.LeftWorkDate.AddDays(-1) >= targetDate && workshopIds.Contains(x.WorkshopId))
|
||||
.GroupBy(x => x.WorkshopId).Select(x => new { EmployeeCounts = x.Count(), WorkshopId = x.Key }).ToList();
|
||||
|
||||
var employeeContractCounts = _companyContext.LeftWorkList.Where(x =>
|
||||
x.StartWorkDate <= nextMonth && x.LeftWorkDate.AddDays(-1) >= nextMonth && workshopIds.Contains(x.WorkshopId))
|
||||
.GroupBy(x => x.WorkshopId).Select(x => new { EmployeeCounts = x.Count(), WorkshopId = x.Key }).ToList();
|
||||
|
||||
var adminMonthlyOverviewsList = await adminMonthlyOverviewsQuery.ToListAsync();
|
||||
var employeeCounts = _companyContext.LeftWorkList.Where(x =>
|
||||
x.StartWorkDate < targetDate && x.LeftWorkDate > targetDate && workshopIds.Contains(x.WorkshopId))
|
||||
.GroupBy(x => x.WorkshopId).Select(x => new { EmployeeCounts = x.Count(), WorkshopId = x.Key }).ToList();
|
||||
|
||||
|
||||
var adminMonthlyOverviewList = adminMonthlyOverviewsList.Select(x =>
|
||||
{
|
||||
var employeeCount = employeeCounts.FirstOrDefault(e => e.WorkshopId == x.WorkshopId);
|
||||
var employeeCheckoutCount = employeeCheckoutCounts.FirstOrDefault(e => e.WorkshopId == x.WorkshopId);
|
||||
var employeeContractCount = employeeContractCounts.FirstOrDefault(e => e.WorkshopId == x.WorkshopId);
|
||||
var workshopWithContractingParty =
|
||||
workshopsWithContractingParty.FirstOrDefault(w => w.Workshop.id == x.WorkshopId);
|
||||
|
||||
@@ -154,12 +167,14 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
|
||||
EmployerName = employer?.FullName ?? "",
|
||||
EmployerPhoneNumber = employer?.Phone ?? "",
|
||||
AdminFullName = adminAccount.Fullname,
|
||||
EmployeeCount = employeeCount?.EmployeeCounts ?? 0,
|
||||
CheckoutEmployeeCount = employeeCheckoutCount?.EmployeeCounts ?? 0,
|
||||
ContractEmployeeCount = employeeContractCount?.EmployeeCounts ?? 0,
|
||||
AgentPhoneNumber = "",
|
||||
IsBlock = contractingParty?.IsBlock == "true"
|
||||
};
|
||||
}).OrderBy(x => x.IsBlock).ToList();
|
||||
|
||||
|
||||
return adminMonthlyOverviewList;
|
||||
}
|
||||
|
||||
@@ -193,51 +208,62 @@ public class AdminMonthlyOverviewRepository : RepositoryBase<long, AdminMonthlyO
|
||||
|
||||
}
|
||||
|
||||
private async Task UpdateAdminMonthlyOverviewStatus(int year, int month, List<long> workshopIds)
|
||||
private async Task UpdateAdminMonthlyOverviewStatus(int year, int month, List<long> workshopIds, DateTime targetDate, DateTime nextMonth)
|
||||
{
|
||||
var targetDate = $"{year:0000}/{month:00}/01".ToGeorgianDateTime();
|
||||
_ = $"{year:0000}/{month:00}/01".ToGeorgianDateTime().AddMonthsFa(1, out var nextMonth);
|
||||
|
||||
var workingCheckoutEmployeeIds = _companyContext.LeftWorkList.AsNoTracking()
|
||||
.Where(x => workshopIds.Contains(x.WorkshopId) && x.StartWorkDate <= targetDate && x.LeftWorkDate.AddDays(-1) >= targetDate)
|
||||
.Select(x => new { x.WorkshopId, x.EmployeeId });
|
||||
|
||||
var workingEmployeeIds = (await _companyContext.LeftWorkList.AsNoTracking()
|
||||
.Where(x => workshopIds.Contains(x.WorkshopId) && x.StartWorkDate <= targetDate && x.LeftWorkDate >= targetDate)
|
||||
.Select(x => new { x.WorkshopId, x.EmployeeId })
|
||||
.ToListAsync()).Distinct();
|
||||
var workingContractEmployeeIds = _companyContext.LeftWorkList.AsNoTracking()
|
||||
.Where(x => workshopIds.Contains(x.WorkshopId) && x.StartWorkDate <= nextMonth && x.LeftWorkDate.AddDays(-1) >= nextMonth)
|
||||
.Select(x => new { x.WorkshopId, x.EmployeeId });
|
||||
|
||||
var contractSet = (await _companyContext.Contracts.AsNoTracking()
|
||||
.Where(x => x.ContarctStart <= nextMonth && x.ContractEnd >= nextMonth)
|
||||
.Where(x => x.ContarctStart <= nextMonth && x.ContractEnd >= nextMonth && workshopIds.Contains(x.WorkshopIds))
|
||||
.Select(x => new { x.WorkshopIds, x.EmployeeId })
|
||||
.ToListAsync())
|
||||
.Select(x => (x.WorkshopIds, x.EmployeeId))
|
||||
.ToHashSet();
|
||||
|
||||
var checkoutSet = (await _companyContext.CheckoutSet.AsNoTracking()
|
||||
.Where(x => x.ContractStart <= targetDate && x.ContractEnd >= targetDate)
|
||||
.Where(x => x.ContractStart <= targetDate && x.ContractEnd >= targetDate && workshopIds.Contains(x.WorkshopId))
|
||||
.Select(x => new { x.WorkshopId, x.EmployeeId })
|
||||
.ToListAsync())
|
||||
.Select(x => (x.WorkshopId, x.EmployeeId))
|
||||
.ToHashSet();
|
||||
|
||||
var grouped = workingEmployeeIds.GroupBy(x => x.WorkshopId).ToList();
|
||||
var workingCheckoutGrouping = workingCheckoutEmployeeIds.GroupBy(x => x.WorkshopId).ToList();
|
||||
|
||||
var workshopsWithFullContracts = grouped
|
||||
.Where(g => g.All(emp => contractSet.Contains((emp.WorkshopId, emp.EmployeeId))))
|
||||
.Select(g => g.Key)
|
||||
var workingContractGrouping = workingContractEmployeeIds.GroupBy(x => x.WorkshopId).Select(x => new
|
||||
{
|
||||
WorkshopId = x.Key,
|
||||
Data = x.ToList()
|
||||
}).ToList();
|
||||
|
||||
|
||||
var workshopsContractWithoutEmployees = workshopIds.Except(workingContractGrouping.Select(x => x.WorkshopId)).ToList();
|
||||
|
||||
var workshopsWithFullContracts = workingContractGrouping
|
||||
.Where(g => g.Data.All(emp => contractSet.Contains((emp.WorkshopId, emp.EmployeeId))))
|
||||
.Select(g => g.WorkshopId)
|
||||
.ToList();
|
||||
|
||||
var workshopsWithFullCheckout = grouped
|
||||
var workshopsWithFullCheckout = workingCheckoutGrouping
|
||||
.Where(g => g.All(emp => checkoutSet.Contains((emp.WorkshopId, emp.EmployeeId))))
|
||||
.Select(g => g.Key)
|
||||
.ToList();
|
||||
|
||||
var fullyCoveredWorkshops = workshopsWithFullContracts.Intersect(workshopsWithFullCheckout).ToList();
|
||||
|
||||
var notFullyCoveredWorkshops = grouped
|
||||
.Where(g => g.Any(emp =>
|
||||
!contractSet.Contains((emp.WorkshopId, emp.EmployeeId)) ||
|
||||
!checkoutSet.Contains((emp.WorkshopId, emp.EmployeeId))))
|
||||
.Select(g => g.Key)
|
||||
.ToList();
|
||||
//var notFullyCoveredWorkshops = groupedCheckout
|
||||
// .Where(g => g.Any(emp =>
|
||||
// !contractSet.Contains((emp.WorkshopId, emp.EmployeeId)) ||
|
||||
// !checkoutSet.Contains((emp.WorkshopId, emp.EmployeeId))))
|
||||
// .Select(g => g.Key)
|
||||
// .ToList();
|
||||
|
||||
var notFullyCoveredWorkshops = workshopIds.Except(fullyCoveredWorkshops);
|
||||
|
||||
var adminMonthlyOverviews = _companyContext.AdminMonthlyOverviews
|
||||
.Where(x => x.Month == month && x.Year == year);
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
|
||||
@* Search *@
|
||||
<div class="container-fluid d-block">
|
||||
<div class="container-fluid d-none d-md-block">
|
||||
<div class="row">
|
||||
<div class="search-box card">
|
||||
<div class="row">
|
||||
@@ -114,9 +114,61 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* TabBar *@
|
||||
|
||||
|
||||
<!-- Advance Search Box -->
|
||||
<div class="tw-block md:tw-hidden tw-mb-1">
|
||||
<div class="tw-flex tw-items-center tw-justify-between">
|
||||
<div class="search-box tw-w-full tw-bg-white tw-p-2">
|
||||
<div class="tw-flex tw-items-center tw-justify-between tw-gap-2 tw-mb-2">
|
||||
<div class="tw-w-full">
|
||||
<select class="form-select" id="year-select-mobile" name="YearFa" asp-for="SearchModel.Year">
|
||||
<option value="0" disabled="disabled">سال</option>
|
||||
@foreach (var year in Model.YearlyList)
|
||||
{
|
||||
<option value=@year>@year</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
<div class="tw-w-full">
|
||||
<select class="form-select" id="month-select-mobile" name="MonthFa">
|
||||
<option value="0" disabled="disabled">ماه</option>
|
||||
<option value="1">فروردین</option>
|
||||
<option value="2">اردیبهشت</option>
|
||||
<option value="3">خرداد</option>
|
||||
<option value="4">تیر</option>
|
||||
<option value="5">مرداد</option>
|
||||
<option value="6">شهریور</option>
|
||||
<option value="7">مهر</option>
|
||||
<option value="8">آبان</option>
|
||||
<option value="9">آذر</option>
|
||||
<option value="10">دی</option>
|
||||
<option value="11">بهمن</option>
|
||||
<option value="12">اسفند</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tw-flex tw-justify-between tw-text-center">
|
||||
<button class="btn-search tw-flex tw-items-center tw-justify-center tw-w-full" 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>
|
||||
<!-- End Advance Search Box -->
|
||||
|
||||
|
||||
|
||||
|
||||
@* TabBar *@
|
||||
<div class="tw-overflow-x-auto tw-w-full custom-scrollbar-x mt-3">
|
||||
<div class="tab-bar tw-flex tw-gap-1 tw-whitespace-nowrap tw-w-max ">
|
||||
<button class="tab-bar__tab u-tactile tab-bar__tab--active js-document-click" value="0">
|
||||
@@ -179,6 +231,13 @@
|
||||
<div class="monthly-table__body tw-whitespace-nowrap" id="load-data-html-step4" style="display: none;">
|
||||
</div>
|
||||
|
||||
|
||||
<div id="loadingSkeleton" style="display: contents;">
|
||||
@for (int j = 0; j < 30; j++)
|
||||
{
|
||||
<div class="skeleton-loader" style="margin: 3px 0 !important;height: 35px;"></div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -187,30 +246,20 @@
|
||||
<div class="monthly-table ">
|
||||
<div class="monthly-table__head tw-font-[600] tw-mb-1 tw-flex tw-h-[35px] tw-items-center tw-whitespace-nowrap tw-rounded-[5px] tw-bg-[#3B73D0] tw-px-2 tw-text-white tw-text-[14px]">
|
||||
<div class="monthly-table__head-cell tw-w-[2%]">ردیف</div>
|
||||
<div class="monthly-table__head-cell tw-w-[13%] tw-text-center">ش بایگانی</div>
|
||||
<div class="monthly-table__head-cell tw-w-[15%] tw-text-center">نام کارگاه</div>
|
||||
<div class="monthly-table__head-cell tw-w-[15%] tw-text-center">نام کارفرما</div>
|
||||
<div class="monthly-table__head-cell tw-w-[5%] tw-text-center">استان</div>
|
||||
<div class="monthly-table__head-cell tw-w-[5%] tw-text-center">شهرستان</div>
|
||||
<div class="monthly-table__head-cell tw-w-[35%] tw-text-center">جزئیات نشانی </div>
|
||||
|
||||
<div class="monthly-table__head-cell tw-w-[7%] tw-text-center">ش بایگانی</div>
|
||||
<div class="monthly-table__head-cell tw-w-[18%] tw-text-start">نام کارگاه</div>
|
||||
<div class="monthly-table__head-cell tw-w-[14%] tw-text-start">نام کارفرما</div>
|
||||
<div class="monthly-table__head-cell tw-w-[7%] tw-text-center">استان</div>
|
||||
<div class="monthly-table__head-cell tw-w-[7%] tw-text-center">شهرستان</div>
|
||||
<div class="monthly-table__head-cell tw-w-[35%] tw-text-start">جزئیات نشانی </div>
|
||||
<div class="monthly-table__head-cell tw-w-[10%] tw-text-center">وضعیت</div>
|
||||
</div>
|
||||
<div class="monthly-table__body tw-whitespace-nowrap" id="load-data-html-stepAll">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@* //--------- Mobile --------- *@
|
||||
@* Monthly Table Mobile *@
|
||||
<div class="monthly-card-mobile tw-block md:tw-hidden " id="overviewSteps-mobile">
|
||||
@@ -218,7 +267,7 @@
|
||||
<div class="monthly-table__head tw-font-[500] tw-mb-[3px] tw-flex tw-h-[35px] tw-items-center tw-whitespace-nowrap tw-rounded-[5px] tw-bg-[#3B73D0] tw-px-2 tw-text-white tw-text-[8px] md:tw-font-[600] md:tw-text-[14px]">
|
||||
<div class="monthly-table__head-cell tw-w-[5%] tw-text tw-text-center">ردیف</div>
|
||||
<div class="monthly-table__head-cell tw-w-[20%] tw-text-center">ش بایگانی</div>
|
||||
<div class="monthly-table__head-cell tw-w-[25%] tw-text-center">نام کارگاه</div>
|
||||
<div class="monthly-table__head-cell tw-w-[25%] tw-text-right">نام کارگاه</div>
|
||||
<div class="monthly-table__head-cell tw-w-[40%] tw-text-center">شماره تماس نماینده</div>
|
||||
<div class="monthly-table__head-cell tw-w-[10%] tw-text-end">عملیات</div>
|
||||
</div>
|
||||
@@ -259,6 +308,78 @@
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Modal From Bottom For Advance Search -->
|
||||
<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">
|
||||
|
||||
<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 class="tw-grid tw-grid-cols-2 md:tw-grid-cols-12 gap-2">
|
||||
<div class="tw-col-span-1 md:tw-col-span-2">
|
||||
<select class="form-select EmployerSelect2OptionMobile" aria-label="انتخاب کارفرما" id="employer-select-mobile" name="employerName">
|
||||
<option value="0">انتخاب کارفرما</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="tw-col-span-1 md:tw-col-span-2">
|
||||
<select class="form-select WorkshopSelect2OptionMobile" aria-label="نام کارگاه /شماره بایگانی ..." id="workshop-select-mobile" data-selected-name="نام کارگاه /شماره بایگانی ...">
|
||||
<option value="0"> نام کارگاه /شماره بایگانی </option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="tw-col-span-1 md:tw-col-span-2">
|
||||
<select class="form-select AdminPersonnelNameSelect2OptionMobile" aria-label="انتخاب اعضاء" id="admin-personnel-select-mobile" name="adminpersonnelName">
|
||||
<option value=""> انتخاب اعضاء </option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="">
|
||||
<select class="form-select" id="status-select-mobile" name="status">
|
||||
<option value="2" selected="selected">فعال/غیر فعال</option>
|
||||
<option value="1">فعال</option>
|
||||
<option value="0">غیر فعال</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<a href="/AdminNew/Company/MonthlyOverview" class="btn-clear-filter disable py-2 text-center d-block w-100 mt-2">
|
||||
<span class="w-100">حذف جستجو</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-6 text-end">
|
||||
<button type="button" class="btn-cancel w-100" data-bs-dismiss="modal">بستن</button>
|
||||
</div>
|
||||
<div class="col-6 text-start">
|
||||
<button type="submit" class="btn-search btn-search-click-mobile w-100">جستجو</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Modal From Bottom For Advance Search -->
|
||||
@section Script {
|
||||
<script src="~/assetsclient/js/site.js?ver=@adminVersion"></script>
|
||||
<script src="~/assetsclient/libs/jalaali-js/jalaali.js"></script>
|
||||
|
||||
@@ -19,4 +19,3 @@
|
||||
"tailwindcss": "^3.4.17"
|
||||
}
|
||||
}
|
||||
د
|
||||
@@ -156,10 +156,10 @@
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
width: max-content;
|
||||
max-width: 300px;
|
||||
/*max-width: 400px;*/
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
text-align: start;
|
||||
border-radius: 4px;
|
||||
padding: 5px 8px;
|
||||
z-index: 100000;
|
||||
@@ -221,7 +221,7 @@
|
||||
.monthly-table__toggle-value {
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
color: #818181
|
||||
color: #818181;
|
||||
}
|
||||
/*Awaiting reference Table*/
|
||||
.monthly-table__stage-button {
|
||||
@@ -272,10 +272,15 @@
|
||||
.monthly-table__status-button {
|
||||
width: 166px;
|
||||
height: 35px;
|
||||
|
||||
}
|
||||
|
||||
.monthly-table__status-button--documents-setup {
|
||||
background-color: #C8C8C8 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media(max-width:768px) {
|
||||
.monthly-table__toggle-value {
|
||||
white-space: break-spaces;
|
||||
}
|
||||
}
|
||||
@@ -10,18 +10,27 @@
|
||||
$("#employer-select").val(employer);
|
||||
$("#workshop-select").val(workshopAndArchive);
|
||||
|
||||
$('#year-select-mobile').val(year !== "0" ? year : Number($('#year-select').val()));
|
||||
$("#month-select-mobile").val(month !== "0" ? month : currentMonth);
|
||||
$("#employer-select-mobile").val(employer);
|
||||
$("#workshop-select-mobile").val(workshopAndArchive);
|
||||
|
||||
if (workshopAndArchive && workshopAndArchiveName) {
|
||||
const option = new Option(workshopAndArchiveName, workshopAndArchive, true, true);
|
||||
$("#workshop-select").append(option).trigger('change');
|
||||
$("#workshop-select-mobile").append(option).trigger('change');
|
||||
}
|
||||
|
||||
if (employer && employerName) {
|
||||
const option = new Option(employerName, employer, true, true);
|
||||
$("#employer-select").append(option).trigger('change');
|
||||
$("#employer-select-mobile").append(option).trigger('change');
|
||||
}
|
||||
|
||||
$("#admin-personnel-select").val(adminPersonnel);
|
||||
$("#admin-personnel-select-mobile").val(adminPersonnel);
|
||||
$("#status-select").val(status !== "" ? status : 2);
|
||||
$("#status-select-mobile").val(status !== "" ? status : 2);
|
||||
|
||||
if (year !== "0" || month !== '0' || employer !== '0' || workshopAndArchive !== '0' || adminPersonnel !== '0' || status !== '') {
|
||||
$('.btn-clear-filter').removeClass('disable');
|
||||
@@ -63,6 +72,40 @@
|
||||
//dropdownParent: $('#MainModal')
|
||||
});
|
||||
|
||||
$(".EmployerSelect2OptionMobile").select2({
|
||||
language: "fa",
|
||||
dir: "rtl",
|
||||
ajax: {
|
||||
url: employerSelectListUrl,
|
||||
dataType: 'json',
|
||||
delay: 250,
|
||||
data: function (params) {
|
||||
return {
|
||||
search: params.term
|
||||
};
|
||||
},
|
||||
processResults: function (response) {
|
||||
const originalList = response.data.map(item => ({
|
||||
id: item.id,
|
||||
text: item.name
|
||||
}));
|
||||
|
||||
const manualItems = [
|
||||
{ id: 0, text: 'انتخاب کارفرما ...' }
|
||||
];
|
||||
|
||||
const finalList = manualItems.concat(originalList);
|
||||
|
||||
return {
|
||||
results: finalList
|
||||
};
|
||||
},
|
||||
cache: false
|
||||
},
|
||||
minimumInputLength: 0,
|
||||
dropdownParent: $('#searchModal')
|
||||
});
|
||||
|
||||
$(".WorkshopSelect2Option").select2({
|
||||
language: "fa",
|
||||
dir: "rtl",
|
||||
@@ -97,37 +140,92 @@
|
||||
//dropdownParent: $('#MainModal')
|
||||
});
|
||||
|
||||
$(".WorkshopSelect2OptionMobile").select2({
|
||||
language: "fa",
|
||||
dir: "rtl",
|
||||
ajax: {
|
||||
url: workshopSelectListUrl,
|
||||
dataType: 'json',
|
||||
delay: 250,
|
||||
data: function (params) {
|
||||
return {
|
||||
search: params.term
|
||||
};
|
||||
},
|
||||
processResults: function (response) {
|
||||
const originalList = response.data.map(item => ({
|
||||
id: item.id,
|
||||
text: item.name + " - " + item.archiveCode
|
||||
}));
|
||||
|
||||
const manualItems = [
|
||||
{ id: 0, text: 'انتخاب نام کارگاه /شماره بایگانی ...' }
|
||||
];
|
||||
|
||||
const finalList = manualItems.concat(originalList);
|
||||
|
||||
return {
|
||||
results: finalList
|
||||
};
|
||||
},
|
||||
cache: false
|
||||
},
|
||||
minimumInputLength: 0,
|
||||
dropdownParent: $('#searchModal')
|
||||
});
|
||||
|
||||
$(".AdminPersonnelNameSelect2Option").select2({
|
||||
language: "fa",
|
||||
dir: "rtl"
|
||||
//dropdownParent: $('#MainModal')
|
||||
});
|
||||
|
||||
$(".AdminPersonnelNameSelect2OptionMobile").select2({
|
||||
language: "fa",
|
||||
dir: "rtl",
|
||||
dropdownParent: $('#MainModal')
|
||||
});
|
||||
|
||||
|
||||
$("#status-select").select2({
|
||||
language: "fa",
|
||||
dir: "rtl"
|
||||
//dropdownParent: $('#MainModal')
|
||||
});
|
||||
$("#status-select-mobile").select2({
|
||||
language: "fa",
|
||||
dir: "rtl",
|
||||
dropdownParent: $('#searchModal')
|
||||
});
|
||||
|
||||
$("#year-select").select2({
|
||||
language: "fa",
|
||||
dir: "rtl"
|
||||
//dropdownParent: $('#MainModal')
|
||||
});
|
||||
$("#year-select-mobile").select2({
|
||||
language: "fa",
|
||||
dir: "rtl",
|
||||
dropdownParent: $('#searchModal')
|
||||
});
|
||||
|
||||
$("#month-select").select2({
|
||||
language: "fa",
|
||||
dir: "rtl"
|
||||
//dropdownParent: $('#MainModal')
|
||||
});
|
||||
$("#month-select-mobile").select2({
|
||||
language: "fa",
|
||||
dir: "rtl",
|
||||
dropdownParent: $('#searchModal')
|
||||
});
|
||||
|
||||
await ajaxAdminPersonnel();
|
||||
await loadMonthlyOverviewData();
|
||||
});
|
||||
|
||||
// Open Div Mobile
|
||||
$(document).on('click', '.monthly-table__row' ,function () {
|
||||
$(document).on('click', '.monthly-table__row', function () {
|
||||
var container = $(this).closest('.monthly-table__container');
|
||||
var toggleDiv = container.find('.monthly-table__toggle');
|
||||
var isOpen = toggleDiv.hasClass('show');
|
||||
@@ -155,22 +253,22 @@ $(document).on('click', '.btn-search-click, .btn-search-click-mobile', function
|
||||
var filterStatus = status;
|
||||
|
||||
if (window.matchMedia('(max-width: 767px)').matches) {
|
||||
filterYear = $('#year-select').val();
|
||||
filterMonth = $('#month-select').val().trim();
|
||||
filterEmployer = $('#employer-select').val().trim();
|
||||
filterEmployerName = $('#employer-select').select2('data')[0].text;
|
||||
filterWorkshopAndArchive = $('#workshop-select').val();
|
||||
filterWorkshopAndArchiveName = $("#workshop-select").select2('data')[0].text;
|
||||
filterAdminPersonnel = $('#admin-personnel-select').val().trim();
|
||||
filterStatus = $('#status-select').val();
|
||||
filterYear = $('#year-select-mobile').val();
|
||||
filterMonth = $('#month-select-mobile').val();
|
||||
filterEmployer = $('#employer-select-mobile').val();
|
||||
filterEmployerName = $('#employer-select-mobile').select2('data')[0].text;
|
||||
filterWorkshopAndArchive = $('#workshop-select-mobile').val();
|
||||
filterWorkshopAndArchiveName = $("#workshop-select-mobile").select2('data')[0].text;
|
||||
filterAdminPersonnel = $('#admin-personnel-select-mobile').val();
|
||||
filterStatus = $('#status-select-mobile').val();
|
||||
} else {
|
||||
filterYear = $('#year-select').val();
|
||||
filterMonth = $('#month-select').val().trim();
|
||||
filterEmployer = $('#employer-select').val().trim();
|
||||
filterMonth = $('#month-select').val();
|
||||
filterEmployer = $('#employer-select').val();
|
||||
filterEmployerName = $('#employer-select').select2('data')[0].text;
|
||||
filterWorkshopAndArchive = $('#workshop-select').val();
|
||||
filterWorkshopAndArchiveName = $("#workshop-select").select2('data')[0].text;
|
||||
filterAdminPersonnel = $('#admin-personnel-select').val().trim();
|
||||
filterAdminPersonnel = $('#admin-personnel-select').val();
|
||||
filterStatus = $('#status-select').val();
|
||||
}
|
||||
|
||||
@@ -182,6 +280,11 @@ $(document).on('click', '.btn-search-click, .btn-search-click-mobile', function
|
||||
|
||||
paramsUrl(filterYear, filterMonth, filterEmployer, filterEmployerName, filterWorkshopAndArchive, filterWorkshopAndArchiveName, filterAdminPersonnel, filterStatus);
|
||||
|
||||
var isMobile = window.matchMedia('(max-width: 767px)').matches;
|
||||
if (isMobile) {
|
||||
$('#searchModal').modal('hide');
|
||||
}
|
||||
|
||||
loadMonthlyOverviewData();
|
||||
});
|
||||
|
||||
@@ -237,6 +340,14 @@ $(document).on('click', '.js-document-click', function () {
|
||||
});
|
||||
|
||||
async function loadMonthlyOverviewData() {
|
||||
$('#load-data-html-step0').html('');
|
||||
$('#load-data-html-step1').html('');
|
||||
$('#load-data-html-step2').html('');
|
||||
$('#load-data-html-step3').html('');
|
||||
$('#load-data-html-step4').html('');
|
||||
$('#load-data-html-stepAll').html('');
|
||||
$("#loadingSkeleton").show();
|
||||
|
||||
var html = '';
|
||||
|
||||
const { year, month, employer, employerName, workshopAndArchive, workshopAndArchiveName, adminPersonnel, status } = getSearchParamsFromUrl();
|
||||
@@ -272,7 +383,6 @@ async function loadMonthlyOverviewData() {
|
||||
var countStatusStep5 = responseData.length;
|
||||
$("#step5-badge").text(countStatusStep5).toggle(countStatusStep5 > 0);
|
||||
|
||||
|
||||
if (responseData.length > 0) {
|
||||
initialDocument(responseData);
|
||||
monthlyOverviewStatusDocument(responseData);
|
||||
@@ -291,6 +401,8 @@ async function loadMonthlyOverviewData() {
|
||||
$('#load-data-html-step4').html(html);
|
||||
$('#load-data-html-stepAll').html(html);
|
||||
}
|
||||
|
||||
$("#loadingSkeleton").hide();
|
||||
} catch (err) {
|
||||
console.error("خطا در ajax.post:", err);
|
||||
}
|
||||
@@ -341,8 +453,8 @@ function initialDocument(data) {
|
||||
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل :</span>
|
||||
<span class="monthly-table__toggle-value">${item.employeeCount} نفر</span>
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل قرارداد:</span>
|
||||
<span class="monthly-table__toggle-value">${item.contractEmployeeCount} نفر</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -350,6 +462,11 @@ function initialDocument(data) {
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label tw-w-[50%] ">شماره تماس کارفرما :</span>
|
||||
<span class="monthly-table__toggle-value tw-w-[50%]">${item.employerPhoneNumber}</span>
|
||||
</div>
|
||||
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل تصفیه:</span>
|
||||
<span class="monthly-table__toggle-value">${item.checkoutEmployeeCount} نفر</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -371,7 +488,7 @@ function initialDocument(data) {
|
||||
</div>
|
||||
<div class="monthly-table__cell tw-w-[20%] tw-text-center">${item.workshopArchiveCode}</div>
|
||||
|
||||
<div class="monthly-table__cell tw-w-[40%] tw-text-center tw-text-xs"><div class="monthly-table__cell-title">${item.workshopName}</div></div>
|
||||
<div class="monthly-table__cell tw-w-[40%] tw-text-right tw-text-xs"><div class="monthly-table__cell-title">${item.workshopName}</div></div>
|
||||
<div class="monthly-table__cell tw-w-[10%] tw-text-center">${item.agentPhoneNumber}</div>
|
||||
|
||||
|
||||
@@ -505,14 +622,18 @@ function monthlyOverviewStatusDocument(data) {
|
||||
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل :</span>
|
||||
<span class="monthly-table__toggle-value">${item.employeeCount} نفر</span>
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل قرارداد:</span>
|
||||
<span class="monthly-table__toggle-value">${item.contractEmployeeCount} نفر</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="monthly-table__toggle-row tw-flex tw-gap-2">
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label tw-w-[50%] ">شماره تماس کارفرما :</span>
|
||||
<span class="monthly-table__toggle-value tw-w-[50%]">${item.employerPhoneNumber}</span>
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل تصفیه:</span>
|
||||
<span class="monthly-table__toggle-value">${item.checkoutEmployeeCount} نفر</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -659,8 +780,8 @@ function monthlyOverviewStatusDocument(data) {
|
||||
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل :</span>
|
||||
<span class="monthly-table__toggle-value">${item.employeeCount} نفر</span>
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل قرارداد:</span>
|
||||
<span class="monthly-table__toggle-value">${item.contractEmployeeCount} نفر</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -668,6 +789,10 @@ function monthlyOverviewStatusDocument(data) {
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label tw-w-[50%] ">شماره تماس کارفرما :</span>
|
||||
<span class="monthly-table__toggle-value tw-w-[50%]">${item.employerPhoneNumber}</span>
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل تصفیه:</span>
|
||||
<span class="monthly-table__toggle-value">${item.checkoutEmployeeCount} نفر</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -816,8 +941,8 @@ function monthlyOverviewStatusDocument(data) {
|
||||
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل :</span>
|
||||
<span class="monthly-table__toggle-value">${item.employeeCount} نفر</span>
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل قرارداد:</span>
|
||||
<span class="monthly-table__toggle-value">${item.contractEmployeeCount} نفر</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -826,6 +951,10 @@ function monthlyOverviewStatusDocument(data) {
|
||||
<span class="monthly-table__toggle-label tw-w-[50%] ">شماره تماس کارفرما :</span>
|
||||
<span class="monthly-table__toggle-value tw-w-[50%]">${item.employerPhoneNumber}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل تصفیه:</span>
|
||||
<span class="monthly-table__toggle-value">${item.checkoutEmployeeCount} نفر</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@@ -973,8 +1102,8 @@ function monthlyOverviewStatusDocument(data) {
|
||||
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل :</span>
|
||||
<span class="monthly-table__toggle-value">${item.employeeCount} نفر</span>
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل قرارداد:</span>
|
||||
<span class="monthly-table__toggle-value">${item.contractEmployeeCount} نفر</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -983,6 +1112,10 @@ function monthlyOverviewStatusDocument(data) {
|
||||
<span class="monthly-table__toggle-label tw-w-[50%] ">شماره تماس کارفرما :</span>
|
||||
<span class="monthly-table__toggle-value tw-w-[50%]">${item.employerPhoneNumber}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل تصفیه:</span>
|
||||
<span class="monthly-table__toggle-value">${item.checkoutEmployeeCount} نفر</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@@ -1107,13 +1240,20 @@ function allWorkshops(data) {
|
||||
</div>
|
||||
</div>
|
||||
<div class="monthly-table__cell tw-w-[7%] tw-text-center">${item.workshopArchiveCode}</div>
|
||||
<div class="monthly-table__cell tw-w-[15%] tw-text-right">${item.workshopName}</div>
|
||||
<div class="monthly-table__cell tw-w-[15%] tw-text-center">${item.employerName}</div>
|
||||
<div class="monthly-table__cell tw-w-[8%] tw-text-center">${item.province}</div>
|
||||
<div class="monthly-table__cell tw-w-[8%] tw-text-center">${item.city}</div>
|
||||
<div class="monthly-table__cell tw-w-[35%] tw-text-center">
|
||||
<div class="monthly-table__cell tw-w-[18%] tw-text-start">${item.workshopName}</div>
|
||||
<div class="monthly-table__cell tw-w-[14%] tw-text-start">${item.employerName}</div>
|
||||
<div class="monthly-table__cell tw-w-[7%] tw-text-center">${item.province}</div>
|
||||
<div class="monthly-table__cell tw-w-[7%] tw-text-center">
|
||||
<div class="tooltip-container tw-text-center">
|
||||
<div class="tooltip__trigger tw-truncate tw-text-center">${item.address}</div>
|
||||
<div class="tooltip__trigger tw-truncate tw-text-center">${item.city}</div>
|
||||
<div class="tooltip-container__text">
|
||||
${item.city}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="monthly-table__cell tw-w-[35%] tw-text-start">
|
||||
<div class="tooltip-container tw-text-start">
|
||||
<div class="tooltip__trigger tw-truncate tw-text-start">${item.address}</div>
|
||||
<div class="tooltip-container__text">
|
||||
${item.address}
|
||||
</div>
|
||||
@@ -1154,22 +1294,26 @@ function allWorkshops(data) {
|
||||
<div class="monthly-table__toggle tw-mx-auto tw-flex tw-w-[97%] tw-gap-2 tw-flex-col tw-px-2">
|
||||
|
||||
<div class="monthly-table__toggle-row tw-flex tw-gap-2">
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-w-[35%] ">
|
||||
<span class="monthly-table__toggle-label tw-w-[50%] ">نام کارفرما :</span>
|
||||
<span class="monthly-table__toggle-value tw-w-[50%] "> ${item.employerName}</span>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label tw-w-[50%]">نام کارفرما :</span>
|
||||
<span class="monthly-table__toggle-value tw-w-[50%]"> ${item.employerName}</span>
|
||||
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label ">تعداد پرسنل :</span>
|
||||
<span class="monthly-table__toggle-value ">${item.employeeCount} نفر</span>
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل قرارداد:</span>
|
||||
<span class="monthly-table__toggle-value">${item.contractEmployeeCount} نفر</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="monthly-table__toggle-row tw-flex tw-gap-2">
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-w-[35%] ">
|
||||
<span class="monthly-table__toggle-label tw-w-[50%] ">شماره تماس کارفرما :</span>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label tw-w-[50%]">شماره تماس کارفرما :</span>
|
||||
<span class="monthly-table__toggle-value tw-w-[50%]">${item.employerPhoneNumber}</span>
|
||||
</div>
|
||||
<div class="monthly-table__toggle-item tw-mb-2 tw-flex tw-flex tw-gap-40 tw-gap-2 tw-w-[35%]">
|
||||
<span class="monthly-table__toggle-label">تعداد پرسنل تصفیه:</span>
|
||||
<span class="monthly-table__toggle-value">${item.checkoutEmployeeCount} نفر</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@@ -1181,7 +1325,7 @@ function allWorkshops(data) {
|
||||
<div class="monthly-table__row tw-font-[500] tw-flex tw-h-[35px] tw-items-center tw-rounded-[5px] tw-bg-[#DFF0FF] tw-px-2 tw-text-[12px] md:tw-font-[400] md:tw-text-[14px]">
|
||||
<div class="monthly-table__cell tw-w-[10%]">
|
||||
<div class="monthly-table__cell-card monthly-table__cell-card--small tw-text-right">
|
||||
${indexNumberMobile ++}
|
||||
${indexNumberMobile++}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1316,14 +1460,19 @@ async function ajaxAdminPersonnel() {
|
||||
optionsHtml += `<option value="${item.id}" ${item.id === adminAccountId ? `selected` : ``}>${item.name}</option>`;
|
||||
});
|
||||
$('#admin-personnel-select').html(optionsHtml);
|
||||
$('#admin-personnel-select-mobile').html(optionsHtml);
|
||||
|
||||
const { year, month, employer, employerName, workshopAndArchive, workshopAndArchiveName, adminPersonnel, status } = getSearchParamsFromUrl();
|
||||
if (![2, 3].includes(adminAccountId)) {
|
||||
$('#admin-personnel-select').prop('disabled', true).closest("div").addClass('disable');
|
||||
$("#admin-personnel-select").val(adminAccountId).trigger('change');
|
||||
$('#admin-personnel-select-mobile').prop('disabled', true).closest("div").addClass('disable');
|
||||
$("#admin-personnel-select-mobile").val(adminAccountId).trigger('change');
|
||||
} else {
|
||||
$('#admin-personnel-select').prop('disabled', false).closest("div").removeClass('disable');
|
||||
$("#admin-personnel-select").val(adminPersonnel).trigger('change');
|
||||
$('#admin-personnel-select-mobile').prop('disabled', false).closest("div").removeClass('disable');
|
||||
$("#admin-personnel-select-mobile").val(adminPersonnel).trigger('change');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user