瀏覽代碼

费用类别相关调整

MaiXinRong 1 年之前
父節點
當前提交
99f9d47dbd

+ 9 - 0
app/public/js/ledger.js

@@ -990,6 +990,15 @@ $(document).ready(function() {
                 case 'dgn_qty2':
                     info.cancel = !_.isEmpty(node.b_code);
                     break;
+                case 'node_type':
+                    const parent = tree.getParent(node);
+                    if (parent) {
+                        info.cancel = false;
+                        // const topParent = tree.getTopParent(node);
+                        // info.cancel = [1, 5].indexOf(topParent.node_type) < 0;
+                    } else {
+                        info.cancel = true;
+                    }
             }
         },
         sortCode: function (sheet) {

+ 3 - 2
app/public/js/shares/sjs_setting.js

@@ -117,8 +117,9 @@ const sjsSettingObj = (function () {
                     const parent = tree.getParent(data);
                     if (!parent) return false;
 
-                    const topParent = tree.getTopParent(data);
-                    return [1, 5].indexOf(topParent.node_type) >= 0;
+                    return true;
+                    // const topParent = tree.getTopParent(data);
+                    // return [1, 5].indexOf(topParent.node_type) >= 0;
                 };
             }
         }

+ 5 - 0
app/public/js/spreadjs_rela/spreadjs_zh.js

@@ -2425,6 +2425,11 @@ const SpreadJsObj = {
                 const setting = options.sheet.zh_setting;
                 const col = setting.cols[options.col];
                 const data = SpreadJsObj.getSelectObject(options.sheet);
+                if (!data) {
+                    spreadNS.CellTypes.Base.prototype.paintValue.apply(this, arguments);
+                    return;
+                }
+
                 const comboEdit = (col.comboEdit && Object.prototype.toString.apply(col.comboEdit) === "[object Function]")
                     ? col.comboEdit(options.sheet, data)
                     : (col.comboEdit !== undefined ? col.comboEdit : true);

+ 86 - 4
db_script/project_spread.js

@@ -8,21 +8,103 @@
  * @version
  */
 
-const spreadConst = require('../app/const/spread');
+const SpreadConst = require('../app/const/spread');
 const BaseUtil = require('./baseUtils');
+const querySql = BaseUtil.querySql;
+
+const generateSpreadSetting = function(colSet, emptyBase, BaseSetCol, BaseSpreadColSetting, spreadType = 'bills') {
+    const spreadSetting = JSON.parse(JSON.stringify(emptyBase));
+    for (const col of colSet) {
+        if (!col.valid) continue;
+        const dc = BaseSetCol.find(x => { return x.key === col.key; });
+        if (!dc) continue;
+        const orgBaseCols = BaseSpreadColSetting[col.key];
+        if (!orgBaseCols) continue;
+
+        const baseCols = JSON.parse(JSON.stringify(orgBaseCols));
+        if (dc.fixed.indexOf('alias') < 0 && col.alias) {
+            if (baseCols.length === 1) {
+                if (baseCols[0].aliasFormat) {
+                    baseCols[0].title = baseCols[0].aliasFormat.replace('{%s}', col.alias);
+                    delete baseCols[0].aliasFormat;
+                } else {
+                    baseCols[0].title = col.alias;
+                }
+            } else {
+                baseCols.forEach(x => {
+                    if (x.aliasFormat) {
+                        x.title = x.aliasFormat.replace('{%s}', col.alias);
+                        delete x.aliasFormat;
+                    }
+                });
+            }
+        }
+        spreadSetting.cols.push(...baseCols);
+    }
+    return spreadSetting;
+};
+
+const generateRelaSpread = function (colSetType, colSet) {
+    const baseSetCol = colSetType.indexOf('stage') > 0 ? SpreadConst.BaseSetCol.Stage : SpreadConst.BaseSetCol.Ledger;
+    const baseSpreadColSetting = colSetType.indexOf('stage') > 0 ? SpreadConst.BaseSpreadColSetting.Stage : SpreadConst.BaseSpreadColSetting.Ledger;
+    const billsSpread = generateSpreadSetting(colSet, SpreadConst.EmptySpreadSetting[colSetType].bills, baseSetCol, baseSpreadColSetting.bills);
+    const posSpread = generateSpreadSetting(colSet, SpreadConst.EmptySpreadSetting[colSetType].pos, baseSetCol, baseSpreadColSetting.pos, 'pos');
+    return [billsSpread, posSpread];
+};
+
+const InsertSql = function (tableName, data) {
+    const column = [], query = [], value = [];
+    for (const prop in data) {
+        column.push(prop);
+        query.push('?');
+        value.push(data[prop]);
+    }
+    return [`INSERT INTO ${tableName} (${column.join(',')}) VALUES (${query.join(',')})`, value]
+};
 
 const initProjectSpread = async function (project) {
-    const DefaultSet = JSON.parse(JSON.stringify(spreadConst.DefaultProjectSpread));
+    const DefaultSet = JSON.parse(JSON.stringify(SpreadConst.ProjectSpreadTemplate));
     const sjsRela = project.sjs_rela ? JSON.parse(project.sjs_rela) : null;
     if (sjsRela) {
-        for (const )
+        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);
 };
 
 const doComplete = async function(projectCode) {
     try {
         const whereSql = projectCode ? ` WHERE code = "${projectCode}"` : '';
-        const project = projectCode ? await querySql(`Select * From zh_project ${whereSql}`);
+        const project = await querySql(`Select * From zh_project ${whereSql}`);
         for (const p of project) {
             console.log(`Update Project ${p.code}(${p.id}):`);
             await initProjectSpread(p);