compare.min.js 5.7 KB

1
  1. "use strict";$(document).ready(function(){const e=GC.Spread.Sheets;const t=new class{constructor(t){this.spread=new e.Workbook(t,{sheetCount:1}),this.spread.options.tabStripVisible=!1,this.spread.options.scrollbarMaxAlign=!0,this.spread.options.cutCopyIndicatorVisible=!1,this.spread.options.allowCopyPasteExcelStyle=!1,this.spread.options.allowUserDragDrop=!1,this.sheet=this.spread.getActiveSheet(),this.borderLine=new e.LineBorder("black",e.LineStyle.thin),this.paperSize=new e.Print.PaperSize(e.Print.PaperKind.a4),this.initCompareHeader([])}initCompareHeader(t){this.tenders=t;const s={},n=[],i=this.tenders.length>0?this.tenders.length+1:0;SpreadJsObj.beginMassOperationSheet(this.sheet);const a=this.sheet.getSpans();for(const e of a)this.sheet.removeSpan(e.row,e.col);this.sheet.setColumnCount(6+i),this.sheet.setRowCount(2),this.sheet.frozenRowCount(2);const o=e.HorizontalAlign.center,r=e.VerticalAlign.center;if(n.push("code"),s.code=0,this.sheet.getCell(0,s.code).text("指标编号").hAlign(o).vAlign(r),this.sheet.addSpan(0,s.code,2,1),this.sheet.setColumnWidth(s.code,80),n.push("name"),s.name=1,this.sheet.getCell(0,s.name).text("项目或费用名称").hAlign(o).vAlign(r),this.sheet.addSpan(0,s.name,2,1),this.sheet.setColumnWidth(s.name,220),n.push("unit1"),s.unit1=2,n.push("unit2"),s.unit2=3,this.sheet.getCell(0,s.unit1).text("指标单位").hAlign(o).vAlign(r),this.sheet.addSpan(0,s.unit1,2,2),this.sheet.setColumnWidth(s.unit1,65),this.sheet.setColumnWidth(s.unit2,65),this.tenders.length>0){this.sheet.getCell(0,s.unit2+1).text("经济指标").hAlign(o).vAlign(r),this.sheet.addSpan(0,s.unit2+1,1,this.tenders.length);for(let e=0,t=this.tenders.length;e<t;e++)n.push("lib_"+this.tenders[e].lib_id),s["lib_"+this.tenders[e].lib_id]=4+e,this.sheet.getCell(1,s["lib_"+this.tenders[e].lib_id]).text(this.tenders[e].filename).hAlign(o).vAlign(r),this.sheet.setColumnWidth(s["lib_"+this.tenders[e].lib_id],100);n.push("averageIndex"),s.averageIndex=4+this.tenders.length,this.sheet.getCell(0,s.averageIndex).text("平均指标").hAlign(o).vAlign(r),this.sheet.addSpan(0,s.averageIndex,2,1),this.sheet.setColumnWidth(s.averageIndex,100)}n.push("rule"),s.rule=4+i,this.sheet.getCell(0,s.rule).text("计算规则").hAlign(o).vAlign(r),this.sheet.addSpan(0,s.rule,2,1),this.sheet.setColumnWidth(s.rule,300),n.push("memo"),s.memo=5+i,this.sheet.getCell(0,s.memo).text("备注").hAlign(o).vAlign(r),this.sheet.addSpan(0,s.memo,2,1),this.sheet.setColumnWidth(s.memo,100),this.colsName=n,this.cols=s,SpreadJsObj.endMassOperationSheet(this.sheet)}sortData(e){function t(e,t){for(const s of e)if(s.lib_id===t)return s.data;return null}function s(e,t,s){for(const n of e){const e="bills_id"+s;if(n.code===t.code&&n.name===t.name&&n[e]===t[e])return n}return null}function n(e,t){for(const s of e)if(s.code===t.code&&s.name===t.name)return s;return null}const i=[];for(const a of this.tenders){const o=t(e,a.lib_id);for(const e of o){let t=s(i,e,a.lib_id);t||(t={code:e.code,name:e.name,indexes:[]},i.push(t)),t["bills_id"+a.lib_id]=e.bills_id;for(const s of e.children){let e=n(t.indexes,s);e||(e={code:s.code,name:s.name,unit1:s.unit1,unit2:s.unit2,sumValue:0,rule:s.rule,memo:s.memo},t.indexes.push(e)),e["lib_"+a.lib_id]=s.value,e.sumValue+=s.value}}}return i}loadData(s){const n=this,i=e.VerticalAlign.center,a=t.tenders.length>0?6+t.tenders.length+1:6;function o(e,t){for(const s of n.colsName)if("averageIndex"===s){const a=Number((e.sumValue/n.tenders.length).toFixed(2));n.sheet.getCell(t,n.cols[s]).value(a).wordWrap(!0).vAlign(i)}else e[s]&&n.sheet.getCell(t,n.cols[s]).value(e[s]).wordWrap(!0).vAlign(i);n.sheet.autoFitRow(t)}this.searchData=s,this.showData=this.sortData(this.searchData);let r=2;s.sort(function(e,t){return e.code>t.code?1:e.code<t.code?-1:0}),SpreadJsObj.massOperationSheet(this.sheet,function(){n.sheet.setRowCount(2);for(const s of n.showData){n.sheet.addRows(r,1),e=s,t=r,n.sheet.getCell(t,n.cols.code).text(e.code).wordWrap(!0).vAlign(i),n.sheet.getCell(t,n.cols.name).text(e.name).wordWrap(!0).vAlign(i),n.sheet.getRange(t,0,1,a).backColor("#dae5ee"),n.sheet.autoFitRow(t),r+=1;for(const e of s.indexes)n.sheet.addRows(r,1),o(e,r),r+=1}var e,t})}searchIndex(e){const t=this,s={tenders:this.tenders,keyword:e};postData("/compare/search",s,function(e){t.loadData(e)})}searchClass(e){const t=this;e.tenders=this.tenders,postData("/compare/searchClass",e,function(e){t.loadData(e)})}}($("#compare-spread")[0]);$("#generate-ok").click(function(){const e=$("tr[class!=table-secondary][lib_id]"),s=[];for(let t=0,n=e.length;t<n;t++)s.push({lib_id:parseInt($(e[t]).attr("lib_id")),filename:$("td:first",$(e[t])).text()});$('a[href="#generate-data"]').text("造价文件: "+s.length),t.initCompareHeader(s),$("#generate-data").modal("hide")}),$("#search").click(function(){t.searchIndex($("#keyword").val()),$(".btn-secondary").removeClass("btn-secondary").addClass("btn-primary")}),$("#index-zh").click(function(){$(".btn-secondary").removeClass("btn-secondary").addClass("btn-primary"),$(this).removeClass("btn-primary").addClass("btn-secondary"),$("#index-dy").text("单元指标"),t.searchClass(JSON.parse($(this).attr("data")))}),$("#index-fx").click(function(){$(".btn-secondary").removeClass("btn-secondary").addClass("btn-primary"),$(this).removeClass("btn-primary").addClass("btn-secondary"),$("#index-dy").text("单元指标"),t.searchClass(JSON.parse($(this).attr("data")))}),$("a[data]").click(function(){$(".btn-secondary").removeClass("btn-secondary").addClass("btn-primary"),$("#index-dy").removeClass("btn-primary").addClass("btn-secondary").text($(this).text()),t.searchClass(JSON.parse($(this).attr("data")))}),$("#export-excel").click(function(){const e=new GC.Spread.Excel.IO,s="指标对比."+(new Date).Format("yyyy.MM.dd.hh.mm.ss")+".xlsx",n=JSON.stringify(t.spread.toJSON());e.save(n,function(e){saveAs(e,s)})})});