|  | @@ -476,8 +476,7 @@ const rptCustomObj = (function () {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    const initTenderTreeForCross = function (tenders, category, rstItems) {
 | 
	
		
			
				|  |  | -        //用户跨标段设置电子签名用
 | 
	
		
			
				|  |  | +    const _createTenderTreeForCross = function (tenders, category, rstItems) {
 | 
	
		
			
				|  |  |          if (rstItems instanceof Array && rstItems.length === 0) {
 | 
	
		
			
				|  |  |              //1. 先确定category方式(‘年份’、‘姓名’、‘类型’)及顺序
 | 
	
		
			
				|  |  |              let ctArr = [];
 | 
	
	
		
			
				|  | @@ -499,12 +498,14 @@ const rptCustomObj = (function () {
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      for (let idx = 0; idx < ctArr[startIdx].value.length; idx++) {
 | 
	
		
			
				|  |  |                          item.name = ctArr[startIdx].value[idx].value;
 | 
	
		
			
				|  |  | -                        item.id = ctArr[startIdx].value[idx].id;
 | 
	
		
			
				|  |  | -                        item.cid = ctArr[startIdx].value[idx].cid;
 | 
	
		
			
				|  |  | -                        item.pid = ctArr[startIdx].value[idx].pid;
 | 
	
		
			
				|  |  | +                        item.id = ctArr[startIdx].id; //这个相当于类型id,如68:年份 69:类型,105:姓名
 | 
	
		
			
				|  |  | +                        item.value_id = ctArr[startIdx].value[idx].id; //每个大类下又有小类,如:2018/2019, 土建/房建, 具体用户姓名...
 | 
	
		
			
				|  |  | +                        item.cid = ctArr[startIdx].value[idx].cid; //这个值 = item.id
 | 
	
		
			
				|  |  | +                        item.pid = ctArr[startIdx].value[idx].pid; //project id?
 | 
	
		
			
				|  |  |                          item.tenderId = -1;
 | 
	
		
			
				|  |  |                          item.selected = false;
 | 
	
		
			
				|  |  |                          item.isParent = true;
 | 
	
		
			
				|  |  | +                        item.last_stage = -1;
 | 
	
		
			
				|  |  |                          item.items = [];
 | 
	
		
			
				|  |  |                          _buildDeftNodes(startIdx + 1, item);
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -514,15 +515,72 @@ const rptCustomObj = (function () {
 | 
	
		
			
				|  |  |              //2. 创建基本结构
 | 
	
		
			
				|  |  |              _buildDeftNodes(0, rstItems);
 | 
	
		
			
				|  |  |              //3. 挂上标段
 | 
	
		
			
				|  |  | -            for (let tender of tenders) {
 | 
	
		
			
				|  |  | -                let minAmt = Math.min(tender.category.length, ctArr.length);
 | 
	
		
			
				|  |  | -                for (let idx = 0; idx < minAmt; idx++) {
 | 
	
		
			
				|  |  | -                    //
 | 
	
		
			
				|  |  | +            const _putupTheTender = function (tender) {
 | 
	
		
			
				|  |  | +                const _findType = function (parentItem) {
 | 
	
		
			
				|  |  | +                    for (let cat of tender.category) {
 | 
	
		
			
				|  |  | +                        if (cat.cid === parentItem.cid && cat.value === parentItem.value_id) {
 | 
	
		
			
				|  |  | +                            if (parentItem.items.length === 0) {
 | 
	
		
			
				|  |  | +                                // 到底了,挂上
 | 
	
		
			
				|  |  | +                                let lastStage = -1;
 | 
	
		
			
				|  |  | +                                if (tender.lastStage) {
 | 
	
		
			
				|  |  | +                                    lastStage = tender.lastStage.times;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                let item = {
 | 
	
		
			
				|  |  | +                                    name: tender.name,
 | 
	
		
			
				|  |  | +                                    id  : -1,
 | 
	
		
			
				|  |  | +                                    value_id: cat.value,
 | 
	
		
			
				|  |  | +                                    cid : cat.cid,
 | 
	
		
			
				|  |  | +                                    pid : -1,
 | 
	
		
			
				|  |  | +                                    tenderId: tender.id,
 | 
	
		
			
				|  |  | +                                    selected : false,
 | 
	
		
			
				|  |  | +                                    isParent: true,
 | 
	
		
			
				|  |  | +                                    last_stage: lastStage,
 | 
	
		
			
				|  |  | +                                    items : [],
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                parentItem.items.push(item);
 | 
	
		
			
				|  |  | +                            } else {
 | 
	
		
			
				|  |  | +                                for (let nodeItem of parentItem.items) {
 | 
	
		
			
				|  |  | +                                    _findType(tender, nodeItem);
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                };
 | 
	
		
			
				|  |  | +                for (let nodeItem of rstItems) {
 | 
	
		
			
				|  |  | +                    _findType(nodeItem);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +            for (let tender of tenders) {
 | 
	
		
			
				|  |  | +                _putupTheTender(tender);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    const initTenderTreeForCross = function (tenders, category) {
 | 
	
		
			
				|  |  | +        //用户跨标段设置电子签名用
 | 
	
		
			
				|  |  | +        let rstItems = [];
 | 
	
		
			
				|  |  | +        _createTenderTreeForCross(tenders, category, rstItems);
 | 
	
		
			
				|  |  | +        _buildTenderRow('batch_projects_individual', rstItems);
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const _buildTenderRow = function(tbDomId, topTreeNodes) {
 | 
	
		
			
				|  |  | +        let tbDom = $("#" + tbDomId);
 | 
	
		
			
				|  |  | +        tbDom.empty();
 | 
	
		
			
				|  |  | +        tbDom.append('<tr><th>名称</th><th>计量期</th><th>签名</th><th>选择</th></tr>');
 | 
	
		
			
				|  |  | +        let _pushRptLine = function (nodeItem, level) {
 | 
	
		
			
				|  |  | +            if (nodeItem.isParent) {
 | 
	
		
			
				|  |  | +                tbDom.append('<tr><td class="in-'+ (level + 1) + '"><i class="fa fa-folder-o"></i> ' + nodeItem.name + '</td><td></td><td></td><td></td></tr>')
 | 
	
		
			
				|  |  | +                //<td class="in-1"><i class="fa fa-folder-o"></i> 2019</td>
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                //
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +        for (const topItem of topTreeNodes) {
 | 
	
		
			
				|  |  | +            _pushRptLine(topItem, 0);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      const initTenderTree = function (tenders, category) {
 | 
	
		
			
				|  |  |          const gsSpread = SpreadJsObj.createNewSpread($('#gather-source-spread')[0]);
 | 
	
		
			
				|  |  |          gsObj.gsSheet = gsSpread.getActiveSheet();
 | 
	
	
		
			
				|  | @@ -638,6 +696,7 @@ const rptCustomObj = (function () {
 | 
	
		
			
				|  |  |          init,
 | 
	
		
			
				|  |  |          resetAuditSelect, resetGatherSelect, resetStageSelect,
 | 
	
		
			
				|  |  |          initTenderTree,
 | 
	
		
			
				|  |  | +        initTenderTreeForCross,
 | 
	
		
			
				|  |  |          getCustomSelect,
 | 
	
		
			
				|  |  |          showMaterialSelect, changeMaterial,
 | 
	
		
			
				|  |  |      };
 |