vue2-client 1.5.13 → 1.5.15

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 (112) hide show
  1. package/CHANGELOG.md +513 -504
  2. package/index.js +30 -30
  3. package/package.json +78 -78
  4. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  5. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +667 -667
  6. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +713 -713
  7. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +457 -457
  8. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +508 -508
  9. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +140 -140
  10. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -165
  11. package/src/base-client/components/common/JSONToTree/jsontotree.vue +275 -275
  12. package/src/base-client/components/common/XAddForm/XAddForm.vue +316 -316
  13. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +278 -277
  14. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  15. package/src/base-client/components/common/XForm/XForm.vue +185 -185
  16. package/src/base-client/components/common/XForm/XFormItem.vue +502 -485
  17. package/src/base-client/components/common/XForm/index.md +177 -177
  18. package/src/base-client/components/common/XFormTable/XFormTable.vue +325 -324
  19. package/src/base-client/components/common/XFormTable/index.md +96 -96
  20. package/src/base-client/components/common/XTable/XTable.vue +505 -505
  21. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +109 -109
  22. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  23. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +807 -807
  24. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -29
  25. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  26. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  27. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -29
  28. package/src/base-client/plugins/AppData.js +70 -70
  29. package/src/base-client/plugins/GetLoginInfoService.js +179 -179
  30. package/src/base-client/plugins/PagedList.js +177 -177
  31. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  32. package/src/base-client/plugins/i18n-extend.js +32 -32
  33. package/src/components/Ellipsis/Ellipsis.vue +65 -65
  34. package/src/components/Ellipsis/index.md +38 -38
  35. package/src/components/NumberInfo/index.md +43 -43
  36. package/src/components/STable/README.md +341 -341
  37. package/src/components/STable/index.js +318 -318
  38. package/src/components/Trend/index.md +45 -45
  39. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  40. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  41. package/src/components/exception/ExceptionPage.vue +70 -70
  42. package/src/components/form/FormRow.vue +52 -52
  43. package/src/components/index.js +36 -36
  44. package/src/components/menu/SideMenu.vue +62 -62
  45. package/src/components/menu/menu.js +273 -273
  46. package/src/components/page/header/index.less +40 -40
  47. package/src/components/setting/Setting.vue +235 -235
  48. package/src/components/table/StandardTable.vue +141 -141
  49. package/src/components/table/advance/ActionColumns.vue +158 -158
  50. package/src/components/table/advance/SearchArea.vue +355 -355
  51. package/src/components/tool/AStepItem.vue +60 -60
  52. package/src/components/tool/AvatarList.vue +68 -68
  53. package/src/components/tool/Drawer.vue +142 -142
  54. package/src/components/tool/TagSelect.vue +83 -83
  55. package/src/components/transition/PageToggleTransition.vue +97 -97
  56. package/src/config/CreateQueryConfig.js +307 -307
  57. package/src/config/default/admin.config.js +18 -18
  58. package/src/config/default/setting.config.js +44 -44
  59. package/src/config/replacer/resolve.config.js +67 -67
  60. package/src/layouts/AdminLayout.vue +174 -174
  61. package/src/layouts/CommonLayout.vue +42 -42
  62. package/src/layouts/ComponentLayoutOne.vue +47 -47
  63. package/src/layouts/PageLayout.vue +151 -151
  64. package/src/layouts/SinglePageView.vue +111 -111
  65. package/src/layouts/footer/PageFooter.vue +49 -49
  66. package/src/layouts/header/AdminHeader.vue +104 -104
  67. package/src/layouts/header/HeaderAvatar.vue +61 -61
  68. package/src/layouts/header/HeaderNotice.vue +176 -176
  69. package/src/layouts/header/HeaderSearch.vue +67 -67
  70. package/src/layouts/header/InstitutionDetail.vue +181 -181
  71. package/src/layouts/header/index.less +92 -92
  72. package/src/layouts/tabs/TabsHead.vue +190 -190
  73. package/src/layouts/tabs/TabsView.vue +379 -379
  74. package/src/mock/goods/index.js +108 -108
  75. package/src/pages/exception/404.vue +25 -25
  76. package/src/pages/login/Login.vue +363 -363
  77. package/src/pages/report/ReportTable.js +124 -124
  78. package/src/pages/report/ReportTableHome.vue +28 -28
  79. package/src/pages/resourceManage/orgListManage.vue +98 -98
  80. package/src/pages/system/dictionary/index.vue +43 -43
  81. package/src/pages/system/file/index.vue +317 -317
  82. package/src/pages/system/monitor/loginInfor/index.vue +36 -36
  83. package/src/pages/system/monitor/operLog/index.vue +36 -36
  84. package/src/pages/system/queryParams/index.vue +43 -43
  85. package/src/router/async/config.async.js +27 -27
  86. package/src/router/async/router.map.js +68 -68
  87. package/src/router/guards.js +113 -113
  88. package/src/router/index.js +27 -27
  89. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  90. package/src/services/api/LogDetailsViewApi.js +10 -10
  91. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  92. package/src/services/api/TicketDetailsViewApi.js +34 -34
  93. package/src/services/api/cas.js +79 -79
  94. package/src/services/api/commonTempTable.js +10 -10
  95. package/src/services/api/index.js +17 -17
  96. package/src/services/api/logininfor/index.js +6 -6
  97. package/src/services/api/manage.js +8 -8
  98. package/src/services/apiService.js +13 -13
  99. package/src/services/user.js +53 -53
  100. package/src/store/modules/index.js +4 -4
  101. package/src/theme/default/nprogress.less +76 -76
  102. package/src/theme/default/style.less +47 -47
  103. package/src/utils/colors.js +107 -107
  104. package/src/utils/excel/Blob.js +180 -180
  105. package/src/utils/excel/Export2Excel.js +141 -141
  106. package/src/utils/formatter.js +68 -68
  107. package/src/utils/i18n.js +80 -80
  108. package/src/utils/indexedDB.js +145 -145
  109. package/src/utils/theme-color-replacer-extend.js +91 -91
  110. package/src/utils/themeUtil.js +100 -100
  111. package/src/utils/util.js +230 -230
  112. package/vue.config.js +106 -106
