浏览代码

标段管理迁移

ellisran 5 月之前
父节点
当前提交
561569cd46

+ 0 - 113
app/controller/setting_controller.js

@@ -1127,119 +1127,6 @@ module.exports = app => {
             }
         }
 
-        async manage(ctx) {
-            try {
-                const projectId = ctx.session.sessionProject.id;
-                await this._checkMenu(projectId);
-                const projectData = await ctx.service.project.getDataById(projectId);
-                if (projectData === null) throw '没有对应的项目数据';
-                if (ctx.session.sessionUser.is_admin === 0) throw '没有访问权限';
-
-                const tenderList = await ctx.service.tender.getList('', null, 1);
-                const removeTenders = await ctx.service.shenpiAudit.getRemoveTenders(tenderList);
-                if (removeTenders.length > 0) {
-                    ctx.helper._.remove(tenderList, function(n) {
-                        return removeTenders.indexOf(n.id) !== -1;
-                    });
-                }
-                for (const t of tenderList) {
-                    t.visitor = (await this.ctx.service.tenderTourist.getTourists(t.id)).map(x => { return x.user_name; });
-                    await this.ctx.service.tenderCache.loadTenderCache(t, this.ctx.session.sessionUser.accountId);
-                }
-                // todo 自定义分类移动到子项目内部后,在整个项目上没有分类了
-                const categoryData = []; // await this.ctx.service.category.getAllCategory(this.ctx.session.sessionProject.id);
-
-                // 获取所有项目参与者
-                const accountList = await ctx.service.projectAccount.getAllDataByCondition({
-                    where: {project_id: ctx.session.sessionProject.id, enable: 1},
-                    columns: ['id', 'name', 'company', 'role', 'enable', 'is_admin', 'account_group', 'mobile'],
-                });
-                const unitList = await ctx.service.constructionUnit.getAllDataByCondition({where: {pid: ctx.session.sessionProject.id}});
-                const accountGroupList = unitList.map(item => {
-                    const groupList = accountList.filter(item1 => item1.company === item.name);
-                    return {groupName: item.name, groupList};
-                });
-                const renderData = {
-                    projectData,
-                    tenderList,
-                    auditConst,
-                    auditType: auditConst.auditType,
-                    accountList,
-                    accountGroup: accountGroupList,
-                    categoryData,
-                    settingConst,
-                    measureType: tenderConst.measureType,
-                    jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.setting.manage),
-                    uid: this.ctx.session.sessionUser.accountId,
-                    pid: this.ctx.session.sessionProject.id,
-                    scPermission: scheduleConst.permission,
-                    change_type_list: shenpiConst.change_type_list,
-                };
-                renderData.selfCategoryLevel = await this.ctx.service.projectAccount.getSelfCategoryLevel(this.ctx.session.sessionUser.accountId);
-                await this.layout('setting/manage.ejs', renderData, 'setting/manage_modal.ejs');
-            } catch (error) {
-                ctx.helper.log(error);
-                ctx.redirect('/dashboard');
-            }
-        }
-
-        async manageTenderSave(ctx) {
-            try {
-                if (ctx.session.sessionUser.is_admin === 0) throw '没有设置权限';
-                const projectId = ctx.session.sessionProject.id;
-                const responseData = {
-                    err: 0, msg: '', data: {},
-                };
-
-                const data = JSON.parse(ctx.request.body.data);
-                if (!data.type) {
-                    throw '提交数据错误';
-                }
-                if (!data.tid) {
-                    throw '参数有误';
-                }
-                const tender = await ctx.service.tender.getDataById(data.tid);
-                if (!tender) {
-                    throw '标段不存在';
-                }
-                const tenderInfo = await ctx.service.tenderInfo.getTenderInfo(tender.id);
-                switch (data.type) {
-                    case 'msg':
-                        const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(tender.id);
-                        const revising = (lastRevise && lastRevise.status !== auditConst.revise.status.checked) || false;
-                        // 获取审批流,游客账号,及投资进度账号信息
-                        responseData.data.tender = tender;
-                        responseData.data.revising = revising;
-                        responseData.data.shenpi = await ctx.service.shenpiAudit.getShenpi(tender.id, tenderInfo);
-                        const tourists = await ctx.service.tenderTourist.getTourists(tender.id);
-                        for (const t of tourists) {
-                            t.permission = await ctx.service.tenderTourist.getTouristPermission(t);
-                        }
-                        responseData.data.tourists = tourists;
-                        responseData.data.scheduleAuditList = ctx.session.sessionProject.page_show.xxjd ? await ctx.service.scheduleAudit.getAllDataByCondition({ where: { tid: tender.id } }) : [];
-                        responseData.data.constructionAuditList = ctx.session.sessionProject.page_show.openConstruction ? await ctx.service.constructionAudit.getList(tender.id) : [];
-                        break;
-                    case 'copy2otu':
-                        if (data.userType === 'tourist') {
-                            await ctx.service.tenderTourist.setOtherTender(data.tidList, data.auditList);
-                        } else if (data.userType === 'schedule') {
-                            await ctx.service.scheduleAudit.setOtherTender(data.tidList, data.auditList);
-                        } else if (data.userType === 'construction') {
-                            await ctx.service.constructionAudit.setOtherTender(data.tidList, data.auditList);
-                        } else {
-                            throw '参数有误';
-                        }
-                        break;
-                    default:
-                        throw '参数有误';
-                }
-                ctx.body = responseData;
-            } catch (err) {
-                this.log(err);
-                ctx.body = { err: 1, msg: err.toString(), data: null };
-            }
-        }
-
         async spread(ctx) {
             try {
                 // 获取项目数据

+ 121 - 6
app/controller/sub_proj_setting_controller.js

@@ -394,7 +394,7 @@ module.exports = app => {
                             throw '该单位已不存在权限中,移除失败';
                         }
                         await ctx.service.datacollectAudit.delAudit(data.id);
-                        responseData.data = await ctx.service.datacollectAudit.getList(projectId);
+                        responseData.data = await ctx.service.datacollectAudit.getList(ctx.subProject.project_id);
                         break;
                     case 'del-company':
                         const companyInfo2 = await ctx.service.datacollectAudit.getDataById(data.id);
@@ -402,21 +402,21 @@ module.exports = app => {
                             throw '该单位已不存在权限中,移除失败';
                         }
                         await ctx.service.datacollectAudit.delAudit(data.id);
-                        responseData.data = await ctx.service.datacollectAudit.getList(projectId);
+                        responseData.data = await ctx.service.datacollectAudit.getList(ctx.subProject.project_id);
                         break;
                     case 'tender':
                         if (ctx.session.sessionProject.page_show.addDataCollect !== parseInt(data.add_datacollect)) {
                             ctx.session.sessionProject.page_show.addDataCollect = parseInt(data.add_datacollect);
-                            await ctx.service.project.updatePageshow(projectId);
+                            await ctx.service.project.updatePageshow(ctx.subProject.project_id);
                         }
-                        await ctx.service.datacollectTender.updateList(projectId, data.tids);
+                        await ctx.service.datacollectTender.updateList(ctx.subProject.project_id, data.tids);
                         responseData.data = {
-                            dcTenders: await ctx.service.datacollectTender.getList(projectId),
+                            dcTenders: await ctx.service.datacollectTender.getList(ctx.subProject.project_id),
                             addDatacollect: ctx.session.sessionProject.page_show.addDataCollect,
                         };
                         break;
                     case 'save-dp06':
-                        responseData.data = await ctx.service.project.saveCommonJson(projectId, 'daPing06_set', data.daPing06Set);
+                        responseData.data = await ctx.service.project.saveCommonJson(ctx.subProject.project_id, 'daPing06_set', data.daPing06Set);
                         break;
                     default:
                         throw '参数有误';
@@ -427,6 +427,121 @@ module.exports = app => {
                 ctx.body = {err: 1, msg: err.toString(), data: null};
             }
         }
+
+        async manage(ctx) {
+            try {
+                this.defaultCheck(ctx);
+                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 tenderList = await ctx.service.tender.getList('', null, 1);
+                const removeTenders = await ctx.service.shenpiAudit.getRemoveTenders(tenderList);
+                if (removeTenders.length > 0) {
+                    ctx.helper._.remove(tenderList, function(n) {
+                        return removeTenders.indexOf(n.id) !== -1;
+                    });
+                }
+                for (const t of tenderList) {
+                    t.visitor = (await this.ctx.service.tenderTourist.getTourists(t.id)).map(x => { return x.user_name; });
+                    await this.ctx.service.tenderCache.loadTenderCache(t, this.ctx.session.sessionUser.accountId);
+                }
+                // todo 自定义分类移动到子项目内部后,在整个项目上没有分类了
+                const categoryData = []; // await this.ctx.service.category.getAllCategory(this.ctx.session.sessionProject.id);
+
+                // 获取所有项目参与者
+                const accountList = await ctx.service.projectAccount.getAllDataByCondition({
+                    where: {project_id: ctx.session.sessionProject.id, enable: 1},
+                    columns: ['id', 'name', 'company', 'role', 'enable', 'is_admin', 'account_group', 'mobile'],
+                });
+                const unitList = await ctx.service.constructionUnit.getAllDataByCondition({where: {pid: ctx.session.sessionProject.id}});
+                const accountGroupList = unitList.map(item => {
+                    const groupList = accountList.filter(item1 => item1.company === item.name);
+                    return {groupName: item.name, groupList};
+                });
+                const renderData = {
+                    projectData,
+                    tenderList,
+                    auditConst,
+                    auditType: auditConst.auditType,
+                    accountList,
+                    accountGroup: accountGroupList,
+                    categoryData,
+                    settingConst,
+                    measureType: tenderConst.measureType,
+                    jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.setting.manage),
+                    uid: this.ctx.session.sessionUser.accountId,
+                    pid: this.ctx.session.sessionProject.id,
+                    spid: ctx.subProject.id,
+                    scPermission: scheduleConst.permission,
+                    change_type_list: shenpiConst.change_type_list,
+                };
+                renderData.selfCategoryLevel = await this.ctx.service.projectAccount.getSelfCategoryLevel(this.ctx.session.sessionUser.accountId);
+                await this.layout('sp_setting/manage.ejs', renderData, 'sp_setting/manage_modal.ejs');
+            } catch (error) {
+                ctx.helper.log(error);
+                ctx.redirect('/dashboard');
+            }
+        }
+
+        async manageTenderSave(ctx) {
+            try {
+                this.defaultCheck(ctx);
+                if (ctx.session.sessionUser.is_admin === 0) throw '没有设置权限';
+                const projectId = ctx.session.sessionProject.id;
+                const responseData = {
+                    err: 0, msg: '', data: {},
+                };
+
+                const data = JSON.parse(ctx.request.body.data);
+                if (!data.type) {
+                    throw '提交数据错误';
+                }
+                if (!data.tid) {
+                    throw '参数有误';
+                }
+                const tender = await ctx.service.tender.getDataById(data.tid);
+                if (!tender) {
+                    throw '标段不存在';
+                }
+                const tenderInfo = await ctx.service.tenderInfo.getTenderInfo(tender.id);
+                switch (data.type) {
+                    case 'msg':
+                        const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(tender.id);
+                        const revising = (lastRevise && lastRevise.status !== auditConst.revise.status.checked) || false;
+                        // 获取审批流,游客账号,及投资进度账号信息
+                        responseData.data.tender = tender;
+                        responseData.data.revising = revising;
+                        responseData.data.shenpi = await ctx.service.shenpiAudit.getShenpi(tender.id, tenderInfo);
+                        const tourists = await ctx.service.tenderTourist.getTourists(tender.id);
+                        for (const t of tourists) {
+                            t.permission = await ctx.service.tenderTourist.getTouristPermission(t);
+                        }
+                        responseData.data.tourists = tourists;
+                        responseData.data.scheduleAuditList = ctx.session.sessionProject.page_show.xxjd ? await ctx.service.scheduleAudit.getAllDataByCondition({ where: { tid: tender.id } }) : [];
+                        responseData.data.constructionAuditList = ctx.session.sessionProject.page_show.openConstruction ? await ctx.service.constructionAudit.getList(tender.id) : [];
+                        break;
+                    case 'copy2otu':
+                        if (data.userType === 'tourist') {
+                            await ctx.service.tenderTourist.setOtherTender(data.tidList, data.auditList);
+                        } else if (data.userType === 'schedule') {
+                            await ctx.service.scheduleAudit.setOtherTender(data.tidList, data.auditList);
+                        } else if (data.userType === 'construction') {
+                            await ctx.service.constructionAudit.setOtherTender(data.tidList, data.auditList);
+                        } else {
+                            throw '参数有误';
+                        }
+                        break;
+                    default:
+                        throw '参数有误';
+                }
+                ctx.body = responseData;
+            } catch (err) {
+                this.log(err);
+                ctx.body = { err: 1, msg: err.toString(), data: null };
+            }
+        }
     }
 
     return SettingController;

