Browse Source

金额概况,列设置相关

MaiXinRong 3 months atrás
parent
commit
315f447ba1

+ 0 - 17
app/controller/project_controller.js

@@ -152,23 +152,6 @@ module.exports = app => {
 
             ctx.body = responseData;
         }
-
-        /**
-         * 保存列设置
-         * @param ctx
-         * @returns {Promise<void>}
-         */
-        async colSet(ctx) {
-            try {
-                const colType = ctx.request.body.col_type;
-                const colSet = JSON.parse(ctx.request.body.col_set);
-                await ctx.service.projectColSet.setProjectColSet(ctx.session.sessionProject.id, colType, colSet);
-                ctx.redirect(ctx.request.header.referer);
-            } catch (err) {
-                ctx.redirect(ctx.request.header.referer);
-            }
-
-        }
     }
 
     return ProjectController;

+ 17 - 0
app/controller/sub_proj_controller.js

@@ -430,6 +430,23 @@ module.exports = app => {
             ctx.controllerName = ctx.params.block;
             await this.layout('sub_proj/no_permission.ejs');
         }
+
+
+        /**
+         * 保存列设置
+         * @param ctx
+         * @returns {Promise<void>}
+         */
+        async colSet(ctx) {
+            try {
+                const colType = ctx.request.body.col_type;
+                const colSet = JSON.parse(ctx.request.body.col_set);
+                await ctx.service.projectColSet.setProjectColSet(ctx.subProject.project_id, ctx.subProject.id, colType, colSet);
+                ctx.redirect(ctx.request.header.referer);
+            } catch (err) {
+                ctx.redirect(ctx.request.header.referer);
+            }
+        }
     }
 
     return SubProjController;

+ 2 - 2
app/controller/tender_controller.js

