Browse Source

账号设置,选择账号
1. 显示无单位账号
2. 提供单位下,新增搜索功能

MaiXinRong 3 months ago
parent
commit
4416e2a621

+ 2 - 0
app/controller/sub_proj_setting_controller.js

@@ -258,6 +258,7 @@ module.exports = app => {
                     company: filter.company,
                     jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.setting.sp_permission),
                     permissionBlock: ctx.service.subProjPermission.PermissionBlock,
+                    accountList,
                 };
                 await this.layout('sp_setting/user.ejs', renderData, 'sp_setting/user_modal.ejs');
             } catch (error) {
@@ -305,6 +306,7 @@ module.exports = app => {
                     jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.setting.sp_permission),
                     permissionBlock: ctx.service.subProjPermission.PermissionBlock,
                     permissionConst: permissionConst[ctx.query.ptype],
+                    accountList,
                 };
                 await this.layout('sp_setting/permission.ejs', renderData, 'sp_setting/user_modal.ejs');
             } catch (error) {

+ 21 - 1
app/public/js/sp_setting_permission.js

@@ -2,18 +2,32 @@ $(document).ready(() => {
     autoFlashHeight();
     // 选择账号
     const refreshUnitUsersHtml = function () {
+        const keyword = $('#sb-keyword').val();
         const select = $('#sel-batch-unit').val();
         const selectGroup = accountGroup.find(x => { return x.name === select; });
         const html = [];
         if (selectGroup) {
-            for (const u of selectGroup.groupList) {
+            const filter = keyword ? selectGroup.groupList.filter(x => {
+                return x.role.indexOf(keyword) >= 0 || x.name.indexOf(keyword) >= 0;
+            }) : selectGroup.groupList;
+            for (const u of filter) {
                 html.push(`<tr class="text-center">`);
                 html.push(`<td><input type="checkbox" name="sel-batch-check" id="${u.id}" unit="${selectGroup.name}" ${(u.select ? 'checked' : '')} ${u.sp_exist ? 'disabled' : ''}></td>`);
                 html.push(`<td>${u.name}</td>`);
                 html.push(`<td>${u.role}</td>`);
+                html.push(`<td>${u.company}</td>`);
                 html.push('<tr>');
             }
         }
+        const noCompanyAccount = accountList.filter(x => { return !x.company; });
+        for (const u of noCompanyAccount) {
+            html.push(`<tr class="text-center table-secondary">`);
+            html.push(`<td><input type="checkbox" name="sel-batch-check" id="${u.id}" unit="${selectGroup.name}" ${(u.select ? 'checked' : '')} disabled></td>`);
+            html.push(`<td>${u.name}</td>`);
+            html.push(`<td>${u.role}</td>`);
+            html.push(`<td>${u.company}</td>`);
+            html.push('<tr>');
+        }
         $('#sel-batch-users').html(html.join(''));
     };
     $('#sel-batch').on('show.bs.modal', function() {
@@ -25,6 +39,12 @@ $(document).ready(() => {
     $('#sel-batch-unit').change(function() {
         refreshUnitUsersHtml();
     });
+    $('#sb-search').click(function() {
+        refreshUnitUsersHtml();
+    });
+    $('#sb-keyword').change(function() {
+        refreshUnitUsersHtml();
+    });
     $('body').on('click', '[name=sel-batch-check]', function() {
         const select = $('#sel-batch-unit').val();
         const selectGroup = accountGroup.find(x => { return x.name === select; });

+ 2 - 0
app/view/sp_setting/permission.ejs

@@ -4,6 +4,7 @@
         <div class="title-main">
             <h2>账号管理
                 <a href="#sel-batch" data-toggle="modal" data-target="#sel-batch" class="btn btn-primary btn-sm pull-right mr-1">选择账号</a>
+                <a href="/setting/user" class="btn btn-primary btn-sm pull-right mr-1">新增账号</a>
             </h2>
         </div>
     </div>
@@ -103,6 +104,7 @@
 </div>
 <script>
     const accountGroup = JSON.parse(unescape('<%- escape(JSON.stringify(accountGroup)) %>'));
+    const accountList = JSON.parse(unescape('<%- escape(JSON.stringify(accountList)) %>'));
     const permissionConst = JSON.parse(unescape('<%- escape(JSON.stringify(permissionConst)) %>'));
     const reCalcHeight = function () {
         $('#sp-pageshow-content').height($(window).height() - 187);

+ 1 - 0
app/view/sp_setting/user.ejs

@@ -66,4 +66,5 @@
 </div>
 <script>
     const accountGroup = JSON.parse(unescape('<%- escape(JSON.stringify(accountGroup)) %>'));
+    const accountList = JSON.parse(unescape('<%- escape(JSON.stringify(accountList)) %>'));
 </script>

+ 21 - 9
app/view/sp_setting/user_modal.ejs

@@ -1,21 +1,33 @@
 <div class="modal fade" id="sel-batch" data-backdrop="static">
-    <div class="modal-dialog" role="document">
+    <div class="modal-dialog modal-lg" role="document">
         <div class="modal-content">
             <div class="modal-header">
                 <h5 class="modal-title">选择账号</h5>
             </div>
             <div class="modal-body">
-                <div class="form-inline mb-2">
-                    <label for="inputPassword2" class="">单位:</label>
-                    <select class="form-control form-control-sm" style="width:300px" id="sel-batch-unit">
-                        <% for (const g of accountGroup) { %>
-                        <option value="<%- g.name %>"><%- g.name %></option>
-                        <% } %>
-                    </select>
+                <div class="d-flex justify-content-between mb-2">
+                    <div class="col">
+                        <div class="form-inline">
+                            <label for="inputPassword2" class="">单位:</label>
+                            <select class="form-control form-control-sm" style="width:300px" id="sel-batch-unit">
+                                <% for (const g of accountGroup) { %>
+                                <option value="<%- g.name %>"><%- g.name %></option>
+                                <% } %>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="col-5">
+                        <div class="input-group input-group-sm">
+                            <input type="text" class="form-control" placeholder="姓名/职位 搜索" aria-label="姓名/职位 搜索" id="sb-keyword" aria-describedby="sb-search">
+                            <div class="input-group-append">
+                                <button class="btn btn-outline-primary" type="button" id="sb-search"><i class="fa fa-search"></i></button>
+                            </div>
+                        </div>
+                    </div>
                 </div>
                 <div class="modal-height-500-scroll">
                     <table class="table table-bordered">
-                        <thead><tr class="text-center"><th width="15%"><input type="checkbox" id="sel-batch-all"></th><th width="30%">用户</th><th width="40%">职位</th></tr></thead>
+                        <thead><tr class="text-center"><th width="15%"><input type="checkbox" id="sel-batch-all"></th><th width="20%">用户</th><th width="30%">职位</th><th>单位</th></tr></thead>
                         <tbody id="sel-batch-users"></tbody>
                     </table>
                 </div>