| 
					
				 | 
			
			
				@@ -421,7 +421,7 @@ const gclGatherModel = (function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     function _getCalcChapter(chapter, option) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const gclChapter = [], otherChapter = [], gclChapterFilter = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const gclChapter = [], otherChapter = {}, gclChapterFilter = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let serialNo = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (const c of chapter) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const cc = { code: c.code, name: c.name, cType: 1 }; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -431,7 +431,7 @@ const gclGatherModel = (function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         gclChapter.push({ name: '未计入章节清单合计', cType: 21, serialNo: serialNo+1 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        otherChapter.push({ name: '合计(C=A+B+Z)', cType: 41, serialNo: serialNo+5, deal_bills_tp: option.zlj.deal_bills_tp }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        otherChapter.hj = { name: '合计(C=A+B+Z)', cType: 41, serialNo: serialNo+5, deal_bills_tp: option.zlj.deal_bills_tp }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         gclChapterFilter.push({node_type: option.jrg.value}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         gclChapterFilter.push({field: 'name', part: option.jrg.text}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const zlChapter = { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -440,10 +440,10 @@ const gclGatherModel = (function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         zlChapter.match.push({node_type: option.zlj.value}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         zlChapter.match.push({field: 'name', part: option.zlj.text}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        otherChapter.push(zlChapter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        otherChapter.zlj = zlChapter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        otherChapter.push({ name: '清单小计(A)', cType: 11, serialNo: serialNo+2 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        otherChapter.push({ name: '非清单项费用(B)', cType: 31, serialNo: serialNo+3 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        otherChapter.qd = { name: '清单小计(A)', cType: 11, serialNo: serialNo+2 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        otherChapter.fqd = { name: '非清单项费用(B)', cType: 31, serialNo: serialNo+3 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return [gclChapter, otherChapter, gclChapterFilter]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -479,7 +479,7 @@ const gclGatherModel = (function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     function gatherChapterData(chapter, option, fields) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const calcFilterPath = [], chapterFilterPath = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const chapterFilterPath = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const checkFilterPath = function (data, filterPath) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (const fp of filterPath) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (data.full_path.indexOf(fp + '-') === 0 || data.full_path === fp) return true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -490,46 +490,40 @@ const gclGatherModel = (function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const [gclChapter, otherChapter, gclChapterFilter] = _getCalcChapter(chapter, option); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (const d of gsTree.nodes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (_checkFilter(d, gclChapterFilter)) chapterFilterPath.push(d.full_path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (_checkFilter(d, otherChapter.zlj.match)) otherChapter.zlj.matchPath.push(d.full_path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (d.children && d.children.length > 0) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (checkFilterPath(d, calcFilterPath)) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (const c of otherChapter) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (d.name.indexOf('暂列金额') > -1) console.log(c); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (c.cType === 41) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    gatherfields(c, d, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (c.cType === 32 && _checkFilter(d, c.match)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    gatherfields(c, d, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    calcFilterPath.push(d.full_path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (checkFilterPath(d,otherChapter.zlj.matchPath)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                gatherfields(otherChapter.zlj, d, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                gatherfields(otherChapter.hj, d, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                gatherfields(otherChapter.hj, d, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (d.b_code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    gatherfields(otherChapter.qd, d, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (c.cType === 11 && (d.b_code)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    gatherfields(c, d, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!d.b_code || d.b_code === '') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    gatherfields(otherChapter.fqd, d, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (c.cType === 31 && (!d.b_code || d.b_code === '')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (d.b_code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    const c = checkFilterPath(d, chapterFilterPath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ? gclChapter.find(x => { return x.cType === 21}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        : _getGclChapter(gclChapter, d); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     gatherfields(c, d, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (d.b_code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const c = checkFilterPath(d, chapterFilterPath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ? gclChapter.find(x => { return x.cType === 21}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    : _getGclChapter(gclChapter, d); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                gatherfields(c, d, fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (const d of deal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!d.quantity || !d.unit_price) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (const c of otherChapter) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (c.cType === 41 || c.cType === 11) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    c.deal_bills_tp = ZhCalc.add(c.deal_bills_tp, d.total_price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            otherChapter.hj.deal_bills_tp = ZhCalc.add(otherChapter.hj.deal_bills_tp, d.total_price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            otherChapter.qd.deal_bills_tp = ZhCalc.add(otherChapter.qd.deal_bills_tp, d.total_price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const c = _getGclChapter(gclChapter, d); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             c.deal_bills_tp = ZhCalc.add(c.deal_bills_tp, d.total_price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        otherChapter.sort((x, y) => {return x.serialNo - y.serialNo}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return gclChapter.concat(otherChapter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const result = gclChapter.concat([otherChapter.hj, otherChapter.zlj, otherChapter.qd, otherChapter.fqd]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        result.sort((x, y) => {return x.serialNo - y.serialNo}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return { 
			 |