vue2-client 1.2.43 → 1.2.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +114 -109
  2. package/docs/notice.md +22 -22
  3. package/package.json +1 -1
  4. package/src/App.vue +99 -93
  5. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +555 -555
  6. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  7. package/src/base-client/components/common/XAddForm/XAddForm.vue +339 -339
  8. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +316 -316
  9. package/src/base-client/components/common/XForm/XForm.vue +275 -275
  10. package/src/base-client/components/iot/CustomerDetailsView/CustomerDetailsView.vue +225 -225
  11. package/src/base-client/components/iot/DataAnalysisView/DataAnalysisView.vue +244 -244
  12. package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +452 -452
  13. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +330 -330
  14. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +57 -57
  15. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstructOperate.vue +121 -121
  16. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +131 -131
  17. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +276 -276
  18. package/src/base-client/components/iot/InstructDetailsView/InstructDetailsView.vue +469 -469
  19. package/src/base-client/components/iot/LogDetailsView/LogDetailsView.vue +379 -379
  20. package/src/base-client/components/iot/MeterDetailsView/MeterDetailsView.vue +359 -359
  21. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsCount.vue +335 -335
  22. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsException.vue +184 -184
  23. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsHandPlan.vue +291 -291
  24. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsInstruct.vue +236 -236
  25. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsMain.vue +256 -256
  26. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsSellGas.vue +189 -189
  27. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +722 -722
  28. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +231 -231
  29. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +247 -247
  30. package/src/base-client/components/ticket/EmployeeDetailsView/EmployeeDetailsView.vue +370 -370
  31. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +1 -1
  32. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  33. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  34. package/src/base-client/plugins/AppData.js +67 -67
  35. package/src/base-client/plugins/GetLoginInfoService.js +252 -252
  36. package/src/components/exception/ExceptionPage.vue +70 -70
  37. package/src/components/menu/SideMenu.vue +1 -1
  38. package/src/components/setting/Setting.vue +235 -235
  39. package/src/config/default/setting.config.js +5 -1
  40. package/src/config/index.js +3 -3
  41. package/src/layouts/SinglePageView.vue +8 -2
  42. package/src/layouts/header/AdminHeader.vue +1 -1
  43. package/src/layouts/header/HeaderNotice.vue +97 -97
  44. package/src/layouts/tabs/TabsView.vue +16 -1
  45. package/src/pages/exception/403.vue +21 -25
  46. package/src/pages/exception/404.vue +21 -25
  47. package/src/pages/exception/500.vue +21 -25
  48. package/src/pages/login/Login.vue +5 -12
  49. package/src/pages/report/ReportTableHome.vue +28 -28
  50. package/src/pages/resourceManage/depListManage.vue +23 -23
  51. package/src/pages/resourceManage/funListManage.vue +23 -23
  52. package/src/pages/resourceManage/index.js +15 -15
  53. package/src/pages/resourceManage/orgListManage.vue +98 -98
  54. package/src/pages/resourceManage/roleListManage.vue +23 -23
  55. package/src/pages/resourceManage/staffListManage.vue +23 -23
  56. package/src/pages/system/ticket/index.vue +1 -1
  57. package/src/pages/system/ticket/submitTicketSuccess.vue +248 -248
  58. package/src/router/async/config.async.js +26 -26
  59. package/src/router/index.js +27 -27
  60. package/src/services/api/common.js +47 -47
  61. package/src/services/api/index.js +39 -39
  62. package/src/services/user.js +34 -34
  63. package/src/store/modules/account.js +2 -2
  64. package/src/theme/default/style.less +47 -47
  65. package/src/utils/indexedDB.js +146 -146
  66. package/src/utils/routerUtil.js +359 -359
  67. package/vue.config.js +143 -143
