123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- /**
- * Created by Tony on 2021/11/5.
- * 实现本地indexDb的业务操作
- */
- const indexDbOprObj = {
- currentDb: null,
- iniDb: function (dbName, version) {
- let rst = window.indexedDB.open(dbName, version);
- rst.onsuccess = function (event) {
- indexDbOprObj.currentDb = event.target.result;;
- console.log('数据库打开成功!');
- };
- rst.onupgradeneeded = function (event) {
- let db = event.target.result;
- indexDbOprObj.currentDb = db;
- console.log('数据库升级及初始化!');
- indexDbOprObj._iniTable(db);
- }
- },
- _iniTable: function(db) {
- if (db) {
- //本地表,主要是用来储存报表结果对象,主要是为PDF多表导出用,当然,其他方式也是可以用的(如打印),看实际需要
- if (!db.objectStoreNames.contains('tb_ReportPages')) {
- db.createObjectStore('tb_ReportPages', { keyPath: 'id' });
- }
- if (!db.objectStoreNames.contains('tb_ReportRequests')) {
- db.createObjectStore('tb_ReportRequests', { keyPath: 'id' });
- }
- }
- },
- batchAdd: function (tbName, datas, cb) {
- let db = indexDbOprObj.currentDb;
- let ttlAmt = datas.length;
- console.log(`已选报表数量:${ttlAmt}`);
- let cnt = 0;
- let request = db.transaction([tbName], 'readwrite').objectStore(tbName);
- request.onsuccess = function (event) {
- cnt++;
- console.log(`已选加数量:${cnt}`);
- if (cnt === ttlAmt && cb) {
- cb(datas);
- }
- };
- for (let data of datas) {
- request.add(data);
- }
- },
- _addDummy: function() {
- let db = indexDbOprObj.currentDb;
- // let request = db.transaction(['tb_ReportRequests'], 'readwrite')
- db.transaction(['tb_ReportRequests'], 'readwrite')
- .objectStore('tb_ReportRequests')
- .add({ id: '_2830_1725', name: '多人协同2', pageSize: 'A4', CFG: null, prj_ids: [123,456,789] });
- // request.onsuccess = function (event) {
- // console.log('数据写入成功');
- // };
- //
- // request.onerror = function (event) {
- // console.log('数据写入失败');
- // }
- db.transaction(['tb_ReportRequests'], 'readwrite')
- .objectStore('tb_ReportRequests')
- .add({ id: '_2830_1728', name: '多人协同3', pageSize: 'A3', CFG: null, prj_ids: [668] });
- },
- _updateDummy: function () {
- let db = indexDbOprObj.currentDb;
- let request = db.transaction(['tb_ReportRequests'], 'readwrite')
- .objectStore('tb_ReportRequests')
- .put({ id: '_2830_1725', name: '多人协同2', pageSize: 'A4', CFG: 'CFG', prj_ids: [1,2,3] });
- request.onsuccess = function (event) {
- console.log('数据写入成功');
- };
- request.onerror = function (event) {
- console.log('数据写入失败');
- }
- },
- _getDummy: function () {
- let db = indexDbOprObj.currentDb;
- let transaction = db.transaction(['tb_ReportRequests']);
- let objectStore = transaction.objectStore('tb_ReportRequests');
- let request = objectStore.get('_2830_1725');
- request.onerror = function(event) {
- console.log('事务失败');
- };
- request.onsuccess = function(event) {
- if (request.result) {
- console.log('Name: ' + request.result.name);
- console.log('PageSize: ' + request.result.pageSize);
- console.log('CFG: ' + request.result.CFG);
- console.log('ProjectIds: ' + request.result.prj_ids);
- } else {
- console.log('未获得数据记录');
- }
- };
- },
- _getDummyAll: function (idRst, cb) {
- let db = indexDbOprObj.currentDb;
- let objectStore = db.transaction('tb_ReportRequests').objectStore('tb_ReportRequests');
- objectStore.openCursor().onsuccess = function (event) {
- let cursor = event.target.result;
- if (cursor) {
- console.log('Id: ' + cursor.key);
- console.log('Name: ' + cursor.value.name);
- console.log('PageSize: ' + cursor.value.pageSize);
- console.log('gather_select: ' + cursor.value.gather_select);
- console.log('stage_select: ' + cursor.value.stage_select);
- console.log('CFG: ');
- console.log(cursor.value.CFG);
- if (idRst) {
- idRst.push(cursor.key);
- }
- cursor.continue();
- } else {
- console.log('没有更多数据了!');
- if (cb) {
- cb(idRst);
- }
- }
- };
- },
- _removeDummy: function () {
- let db = indexDbOprObj.currentDb;
- let request = db.transaction(['tb_ReportRequests'], 'readwrite')
- .objectStore('tb_ReportRequests')
- .delete('_2830_1725');
- request.onsuccess = function (event) {
- console.log('数据删除成功');
- };
- request.onerror = function (event) {
- console.log('数据删除失败');
- }
- },
- _test: function () {
- // indexDbOprObj._addDummy();
- // indexDbOprObj._getDummy();
- let idRst = [];
- indexDbOprObj._getDummyAll(idRst, (ids)=>{
- console.log(ids);
- // indexDbOprObj.removeAll(ids);
- });
- // indexDbOprObj._updateDummy();
- // indexDbOprObj._removeDummy();
- },
- storeReportRequest: function (stage_id, rptNodes) {
- if (rptNodes && rptNodes.length > 0) {
- let datas = [];
- for (let node of rptNodes) {
- let keyStr = `_${stage_id}_${node.refId}`;
- const gather_select = customSelects.gather_select.find(function (x) {
- return x.id === node.refId;
- });
- const stage_select = customSelects.stage_select.find(function (x) {
- return x.id === node.refId;
- });
- let data = {id: keyStr, name: node.name, gather_select, stage_select, pageSize: rptControlObj.getCurrentPageSize(), CFG: CUST_CFG};
- datas.push(data);
- }
- indexDbOprObj.batchAdd('tb_ReportRequests', datas, (rstArr)=>{
- console.log('batch add succeeded!');
- console.log(rstArr);
- //其他操作
- });
- }
- },
- storeReportPages: function (rptPages, stage_id, rptNode) {
- //
- },
- removeAll: function(idArr) {
- if (idArr && idArr.length > 0) {
- let db = indexDbOprObj.currentDb;
- let request = db.transaction(['tb_ReportRequests'], 'readwrite').objectStore('tb_ReportRequests');
- for (let id of idArr) {
- request.delete(id);
- request.onsuccess = function (event) {
- console.log(`数据('${id}')删除成功`);
- };
- }
- }
- },
- getReportPages: function (rpt_id, stage_id) {
- //
- }
- };
|