| 
					
				 | 
			
			
				@@ -561,7 +561,12 @@ $(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (col.field.indexOf('_dgn_') > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (col.field === 'memo') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    updateData.main = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        id: node.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    updateData.main[col.field] = newValue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if (col.field.indexOf('_dgn_') > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     updateData.dgn = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         id: node.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -604,12 +609,12 @@ $(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (validCols.length === 0) { return; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const sortData = sheet.zh_tree.nodes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const datas = [], dgnDatas = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const datas = [], dgnDatas = [], mainDatas = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (let iRow = sel.row; iRow < sel.row + sel.rowCount; iRow++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     const node = sortData[iRow]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (node) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        const data = { lid: node.id }, dgnData = { id: node.id }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        let filter = true, filterDgn = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        const data = { lid: node.id }, dgnData = { id: node.id }, mainData = { id: node.id }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let filter = true, filterDgn = true, filterMain = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         for (const iCol of validCols) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             const colSetting = sheet.zh_setting.cols[iCol]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (sheet.zh_setting.dgnUpFields.indexOf(colSetting.field) !== -1) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -625,6 +630,9 @@ $(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     dgnData[colSetting.field] = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     filterDgn = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } else if (colSetting.field === 'memo') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                mainData[colSetting.field] = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                filterMain = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 data[colSetting.field] = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 filter = false; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -632,12 +640,14 @@ $(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (!filter) datas.push(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (!filterDgn) dgnDatas.push(dgnData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (!filterMain) mainDatas.push(mainData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (datas.length > 0 || dgnDatas.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (datas.length > 0 || dgnDatas.length > 0 || mainDatas.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     const bills = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (datas.length > 0) bills.stage = datas; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (dgnDatas.length > 0) bills.dgn = dgnDatas; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (mainDatas.length > 0) bills.main = mainDatas; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     postData(window.location.href + '/update', {bills: bills}, function (result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         const nodes = stageTree.loadPostStageData(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         stageTreeSpreadObj.refreshTreeNodes(slSpread.getActiveSheet(), nodes); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -653,7 +663,8 @@ $(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const stageField = ['contract_qty', 'contract_tp', 'qc_qty', 'postil']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (let iCol = range.col; iCol < range.col + range.colCount; iCol++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     const col = info.sheet.zh_setting.cols[iCol]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if ((stageField.indexOf(col.field) === -1) && setting.dgnUpFields.indexOf(col.field) === -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if ((stageField.indexOf(col.field) === -1) && setting.dgnUpFields.indexOf(col.field) === -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        && col.field !== 'memo') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         toastr.error('不可修改此数据'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         info.cancel = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         return; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -664,15 +675,15 @@ $(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         clipboardPasted(e, info) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (info.sheet.zh_setting && info.sheet.zh_tree) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const sheet = info.sheet, setting = info.sheet.zh_setting; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const filterNodes = [], datas = [], dgnDatas = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const filterNodes = [], datas = [], dgnDatas = [], mainDatas = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let bHint = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (let iRow = 0; iRow < info.cellRange.rowCount; iRow++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     const curRow = iRow + info.cellRange.row; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     const node = sheet.zh_tree.getItemsByIndex(curRow); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    const data = {lid: node.id}, dgnData = {id: node.id}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let filter = false, filterDgn = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    const data = {lid: node.id}, dgnData = {id: node.id}, mainData = {id: node.id}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let filter = true, filterDgn = true, filterMain = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (let iCol = 0; iCol < info.cellRange.colCount; iCol++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         const curCol = info.cellRange.col + iCol; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         const col = info.sheet.zh_setting.cols[curCol]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -690,31 +701,36 @@ $(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             const num = _.toNumber(text); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (num) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 dgnData[col.field] = num; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                filterDgn = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     dgnData[col.field] = math.evaluate(transExpr(text)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    filterDgn = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } catch(err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     if (!bHint) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         toastr.warning('粘贴了非法表达式,已过滤'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         bHint = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    filterDgn = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } else if (col.field === 'memo') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            mainData.memo = text; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            filterMain = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (col.type === 'Number') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 const num = _.toNumber(text); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 if (num) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     data[col.field] = num; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    filter = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         data[col.field] = math.evaluate(transExpr(text)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        filter = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     } catch(err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         if (!bHint) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                             toastr.warning('粘贴了非法表达式,已过滤'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                             bHint = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        filter = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -722,17 +738,19 @@ $(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (filter && filterDgn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (filter && filterDgn && filterMain) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         filterNodes.push(node); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (!filter) datas.push(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (!filterDgn) dgnDatas.push(dgnData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (!filterMain) mainDatas.push(mainData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (datas.length > 0 || dgnDatas.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (datas.length > 0 || dgnDatas.length > 0 || mainDatas.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     const updateData = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (datas.length > 0) updateData.stage = datas; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (dgnDatas.length > 0) updateData.dgn = dgnDatas; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (mainDatas.length > 0) updateData.main = mainDatas; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     postData(window.location.href + '/update', {bills: updateData}, function (data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         const nodes = stageTree.loadPostStageData(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         stageTreeSpreadObj.refreshTreeNodes(slSpread.getActiveSheet(), nodes.concat(filterNodes)); 
			 |