@@ -1,47 +1,47 @@
1
- import { METHOD, request } from '@vue2-client/utils/request'
2
- import { indexedDB } from '@vue2-client/utils/indexedDB'
3
-
4
- const commonApi = {
5
- // 获取表格列配置
6
- getColumnsJson: '/webmeterapi/getColumns',
7
- // 通用查询
8
- query: '/webmeterapi/commonQuery',
9
- // 通用新增/修改
10
- addOrModify: '/webmeterapi/commonAddOrModify',
11
- // 通用删除
12
- delete: '/webmeterapi/commonDelete',
13
- // 获取字典键列表
14
- getDictionaryParam: '/webmeterapi/getDictionaryParam'
15
- }
16
-
17
- /**
18
- * 带缓存查询的表格配置文件查询
19
- * @param queryParamsName 配置名称
20
- * @param callback 回调函数
21
- */
22
- export function getColumnsJson (queryParamsName, callback) {
23
- indexedDB.getByWeb(queryParamsName, commonApi.getColumnsJson, { str: queryParamsName }, callback)
24
- }
25
-
26
- /**
27
- * 通用表单查询
28
- */
29
- export function query (parameter) {
30
- return request(commonApi.query, METHOD.POST, parameter)
31
- }
32
-
33
- /**
34
- * 通用新增/修改
35
- */
36
- export function addOrModify (parameter) {
37
- return request(commonApi.addOrModify, METHOD.POST, parameter)
38
- }
39
-
40
- /**
41
- * 通用删除
42
- */
43
- export function remove (parameter) {
44
- return request(commonApi.delete, METHOD.POST, parameter)
45
- }
46
-
47
- export { commonApi }
1
+ import { METHOD, request } from '@vue2-client/utils/request'
2
+ import { indexedDB } from '@vue2-client/utils/indexedDB'
3
+
4
+ const commonApi = {
5
+ // 获取表格列配置
6
+ getColumnsJson: '/webmeterapi/getColumns',
7
+ // 通用查询
8
+ query: '/webmeterapi/commonQuery',
9
+ // 通用新增/修改
10
+ addOrModify: '/webmeterapi/commonAddOrModify',
11
+ // 通用删除
12
+ delete: '/webmeterapi/commonDelete',
13
+ // 获取字典键列表
14
+ getDictionaryParam: '/webmeterapi/getDictionaryParam'
15
+ }
16
+
17
+ /**
18
+ * 带缓存查询的表格配置文件查询
19
+ * @param queryParamsName 配置名称
20
+ * @param callback 回调函数
21
+ */
22
+ export function getColumnsJson (queryParamsName, callback) {
23
+ indexedDB.getByWeb(queryParamsName, commonApi.getColumnsJson, { str: queryParamsName }, callback)
24
+ }
25
+
26
+ /**
27
+ * 通用表单查询
28
+ */
29
+ export function query (parameter) {
30
+ return request(commonApi.query, METHOD.POST, parameter)
31
+ }
32
+
33
+ /**
34
+ * 通用新增/修改
35
+ */
36
+ export function addOrModify (parameter) {
37
+ return request(commonApi.addOrModify, METHOD.POST, parameter)
38
+ }
39
+
40
+ /**
41
+ * 通用删除
42
+ */
43
+ export function remove (parameter) {
44
+ return request(commonApi.delete, METHOD.POST, parameter)
45
+ }
46
+
47
+ export { commonApi }
@@ -1,39 +1,39 @@
1
- import { commonApi, getColumnsJson, query, addOrModify, remove } from '@vue2-client/services/api/common'
2
- import { CustomerDetailsViewApi } from '@vue2-client/services/api/CustomerDetailsViewApi'
3
- import { DeviceBrandDetailsViewApi } from '@vue2-client/services/api/DeviceBrandDetailsViewApi'
4
- import { DeviceDetailsViewApi } from '@vue2-client/services/api/DeviceDetailsViewApi'
5
- import { DeviceTypeDetailsViewApi } from '@vue2-client/services/api/DeviceTypeDetailsViewApi'
6
- import { DictionaryDetailsViewApi } from '@vue2-client/services/api/DictionaryDetailsViewApi'
7
- import { EmployeeDetailsViewApi } from '@vue2-client/services/api/EmployeeDetailsViewApi'
8
- import { FormGroupEditApi } from '@vue2-client/services/api/FormGroupEditApi'
9
- import { InstructDetailsViewApi } from '@vue2-client/services/api/InstructDetailsViewApi'
10
- import { iotApi } from '@vue2-client/services/api/iot'
11
- import { LogDetailsViewApi } from '@vue2-client/services/api/LogDetailsViewApi'
12
- import { manageApi } from '@vue2-client/services/api/manage'
13
- import { MeterDetailsViewApi } from '@vue2-client/services/api/MeterDetailsViewApi'
14
- import { QueryParamsDetailsViewApi } from '@vue2-client/services/api/QueryParamsDetailsViewApi'
15
- import { get, post } from '@vue2-client/services/api/restTools'
16
- import { serviceApi } from '@vue2-client/services/api/service'
17
- import { TicketDetailsViewApi } from '@vue2-client/services/api/TicketDetailsViewApi'
18
- import { WebmeterAnalysisViewApi } from '@vue2-client/services/api/WebmeterAnalysisViewApi'
19
-
20
- export {
21
- commonApi, getColumnsJson, query, addOrModify, remove,
22
- CustomerDetailsViewApi,
23
- DeviceBrandDetailsViewApi,
24
- DeviceDetailsViewApi,
25
- DeviceTypeDetailsViewApi,
26
- DictionaryDetailsViewApi,
27
- EmployeeDetailsViewApi,
28
- FormGroupEditApi,
29
- InstructDetailsViewApi,
30
- iotApi,
31
- LogDetailsViewApi,
32
- manageApi,
33
- MeterDetailsViewApi,
34
- QueryParamsDetailsViewApi,
35
- get, post,
36
- serviceApi,
37
- TicketDetailsViewApi,
38
- WebmeterAnalysisViewApi
39
- }
1
+ import { commonApi, getColumnsJson, query, addOrModify, remove } from '@vue2-client/services/api/common'
2
+ import { CustomerDetailsViewApi } from '@vue2-client/services/api/CustomerDetailsViewApi'
3
+ import { DeviceBrandDetailsViewApi } from '@vue2-client/services/api/DeviceBrandDetailsViewApi'
4
+ import { DeviceDetailsViewApi } from '@vue2-client/services/api/DeviceDetailsViewApi'
5
+ import { DeviceTypeDetailsViewApi } from '@vue2-client/services/api/DeviceTypeDetailsViewApi'
6
+ import { DictionaryDetailsViewApi } from '@vue2-client/services/api/DictionaryDetailsViewApi'
7
+ import { EmployeeDetailsViewApi } from '@vue2-client/services/api/EmployeeDetailsViewApi'
8
+ import { FormGroupEditApi } from '@vue2-client/services/api/FormGroupEditApi'
9
+ import { InstructDetailsViewApi } from '@vue2-client/services/api/InstructDetailsViewApi'
10
+ import { iotApi } from '@vue2-client/services/api/iot'
11
+ import { LogDetailsViewApi } from '@vue2-client/services/api/LogDetailsViewApi'
12
+ import { manageApi } from '@vue2-client/services/api/manage'
13
+ import { MeterDetailsViewApi } from '@vue2-client/services/api/MeterDetailsViewApi'
14
+ import { QueryParamsDetailsViewApi } from '@vue2-client/services/api/QueryParamsDetailsViewApi'
15
+ import { get, post } from '@vue2-client/services/api/restTools'
16
+ import { serviceApi } from '@vue2-client/services/api/service'
17
+ import { TicketDetailsViewApi } from '@vue2-client/services/api/TicketDetailsViewApi'
18
+ import { WebmeterAnalysisViewApi } from '@vue2-client/services/api/WebmeterAnalysisViewApi'
19
+
20
+ export {
21
+ commonApi, getColumnsJson, query, addOrModify, remove,
22
+ CustomerDetailsViewApi,
23
+ DeviceBrandDetailsViewApi,
24
+ DeviceDetailsViewApi,
25
+ DeviceTypeDetailsViewApi,
26
+ DictionaryDetailsViewApi,
27
+ EmployeeDetailsViewApi,
28
+ FormGroupEditApi,
29
+ InstructDetailsViewApi,
30
+ iotApi,
31
+ LogDetailsViewApi,
32
+ manageApi,
33
+ MeterDetailsViewApi,
34
+ QueryParamsDetailsViewApi,
35
+ get, post,
36
+ serviceApi,
37
+ TicketDetailsViewApi,
38
+ WebmeterAnalysisViewApi
39
+ }
@@ -1,34 +1,34 @@
1
- import { LOGIN, ROUTES } from '@vue2-client/services/apiService'
2
- import { request, METHOD, removeAuthorization } from '@vue2-client/utils/request'
3
-
4
- /**
5
- * 登录服务
6
- * @param name 账户名
7
- * @param password 账户密码
8
- * @returns {Promise<AxiosResponse<T>>}
9
- */
10
- export async function login (name, password) {
11
- return request(LOGIN, METHOD.POST, {
12
- name: name,
13
- password: password
14
- })
15
- }
16
-
17
- export async function getRoutesConfig (value) {
18
- return request(ROUTES, METHOD.POST, value)
19
- }
20
-
21
- /**
22
- * 退出登录
23
- */
24
- export function logout () {
25
- localStorage.removeItem(process.env.VUE_APP_ROUTES_KEY)
26
- localStorage.removeItem(process.env.VUE_APP_PERMISSIONS_KEY)
27
- localStorage.removeItem(process.env.VUE_APP_ROLES_KEY)
28
- removeAuthorization()
29
- }
30
- export default {
31
- login,
32
- logout,
33
- getRoutesConfig
34
- }
1
+ import { LOGIN, ROUTES } from '@vue2-client/services/apiService'
2
+ import { request, METHOD, removeAuthorization } from '@vue2-client/utils/request'
3
+
4
+ /**
5
+ * 登录服务
6
+ * @param name 账户名
7
+ * @param password 账户密码
8
+ * @returns {Promise<AxiosResponse<T>>}
9
+ */
10
+ export async function login (name, password) {
11
+ return request(LOGIN, METHOD.POST, {
12
+ name: name,
13
+ password: password
14
+ })
15
+ }
16
+
17
+ export async function getRoutesConfig (value) {
18
+ return request(ROUTES, METHOD.POST, value)
19
+ }
20
+
21
+ /**
22
+ * 退出登录
23
+ */
24
+ export function logout () {
25
+ localStorage.removeItem(process.env.VUE_APP_ROUTES_KEY)
26
+ localStorage.removeItem(process.env.VUE_APP_PERMISSIONS_KEY)
27
+ localStorage.removeItem(process.env.VUE_APP_ROLES_KEY)
28
+ removeAuthorization()
29
+ }
30
+ export default {
31
+ login,
32
+ logout,
33
+ getRoutesConfig
34
+ }
@@ -76,8 +76,8 @@ export default {
76
76
  },
