Commit 43d0bc16 authored by Jason's avatar Jason

1.新增欄位使用者和權限

2.編輯欄位使用者和權限未完成
parent 8c30004c
......@@ -599,7 +599,7 @@ namespace backstage.Controllers
var matchingMask = existField.masks.FirstOrDefault(m => m.id == maskId);
if (matchingMask != null)
{
string maskText = $"[{matchingMask.id}] - {matchingMask.name} - {matchingMask.setting}";
string maskText = $"[{matchingMask.id}] - {matchingMask.name} - {matchingMask.setting}<br/>";
maskTextList.Add(maskText);
}
}
......@@ -628,25 +628,48 @@ namespace backstage.Controllers
/// <returns></returns>
[Authorize(Policy = "AdminOnly")]
[HttpPost]
public async Task<ResultModel> AddUsers([FromBody] IFormCollection form)
public async Task<ResultModel> AddUsers(IFormCollection form)
{
string msg;
var result = new ResultModel();
int merchant_id = Convert.ToInt32( form["merchant_id"]);
if (!form.ContainsKey("allow_decrypt") ||
!form.ContainsKey("allow_new") ||
!form.ContainsKey("allow_update") ||
!form.ContainsKey("allow_del") ||
!form.ContainsKey("allow_masks") ||
!form.ContainsKey("default_mask_id")||
!form.ContainsKey("allow_masks") ||
!form.ContainsKey("vault_id") ||
!form.ContainsKey("field_id") ||
!form.ContainsKey("merchant_id")
)
{
// 至少有一個鍵不存在,處理這種情況
switch (_currentLanguage)
{
case "en":
msg = "All fields are required.";
break;
case "zh":
msg = "所有欄位必填";
break;
default:
msg = "所有欄位必填";
break;
}
result.IsSuccess = false;
result.Message = msg;
return result;
}
int merchant_id = Convert.ToInt32(form["merchant_id"]);
int vault_id = Convert.ToInt32(form["vault_id"]);
int field_id = Convert.ToInt32(form["field_id"]);
int user_id = Convert.ToInt32(form["id"]);
// 構建包含參數的查詢字串
var queryString = new RouteValueDictionary {
{ "Merchant_id", merchant_id },
{ "vault_id", vault_id },
{ "field_id", field_id },
};
// 取得使用者的 "token" Claim 值
string token = User.FindFirstValue("token");
......@@ -980,34 +1003,49 @@ namespace backstage.Controllers
var FieldsResponse2 = new FieldsResponse();
url = _config["IP"] + "/v2/vault";
httpMethod = HttpMethod.Post;
var addUserToField_data = new[]
try
{
new
var x = form["allow_masks"].ToString().Split(',').Select(int.Parse).ToArray();
string numberString = form["allow_masks"].ToString();
int[] allow_masks = Array.ConvertAll(numberString.Split(','), int.Parse);
var addUserToField_data = new[]
{
action = "ADD",
id = user_id,
field_id = field_id,
allow_decrypt = "1",
allow_new = "1",
allow_update = "1",
allow_del = "1",
default_mask_id = "1"
}
};
parameters = new Dictionary<string, string>
{
{ "id", vault_id.ToString()},
{ "info", "USERS"},
{ "Merchant_id", merchant_id.ToString()},
{ "data", JsonConvert.SerializeObject(addUserToField_data)},
new
{
action = "ADD",
id = user_id,
field_id = field_id,
allow_decrypt = Convert.ToInt32(form["allow_decrypt"].ToString()),
allow_new = Convert.ToInt32(form["allow_new"].ToString()),
allow_update = Convert.ToInt32(form["allow_update"].ToString()),
allow_del = Convert.ToInt32(form["allow_del"].ToString()),
allow_masks=allow_masks,
default_mask_id = Convert.ToInt32( form["default_mask_id"])
}
};
parameters = new Dictionary<string, string>
{
{ "id", vault_id.ToString()},
{ "info", "USERS"},
{ "Merchant_id", merchant_id.ToString()},
{ "data", JsonConvert.SerializeObject(addUserToField_data)},
};
}
catch (Exception e)
{
return result;
}
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
FieldsResponse2 = JsonConvert.DeserializeObject<FieldsResponse>(apiResult.Data.ToString());
if (FieldsResponse2.failInfo != null)
var response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
if (response.r!=0)
{
switch (_currentLanguage)
{
......@@ -1024,7 +1062,7 @@ namespace backstage.Controllers
}
result.IsSuccess = false;
result.Message = msg + FieldsResponse2.m;
result.Message = msg + response.r+","+response.m;
return result;
}
else
......
......@@ -120,18 +120,30 @@
<data name="Add User" xml:space="preserve">
<value>新增使用者</value>
</data>
<data name="Allow decrypt" xml:space="preserve">
<value>允許解密</value>
</data>
<data name="Allow decryption" xml:space="preserve">
<value>允許解密</value>
</data>
<data name="Allow delete" xml:space="preserve">
<value>允許刪除</value>
</data>
<data name="Allow new" xml:space="preserve">
<value>允許新增</value>
</data>
<data name="Allow to add" xml:space="preserve">
<value>允許新增</value>
</data>
<data name="Allow update" xml:space="preserve">
<value>允許更新</value>
</data>
<data name="Are you sure you want to remove this user?" xml:space="preserve">
<value>確認移除使用者?</value>
</data>
<data name="Cancel" xml:space="preserve">
<value>取消</value>
</data>
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
......@@ -153,6 +165,9 @@
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Default mask" xml:space="preserve">
<value>預設遮罩</value>
</data>
<data name="Default Mask ID" xml:space="preserve">
<value>預設遮罩ID</value>
</data>
......@@ -162,6 +177,9 @@
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Edit user" xml:space="preserve">
<value>編輯使用者</value>
</data>
<data name="Enable" xml:space="preserve">
<value>啟用</value>
</data>
......@@ -180,13 +198,25 @@
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="No" xml:space="preserve">
<value></value>
</data>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Remove User" xml:space="preserve">
<data name="Please select default mask(Single option)." xml:space="preserve">
<value>請選預設遮罩(單選)</value>
</data>
<data name="Please select mask(multiple options)." xml:space="preserve">
<value>請選遮罩(複選)</value>
</data>
<data name="Please select user(Single option)." xml:space="preserve">
<value>請選使用者名稱(單選)</value>
</data>
<data name="Remove user" xml:space="preserve">
<value>移除使用者</value>
</data>
<data name="Revise" xml:space="preserve">
......@@ -219,4 +249,7 @@
<data name="Vault" xml:space="preserve">
<value>保險庫</value>
</data>
<data name="Yes" xml:space="preserve">
<value></value>
</data>
</root>
\ No newline at end of file
......@@ -13,7 +13,11 @@
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<style>
.editUser {
cursor: pointer;
}
</style>
}
<div class="page-header">
......@@ -43,7 +47,7 @@
<div>
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" data-toggle="modal" data-target="#new-field-user">@Localizer["Add User"]</a>
<a type="button" id="open_modal" class="btn btn-info float-right mb-2 @disabledClass" data-toggle="modal" data-target="#new-field-user">@Localizer["Add User"]</a>
<div class="rank-table">
<div class="table-responsive">
<table class="table table-striped ">
......@@ -67,30 +71,30 @@
@foreach (var i in Model)
{
<tr id="@i.id" class="">
<td>@i.id</td>
<td>@i.name</td>
<td>@i.username</td>
<td class="editUser">@i.id</td>
<td class="editUser">@i.name</td>
<td class="editUser">@i.username</td>
<td class="custom-tooltip" data-tooltip="@i.masksSettingText">@i.masksText</td>
<td>
<td class="editUser" data-bool="@i.allow_decrypt">
@if (i.allow_decrypt == 1)
{<span>&#x2714;</span>}
</td>
<td>
<td class="editUser" data-bool="@i.allow_new">
@if (i.allow_new == 1)
{<span>&#x2714;</span>}
</td>
<td>
<td class="editUser" data-bool="@i.allow_update">
@if (i.allow_update == 1)
{<span>&#x2714;</span>}
</td>
<td>
<td class="editUser" data-bool="@i.allow_del">
@if (i.allow_del == 1)
{<span>&#x2714;</span>}
</td>
<td>@i.default_mask_id</td>
<td class="editUser">@i.default_mask_id</td>
<td>
<a data-id="@i.id" class="btn btnPermission btn-sm" data-toggle="modal" data-target="#delete-field-user">@Localizer["Remove User"]</a>
......@@ -147,7 +151,7 @@
<button type="button" class="close" data-dismiss="modal">&times;</button>
-->
<h3 class="modal-title">
新增使用者
@Localizer["Add user"]
</h3>
</div> <!--END of div "modal-header"-->
......@@ -156,26 +160,26 @@
<form id="addUserForm" class="form-horizontal0">
<!-- <div class="form-group">
<label class="control-labe" for="name">姓名:</label>
<div class="">
<input type="text" class="form-control form-control-sm0">
</div>
</div> -->
<label class="control-labe" for="name">姓名:</label>
<div class="">
<input type="text" class="form-control form-control-sm0">
</div>
</div> -->
<!-- <div class="form-group">
<label class="control-labe" for="userName">使用者名稱:</label>
<div class="">
<input type="text" class="form-control form-control-sm0">
</div>
</div> -->
<label class="control-labe" for="userName">使用者名稱:</label>
<div class="">
<input type="text" class="form-control form-control-sm0">
</div>
</div> -->
<input hidden name="merchant_id" value="@ViewBag.Merchant_id" />
<input hidden name="vault_id" value="@ViewBag.vault_id" />
<input hidden name="field_id" value="@ViewBag.field_id" />
<input hidden name="id" />
<div class="form-group">
<label class="control-labe" for="userName">使用者名稱:</label>
<label class="control-labe" for="userName"> @Localizer["Username"]:</label>
<div class="form-group">
<div class="dropdown bootstrap-select selecter form-control ">
<select id="user_selectpicker" title="請選使用者名稱(單選)" class="selectpicker selecter form-control selectpicker-tokenization" asp-items="ViewBag.users" tabindex="null">
<select id="user_selectpicker" title="@Localizer["Please select user(Single option)."]" class="selectpicker selecter form-control selectpicker-tokenization" asp-items="ViewBag.users" tabindex="null">
</select>
</div>
......@@ -183,92 +187,92 @@
</div>
<div class="form-group">
<label class="control-labe" for="mask">遮罩:</label>
<label class="control-labe" for="mask">@Localizer["Allow mask"]:</label>
<div class="form-group">
<div class="dropdown bootstrap-select show-tick selecter form-control ">
<select name="allow_masks" id="select_mask" multiple="" title="請選遮罩(複選)" class="mask_selectpicker selectpicker selecter form-control selectpicker-tokenization" tabindex="null" asp-items="ViewBag.masks">
<select name="allow_masks" id="select_mask" multiple="" title="@Localizer["Please select mask(multiple options)."]" class="mask_selectpicker selectpicker selecter form-control selectpicker-tokenization" tabindex="null" asp-items="ViewBag.masks">
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="mask">預設遮罩:</label>
<label class="control-labe" for="mask">@Localizer["Default mask"]:</label>
<div class="form-group">
<div class="dropdown bootstrap-select selecter form-control ">
<select name="default_mask_id" id="default_mask" title="請選預設遮罩(單選)" class=" default_mask_selectpicker selectpicker selecter form-control selectpicker-tokenization" tabindex="null" asp-items="ViewBag.masks">
<select name="default_mask_id" id="default_mask" title="@Localizer["Please select default mask(Single option)."]" class=" default_mask_selectpicker selectpicker selecter form-control selectpicker-tokenization" tabindex="null" asp-items="ViewBag.masks">
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="">允許解密:</label>
<label class="control-labe" for="">@Localizer["Allow decrypt"]:</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_decrypt" id="allowDecodeY" value="option1">
<input class="form-check-input" type="radio" name="allow_decrypt" id="allowDecodeY" value="1" checked>
<label class="form-check-label" for="allowDecodeY">
@Localizer["Yes"]
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_decrypt" id="allowDecodeN" value="option2">
<input class="form-check-input" type="radio" name="allow_decrypt" id="allowDecodeN" value="0">
<label class="form-check-label" for="allowDecodeN">
@Localizer["No"]
</label>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="">允許新增:</label>
<label class="control-labe" for="">@Localizer["Allow new"]:</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_new" id="allowAddY" value="option1">
<input class="form-check-input" type="radio" name="allow_new" id="allowAddY" value="1" checked>
<label class="form-check-label" for="allowAddY">
@Localizer["Yes"]
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_new" id="allowAddN" value="option2">
<input class="form-check-input" type="radio" name="allow_new" id="allowAddN" value="0">
<label class="form-check-label" for="allowAddN">
@Localizer["No"]
</label>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="">允許更新:</label>
<label class="control-labe" for="">@Localizer["Allow update"]:</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_update" id="allowUpdateY" value="option1">
<input class="form-check-input" type="radio" name="allow_update" id="allowUpdateY" value="1" checked>
<label class="form-check-label" for="allowUpdateY">
@Localizer["Yes"]
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_update" id="allowUpdateN" value="option2">
<input class="form-check-input" type="radio" name="allow_update" id="allowUpdateN" value="0">
<label class="form-check-label" for="allowUpdateN">
@Localizer["No"]
</label>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="">允許刪除:</label>
<label class="control-labe" for="">@Localizer["Allow delete"]:</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_del" id="allowDeleteY" value="option1">
<input class="form-check-input" type="radio" name="allow_del" id="allowDeleteY" value="1" checked>
<label class="form-check-label" for="allowDeleteY">
@Localizer["Yes"]
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_del" id="allowDeleteN" value="option2">
<input class="form-check-input" type="radio" name="allow_del" id="allowDeleteN" value="0">
<label class="form-check-label" for="allowDeleteN">
@Localizer["No"]
</label>
</div>
</div>
<div class="SubmitBlock">
<button id="createUserBtn" class="btn btn-mainblue-solid btnSubmit">新增</button>
<button type="button" class="btn btn-mainblue-hollow btnReset" data-dismiss="modal">取消</button>
<button id="createUserBtn" class="btn btn-mainblue-solid btnSubmit">@Localizer["Send out"]</button>
<button type="button" class="btn btn-mainblue-hollow btnReset" data-dismiss="modal">@Localizer["Cancel"]</button>
</div>
</form>
</div> <!--END of div "modal-body"-->
......@@ -284,6 +288,155 @@
</div>
<!--編輯使用者 Popup Form-->
<!--<div class="modal fade modal-full" id="edit-field-user" tabindex="-1" style="display: none;" aria-hidden="true">
<div class="modal-dialog modalforMemberGo">-->
<!-- Modal content-->
<!--<div class="modal-content">
<div class="modal-header">-->
<!--
<button type="button" class="close" data-dismiss="modal">&times;</button>
-->
<!--<h3 class="modal-title">
@Localizer["Edit user"]
</h3>
</div>--> <!--END of div "modal-header"-->
<!--<div class="modal-body" style="padding-top:35px">
<form id="editUserForm" class="form-horizontal0">-->
<!-- <div class="form-group">
<label class="control-labe" for="name">姓名:</label>
<div class="">
<input type="text" class="form-control form-control-sm0">
</div>
</div> -->
<!-- <div class="form-group">
<label class="control-labe" for="userName">使用者名稱:</label>
<div class="">
<input type="text" class="form-control form-control-sm0">
</div>
</div> -->
<!--<input hidden name="merchant_id" value="@ViewBag.Merchant_id" />
<input hidden name="vault_id" value="@ViewBag.vault_id" />
<input hidden name="field_id" value="@ViewBag.field_id" />
<input hidden name="id" />
<div class="form-group">
<label class="control-labe" for="userName"> @Localizer["Username"]:</label>
<div class="form-group">
<div class="dropdown bootstrap-select selecter form-control ">
<select id="edit_user_selectpicker" title="@Localizer["Please select user(Single option)."]" class="selectpicker selecter form-control selectpicker-tokenization" tabindex="null">
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="mask">@Localizer["Allow mask"]:</label>
<div class="form-group">
<div class="dropdown bootstrap-select show-tick selecter form-control ">
<select name="allow_masks" id="edit_select_mask" multiple="" title="@Localizer["Please select mask(multiple options)."]" class="mask_selectpicker selectpicker selecter form-control selectpicker-tokenization" tabindex="null" asp-items="ViewBag.masks">
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="mask">@Localizer["Default mask"]:</label>
<div class="form-group">
<div class="dropdown bootstrap-select selecter form-control ">
<select name="default_mask_id" id="edit_default_mask" title="@Localizer["Please select default mask(Single option)."]" class=" default_mask_selectpicker selectpicker selecter form-control selectpicker-tokenization" tabindex="null" asp-items="ViewBag.masks">
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="">@Localizer["Allow decrypt"]:</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_decrypt" id="allowDecodeY" value="1" checked>
<label class="form-check-label" for="allowDecodeY">
@Localizer["Yes"]
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_decrypt" id="allowDecodeN" value="0">
<label class="form-check-label" for="allowDecodeN">
@Localizer["No"]
</label>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="">@Localizer["Allow new"]:</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_new" id="allowAddY" value="1" checked>
<label class="form-check-label" for="allowAddY">
@Localizer["Yes"]
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_new" id="allowAddN" value="0">
<label class="form-check-label" for="allowAddN">
@Localizer["No"]
</label>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="">@Localizer["Allow update"]:</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_update" id="allowUpdateY" value="1" checked>
<label class="form-check-label" for="allowUpdateY">
@Localizer["Yes"]
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_update" id="allowUpdateN" value="0">
<label class="form-check-label" for="allowUpdateN">
@Localizer["No"]
</label>
</div>
</div>
<div class="form-group">
<label class="control-labe" for="">@Localizer["Allow delete"]:</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_del" id="allowDeleteY" value="1" checked>
<label class="form-check-label" for="allowDeleteY">
@Localizer["Yes"]
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="allow_del" id="allowDeleteN" value="0">
<label class="form-check-label" for="allowDeleteN">
@Localizer["No"]
</label>
</div>
</div>
<div class="SubmitBlock">
<button id="createUserBtn" class="btn btn-mainblue-solid btnSubmit">@Localizer["Send out"]</button>
<button type="button" class="btn btn-mainblue-hollow btnReset" data-dismiss="modal">@Localizer["Cancel"]</button>
</div>
</form>
</div>--> <!--END of div "modal-body"-->
<!--<div class="modal-footer modalforMemberGo">-->
<!--
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
-->
<!--</div>--> <!--END of div "modal-footer"-->
<!--</div>--><!-- END of Modal content-->
<!--</div>--><!-- END of div "modal-dialog modal-lg" -->
<!--</div>-->
<!--移除user Form-->
<!-- Modal -->
<div class="modal fade " id="delete-field-user" tabindex="-1" style=" padding-right: 17px;" aria-modal="true" role="dialog">
......@@ -349,7 +502,11 @@
var selectUserId = 0;
$('#open_modal').click(function () {
// 選擇索引值大於3(即第四個以後的)的所有 input 元素並清除它們的值
//$('#addUserForm input:gt(3)').val('');
})
//選定使用者
......@@ -379,16 +536,17 @@
$('#default_mask').selectpicker('refresh');
});
//送出新增使用者
$("#createUserBtn").on("click", function () {
$('#createMaskForm').serialize(),
//送出新增使用者
$("#createUserBtn").on("click", function (e) {
e.preventDefault();
console.log('fomr=')
console.log('fomr=' + $('#addUserForm').serialize());
$.ajax({
url: "/TokenVault/Addusers",
url: "/TokenVault/AddUsers",
method: "POST",
contentType: "application/json",
data: $('#addUserForm').serialize(),
success: function (response) {
showAlert(response.isSuccess, response.message);
......@@ -406,9 +564,41 @@
});
});
//移除user
$('.btnPermission').click(function () {
////編輯user
//// 監聽所有 class 為 'editUser' 的元素的點擊事件
//$('.editUser').click(function () {
// // 從被點擊的元素中獲取相關的值
// var id = $(this).closest('tr').children('td').eq(0).text();
// var name = $(this).closest('tr').children('td').eq(1).text();
// var username = $(this).closest('tr').children('td').eq(2).text();
// var allow_masks = $(this).closest('tr').children('td').eq(3).text();
// var default_mask = $(this).closest('tr').children('td').eq(8).text();
// // 獲取 allow_decrypt、allow_new、allow_update 及 allow_del 的值
// var allowDecrypt = $(this).closest('tr').children('td').eq(4).data('bool')
// var allowNew = $(this).closest('tr').children('td').eq(5).data('bool');
// var allowUpdate = $(this).closest('tr').children('td').eq(6).data('bool');
// var allowDel = $(this).closest('tr').children('td').eq(7).data('bool');
// console.log('allow_masks=' + allow_masks)
// console.log('default_mask=' + default_mask)
// // 將獲取的值填入模態框的欄位中
// //$('#addUserForm input[name="id"]').val(id);
// //$('#user_selectpicker').val(id);
// //$('#user_selectpicker').selectpicker('refresh');
// // 將 allow_decrypt、allow_new、allow_update 及 allow_del 的值填入模態框的欄位中
// $('#editUserForm input[name="allow_decrypt"][value="' + allowDecrypt + '"]').prop('checked', true);
// $('#editUserForm input[name="allow_new"][value="' + allowNew + '"]').prop('checked', true);
// $('#editUserForm input[name="allow_update"][value="' + allowUpdate + '"]').prop('checked', true);
// $('#editUserForm input[name="allow_del"][value="' + allowDel + '"]').prop('checked', true);
// // 開啟模態框
// $('#edit-field-user').modal('show');
//});
//移除user
$('.btnPermission').click(function () {
selectUserId = $(this).data('id');
console.log('selectUserId=' + selectUserId);
......
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