rpt_indexDb.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. /**
  2. * Created by Tony on 2021/11/5.
  3. * 实现本地indexDb的业务操作
  4. */
  5. const indexDbOprObj = {
  6. currentDb: null,
  7. iniDb: function (dbName, version) {
  8. let rst = window.indexedDB.open(dbName, version);
  9. rst.onsuccess = function (event) {
  10. indexDbOprObj.currentDb = event.target.result;;
  11. console.log('数据库打开成功!');
  12. };
  13. rst.onupgradeneeded = function (event) {
  14. let db = event.target.result;
  15. indexDbOprObj.currentDb = db;
  16. console.log('数据库升级及初始化!');
  17. indexDbOprObj._iniTable(db);
  18. }
  19. },
  20. _iniTable: function(db) {
  21. if (db) {
  22. //本地表,主要是用来储存报表结果对象,主要是为PDF多表导出用,当然,其他方式也是可以用的(如打印),看实际需要
  23. if (!db.objectStoreNames.contains('tb_ReportPages')) {
  24. db.createObjectStore('tb_ReportPages', { keyPath: 'id' });
  25. }
  26. if (!db.objectStoreNames.contains('tb_ReportRequests')) {
  27. db.createObjectStore('tb_ReportRequests', { keyPath: 'id' });
  28. }
  29. }
  30. },
  31. batchAdd: function (tbName, datas, cb) {
  32. let db = indexDbOprObj.currentDb;
  33. let ttlAmt = datas.length;
  34. console.log(`已选报表数量:${ttlAmt}`);
  35. let cnt = 0;
  36. let request = db.transaction([tbName], 'readwrite').objectStore(tbName);
  37. request.onsuccess = function (event) {
  38. cnt++;
  39. console.log(`已选加数量:${cnt}`);
  40. if (cnt === ttlAmt && cb) {
  41. cb(datas);
  42. }
  43. };
  44. for (let data of datas) {
  45. request.add(data);
  46. }
  47. },
  48. _addDummy: function() {
  49. let db = indexDbOprObj.currentDb;
  50. // let request = db.transaction(['tb_ReportRequests'], 'readwrite')
  51. db.transaction(['tb_ReportRequests'], 'readwrite')
  52. .objectStore('tb_ReportRequests')
  53. .add({ id: '_2830_1725', name: '多人协同2', pageSize: 'A4', CFG: null, prj_ids: [123,456,789] });
  54. // request.onsuccess = function (event) {
  55. // console.log('数据写入成功');
  56. // };
  57. //
  58. // request.onerror = function (event) {
  59. // console.log('数据写入失败');
  60. // }
  61. db.transaction(['tb_ReportRequests'], 'readwrite')
  62. .objectStore('tb_ReportRequests')
  63. .add({ id: '_2830_1728', name: '多人协同3', pageSize: 'A3', CFG: null, prj_ids: [668] });
  64. },
  65. _updateDummy: function () {
  66. let db = indexDbOprObj.currentDb;
  67. let request = db.transaction(['tb_ReportRequests'], 'readwrite')
  68. .objectStore('tb_ReportRequests')
  69. .put({ id: '_2830_1725', name: '多人协同2', pageSize: 'A4', CFG: 'CFG', prj_ids: [1,2,3] });
  70. request.onsuccess = function (event) {
  71. console.log('数据写入成功');
  72. };
  73. request.onerror = function (event) {
  74. console.log('数据写入失败');
  75. }
  76. },
  77. _getDummy: function () {
  78. let db = indexDbOprObj.currentDb;
  79. let transaction = db.transaction(['tb_ReportRequests']);
  80. let objectStore = transaction.objectStore('tb_ReportRequests');
  81. let request = objectStore.get('_2830_1725');
  82. request.onerror = function(event) {
  83. console.log('事务失败');
  84. };
  85. request.onsuccess = function(event) {
  86. if (request.result) {
  87. console.log('Name: ' + request.result.name);
  88. console.log('PageSize: ' + request.result.pageSize);
  89. console.log('CFG: ' + request.result.CFG);
  90. console.log('ProjectIds: ' + request.result.prj_ids);
  91. } else {
  92. console.log('未获得数据记录');
  93. }
  94. };
  95. },
  96. _getDummyAll: function (idRst, cb) {
  97. let db = indexDbOprObj.currentDb;
  98. let objectStore = db.transaction('tb_ReportRequests').objectStore('tb_ReportRequests');
  99. objectStore.openCursor().onsuccess = function (event) {
  100. let cursor = event.target.result;
  101. if (cursor) {
  102. console.log('Id: ' + cursor.key);
  103. console.log('Name: ' + cursor.value.name);
  104. console.log('PageSize: ' + cursor.value.pageSize);
  105. console.log('gather_select: ' + cursor.value.gather_select);
  106. console.log('stage_select: ' + cursor.value.stage_select);
  107. console.log('CFG: ');
  108. console.log(cursor.value.CFG);
  109. if (idRst) {
  110. idRst.push(cursor.key);
  111. }
  112. cursor.continue();
  113. } else {
  114. console.log('没有更多数据了!');
  115. if (cb) {
  116. cb(idRst);
  117. }
  118. }
  119. };
  120. },
  121. _removeDummy: function () {
  122. let db = indexDbOprObj.currentDb;
  123. let request = db.transaction(['tb_ReportRequests'], 'readwrite')
  124. .objectStore('tb_ReportRequests')
  125. .delete('_2830_1725');
  126. request.onsuccess = function (event) {
  127. console.log('数据删除成功');
  128. };
  129. request.onerror = function (event) {
  130. console.log('数据删除失败');
  131. }
  132. },
  133. _test: function () {
  134. // indexDbOprObj._addDummy();
  135. // indexDbOprObj._getDummy();
  136. let idRst = [];
  137. indexDbOprObj._getDummyAll(idRst, (ids)=>{
  138. console.log(ids);
  139. // indexDbOprObj.removeAll(ids);
  140. });
  141. // indexDbOprObj._updateDummy();
  142. // indexDbOprObj._removeDummy();
  143. },
  144. storeReportRequest: function (stage_id, rptNodes) {
  145. if (rptNodes && rptNodes.length > 0) {
  146. let datas = [];
  147. for (let node of rptNodes) {
  148. let keyStr = `_${stage_id}_${node.refId}`;
  149. const gather_select = customSelects.gather_select.find(function (x) {
  150. return x.id === node.refId;
  151. });
  152. const stage_select = customSelects.stage_select.find(function (x) {
  153. return x.id === node.refId;
  154. });
  155. let data = {id: keyStr, name: node.name, gather_select, stage_select, pageSize: rptControlObj.getCurrentPageSize(), CFG: CUST_CFG};
  156. datas.push(data);
  157. }
  158. indexDbOprObj.batchAdd('tb_ReportRequests', datas, (rstArr)=>{
  159. console.log('batch add succeeded!');
  160. console.log(rstArr);
  161. //其他操作
  162. });
  163. }
  164. },
  165. storeReportPages: function (rptPages, stage_id, rptNode) {
  166. //
  167. },
  168. removeAll: function(idArr) {
  169. if (idArr && idArr.length > 0) {
  170. let db = indexDbOprObj.currentDb;
  171. let request = db.transaction(['tb_ReportRequests'], 'readwrite').objectStore('tb_ReportRequests');
  172. for (let id of idArr) {
  173. request.delete(id);
  174. request.onsuccess = function (event) {
  175. console.log(`数据('${id}')删除成功`);
  176. };
  177. }
  178. }
  179. },
  180. getReportPages: function (rpt_id, stage_id) {
  181. //
  182. }
  183. };