1
0
Fork 0
master
嘉祥 詹 2024-07-26 18:48:06 +08:00
parent d1d662f1b0
commit 75104a82cc
7 changed files with 413 additions and 9 deletions

View File

@ -25,8 +25,48 @@ namespace QuotationMaker.Controllers
} }
[Route("deptList")] [Route("noGroupUserList")]
public ActionResult DeptList(IFormCollection obj) public ActionResult NoGroupUserList(IFormCollection obj) {
userListResult ret = new userListResult();
authToken token = new authToken(this._httpContextAccessor);
if (token.user_isLogin == false)
{
HttpContext.Response.Cookies.Delete("token_key");
ret.ret = "no";
ret.err_code = "99999";
ret.message = "非登入狀態!";
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
if (token.user_perm != "system")
{
ret.ret = "no";
ret.err_code = "90001";
ret.message = "此帳號無此api使用權限!";
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
string dept_uid = obj["dept_uid"].ToString();
if (dept_uid == "")
{
ret.ret = "no";
ret.err_code = "00002";
ret.message = "無dept_uid參數!";
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
List<user> userList = conn.Query<user>("select A.* from users A, userDept B where A.user_uid = B.user_uid and A.user_ishidden = 'N' and A.user_onjob= 'Y' and B.dept_uid = @dept_uid and A.user_uid not in (select user_uid from groupUser) ", new { dept_uid = dept_uid }).ToList();
ret.userList = userList;
ret.ret = "yes";
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
[Route("authDeptList")]
public ActionResult AuthDeptList(IFormCollection obj)
{ {
deptListResult ret = new deptListResult(); deptListResult ret = new deptListResult();
@ -76,6 +116,24 @@ namespace QuotationMaker.Controllers
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
} }
string dept_uid = obj["dept_uid"].ToString();
if (dept_uid == "") {
ret.ret = "no";
ret.err_code = "00002";
ret.message = "無dept_uid參數!";
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
List<group> groupList = conn.Query<group>("select * from group where dept_uid = @dept_uid", new { dept_uid = dept_uid}).ToList();
foreach (group objGroup in groupList)
{
ret.groups.Add(new groupDetail(objGroup));
}
ret.ret = "yes";
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8"); return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
} }

View File

@ -21,7 +21,22 @@ namespace QuotationMaker.Controllers
{ {
return View(); return View();
} }
public IActionResult GroupList()
{
if (checkToken() == false)
{
HttpContext.Response.Cookies.Delete("token_key");
return Redirect("~/Home/Login");
}
if (this._objToken.user_perm != "system")
{
return Redirect("~/");
}
return View();
}
public IActionResult UserList() public IActionResult UserList()
{ {

View File

@ -50,8 +50,11 @@ public class DbTableClass
[JsonIgnore] [JsonIgnore]
[Key] [Key]
public int group_sn { get; set; } public int group_sn { get; set; }
public string dept_uid { get; set; } = "";
public string group_uid { get; set; } = ""; public string group_uid { get; set; } = "";
public string group_name { get; set; } = ""; public string group_name { get; set; } = "";
public DateTime group_createdate { get; set; } = DateTime.Now; public DateTime group_createdate { get; set; } = DateTime.Now;
} }

View File

@ -4,8 +4,7 @@ using Dapper;
using static DbTableClass; using static DbTableClass;
public class resultClass public class resultClass
{ {
public class deptListResult
public class deptListResult
{ {
public string ret = "no"; public string ret = "no";
public string err_code = "0000"; public string err_code = "0000";
@ -22,8 +21,18 @@ public class resultClass
} }
public class groupDetail : group public class groupDetail : group
{ {
SqlConnection conn = new SqlConnection(GlobalClass.appsettings("ConnectionStrings:SQLConnectionString"));
public List<user> users = new List<user>(); public List<user> users = new List<user>();
public groupDetail() { }
public groupDetail(group group) {
users = conn.Query<user>("select B.* from groupUser A, users B where A.user_uid = B.user_uid and A.group_uid = @group_uid", new {group_uid = group.group_uid}).ToList();
}
} }
public class userWithDept : user public class userWithDept : user

View File

@ -14,3 +14,198 @@
<script src="~/assets/vendor/nestable2/jquery.nestable.min.js"></script> <script src="~/assets/vendor/nestable2/jquery.nestable.min.js"></script>
<script src="~/assets/javascript/custom/grouplist.js" asp-append-version="true"></script> <script src="~/assets/javascript/custom/grouplist.js" asp-append-version="true"></script>
} }
<!-- .page-inner -->
<div class="page-inner">
<!-- .page-title-bar -->
<header class="page-title-bar">
<!-- .breadcrumb -->
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item active">
<a href="#"><i class="breadcrumb-icon fa fa-angle-left mr-2"></i>群組清單</a>
</li>
</ol>
</nav><!-- /.breadcrumb -->
<!-- title -->
<h1 class="page-title"> 群組清單 </h1>
<p class="text-muted"> </p><!-- /title -->
</header><!-- /.page-title-bar -->
<!-- .page-section -->
<div class="page-section">
<button type="button" id="groupNewModal" class="btn btn-primary btn-floated position-absolute" title="Add new client"><i class="fa fa-plus"></i></button>
<!-- .card -->
<div class="card card-fluid">
<!-- .card-body -->
<div class="card-body">
<div class="form-row">
<div class="col-md-3">
<div class="form-group">
<label for="dept_select">單位</label>
<select class="custom-select custom-select-sm" id="dept_select" name="dept_select" required="">
</select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label for="search_btn" style="display: block;">&nbsp; &nbsp;</label>
<button type="button" class="btn btn-info btn-sm" id="search_btn">切換單位</button>
</div>
</div>
</div>
</div><!-- /.card-body -->
</div><!-- /.card -->
<!-- grid row -->
<div id="group_div" class="row">
<!-- grid column -->
<div class="col-lg-6">
<!-- .card -->
<div class="card card-fluid">
<!-- .nestable -->
<div class="card-header border-bottom-0 btn-group">
<div>Footer Menus</div>
<div class="dd-nodrag btn-group ml-auto">
<button class="btn btn-sm btn-secondary">Edit</button> <button class="btn btn-sm btn-secondary"><i class="far fa-trash-alt"></i></button>
</div>
</div>
<div id="nestable01" class="dd" data-toggle="nestable" data-group="1" data-max-depth="0">
<!-- .dd-list -->
<ol class="dd-list">
<li class="dd-item dd-nodrag" data-id="1">
<div class="dd-handle">
<span class="dd-nodrag drag-indicator"></span>
<div> Tracking Order </div>
<div class="dd-nodrag btn-group ml-auto">
<button class="btn btn-sm btn-secondary">Edit</button> <button class="btn btn-sm btn-secondary"><i class="far fa-trash-alt"></i></button>
</div>
</div>
</li>
</ol><!-- /.dd-list -->
</div><!-- /.nestable -->
<!-- .card-footer -->
<div class="card-footer">
<a href="#" class="card-footer-item justify-content-start"><span><i class="fa fa-plus-circle mr-1"></i> Add Menu Item</span></a>
</div><!-- /.card-footer -->
</div><!-- /.card -->
</div><!-- /grid column -->
</div><!-- / grid row -->
</div><!-- /.page-section -->
</div><!-- /.page-inner -->
<!-- .modal -->
<form id="clientGroupEditForm" name="clientGroupEditForm">
<div class="modal fade" id="groupModal" tabindex="-1" role="dialog" aria-labelledby="optionItemModalLabel" data-backdrop="static"
data-keyboard="false" aria-hidden="true">
<!-- .modal-dialog -->
<div class="modal-dialog" role="document">
<!-- .modal-content -->
<div class="modal-content">
<!-- .modal-header -->
<div class="modal-header">
<h6 id="optionItemModalLabel" class="modal-title inline-editable">
<span class="sr-only">群組內容</span> <input id="group_content" type="text" class="form-control form-control-lg" value="" placeholder="群組內容" readonly="readonly " required="">
</h6>
</div><!-- /.modal-header -->
<!-- .modal-body -->
<div class="modal-body">
<input type="hidden" id="method" />
<input type="hidden" id="group_uid" />
<input type="hidden" id="dept_uid" />
<!-- .form-group -->
<div class="form-group">
<div class="form-label-group">
<input type="text" id="group_name" class="form-control" value="" placeholder="群組名稱" maxlength="12" required=""> <label for="group_name">群組名稱</label>
</div>
</div><!-- /.form-group -->
<!-- grid row -->
<div class="row">
<!-- grid column -->
<div class="col-lg-12">
<!-- .card -->
<div class="card card-fluid">
<div class="card-header border-bottom-0"> 成員 </div><!-- .nestable -->
<div id="nestableMember" class="dd" data-toggle="nestable" data-group="1" data-max-depth="0">
<!-- .dd-list -->
<ol class="dd-list">
<li class="dd-item dd-nodrag" data-id="1" data-user-uid="123" >
<div class="dd-handle">
<span class="dd-nodrag drag-indicator"></span>
<div> user1 </div>
<div class="dd-nodrag btn-group ml-auto">
<button class="btn btn-sm btn-secondary"><i class="far fa-trash-alt"></i></button>
</div>
</div>
</li>
<li class="dd-item dd-nodrag" data-id="1" data-user-uid="456">
<div class="dd-handle">
<span class="dd-nodrag drag-indicator"></span>
<div> user2 </div>
<div class="dd-nodrag btn-group ml-auto">
<button class="btn btn-sm btn-secondary"><i class="far fa-trash-alt"></i></button>
</div>
</div>
</li>
</ol><!-- /.dd-list -->
</div><!-- /.nestable -->
<!-- .card-footer -->
<div class="card-footer">
<a href="javascript: void(0);" id="newMember_btn" onclick="newMemberClick('bremen')" class="card-footer-item justify-content-start"><span><i class="fa fa-plus-circle mr-1"></i> 新增成員</span></a>
</div><!-- /.card-footer -->
</div><!-- /.card -->
</div>
</div>
</div><!-- /.modal-body -->
<!-- .modal-footer -->
<div class="modal-footer">
<button type="button" id="optionItemDialogSaveBtn" class="btn btn-primary">Save</button> <button type="button" class="btn btn-light" data-dismiss="modal">Close</button>
</div><!-- /.modal-footer -->
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
</form><!-- /.modal -->
<!-- .modal -->
<form id="clientMemberForm" name="clientMemberForm">
<div class="modal fade" id="memberModal" tabindex="-1" role="dialog" aria-labelledby="optionItemModalLabel" data-backdrop="static"
data-keyboard="false" aria-hidden="true">
<!-- .modal-dialog -->
<div class="modal-dialog" role="document">
<!-- .modal-content -->
<div class="modal-content">
<!-- .modal-header -->
<div class="modal-header">
<h6 id="optionItemModalLabel" class="modal-title inline-editable">
<span class="sr-only">成員列表</span> <input id="member_content" type="text" class="form-control form-control-lg" value="" placeholder="成員列表" readonly="readonly " required="">
</h6>
</div><!-- /.modal-header -->
<!-- .modal-body -->
<div class="modal-body">
<input type="hidden" id="method" />
<input type="hidden" id="group_uid" />
<input type="hidden" id="dept_uid" />
<!-- grid row -->
<div class="row">
<!-- grid column -->
<div class="col-lg-12">
<!-- .card -->
<div class="card card-fluid">
<!-- .list-group -->
<div class="list-group list-group-flush list-group-bordered" id="nogroup_memberlist">
<div class="list-group-header"> 勾選要加入群組的成員 </div>
<label class="list-group-item custom-control custom-checkbox mb-0"><input name="listcheckbox" type="checkbox" class="custom-control-input" checked> <span class="custom-control-label">List checkbox #1</span></label>
<label class="list-group-item custom-control custom-checkbox mb-0"><input name="listcheckbox" type="checkbox" class="custom-control-input" checked> <span class="custom-control-label">List checkbox #2</span></label>
</div><!-- /.list-group -->
</div><!-- /.card -->
</div>
</div>
</div><!-- /.modal-body -->
<!-- .modal-footer -->
<div class="modal-footer">
<button type="button" id="memberAddSaveBtn" class="btn btn-primary">Save</button> <button type="button" class="btn btn-light" data-dismiss="modal">Close</button>
</div><!-- /.modal-footer -->
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
</form><!-- /.modal -->

View File

@ -1,5 +1,129 @@
 
$(document).on('load', function () {
}); $(document).ready(function () {
deptList();
$('#groupNewModal').on('click', function () {
$('#groupModal').modal('toggle');
});
});
function newMemberClick(dept_uid) {
var formData = {
dept_uid: dept_uid
}
$.ajax({
url: "/AuthApi/noGroupUserList",
type: "post",
data: formData,
success: function (data, textStatus, jqXHR) {
if (data.ret == "yes") {
$('#nogroup_memberlist').html('<div class="list-group-header"> 勾選要加入群組的成員 </div>');
var obj = data.userList;
var items = "";
$.each(obj, function (i, item) {
var isExist = 'N';
$.each($('#nestableMember .dd-list li'), function () {
var tmp_uid = $(this).attr('data-user-uid');
if (tmp_uid == item.user_uid) {
isExist = 'Y';
}
});
if (isExist == 'N') {
items += '<label class="list-group-item custom-control custom-checkbox mb-0"><input name="memberChkList[]" type="checkbox" value="' + item.user_uid + '" class="custom-control-input"> <span class="custom-control-label">' + item.user_name + '</span></label>';
}
});
$('#nogroup_memberlist').append(items);
$('#memberModal').modal('toggle');
} else {
alert(data.message);
if (data.err_code == "99999") {
location.href = "/Root/Login";
}
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('網路或伺服器發生錯誤,請稍後重試!');
}
});
}
function groupList() {
var dept_uid = $('#dept_select').val();
var formData = {
dept_uid: dept_uid
}
$.ajax({
url: "/AuthApi/groupList",
type: "post",
data: formData,
success: function (data, textStatus, jqXHR) {
if (data.ret == "yes") {
$('#group_div').html('');
var obj = data.groups;
var items = "";
$.each(obj, function (i, item) {
});
} else {
alert(data.message);
if (data.err_code == "99999") {
location.href = "/Root/Login";
}
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('網路或伺服器發生錯誤,請稍後重試!');
}
});
}
function deptList() {
$.ajax({
url: "/AuthApi/authDeptList",
type: "post",
data: null,
success: function (data, textStatus, jqXHR) {
if (data.ret == "yes") {
var obj = data.depts;
var items = "";
$.each(obj, function (i, item) {
$("#dept_select").append($("<option>", {
value: item.dept_uid,
text: item.dept_name
}));
});
} else {
alert(data.message);
if (data.err_code == "99999") {
location.href = "/Root/Login";
}
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('網路或伺服器發生錯誤,請稍後重試!');
}
});
}

View File

@ -409,7 +409,7 @@ $(document).ready(function () {
function loadDept() { function loadDept() {
$.ajax({ $.ajax({
url: "/AuthApi/deptList", url: "/AuthApi/authDeptList",
type: "post", type: "post",
data: null, data: null,
success: function (data, textStatus, jqXHR) { success: function (data, textStatus, jqXHR) {