77
77
  setSingle (state, page) {
78
78
  if (page.path && page.delete) {
79
- // 删除 暂时不做删除操作
80
- // state.single = state.single.filter(item => item.path !== page.path)
79
+ // 删除
80
+ state.single = state.single.filter(item => item.fullPath !== page.path)
81
81
  } else if (state.single.filter(item => item.meta.singlePage === page.meta.singlePage).length === 0) {
82
82
  // 添加
83
83
  state.single.push(page)
@@ -1,47 +1,47 @@
1
- .week-mode{
2
- overflow: hidden;
3
- filter: invert(80%);
4
- }
5
- .beauty-scroll{
6
- scrollbar-color: @primary-color @primary-2;
7
- scrollbar-width: thin;
8
- -ms-overflow-style:none;
9
- position: relative;
10
- &::-webkit-scrollbar{
11
- width: 3px;
12
- height: 1px;
13
- }
14
- &::-webkit-scrollbar-thumb {
15
- border-radius: 3px;
16
- background: @primary-color;
17
- }
18
- &::-webkit-scrollbar-track {
19
- -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
20
- border-radius: 3px;
21
- background: @primary-3;
22
- }
23
- }
24
- .split-right{
25
- &:not(:last-child) {
26
- border-right: 1px solid rgba(98, 98, 98, 0.2);
27
- }
28
- }
29
- .disabled{
30
- cursor: not-allowed;
31
- color: @disabled-color;
32
- pointer-events: none;
33
- }
34
-
35
- ::-webkit-scrollbar{
36
- width: 5px;
37
- height: 5px;
38
- }
39
- ::-webkit-scrollbar-thumb {
40
- border-radius: 3px;
41
- background: @primary-3;
42
- }
43
- ::-webkit-scrollbar-track {
44
- -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
45
- border-radius: 3px;
46
- background: @primary-1;
47
- }
1
+ .week-mode{
2
+ overflow: hidden;
3
+ filter: invert(80%);
4
+ }
5
+ .beauty-scroll{
6
+ scrollbar-color: @primary-color @primary-2;
7
+ scrollbar-width: thin;
8
+ -ms-overflow-style:none;
9
+ position: relative;
10
+ &::-webkit-scrollbar{
11
+ width: 3px;
12
+ height: 1px;
13
+ }
14
+ &::-webkit-scrollbar-thumb {
15
+ border-radius: 3px;
16
+ background: @primary-color;
17
+ }
18
+ &::-webkit-scrollbar-track {
19
+ -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
20
+ border-radius: 3px;
21
+ background: @primary-3;
22
+ }
23
+ }
24
+ .split-right{
25
+ &:not(:last-child) {
26
+ border-right: 1px solid rgba(98, 98, 98, 0.2);
27
+ }
28
+ }
29
+ .disabled{
30
+ cursor: not-allowed;
31
+ color: @disabled-color;
32
+ pointer-events: none;
33
+ }
34
+
35
+ ::-webkit-scrollbar{
36
+ width: 5px;
37
+ height: 5px;
38
+ }
39
+ ::-webkit-scrollbar-thumb {
40
+ border-radius: 3px;
41
+ background: @primary-3;
42
+ }
43
+ ::-webkit-scrollbar-track {
44
+ -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
45
+ border-radius: 3px;
46
+ background: @primary-1;
47
+ }
@@ -1,146 +1,146 @@
1
- // indexDB 存储
2
- import { post } from '@vue2-client/services/api'
3
-
4
- export const indexedDB = {
5
- db: undefined,
6
- indexedDB: window.indexedDB || window.webkitindexedDB,
7
- IDBKeyRange: window.IDBKeyRange || window.webkitIDBKeyRange, // 键范围
8
- openDB: function (callback) {
9
- // 建立或打开数据库,建立对象存储空间(ObjectStore)
10
- const self = this
11
- if (self.db) {
12
- callback(self.db)
13
- } else {
14
- const version = 1
15
- const request = self.indexedDB.open('view', version)
16
-
17
- request.onerror = function (e) {
18
- console.error('打开数据库失败:' + e.currentTarget.error.message)
19
- }
20
- request.onsuccess = function (e) {
21
- self.db = e.target.result
22
- callback(self.db)
23
- }
24
- request.onupgradeneeded = function (e) {
25
- const db = e.target.result
26
- if (!db.objectStoreNames.contains('metaCache')) {
27
- // 没有该对象空间时创建该对象空间
28
- db.createObjectStore('metaCache', {
29
- keyPath: 'key'
30
- })
31
- }
32
- }
33
- }
34
- },
35
- deleteDB: function (dbname) {
36
- // 删除数据库
37
- const self = this
38
- self.indexedDB.deleteDatabase(dbname)
39
- console.log(dbname + '数据库已删除')
40
- },
41
- closeDB: function () {
42
- const self = this
43
- if (!self.db) {
44
- self.db.close()
45
- }
46
- console.log('数据库已关闭')
47
- },
48
- add: function (key, data) {
49
- const self = this
50
- self.openDB((res) => {
51
- const request = res.transaction('metaCache', 'readwrite').objectStore('metaCache').add({
52
- key: key,
53
- data: data
54
- })
55
- request.onerror = function () {
56
- self.update(data)
57
- }
58
- request.onsuccess = function () {
59
- console.log('数据已存入到数据库')
60
- }
61
- })
62
- },
63
- update: function (key, data) {
64
- const self = this
65
- self.openDB((res) => {
66
- const request = res.transaction('metaCache', 'readwrite').objectStore('metaCache').put({
67
- key: key,
68
- data: data
69
- })
70
- request.onerror = function () {
71
- console.error('数据更新失败')
72
- }
73
- request.onsuccess = function () {
74
- console.log('数据已更新到数据库')
75
- }
76
- })
77
- },
78
- get: function (key, callback) {
79
- const self = this
80
- self.openDB((res) => {
81
- // 根据存储空间的键找到对应数据
82
- const store = res.transaction('metaCache', 'readwrite').objectStore('metaCache')
83
- const request = store.get(key)
84
- request.onerror = function () {
85
- console.log('读取数据失败,键:' + key)
86
- }
87
- request.onsuccess = function (e) {
88
- const result = e.target.result
89
- if (typeof (callback) === 'function') {
90
- callback(result.data)
91
- }
92
- }
93
- })
94
- },
95
- getByWeb: function (key, url, params, callback) {
96
- const self = this
97
- self.openDB((res) => {
98
- // 根据存储空间的键找到对应数据
99
- const store = res.transaction('metaCache', 'readwrite').objectStore('metaCache')
100
- const request = store.get(key)
101
- request.onerror = function () {
102
- console.log('读取数据失败,键:' + key)
103
- }
104
- request.onsuccess = function (e) {
105
- const result = e.target.result
106
- if (!result && url) {
107
- post(url, params).then((res) => {
108
- self.add(key, res)
109
- callback(res)
110
- })
111
- } else {
112
- callback(result.data)
113
- }
114
- }
115
- })
116
- },
117
- delete: function (key) {
118
- const self = this
119
- self.openDB((res) => {
120
- // 删除某一条记录
121
- const request = res.transaction('metaCache', 'readwrite').objectStore('metaCache').delete(key)
122
-
123
- request.onerror = function () {
124
- console.error('数据删除失败')
125
- }
126
- request.onsuccess = function (event) {
127
- console.log('已删除存储空间' + 'metaCache' + '中' + key + '记录')
128
- }
129
- })
130
- },
131
- clear: function (callback) {
132
- const self = this
133
- self.openDB((res) => {
134
- // 删除存储空间全部记录
135
- const request = res.transaction('metaCache', 'readwrite').objectStore('metaCache').clear()
136
-
137
- request.onerror = function () {
138
- console.error('数据删除失败')
139
- }
140
- request.onsuccess = function (event) {
141
- console.log('已删除存储空间' + 'metaCache' + '中所有记录')
142
- callback()
143
- }
144
- })
145
- }
146
- }
1
+ // indexDB 存储
2
+ import { post } from '@vue2-client/services/api'
3
+
4
+ export const indexedDB = {
5
+ db: undefined,
6
+ indexedDB: window.indexedDB || window.webkitindexedDB,
7
+ IDBKeyRange: window.IDBKeyRange || window.webkitIDBKeyRange, // 键范围
8
+ openDB: function (callback) {
9
+ // 建立或打开数据库,建立对象存储空间(ObjectStore)
10
+ const self = this
11
+ if (self.db) {
12
+ callback(self.db)
13
+ } else {
14
+ const version = 1
15
+ const request = self.indexedDB.open('view', version)
16
+
17
+ request.onerror = function (e) {
18
+ console.error('打开数据库失败:' + e.currentTarget.error.message)
19
+ }
20
+ request.onsuccess = function (e) {
21
+ self.db = e.target.result
22
+ callback(self.db)
23
+ }
24
+ request.onupgradeneeded = function (e) {
25
+ const db = e.target.result
26
+ if (!db.objectStoreNames.contains('metaCache')) {
27
+ // 没有该对象空间时创建该对象空间
28
+ db.createObjectStore('metaCache', {
29
+ keyPath: 'key'
30
+ })
31
+ }
32
+ }
33
+ }
34
+ },
35
+ deleteDB: function (dbname) {
36
+ // 删除数据库
37
+ const self = this
38
+ self.indexedDB.deleteDatabase(dbname)
39
+ console.log(dbname + '数据库已删除')
40
+ },
41
+ closeDB: function () {
42
+ const self = this
43
+ if (!self.db) {
44
+ self.db.close()
45
+ }
46
+ console.log('数据库已关闭')
47
+ },
48
+ add: function (key, data) {
49
+ const self = this
50
+ self.openDB((res) => {
51
+ const request = res.transaction('metaCache', 'readwrite').objectStore('metaCache').add({
52
+ key: key,
53
+ data: data
54
+ })
55
+ request.onerror = function () {
56
+ self.update(data)
57
+ }
58
+ request.onsuccess = function () {
59
+ console.log('数据已存入到数据库')
60
+ }
61
+ })
62
+ },
63
+ update: function (key, data) {
64
+ const self = this
65
+ self.openDB((res) => {
66
+ const request = res.transaction('metaCache', 'readwrite').objectStore('metaCache').put({
67
+ key: key,
68
+ data: data
69
+ })
70
+ request.onerror = function () {
71
+ console.error('数据更新失败')
72
+ }
73
+ request.onsuccess = function () {
74
+ console.log('数据已更新到数据库')
75
+ }
76
+ })
77
+ },
78
+ get: function (key, callback) {
79
+ const self = this
80
+ self.openDB((res) => {
81
+ // 根据存储空间的键找到对应数据
82
+ const store = res.transaction('metaCache', 'readwrite').objectStore('metaCache')
83
+ const request = store.get(key)
84
+ request.onerror = function () {
85
+ console.log('读取数据失败,键:' + key)
86
+ }
87
+ request.onsuccess = function (e) {
88
+ const result = e.target.result
89
+ if (typeof (callback) === 'function') {
90
+ callback(result.data)
91
+ }
92
+ }
93
+ })
94
+ },
95
+ getByWeb: function (key, url, params, callback) {
96
+ const self = this
97
+ self.openDB((res) => {
98
+ // 根据存储空间的键找到对应数据
99
+ const store = res.transaction('metaCache', 'readwrite').objectStore('metaCache')
100
+ const request = store.get(key)
101
+ request.onerror = function () {
102
+ console.log('读取数据失败,键:' + key)
103
+ }
104
+ request.onsuccess = function (e) {
105
+ const result = e.target.result
106
+ if (!result && url) {
107
+ post(url, params).then((res) => {
108
+ self.add(key, res)
109
+ callback(res)
110
+ })
111
+ } else {
112
+ callback(result.data)
113
+ }
114
+ }
115
+ })
116
+ },
117
+ delete: function (key) {
118
+ const self = this
119
+ self.openDB((res) => {
120
+ // 删除某一条记录
121
+ const request = res.transaction('metaCache', 'readwrite').objectStore('metaCache').delete(key)
122
+
123
+ request.onerror = function () {
124
+ console.error('数据删除失败')
125
+ }
126
+ request.onsuccess = function (event) {
127
+ console.log('已删除存储空间' + 'metaCache' + '中' + key + '记录')
128
+ }
129
+ })
130
+ },
131
+ clear: function (callback) {
132
+ const self = this
133
+ self.openDB((res) => {
134
+ // 删除存储空间全部记录
135
+ const request = res.transaction('metaCache', 'readwrite').objectStore('metaCache').clear()
136
+
137
+ request.onerror = function () {
138
+ console.error('数据删除失败')
139
+ }
140
+ request.onsuccess = function (event) {
141
+ console.log('已删除存储空间' + 'metaCache' + '中所有记录')
142
+ callback()
143
+ }
144
+ })
145
+ }
146
+ }