浏览代码

1.修改添加规则逻辑
2.双击清单模板时自动载入添加规则

olym 7 年之前
父节点
当前提交
dfe3e62e35

+ 113 - 96
web/building_saas/main/js/views/character_content_view.js

@@ -351,7 +351,6 @@ let characterOprObj = {
     },
     //显示到清单项目特征列的数据
     getColData: function (itemsArr) {
-        console.log(111);
         let me = characterOprObj;
         let rstStr = "", count = 0;
         for(let i = 0, len = itemsArr.length; i < len; i++){
@@ -658,17 +657,22 @@ let pageCCOprObj = {
         return rst;
 
     },
-    setItemContentNode: function (node, jobs, items) {
+    setItemContentNode: function (node, jobs, items, name = '') {
         let theCont = contentOprObj, theCha = characterOprObj,
             jobContent, itemCharacter, contentTxt, characterTxt;
         jobContent = theCont.buildJobContent(jobs);
         itemCharacter = theCha.buildItemCharactet(items);
-        contentTxt = theCont.getColData(jobContent);
-        characterTxt = theCha.getColData(itemCharacter);
+        // contentTxt = theCont.getColData(jobContent);
+        // characterTxt = theCha.getColData(itemCharacter);
         node.data.jobContent = jobContent;
         node.data.itemCharacter = itemCharacter;
-        node.data.jobContentText = contentTxt ? contentTxt : '';
-        node.data.itemCharacterText = characterTxt ? characterTxt : '';
+        this.nameCache = name;
+        // 根据规则设置对应特征、内容、名称格式
+        const setting = projectObj.project.property.addRule !== undefined ? projectObj.project.property.addRule : null;
+        const updateData = pageCCOprObj.getCharacterUpdateData(setting, node);
+        node.data.jobContentText = updateData.jobContentText;
+        node.data.itemCharacterText = updateData.itemCharacterText;
+        node.data.name = updateData.name;
     },
     safeItemCharater: function (itemCharater) {
         return characterOprObj.buildItemCharactet(itemCharater);
@@ -797,7 +801,7 @@ let pageCCOprObj = {
         if (updateCol === '') {
             return;
         }
-        const row = node.getID() - 1;
+        const row = node.serialNo();
         // 刷新输出显示
         for (const tmp of updateCol) {
             // 没有默认的数据则跳过刷新
@@ -816,100 +820,12 @@ let pageCCOprObj = {
      * @return {void}
      */
     setCharacterBySetting: function(node, setting) {
-        let contentArray = [];
         let self = this;
 
         // 保存的条件数据
         const findSet = { ID: node.data.ID, projectID: node.data.projectID };
+        const updateData = this.getCharacterUpdateData(setting, node);
 
-        // 获取默认数据
-        const defaultData = this.getDataBySetting(node, {
-            serialType: "1",
-            characterFormat: "2",
-        });
-        defaultData.character = defaultData.character.join("\r\n");
-        defaultData.content = defaultData.content.join("\r\n");
-
-        // 获取当前设置数据
-        const currentData = this.getDataBySetting(node, setting);
-        let updateData = {
-            itemCharacterText: '',
-            jobContentText: '',
-            name: '',
-        };
-
-        // 组合数据
-        let content = '';
-        switch (setting.addContent) {
-            case "1":
-                // 项目特征+工作内容
-                contentArray.push('[项目特征]');
-                contentArray.push.apply(contentArray, currentData.character);
-                contentArray.push('[工作内容]');
-                contentArray.push.apply(contentArray, currentData.content);
-                break;
-            case "2":
-                // 工作内容+项目特征
-                contentArray.push('[工作内容]');
-                contentArray.push.apply(contentArray, currentData.content);
-                contentArray.push('[项目特征]');
-                contentArray.push.apply(contentArray, currentData.character);
-                break;
-            case "3":
-                // 项目特征
-                contentArray.push.apply(contentArray, currentData.character);
-                break;
-            case "4":
-                // 工作内容
-                contentArray.push.apply(contentArray, currentData.content);
-                break;
-            case "5":
-                // 定额子目
-                const rationChapter = this.getRationChapter(node, setting);
-                contentArray.push.apply(contentArray, rationChapter);
-                break;
-            case "":
-                // 无
-                break;
-        }
-        // 显示格式
-        switch (setting.displayFormat) {
-            case "1":
-                // 换行分隔
-                content = contentArray.join("\r\n");
-                break;
-            case "2":
-                // 逗号分隔
-                content = contentArray.join(',');
-                break;
-            case "3":
-                // 括号分隔
-                content = '(' + contentArray.join(',') + ')';
-                break;
-        }
-        // 添加到对应位置
-        switch (setting.position) {
-            case "1":
-                // 添加到项目特征列
-                updateData.itemCharacterText = content;
-                break;
-            case "2":
-                // 添加到清单名称列
-                content = defaultData.name + "\r\n" + content;
-                updateData.name = content;
-                break;
-            case "3":
-                // 添加到工作内容列
-                updateData.jobContentText = content;
-                break;
-            case "4":
-                updateData = {
-                    itemCharacterText: defaultData.character,
-                    jobContentText: defaultData.content,
-                    name: defaultData.name,
-                };
-                break;
-        }
         let saveObj = [];
         for (const index in updateData) {
             saveObj.push({field: index, value: updateData[index]});
@@ -1054,4 +970,105 @@ let pageCCOprObj = {
         }
         return result;
     },
+
+    /**
+     * 获取特征内容名称更新的数据
+     *
+     * @param {Object} setting - 设置
+     * @param {Object} node - 节点数据
+     * @return {Object} - 返回更新的数据
+     */
+    getCharacterUpdateData: function(setting, node) {
+        let updateData = {
+            itemCharacterText: '',
+            jobContentText: '',
+            name: '',
+        };
+        let contentArray = [];
+        // 获取默认数据
+        const defaultData = this.getDataBySetting(node, {
+            serialType: "1",
+            characterFormat: "2",
+        });
+        defaultData.character = defaultData.character.join("\r\n");
+        defaultData.content = defaultData.content.join("\r\n");
+
+        // 获取当前设置数据
+        const currentData = this.getDataBySetting(node, setting);
+
+        // 组合数据
+        let content = '';
+        switch (setting.addContent) {
+            case "1":
+                // 项目特征+工作内容
+                contentArray.push('[项目特征]');
+                contentArray.push.apply(contentArray, currentData.character);
+                contentArray.push('[工作内容]');
+                contentArray.push.apply(contentArray, currentData.content);
+                break;
+            case "2":
+                // 工作内容+项目特征
+                contentArray.push('[工作内容]');
+                contentArray.push.apply(contentArray, currentData.content);
+                contentArray.push('[项目特征]');
+                contentArray.push.apply(contentArray, currentData.character);
+                break;
+            case "3":
+                // 项目特征
+                contentArray.push.apply(contentArray, currentData.character);
+                break;
+            case "4":
+                // 工作内容
+                contentArray.push.apply(contentArray, currentData.content);
+                break;
+            case "5":
+                // 定额子目
+                const rationChapter = this.getRationChapter(node, setting);
+                contentArray.push.apply(contentArray, rationChapter);
+                break;
+            case "":
+                // 无
+                break;
+        }
+        // 显示格式
+        switch (setting.displayFormat) {
+            case "1":
+                // 换行分隔
+                content = contentArray.join("\r\n");
+                break;
+            case "2":
+                // 逗号分隔
+                content = contentArray.join(',');
+                break;
+            case "3":
+                // 括号分隔
+                content = '(' + contentArray.join(',') + ')';
+                break;
+        }
+        // 添加到对应位置
+        switch (setting.position) {
+            case "1":
+                // 添加到项目特征列
+                updateData.itemCharacterText = content;
+                break;
+            case "2":
+                // 添加到清单名称列
+                content = defaultData.name + "\r\n" + content;
+                updateData.name = content;
+                break;
+            case "3":
+                // 添加到工作内容列
+                updateData.jobContentText = content;
+                break;
+            case "4":
+                updateData = {
+                    itemCharacterText: defaultData.character,
+                    jobContentText: defaultData.content,
+                    name: defaultData.name,
+                };
+                break;
+        }
+
+        return updateData;
+    },
 }

+ 2 - 1
web/building_saas/main/js/views/std_bills_lib.js

@@ -173,9 +173,10 @@ var billsLibObj = {
             that.stdBillsSpread.unbind(GC.Spread.Sheets.Events.CellDoubleClick);
             that.stdBillsSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, function (sender, args) {
                 let selectNode = stdBillsTree.items[args.row];
+                let name = selectNode.data.name;
                 if (stdBillsTree.items[args.row].children.length === 0) {
                     //特征及内容转化
-                    pageCCOprObj.setItemContentNode(stdBillsTree.items[args.row], getBillsJobs(stdBillsTree.items[args.row]), getBillsFeatures(stdBillsTree.items[args.row]));
+                    pageCCOprObj.setItemContentNode(stdBillsTree.items[args.row], getBillsJobs(stdBillsTree.items[args.row]), getBillsFeatures(stdBillsTree.items[args.row]), name);
                     if (/\//.test(selectNode.data.unit)) {
                         let existB = projectObj.project.Bills.sameStdCodeBillsData(selectNode.data.code);
                         if (existB) {

+ 38 - 20
web/building_saas/main/js/views/sub_view.js

@@ -104,22 +104,9 @@ $("#linkTZJNR").click(function () {
     pageCCOprObj.active = true;
     refreshSubSpread();
     let selectedNode = projectObj.mainController.tree.selected;
-
-    // 缓存原名称
-    if (pageCCOprObj.nameCache === '') {
-        let libId = projectInfoObj.projectInfo.engineeringInfo.bill_lib[0].id;
-        let orgCode = selectedNode.data.code.substr(0, 9);
-        CommonAjax.post('/stdBillsEditor/getStdBillsByCode', {userId: userID, billsLibId: libId, code: orgCode}, function (data) {
-            if (data) {
-                pageCCOprObj.nameCache = data.name;
-            }
-        });
-    }
-
     if (projectObj.project.property.addRule !== undefined) {
         setRule(projectObj.project.property.addRule);
     }
-
     pageCCOprObj.mainActiveCell = projectObj.mainSpread.getActiveSheet().getSelections()[0];
     if(selectedNode && selectedNode.sourceType === projectObj.project.Bills.getSourceType()){
         pageCCOprObj.setCacheAndShow(selectedNode);
@@ -141,7 +128,16 @@ $("#use-to-current").click(function() {
     const self = $(this);
     self.attr('disabled', 'disabled');
     let selectedNode = projectObj.mainController.tree.selected;
-    pageCCOprObj.setCharacterBySetting(selectedNode, setting);
+    // 获取原名称
+    let libId = projectInfoObj.projectInfo.engineeringInfo.bill_lib[0].id;
+    let orgCode = selectedNode.data.code.substr(0, 9);
+    CommonAjax.post('/stdBillsEditor/getStdBillsByCode', {userId: userID, billsLibId: libId, code: orgCode}, function (data) {
+        if (data) {
+            pageCCOprObj.nameCache = data.name;
+            // 操作内容
+            pageCCOprObj.setCharacterBySetting(selectedNode, setting);
+        }
+    });
     // 防止连续点击1秒后才能再次发起请求
     setTimeout(function() {
         isSaving = false;
@@ -155,13 +151,35 @@ $("#use-to-all").click(function() {
     if (treeNode.items === undefined || treeNode.items.length <= 0) {
         return false;
     }
-    for (const item of treeNode.items) {
-        if (item.data.jobContent === undefined || item.data.jobContent.length <= 0 ||
-        item.data.itemCharacter === undefined || item.data.itemCharacter.length <= 0) {
-            continue;
-        }
-        pageCCOprObj.setCharacterBySetting(item, setting);
+    // 获取所有标准清单
+    const stdBillsLibID = $("#stdBillsLibSelect").is(":visible") ?
+        $("#stdBillsLibSelect").val() : (projectInfoObj.projectInfo.engineeringInfo.bill_lib[0] !== undefined ? projectInfoObj.projectInfo.engineeringInfo.bill_lib[0].id : 0);
+    if (stdBillsLibID <= 0) {
+        return false;
     }
+    let stdBillData = {};
+    CommonAjax.post('/stdBillsEditor/getBills', {userId: userID, billsLibId: stdBillsLibID}, function (data) {
+        if (!data instanceof Array || data.length <= 0) {
+            return false;
+        }
+        // 整理数据
+        for (const tmp of data) {
+            stdBillData[tmp.code] = tmp;
+        }
+        // 处理结果
+        for (const item of treeNode.items) {
+            if (item.data.jobContent === undefined || item.data.jobContent.length <= 0 ||
+                item.data.itemCharacter === undefined || item.data.itemCharacter.length <= 0 || item.data.code === undefined) {
+                continue;
+            }
+            const orgCode = item.data.code.substr(0, 9);
+            if (stdBillData[orgCode] === undefined) {
+                continue;
+            }
+            pageCCOprObj.nameCache = stdBillData[orgCode].name;
+            pageCCOprObj.setCharacterBySetting(item, setting);
+        }
+    });
 });
 
 // 添加位置选择