瀏覽代碼

显示设置调整

MaiXinRong 1 年之前
父節點
當前提交
a9049b1146

+ 200 - 1
app/const/spread.js

@@ -118,6 +118,7 @@ const BaseSetCol = {
         { key: 'b_code', name: '清单编号', fixed: ['alias'], bills: 1, pos: 0, },
         { key: 'ex_memo1', name: '备注1', fixed: [], bills: 1, pos: 1, },
         { key: 'name', name: '名称/计量单元', fixed: ['alias'], bills: 1, pos: 1 },
+        { key: 'features', name: '项目特征', fixed: ['valid', 'alias'], bills: 1, pos: 0 },
         { key: 'position', name: '位置', fixed: [], bills: 0, pos: 1 },
         { key: 'unit', name: '单位', fixed: ['alias'], bills: 1, pos: 0 },
         { key: 'unit_price', name: '单价', fixed: ['alias'], bills: 1, pos: 0 },
@@ -136,6 +137,7 @@ const BaseSetCol = {
         { key: 'b_code', name: '清单编号', fixed: ['alias'], bills: 1, pos: 0 },
         { key: 'ex_memo1', name: '备注1', fixed: [], bills: 1, pos: 1, },
         { key: 'name', name: '名称/计量单元', fixed: ['alias'], bills: 1, pos: 1 },
+        { key: 'features', name: '项目特征', fixed: ['valid', 'alias'], bills: 1, pos: 0 },
         { key: 'position', name: '位置', fixed: [], bills: 0, pos: 1},
         { key: 'unit', name: '单位', fixed: ['alias'], bills: 1, pos: 0 },
         { key: 'unit_price', name: '单价', fixed: ['alias'], bills: 1, pos: 0 },
@@ -159,12 +161,13 @@ const BaseSetCol = {
     ],
 };
 // 默认的列设置
-const ProjectSpreadTemplate = {
+const glSpreadTemplate = {
     tz_ledger_set: [
         { key: 'code', valid: 1 },
         { key: 'b_code', valid: 1 },
         { key: 'ex_memo1', valid: 0 },
         { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
         { key: 'position', valid: 1 },
         { key: 'unit', valid: 1 },
         { key: 'unit_price', valid: 1 },
@@ -183,6 +186,7 @@ const ProjectSpreadTemplate = {
         { key: 'b_code', valid: 1 },
         { key: 'ex_memo1', valid: 0 },
         { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
         { key: 'position', valid: 1 },
         { key: 'unit', valid: 1 },
         { key: 'unit_price', valid: 1 },
@@ -209,6 +213,7 @@ const ProjectSpreadTemplate = {
         { key: 'b_code', valid: 1 },
         { key: 'ex_memo1', valid: 0 },
         { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
         { key: 'position', valid: 1 },
         { key: 'unit', valid: 1 },
         { key: 'unit_price', valid: 1 },
@@ -227,6 +232,7 @@ const ProjectSpreadTemplate = {
         { key: 'b_code', valid: 1 },
         { key: 'ex_memo1', valid: 0 },
         { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
         { key: 'position', valid: 1 },
         { key: 'unit', valid: 1 },
         { key: 'unit_price', valid: 1 },
@@ -249,6 +255,199 @@ const ProjectSpreadTemplate = {
         { key: 'dagl', valid: 1},
     ],
 };
+const szSpreadTemplate = {
+    tz_ledger_set: [
+        { key: 'code', valid: 1 },
+        { key: 'b_code', valid: 1 },
+        { key: 'ex_memo1', valid: 0 },
+        { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
+        { key: 'position', valid: 1 },
+        { key: 'unit', valid: 1 },
+        { key: 'unit_price', valid: 1 },
+        { key: 'dgn_qty', valid: 1 },
+        { key: 'dgn_price', valid: 1 },
+        { key: 'deal_calc', valid: 0, },
+        { key: 'tz_calc', valid: 1 },
+        { key: 'drawing_code', valid: 1 },
+        { key: 'node_type', valid: 1 },
+        { key: 'memo', valid: 1 },
+        { key: 'ex_memo2', valid: 0 },
+        { key: 'ex_memo3', valid: 0 },
+    ],
+    tz_stage_set: [
+        { key: 'code', valid: 1 },
+        { key: 'b_code', valid: 1 },
+        { key: 'ex_memo1', valid: 0 },
+        { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
+        { key: 'position', valid: 1 },
+        { key: 'unit', valid: 1 },
+        { key: 'unit_price', valid: 1 },
+        { key: 'deal_calc', valid: 0, },
+        { key: 'tz_calc', valid: 1 },
+        { key: 'real_qty', valid: 1 },
+        { key: 'estimate_qty', valid: 1 },
+        { key: 'cur_calc', valid: 1 },
+        { key: 'end_calc', valid: 1 },
+        { key: 'deal_dgn_qty', valid: 1 },
+        { key: 'c_dgn_qty', valid: 1 },
+        { key: 'final_dgn_price', valid: 1 },
+        { key: 'postil', valid: 1},
+        { key: 'drawing_code', valid: 1 },
+        { key: 'memo', valid: 1 },
+        { key: 'ex_memo2', valid: 0 },
+        { key: 'ex_memo3', valid: 0 },
+        { key: 'is_tp', valid: 1},
+        { key: 'gxby', valid: 1},
+        { key: 'dagl', valid: 1},
+    ],
+    gcl_ledger_set: [
+        { key: 'code', valid: 1 },
+        { key: 'b_code', valid: 1 },
+        { key: 'ex_memo1', valid: 0 },
+        { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
+        { key: 'position', valid: 1 },
+        { key: 'unit', valid: 1 },
+        { key: 'unit_price', valid: 1 },
+        { key: 'dgn_qty', valid: 1 },
+        { key: 'dgn_price', valid: 1 },
+        { key: 'deal_calc', valid: 1, },
+        { key: 'tz_calc', valid: 0 },
+        { key: 'drawing_code', valid: 1 },
+        { key: 'node_type', valid: 1 },
+        { key: 'memo', valid: 1 },
+        { key: 'ex_memo2', valid: 0 },
+        { key: 'ex_memo3', valid: 0 },
+    ],
+    gcl_stage_set: [
+        { key: 'code', valid: 1 },
+        { key: 'b_code', valid: 1 },
+        { key: 'ex_memo1', valid: 0 },
+        { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
+        { key: 'position', valid: 1 },
+        { key: 'unit', valid: 1 },
+        { key: 'unit_price', valid: 1 },
+        { key: 'deal_calc', valid: 0, },
+        { key: 'tz_calc', valid: 1 },
+        { key: 'real_qty', valid: 1 },
+        { key: 'estimate_qty', valid: 1 },
+        { key: 'cur_calc', valid: 1 },
+        { key: 'end_calc', valid: 1 },
+        { key: 'deal_dgn_qty', valid: 1 },
+        { key: 'c_dgn_qty', valid: 1 },
+        { key: 'final_dgn_price', valid: 1 },
+        { key: 'postil', valid: 1},
+        { key: 'drawing_code', valid: 1 },
+        { key: 'memo', valid: 1 },
+        { key: 'ex_memo2', valid: 0 },
+        { key: 'ex_memo3', valid: 0 },
+        { key: 'is_tp', valid: 1},
+        { key: 'gxby', valid: 1},
+        { key: 'dagl', valid: 1},
+    ],
+};
+const fjSpreadTemplate = {
+    tz_ledger_set: [
+        { key: 'code', valid: 1 },
+        { key: 'b_code', valid: 1 },
+        { key: 'ex_memo1', valid: 0 },
+        { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
+        { key: 'position', valid: 1 },
+        { key: 'unit', valid: 1 },
+        { key: 'unit_price', valid: 1 },
+        { key: 'dgn_qty', valid: 1 },
+        { key: 'dgn_price', valid: 1 },
+        { key: 'deal_calc', valid: 0, },
+        { key: 'tz_calc', valid: 1 },
+        { key: 'drawing_code', valid: 1 },
+        { key: 'node_type', valid: 1 },
+        { key: 'memo', valid: 1 },
+        { key: 'ex_memo2', valid: 0 },
+        { key: 'ex_memo3', valid: 0 },
+    ],
+    tz_stage_set: [
+        { key: 'code', valid: 1 },
+        { key: 'b_code', valid: 1 },
+        { key: 'ex_memo1', valid: 0 },
+        { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
+        { key: 'position', valid: 1 },
+        { key: 'unit', valid: 1 },
+        { key: 'unit_price', valid: 1 },
+        { key: 'deal_calc', valid: 0, },
+        { key: 'tz_calc', valid: 1 },
+        { key: 'real_qty', valid: 1 },
+        { key: 'estimate_qty', valid: 1 },
+        { key: 'cur_calc', valid: 1 },
+        { key: 'end_calc', valid: 1 },
+        { key: 'deal_dgn_qty', valid: 1 },
+        { key: 'c_dgn_qty', valid: 1 },
+        { key: 'final_dgn_price', valid: 1 },
+        { key: 'postil', valid: 1},
+        { key: 'drawing_code', valid: 1 },
+        { key: 'memo', valid: 1 },
+        { key: 'ex_memo2', valid: 0 },
+        { key: 'ex_memo3', valid: 0 },
+        { key: 'is_tp', valid: 1},
+        { key: 'gxby', valid: 1},
+        { key: 'dagl', valid: 1},
+    ],
+    gcl_ledger_set: [
+        { key: 'code', valid: 1 },
+        { key: 'b_code', valid: 1 },
+        { key: 'ex_memo1', valid: 0 },
+        { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
+        { key: 'position', valid: 1 },
+        { key: 'unit', valid: 1 },
+        { key: 'unit_price', valid: 1 },
+        { key: 'dgn_qty', valid: 1 },
+        { key: 'dgn_price', valid: 1 },
+        { key: 'deal_calc', valid: 1, },
+        { key: 'tz_calc', valid: 0 },
+        { key: 'drawing_code', valid: 1 },
+        { key: 'node_type', valid: 1 },
+        { key: 'memo', valid: 1 },
+        { key: 'ex_memo2', valid: 0 },
+        { key: 'ex_memo3', valid: 0 },
+    ],
+    gcl_stage_set: [
+        { key: 'code', valid: 1 },
+        { key: 'b_code', valid: 1 },
+        { key: 'ex_memo1', valid: 0 },
+        { key: 'name', valid: 1 },
+        { key: 'features', valid: 0 },
+        { key: 'position', valid: 1 },
+        { key: 'unit', valid: 1 },
+        { key: 'unit_price', valid: 1 },
+        { key: 'deal_calc', valid: 0, },
+        { key: 'tz_calc', valid: 1 },
+        { key: 'real_qty', valid: 1 },
+        { key: 'estimate_qty', valid: 1 },
+        { key: 'cur_calc', valid: 1 },
+        { key: 'end_calc', valid: 1 },
+        { key: 'deal_dgn_qty', valid: 1 },
+        { key: 'c_dgn_qty', valid: 1 },
+        { key: 'final_dgn_price', valid: 1 },
+        { key: 'postil', valid: 1},
+        { key: 'drawing_code', valid: 1 },
+        { key: 'memo', valid: 1 },
+        { key: 'ex_memo2', valid: 0 },
+        { key: 'ex_memo3', valid: 0 },
+        { key: 'is_tp', valid: 1},
+        { key: 'gxby', valid: 1},
+        { key: 'dagl', valid: 1},
+    ],
+};
+const ProjectSpreadTemplate = [
+    { code: 'gl', name: '公路', template: glSpreadTemplate, isDefault: 1 },
+    { code: 'sz', name: '市政', template: szSpreadTemplate },
+    { code: 'fj', name: '房建', template: fjSpreadTemplate },
+];
 const BaseSpreadColSetting = {
     Ledger: {
         bills: {

+ 11 - 7
app/controller/setting_controller.js

@@ -904,7 +904,8 @@ module.exports = app => {
                 }
                 const showList = await ctx.service.settingShow.getList(projectData.page_path);
                 const sjsRela = await ctx.service.project.getSjsRela(projectId);
-                const renderData = {projectData, showList, sjsRela, settingConst};
+                const projectSpread  = await ctx.service.projectSpread.getProjectSpreadType(projectId);
+                const renderData = {projectData, showList, sjsRela, settingConst, projectSpread};
                 await this.layout('setting/show.ejs', renderData);
             } catch (error) {
                 this.log(error);
@@ -1383,11 +1384,13 @@ module.exports = app => {
                 const projectData = await ctx.service.project.getDataById(projectId);
                 if (!projectData) throw '没有对应的项目数据';
 
-                const projectSpread = await this.ctx.service.projectSpread.getProjectSpread(projectData.id);
                 const sType = ctx.query.stype;
+                const code = ctx.query.code;
+                const projectSpread = await this.ctx.service.projectSpread.getProjectSpreadByCode(projectData.id, code);
                 const renderData = {
                     BaseSetCol: sType.indexOf('stage') > 0 ? SpreadConst.BaseSetCol.Stage : SpreadConst.BaseSetCol.Ledger,
                     sType,
+                    code,
                     colSet: projectSpread[sType],
                     jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.setting.spread),
                 };
@@ -1402,8 +1405,8 @@ module.exports = app => {
             try {
                 const projectId = ctx.session.sessionProject.id;
                 const data = JSON.parse(ctx.request.body.data);
-                await this.ctx.service.projectSpread.updateProjectSet(projectId, data.sType, data.colSet);
-                const projectSpread = await this.ctx.service.projectSpread.getProjectSpread(projectId);
+                await this.ctx.service.projectSpread.updateProjectSet(projectId, data.code, data.sType, data.colSet);
+                const projectSpread = await this.ctx.service.projectSpread.getProjectSpreadByCode(projectId, data.code);
                 ctx.body = { err: 0, msg: '', data: { colSet: projectSpread[data.sType] } };
             } catch (error) {
                 ctx.log(error);
@@ -1426,9 +1429,10 @@ module.exports = app => {
             try {
                 const projectId = ctx.session.sessionProject.id;
                 const data = JSON.parse(ctx.request.body.data);
-                const colSet = SpreadConst.ProjectSpreadTemplate[data.sType];
-                await this.ctx.service.projectSpread.updateProjectSet(projectId, data.sType, colSet);
-                const projectSpread = await this.ctx.service.projectSpread.getProjectSpread(projectId);
+                const spreadTemplate = SpreadConst.ProjectSpreadTemplate.find(x => { return x.code === data.code; });
+                const colSet = spreadTemplate.template[data.sType];
+                await this.ctx.service.projectSpread.updateProjectSet(projectId, data.code, data.sType, colSet);
+                const projectSpread = await this.ctx.service.projectSpread.getProjectSpreadByCode(projectId, data.code);
                 ctx.body = { err: 0, msg: '', data: { colSet: projectSpread[data.sType] } };
             } catch (error) {
                 ctx.log(error);

+ 4 - 4
app/public/js/project_spread.js

@@ -149,8 +149,8 @@ $(document).ready(() => {
             if (datas.length > 0) {
                 postData(window.location.pathname + '/update', {postType: 'update', postData: datas}, function (result) {
                     const refreshNode = sheet.zh_tree.loadPostData(result);
-                    billsTreeSpreadObj.refreshTree(sheet, refreshNode);
-                    billsTreeSpreadObj.loadExprToInput(sheet);
+                    colSpreadObj.refreshTree(sheet, refreshNode);
+                    colSpreadObj.loadExprToInput(sheet);
                 });
             }
         },
@@ -211,7 +211,7 @@ $(document).ready(() => {
     });
 
     $('#spread-save').click(() => {
-        const data = { sType, colSet: getCurrentColSet() };
+        const data = { sType, code: sCode, colSet: getCurrentColSet() };
         postData('/setting/spread/save', data, function(result) {
             colSet.length = 0;
             colSet.push(...result.colSet);
@@ -227,7 +227,7 @@ $(document).ready(() => {
         })
     });
     $('#spread-reset').click(() => {
-        const data = { sType };
+        const data = { sType, code: sCode };
         postData('/setting/spread/reset', data, function(result) {
             colSet.length = 0;
             colSet.push(...result.colSet);

+ 60 - 17
app/service/project_spread.js

@@ -31,11 +31,20 @@ module.exports = app => {
             this.tableName = 'project_spread';
         }
 
+        _analysisData(data) {
+            if (!data) return;
+            JsonFields.forEach(jf => { if(data[jf]) data[jf] = JSON.parse(data[jf]); });
+        }
+
         async loadProjectSpread(id) {
-            const result = await this.getDataByCondition({ id });
-            if (result) {
-                JsonFields.forEach(jf => { if(result[jf]) result[jf] = JSON.parse(result[jf]); });
-            }
+            const result = await this.getDataByCondition({ pid: id, is_default: 1 });
+            this._analysisData(result);
+            return result;
+        }
+
+        async loadProjectSpreadByCode(id, code) {
+            const result = await this.getDataByCondition({ pid: id, code });
+            this._analysisData(result);
             return result;
         }
 
@@ -80,16 +89,17 @@ module.exports = app => {
         }
 
         async initProjectSpread(id) {
-            const data = JSON.parse(JSON.stringify(SpreadConst.ProjectSpreadTemplate));
-            [data.tz_ledger_bills_spread, data.tz_ledger_pos_spread] = this.generateRelaSpread('tz_ledger_set', data.tz_ledger_set);
-            [data.tz_stage_bills_spread, data.tz_stage_pos_spread] = this.generateRelaSpread('tz_stage_set', data.tz_stage_set);
-            [data.gcl_ledger_bills_spread, data.gcl_ledger_pos_spread] = this.generateRelaSpread('gcl_ledger_set', data.gcl_ledger_set);
-            [data.gcl_stage_bills_spread, data.gcl_stage_pos_spread] = this.generateRelaSpread('gcl_stage_set', data.gcl_stage_set);
-            data.id = id;
-            const updateData = { id };
-            JsonFields.forEach(jf => { if (data[jf]) updateData[jf] = JSON.stringify(data[jf]) });
-            const result = await this.db.insert(this.tableName, updateData);
-            if (result.insertId = data.id) return data;
+            for (const SpreadTemplate of SpreadConst.ProjectSpreadTemplate) {
+                const data = JSON.parse(JSON.stringify(SpreadTemplate.template));
+                [data.tz_ledger_bills_spread, data.tz_ledger_pos_spread] = this.generateRelaSpread('tz_ledger_set', data.tz_ledger_set);
+                [data.tz_stage_bills_spread, data.tz_stage_pos_spread] = this.generateRelaSpread('tz_stage_set', data.tz_stage_set);
+                [data.gcl_ledger_bills_spread, data.gcl_ledger_pos_spread] = this.generateRelaSpread('gcl_ledger_set', data.gcl_ledger_set);
+                [data.gcl_stage_bills_spread, data.gcl_stage_pos_spread] = this.generateRelaSpread('gcl_stage_set', data.gcl_stage_set);
+                const updateData = { pid: id, code: SpreadTemplate.code, name: SpreadTemplate.name, is_default: SpreadTemplate.isDefault };
+                JsonFields.forEach(jf => { if (data[jf]) updateData[jf] = JSON.stringify(data[jf]) });
+                await this.db.insert(this.tableName, updateData);
+            }
+            return await this.getProjectSpread(id);
         }
 
         async getProjectSpread(id) {
@@ -98,13 +108,46 @@ module.exports = app => {
             return await this.initProjectSpread(id);
         }
 
-        async updateProjectSet(id, colSetType, colSet) {
-            const updateData = { id };
+        async getProjectSpreadByCode(id, code) {
+            const curSet = await this.loadProjectSpreadByCode(id, code);
+            if (curSet) return curSet;
+            return await this.initProjectSpread(id);
+        }
+
+        async getProjectSpreadType(id) {
+            const result = await this.getAllDataByCondition({
+                columns: ['code', 'name', 'is_default'],
+                where: { pid: id },
+            });
+            if (result.length > 0) return result;
+
+            await this.initProjectSpread(id);
+            return await this.getAllDataByCondition({
+                columns: ['code', 'name', 'is_default'],
+                where: { pid: id },
+            });
+        }
+
+        async updateProjectSet(id, code, colSetType, colSet) {
+            const updateData = {};
+            const [billsSpread, posSpread] = this.generateRelaSpread(colSetType, colSet);
+            updateData[colSetType.replace('_set', '_bills_spread')] = JSON.stringify(billsSpread);
+            updateData[colSetType.replace('_set', '_pos_spread')] = JSON.stringify(posSpread);
+            updateData[colSetType] = JSON.stringify(colSet);
+            await this.defaultUpdate(updateData, { where: { pid: id, code } });
+        }
+
+        async resetProjectSet(id, code, colSetType, resetCode) {
+            const SpreadTemplate = SpreadConst.ProjectSpreadTemplate.find(x => { return x.code === resetCode; });
+            if (!SpreadTemplate) throw '选择模板不存在';
+
+            const colSet = SpreadTemplate.template[colSetType];
+            const updateData = {};
             const [billsSpread, posSpread] = this.generateRelaSpread(colSetType, colSet);
             updateData[colSetType.replace('_set', '_bills_spread')] = JSON.stringify(billsSpread);
             updateData[colSetType.replace('_set', '_pos_spread')] = JSON.stringify(posSpread);
             updateData[colSetType] = JSON.stringify(colSet);
-            await this.db.update(this.tableName, updateData);
+            await this.defaultUpdate(updateData, { where: { pid: id, code } });
         }
     }
 

+ 10 - 4
app/view/setting/show.ejs

@@ -36,13 +36,18 @@
                         </div>
                         <div class-="form-group">
                             <h6>列显示</h6>
+                            <% for (const ps of projectSpread) { %>
+                            <lable>
+                                <%- ps.name %>
+                                <% if(ps.is_default) { %>(<span>默认</span>)<% } %>
+                            </lable>
                             <div class="row">
                                 <div class="col-6">
                                     <label>0号台账模式</label>
                                     <div class="card">
                                         <ul class="list-group list-group-flush">
-                                            <li class="list-group-item">0号台账 <a href="/setting/spread?stype=tz_ledger_set" class="btn btn-primary btn-sm pull-right">配置</a></li>
-                                            <li class="list-group-item">计量台账 <a href="/setting/spread?stype=tz_stage_set" class="btn btn-primary btn-sm pull-right">配置</a></li>
+                                            <li class="list-group-item">0号台账 <a href="/setting/spread?stype=tz_ledger_set&code=<%- ps.code %>" class="btn btn-primary btn-sm pull-right">配置</a></li>
+                                            <li class="list-group-item">计量台账 <a href="/setting/spread?stype=tz_stage_set&code=<%- ps.code %>" class="btn btn-primary btn-sm pull-right">配置</a></li>
                                         </ul>
                                     </div>
                                 </div>
@@ -50,12 +55,13 @@
                                     <label>工程量清单模式</label>
                                     <div class="card">
                                         <ul class="list-group list-group-flush">
-                                            <li class="list-group-item">0号台账 <a href="/setting/spread?stype=gcl_ledger_set" class="btn btn-primary btn-sm pull-right">配置</a></li>
-                                            <li class="list-group-item">计量台账 <a href="/setting/spread?stype=gcl_stage_set" class="btn btn-primary btn-sm pull-right">配置</a></li>
+                                            <li class="list-group-item">0号台账 <a href="/setting/spread?stype=gcl_ledger_set&code=<%- ps.code %>" class="btn btn-primary btn-sm pull-right">配置</a></li>
+                                            <li class="list-group-item">计量台账 <a href="/setting/spread?stype=gcl_stage_set&code=<%- ps.code %>" class="btn btn-primary btn-sm pull-right">配置</a></li>
                                         </ul>
                                     </div>
                                 </div>
                             </div>
+                            <% } %>
                         </div>
                         <!--<div class="form-group">-->
                             <!--<label>台账列显示</label>-->

+ 1 - 0
app/view/setting/spread.ejs

@@ -26,5 +26,6 @@
 <script>
     const BaseSetCol = JSON.parse('<%- JSON.stringify(BaseSetCol) %>');
     const sType = '<%- sType %>';
+    const sCode = '<%- code %>';
     const colSet = JSON.parse('<%- JSON.stringify(colSet) %>');
 </script>

+ 39 - 33
db_script/project_spread.js

@@ -63,42 +63,49 @@ const InsertSql = function (tableName, data) {
 };
 
 const initProjectSpread = async function (project) {
-    const DefaultSet = JSON.parse(JSON.stringify(SpreadConst.ProjectSpreadTemplate));
-    const sjsRela = project.sjs_rela ? JSON.parse(project.sjs_rela) : null;
-    if (sjsRela) {
-        for (const prop in DefaultSet) {
-            const template = DefaultSet[prop];
-            for (const lc of sjsRela.ledgerCol) {
-                const col = template.find(x => { return x.key === lc.field; });
-                if (lc.show) col.valid = 1;
-                if (lc.alias) col.alias = lc.alias;
-                if (lc.pos === 'name') {
-                    const lColIndex = template.findIndex(x => { return x.key === lc.field; });
-                    const lCol = template[lColIndex];
-                    const preColIndex = template.findIndex(x => { return x.key === lc.pos; });
-                    const preCol = template[preColIndex];
-                    if (preCol && preColIndex !== lColIndex - 1) {
-                        template.splice(lColIndex, 1);
-                        template.splice(preColIndex + 1, 0, lCol);
-                    }
-                }
-            }
-        }
-    }
-    [DefaultSet.tz_ledger_bills_spread, DefaultSet.tz_ledger_pos_spread] = generateRelaSpread('tz_ledger_set', DefaultSet.tz_ledger_set);
-    [DefaultSet.tz_stage_bills_spread, DefaultSet.tz_stage_pos_spread] = generateRelaSpread('tz_stage_set', DefaultSet.tz_stage_set);
-    [DefaultSet.gcl_ledger_bills_spread, DefaultSet.gcl_ledger_pos_spread] = generateRelaSpread('gcl_ledger_set', DefaultSet.gcl_ledger_set);
-    [DefaultSet.gcl_stage_bills_spread, DefaultSet.gcl_stage_pos_spread] = generateRelaSpread('gcl_stage_set', DefaultSet.gcl_stage_set);
-    for (const prop in DefaultSet) {
-        DefaultSet[prop] = JSON.stringify(DefaultSet[prop]);
-    }
-    DefaultSet.id = project.id;
     const exist = await querySql('Select * From zh_project_spread WHERE id = ?', [project.id]);
     if (exist.length > 0) {
         await querySql('DELETE FROM zh_project_spread WHERE id = ?', [project.id]);
     }
-    const [sql, sqlParams] = InsertSql('zh_project_spread', DefaultSet);
-    await querySql(sql, sqlParams);
+
+    for (const SpreadTemplate of SpreadConst.ProjectSpreadTemplate) {
+        const DefaultSet = JSON.parse(JSON.stringify(SpreadTemplate.template));
+
+        const sjsRela = project.sjs_rela ? JSON.parse(project.sjs_rela) : null;
+        if (sjsRela) {
+            for (const prop in DefaultSet) {
+                const template = DefaultSet[prop];
+                for (const lc of sjsRela.ledgerCol) {
+                    const col = template.find(x => { return x.key === lc.field; });
+                    if (lc.show) col.valid = 1;
+                    if (lc.alias) col.alias = lc.alias;
+                    if (lc.pos === 'name') {
+                        const lColIndex = template.findIndex(x => { return x.key === lc.field; });
+                        const lCol = template[lColIndex];
+                        const preColIndex = template.findIndex(x => { return x.key === lc.pos; });
+                        const preCol = template[preColIndex];
+                        if (preCol && preColIndex !== lColIndex - 1) {
+                            template.splice(lColIndex, 1);
+                            template.splice(preColIndex + 1, 0, lCol);
+                        }
+                    }
+                }
+            }
+        }
+        [DefaultSet.tz_ledger_bills_spread, DefaultSet.tz_ledger_pos_spread] = generateRelaSpread('tz_ledger_set', DefaultSet.tz_ledger_set);
+        [DefaultSet.tz_stage_bills_spread, DefaultSet.tz_stage_pos_spread] = generateRelaSpread('tz_stage_set', DefaultSet.tz_stage_set);
+        [DefaultSet.gcl_ledger_bills_spread, DefaultSet.gcl_ledger_pos_spread] = generateRelaSpread('gcl_ledger_set', DefaultSet.gcl_ledger_set);
+        [DefaultSet.gcl_stage_bills_spread, DefaultSet.gcl_stage_pos_spread] = generateRelaSpread('gcl_stage_set', DefaultSet.gcl_stage_set);
+        for (const prop in DefaultSet) {
+            DefaultSet[prop] = JSON.stringify(DefaultSet[prop]);
+        }
+        DefaultSet.pid = project.id;
+        DefaultSet.code = SpreadTemplate.code;
+        DefaultSet.name = SpreadTemplate.name;
+        DefaultSet.is_default = SpreadTemplate.isDefault || 0;
+        const [sql, sqlParams] = InsertSql('zh_project_spread', DefaultSet);
+        await querySql(sql, sqlParams);
+    };
 };
 
 const doComplete = async function(projectCode) {
@@ -115,5 +122,4 @@ const doComplete = async function(projectCode) {
     BaseUtil.closePool();
 };
 
-
 doComplete(process.argv[3]);