laiguoran 6 vuotta sitten
vanhempi
commit
3c079ae1f9

+ 43 - 2
app/controller/setting_controller.js

@@ -98,7 +98,7 @@ module.exports = app => {
                 // 获取项目用户列表
                 const accountData = await ctx.service.projectAccount.getAllDataByCondition({
                     where: { project_id: projectId },
-                    columns: ['id', 'account', 'name', 'company', 'role', 'mobile', 'telephone', 'enable', 'is_admin', 'account_group', 'permission', 'cooperation'],
+                    columns: ['id', 'account', 'name', 'company', 'role', 'mobile', 'telephone', 'enable', 'is_admin', 'account_group'],
                 });
 
                 const renderData = {
@@ -116,6 +116,47 @@ module.exports = app => {
         }
 
         /**
+         * 项目权限 -- 账号设置(Get)
+         * @param ctx
+         * @return {Promise<void>}
+         */
+        async userPermissionSet(ctx) {
+            try {
+                // 获取项目数据
+                const projectId = ctx.session.sessionProject.id;
+                const projectData = await ctx.service.project.getDataById(projectId);
+                if (projectData === null) {
+                    throw '没有对应的项目数据';
+                }
+                if (ctx.session.sessionUser.is_admin === 0) {
+                    throw '没有访问权限';
+                }
+
+                // 获取数据规则
+                // const rule = ctx.service.projectAccount.rule('updateUser');
+                // const frontRule = ctx.helper.validateConvert(rule);
+
+                // 获取项目用户列表
+                const accountData = await ctx.service.projectAccount.getAllDataByCondition({
+                    where: { project_id: projectId },
+                    columns: ['id', 'account', 'name', 'company', 'role', 'is_admin', 'account_group', 'permission', 'cooperation'],
+                });
+
+                const renderData = {
+                    projectData,
+                    accountData,
+                    accountGroup,
+                    permission,
+                    // rule: JSON.stringify(frontRule),
+                };
+                await this.layout('setting/user_permission.ejs', renderData, 'setting/user_permission_modal.ejs');
+            } catch (error) {
+                console.log(error);
+                ctx.redirect('/dashboard');
+            }
+        }
+
+        /**
          * 项目设置 -- 账号启用和停用设置(Post)
          * @param ctx
          * @return {Promise<void>}
@@ -268,7 +309,7 @@ module.exports = app => {
                 }
 
                 this.setMessage('保存账号数据成功', this.messageType.SUCCESS);
-                ctx.redirect('/' + ctx.controllerName + '/user');
+                ctx.redirect('/' + ctx.controllerName + '/user/permission/set');
             } catch (error) {
                 console.log(error);
                 this.setMessage(error.toString(), this.messageType.ERROR);

+ 1 - 0
app/router.js

@@ -34,6 +34,7 @@ module.exports = app => {
     app.post('/setting/updateinfo/:id', sessionAuth, 'settingController.updateinfo');
     // 账号设置
     app.get('/setting/user', sessionAuth, 'settingController.user');
+    app.get('/setting/user/permission/set', sessionAuth, 'settingController.userPermissionSet');
     // 账号停用和启用
     app.post('/setting/user/switch', sessionAuth, 'settingController.userSwitch');
     app.post('/setting/user/add', sessionAuth, 'settingController.addUser');

+ 2 - 35
app/view/setting/user.ejs

@@ -14,8 +14,8 @@
     <div class="content-wrap">
         <div class="c-body">
             <nav class="nav nav-tabs mb-3" role="tablist">
-                <a class="nav-item nav-link active" data-toggle="tab" href="#user-list" role="tab">账号列表</a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#user-purview" role="tab">账号权限</a>
+                <a class="nav-item nav-link active" href="/setting/user">账号列表</a>
+                <a class="nav-item nav-link" href="/setting/user/permission/set">账号权限</a>
             </nav>
             <div class="tab-content">
                 <div id="user-list" class="tab-pane active">
@@ -53,39 +53,6 @@
                         </tbody>
                     </table>
                 </div>
-                <div id="user-purview" class="tab-pane">
-                    <table class="table table-hover table-bordered table-sm">
-                        <thead>
-                        <tr>
-                            <th>账号</th>
-                            <th>姓名</th>
-                            <th>单位</th>
-                            <th>职位</th>
-                            <th>协作办公</th>
-                            <th>权限</th>
-                        </thead>
-                        <tbody>
-                        <% for (const account of accountData) { %>
-                        <tr>
-                            <td><%= account.account %><% if (account.is_admin === 1) { %> <span data-toggle="tooltip" data-placement="bottom" title="" data-original-title="管理员"><i class="fa fa-user-circle-o"></i></span><% } %></td>
-                            <td><%= account.name %></td>
-                            <td><%= account.company %></td>
-                            <td><%= account.role %></td>
-                            <td><% if (account.cooperation === 1) { %>启用<% } %></td>
-                            <td><% if (account.permission !== '' && account.permission !== null && JSON.parse(account.permission).tender !== undefined) { %>
-                                <% const tenderPermission = JSON.parse(account.permission).tender; %>
-                                    <% for (const tc in permission.tender.children) { %>
-                                        <% if (tenderPermission.indexOf(permission.tender.children[tc].value.toString()) !== -1) { %>
-                                            <%= permission.tender.children[tc].title %>
-                                        <% } %>
-                                    <% } %>
-                                <% } %>
-                                    <a href="#edit-user2" data-account="<%= JSON.stringify(account) %>" data-toggle="modal" data-target="#edit-user2" class="btn btn-sm">编辑</a></td>
-                        </tr>
-                        <% } %>
-                        </tbody>
-                    </table>
-                </div>
             </div>
         </div>
     </div>

+ 0 - 36
app/view/setting/user_modal.ejs

@@ -130,42 +130,6 @@
         </div>
     </div>
 </div>
-<!--弹出编辑权限-->
-<div class="modal fade" id="edit-user2" data-backdrop="static">
-    <div class="modal-dialog" role="document">
-        <div class="modal-content">
-            <div class="modal-header">
-                <h5 class="modal-title">编辑权限</h5>
-            </div>
-            <form method="post" action="/setting/user/permission?_csrf=<%= ctx.csrf %>">
-            <div class="modal-body">
-                <% for (const pm in permission) { %>
-                <div class="form-group">
-                    <label><i <% if (permission[pm].class !== '') { %>class="<%= permission[pm].class %>"<% } %>></i> <%= permission[pm].title %></label>
-                    <div>
-                        <% for (const ip of permission[pm].children) { %>
-                        <div class="form-check form-check-inline">
-                            <input class="form-check-input" type="<%= permission[pm].type %>" id="<%= pm %>_<%= ip.value %>" name="<%= pm %><% if (permission[pm].type === 'checkbox') { %>[]<% } %>" value="<%= ip.value %>">
-                            <label class="form-check-label" for="<%= pm %>_<%= ip.value %>"><%= ip.title %></label>
-                        </div>
-                        <% } %>
-                    </div>
-                </div>
-                <% } %>
-                <!--需要勾选  创建标段 ,协作办公才能勾选-->
-                <div class="alert alert-secondary">
-                    “创建标段”用户默认具有标段下“创建标段”“台帐分解”“创建台帐修订”“创建计量期”“创建工程变更”的权限,如标段创建者需要把以上权限分配给其他用户,可启用 用户设置协作办公 。
-                </div>
-            </div>
-            <div class="modal-footer">
-                <input type="hidden" name="id" value="">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
-                <button type="submit" class="btn btn-primary">提交修改</button>
-            </div>
-            </form>
-        </div>
-    </div>
-</div>
 <!--弹出账号受限-->
 <div class="modal" tabindex="-1" role="dialog" id="add-unpass">
     <div class="modal-dialog" role="document">

+ 58 - 0
app/view/setting/user_permission.ejs

@@ -0,0 +1,58 @@
+<% include ./sub_menu.ejs %>
+<div class="panel-content">
+    <div class="panel-title">
+        <div class="title-main">
+            <h2>账号管理
+                <% if (projectData.max_user !== accountData.length) { %>
+                <a href="#ver" data-toggle="modal" data-target="#add-user" class="btn btn-primary btn-sm pull-right">添加账号</a>
+                <% } else { %>
+                <a href="#add-unpass" data-toggle="modal" data-target="#add-unpass" class="btn btn-primary btn-sm pull-right">添加账号(受限)</a>
+                <% } %>
+            </h2>
+        </div>
+    </div>
+    <div class="content-wrap">
+        <div class="c-body">
+            <nav class="nav nav-tabs mb-3" role="tablist">
+                <a class="nav-item nav-link" href="/setting/user">账号列表</a>
+                <a class="nav-item nav-link active" href="/setting/user/permission/set">账号权限</a>
+            </nav>
+            <div class="tab-content">
+                <div id="user-purview" class="tab-pane active">
+                    <table class="table table-hover table-bordered table-sm">
+                        <thead>
+                        <tr>
+                            <th>账号</th>
+                            <th>姓名</th>
+                            <th>单位</th>
+                            <th>职位</th>
+                            <th>协作办公</th>
+                            <th>权限</th>
+                        </thead>
+                        <tbody>
+                        <% for (const account of accountData) { %>
+                        <tr>
+                            <td><%= account.account %><% if (account.is_admin === 1) { %> <span data-toggle="tooltip" data-placement="bottom" title="" data-original-title="管理员"><i class="fa fa-user-circle-o"></i></span><% } %></td>
+                            <td><%= account.name %></td>
+                            <td><%= account.company %></td>
+                            <td><%= account.role %></td>
+                            <td><% if (account.cooperation === 1) { %>启用<% } %></td>
+                            <td><% if (account.permission !== '' && account.permission !== null && JSON.parse(account.permission).tender !== undefined) { %>
+                                <% const tenderPermission = JSON.parse(account.permission).tender; %>
+                                    <% for (const tc in permission.tender.children) { %>
+                                        <% if (tenderPermission.indexOf(permission.tender.children[tc].value.toString()) !== -1) { %>
+                                            <%= permission.tender.children[tc].title %>
+                                        <% } %>
+                                    <% } %>
+                                <% } %>
+                                    <a href="#edit-user2" data-account="<%= JSON.stringify(account) %>" data-toggle="modal" data-target="#edit-user2" class="btn btn-sm">编辑</a></td>
+                        </tr>
+                        <% } %>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="/public/js/setting.js"></script>

+ 120 - 0
app/view/setting/user_permission_modal.ejs

@@ -0,0 +1,120 @@
+<!--弹出添加帐号-->
+<div class="modal fade" id="add-user" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">添加账号</h5>
+            </div>
+            <form method="post" action="/setting/user/add?_csrf=<%= ctx.csrf %>" onsubmit="return checkUserForm('add');">
+            <div class="modal-body">
+                <div class="form-group">
+                    <label><b class="text-danger">*</b>账号组</label>
+                    <select class="form-control" name="account_group">
+                        <option value="0">请选择</option>
+                        <% for (const dw in accountGroup) { %>
+                        <option value="<%= dw %>"><%= accountGroup[dw] %></option>
+                        <% } %>
+                    </select>
+                </div>
+                <div class="form-group">
+                    <label>登录账号<b class="text-danger">*</b></label>
+                    <input class="form-control" name="account" placeholder="支持英文数字组合" type="text">
+                    <input value="" class="account-check" type="hidden">
+                    <div class="invalid-feedback">
+                        该账号已存在。
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label>登录密码<b class="text-danger">*</b></label>
+                    <div class="input-group">
+                        <input type="text" name="password" class="form-control" placeholder="密码支持英文数字及符号">
+                        <div class="input-group-append">
+                            <button id="rand-password" class="btn btn-outline-secondary" type="button">随机密码</button>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label>姓名<b class="text-danger">*</b></label>
+                    <input class="form-control" name="name" value="" type="text">
+                </div>
+                <div class="form-group">
+                    <label>单位名称<b class="text-danger">*</b></label>
+                    <input class="form-control" name="company" value="" type="text">
+                </div>
+                <div class="form-group">
+                    <label>职位名称<b class="text-danger">*</b></label>
+                    <input class="form-control" name="role" value="" type="text">
+                </div>
+                <div class="form-group">
+                    <label>手机<b class="text-danger">*</b></label>
+                    <input class="form-control" name="mobile" value="" type="number">
+                </div>
+                <div class="form-group">
+                    <label>电话</label>
+                    <input class="form-control" name="telephone" placeholder="格式000-0000000" type="text">
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
+                <button type="submit" class="btn btn-primary">确定添加</button>
+            </div>
+            </form>
+        </div>
+    </div>
+</div>
+<!--弹出编辑权限-->
+<div class="modal fade" id="edit-user2" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">编辑权限</h5>
+            </div>
+            <form method="post" action="/setting/user/permission?_csrf=<%= ctx.csrf %>">
+            <div class="modal-body">
+                <% for (const pm in permission) { %>
+                <div class="form-group">
+                    <label><i <% if (permission[pm].class !== '') { %>class="<%= permission[pm].class %>"<% } %>></i> <%= permission[pm].title %></label>
+                    <div>
+                        <% for (const ip of permission[pm].children) { %>
+                        <div class="form-check form-check-inline">
+                            <input class="form-check-input" type="<%= permission[pm].type %>" id="<%= pm %>_<%= ip.value %>" name="<%= pm %><% if (permission[pm].type === 'checkbox') { %>[]<% } %>" value="<%= ip.value %>">
+                            <label class="form-check-label" for="<%= pm %>_<%= ip.value %>"><%= ip.title %></label>
+                        </div>
+                        <% } %>
+                    </div>
+                </div>
+                <% } %>
+                <!--需要勾选  创建标段 ,协作办公才能勾选-->
+                <div class="alert alert-secondary">
+                    “创建标段”用户默认具有标段下“创建标段”“台帐分解”“创建台帐修订”“创建计量期”“创建工程变更”的权限,如标段创建者需要把以上权限分配给其他用户,可启用 用户设置协作办公 。
+                </div>
+            </div>
+            <div class="modal-footer">
+                <input type="hidden" name="id" value="">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
+                <button type="submit" class="btn btn-primary">提交修改</button>
+            </div>
+            </form>
+        </div>
+    </div>
+</div>
+<!--弹出账号受限-->
+<div class="modal" tabindex="-1" role="dialog" id="add-unpass">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">无法添加账号</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <p>账号已超过最大账号数,无法添加新账号。</p>
+                <p>当前限制账号总数:<b><%= projectData.max_user %></b></p>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
+            </div>
+        </div>
+    </div>
+</div>