471 lines
18 KiB
Plaintext
471 lines
18 KiB
Plaintext
@model CompanyManagment.App.Contracts.CrossJobGuild.CreateCrossJobGuild
|
||
@{
|
||
<style>
|
||
.select2-container {
|
||
width: 100% !important;
|
||
}
|
||
|
||
.modal-footer {
|
||
border-top: unset !important;
|
||
}
|
||
|
||
.modal .modal-dialog .modal-content .modal-footer {
|
||
padding-top: unset !important;
|
||
}
|
||
|
||
p {
|
||
direction: ltr !important;
|
||
text-align: right !important;
|
||
}
|
||
|
||
input[type=radio]:hover {
|
||
cursor: pointer;
|
||
}
|
||
|
||
.error {
|
||
font-size: 14px !important;
|
||
}
|
||
|
||
th {
|
||
text-align: center;
|
||
vertical-align: middle;
|
||
}
|
||
</style>
|
||
}
|
||
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||
|
||
<form asp-page="./Index" asp-page-handler="Create" id="workshops" autocomplete="off"
|
||
method="post"
|
||
data-ajax="true"
|
||
data-callback=""
|
||
data-action="Refresh"
|
||
enctype="multipart/form-data">
|
||
<div class="modal-body">
|
||
<div class="row">
|
||
<fieldset style="border: 1px solid #999797; border-radius: 10px; padding: revert">
|
||
<legend style="margin-bottom: 5px; font-size: large; border-bottom: 0px; color: #505458; width: 380px; text-align: center;">
|
||
ثبت مشاغل قیمت مقطوع سازمان تامین اجتماعی
|
||
</legend>
|
||
<div class="row">
|
||
<div class="col-md-2">
|
||
<div class="form-group">
|
||
<label asp-for="Year" class="control-label"> سال </label>
|
||
<input type="text" class="form-control" asp-for="Year" data-val="true" data-val-required="فیلد الزامی است">
|
||
<span asp-validation-for="Year" class="error"></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
<div class="col-md-4">
|
||
<div class="form-group">
|
||
<label asp-for="Title" class="control-label"> عنوان صنف و درجه </label>
|
||
<input type="text" class="form-control" asp-for="Title" data-val="true" data-val-required="فیلد الزامی است">
|
||
<span asp-validation-for="Title" class="error"></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
<div class="col-md-2">
|
||
<label asp-for="EconomicCode" class="control-label"> کد اقتصادی </label>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
<div id="ecoList">
|
||
|
||
<div class="col-md-2">
|
||
<div class="form-group">
|
||
<input type="number" class="form-control" asp-for="economicCodeList[0]" maxlength="5"
|
||
data-val="true" data-val-required="فیلد الزامی است" data-val-number="فقط عدد وارد نمایید"
|
||
data-val-maxlength="بیشتر از 5 رقم مجاز نیست"
|
||
data-val-maxlength-max="5">
|
||
<span asp-validation-for="economicCodeList[0]" style="font-size: 10px !important; text-align: center"
|
||
class="error">
|
||
</span>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-2">
|
||
<div class="form-group">
|
||
<button type="button" onclick="addrowEconomicCode()"
|
||
class="btn btn-sm btn-success btn-rounded waves-effect waves-light ">
|
||
+ افزودن
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<table id="datatableCreate" class="table table-bordered">
|
||
<thead style="background-color:#a9fcff">
|
||
<tr>
|
||
<th style=" text-align: center; vertical-align: middle;" rowspan="2">#</th>
|
||
<th style=" font-size: 20px; text-align: center; vertical-align: middle" rowspan="2" colspan="1"> مشاغل </th>
|
||
<th style=" font-size: 20px; text-align: center; vertical-align: middle" colspan="2"> برای شهرهای کمتر از 500000 نفر </th>
|
||
<th style=" font-size: 20px; text-align: center; vertical-align: middle" colspan="3"> برای شهرهای بیشتر از 500000 نفر </th>
|
||
</tr>
|
||
|
||
<tr>
|
||
<th style=" font-size: 15px; text-align: center; vertical-align: middle"> به نسبت حداقل دستمزد </th>
|
||
<th style=" font-size: 15px; text-align: center; vertical-align: middle"> معادل ریالی </th>
|
||
<th style=" font-size: 15px; text-align: center; vertical-align: middle"> به نسبت حداقل دستمزد </th>
|
||
<th style=" font-size: 15px; text-align: center; vertical-align: middle" colspan="2"> معادل ریالی </th>
|
||
</tr>
|
||
</thead>
|
||
@{
|
||
var i = 0;
|
||
}
|
||
<tbody id="datatableTbody_@i">
|
||
<tr id="datatableTr">
|
||
<td style="font-size: 14px !important; text-align: center" class="order">
|
||
1
|
||
</td>
|
||
@{
|
||
var idstr = "crossJobsList_" + i + "__TitleStr";
|
||
var namestr = "crossJobsList[" + i + "].TitleStr";
|
||
|
||
var h = "textareacrossJobsList_" + i + "__Title";
|
||
var n = "textareacrossJobsList[" + i + "].Title";
|
||
|
||
var Listid = "crossJobsList_" + i + "__jobItems";
|
||
var ListName = "crossJobsList[" + i + "].jobItems";
|
||
|
||
}
|
||
<td style="font-size: 14px !important; text-align: right !important;width:240px !important;" class="crossJobssession">
|
||
<select id="@Listid" name="@ListName" asp-items="@Model.jobs" multiple="multiple" class="sel2">
|
||
<option value="0" disabled>شفل را انتخاب کنید</option>
|
||
</select>
|
||
</td>
|
||
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
|
||
<input type="text" class="form-control " asp-for="crossJobsList[i].SalaryRatioUnder" data-val="true" data-val-required="فیلد الزامی است">
|
||
<span asp-validation-for="crossJobsList[i].SalaryRatioUnder" class="error"></span>
|
||
</td>
|
||
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
|
||
<input type="text" class="form-control " asp-for="crossJobsList[i].EquivalentRialUnder" data-val="true" data-val-required="فیلد الزامی است">
|
||
<span asp-validation-for="crossJobsList[i].EquivalentRialUnder" class="error"></span>
|
||
</td>
|
||
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
|
||
<input type="text" class="form-control " asp-for="crossJobsList[i].SalaryRatioOver" data-val="true" data-val-required="فیلد الزامی است">
|
||
<span asp-validation-for="crossJobsList[i].SalaryRatioOver" class="error"></span>
|
||
</td>
|
||
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
|
||
<input type="text" class="form-control " asp-for="crossJobsList[i].EquivalentRialOver" data-val="true" data-val-required="فیلد الزامی است">
|
||
<span asp-validation-for="crossJobsList[i].EquivalentRialOver" class="error"></span>
|
||
</td>
|
||
<td style="font-size: 14px !important; text-align: center">
|
||
<div class="removeRow">
|
||
<i class="fa fa-minus-circle fa-2x" style="color: gray; cursor: pointer;"></i>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<button type="button" onclick="addrowTable()" class="btn btn-sm btn-success btn-rounded waves-effect waves-light pull-left">افزودن +</button>
|
||
</fieldset>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="modal-footer">
|
||
|
||
<button type="submit" id="createButtom" class="btn btn-success btn-rounded waves-effect waves-light">ذخیره</button>
|
||
<button type="button" class="btn btn-default btn-rounded waves-effect waves-light m-b-5" data-dismiss="modal">بستن</button>
|
||
</div>
|
||
|
||
</form>
|
||
|
||
</div>
|
||
<script type="text/javascript">
|
||
$(function() {
|
||
$("#crossJobsList_0__jobItems").select2({
|
||
placeholder: "انتخاب کنید",
|
||
dir: "rtl",
|
||
});
|
||
});
|
||
$(function() {
|
||
$("#jobslst_10").select2();
|
||
});
|
||
</script>
|
||
<script>
|
||
$(document).ready(function() {
|
||
$('.modal-dialog').addClass('modal-lg');
|
||
});
|
||
|
||
function addrowEconomicCode() {
|
||
const addNewEconomicCounter = $("#ecoList input[name^='economicCodeList']").length;
|
||
console.log(`Add row : ${addNewEconomicCounter}`);
|
||
const htmls = ` <div class="col-md-2">
|
||
<div class="form-group">
|
||
<input type="number" class="form-control" name="economicCodeList[${addNewEconomicCounter}]"
|
||
id="economicCodeList_${addNewEconomicCounter}_" maxlength="5"
|
||
data-val="true" data-val-required="فیلد الزامی است" data-val-number="فقط عدد وارد نمایید"
|
||
data-val-maxlength="بیشتر از 5 رقم مجاز نیست"
|
||
data-val-maxlength-max="5"
|
||
>
|
||
<span class="error " data-valmsg-for="economicCodeList[${addNewEconomicCounter}]"
|
||
style="font-size: 10px !important; text-align: center" data-valmsg-replace="true"></span>
|
||
</div>
|
||
</div>`;
|
||
|
||
$('#ecoList ').prepend(htmls);
|
||
}
|
||
|
||
function addrowTable() {
|
||
|
||
const addNewCrossJobCounter = $("#datatableCreate input[name$='.SalaryRatioUnder']").length;
|
||
console.log(`Add row : ${addNewCrossJobCounter}`);
|
||
const htmls = `
|
||
<tbody id="datatableTbody_${addNewCrossJobCounter}">
|
||
<tr >
|
||
<td style="font-size: 14px !important; text-align: center" class="order">
|
||
${addNewCrossJobCounter + 1}
|
||
</td>
|
||
|
||
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
|
||
|
||
<select id="jobslst_${addNewCrossJobCounter}" name="crossJobsList[${addNewCrossJobCounter}].jobItems" multiple="multiple" class="sel2">
|
||
<option value="0" disabled>شفل را انتخاب کنید</option>
|
||
</select>
|
||
</td>
|
||
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
|
||
<input type="text" class="form-control " data-val="true" data-val-required="فیلد الزامی است"
|
||
onchange="validDate(this,"crossJobsList_${addNewCrossJobCounter}__SalaryRatioUnder");
|
||
id="crossJobsList_${addNewCrossJobCounter}__SalaryRatioUnder" name="crossJobsList[${addNewCrossJobCounter}].SalaryRatioUnder">
|
||
<span class="error field-validation-valid" data-valmsg-for="crossJobsList[${addNewCrossJobCounter}].SalaryRatioUnder" data-valmsg-replace="true"></span>
|
||
</td>
|
||
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
|
||
<input type="text" class="form-control " data-val="true" data-val-required="فیلد الزامی است"
|
||
id="crossJobsList_${addNewCrossJobCounter}__EquivalentRialUnder" name="crossJobsList[${addNewCrossJobCounter}].EquivalentRialUnder">
|
||
<span class="error field-validation-valid" data-valmsg-for="crossJobsList[${addNewCrossJobCounter}].EquivalentRialUnder" data-valmsg-replace="true"></span>
|
||
</td>
|
||
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
|
||
<input type="text" class="form-control " data-val="true" data-val-required="فیلد الزامی است"
|
||
id="crossJobsList_${addNewCrossJobCounter}__SalaryRatioOver" name="crossJobsList[${addNewCrossJobCounter}].SalaryRatioOver">
|
||
<span class="error field-validation-valid" data-valmsg-for="crossJobsList[${addNewCrossJobCounter}].SalaryRatioOver" data-valmsg-replace="true"></span>
|
||
|
||
</td >
|
||
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
|
||
<input type="text" class="form-control" data-val="true" data-val-required="فیلد الزامی است"
|
||
id="crossJobsList_${addNewCrossJobCounter}__EquivalentRialOver" name="crossJobsList[${addNewCrossJobCounter}].EquivalentRialOver">
|
||
<span class="error field-validation-valid" data-valmsg-for="crossJobsList[${addNewCrossJobCounter}].EquivalentRialOver" data-valmsg-replace="true"></span>
|
||
|
||
</td >
|
||
<td style = "font-size: 14px !important; text-align: center; vertical-align: middle" >
|
||
<div class="removeRow" onclick="removeRowCrossJob('datatableTbody_${addNewCrossJobCounter}');">
|
||
<i class="fa fa-minus-circle fa-2x" style="color: red; cursor: pointer;"></i>
|
||
</div>
|
||
</td >
|
||
</tr>
|
||
</tbody>`;
|
||
|
||
$('#datatableCreate ').append(htmls);
|
||
|
||
select(addNewCrossJobCounter);
|
||
}
|
||
|
||
var jobs;
|
||
|
||
function select(id) {
|
||
getJob(id);
|
||
$(`#jobslst_${id}`).select2({
|
||
placeholder: "انتخاب کنید",
|
||
dir: "rtl",
|
||
});
|
||
}
|
||
|
||
function getJob(id) {
|
||
$.ajax({
|
||
dataType: 'json',
|
||
type: 'Get',
|
||
url: '@Url.Page("./Index", "Job")',
|
||
headers: { "RequestVerificationToken": $('@Html.AntiForgeryToken()').val() },
|
||
|
||
success: function(response) {
|
||
jobs = response;
|
||
for (let i = 0; i < jobs.length; i++) {
|
||
$(`#jobslst_${id}`).append(`<option value=${jobs[i].id}>${jobs[i].jobName}</option>`);
|
||
}
|
||
|
||
},
|
||
failure: function(response) {
|
||
console.log(5, response);
|
||
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', response.message);
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
function addToTitle(id) {
|
||
const text = document.getElementById(`crossJobsList_${id}__TitleStr`).value;
|
||
//var text = document.getElementById('crossJobsList_Title_' + id).value;
|
||
if (text == '') {
|
||
return;
|
||
}
|
||
$(`#crossJobsList_${id}__Title`).val($(`#crossJobsList_${id}__Title`).val() + '-' + text);
|
||
const oldval = $(`#crossJobsList_${id}__Title`).val();
|
||
$(`#textareacrossJobsList_${id}__Title`).val(oldval.trim());
|
||
document.getElementById(`crossJobsList_${id}__TitleStr`).value = '';
|
||
}
|
||
|
||
function getInputSelection(el) {
|
||
var start = 0,
|
||
end = 0,
|
||
normalizedValue,
|
||
range,
|
||
textInputRange,
|
||
len,
|
||
endRange;
|
||
|
||
if (typeof el.selectionStart == "number" && typeof el.selectionEnd == "number") {
|
||
start = el.selectionStart;
|
||
end = el.selectionEnd;
|
||
} else {
|
||
range = document.selection.createRange();
|
||
|
||
if (range && range.parentElement() == el) {
|
||
len = el.value.length;
|
||
normalizedValue = el.value.replace(/\r\n/g, "\n");
|
||
|
||
// Create a working TextRange that lives only in the input
|
||
textInputRange = el.createTextRange();
|
||
textInputRange.moveToBookmark(range.getBookmark());
|
||
|
||
// Check if the start and end of the selection are at the very end
|
||
// of the input, since moveStart/moveEnd doesn't return what we want
|
||
// in those cases
|
||
endRange = el.createTextRange();
|
||
endRange.collapse(false);
|
||
|
||
if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
|
||
start = end = len;
|
||
} else {
|
||
start = -textInputRange.moveStart("character", -len);
|
||
start += normalizedValue.slice(0, start).split("\n").length - 1;
|
||
|
||
if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) {
|
||
end = len;
|
||
} else {
|
||
end = -textInputRange.moveEnd("character", -len);
|
||
end += normalizedValue.slice(0, end).split("\n").length - 1;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return {
|
||
start: start,
|
||
end: end
|
||
};
|
||
}
|
||
|
||
function replaceSelectedText(el, text) {
|
||
const sel = getInputSelection(el);
|
||
const val = el.value;
|
||
const selected = val.slice(sel.start, sel.end);
|
||
var arr = [];
|
||
arr = val.split('-');
|
||
var str = "";
|
||
|
||
for (let i = 0; i < arr.length; i++) {
|
||
if (arr[i] == selected) {
|
||
arr[i] = '';
|
||
}
|
||
if (arr[i] !== '') {
|
||
str += `-${arr[i]}`;
|
||
}
|
||
}
|
||
el.value = str;
|
||
}
|
||
|
||
function selectedText(id) {
|
||
const el = document.getElementById(`textareacrossJobsList_${id}__Title`);
|
||
replaceSelectedText(el, "");
|
||
}
|
||
|
||
function removeRowCrossJob(className) {
|
||
|
||
const list = document.getElementById(className);
|
||
const lst = list.value;
|
||
list.remove();
|
||
const unit = $("#datatableCreate").parent().find('input').length;
|
||
|
||
$('td.order').text(function(i) {
|
||
return i + 1;
|
||
});
|
||
className = "crossJobssession";
|
||
const id = "datatableCreate"; // "crossJobsList";
|
||
sortInputs(id, className, 5);
|
||
}
|
||
|
||
function sortInputs(id, className, unit) {
|
||
|
||
var PSInput = $(`#${id} .${className} input`);
|
||
for (var i = 0; i < PSInput.length; i++) {
|
||
|
||
try {
|
||
var split_0 = $(PSInput[i]).attr('name').split('[');
|
||
|
||
var split_1 = split_0[0];
|
||
var split_2 = split_0[1];
|
||
var split_2 = split_2.split(']');
|
||
var split_2 = split_2[1];
|
||
|
||
var split_00 = $(PSInput[i]).attr('id').split('_');
|
||
var split_11 = split_00[0];
|
||
var split_22 = split_00[3];
|
||
|
||
$(PSInput[i]).attr('name', split_1 + "[" + Math.floor(i / unit) + "]" + split_2);
|
||
$(PSInput[i]).next('span').attr('name', split_1 + "[" + Math.floor(i / unit) + "]" + split_2);
|
||
$(PSInput[i]).next('span').attr('data-valmsg-for', split_1 + "[" + Math.floor(i / unit) + "]" + split_2);
|
||
|
||
$(PSInput[i]).attr('id', split_11 + "_" + Math.floor(i / unit) + "__" + split_22);
|
||
$(PSInput[i]).prev('label').attr('for', split_11 + "_" + Math.floor(i / unit) + "__" + split_22);
|
||
|
||
} catch (e) {
|
||
|
||
}
|
||
|
||
}
|
||
var PSButton = $(`#${id} button`);
|
||
for (var i = 0; i < PSButton.length; i++) {
|
||
$(PSButton[i]).attr("onclick", `addToTitle(${i})`);
|
||
|
||
}
|
||
|
||
var PSTbody = $(`#${id} Tbody`);
|
||
for (var i = 0; i < PSTbody.length; i++) {
|
||
$(PSTbody[i]).attr("id", `datatableTbody_${i}`);
|
||
}
|
||
|
||
var PSSelect2 = $(".sel2");
|
||
for (var i = 0; i < PSSelect2.length; i++) {
|
||
$(PSSelect2[i]).attr("id", `crossJobsList_${i}__jobItems`);
|
||
$(PSSelect2[i]).attr("data-select2-id", `crossJobsList_${i}__jobItems`);
|
||
$(PSSelect2[i]).attr("name", `crossJobsList[${i}].jobItems`);
|
||
}
|
||
|
||
var PSRemove = $(`#${id} .removeRow`);
|
||
for (var i = 0; i < PSRemove.length; i++) {
|
||
$(PSRemove[i]).attr("onclick", `removeRowCrossJob('datatableTbody_${i + 1}')`);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
function validDate(inputField, id) {
|
||
|
||
if (inputField.value != '') {
|
||
|
||
validCheck = true;
|
||
$(`#${id}`).val("فیلد الزامی است");
|
||
} else {
|
||
validCheck = false;
|
||
$(`#${id}`).val();
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
</script> |