@@ -204,7 +204,7 @@ module.exports = app => {
          */
         async listInfo(ctx) {
             this.jsFiles = this.app.jsFiles.tender.info;
-            const projectColSet = await ctx.service.projectColSet.getProjectColSet(ctx.session.sessionProject.id);
+            const projectColSet = await ctx.service.projectColSet.getProjectColSet(ctx.subProject.project_id, ctx.subProject.id);
             this.colSet = ctx.service.projectColSet.analysisColSetWithDefine(projectSetting.colSet.info, projectColSet.info);
             await this._listDetailCache('tender/info.ejs', 'tender/modal.ejs');
         }
@@ -256,7 +256,7 @@ module.exports = app => {
 
         async listInfoFinish(ctx) {
             this.jsFiles = this.app.jsFiles.tender.info;
-            const projectColSet = await ctx.service.projectColSet.getProjectColSet(ctx.session.sessionProject.id);
+            const projectColSet = await ctx.service.projectColSet.getProjectColSet(ctx.subProject.project_id, ctx.subProject.id);
             this.colSet = ctx.service.projectColSet.analysisColSetWithDefine(projectSetting.colSet.info, projectColSet.info);
             await this._listDetailFinish('tender/info.ejs', 'tender/modal.ejs');
         }

+ 1 - 1
app/router.js

@@ -266,7 +266,7 @@ module.exports = app => {
     app.post('/sp/:id/list/load2', sessionAuth, subProjectCheck, 'tenderController.listLoad2');
     app.get('/sp/:id/list/info', sessionAuth, subProjectCheck, 'tenderController.listInfo');
     app.get('/sp/:id/list/info/finish', sessionAuth, subProjectCheck, 'tenderController.listInfoFinish');
-    app.post('/sp/:id/list/info/col-set', sessionAuth, projectManagerCheck, subProjectCheck, 'projectController.colSet');
+    app.post('/sp/:id/list/info/col-set', sessionAuth, projectManagerCheck, subProjectCheck, 'subProjController.colSet');
     // 计量进度
     app.get('/sp/:id/list/progress', sessionAuth, subProjectCheck, 'tenderController.listProgress');
     // 管理标段

+ 12 - 11
app/service/project_col_set.js

@@ -31,30 +31,31 @@ module.exports = app => {
             JsonFields.forEach(jf => { if(data[jf]) data[jf] = JSON.parse(data[jf]); });
         }
 
-        async loadProjectColSet(id) {
-            const result = await this.getDataById(id);
+        async loadProjectColSet(pid, spid) {
+            const result = await this.getDataByCondition({ pid, spid });
             this._analysisData(result);
             return result;
         }
 
-        async initProjectColSet(id) {
+        async initProjectColSet(pid, spid) {
             const data = JSON.parse(JSON.stringify(ProjectSetting.defaultColSet));
             JsonFields.forEach(jf => { if(data[jf]) data[jf] = JSON.stringify(data[jf]); });
-            data.id = id;
+            data.pid = pid;
+            data.spid = spid;
             await this.db.insert(this.tableName, data);
         }
 
-        async getProjectColSet(id) {
-            const curSet = await this.loadProjectColSet(id);
+        async getProjectColSet(pid, spid) {
+            const curSet = await this.loadProjectColSet(pid, spid);
             if (curSet) return curSet;
-            await this.initProjectColSet(id);
-            return await this.loadProjectColSet(id);
+            await this.initProjectColSet(pid, spid);
+            return await this.loadProjectColSet(pid, spid);
         }
 
-        async setProjectColSet(id, colSetType, colSet) {
-            const data = {id};
+        async setProjectColSet(pid, spid, colSetType, colSet) {
+            const data = {};
             data[colSetType] = JSON.stringify(colSet);
-            await this.defaultUpdate(data);
+            await this.defaultUpdate(data, { where: { pid, spid } });
         }
 
         analysisColSetWithDefine(colSetDefine, colSet) {

+ 1 - 1
app/view/tender/modal.ejs

@@ -113,7 +113,7 @@
                 </table>
                 <div class="text-danger">请勿全选(页面显示不下);谨慎修改别名(修改后,各页面概念将不一致)</div>
             </div>
-            <form class="modal-footer" action="/list/info/col-set" method="post" onsubmit="return onSetCol();">
+            <form class="modal-footer" action="/sp/<%- ctx.subProject.id %>/list/info/col-set" method="post" onsubmit="return onSetCol();">
                 <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
                 <input type="hidden" name="col_set" value="">
                 <input type="hidden" name="col_type" value="info">

+ 16 - 2
db_script/sub_project.js

@@ -40,6 +40,19 @@ const createDefaultSubProject = async function (project) {
     }
 };
 
+const copyColSet = async function(subProject) {
+    console.log(`Copy sub_project ${subProject.name}(${subProject.id}) category`);
+    const exist = await querySql('SELECT * FROM zh_project_col_set where pid = ? and spid = ?', [subProject.project_id, subProject.id]);
+    if (exist.length > 0) return;
+
+    const colSet = await querySql('SELECT * FROM zh_project_col_set where pid = ? and spid = ?', [subProject.project_id, '']);
+    for (const cs of colSet) {
+        const newCs = { pid: subProject.project_id, spid: subProject.id, info: cs.info };
+        const [sql, sqlParam] = getInsertSql('zh_project_col_set', newCs);
+        const insertResult = await querySql(sql, sqlParam);
+    }
+};
+
 const doComplete = async function(code) {
     try {
         const filter = code ? ` where code = '${code}'` : '';
@@ -112,9 +125,10 @@ const doComplete = async function(code) {
                         await querySql('UPDATE zh_tender SET category = ? WHERE id = ?', [JSON.stringify(newTCateGory), t.id]);
                     }
                 }
+            }
 
-                // await querySql('INSERT INTO zh_category (pid, spid, name, type, level) SELECT pid, ?, name, type, level FROM zh_category WHERE pid = ? and spid = ?', [sp.id, p.id, '']);
-                // await querySql('INSERT INTO zh_category_value (pid, spid, cid, value, sort) SELECT pid, ?, cid, value, sort FROM zh_category_value WHERE pid = ? and spid = ?', [sp.id, p.id, '']);
+            for (const sp of subProj) {
+                await copyColSet(sp);
             }
             console.log('END Update;');
         }

+ 8 - 0
sql/update.sql

@@ -51,8 +51,16 @@ MODIFY COLUMN `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci N
 ALTER TABLE `zh_budget_std`
 ADD COLUMN `progress_template_id` varchar(255) NOT NULL DEFAULT '' COMMENT '项目概况-阶段进度-新建模板id列表(‘,’分隔)' AFTER `ht_tender_template_id`;
 
+ALTER TABLE `zh_project_col_set`
+ADD COLUMN `pid` int(11) NOT NULL DEFAULT 0 COMMENT 'zh_project.id' AFTER `id`,
+ADD COLUMN `spid` varchar(36) NOT NULL DEFAULT '' COMMENT 'zh_sub_project.id' AFTER `pid`,
+ADD COLUMN `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' AFTER `info`,
+ADD COLUMN `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间' AFTER `create_time`;
+
 ------------------------------------
 -- 表数据
 ------------------------------------
 
 UPDATE zh_project_log pl LEFT JOIN zh_tender t ON pl.tid = t.id SET pl.spid = IF(ISNULL(t.spid),'',t.spid);
+
+Update zh_project_col_set SET pid = id;