std_bills_lib.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
  1. /**
  2. * Standard Bills Lib
  3. * Created by Mai on 2017/5/16.
  4. */
  5. /*
  6. * 废弃的
  7. * */
  8. var billsLibObj = {
  9. doAfterLoadBills: null, //外部设置拉取清单数据后的回调
  10. stdBillsTree: null,
  11. stdBillsSpread: null,
  12. stdBillsJobSpread: null,
  13. stdBillsFeatureSpread: null,
  14. refreshSettingForHint: function () {
  15. TREE_SHEET_HELPER.initSetting($('#stdBillsSpread')[0], billsLibObj.stdBillsTreeSetting);
  16. },
  17. checkBillsSpread: function () {
  18. if (!this.stdBillsSpread) {
  19. this.stdBillsSpread = SheetDataHelper.createNewSpread($('#stdBillsSpread')[0]);
  20. sheetCommonObj.spreadDefaultStyle(this.stdBillsSpread);
  21. this.stdBillsSpread.getSheet(0).name('stdBillsLib_bills');
  22. // 刷新setting中记录的spread的位置
  23. this.refreshSettingForHint();
  24. }
  25. },
  26. refreshBillsSpread: function () {
  27. if (this.stdBillsSpread) {
  28. this.stdBillsSpread.refresh();
  29. }
  30. },
  31. checkBillsRelaSpread: function () {
  32. if (!this.stdBillsJobSpread) {
  33. this.stdBillsJobSpread = SheetDataHelper.createNewSpread($('#stdBillsJobs')[0]);
  34. sheetCommonObj.spreadDefaultStyle(this.stdBillsJobSpread);
  35. }
  36. if (!this.stdBillsFeatureSpread) {
  37. this.stdBillsFeatureSpread = SheetDataHelper.createNewSpread($('#stdBillsFeatures')[0]);
  38. sheetCommonObj.spreadDefaultStyle(this.stdBillsFeatureSpread);
  39. }
  40. },
  41. refreshBillsRelaSpread: function () {
  42. if (this.stdBillsJobSpread) {
  43. this.stdBillsJobSpread.refresh();
  44. }
  45. if (this.stdBillsFeatureSpread) {
  46. this.stdBillsFeatureSpread.refresh();
  47. }
  48. },
  49. clearHighLight: function (spread) {
  50. if (spread) {
  51. let sheet = spread.getActiveSheet();
  52. sheet.suspendPaint();
  53. let orgColor = optionsOprObj.getOption('COLOROPTS', 'DEFAULT').backColor;
  54. sheet.getRange(0, -1, sheet.getRowCount(), -1, GC.Spread.Sheets.SheetArea.viewport).backColor(orgColor);
  55. sheet.resumePaint();
  56. }
  57. },
  58. setTagForHint: function (nodes) {
  59. let sheet = this.stdBillsSpread.getActiveSheet();
  60. sheet.suspendPaint();
  61. sheet.suspendEvent();
  62. for(let node of nodes){
  63. sheet.setTag(node.serialNo(), 2, node.data.ruleText ? node.data.ruleText : '');
  64. }
  65. sheet.resumePaint();
  66. sheet.resumeEvent();
  67. },
  68. loadStdBillsLib: function () {
  69. let i, select = $('#stdBillsLibSelect');
  70. select.empty();
  71. let bills_lib = projectInfoObj.projectInfo.engineeringInfo.bill_lib;
  72. let selectedBillsLib = sessionStorage.getItem('stdBillsLib');
  73. bills_lib.forEach(function (data) {
  74. var option = $('<option>').val(data.id).text(data.name);
  75. if(selectedBillsLib && data.id == selectedBillsLib){
  76. option.attr('selected', 'selected');
  77. }
  78. select.append(option);
  79. });
  80. if (select.children.length !== 0) {
  81. billsLibObj.loadStdBills(select.val());
  82. }
  83. },
  84. sortJobsAndFeatures: function (arr) {
  85. arr.sort(function (a, b) {
  86. let rst = 0;
  87. if(a.serialNo > b.serialNo) rst = 1;
  88. else if(a.serialNo < b.serialNo) rst = -1;
  89. return rst;
  90. });
  91. },
  92. findData: function (value, field, Array) {
  93. var i = 0;
  94. for (i = 0; i < Array.length; i++) {
  95. if (value[field] == Array[i][field]) {
  96. return Array[i];
  97. }
  98. }
  99. return null;
  100. },
  101. getBillsJobs: function (stdBillsJobData, node) {
  102. var jobs = [], i, jobData = null;
  103. if (stdBillsJobData && node && node.data.jobs) {
  104. for (i = 0; i < node.data.jobs.length; i++) {
  105. jobData = this.findData(node.data.jobs[i], 'id', stdBillsJobData);
  106. if (jobData) {
  107. jobData.serialNo = node.data.jobs[i].serialNo;
  108. jobs.push(jobData);
  109. }
  110. }
  111. }
  112. this.sortJobsAndFeatures(jobs);
  113. return jobs;
  114. },
  115. getBillsFeatures: function (stdBillsFeatureData, node) {
  116. var features = [], i, featureData = null;
  117. if (stdBillsFeatureData && node && node.data.items) {
  118. for (i = 0; i < node.data.items.length; i++) {
  119. featureData = this.findData(node.data.items[i], 'id', stdBillsFeatureData);
  120. if (featureData) {
  121. featureData.serialNo = node.data.items[i].serialNo;
  122. features.push(featureData);
  123. }
  124. }
  125. }
  126. this.sortJobsAndFeatures(features);
  127. return features;
  128. },
  129. insertBills: function (stdBillsJobData, stdBillsFeatureData, node) {
  130. if(projectInfoObj.projectInfo.property.lockBills == true && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
  131. return false;
  132. }
  133. $.bootstrapLoading.start();
  134. //设置清单备注
  135. if(node.parent && node.parent.data.recharge){
  136. node.data.comments = node.parent.data.recharge;
  137. }
  138. //特征及内容转化
  139. pageCCOprObj.setItemContentNode(node, this.getBillsJobs(stdBillsJobData, node), this.getBillsFeatures(stdBillsFeatureData, node), node.data.name);
  140. if (/\//.test(node.data.unit)) {
  141. let existB = projectObj.project.Bills.sameStdCodeBillsData(node.data.code);
  142. if (existB) {
  143. let std = JSON.parse(JSON.stringify(node.data));
  144. std.unit = existB.unit;
  145. let canAdd = ProjectController.addBills(projectObj.project, projectObj.mainController, std);
  146. if(canAdd === false && $.bootstrapLoading.isLoading()){
  147. $.bootstrapLoading.end();
  148. }
  149. } else {
  150. ConfirmModal.stdBillsUnit.check(node.data, function (std) {
  151. let canAdd = ProjectController.addBills(projectObj.project, projectObj.mainController, std);
  152. if(canAdd === false && $.bootstrapLoading.isLoading()){
  153. $.bootstrapLoading.end();
  154. }
  155. }, function () {
  156. if($.bootstrapLoading.isLoading()){
  157. $.bootstrapLoading.end();
  158. }
  159. });
  160. }
  161. } else {
  162. let canAdd = ProjectController.addBills(projectObj.project, projectObj.mainController, node.data);
  163. if(canAdd === false && $.bootstrapLoading.isLoading()){
  164. $.bootstrapLoading.end();
  165. }
  166. }
  167. return true;
  168. },
  169. showBillsRela: function (node) {
  170. if (node && node.children.length === 0) {
  171. billsLibObj.showJobsAndFeatures(node);
  172. } else {
  173. billsLibObj.showBillsRemark(node);
  174. }
  175. },
  176. showJobs:function (jobs) {
  177. SheetDataHelper.loadSheetHeader(billsLibObj.jobsSetting, billsLibObj.stdBillsJobSpread.getActiveSheet());
  178. SheetDataHelper.loadSheetData(billsLibObj.jobsSetting, billsLibObj.stdBillsJobSpread.getActiveSheet(), jobs);
  179. },
  180. showFeatures: function (features) {
  181. SheetDataHelper.loadSheetHeader(billsLibObj.featuresSetting, billsLibObj.stdBillsFeatureSpread.getActiveSheet());
  182. SheetDataHelper.loadSheetData(billsLibObj.featuresSetting, billsLibObj.stdBillsFeatureSpread.getActiveSheet(), features);
  183. },
  184. showJobsAndFeatures: function (node) {
  185. $('#stdBillsJobTab').show();
  186. $('#stdBillsRemarkTab').hide();
  187. billsLibObj.refreshBillsRelaSpread();
  188. billsLibObj.checkBillsRelaSpread();
  189. this.showJobs(billsLibObj.getBillsJobs(billsLibObj.stdBillsJobData, node));
  190. this.showFeatures(billsLibObj.getBillsFeatures(billsLibObj.stdBillsFeatureData, node));
  191. },
  192. showBillsRemark: function (node) {
  193. $('#stdBillsJobTab').hide();
  194. $('#stdBillsRemarkTab').show();
  195. $('#stdBillsRemark').text(node && node.data.recharge ? node.data.recharge : '');
  196. },
  197. loadStdBills: function (stdBillsLibID) {
  198. var that = this;
  199. var stdBills;
  200. if(that.stdBillsTree){
  201. that.stdBillsTree = null;
  202. }
  203. that.stdBillsTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true});
  204. var stdBillsTreeController = TREE_SHEET_CONTROLLER.createNew(that.stdBillsTree, billsLibObj.stdBillsSpread.getActiveSheet(), billsLibObj.stdBillsTreeSetting);
  205. $.bootstrapLoading.start();
  206. CommonAjax.post('/stdBillsEditor/getJobContent', {userId: userID, billsLibId: stdBillsLibID}, function (datas) {
  207. that.stdBillsJobData = datas;
  208. }, function () {
  209. that.stdBillsJobData = [];
  210. });
  211. CommonAjax.post('/stdBillsEditor/getItemCharacter', {userId: userID, billsLibId: stdBillsLibID}, function (datas) {
  212. that.stdBillsFeatureData = datas;
  213. }, function () {
  214. that.stdBillsFeatureData = [];
  215. });
  216. CommonAjax.post('/stdBillsEditor/getBills', {userId: userID, billsLibId: stdBillsLibID}, function (datas) {
  217. stdBills = datas;
  218. that.stdBillsTree.loadDatas(stdBills);
  219. //读取展开收起状态
  220. let currentExpState = sessionStorage.getItem('stdBillsLibExpState');
  221. if(currentExpState){
  222. that.stdBillsTree.setExpandedByState(that.stdBillsTree.items, currentExpState);
  223. }
  224. //非叶子节点默认收起
  225. else{
  226. that.stdBillsTree.setRootExpanded(that.stdBillsTree.roots, false);
  227. }
  228. stdBillsTreeController.showTreeData();
  229. //billsLibObj.setTagForHint(that.stdBillsTree.items);
  230. that.showBillsRela(that.stdBillsTree.firstNode());
  231. stdBillsTreeController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, that.showBillsRela);
  232. that.stdBillsSpread.unbind(GC.Spread.Sheets.Events.CellDoubleClick);
  233. that.stdBillsSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, function (sender, args) {
  234. let selectNode = that.stdBillsTree.items[args.row];
  235. let name = selectNode.data.name;
  236. if (that.stdBillsTree.items[args.row].children.length === 0) {
  237. billsLibObj.insertBills(that.stdBillsJobData, that.stdBillsFeatureData, selectNode);
  238. }
  239. else{
  240. let me = billsLibObj;
  241. let node = that.stdBillsTree.items[args.row];
  242. if (!node || node.children.length === 0)
  243. return;
  244. node.setExpanded(!node.expanded);
  245. //设置展开收起状态
  246. sessionStorage.setItem('stdBillsLibExpState', that.stdBillsTree.getExpState(that.stdBillsTree.items));
  247. TREE_SHEET_HELPER.massOperationSheet(args.sheet, function () {
  248. let iCount = node.posterityCount(), i, child;
  249. for (i = 0; i < iCount; i++) {
  250. child = that.stdBillsTree.items[args.row + i + 1];
  251. args.sheet.setRowVisible(args.row + i + 1, child.visible, args.sheetArea);
  252. }
  253. args.sheet.invalidateLayout();
  254. });
  255. args.sheet.repaint();
  256. }
  257. });
  258. if(that.doAfterLoadBills){
  259. that.doAfterLoadBills();
  260. }
  261. $.bootstrapLoading.end();
  262. }, function () {
  263. that.stdBillsSpread.unbind(GC.Spread.Sheets.Events.CellDoubleClick);
  264. $.bootstrapLoading.end();
  265. });
  266. $('#stdBillsSearch>div>button').click(function () {
  267. billsLibObj.clearHighLight(billsLibObj.stdBillsSpread);
  268. var keyword = $('#stdBillsSearch>input').val();
  269. if (!keyword || keyword === '') {
  270. $('#stdBillsSearchResult').hide();
  271. return;
  272. }
  273. var result = that.stdBillsTree.items.filter(function (item) {
  274. var codeIs = item.data.code ? item.data.code.indexOf(keyword) !== -1 : false;
  275. var nameIs = item.data.name ? item.data.name.indexOf(keyword) !== -1 : false;
  276. return codeIs || nameIs;
  277. });
  278. result.sort(function (x, y) {
  279. return x.serialNo() - y.serialNo();
  280. });
  281. if (result.length !== 0) {
  282. //展开搜索出来的节点
  283. billsLibObj.expandSearchNodes(result);
  284. //设置记住展开
  285. sessionStorage.setItem('stdBillsLibExpState', that.stdBillsTree.getExpState(that.stdBillsTree.items));
  286. TREE_SHEET_HELPER.massOperationSheet(billsLibObj.stdBillsSpread.getActiveSheet(), function () {
  287. var sel = billsLibObj.stdBillsSpread.getActiveSheet().getSelections();
  288. stdBillsTreeController.setTreeSelected(result[0]);
  289. billsLibObj.stdBillsSpread.getActiveSheet().setSelection(result[0].serialNo(), sel[0].col, 1, 1);
  290. for (let node of result) {
  291. billsLibObj.stdBillsSpread.getActiveSheet().getRange(node.serialNo(), -1, 1, -1).backColor('lemonChiffon');
  292. }
  293. });
  294. billsLibObj.stdBillsSpread.getActiveSheet().showRow(result[0].serialNo(), GC.Spread.Sheets.VerticalPosition.bottom);
  295. $('#nextStdBills').show();
  296. $('#nextStdBills').unbind('click');
  297. $('#nextStdBills').bind('click', function () {
  298. var cur = that.stdBillsTree.selected, resultIndex = result.indexOf(cur), sel = billsLibObj.stdBillsSpread.getActiveSheet().getSelections();
  299. if (resultIndex === result.length - 1) {
  300. stdBillsTreeController.setTreeSelected(result[0]);
  301. billsLibObj.stdBillsSpread.getActiveSheet().setSelection(result[0].serialNo(), sel[0].col, 1, 1);
  302. billsLibObj.stdBillsSpread.getActiveSheet().showRow(result[0].serialNo(), GC.Spread.Sheets.VerticalPosition.top);
  303. } else {
  304. stdBillsTreeController.setTreeSelected(result[resultIndex + 1]);
  305. billsLibObj.stdBillsSpread.getActiveSheet().setSelection(result[resultIndex + 1].serialNo(), sel[0].col, 1, 1);
  306. billsLibObj.stdBillsSpread.getActiveSheet().showRow(result[resultIndex + 1].serialNo(), GC.Spread.Sheets.VerticalPosition.bottom);
  307. }
  308. });
  309. } else {
  310. billsLibObj.clearHighLight(billsLibObj.stdBillsSpread);
  311. $('#nextStdBills').hide();
  312. }
  313. $('#stdBillsSearchResultCount').text('搜索结果:' + result.length);
  314. $('#stdBillsSearchResult').show();
  315. });
  316. },
  317. expandSearchNodes: function(nodes){
  318. let that = this;
  319. TREE_SHEET_HELPER.massOperationSheet(billsLibObj.stdBillsSpread.getActiveSheet(), function () {
  320. function expParentNode(node){
  321. if(node.parent){
  322. expParentNode(node.parent);
  323. if(!node.parent.expanded){
  324. node.parent.setExpanded(true);
  325. }
  326. }
  327. }
  328. for(let node of nodes){
  329. expParentNode(node);
  330. }
  331. TREE_SHEET_HELPER.refreshTreeNodeData(that.stdBillsTreeSetting, that.stdBillsSpread.getActiveSheet(), that.stdBillsTree.roots, true);
  332. TREE_SHEET_HELPER.refreshNodesVisible(that.stdBillsTree.roots, that.stdBillsSpread.getActiveSheet(), true);
  333. });
  334. },
  335. locateAtBills: function (code) {
  336. let nineCode = code.substring(0, 9);
  337. let items = this.stdBillsTree.items;
  338. let locateBills = _.find(items, function(item){
  339. return item.data.code === nineCode;
  340. });
  341. if(locateBills){
  342. this.expandSearchNodes([locateBills]);
  343. sessionStorage.setItem('stdBillsLibExpState', this.stdBillsTree.getExpState(this.stdBillsTree.items));
  344. }
  345. let stdBillsSheet = this.stdBillsSpread.getActiveSheet();
  346. let locateRow = locateBills ? locateBills.serialNo() : 0;
  347. stdBillsSheet.setActiveCell(locateRow, 0);
  348. this.showBillsRela(locateBills);
  349. stdBillsSheet.showRow(locateRow, GC.Spread.Sheets.VerticalPosition.center);
  350. },
  351. stdBillsTreeSetting: {
  352. "emptyRowHeader": true,
  353. "rowHeaderWidth": 15,
  354. "treeCol": 0,
  355. "emptyRows":0,
  356. "headRows":1,
  357. "headRowHeight":[
  358. 40
  359. ],
  360. "defaultRowHeight": 21,
  361. "cols":[{
  362. "width":140,
  363. "readOnly": true,
  364. "head":{
  365. "titleNames":["项目编码"],
  366. "spanCols":[1],
  367. "spanRows":[1],
  368. "vAlign":[1],
  369. "hAlign":[1],
  370. "font":["Arial"]
  371. },
  372. "data":{
  373. "field":"code",
  374. "vAlign":1,
  375. "hAlign":0,
  376. "font":"Arial"
  377. }
  378. }, {
  379. "width":190,
  380. "readOnly": true,
  381. "head":{
  382. "titleNames":["项目名称"],
  383. "spanCols":[1],
  384. "spanRows":[1],
  385. "vAlign":[1],
  386. "hAlign":[1],
  387. "font":["Arial"]
  388. },
  389. "data":{
  390. "field":"name",
  391. "vAlign":1,
  392. "hAlign":0,
  393. "font":"Arial"
  394. }
  395. }, {
  396. "width":45,
  397. "readOnly": true,
  398. "showHint": true,
  399. "head":{
  400. "titleNames":["计量单位"],
  401. "spanCols":[1],
  402. "spanRows":[1],
  403. "vAlign":[1],
  404. "hAlign":[1],
  405. "font":["Arial"],
  406. "wordWrap": true
  407. },
  408. "data":{
  409. "field":"unit",
  410. "vAlign":1,
  411. "hAlign":1,
  412. "font":"Arial"
  413. }
  414. }/*, {
  415. "width":100,
  416. "readOnly": true,
  417. "showHint": true,
  418. "head":{
  419. "titleNames":["工程量计算规则"],
  420. "spanCols":[1],
  421. "spanRows":[1],
  422. "vAlign":[1],
  423. "hAlign":[1],
  424. "font":["Arial"]
  425. },
  426. "data":{
  427. "field":"ruleText",
  428. "vAlign":1,
  429. "hAlign":0,
  430. "font":"Arial"
  431. }
  432. }*/]
  433. },
  434. jobsSetting: {
  435. "emptyRows":0,
  436. "headRows":1,
  437. "rowHeaderWidth": 15,
  438. "headRowHeight":[25],
  439. "defaultRowHeight": 21,
  440. "cols":[{
  441. "width":160,
  442. "readOnly":true,
  443. "head":{
  444. "titleNames":["工作内容"],
  445. "spanCols":[1],
  446. "spanRows":[1],
  447. "vAlign":[1],
  448. "hAlign":[1],
  449. "font":["Arial"]
  450. },
  451. "data":{
  452. "field":"content",
  453. "vAlign":0,
  454. "hAlign":3,
  455. "font":"Arial"
  456. }
  457. }]
  458. },
  459. featuresSetting: {
  460. "emptyRows":0,
  461. "headRows":1,
  462. "rowHeaderWidth": 15,
  463. "headRowHeight":[25],
  464. "defaultRowHeight": 21,
  465. "cols":[{
  466. "width":160,
  467. "readOnly":true,
  468. "head":{
  469. "titleNames":["项目特征"],
  470. "spanCols":[1],
  471. "spanRows":[1],
  472. "vAlign":[1],
  473. "hAlign":[1],
  474. "font":["Arial"]
  475. },
  476. "data":{
  477. "field":"content",
  478. "vAlign":0,
  479. "hAlign":3,
  480. "font":"Arial"
  481. }
  482. }]
  483. }
  484. };
  485. function addEventOnResize(fn){
  486. let originFn = window.onresize;
  487. window.onresize =function () {
  488. originFn && originFn();
  489. fn();
  490. }
  491. }
  492. addEventOnResize(billsLibObj.refreshSettingForHint);
  493. //赋初始高度
  494. if($('#stdBillsSpread').height() === 0 || $('#qd').find('.bottom-content').height() === 0){
  495. $('#stdBillsSpread').height($(window).height()-$(".header").height()-$(".toolsbar").height()-$(".tools-bar-height-q").height()-312);
  496. $('#qd').find('.bottom-content').find('.p-0').height(270);
  497. }
  498. $('#stdBillsTab').bind('click', function () {
  499. if(!projectReadOnly){
  500. refreshSubSpread();//subSpread、jobSpread、itemSpread显示问题
  501. var select = $('#stdBillsLibSelect');
  502. billsLibObj.refreshBillsSpread();
  503. billsLibObj.refreshBillsRelaSpread();
  504. billsLibObj.checkBillsSpread();
  505. if (select[0].options.length === 0) {
  506. billsLibObj.loadStdBillsLib();
  507. };
  508. }
  509. });
  510. $('#stdBillsLibSelect').change(function () {
  511. $('#stdBillsSearchResult').hide();
  512. //$(".main-data-side-q").height($(window).height() - $(".header").height() - $(".toolsbar").height() - $(".tools-bar-height-q").height() - 202);
  513. billsLibObj.clearHighLight(billsLibObj.stdBillsSpread);
  514. var select = $(this);
  515. if (this.children.length !== 0) {
  516. //设置sessionStorage
  517. let billsLibId = select.val();
  518. sessionStorage.setItem('stdBillsLib', billsLibId);
  519. //清除展开收起状态sessionStorage
  520. sessionStorage.removeItem('stdBillsLibExpState');
  521. billsLibObj.loadStdBills(billsLibId);
  522. }
  523. });
  524. //搜索框回车
  525. $('#stdBillsSearch>input').bind('keypress', function (event) {
  526. if(event.keyCode === 13){
  527. $(this).blur();
  528. $('#stdBillsSearch>div>button').click();
  529. }
  530. });
  531. // 关闭搜索结果
  532. $('#closeSearchStdBills').click(function () {
  533. $('#stdBillsSearchResult').hide();
  534. $(".main-data-side-q").height($(window).height() - $(".header").height() - $(".toolsbar").height() - $(".tools-bar-height-q").height() - 202);
  535. billsLibObj.clearHighLight(billsLibObj.stdBillsSpread);
  536. billsLibObj.refreshBillsSpread();
  537. billsLibObj.refreshBillsRelaSpread();
  538. });