+ 2 - 2
app/public/js/setting_manage.js

@@ -141,7 +141,7 @@ $(document).ready(() => {
             return;
         }
         // 请求获取右侧列表信息
-        postData('/setting/manage/tender/save', { type: 'msg', tid: parseInt($(this).attr('data-id'))}, function (result) {
+        postData(`/sp/${spid}/setting/manage/tender/save`, { type: 'msg', tid: parseInt($(this).attr('data-id'))}, function (result) {
             sp_lc = result.shenpi.sp_lc;
             sp_type = result.shenpi.sp_type;
             sp_status = result.shenpi.sp_status;
@@ -611,7 +611,7 @@ $(document).ready(() => {
         console.log(data);
         // 请求获取右侧列表信息
         const _self = $(this);
-        postData('/setting/manage/tender/save', data, function (result) {
+        postData(`/sp/${spid}/setting/manage/tender/save`, data, function (result) {
             toastr.success('应用至其他标段成功');
             _self.attr('disabled', false);
             $('#bdcopy').modal('hide');

+ 3 - 3
app/router.js

@@ -188,9 +188,6 @@ module.exports = app => {
     app.post('/setting/spread/save', sessionAuth, projectManagerCheck, 'settingController.saveSpread');
     app.post('/setting/spread/preview', sessionAuth, projectManagerCheck, 'settingController.previewSpread');
     app.post('/setting/spread/reset', sessionAuth, projectManagerCheck, 'settingController.resetSpread');
-    // 标段管理
-    app.get('/sp/:id/setting/manage', sessionAuth, subProjectCheck, 'settingController.manage');
-    app.post('/sp/:id/setting/manage/tender/save', sessionAuth, subProjectCheck, 'settingController.manageTenderSave');
     // ------------------------- 项目相关 -----------------------------
 
 
@@ -215,6 +212,9 @@ module.exports = app => {
     // 决策大屏
     app.get('/sp/:id/setting/datacollect', sessionAuth, subProjectCheck, 'subProjSettingController.dataCollect');
     app.post('/sp/:id/setting/datacollect/save', sessionAuth, subProjectCheck, 'subProjSettingController.dataCollectSave');
+    // 标段管理
+    app.get('/sp/:id/setting/manage', sessionAuth, subProjectCheck, 'subProjSettingController.manage');
+    app.post('/sp/:id/setting/manage/tender/save', sessionAuth, subProjectCheck, 'subProjSettingController.manageTenderSave');
 
     // 项目列表跳转项目内部 todo 除标段内,均改为/sp/:id/xxx的链接形式
     // **控制面板

+ 1 - 1
app/view/setting/manage.ejs

@@ -1,4 +1,4 @@
-<% include ./sub_menu.ejs %>
+<% include ../setting/sub_menu.ejs %>
 <div class="panel-content">
     <div class="panel-title fluid">
         <div class="title-main d-flex justify-content-between">

app/view/setting/manage_modal.ejs → app/view/sp_setting/manage_modal.ejs


+ 6 - 0
config/menu.js

@@ -427,6 +427,12 @@ const projectSettingMenu = {
         url: '/setting/datacollect',
         caption: '决策大屏',
     },
+    manage: {
+        name: '标段管理',
+        display: true,
+        url: '/setting/manage',
+        caption: '标段管理',
+    },
 };
 
 const profileMenu = {