@@ -1,68 +1,68 @@
1
- /**
2
- * 把对象按照 js配置文件的格式进行格式化
3
- * @param obj 格式化的对象
4
- * @param dep 层级,此项无需传值
5
- * @returns {string}
6
- */
7
- function formatConfig (obj, dep) {
8
- dep = dep || 1
9
- const LN = '\n'; const TAB = ' '
10
- let indent = ''
11
- for (let i = 0; i < dep; i++) {
12
- indent += TAB
13
- }
14
- let isArray = false; let arrayLastIsObj = false
15
- let str = ''; let prefix = '{'; let subfix = '}'
16
- if (Array.isArray(obj)) {
17
- isArray = true
18
- prefix = '['
19
- subfix = ']'
20
- str = obj.map((item, index) => {
21
- let format = ''
22
- if (typeof item == 'function') {
23
- //
24
- } else if (typeof item == 'object') {
25
- arrayLastIsObj = true
26
- format = `${LN}${indent}${formatConfig(item, dep + 1)},`
27
- } else if ((typeof item == 'number' && !isNaN(item)) || typeof item == 'boolean') {
28
- format = `${item},`
29
- } else if (typeof item == 'string') {
30
- format = `'${item}',`
31
- }
32
- if (index === obj.length - 1) {
33
- format = format.substring(0, format.length - 1)
34
- } else {
35
- arrayLastIsObj = false
36
- }
37
- return format
38
- }).join('')
39
- } else if (typeof obj != 'function' && typeof obj == 'object') {
40
- str = Object.keys(obj).map((key, index, keys) => {
41
- const val = obj[key]
42
- let format = ''
43
- if (typeof val == 'function') {
44
- //
45
- } else if (typeof val == 'object') {
46
- format = `${LN}${indent}${key}: ${formatConfig(val, dep + 1)},`
47
- } else if ((typeof val == 'number' && !isNaN(val)) || typeof val == 'boolean') {
48
- format = `${LN}${indent}${key}: ${val},`
49
- } else if (typeof val == 'string') {
50
- format = `${LN}${indent}${key}: '${val}',`
51
- }
52
- if (index === keys.length - 1) {
53
- format = format.substring(0, format.length - 1)
54
- }
55
- return format
56
- }).join('')
57
- }
58
- const len = TAB.length
59
- if (indent.length >= len) {
60
- indent = indent.substring(0, indent.length - len)
61
- }
62
- if (!isArray || arrayLastIsObj) {
63
- subfix = LN + indent + subfix
64
- }
65
- return `${prefix}${str}${subfix}`
66
- }
67
-
68
- module.exports = { formatConfig }
1
+ /**
2
+ * 把对象按照 js配置文件的格式进行格式化
3
+ * @param obj 格式化的对象
4
+ * @param dep 层级,此项无需传值
5
+ * @returns {string}
6
+ */
7
+ function formatConfig (obj, dep) {
8
+ dep = dep || 1
9
+ const LN = '\n'; const TAB = ' '
10
+ let indent = ''
11
+ for (let i = 0; i < dep; i++) {
12
+ indent += TAB
13
+ }
14
+ let isArray = false; let arrayLastIsObj = false
15
+ let str = ''; let prefix = '{'; let subfix = '}'
16
+ if (Array.isArray(obj)) {
17
+ isArray = true
18
+ prefix = '['
19
+ subfix = ']'
20
+ str = obj.map((item, index) => {
21
+ let format = ''
22
+ if (typeof item == 'function') {
23
+ //
24
+ } else if (typeof item == 'object') {
25
+ arrayLastIsObj = true
26
+ format = `${LN}${indent}${formatConfig(item, dep + 1)},`
27
+ } else if ((typeof item == 'number' && !isNaN(item)) || typeof item == 'boolean') {
28
+ format = `${item},`
29
+ } else if (typeof item == 'string') {
30
+ format = `'${item}',`
31
+ }
32
+ if (index === obj.length - 1) {
33
+ format = format.substring(0, format.length - 1)
34
+ } else {
35
+ arrayLastIsObj = false
36
+ }
37
+ return format
38
+ }).join('')
39
+ } else if (typeof obj != 'function' && typeof obj == 'object') {
40
+ str = Object.keys(obj).map((key, index, keys) => {
41
+ const val = obj[key]
42
+ let format = ''
43
+ if (typeof val == 'function') {
44
+ //
45
+ } else if (typeof val == 'object') {
46
+ format = `${LN}${indent}${key}: ${formatConfig(val, dep + 1)},`
47
+ } else if ((typeof val == 'number' && !isNaN(val)) || typeof val == 'boolean') {
48
+ format = `${LN}${indent}${key}: ${val},`
49
+ } else if (typeof val == 'string') {
50
+ format = `${LN}${indent}${key}: '${val}',`
51
+ }
52
+ if (index === keys.length - 1) {
53
+ format = format.substring(0, format.length - 1)
54
+ }
55
+ return format
56
+ }).join('')
57
+ }
58
+ const len = TAB.length
59
+ if (indent.length >= len) {
60
+ indent = indent.substring(0, indent.length - len)
61
+ }
62
+ if (!isArray || arrayLastIsObj) {
63
+ subfix = LN + indent + subfix
64
+ }
65
+ return `${prefix}${str}${subfix}`
66
+ }
67
+
68
+ module.exports = { formatConfig }
package/src/utils/i18n.js CHANGED
@@ -1,80 +1,80 @@
1
- import Vue from 'vue'
2
- import VueI18n from 'vue-i18n'
3
- import routesI18n from '@vue2-client/router/i18n'
4
- import './Objects'
5
- import { getI18nKey } from '@vue2-client/utils/routerUtil'
6
-
7
- /**
8
- * 创建 i18n 配置
9
- * @param locale 本地化语言
10
- * @param fallback 回退语言
11
- * @returns {VueI18n}
12
- */
13
- function initI18n (locale, fallback) {
14
- Vue.use(VueI18n)
15
- const i18nOptions = {
16
- locale,
17
- fallbackLocale: fallback,
18
- silentFallbackWarn: true
19
- }
20
- return new VueI18n(i18nOptions)
21
- }
22
-
23
- /**
24
- * 根据 router options 配置生成 国际化语言
25
- * @param lang
26
- * @param routes
27
- * @param valueKey
28
- * @returns {*}
29
- */
30
- function generateI18n (lang, routes, valueKey) {
31
- routes.forEach(route => {
32
- const keys = getI18nKey(route.fullPath).split('.')
33
- const value = valueKey === 'path' ? route[valueKey].split('/').filter(item => !item.startsWith(':') && item !== '').join('.') : route[valueKey]
34
- lang.assignProps(keys, value)
35
- if (route.children) {
36
- generateI18n(lang, route.children, valueKey)
37
- }
38
- })
39
- return lang
40
- }
41
-
42
- /**
43
- * 格式化 router.options.routes,生成 fullPath
44
- * @param routes
45
- * @param parentPath
46
- */
47
- function formatFullPath (routes, parentPath = '') {
48
- routes.forEach(route => {
49
- const isFullPath = route.path.substring(0, 1) === '/'
50
- route.fullPath = isFullPath ? route.path : (parentPath === '/' ? parentPath + route.path : parentPath + '/' + route.path)
51
- if (route.children) {
52
- formatFullPath(route.children, route.fullPath)
53
- }
54
- })
55
- }
56
-
57
- /**
58
- * 从路由提取国际化数据
59
- * @param i18n
60
- * @param routes
61
- */
62
- function mergeI18nFromRoutes (i18n, routes) {
63
- formatFullPath(routes)
64
- // eslint-disable-next-line no-new-object
65
- const CN = generateI18n({}, routes, 'name')
66
- // eslint-disable-next-line no-new-object
67
- const US = generateI18n({}, routes, 'path')
68
- i18n.mergeLocaleMessage('CN', CN)
69
- i18n.mergeLocaleMessage('US', US)
70
- const messages = routesI18n.messages
71
- Object.keys(messages).forEach(lang => {
72
- i18n.mergeLocaleMessage(lang, messages[lang])
73
- })
74
- }
75
-
76
- export {
77
- initI18n,
78
- mergeI18nFromRoutes,
79
- formatFullPath
80
- }
1
+ import Vue from 'vue'
2
+ import VueI18n from 'vue-i18n'
3
+ import routesI18n from '@vue2-client/router/i18n'
4
+ import './Objects'
5
+ import { getI18nKey } from '@vue2-client/utils/routerUtil'
6
+
7
+ /**
8
+ * 创建 i18n 配置
9
+ * @param locale 本地化语言
10
+ * @param fallback 回退语言
11
+ * @returns {VueI18n}
12
+ */
13
+ function initI18n (locale, fallback) {
14
+ Vue.use(VueI18n)
15
+ const i18nOptions = {
16
+ locale,
17
+ fallbackLocale: fallback,
18
+ silentFallbackWarn: true
19
+ }
20
+ return new VueI18n(i18nOptions)
21
+ }
22
+
23
+ /**
24
+ * 根据 router options 配置生成 国际化语言
25
+ * @param lang
26
+ * @param routes
27
+ * @param valueKey
28
+ * @returns {*}
29
+ */
30
+ function generateI18n (lang, routes, valueKey) {
31
+ routes.forEach(route => {
32
+ const keys = getI18nKey(route.fullPath).split('.')
33
+ const value = valueKey === 'path' ? route[valueKey].split('/').filter(item => !item.startsWith(':') && item !== '').join('.') : route[valueKey]
34
+ lang.assignProps(keys, value)
35
+ if (route.children) {
36
+ generateI18n(lang, route.children, valueKey)
37
+ }
38
+ })
39
+ return lang
40
+ }
41
+
42
+ /**
43
+ * 格式化 router.options.routes,生成 fullPath
44
+ * @param routes
45
+ * @param parentPath
46
+ */
47
+ function formatFullPath (routes, parentPath = '') {
48
+ routes.forEach(route => {
49
+ const isFullPath = route.path.substring(0, 1) === '/'
50
+ route.fullPath = isFullPath ? route.path : (parentPath === '/' ? parentPath + route.path : parentPath + '/' + route.path)
51
+ if (route.children) {
52
+ formatFullPath(route.children, route.fullPath)
53
+ }
54
+ })
55
+ }
56
+
57
+ /**
58
+ * 从路由提取国际化数据
59
+ * @param i18n
60
+ * @param routes
61
+ */
62
+ function mergeI18nFromRoutes (i18n, routes) {
63
+ formatFullPath(routes)
64
+ // eslint-disable-next-line no-new-object
65
+ const CN = generateI18n({}, routes, 'name')
66
+ // eslint-disable-next-line no-new-object
67
+ const US = generateI18n({}, routes, 'path')
68
+ i18n.mergeLocaleMessage('CN', CN)
69
+ i18n.mergeLocaleMessage('US', US)
70
+ const messages = routesI18n.messages
71
+ Object.keys(messages).forEach(lang => {
72
+ i18n.mergeLocaleMessage(lang, messages[lang])
73
+ })
74
+ }
75
+
76
+ export {
77
+ initI18n,
78
+ mergeI18nFromRoutes,
79
+ formatFullPath
80
+ }
@@ -1,145 +1,145 @@
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
- }
143
- })
144
- }
145
- }
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
+ }
143
+ })
144
+ }
145
+ }