Browse Source

功能设置,保存数据问题

MaiXinRong 3 months ago
parent
commit
4173242603

+ 60 - 13
app/controller/sub_proj_setting_controller.js

@@ -214,6 +214,53 @@ module.exports = app => {
             }
         }
 
+        async user(ctx) {
+            try {
+                this.defaultCheck(ctx);
+                const accountList = await ctx.service.projectAccount.getAllDataByCondition({
+                    columns: ['id', 'name', 'company', 'role', 'enable', 'is_admin', 'account_group', 'mobile', 'company_id'],
+                    where: { project_id: ctx.subProject.project_id },
+                });
+                const unitList = await ctx.service.constructionUnit.getAllDataByCondition({ where: { pid: ctx.session.sessionProject.id } });
+                const accountGroup = unitList.map(item => {
+                    const groupList = accountList.filter(item1 => item1.company === item.name);
+                    return { groupName: item.name, groupList };
+                }).filter(x => { return x.groupList.length > 0; });
+
+                const filter = {
+                    company: ctx.query.company || '',
+                    keyword: ctx.query.keyword || '',
+                };
+                const total = await ctx.service.projectAccount.getSubProjectAccountCount(ctx.subProject, filter);
+                const subProjectAccountList = await ctx.service.projectAccount.getSubProjectAccountListWithPermission(ctx.subProject, filter);
+                const page = ctx.page;
+                const pageSize = ctx.pageSize;
+                // 过滤数据
+                ctx.service.projectAccount.searchFilter(ctx.request.query, projectId);
+                const pageInfo = {
+                    page,
+                    pageSizeSelect: 1,
+                    pageSize,
+                    total_num: total,
+                    total: Math.ceil(total / pageSize),
+                    queryData: JSON.stringify(ctx.urlInfo.query),
+                };
+                const renderData = {
+                    pageInfo,
+                    accountList,
+                    accountGroup,
+                    subProjectAccountList,
+                    keyword: filter.keyword,
+                    company: filter.company,
+                    jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.setting.user),
+                };
+                await this.layout('sp_setting/user.ejs', renderData);
+            } catch (error) {
+                console.log(error);
+                ctx.redirect(`/sp/${ctx.subProject.id}/dashboard`);
+            }
+        }
+
         async logs(ctx) {
             try {
                 this.defaultCheck(ctx);
@@ -264,24 +311,24 @@ module.exports = app => {
                 const rule = ctx.service.subProject.rule('fun');
                 ctx.validate(rule);
 
-                const result = await ctx.service.subProject.updateFunRela(ctx.subProject, ctx.request.body);
+                const result = await ctx.service.subProject.updateFunRela(ctx.subProject.id, ctx.request.body);
                 if (!result) throw '保存数据失败';
-                this.ctx.session.sessionProject.page_show.openChangeProject = data.openChangeProject ? 1 : 0;
-                this.ctx.session.sessionProject.page_show.openChangeApply = data.openChangeApply ? 1 : 0;
-                this.ctx.session.sessionProject.page_show.openChangePlan = data.openChangePlan ? 1 : 0;
-                this.ctx.session.sessionProject.page_show.openChangeWhiteList = data.openChangeWhiteList ? 1 : 0;
-                this.ctx.session.sessionProject.page_show.openChangeState = data.openChangeState ? 1 : 0;
-                this.ctx.session.sessionProject.page_show.openMaterialTax = data.openMaterialTax ? 1 : 0;
-                this.ctx.session.sessionProject.page_show.openMaterialChecklist = data.openMaterialChecklist ? 1 : 0;
-                this.ctx.session.sessionProject.page_show.openMaterialSelf = data.openMaterialSelf ? 1 : 0;
-                this.ctx.session.sessionProject.page_show.openMaterialEditForAudit = data.openMaterialEditForAudit ? 1 : 0;
-                this.ctx.session.sessionProject.page_show.openStageStart = data.openStageStart ? 1 : 0;
-                const result2 = await ctx.service.subProject.updatePageshow(ctx.subProject);
+                this.ctx.subProject.page_show.openChangeProject = data.openChangeProject ? 1 : 0;
+                this.ctx.subProject.page_show.openChangeApply = data.openChangeApply ? 1 : 0;
+                this.ctx.subProject.page_show.openChangePlan = data.openChangePlan ? 1 : 0;
+                this.ctx.subProject.page_show.openChangeWhiteList = data.openChangeWhiteList ? 1 : 0;
+                this.ctx.subProject.page_show.openChangeState = data.openChangeState ? 1 : 0;
+                this.ctx.subProject.page_show.openMaterialTax = data.openMaterialTax ? 1 : 0;
+                this.ctx.subProject.page_show.openMaterialChecklist = data.openMaterialChecklist ? 1 : 0;
+                this.ctx.subProject.page_show.openMaterialSelf = data.openMaterialSelf ? 1 : 0;
+                this.ctx.subProject.page_show.openMaterialEditForAudit = data.openMaterialEditForAudit ? 1 : 0;
+                this.ctx.subProject.page_show.openStageStart = data.openStageStart ? 1 : 0;
+                const result2 = await ctx.service.subProject.updatePageshow(ctx.subProject.id);
                 if (!result2) throw '保存数据失败';
                 if (data.addFunSet) {
                     const funSet = ctx.subProject.fun_set ? JSON.parse(ctx.subProject.fun_set) : {};
                     ctx.helper._.defaultsDeep(data.addFunSet, funSet);
-                    const result3 = await ctx.service.subProject.updateFunSet(ctx.subProject, data.addFunSet);
+                    const result3 = await ctx.service.subProject.updateFunSet(ctx.subProject.id, data.addFunSet);
                     if (!result3) throw '保存数据失败';
                 }
 

+ 33 - 0
app/service/sub_project.js

@@ -38,6 +38,32 @@ module.exports = app => {
             this.tableName = 'sub_project';
         }
 
+        /**
+         * 数据规则
+         *
+         * @param {String} scene - 场景
+         * @return {Object} - 返回数据规则
+         */
+        rule(scene) {
+            let rule = {};
+            switch (scene) {
+                case 'fun':
+                    rule = {
+                        imType: {type: 'enum', values: [imType.tz.value, imType.zl.value, imType.bb.value, imType.bw.value], required: true},
+                        banOver: {type: 'bool', required: true,},
+                        hintOver: {type: 'bool', required: true,},
+                        banMinusChangeBills: {type: 'bool', required: true,},
+                        minusNoValue: {type: 'bool', required: true,},
+                        lockPayExpr: {type: 'bool', required: true,},
+                        showMinusCol: {type: 'bool', required: true,},
+                    };
+                    break;
+                default:
+                    break;
+            }
+            return rule;
+        }
+
         async getSubProject(pid, uid, admin, filterFolder = false) {
             let result = await this.getAllDataByCondition({ where: { project_id: pid, is_delete: 0 } });
 
@@ -533,6 +559,13 @@ module.exports = app => {
             return info;
         }
 
+        async updatePageshow(id) {
+            const result = await this.db.update(this.tableName, {
+                id, page_show: JSON.stringify(this.ctx.session.sessionProject.page_show),
+            });
+            return result.affectedRows === 1;
+        }
+
         /**
          * 功能设置
          * @param id

+ 1 - 1
app/view/sp_setting/fun.ejs

@@ -456,7 +456,7 @@
             }
             pushData.change_state = change_state;
         }
-        postData('/setting/fun/update', {
+        postData('/sp/<%- ctx.subProject.id %>/setting/fun/update', {
             imType: parseInt($('[name=im_type]:checked').val()),
             banOver: $('[name=ban_over]')[0].checked,
             hintOver: $('#hint_over')[0].checked,

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

@@ -0,0 +1,130 @@
+<% include ./sub_menu.ejs %>
+<div class="panel-content">
+    <div class="panel-title">
+        <div class="title-main">
+            <h2>账号管理
+                <a href="#add-company" data-toggle="modal" data-target="#add-company" class="btn btn-primary btn-sm pull-right">添加单位</a>
+                <a href="#sel-batch" data-toggle="modal" data-target="#sel-batch" class="btn btn-primary btn-sm pull-right mr-1">选择账号</a>
+            </h2>
+        </div>
+    </div>
+    <div class="content-wrap">
+        <div class="c-body">
+            <div class="sjs-height-0">
+                <nav class="nav nav-tabs m-3" role="tablist">
+                    <a class="nav-item nav-link" data-toggle="tab" data-target="#user-list" href="/sp/<%- ctx.subProject.id %>/setting/user" role="tab" aria-selected="false">账号列表</a>
+                    <a class="nav-item nav-link active" data-toggle="tab" data-target="#user-purview" href="/sp/<%- ctx.subProject.id %>/setting/permission" role="tab" aria-selected="true">模块权限</a>
+                    <div class="ml-auto">
+                        <div class="input-group input-group-sm">
+                            <input type="text" class="form-control" placeholder="账号/姓名/单位/手机 搜索" aria-label="账号/姓名/单位/手机 搜索" aria-describedby="button-addon2">
+                            <div class="input-group-append">
+                                <button class="btn btn-outline-primary" type="button" id="button-addon2"><i class="fa fa-search"></i></button>
+                            </div>
+                        </div>
+                    </div>
+                </nav>
+                <div class="tab-content m-3">
+                    <div id="user-purview" class="tab-pane active">
+                        <div class="row">
+                            <div class="col-3">
+                                <dl class="list-group">
+                                    <dt class="list-group-item bg-warning" type="datacollection">决策大屏</dt>
+                                    <dd class="list-group-item" type="info">项目概况</dd>
+                                    <dd class="list-group-item" type="contract">合同管理</dd>
+                                    <dd class="list-group-item" type="file">资料归集</dd>
+                                    <dd class="list-group-item" type="budget">动态投资</dd>
+                                    <dd class="list-group-item">资金监管</dd>
+                                    <dd class="list-group-item" type="zjhb">  资金划拨</dd>
+                                    <dd class="list-group-item" type="zjzf">  资金支付</dd>
+                                </dl>
+                            </div>
+                            <div class="col-9">
+                                <div class="card mb-2">
+                                    <div class="card-header d-flex justify-content-between">
+                                        <div>决策大屏</div>
+                                        <div class="dropdown">
+                                            <button class="btn btn-outline-primary btn-sm dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                                                添加用户
+                                            </button>
+                                            <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton" style="width: 220px; will-change: transform;">
+                                                <div class="mb-2 p-2"><input class="form-control form-control-sm" placeholder="姓名/手机 检索"></div>
+                                                <dl class="list-unstyled book-list">
+                                                    <dt><a href=""><i class="fa fa-minus-square-o"></i></a> 珠海纵横创新软件有限公司</dt>
+                                                    <dd class="border-bottom p-2 mb-0">
+                                                        <p class="mb-0 d-flex"><span class="text-primary">李旭</span><span class="ml-auto">15800000003</span></p>
+                                                        <span class="text-muted">职称</span>
+                                                    </dd>
+                                                    <dd class="border-bottom p-2 mb-0">
+                                                        <p class="mb-0 d-flex"><span class="text-primary">李旭</span><span class="ml-auto">15800000003</span></p>
+                                                        <span class="text-muted">职称</span>
+                                                    </dd>
+                                                    <dd class="border-bottom p-2 mb-0">
+                                                        <p class="mb-0 d-flex"><span class="text-primary">李旭</span><span class="ml-auto">15800000003</span></p>
+                                                        <span class="text-muted">职称</span>
+                                                    </dd>
+                                                    <dd class="border-bottom p-2 mb-0">
+                                                        <p class="mb-0 d-flex"><span class="text-primary">李旭</span><span class="ml-auto">15800000003</span></p>
+                                                        <span class="text-muted">职称</span>
+                                                    </dd>
+                                                    <dt><a href=""><i class="fa fa-minus-square-o"></i></a> 湖南XXX监理有限公司</dt>
+                                                    <dd class="border-bottom p-2 mb-0">
+                                                        <p class="mb-0 d-flex"><span class="text-primary">李旭</span><span class="ml-auto">15800000003</span></p>
+                                                        <span class="text-muted">职称</span>
+                                                    </dd>
+                                                    <dd class="border-bottom p-2 mb-0">
+                                                        <p class="mb-0 d-flex"><span class="text-primary">李旭</span><span class="ml-auto">15800000003</span></p>
+                                                        <span class="text-muted">职称</span>
+                                                    </dd>
+                                                    <dt><a href=""><i class="fa fa-plus-square"></i></a> 中铁十六局施工项目部</dt>
+                                                    <dt><a href=""><i class="fa fa-plus-square"></i></a> 广州勘查设计院一分院</dt>
+                                                </dl>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="card-body py-2">
+                                        <table class="table table-hover table-bordered table-sm" style="width: 500px;">
+                                            <thead>
+                                            <tr>
+                                                <th class="text-center" width="">用户</th>
+                                                <th class="text-center" width="150px">职位</th>
+                                                <th class="text-center" width="100px">查看</th>
+                                                <th class="text-center" width="100px">操作</th>
+                                            </tr>
+                                            </thead>
+                                            <tbody class="text-center">
+                                            <tr>
+                                                <td>陈特</td>
+                                                <td>业主</td>
+                                                <td><input type="checkbox"></td>
+                                                <td class="text-center">
+                                                    <a href="#remove-user1" data-toggle="modal" data-target="#remove-user" class="btn btn-sm btn-outline-danger">移除</a>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>仁温书</td>
+                                                <td>项目经理</td>
+                                                <td><input type="checkbox"></td>
+                                                <td class="text-center">
+                                                    <a href="#remove-user1" data-toggle="modal" data-target="#remove-user" class="btn btn-sm btn-outline-danger">移除</a>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td>玉安然</td>
+                                                <td>集团经理</td>
+                                                <td><input type="checkbox"></td>
+                                                <td class="text-center">
+                                                    <a href="#remove-user1" data-toggle="modal" data-target="#remove-user" class="btn btn-sm btn-outline-danger">移除</a>
+                                                </td>
+                                            </tr>
+                                            </tbody>
+                                        </table>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>