Refactor bug report pages to use string identifiers and improve styling
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
@page "{id:long}"
|
||||
@page
|
||||
@model ServiceHost.Areas.AdminNew.Pages.BugReport.DeleteModel
|
||||
|
||||
@{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@page "{id:long}"
|
||||
@page
|
||||
@model ServiceHost.Areas.AdminNew.Pages.BugReport.DetailsModel
|
||||
|
||||
@{
|
||||
|
||||
@@ -8,9 +8,10 @@ public class DetailsModel : BugReportPageModel
|
||||
{
|
||||
}
|
||||
|
||||
public void OnGet(Guid id)
|
||||
public void OnGet(string id)
|
||||
{
|
||||
BugReportDetails = GetBugReportDetails(id);
|
||||
var guid = Guid.Parse(id);
|
||||
BugReportDetails = GetBugReportDetails(guid);
|
||||
if (BugReportDetails == null)
|
||||
{
|
||||
TempData["ErrorMessage"] = "گزارش خرابی یافت نشد";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@page "{id:long}"
|
||||
@page
|
||||
@model ServiceHost.Areas.AdminNew.Pages.BugReport.EditModel
|
||||
|
||||
@{
|
||||
|
||||
@@ -3,6 +3,21 @@
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "مدیریت گزارشهای خرابی";
|
||||
<style>
|
||||
.table-hover tbody tr:hover {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.badge {
|
||||
padding: 0.35rem 0.65rem;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.btn-sm {
|
||||
padding: 0.25rem 0.5rem;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
</style>
|
||||
}
|
||||
|
||||
<div class="container-fluid mt-4">
|
||||
@@ -141,7 +156,7 @@
|
||||
<small>@report.CreationDate.ToString("yyyy-MM-dd HH:mm")</small>
|
||||
</td>
|
||||
<td>
|
||||
<a href="./Details?id=@report.Id.ToString()" class="btn btn-sm btn-info">مشاهده</a>
|
||||
<a asp-page="./Details" asp-route-id="@report.Id" fdsf="@report.Id" class="btn btn-sm btn-info">مشاهده</a>
|
||||
<a asp-page="./Edit" asp-route-id="@report.Id" class="btn btn-sm btn-warning">ویرایش</a>
|
||||
<a asp-page="./Delete" asp-route-id="@report.Id" class="btn btn-sm btn-danger" onclick="return confirm('آیا مطمئن هستید؟');">حذف</a>
|
||||
</td>
|
||||
@@ -163,19 +178,5 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.table-hover tbody tr:hover {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.badge {
|
||||
padding: 0.35rem 0.65rem;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.btn-sm {
|
||||
padding: 0.25rem 0.5rem;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@@ -1,212 +0,0 @@
|
||||
@model AccountManagement.Application.Contracts.Task.EditTask
|
||||
@using AccountManagement.Application.Contracts.Media
|
||||
@using Version = _0_Framework.Application.Version
|
||||
|
||||
@{
|
||||
MediaViewModel voice = new();
|
||||
}
|
||||
|
||||
@{
|
||||
<script src="~/AssetsClient/js/jquery-ui.js"></script>
|
||||
|
||||
<link href="~/assetsadminnew/tasks/css/task-manager-create.css?ver=@Version.AdminVersion" rel="stylesheet" />
|
||||
<link href="~/AssetsClient/css/select2.css?ver=@Version.AdminVersion" rel="stylesheet" />
|
||||
<link href="~/assetsadminnew/tasks/css/detailmodal.css?ver=@Version.AdminVersion" rel="stylesheet" />
|
||||
}
|
||||
|
||||
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-header d-block text-center">
|
||||
<button type="button" class="btn-close position-absolute text-start" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
@{
|
||||
if (Model.IsDone)
|
||||
{
|
||||
<h5 class="modal-title" id="assignToLabel">جزئیات وظیفه</h5>
|
||||
}
|
||||
else
|
||||
{
|
||||
<h5 class="modal-title" id="assignToLabel">جزئیات</h5>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="modal-body detailTask">
|
||||
<div class="container-fluid">
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">طرف حساب: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded">
|
||||
<div class="detailTitleText">@Model.ContractingPartyName</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">عنوان وظیفه: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded">
|
||||
<div class="detailTitleText">@Model.Title</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-6">
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-6 text-end">
|
||||
<div class="detailTitle">تاریخ انجام: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6 border rounded">
|
||||
<div class="detailTitleText text-center">@Model.EndTaskDate</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-6 text-end">
|
||||
<div class="detailTitle">ساعت انجام: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6 border rounded">
|
||||
<div class="detailTitleText text-center"> @Model.EndTaskTime</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">توضیحات: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded p-2 overflow-auto">
|
||||
<p class="">@Html.Raw(Model.Description)</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(Model.CompleteDescription))
|
||||
{
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">توضیحات تکمیلی: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded p-2 overflow-auto">
|
||||
<p class="">@Html.Raw(Model.CompleteDescription)</p>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">فایل: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9" id="upload-container">
|
||||
<div class="d-block d-md-flex align-items-center">
|
||||
@foreach (var item in Model.medias)
|
||||
{
|
||||
if (item.Category == "فایل")
|
||||
{
|
||||
<div class="d-flex justify-content-between align-items-center mx-1">
|
||||
<div class="upload-box empty">
|
||||
@if (item.Path.EndsWith(".jpg") || item.Path.EndsWith(".jpeg") || item.Path.EndsWith(".png") || item.Path.EndsWith(".gif") || item.Path.EndsWith(".webp"))
|
||||
{
|
||||
<section class="gallery">
|
||||
<section class="container">
|
||||
<div class="row p-0">
|
||||
<div class="lightbox_img_wrap">
|
||||
<img class="lightbox-enabled min-img" src="@Url.Page("./Index", "ShowPicture", new { filePath = item.Path })" data-imgsrc="@Url.Page("./Index", "ShowPicture", new { filePath = item.Path })" id="@Model.Id" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="lightbox-container">
|
||||
|
||||
<span class="material-symbols-outlined material-icons lightbox-btn left" id="left">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5 8.25 12l7.5-7.5" />
|
||||
</svg>
|
||||
</span>
|
||||
<span class="material-symbols-outlined material-icons lightbox-btn right" id="right">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5" />
|
||||
</svg>
|
||||
</span>
|
||||
<span id="close" class="close material-icons material-symbols-outlined">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
|
||||
</svg>
|
||||
</span>
|
||||
<div class="lightbox-image-wrapper">
|
||||
<img alt="lightboximage" class="lightbox-image">
|
||||
|
||||
</div>
|
||||
</section>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a href="@Url.Page("./Index", "GetFile", new { filePath = item.Path ,id=Model.Id})">دانلود</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">پیام صوتی: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 overflow-hidden" id="upload-container-voice">
|
||||
@foreach (var item in Model.medias)
|
||||
{
|
||||
if (item.Category == "صوت")
|
||||
{
|
||||
voice = item;
|
||||
<div class="audio-player border rounded">
|
||||
<div id="waveform" class="waveform"></div>
|
||||
<button id="play-pause" class="player-btn play"></button>
|
||||
</div>
|
||||
@* <div class="controls">
|
||||
<span id="current-time">0:00</span>
|
||||
<span id="duration">0:00</span>
|
||||
</div> *@
|
||||
@* <audio controls style="width: 100%; height: 30px">
|
||||
<source src='@Url.Page("./Index", "ShowVoice", new { filePath = item.Path })' type="audio/ogg">
|
||||
Your browser does not support the audio element.
|
||||
</audio> *@
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modal-footer justify-content-center align-items-center">
|
||||
<div class="row">
|
||||
<div class="col-12 text-end">
|
||||
<button type="button" class="btn-cancel2" data-bs-dismiss="modal">بستن</button>
|
||||
</div>
|
||||
@* <div class="col-6 text-start">
|
||||
<button id="save" type="button" class="btn-register text-white">ثبت</button>
|
||||
<button style="display: none;" type="submit" id="saveFinaly"></button>
|
||||
</div> *@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="~/assetsclient/libs/jalaali-js/jalaali.js"></script>
|
||||
<script src="~/assetsclient/js/site.js"></script>
|
||||
<script src="~/admintheme/js/jquery.mask_1.14.16.min.js"></script>
|
||||
<script src="~/AssetsAdminNew/libs/wavesurfer/wavesurfer.min.js"></script>
|
||||
<script>
|
||||
var antiForgeryToken = $('@Html.AntiForgeryToken()').val()
|
||||
var createSaveTaskAjax = '@Url.Page("/Company/Task/Create", "CreateSaveTask")';
|
||||
var voiceSrc = '@Url.Page("./Index", "ShowVoice", new { filePath = voice.Path })';
|
||||
|
||||
|
||||
</script>
|
||||
<script src="~/assetsadminnew/tasks/js/detailmodal.js"></script>
|
||||
@@ -1,579 +0,0 @@
|
||||
@model AccountManagement.Application.Contracts.Task.OperationModalViewModel
|
||||
@using Version = _0_Framework.Application.Version
|
||||
|
||||
@{
|
||||
<script src="~/AssetsClient/js/jquery-ui.js"></script>
|
||||
<link href="~/assetsadminnew/tasks/css/task-manager-create.css?ver=@Version.AdminVersion" rel="stylesheet" />
|
||||
<link href="~/AssetsClient/css/select2.css?ver=@Version.AdminVersion" rel="stylesheet" />
|
||||
<link href="~/assetsadminnew/tasks/css/operationrequestmodal.css?ver=@Version.AdminVersion" rel="stylesheet" />
|
||||
<link href="~/assetsadminnew/tasks/css/detailmodal.css?ver=@Version.AdminVersion" rel="stylesheet" />
|
||||
}
|
||||
@{
|
||||
<input type="hidden" value="@Model.TaskId" id="TaskId" />
|
||||
|
||||
switch (Model.Type)
|
||||
{
|
||||
case "request_time":
|
||||
|
||||
<div class="modal-content tm-create">
|
||||
<div class="modal-header d-block text-center">
|
||||
<button type="button" class="btn-close position-absolute text-start" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
<h5 class="modal-title" id="assignToLabel">جزئیات درخواست مهلت</h5>
|
||||
</div>
|
||||
|
||||
<div class="modal-body detailTask">
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">طرف حساب: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded">
|
||||
<div class="detailTitleText">@Model.TaskDetails.ContractingPartyName</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">عنوان وظیفه: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded">
|
||||
<div class="detailTitleText">@Model.TaskDetails.Title</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-6">
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-6 text-end">
|
||||
<div class="detailTitle">تاریخ انجام: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6 border rounded">
|
||||
<div class="detailTitleText text-center">@Model.TaskDetails.EndTaskDate</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="row ms-1">
|
||||
<div class="col-12 col-sm-6 text-end">
|
||||
<div class="detailTitle">ساعت انجام: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6 border rounded">
|
||||
<div class="detailTitleText text-center"> @Model.TaskDetails.EndTaskTime</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">توضیحات: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded p-2 overflow-auto">
|
||||
<p class="">@Html.Raw(Model.TaskDetails.Description)</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">تاریخ درخواست: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded">
|
||||
<div class="detailTitleText">@Model.ModalTaskRequest.RequestTaskDate</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle"> توضیحات درخواست: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded p-2 overflow-auto">
|
||||
<p class="">@Html.Raw(Model.ModalTaskRequest.TimeRequestDescription)</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">فایل: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9" id="upload-container">
|
||||
<div class="d-block d-md-flex align-items-center">
|
||||
@foreach (var item in Model.TaskDetails.medias)
|
||||
{
|
||||
if (item.Category == "فایل")
|
||||
{
|
||||
<div class="d-flex justify-content-between align-items-center mx-1">
|
||||
<div class="upload-box empty">
|
||||
@if (item.Path.EndsWith(".jpg") || item.Path.EndsWith(".jpeg") || item.Path.EndsWith(".png") || item.Path.EndsWith(".gif") || item.Path.EndsWith(".webp"))
|
||||
{
|
||||
<section class="gallery">
|
||||
<section class="container">
|
||||
<div class="row p-0">
|
||||
<div class="lightbox_img_wrap">
|
||||
<img class="lightbox-enabled" src="@Url.Page("./Index", "ShowPicture", new { filePath = item.Path })" data-imgsrc="@Url.Page("./Index", "ShowPicture", new { filePath = item.Path })" id="@Model.TaskDetails.Id" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="lightbox-container">
|
||||
|
||||
<span class="material-symbols-outlined material-icons lightbox-btn left" id="left">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5 8.25 12l7.5-7.5" />
|
||||
</svg>
|
||||
</span>
|
||||
<span class="material-symbols-outlined material-icons lightbox-btn right" id="right">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5" />
|
||||
</svg>
|
||||
</span>
|
||||
<span id="close" class="close material-icons material-symbols-outlined">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
|
||||
</svg>
|
||||
</span>
|
||||
<div class="lightbox-image-wrapper">
|
||||
<img alt="lightboximage" class="lightbox-image">
|
||||
|
||||
</div>
|
||||
</section>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a href="@Url.Page("./Index", "GetFile", new { filePath = item.Path ,id=Model.TaskDetails.Id})">دانلود</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">پیام صوتی: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 overflow-hidden" id="upload-container-voice">
|
||||
@foreach (var item in Model.TaskDetails.medias)
|
||||
{
|
||||
if (item.Category == "صوت")
|
||||
{
|
||||
<audio controls style="width: 100%; height: 30px">
|
||||
<source src='@Url.Page("./Index", "ShowVoice", new { filePath = item.Path })' type="audio/ogg">
|
||||
Your browser does not support the audio element.
|
||||
</audio>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer d-block">
|
||||
<div class="row justify-content-center align-items-center d-flex mb-3" permission="90123">
|
||||
<div class="col-3 col-sm-3">
|
||||
<div class="justify-content-center align-items-center d-flex">
|
||||
<label class="label-time-request" for="checkActiveDate">تغییر تاریخ</label>
|
||||
<input type="checkbox" class="form-check-custom mx-1" id="checkActiveDate"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-9 col-sm-9">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<input type="text" class="form-control mx-1 date disable" value="" id="inputChangeDate" disabled/>
|
||||
<button id="saveChangeTimeRequest" type="button" class="btn-change-date disable" disabled>ثبت</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 text-center">
|
||||
<button permission="90122" type="button" class="btn-rejectTo" id="saveRejectTimeRequest">
|
||||
رد
|
||||
</button>
|
||||
<button permission="90122" type="button" class="btn-register" id="saveAcceptTimeRequest" style="width: auto">
|
||||
تائید
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer justify-content-center align-items-center">
|
||||
<div class="row">
|
||||
<div class="col-12 text-end">
|
||||
<button type="button" class="btn-cancel2" data-bs-dismiss="modal">بستن</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
|
||||
case "cancel_request":
|
||||
<div class="modal-content tm-create">
|
||||
<div class="modal-header d-block text-center">
|
||||
<button type="button" class="btn-close position-absolute text-start" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
<h5 class="modal-title" id="assignToLabel">درخواست انصراف وظیفه</h5>
|
||||
</div>
|
||||
<div class="modal-body detailTask">
|
||||
|
||||
<div class="container-fluid">
|
||||
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">طرف حساب: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded">
|
||||
<div class="detailTitleText">@Model.TaskDetails.ContractingPartyName</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3">
|
||||
<div class="detailTitle">عنوان وظیفه: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded">
|
||||
<div class="detailTitleText">@Model.TaskDetails.Title</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-6">
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-6 text-end">
|
||||
<div class="detailTitle">تاریخ انجام: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6 border rounded">
|
||||
<div class="detailTitleText text-center">@Model.TaskDetails.EndTaskDate</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="row ms-1">
|
||||
<div class="col-12 col-sm-6 text-end">
|
||||
<div class="detailTitle">ساعت انجام: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6 border rounded">
|
||||
<div class="detailTitleText text-center"> @Model.TaskDetails.EndTaskTime</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">توضیحات: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded p-2 overflow-auto">
|
||||
<p class="">@Html.Raw(Model.TaskDetails.Description)</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle"> توضیحات درخواست: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded p-2 overflow-auto">
|
||||
<p class="">@Html.Raw(Model.ModalTaskRequest.CancelDescription)</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">فایل: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9" id="upload-container">
|
||||
<div class="d-block d-md-flex align-items-center">
|
||||
@foreach (var item in Model.TaskDetails.medias)
|
||||
{
|
||||
if (item.Category == "فایل")
|
||||
{
|
||||
<div class="d-flex justify-content-between align-items-center mx-1">
|
||||
<div class="upload-box empty">
|
||||
@if (item.Path.EndsWith(".jpg") || item.Path.EndsWith(".jpeg") || item.Path.EndsWith(".png") || item.Path.EndsWith(".gif") || item.Path.EndsWith(".webp"))
|
||||
{
|
||||
<section class="gallery">
|
||||
<section class="container">
|
||||
<div class="row p-0">
|
||||
<div class="lightbox_img_wrap">
|
||||
<img class="lightbox-enabled" src="@Url.Page("./Index", "ShowPicture", new { filePath = item.Path })" data-imgsrc="@Url.Page("./Index", "ShowPicture", new { filePath = item.Path })" id="@Model.TaskDetails.Id" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="lightbox-container">
|
||||
|
||||
<span class="material-symbols-outlined material-icons lightbox-btn left" id="left">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5 8.25 12l7.5-7.5" />
|
||||
</svg>
|
||||
</span>
|
||||
<span class="material-symbols-outlined material-icons lightbox-btn right" id="right">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5" />
|
||||
</svg>
|
||||
</span>
|
||||
<span id="close" class="close material-icons material-symbols-outlined">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
|
||||
</svg>
|
||||
</span>
|
||||
<div class="lightbox-image-wrapper">
|
||||
<img alt="lightboximage" class="lightbox-image">
|
||||
|
||||
</div>
|
||||
</section>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a href="@Url.Page("./Index", "GetFile", new { filePath = item.Path ,id=Model.TaskDetails.Id})">دانلود</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">پیام صوتی: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 overflow-hidden" id="upload-container-voice">
|
||||
@foreach (var item in Model.TaskDetails.medias)
|
||||
{
|
||||
if (item.Category == "صوت")
|
||||
{
|
||||
<audio controls style="width: 100%; height: 30px">
|
||||
<source src='@Url.Page("./Index", "ShowVoice", new { filePath = item.Path })' type="audio/ogg">
|
||||
Your browser does not support the audio element.
|
||||
</audio>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer d-block">
|
||||
<div class="row">
|
||||
<div class="col-12 text-center">
|
||||
<button permission="90122" type="button" class="btn-rejectTo" id="saveRejectCancelRequest">
|
||||
رد
|
||||
</button>
|
||||
<button permission="90122" type="button" class="btn-register" id="saveAcceptCancelRequest" style="width: auto">
|
||||
تائید
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modal-footer justify-content-center align-items-center">
|
||||
<div class="row">
|
||||
<div class="col-12 text-end">
|
||||
<button type="button" class="btn-cancel2" data-bs-dismiss="modal">بستن</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
|
||||
|
||||
case "complete_request":
|
||||
<div class="modal-content tm-create">
|
||||
<div class="modal-header d-block text-center">
|
||||
<button type="button" class="btn-close position-absolute text-start" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
<h5 class="modal-title" id="assignToLabel">درخواست تائید وظیفه</h5>
|
||||
</div>
|
||||
|
||||
<div class="modal-body detailTask">
|
||||
<div class="container-fluid">
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">طرف حساب: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded">
|
||||
<div class="detailTitleText">@Model.TaskDetails.ContractingPartyName</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">عنوان وظیفه: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded">
|
||||
<div class="detailTitleText">@Model.TaskDetails.Title</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-6">
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-6 text-end">
|
||||
<div class="detailTitle">تاریخ انجام: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6 border rounded">
|
||||
<div class="detailTitleText text-center">@Model.TaskDetails.EndTaskDate</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="row ms-1">
|
||||
<div class="col-12 col-sm-6 text-end">
|
||||
<div class="detailTitle">ساعت انجام: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6 border rounded">
|
||||
<div class="detailTitleText text-center"> @Model.TaskDetails.EndTaskTime</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">توضیحات: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded p-2 overflow-auto">
|
||||
<p class="">@Html.Raw(Model.TaskDetails.Description)</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle"> توضیحات درخواست: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 border rounded p-2 overflow-auto">
|
||||
<p class="">@Html.Raw(Model.ModalTaskRequest.IsDoneDescription)</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">فایل: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9" id="upload-container">
|
||||
<div class="d-block d-md-flex align-items-center">
|
||||
@foreach (var item in Model.TaskDetails.medias)
|
||||
{
|
||||
if (item.Category == "فایل")
|
||||
{
|
||||
<div class="d-flex justify-content-between align-items-center mx-1">
|
||||
<div class="upload-box empty">
|
||||
@if (item.Path.EndsWith(".jpg") || item.Path.EndsWith(".jpeg") || item.Path.EndsWith(".png") || item.Path.EndsWith(".gif") || item.Path.EndsWith(".webp"))
|
||||
{
|
||||
<section class="gallery">
|
||||
<section class="container">
|
||||
<div class="row p-0">
|
||||
<div class="lightbox_img_wrap">
|
||||
<img class="lightbox-enabled" src="@Url.Page("./Index", "ShowPicture", new { filePath = item.Path })" data-imgsrc="@Url.Page("./Index", "ShowPicture", new { filePath = item.Path })" id="@Model.TaskDetails.Id"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="lightbox-container">
|
||||
|
||||
<span class="material-symbols-outlined material-icons lightbox-btn left" id="left">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5 8.25 12l7.5-7.5"/>
|
||||
</svg>
|
||||
</span>
|
||||
<span class="material-symbols-outlined material-icons lightbox-btn right" id="right">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5"/>
|
||||
</svg>
|
||||
</span>
|
||||
<span id="close" class="close material-icons material-symbols-outlined">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/>
|
||||
</svg>
|
||||
</span>
|
||||
<div class="lightbox-image-wrapper">
|
||||
<img alt="lightboximage" class="lightbox-image">
|
||||
|
||||
</div>
|
||||
</section>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a href="@Url.Page("./Index", "GetFile", new { filePath = item.Path, id = Model.TaskDetails.Id })">دانلود</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-12 col-sm-3 text-end">
|
||||
<div class="detailTitle">پیام صوتی: </div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-9 overflow-hidden" id="upload-container-voice">
|
||||
@foreach (var item in Model.TaskDetails.medias)
|
||||
{
|
||||
if (item.Category == "صوت")
|
||||
{
|
||||
<audio controls style="width: 100%; height: 30px">
|
||||
<source src='@Url.Page("./Index", "ShowVoice", new { filePath = item.Path })' type="audio/ogg">
|
||||
Your browser does not support the audio element.
|
||||
</audio>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer d-block">
|
||||
<div class="row">
|
||||
<div class="col-12 text-center">
|
||||
<button permission="90122" type="button" class="btn-rejectTo" id="saveRejectCompleteRequest">
|
||||
رد
|
||||
</button>
|
||||
<button permission="90122" type="button" class="btn-register" id="saveAcceptCompleteRequest" style="width: auto">
|
||||
تائید
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer justify-content-center align-items-center">
|
||||
<div class="row">
|
||||
<div class="col-12 text-end">
|
||||
<button type="button" class="btn-cancel2" data-bs-dismiss="modal">بستن</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
<script src="~/assetsclient/libs/jalaali-js/jalaali.js"></script>
|
||||
<script src="~/assetsclient/js/site.js"></script>
|
||||
<script src="~/admintheme/js/jquery.mask_1.14.16.min.js"></script>
|
||||
<script>
|
||||
var antiForgeryToken = $('@Html.AntiForgeryToken()').val();
|
||||
var createSaveTaskAjax = '@Url.Page("/Company/Task/Create", "CreateSaveTask")';
|
||||
var AntiForgeryToken = $('@Html.AntiForgeryToken()').val();
|
||||
var changeTime = '@Url.Page("./Index", "ChangeTime")';
|
||||
var AcceptTimeRequest = '@Url.Page("./Index", "AcceptTimeRequest")';
|
||||
var RejectTimeRequest = '@Url.Page("./Index", "RejectTimeRequest")';
|
||||
var RejectCancel = '@Url.Page("./Index", "RejectCancel")';
|
||||
var AcceptCancel = '@Url.Page("./Index", "AcceptCancel")';
|
||||
var RejectComplete = '@Url.Page("./Index", "RejectComplete")';
|
||||
var AcceptComplete = '@Url.Page("./Index", "AcceptComplete")';
|
||||
</script>
|
||||
<script src="~/assetsadminnew/tasks/js/operationrequestmodal.js"></script>
|
||||
<script src="~/assetsadminnew/tasks/js/detailmodal.js?ver=@Version.AdminVersion"></script>
|
||||
|
||||
|
||||
@@ -1,698 +0,0 @@
|
||||
@model AccountManagement.Application.Contracts.Ticket.EditTicket
|
||||
|
||||
@{
|
||||
}
|
||||
|
||||
<div class="modal-content">
|
||||
<div class="modal-header d-block text-center">
|
||||
<button type="button" class="btn-close position-absolute text-start" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
<h5 class="modal-title" id="ticketModalLabel">پشتیبانی @Model.TicketNumber</h5>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row ">
|
||||
<div class="col-12">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<span class="textTitle1">@Model.ContractingPartyName</span>
|
||||
<span class="textTitle1">@Model.WorkshopName </span>
|
||||
</div>
|
||||
<div class="textTitle2">شماره تماس: @Model.Sender.Mobile</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-lg-12">
|
||||
|
||||
|
||||
<div class="ticket-message-container" id="messageContent">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-message-container mt-2">
|
||||
<div class="col-6">
|
||||
<input type="hidden" asp-for="Id"/>
|
||||
<div class="message-input-div">
|
||||
<textarea id="Response" class="form-control" rows="2"> </textarea>
|
||||
<button type="button" class="btn-send loadingButton" id="saveClientResponseTicket">
|
||||
<span>ارسال</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 class="col-3">
|
||||
<button class="upload-file" id="upload-voice-ticket-table">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="9" y="3" width="6" height="11" rx="3" fill="#29B4B4" stroke="white" stroke-width="1.2" stroke-linejoin="round"/>
|
||||
<path d="M5.4 11C5.4 12.7504 6.09536 14.4292 7.3331 15.6669C8.57084 16.9046 10.2496 17.6 12 17.6C13.7504 17.6 15.4292 16.9046 16.6669 15.6669C17.9046 14.4292 18.6 12.7504 18.6 11" stroke="white" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M12 21V19" stroke="white" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
<span>پیام صوتی</span>
|
||||
</button>
|
||||
<input type="file" class="d-none" id="Command_Voice">
|
||||
</div>
|
||||
|
||||
<div class="col-3">
|
||||
<div class="d-flex justify-content-between align-items-center position-relative">
|
||||
<button class="upload-file" id="upload-doc-msg" type="submit">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5 5C5 3.89543 5.89543 3 7 3H11.75C11.8881 3 12 3.11193 12 3.25V8C12 9.10457 12.8954 10 14 10H18.75C18.8881 10 19 10.1119 19 10.25V19C19 20.1046 18.1046 21 17 21H7C5.89543 21 5 20.1046 5 19V5Z" fill="white" />
|
||||
<path d="M13 8V3.60355C13 3.38083 13.2693 3.26929 13.4268 3.42678L18.5732 8.57322C18.7307 8.73071 18.6192 9 18.3964 9H14C13.4477 9 13 8.55228 13 8Z" fill="#29B4B4" />
|
||||
<path d="M12 11.5V17.5" stroke="#29B4B4" stroke-linecap="round" />
|
||||
<path d="M9 14.5H15" stroke="#29B4B4" stroke-linecap="round" />
|
||||
</svg>
|
||||
<span>بارگذاری تصاویر</span>
|
||||
</button>
|
||||
|
||||
<input type="file" class="d-none" id="Command_Document1" accept=".pdf,.doc,.docx,.txt, image/*">
|
||||
<input type="file" class="d-none" id="Command_Document2" accept=".pdf,.doc,.docx,.txt, image/*">
|
||||
<input type="file" class="d-none" id="Command_Document3" accept=".pdf,.doc,.docx,.txt, image/*">
|
||||
<input type="file" class="d-none" id="Command_Document4" accept=".pdf,.doc,.docx,.txt, image/*">
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mx-1 posistion-absolute" id="upload-container-doc">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="fileItems" style="display: none"></div>
|
||||
<div id="voiceItem" style="display: none"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mx-1" id="upload-container-voice">
|
||||
<div class="upload-box-voice loadingButton" id="msg_box_ticket_table">
|
||||
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer justify-content-center">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<button type="button" class="btn-cancel2" data-bs-dismiss="modal">انصراف</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
var antiForgeryToken = $('@Html.AntiForgeryToken()').val();
|
||||
var sendMsgTicketAjax = '@Url.Page("/Company/Ticket/Index", "SaveClientResponseTicket")';
|
||||
var uploadFileTicketAjax = '@Url.Page("/Company/Ticket/Index", "UploadFile")';
|
||||
var deleteFileTicketAjax = '@Url.Page("/Company/Ticket/Index", "DeleteFile")';
|
||||
var deleteAllFilesTicketAjax = '@Url.Page("/Company/Ticket/Index", "RemoveAllTempFiles")';
|
||||
|
||||
$(document).ready(function () {
|
||||
loadMessages();
|
||||
setTimeout(function () {
|
||||
$('#messageContent').animate({
|
||||
scrollTop: $('#messageContent').get(0).scrollHeight
|
||||
}, 1200);
|
||||
}, 900);
|
||||
});
|
||||
|
||||
// برای اینتر زدن که پیام مستقیم ارسال میشود
|
||||
// $('#Response').keypress(function (e) {
|
||||
// var key = e.which;
|
||||
// if(key == 13)
|
||||
// {
|
||||
// $('#saveClientResponseTicket').click();
|
||||
// return false;
|
||||
// }
|
||||
// });
|
||||
// برای اینتر زدن که پیام مستقیم ارسال میشود
|
||||
|
||||
|
||||
$('#saveClientResponseTicket').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
var TicketId = $('#Id').val();
|
||||
var Response = $('#Response').val();
|
||||
|
||||
// var textArea = $('#Description');
|
||||
// var content = textArea.val();
|
||||
//content = content.replace(/\n/g, '<br>');
|
||||
// textArea.val(content);
|
||||
|
||||
// console.log(Response);
|
||||
// return;
|
||||
|
||||
var files = document.querySelectorAll('input[name*=UploadedFileIds]');
|
||||
var textVoiceId = document.querySelector('input[name=VoiceId]');
|
||||
|
||||
var formData = new FormData();
|
||||
formData.append('TicketId', TicketId);
|
||||
formData.append('Response', Response);
|
||||
|
||||
if (files.length > 0) {
|
||||
for (var i = 0; i < files.length; i++)
|
||||
formData.append('UploadedFileIds', files[i].value);
|
||||
}
|
||||
|
||||
if (textVoiceId) {
|
||||
formData.append('VoiceId', textVoiceId.value);
|
||||
}
|
||||
// var data = new FormData(this.form);
|
||||
|
||||
|
||||
$('#saveClientResponseTicket').prop('disabled', true);
|
||||
|
||||
$.ajax({
|
||||
async: false,
|
||||
dataType: 'json',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
url: sendMsgTicketAjax,
|
||||
headers: { "RequestVerificationToken": antiForgeryToken },
|
||||
data: formData,
|
||||
success: function (response) {
|
||||
console.log(response);
|
||||
if (response.isSuccedd) {
|
||||
loadMessages();
|
||||
$('#saveClientResponseTicket').prop('disabled', false);
|
||||
$('#Response').val('');
|
||||
$('input[name*=UploadedFileIds]').remove();
|
||||
$('input[name=VoiceId]').remove();
|
||||
$('.upload-box').remove();
|
||||
$('#Command_Document1').val('');
|
||||
$('#Command_Document2').val('');
|
||||
$('#Command_Document3').val('');
|
||||
$('#Command_Document4').val('');
|
||||
$('#Command_Voice').val('');
|
||||
msg_box.innerHTML = lang.press_to_start;
|
||||
button.classList.remove('recording');
|
||||
btn_status = 'inactive';
|
||||
audio.src = '';
|
||||
} else {
|
||||
$('.alert-msg').show();
|
||||
$('.alert-msg p').text(response.message);
|
||||
setTimeout(function () {
|
||||
$('.alert-msg').hide();
|
||||
$('.alert-msg p').text('');
|
||||
}, 3500);
|
||||
|
||||
$('#saveClientResponseTicket').prop('disabled', false);
|
||||
}
|
||||
},
|
||||
error: function (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
function loadMessages() {
|
||||
var TicketId = $('#Id').val();
|
||||
var html = '';
|
||||
|
||||
$.ajax({
|
||||
async: false,
|
||||
dataType: 'json',
|
||||
type: 'GET',
|
||||
url: `@Url.Page("/Company/Ticket/Index", "ShowDetailTicketMessagesAjax")`,
|
||||
headers: { "RequestVerificationToken": antiForgeryToken },
|
||||
data: { ticketID: TicketId },
|
||||
success: function (response) {
|
||||
var responseTickets = response.ticketDetail;
|
||||
console.log(response.ticketDetail);
|
||||
html += `<div class="ticket-message-sender">
|
||||
<div class="header-message">
|
||||
<span>${responseTickets.sender.fullname}</span>
|
||||
<span>${responseTickets.creationDateStr}</span>
|
||||
</div>
|
||||
<p>
|
||||
${responseTickets.description === '$GOzaReshgirMediaVoIce@@' ? '' : responseTickets.description}
|
||||
</p>`;
|
||||
var inBox = "inBox";
|
||||
html += `<div class="footer-message-attachment ${inBox}">`;
|
||||
$.each(responseTickets.mediaViewModels, function (i, item) {
|
||||
if (item.category == 'اسکرین شات') {
|
||||
if (item.path.endsWith(".jpg") || item.path.endsWith(".jpeg") || item.path.endsWith(".png") || item.path.endsWith(".gif") || item.path.endsWith(".webp")) {
|
||||
var urlPage1 = `/Client/Company/Ticket/Index?handler=ShowPicture&filePath=${item.path}`;
|
||||
html += `<img class="file-attach lightbox-enabled" src="${urlPage1}" id="${responseTickets.id}" />`;
|
||||
}
|
||||
}
|
||||
if (item.category == "فایل") {
|
||||
if (item.path.endsWith(".jpg") || item.path.endsWith(".jpeg") || item.path.endsWith(".png") || item.path.endsWith(".gif") || item.path.endsWith(".webp")) {
|
||||
var urlPage1 = `/Client/Company/Ticket/Index?handler=ShowPicture&filePath=${item.path}`;
|
||||
html += `<img class="file-attach lightbox-enabled" src="${urlPage1}" id="${responseTickets.id}" />`;
|
||||
} else {
|
||||
var urlPage2 = `/Client/Company/Ticket/Index?handler=GetFile&filePath=${item.path}&id=${TicketId}`;
|
||||
html += `<a href="${urlPage2}">دانلود</a>`;
|
||||
}
|
||||
}
|
||||
if (item.category == "صوت") {
|
||||
voice = item;
|
||||
html += `<div class="audio-player border rounded">
|
||||
<div id="waveform" class="waveform">sss</div>
|
||||
<button id="play-pause" class="player-btn play"></button>
|
||||
</div>`;
|
||||
}
|
||||
});
|
||||
html += `</div></div>`;
|
||||
|
||||
responseTickets.responseViewModels.forEach(function (itemResponse) {
|
||||
|
||||
if (itemResponse.isClient) {
|
||||
html += `
|
||||
<div class="ticket-message-sender">
|
||||
<div class="header-message">
|
||||
<span>${responseTickets.sender.fullname}</span>
|
||||
<span>${itemResponse.creationDateStr}</span>
|
||||
</div>
|
||||
<p>
|
||||
${itemResponse.responseMessage === '$GOzaReshgirMediaVoIce@@' ? '' : itemResponse.responseMessage}
|
||||
</p>`;
|
||||
|
||||
var inBox1 = "inBox";
|
||||
html += `<div class="footer-message-attachment ${inBox1}">`;
|
||||
itemResponse.mediaViewModels.forEach(function (file) {
|
||||
if (file.category == "فایل")
|
||||
{
|
||||
if (file.path.endsWith(".jpg") || file.path.endsWith(".jpeg") || file.path.endsWith(".png") || file.path.endsWith(".gif") || file.path.endsWith(".webp"))
|
||||
{
|
||||
var urlPage1 = `/Client/Company/Ticket/Index?handler=ShowPicture&filePath=${file.path}`;
|
||||
html += `<img class="file-attach lightbox-enabled" src="${urlPage1}" id="${responseTickets.id}" />`;
|
||||
}
|
||||
else {
|
||||
var urlPage2 = `/Client/Company/Ticket/Index?handler=GetFile&filePath=${file.path}&id=${TicketId}`;
|
||||
html += `<a href="${urlPage2}">دانلود</a>`;
|
||||
}
|
||||
}
|
||||
if (file.category == "صوت") {
|
||||
voice = file;
|
||||
html += `<div class="audio-player border rounded">
|
||||
<div id="waveform" class="waveform">sss</div>
|
||||
<button id="play-pause" class="player-btn play"></button>
|
||||
</div>`;
|
||||
}
|
||||
});
|
||||
|
||||
html += `</div>`;
|
||||
|
||||
@* <div class="footer-message-attachment">
|
||||
<div class="file-attach"></div>
|
||||
</div> *@
|
||||
|
||||
html += `</div>`;
|
||||
|
||||
}
|
||||
if (itemResponse.isAdmin) {
|
||||
|
||||
html += `<div class="ticket-message-reciever">
|
||||
<div class="header-message">
|
||||
<span>پشتیبانی</span>
|
||||
<span>${itemResponse.creationDateStr}</span>
|
||||
</div>
|
||||
<p>${itemResponse.responseMessage}</p>
|
||||
</div>`;
|
||||
|
||||
|
||||
var inBox2 = "inBox";
|
||||
html += `<div class="footer-message-attachment ${inBox2}">`;
|
||||
itemResponse.mediaViewModels.forEach(function (fileAdmin) {
|
||||
if (fileAdmin.category == "فایل")
|
||||
{
|
||||
if (fileAdmin.path.endsWith(".jpg") || fileAdmin.path.endsWith(".jpeg") || fileAdmin.path.endsWith(".png") || fileAdmin.path.endsWith(".gif") || fileAdmin.path.endsWith(".webp")) {
|
||||
var urlPage1 = `/Client/Company/Ticket/Index?handler=ShowPicture&filePath=${fileAdmin.path}`;
|
||||
html += `<img class="file-attach lightbox-enabled" src="${urlPage1}" id="${responseTickets.id}" />`;
|
||||
}
|
||||
else {
|
||||
var urlPage2 = `/Client/Company/Ticket/Index?handler=GetFile&filePath=${fileAdmin.path}&id=${TicketId}`;
|
||||
html += `<a href="${urlPage2}">دانلود</a>`;
|
||||
}
|
||||
}
|
||||
if (fileAdmin.category == "صوت") {
|
||||
voice = fileAdmin;
|
||||
html += `<div class="audio-player border rounded">
|
||||
<div id="waveform" class="waveform">sss</div>
|
||||
<button id="play-pause" class="player-btn play"></button>
|
||||
</div>`;
|
||||
}
|
||||
});
|
||||
html += `</div>`;
|
||||
}
|
||||
});
|
||||
|
||||
$('#messageContent').html(html);
|
||||
|
||||
$('#messageContent').animate({
|
||||
scrollTop: $('#messageContent').get(0).scrollHeight
|
||||
}, 1200);
|
||||
},
|
||||
error: function (err) {
|
||||
console.log(err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$(document).ready(function () {
|
||||
$(document).on('click', '#upload-doc-msg', function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
let files = [
|
||||
document.getElementById("Command_Document1"),
|
||||
document.getElementById("Command_Document2"),
|
||||
document.getElementById("Command_Document3"),
|
||||
document.getElementById("Command_Document4")
|
||||
];
|
||||
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
if (files[i].files.length == 0) {
|
||||
attachFileChangeHandler(files[i], i + 1, '.inBox' + (i + 1));
|
||||
$('#' + files[i].id).click();
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function attachFileChangeHandler(fileInput, id, boxClass) {
|
||||
$('#' + fileInput.id).off('change').on('change', function (e) {
|
||||
e.preventDefault();
|
||||
var fileInputFile = fileInput.files[0];
|
||||
if (fileInputFile) {
|
||||
uploadFile(fileInputFile, id, boxClass);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var indexCount = 0;
|
||||
var activeUploads = 0;
|
||||
function uploadFile(file, id, boxClass) {
|
||||
var htmlUploadBox = `<div class="upload-box inBox${id} me-2 loadingButton">
|
||||
<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>
|
||||
</div>`;
|
||||
$('#upload-container-doc').append(htmlUploadBox);
|
||||
|
||||
var formData = new FormData();
|
||||
formData.append('media', file);
|
||||
|
||||
var loading = $(boxClass).find('.spinner-loading');
|
||||
loading.show();
|
||||
|
||||
activeUploads++;
|
||||
$('#saveClientResponseTicket').prop('disabled', true).addClass('disable');
|
||||
|
||||
|
||||
$.ajax({
|
||||
dataType: 'json',
|
||||
type: 'POST',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
url: uploadFileTicketAjax,
|
||||
headers: { "RequestVerificationToken": antiForgeryToken },
|
||||
data: formData,
|
||||
success: function (response) {
|
||||
console.log(response);
|
||||
if (response.isSuccedded) {
|
||||
if (file) {
|
||||
var reader = new FileReader();
|
||||
reader.onload = function (e) {
|
||||
var img = $('<img class="min-img b' + id + '">').attr('src', e.target.result);
|
||||
var box = $(boxClass);
|
||||
if (box.length) {
|
||||
var deleteBtn = $('<div class="b' + id + '" style="cursor: pointer;" onclick="remove(' + id + ',' + response.id + ')"><svg width="16" height="16" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="10" height="10" rx="5" fill="#FF4A4A"/><path d="M7 7L3 3" stroke="#FFFEFE" stroke-linecap="round" stroke-linejoin="round"/><path d="M3 7L7 3" stroke="#FFFEFE" stroke-linecap="round" stroke-linejoin="round"/></svg></div>');
|
||||
$('.b' + id).remove();
|
||||
box.append(img);
|
||||
box.append(deleteBtn);
|
||||
}
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
}
|
||||
|
||||
var inputItems = `<input type="hidden" value="${response.id}" name="UploadedFileIds[${indexCount}]"/>"`;
|
||||
$('#fileItems').append(inputItems);
|
||||
indexCount++;
|
||||
|
||||
// showAlertMessage('.alert-success-msg', response.message, 1500);
|
||||
} else {
|
||||
showAlertMessage('.alert-msg', response.message, 3500);
|
||||
$('#Command_Document' + id).val('');
|
||||
$('.inBox' + id).remove();
|
||||
}
|
||||
loading.hide();
|
||||
activeUploads--;
|
||||
if (activeUploads === 0) {
|
||||
$('#saveClientResponseTicket').prop('disabled', false).removeClass('disable');
|
||||
}
|
||||
},
|
||||
error: function (err) {
|
||||
console.log(err);
|
||||
loading.hide();
|
||||
activeUploads--;
|
||||
if (activeUploads === 0) {
|
||||
$('#saveClientResponseTicket').prop('disabled', false).removeClass('disable');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function remove(id, resId) {
|
||||
$('#Command_Document' + id).val('');
|
||||
$('.inBox' + id).remove();
|
||||
|
||||
var loading = $('.inBox' + id + ' .spinner-loading');
|
||||
loading.show();
|
||||
|
||||
// Remove from hidden inputs
|
||||
$(`#fileItems input[value='${resId}']`).remove();
|
||||
indexCount--;
|
||||
|
||||
activeUploads++;
|
||||
$('#saveClientResponseTicket').prop('disabled', true).addClass('disable');
|
||||
|
||||
var formData = new FormData();
|
||||
formData.append('mediaId', resId);
|
||||
|
||||
$.ajax({
|
||||
dataType: 'json',
|
||||
type: 'POST',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
url: deleteFileTicketAjax,
|
||||
data: formData,
|
||||
headers: { "RequestVerificationToken": antiForgeryToken },
|
||||
success: function (response) {
|
||||
if (response.isSuccedded) {
|
||||
// showAlertMessage('.alert-success-msg', response.message, 1500);
|
||||
} else {
|
||||
showAlertMessage('.alert-msg', response.message, 3500);
|
||||
}
|
||||
loading.hide();
|
||||
|
||||
activeUploads--;
|
||||
if (activeUploads === 0) {
|
||||
$('#saveClientResponseTicket').prop('disabled', false).removeClass('disable');
|
||||
}
|
||||
},
|
||||
error: function (err) {
|
||||
console.log(err);
|
||||
loading.hide();
|
||||
activeUploads--;
|
||||
if (activeUploads === 0) {
|
||||
$('#saveClientResponseTicket').prop('disabled', false).removeClass('disable');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('#cancelSendTicket').on('click', function () {
|
||||
$('#MainModal').modal('toggle');
|
||||
});
|
||||
|
||||
|
||||
function showAlertMessage(selector, message, timeout) {
|
||||
$(selector).show();
|
||||
$(selector + ' p').text(message);
|
||||
setTimeout(function () {
|
||||
$(selector).hide();
|
||||
$(selector + ' p').text('');
|
||||
}, timeout);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// صدا
|
||||
var msg_box = document.getElementById('msg_box_ticket_table'),
|
||||
button = document.getElementById('upload-voice-ticket-table'),
|
||||
lang = {
|
||||
'mic_error': 'خطا! به میکروفون دسترسی ندارد.',
|
||||
'press_to_start': 'برای ضبط صدا، پیام صوتی را کلیک نمائید',
|
||||
'recording': 'در حال ضبط پیام صوتی ...',
|
||||
'play': 'پخش',
|
||||
'stop': 'متوقف',
|
||||
'download': 'دانلود',
|
||||
'use_https': 'This application is not working over an insecure connection. Try to use HTTPS'
|
||||
},
|
||||
time,
|
||||
btn_status = 'inactive',
|
||||
mediaRecorder,
|
||||
chunks = [],
|
||||
audio = new Audio(),
|
||||
blob,
|
||||
audioSrc;
|
||||
|
||||
msg_box.innerHTML = lang.press_to_start;
|
||||
|
||||
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
|
||||
button.onclick = function () {
|
||||
if (btn_status === 'inactive') {
|
||||
startRecording();
|
||||
} else if (btn_status === 'recording') {
|
||||
stopRecording();
|
||||
}
|
||||
};
|
||||
} else {
|
||||
msg_box.innerHTML = lang.mic_error;
|
||||
button.disabled = true;
|
||||
}
|
||||
|
||||
function parseTime(sec) {
|
||||
var h = parseInt(sec / 3600);
|
||||
var m = parseInt(sec / 60);
|
||||
sec = sec - (h * 3600 + m * 60);
|
||||
h = h === 0 ? '' : h + ':';
|
||||
sec = sec < 10 ? '0' + sec : sec;
|
||||
return h + m + ':' + sec;
|
||||
}
|
||||
|
||||
function startRecording() {
|
||||
console.log('start');
|
||||
navigator.mediaDevices.getUserMedia({ audio: true }).then(function (stream) {
|
||||
mediaRecorder = new MediaRecorder(stream);
|
||||
mediaRecorder.start();
|
||||
button.classList.add('recording');
|
||||
btn_status = 'recording';
|
||||
msg_box.innerHTML = lang.recording;
|
||||
if (navigator.vibrate) navigator.vibrate(150);
|
||||
time = Math.ceil(new Date().getTime() / 1000);
|
||||
mediaRecorder.ondataavailable = function (event) {
|
||||
chunks.push(event.data);
|
||||
};
|
||||
mediaRecorder.onstop = function () {
|
||||
stream.getTracks().forEach(function (track) { track.stop(); });
|
||||
blob = new Blob(chunks, { type: 'audio/ogg; codecs=opus' });
|
||||
audioSrc = window.URL.createObjectURL(blob);
|
||||
audio.src = audioSrc;
|
||||
chunks = [];
|
||||
saveToInput(blob);
|
||||
};
|
||||
}).catch(function (error) {
|
||||
msg_box.innerHTML = lang.mic_error + (location.protocol !== 'https:' ? '<br>' + lang.use_https : '');
|
||||
button.disabled = true;
|
||||
});
|
||||
}
|
||||
|
||||
function stopRecording() {
|
||||
console.log('stop');
|
||||
mediaRecorder.stop();
|
||||
button.classList.remove('recording');
|
||||
btn_status = 'inactive';
|
||||
if (navigator.vibrate) navigator.vibrate([200, 100, 200]);
|
||||
var now = Math.ceil(new Date().getTime() / 1000);
|
||||
var t = parseTime(now - time);
|
||||
msg_box.innerHTML = '<a href="#" onclick="play(); return false;" class="txt_btn">' + lang.play + ' (' + t + 's)</a><br>' +
|
||||
'<a href="#" id="saveToInput" onclick="save(); return false;" class="txt_btn">' + lang.download + '</a>';
|
||||
}
|
||||
|
||||
function play() {
|
||||
audio.play();
|
||||
msg_box.innerHTML = '<a href="#" onclick="pause(); return false;" class="txt_btn">' + lang.stop + '</a><br>' +
|
||||
'<a href="#" onclick="save(); return false;" class="txt_btn">' + lang.download + '</a>';
|
||||
}
|
||||
|
||||
function pause() {
|
||||
audio.pause();
|
||||
audio.currentTime = 0;
|
||||
msg_box.innerHTML = '<a href="#" onclick="play(); return false;" class="txt_btn">' + lang.play + '</a><br>' +
|
||||
'<a href="#" onclick="save(); return false;" class="txt_btn">' + lang.download + '</a>';
|
||||
}
|
||||
|
||||
function saveToInput(blob) {
|
||||
const myFile = new File([blob], 'record.ogg', {
|
||||
type: 'audio/ogg',
|
||||
lastModified: new Date(),
|
||||
});
|
||||
|
||||
let fileVoice = document.getElementById("Command_Voice");
|
||||
const dataTransfer = new DataTransfer();
|
||||
dataTransfer.items.add(myFile);
|
||||
fileVoice.files = dataTransfer.files;
|
||||
|
||||
var formData = new FormData();
|
||||
formData.append('media', myFile);
|
||||
|
||||
var loading = $('.upload-box-voice').find('.spinner-loading');
|
||||
loading.show();
|
||||
|
||||
$.ajax({
|
||||
dataType: 'json',
|
||||
type: 'POST',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
url: uploadFileTicketAjax,
|
||||
headers: { "RequestVerificationToken": antiForgeryTokenLayout },
|
||||
data: formData,
|
||||
success: function (response) {
|
||||
if (response.isSuccedded) {
|
||||
var inputVoice = `<input type="hidden" value="${response.id}" name="VoiceId" />"`;
|
||||
$('#voiceItem').append(inputVoice);
|
||||
} else {
|
||||
showAlertMessage('.alert-msg', response.message, 3500);
|
||||
$('#Command_Voice').val('');
|
||||
}
|
||||
loading.hide();
|
||||
},
|
||||
error: function (err) {
|
||||
console.log(err);
|
||||
loading.hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function save() {
|
||||
console.log(audioSrc);
|
||||
var a = document.createElement('a');
|
||||
a.download = 'record.ogg';
|
||||
a.href = audioSrc;
|
||||
document.body.appendChild(a);
|
||||
a.click();
|
||||
document.body.removeChild(a);
|
||||
}
|
||||
|
||||
// صدا
|
||||
|
||||
|
||||
</script>
|
||||
@@ -1,160 +0,0 @@
|
||||
@using Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="A fully featured admin theme which can be used to build CRM, CMS, etc.">
|
||||
<meta name="author" content="Coderthemes">
|
||||
|
||||
<link rel="shortcut icon" href="images/favicon_1.ico">
|
||||
|
||||
<title>@ViewData["Title"] | دادمهر گستر </title>
|
||||
|
||||
<!-- Base Css Files -->
|
||||
<link href="~/AdminTheme/assets/css/bootstrap.min.css" rel="stylesheet" />
|
||||
|
||||
<!-- Font Icons -->
|
||||
<!--<link href="~/AdminTheme/assets/font-awesome/css/font-awesome.min.css" rel="stylesheet" />
|
||||
<link href="~/AdminTheme/assets/ionicon/css/ionicons.min.css" rel="stylesheet" />
|
||||
<link href="~/AdminTheme/assets/css/material-design-iconic-font.min.css" rel="stylesheet">-->
|
||||
|
||||
<!-- animate css -->
|
||||
<!--<link href="~/AdminTheme/assets/css/animate.css" rel="stylesheet" />-->
|
||||
|
||||
<!-- Waves-effect -->
|
||||
<!--<link href="~/AdminTheme/assets/css/waves-effect.css" rel="stylesheet">-->
|
||||
|
||||
|
||||
|
||||
<!-- sweet alerts -->
|
||||
@*<link href="~/AdminTheme/assets/sweet-alert/sweet-alert.min.css" rel="stylesheet">*@
|
||||
|
||||
<!-- Custom Files -->
|
||||
<link href="~/AdminTheme/assets/css/persian-datepicker.min.css" rel="stylesheet" />
|
||||
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
|
||||
|
||||
|
||||
@*<link href="~/AdminTheme/assets/datatables/jquery.dataTables.min.css" rel="stylesheet" type="text/css" />*@
|
||||
<link href="~/AdminTheme/assets/css/helper.css" rel="stylesheet" type="text/css" />
|
||||
<link href="~/AdminTheme/assets/css/style.css" rel="stylesheet" type="text/css" />
|
||||
<script src="~/AdminTheme/assets/js/modernizr.min.js"></script>
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body class="fixed-left">
|
||||
|
||||
<!-- Begin page -->
|
||||
<div id="wrapper">
|
||||
|
||||
<!-- Top Bar Start -->
|
||||
|
||||
<!-- Top Bar End -->
|
||||
<!-- ========== Right Sidebar Start ========== -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Right Sidebar End -->
|
||||
<!-- ============================================================== -->
|
||||
<!-- Start Left Content here -->
|
||||
<!-- ============================================================== -->
|
||||
|
||||
<!-- Start content -->
|
||||
<div class="content">
|
||||
<div class="container">
|
||||
|
||||
@RenderBody()
|
||||
|
||||
</div> <!-- container -->
|
||||
|
||||
</div> <!-- content -->
|
||||
|
||||
<footer class="footer text-right" style="position: fixed; text-align: center; background-color: #646464; height: 50px; color: #ddd;">
|
||||
2021 © Dadmehr Gostar.
|
||||
</footer>
|
||||
|
||||
<!-- ============================================================== -->
|
||||
<!-- End Left content here -->
|
||||
|
||||
|
||||
</div>
|
||||
<!-- END wrapper -->
|
||||
@*<script>
|
||||
var resizefunc = [];
|
||||
</script>*@
|
||||
|
||||
|
||||
@*<div id="MainModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content" id="ModalContent">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>*@
|
||||
<!-- jQuery -->
|
||||
@*<script src="~/lib/jquery/dist/jquery.min.js"></script>*@
|
||||
|
||||
@*<script src="~/AdminTheme/assets/js/jquery.min.js"></script>
|
||||
<script src="~/AdminTheme/assets/js/bootstrap.min.js"></script>
|
||||
<script src="~/AdminTheme/assets/js/waves.js"></script>
|
||||
<script src="~/AdminTheme/assets/js/wow.min.js"></script>
|
||||
<script src="~/AdminTheme/assets/js/jquery.nicescroll.js" type="text/javascript"></script>
|
||||
<script src="~/AdminTheme/assets/js/jquery.scrollTo.min.js"></script>
|
||||
<script src="~/AdminTheme/assets/chat/moment-2.2.1.js"></script>
|
||||
<script src="~/AdminTheme/assets/jquery-sparkline/jquery.sparkline.min.js"></script>
|
||||
<script src="~/AdminTheme/assets/jquery-detectmobile/detect.js"></script>
|
||||
<script src="~/AdminTheme/assets/fastclick/fastclick.js"></script>
|
||||
<script src="~/AdminTheme/assets/jquery-slimscroll/jquery.slimscroll.js"></script>
|
||||
<script src="~/AdminTheme/assets/jquery-blockui/jquery.blockUI.js"></script>*@
|
||||
|
||||
|
||||
<!-- sweet alerts -->
|
||||
<!--<script src="~/AdminTheme/assets/sweet-alert/sweet-alert.min.js"></script>
|
||||
<script src="~/AdminTheme/assets/sweet-alert/sweet-alert.init.js"></script>-->
|
||||
|
||||
|
||||
|
||||
<!-- Counter-up -->
|
||||
<!--<script src="~/AdminTheme/assets/counterup/waypoints.min.js" type="text/javascript"></script>
|
||||
<script src="~/AdminTheme/assets/counterup/jquery.counterup.min.js" type="text/javascript"></script>-->
|
||||
|
||||
|
||||
<!-- CUSTOM JS -->
|
||||
<!--<script src="~/lib/jquery/dist/jquery.app.js"></script>-->
|
||||
|
||||
<!-- Dashboard -->
|
||||
<!--<script src="~/AdminTheme/js/jquery.dashboard.js"></script>-->
|
||||
|
||||
<!-- Chat -->
|
||||
<!--<script src="~/AdminTheme/assets/js/jquery.chat.js"></script>-->
|
||||
|
||||
|
||||
|
||||
@*<script src="~/AdminTheme/assets/js/site.js"></script>-->*@
|
||||
|
||||
@*<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
|
||||
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>*@
|
||||
|
||||
@*<script src="~/AdminTheme/assets/js/site.js"></script>
|
||||
|
||||
<script src="~/AdminTheme/assets/js/persian-date.min.js"></script>
|
||||
<script src="~/AdminTheme/assets/js/persian-datepicker.min.js"></script>*@
|
||||
|
||||
@RenderSection("Script", false)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user