Commit 095fd6e0 authored by Jason's avatar Jason

edit mask尚未完成

parent 94a484f6
...@@ -530,6 +530,7 @@ namespace backstage.Controllers ...@@ -530,6 +530,7 @@ namespace backstage.Controllers
{ "field_id", field_id }, { "field_id", field_id },
}; };
#region list mask
var url = _config["IP"] + "/v2/vault/get"; var url = _config["IP"] + "/v2/vault/get";
var httpMethod = HttpMethod.Post; var httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值 // 取得使用者的 "token" Claim 值
...@@ -585,6 +586,7 @@ namespace backstage.Controllers ...@@ -585,6 +586,7 @@ namespace backstage.Controllers
} }
} }
#endregion
return RedirectToAction("ListFields", queryString); return RedirectToAction("ListFields", queryString);
} }
...@@ -693,27 +695,24 @@ namespace backstage.Controllers ...@@ -693,27 +695,24 @@ namespace backstage.Controllers
} }
//新增MASK //新增MASK ajax
[HttpPost] [HttpPost]
public async Task<IActionResult> CreateMask(Mask mask, int merchant_id, int vault_id, int field_id) public async Task<ResultModel> CreateMask(IFormCollection form)
{ {
// 構建包含參數的查詢字串 var result = new ResultModel();
var queryString = new RouteValueDictionary {
{ "Merchant_id", merchant_id },
{ "vault_id", vault_id },
{ "field_id", field_id }
};
try try
{ {
var url = _config["IP"] + "/v2/vault"; var url = _config["IP"] + "/v2/vault";
if (string.IsNullOrEmpty(mask.name)) if (string.IsNullOrEmpty(form["name"]))
{ {
TempData["IsSuccess"] = false; result.IsSuccess = false;
TempData["msg"] = "名稱不能為空"; result.Message = "名稱不能為空";
return RedirectToAction("ListFields", queryString); return result;
} }
...@@ -722,32 +721,130 @@ namespace backstage.Controllers ...@@ -722,32 +721,130 @@ namespace backstage.Controllers
string token = User.FindFirstValue("token"); string token = User.FindFirstValue("token");
var setting = new var setting = new
{ {
mask=mask.mask, mask = Convert.ToInt32(form["mask"]),
size_init=mask.size_init, size_init = Convert.ToInt32(form["size_init"]),
size_end=mask.size_end size_end = Convert.ToInt32(form["size_end"])
}; };
var fieldData = new[] var fieldData = new[]
{ {
new new
{
action = "ADD",
field_id=Convert.ToInt32(form["field_id"]),
name=form["name"].ToString(),
type = Convert.ToInt32(form["type"]),
setting = System.Text.Json.JsonSerializer.Serialize(setting)
}
};
string namstext = form["name"];
var parameters = new Dictionary<string, string>
{
{ "Merchant_id",form["merchant_id"] },
{ "info","MASKS"},
{ "id", form["vault_id"]},
{ "data",JsonConvert.SerializeObject(fieldData)}
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var Response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
if (Response.r == 0)
{ {
action = "ADD", if (Response.failInfo == null)
field_id, {
mask.name, result.IsSuccess = true;
type = mask.type, result.Message = "Create success";
setting = setting return result;
}
result.IsSuccess = false;
result.Message = System.Text.RegularExpressions.Regex.Unescape(string.Join(", ", Response.failInfo));
return result;
}
else
{
result.IsSuccess = false;
result.Message = Response.m.ToString();
return result;
} }
}
}
catch (Exception e)
{
result.IsSuccess = false;
result.Message = e.Message + e.InnerException?.Message;
return result;
}
result.IsSuccess = false;
result.Message = "Create fail.";
return result;
//return View();
}
//刪除MASK ajx
[HttpPost]
public async Task<ResultModel> DeleteMask(IFormCollection form)
{
var result = new ResultModel();
try
{
var url = _config["IP"] + "/v2/vault";
if (string.IsNullOrEmpty(form["name"]))
{
result.IsSuccess = false;
result.Message = "名稱不能為空";
return result;
}
var httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值
string token = User.FindFirstValue("token");
var setting = new
{
mask = Convert.ToInt32(form["mask"]),
size_init = Convert.ToInt32(form["size_init"]),
size_end = Convert.ToInt32(form["size_end"])
}; };
var fieldData = new[]
{
new
{
action = "MOD",
id=Convert.ToInt32(form["mask_id"]),
name=form["name"].ToString(),
type = Convert.ToInt32(form["type"]),
setting = System.Text.Json.JsonSerializer.Serialize(setting)
}
};
string namstext = form["name"];
var parameters = new Dictionary<string, string> var parameters = new Dictionary<string, string>
{ {
{ "Merchant_id", merchant_id.ToString() }, { "Merchant_id",form["merchant_id"] },
{ "info","MASKS"}, { "info","MASKS"},
{ "id", vault_id.ToString() }, { "id", form["vault_id"]},
{ "data",JsonConvert.SerializeObject(fieldData)} { "data",JsonConvert.SerializeObject(fieldData)}
}; };
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod); var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess) if (apiResult.IsSuccess)
{ {
...@@ -756,24 +853,23 @@ namespace backstage.Controllers ...@@ -756,24 +853,23 @@ namespace backstage.Controllers
{ {
if (Response.failInfo == null) if (Response.failInfo == null)
{ {
result.IsSuccess = true;
TempData["IsSuccess"] = true; result.Message = "Create success";
TempData["msg"] = "Create success"; return result;
return RedirectToAction("ListMasks", queryString);
} }
TempData["IsSuccess"] = false; result.IsSuccess = false;
TempData["msg"] = System.Text.RegularExpressions.Regex.Unescape(string.Join(", ", Response.failInfo)); result.Message = System.Text.RegularExpressions.Regex.Unescape(string.Join(", ", Response.failInfo));
return RedirectToAction("ListMasks", queryString); return result;
} }
else else
{ {
TempData["IsSuccess"] = false; result.IsSuccess = false;
TempData["msg"] = apiResult.Message; result.Message = Response.m.ToString();
return RedirectToAction("ListMasks", queryString); return result;
} }
...@@ -783,15 +879,153 @@ namespace backstage.Controllers ...@@ -783,15 +879,153 @@ namespace backstage.Controllers
catch (Exception e) catch (Exception e)
{ {
TempData["IsSuccess"] = false; result.IsSuccess = false;
TempData["msg"] = e.Message + e.InnerException?.Message; result.Message = e.Message + e.InnerException?.Message;
return RedirectToAction("ListMasks", queryString); return result;
} }
TempData["IsSuccess"] = false; result.IsSuccess = false;
TempData["msg"] = "Create fail."; result.Message = "Create fail.";
return RedirectToAction("ListMasks", queryString); return result;
}
//編輯MASK ajax
[HttpPost]
public async Task<ResultModel> EditMask(IFormCollection form)
{
var result = new ResultModel();
// var field_id = Convert.ToInt32(form["field_id"]);
// #region list mask
// var url = _config["IP"] + "/v2/vault/get";
// var httpMethod = HttpMethod.Post;
// // 取得使用者的 "token" Claim 值
// string token = User.FindFirstValue("token");
//var parameters = new Dictionary<string, string>
// {
// { "Merchant_id", form["Merchant_id"].ToString() },
// { "id", form["vault_id"].ToString() },
// { "info", "MASKS" }
// };
// var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
// if (apiResult.IsSuccess)
// {
// var FieldsResponse = JsonConvert.DeserializeObject<FieldsResponse>(apiResult.Data.ToString());
// if (FieldsResponse.r == 0)
// {
// if (FieldsResponse.fields.Count > 0)
// {
// var existField = FieldsResponse.fields.Where(f => f.id == field_id).FirstOrDefault();
// if (existField != null)
// {
// ViewBag.FieldName = existField.name;
// return View(existField.masks);
// }
// }
// }
// }
// #endregion
// try
// {
// var url = _config["IP"] + "/v2/vault";
// if (string.IsNullOrEmpty(form["name"]))
// {
// result.IsSuccess = false;
// result.Message = "名稱不能為空";
// return result;
// }
// var httpMethod = HttpMethod.Post;
// // 取得使用者的 "token" Claim 值
// string token = User.FindFirstValue("token");
// var setting = new
// {
// mask = Convert.ToInt32(form["mask"]),
// size_init = Convert.ToInt32(form["size_init"]),
// size_end = Convert.ToInt32(form["size_end"])
// };
// var fieldData = new[]
// {
// new
// {
// action = "ADD",
// field_id=Convert.ToInt32(form["field_id"]),
// name=form["name"].ToString(),
// type = Convert.ToInt32(form["type"]),
// setting = System.Text.Json.JsonSerializer.Serialize(setting)
// }
// };
// string namstext = form["name"];
// var parameters = new Dictionary<string, string>
// {
// { "Merchant_id",form["merchant_id"] },
// { "info","MASKS"},
// { "id", form["vault_id"]},
// { "data",JsonConvert.SerializeObject(fieldData)}
// };
// var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
// if (apiResult.IsSuccess)
// {
// var Response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
// if (Response.r == 0)
// {
// if (Response.failInfo == null)
// {
// result.IsSuccess = true;
// result.Message = "Create success";
// return result;
// }
// result.IsSuccess = false;
// result.Message = System.Text.RegularExpressions.Regex.Unescape(string.Join(", ", Response.failInfo));
// return result;
// }
// else
// {
// result.IsSuccess = false;
// result.Message = Response.m.ToString();
// return result;
// }
// }
// }
// catch (Exception e)
// {
// result.IsSuccess = false;
// result.Message = e.Message + e.InnerException?.Message;
// return result;
// }
// result.IsSuccess = false;
// result.Message = "Create fail.";
return result;
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
@*<div class="row"> @*<div class="row">
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12 grid-margin stretch-card"> <div class="col-12 grid-margin stretch-card">
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12 grid-margin stretch-card"> <div class="col-12 grid-margin stretch-card">
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12 grid-margin stretch-card"> <div class="col-12 grid-margin stretch-card">
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
...@@ -86,17 +86,17 @@ ...@@ -86,17 +86,17 @@
<tr> <tr>
<td class="item">@m.id</td> <td class="item">@m.id</td>
<td class="mask_name">mask_name</td> <td class="mask_name">@m.name</td>
<td class="content">@m.type</td> <td class="content">@m.type</td>
<td class="item">@(m.is_unique==1?"是":"否")</td> <td class="item">@(m.is_unique==1?"是":"否")</td>
<td class="content">@m.setting</td> <td class="content">@m.setting</td>
<td> <td>
<a data-toggle="modal" data-target="#edit-field-mask" title="修改"> <a class="editMaskBtn" data-toggle="modal" data-target="#edit-field-mask" title="修改">
<i class="fa-solid fa-pen-to-square"></i> <i class="fa-solid fa-pen-to-square"></i>
</a> </a>
</td> </td>
<td> <td>
<a data-toggle="modal" data-target="#delete-field-mask" title="刪除"> <a class="delMaskBtn" data-toggle="modal" data-target="#delete-field-mask" title="刪除">
<i class="fa-solid fa-trash-can"></i> <i class="fa-solid fa-trash-can"></i>
</a> </a>
</td> </td>
...@@ -137,26 +137,32 @@ ...@@ -137,26 +137,32 @@
</div> <!--END of div "modal-header"--> </div> <!--END of div "modal-header"-->
<div class="modal-body" style="padding-top:35px"> <div class="modal-body" style="padding-top:35px">
<form id="createMaskForm" class="form-horizontal0" method="post" autocomplete="off" > <form id="createMaskForm" class="form-horizontal0" method="post" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div> <div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<input hidden name="mask_id" >
<input hidden name="merchant_id" value="@ViewBag.merchant_id">
<input hidden name="field_id" value="@ViewBag.field_id">
<input hidden name="vault_id" value="@ViewBag.vault_id">
</div>
<div class="form-group"> <div class="form-group">
<label class="control-labe" for="name">名稱:</label> <label class="control-labe required" for="name">名稱:</label>
<div class=""> <div class="">
<input type="text" name="name" class="form-control form-control-sm0"> <input type="text" name="name" class="form-control form-control-sm0" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-labe" for="">是否為唯一值:</label> <label class="control-labe" for="">是否為唯一值:</label>
<div class="form-check form-check-inline"> <div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="is_unique" id="uniqueY" value="option1" checked> <input class="form-check-input" type="radio" name="is_unique" id="uniqueY" value="1" checked>
<label class="form-check-label" for="uniqueY"> <label class="form-check-label" for="uniqueY">
</label> </label>
</div> </div>
<div class="form-check form-check-inline"> <div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="is_unique" id="uniqueN" value="option2"> <input class="form-check-input" type="radio" name="is_unique" id="uniqueN" value="0">
<label class="form-check-label" for="uniqueN"> <label class="form-check-label" for="uniqueN">
</label> </label>
...@@ -167,7 +173,7 @@ ...@@ -167,7 +173,7 @@
<label class="control-labe" for="userName">種類:</label> <label class="control-labe" for="userName">種類:</label>
<div class="form-group"> <div class="form-group">
<div class="dropdown bootstrap-select selecter form-control -tokenization"> <div class="dropdown bootstrap-select selecter form-control -tokenization">
<select title="請選遮罩種類(單選)" name="type" id="maskType" class="selectpicker selecter form-control selectpicker-tokenization" onchange="showMaskSettingsAdv()"> <select title="請選遮罩種類(單選)" id="maskType" class="selectpicker selecter form-control selectpicker-tokenization" onchange="showMaskSettingsAdv()">
<option class="bs-title-option" value=""></option> <option class="bs-title-option" value=""></option>
<option value="0">0</option> <option value="0">0</option>
<option value="1">1</option> <option value="1">1</option>
...@@ -185,7 +191,7 @@ ...@@ -185,7 +191,7 @@
<label class="control-labe" for="userName">mask:</label> <label class="control-labe" for="userName">mask:</label>
<div class="form-group"> <div class="form-group">
<div class="dropdown bootstrap-select selecter form-control -tokenization"> <div class="dropdown bootstrap-select selecter form-control -tokenization">
<select title="請選擇mask(單選)" name="mask" class="selectpicker selecter form-control selectpicker-tokenization"> <select id="mask" title="請選擇mask(單選)" class="selectpicker selecter form-control selectpicker-tokenization">
<option class="bs-title-option" value=""></option> <option class="bs-title-option" value=""></option>
<option>0</option> <option>0</option>
<option>1</option> <option>1</option>
...@@ -196,21 +202,21 @@ ...@@ -196,21 +202,21 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-labe" for="userName">size init:</label> <label class="control-labe required" for="userName">size init:</label>
<div class=""> <div class="">
<input type="number" name="size_init" class="form-control form-control-sm0"> <input type="number" name="size_init" class="form-control form-control-sm0" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-labe" for="userName">size end:</label> <label class="control-labe required" for="userName">size end:</label>
<div class=""> <div class="">
<input type="number" name="size_end" class="form-control form-control-sm0"> <input type="number" name="size_end" class="form-control form-control-sm0" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-labe" for="userName">to skip:</label> <label class="control-labe required" for="userName">to skip:</label>
<div class=""> <div class="">
<input type="text" name="toskip" class="form-control form-control-sm0"> <input type="text" name="toskip" class="form-control form-control-sm0" required>
</div> </div>
</div> </div>
</div> </div>
...@@ -233,8 +239,6 @@ ...@@ -233,8 +239,6 @@
</div> </div>
<!-- END of Modal--> <!-- END of Modal-->
<!--END of 新增遮罩 Popup Form--> <!--END of 新增遮罩 Popup Form-->
<!--刪除遮罩 Form--> <!--刪除遮罩 Form-->
<!-- Modal --> <!-- Modal -->
...@@ -258,7 +262,7 @@ ...@@ -258,7 +262,7 @@
</p> </p>
<div class="SubmitBlock SubmitBlock_sm"> <div class="SubmitBlock SubmitBlock_sm">
<button type="submit" class="btn btn-mainblue-solid" style="margin-right: 10px; width: 80px">確定</button> <button type="button" id="delMaskConfirmBtn" class="btn btn-mainblue-solid" style="margin-right: 10px; width: 80px">確定</button>
<button type="button" class="btn btn-mainblue-hollow" data-dismiss="modal" style="margin-right: 10px; width: 80px">取消</button> <button type="button" class="btn btn-mainblue-hollow" data-dismiss="modal" style="margin-right: 10px; width: 80px">取消</button>
</div> </div>
...@@ -284,47 +288,109 @@ ...@@ -284,47 +288,109 @@
$('document').ready(function () { $('document').ready(function () {
var msg = '@TempData["msg"]'; var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]'; var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') { if (msg != '') {
showAlert(IsSuccess, msg); showAlert(IsSuccess, msg);
} }
//新增mask
$("#createMaskBtn").click(function (event) { $("#createMaskBtn").click(function (event) {
/* event.preventDefault();*/ $('#new-field-mask .modal-title').text('新增遮罩');
console.log('createMaskForm'); $.ajax({
var formData = { url: '/TokenVault/CreateMask',
mask: { type: 'POST',
name: $('input[name="name"]').val(), data: $('#createMaskForm').serialize(),
type: $('input[name="type"]').val(), success: function (data) {
is_unique: $('input[name="is_unique"]').val(), //console.log(data);
size_init: $('input[name="size_init"]').val(),
size_end: $('input[name="size_end"]').val(), showAlert(data.isSuccess, data.message);
mask: $('input[name="mask"]').val(), if (data.isSuccess) {
toskip: $('input[name="toskip"]').val(), $('#new-field-mask').modal('hide');
setTimeout(function () {
location.reload();
}, 2000);
}
}, },
merchant_id : parseInt('@ViewBag.Merchant_id'), error: function (xhr, status, error) {
vault_id : parseInt('@ViewBag.vault_id'), console.log(xhr.responseText);
field_id : parseInt('@ViewBag.field_id') showAlert(false, "發生錯誤");
}
});
})
//編輯mask
$(".editMaskBtn").click(function (event) {
var selectMaskId = 0;
selectMaskId = $(this).closest("tr").find("td:first").text();
console.log('selectMaskId=' + selectMaskId);
$('input[name="mask_id"]').val(selectMaskId);
$('#new-field-mask .modal-title').text('編輯遮罩');
$('new-field-mask').modal();
//$.ajax({
// url: '/TokenVault/EditMask',
// type: 'POST',
// data: $('#createMaskForm').serialize(),
// success: function (data) {
// //console.log(data);
// showAlert(data.isSuccess, data.message);
// if (data.isSuccess) {
// $('#new-field-mask').modal('hide');
// setTimeout(function () {
// location.reload();
// }, 2000);
// }
// },
// error: function (xhr, status, error) {
// console.log(xhr.responseText);
// showAlert(false, "發生錯誤");
// }
//});
})
//刪除mask
var selectMaskId = 0;
$('.delMaskBtn').click(function () {
selectMaskId = $(this).closest("tr").find("td:first").text();
console.log('selectMaskId=' + selectMaskId);
})
$('#delMaskConfirmBtn').click(function () {
var data = {
merchant_id:'@ViewBag.merchant_id',
vault_id:'@ViewBag.vault_id',
mask_id: selectMaskId
}; };
console.log('formData=' + JSON.stringify(formData));
// 提交表單
$.ajax({ $.ajax({
url: '/TokenVault/CreateMask', url: '/TokenVault/DeleteMask',
type: 'POST', type: 'POST',
data: JSON.stringify(formData), data: data,
contentType: "application/json; charset=utf-8", success: function (data) {
dataType: "json", //console.log(data);
success: function (response) {
// 處理成功回應 showAlert(data.isSuccess, data.message);
if (data.isSuccess) {
$('#delete-field-mask').modal('hide');
setTimeout(function () {
location.reload();
}, 2000);
}
}, },
error: function (error) { error: function (xhr, status, error) {
// 處理錯誤回應 console.log(xhr.responseText);
showAlert(false, "發生錯誤");
} }
}); });
}); })
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12 grid-margin stretch-card"> <div class="col-12 grid-margin stretch-card">
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12 grid-margin stretch-card"> <div class="col-12 grid-margin stretch-card">
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12 grid-margin stretch-card"> <div class="col-12 grid-margin stretch-card">
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-12 grid-margin stretch-card"> <div class="col-12 grid-margin stretch-card">
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-lg-12 grid-margin stretch-card"> <div class="col-lg-12 grid-margin stretch-card">
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
{ {
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" /> <input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
} }
<div id="msgDiv"></div> <div class="floating-msg" id="msgDiv"></div>
</div> </div>
<div class="row"> <div class="row">
......
...@@ -19272,4 +19272,15 @@ tbody { ...@@ -19272,4 +19272,15 @@ tbody {
.departmentRow, .userRow { .departmentRow, .userRow {
cursor: pointer; cursor: pointer;
}
.floating-msg {
position: fixed;
top: 80px;
right: 20px;
z-index: 9999;
background-color: transparent;
padding: 10px;
border: 0;
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment