olp-table 5.3.4 → 5.3.5

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 (171) hide show
  1. package/package.json +12 -92
  2. package/.env.build +0 -1
  3. package/README.md +0 -26
  4. package/babel.config.js +0 -5
  5. package/jsconfig.json +0 -22
  6. package/public/favicon.ico +0 -0
  7. package/public/index.html +0 -17
  8. package/rmMode.bat +0 -1
  9. package/src/App.vue +0 -199
  10. package/src/api/crud.js +0 -22
  11. package/src/api/dist.js +0 -6
  12. package/src/assets/iconfont/iconfont.css +0 -20
  13. package/src/assets/iconfont/iconfont.json +0 -16
  14. package/src/assets/iconfont/iconfont.ttf +0 -0
  15. package/src/assets/iconfont/iconfont.woff +0 -0
  16. package/src/assets/iconfont/iconfont.woff2 +0 -0
  17. package/src/assets/logo.png +0 -0
  18. package/src/components/auto-height/index.vue +0 -75
  19. package/src/components/codemirror-tag.vue +0 -100
  20. package/src/components/lazy-load-select.vue +0 -107
  21. package/src/components/ol-dialog-excel.vue +0 -112
  22. package/src/components/ol-dialog-import.vue +0 -304
  23. package/src/components/ol-dialog-json.vue +0 -82
  24. package/src/components/ol-dialog-table.vue +0 -81
  25. package/src/components/ol-dialog-upload-file.vue +0 -208
  26. package/src/components/ol-dict-tag.vue +0 -271
  27. package/src/components/ol-select-dom.vue +0 -71
  28. package/src/components/ol-table-filter.vue +0 -28
  29. package/src/components/ol-table-render.vue +0 -44
  30. package/src/components/ol-table-select.vue +0 -150
  31. package/src/components/pinia-init.vue +0 -18
  32. package/src/components/table/model/ModelMixins.js +0 -43
  33. package/src/components/table/model/model-index.vue +0 -121
  34. package/src/components/table/model/ot-left-right.vue +0 -18
  35. package/src/components/table/model/ot-left-tree-right-table.scss +0 -14
  36. package/src/components/table/model/ot-left-tree-right-table.vue +0 -41
  37. package/src/components/table/model/ot-top-1-bottom-2.vue +0 -39
  38. package/src/components/table/model/ot-top-2-bottom-1.vue +0 -38
  39. package/src/components/table/model/ot-top-2-bottom-2.vue +0 -38
  40. package/src/components/table/model/ot-top-bottom.vue +0 -18
  41. package/src/components/table/model/splitpanesModel.css +0 -22
  42. package/src/components/table/model/splitpanesModel.vue +0 -54
  43. package/src/components/table/ol-form/index.vue +0 -537
  44. package/src/components/table/ol-form-v3/index.vue +0 -455
  45. package/src/components/table/ol-main-form-sub-table/index.vue +0 -601
  46. package/src/components/table/ol-pager/index.vue +0 -46
  47. package/src/components/table/ol-table/components/ol-table-column-config/columnIndex.vue +0 -233
  48. package/src/components/table/ol-table/components/ol-table-column-config/index.vue +0 -145
  49. package/src/components/table/ol-table/components/ol-table-column-dict-color/index.vue +0 -88
  50. package/src/components/table/ol-table/index.vue +0 -232
  51. package/src/components/table/ol-table-operate/index.vue +0 -61
  52. package/src/components/table/ol-table-search/index.vue +0 -17
  53. package/src/components/table/ol-table-tool-btn/index.vue +0 -60
  54. package/src/components/tree/components/o-tree.vue +0 -289
  55. package/src/components/tree/index.vue +0 -46
  56. package/src/components/v-component/index.vue +0 -43
  57. package/src/config/dev-config.js +0 -5
  58. package/src/config/prod-config.js +0 -5
  59. package/src/config/shared-config.js +0 -20
  60. package/src/data.js +0 -9378
  61. package/src/directives/permission/hasPermi.js +0 -63
  62. package/src/directives/permission/hasRole.js +0 -30
  63. package/src/main.js +0 -55
  64. package/src/mixins/VTMixin/DefaultMethods.js +0 -749
  65. package/src/mixins/VTMixin/OTMixinBody.js +0 -105
  66. package/src/mixins/VTMixin/OTMixinBodyFooter.js +0 -93
  67. package/src/mixins/VTMixin/OTMixinBodyMethods.js +0 -420
  68. package/src/mixins/VTMixin/OTMixinColumnMethod.js +0 -450
  69. package/src/mixins/VTMixin/OTMixinInitMethod.js +0 -130
  70. package/src/mixins/VTMixin/OTMixinPager.js +0 -38
  71. package/src/mixins/VTMixin/OTMixinSortable.js +0 -43
  72. package/src/mixins/VTMixin/index.js +0 -18
  73. package/src/package/index.js +0 -20
  74. package/src/plugins/axios.js +0 -61
  75. package/src/store/dict.js +0 -76
  76. package/src/store/dictType.js +0 -52
  77. package/src/store/permi.js +0 -45
  78. package/src/styles/common.scss +0 -37
  79. package/src/styles/index.scss +0 -48
  80. package/src/styles/theme.scss +0 -32
  81. package/src/utils/AESCRUDUtils.js +0 -87
  82. package/src/utils/DateUtils.js +0 -35
  83. package/src/utils/ExcelUtil.js +0 -159
  84. package/src/utils/TableSortUtil.js +0 -91
  85. package/src/utils/columnProp.js +0 -3
  86. package/src/utils/groupCompute.js +0 -68
  87. package/src/utils/http/httpFactory.js +0 -92
  88. package/src/utils/http/httpFactory2.js +0 -79
  89. package/src/utils/http/httpUtil.js +0 -123
  90. package/src/utils/http/httpUtils.js +0 -38
  91. package/src/utils/loadStyle.js +0 -14
  92. package/src/utils/message.js +0 -56
  93. package/src/utils/object.js +0 -80
  94. package/src/utils/security/TokenUtil.js +0 -19
  95. package/src/utils/tree.js +0 -54
  96. package/src/utils/util.js +0 -127
  97. package/src/views/Test/index.vue +0 -77
  98. package/src/views/Test/index2.vue +0 -33
  99. package/src/views/components/btn-config/index.vue +0 -202
  100. package/src/views/components/option-config/index.vue +0 -192
  101. package/src/views/db/chineseToEnglish.vue +0 -127
  102. package/src/views/db/filed.vue +0 -395
  103. package/src/views/db/index.vue +0 -192
  104. package/src/views/db/preview/index.vue +0 -139
  105. package/src/views/db/preview/left.vue +0 -204
  106. package/src/views/db/preview/right.vue +0 -466
  107. package/src/views/groupTable/index.vue +0 -137
  108. package/src/views/groupTable/ol-table-column-config/columnIndex.vue +0 -194
  109. package/src/views/groupTable/ol-table-column-config/index.vue +0 -92
  110. package/src/views/table/add-or-edit/config/base-config/index.vue +0 -539
  111. package/src/views/table/add-or-edit/config/base-config/table-form.vue +0 -333
  112. package/src/views/table/add-or-edit/config/column-config/header-config.vue +0 -475
  113. package/src/views/table/add-or-edit/config/column-config/index.vue +0 -790
  114. package/src/views/table/add-or-edit/config/data/column.js +0 -218
  115. package/src/views/table/add-or-edit/config/data/crud.js +0 -122
  116. package/src/views/table/add-or-edit/config/data/events.js +0 -109
  117. package/src/views/table/add-or-edit/config/data/method.js +0 -127
  118. package/src/views/table/add-or-edit/config/data/option.js +0 -725
  119. package/src/views/table/add-or-edit/config/data/page.js +0 -79
  120. package/src/views/table/add-or-edit/config/field-config/filed-config-table.vue +0 -42
  121. package/src/views/table/add-or-edit/config/field-config/index.vue +0 -91
  122. package/src/views/table/add-or-edit/config/form-config/index.vue +0 -1179
  123. package/src/views/table/add-or-edit/config/index.vue +0 -376
  124. package/src/views/table/add-or-edit/config/initFormObject.js +0 -25
  125. package/src/views/table/add-or-edit/config/script-config/LeftMeun.vue +0 -71
  126. package/src/views/table/add-or-edit/config/script-config/index.vue +0 -70
  127. package/src/views/table/add-or-edit/config/table-config/btn-config.vue +0 -340
  128. package/src/views/table/add-or-edit/config/table-config/btn-sort.vue +0 -132
  129. package/src/views/table/add-or-edit/config/table-config/index.vue +0 -446
  130. package/src/views/table/add-or-edit/configOld/dataTags/filed-config-table-model.vue +0 -41
  131. package/src/views/table/add-or-edit/configOld/dataTags/filed-config.vue +0 -74
  132. package/src/views/table/add-or-edit/configOld/dataTags/index.vue +0 -439
  133. package/src/views/table/add-or-edit/configOld/dataTags/set-table-sql.vue +0 -79
  134. package/src/views/table/add-or-edit/configOld/dataTags/table-on-config.vue +0 -74
  135. package/src/views/table/add-or-edit/configOld/index.vue +0 -127
  136. package/src/views/table/add-or-edit/configOld/tableTags/columnConfig.js +0 -5
  137. package/src/views/table/add-or-edit/configOld/tableTags/index.vue +0 -353
  138. package/src/views/table/add-or-edit/configOld/tableTags/operation-but-config.vue +0 -75
  139. package/src/views/table/add-or-edit/configOld/tableTags/tool-but-config.vue +0 -92
  140. package/src/views/table/add-or-edit/index.vue +0 -201
  141. package/src/views/table/add-or-edit/themeModel/index.vue +0 -53
  142. package/src/views/table/add-or-edit/themeModel/init-model-table.vue +0 -48
  143. package/src/views/table/add-or-edit/themeModel/init-model.vue +0 -81
  144. package/src/views/table/add-or-edit/themeModel/left-right.vue +0 -24
  145. package/src/views/table/add-or-edit/themeModel/left-tree-right-table.vue +0 -75
  146. package/src/views/table/add-or-edit/themeModel/olTableSearchModelMixins.js +0 -42
  147. package/src/views/table/add-or-edit/themeModel/splitpanesThemeModel.vue +0 -49
  148. package/src/views/table/add-or-edit/themeModel/top-1-bottom-2.vue +0 -29
  149. package/src/views/table/add-or-edit/themeModel/top-2-bottom-1.vue +0 -32
  150. package/src/views/table/add-or-edit/themeModel/top-2-bottom-2.vue +0 -32
  151. package/src/views/table/add-or-edit/themeModel/top-bottom.vue +0 -14
  152. package/src/views/table/index.vue +0 -43
  153. package/src/views/table/index2.vue +0 -199
  154. package/src/views/table/preview/index.vue +0 -29
  155. package/src/views/tree/components/config-core-data.vue +0 -85
  156. package/src/views/tree/components/config-core-table.vue +0 -362
  157. package/src/views/tree/components/config-core-tree/data/events.js +0 -95
  158. package/src/views/tree/components/config-core-tree/data/option.js +0 -88
  159. package/src/views/tree/components/config-core-tree/data/prop.js +0 -28
  160. package/src/views/tree/components/config-core-tree/index.vue +0 -181
  161. package/src/views/tree/components/config-core.vue +0 -42
  162. package/src/views/tree/components/form-config/index.vue +0 -967
  163. package/src/views/tree/index.vue +0 -424
  164. package/vue.config.js +0 -44
  165. /package/{olp-table/demo.html → demo.html} +0 -0
  166. /package/{olp-table/fonts → fonts}/iconfont.1720006583309.7e4906d9.woff +0 -0
  167. /package/{olp-table/fonts → fonts}/iconfont.1720006583309.947a27f0.ttf +0 -0
  168. /package/{olp-table/olp-table.common.js → olp-table.common.js} +0 -0
  169. /package/{olp-table/olp-table.css → olp-table.css} +0 -0
  170. /package/{olp-table/olp-table.umd.js → olp-table.umd.js} +0 -0
  171. /package/{olp-table/olp-table.umd.min.js → olp-table.umd.min.js} +0 -0
@@ -1,20 +0,0 @@
1
- import olTable from "@/components/table/ol-table/index.vue";
2
- import olCodemirrorTag from "@/components/codemirror-tag.vue";
3
- import olSelectDom from "@/components/ol-select-dom.vue";
4
- import olDictTag from "@/components/ol-dict-tag.vue";
5
- import modelIndex from "@/components/table/model/model-index";
6
- // 权限
7
- import {hasPermi} from '@/directives/permission/hasPermi';
8
-
9
- const coms = [olTable,olCodemirrorTag,olDictTag,olSelectDom];
10
-
11
- // 批量组件注册
12
- const install = function (Vue) {
13
- coms.forEach((com) => {
14
- Vue.component(com.name, com);
15
- });
16
- Vue.component("OTable", modelIndex);
17
- hasPermi(Vue);
18
- };
19
-
20
- export default {install}; // 这个方法以后再使用的时候可以被use调用
@@ -1,61 +0,0 @@
1
- "use strict";
2
-
3
- import Vue from 'vue';
4
- import axios from "axios";
5
-
6
- // Full config: https://github.com/axios/axios#request-config
7
- // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
8
- // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
9
- // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
10
-
11
- let config = {
12
- // baseURL: process.env.baseURL || process.env.apiUrl || ""
13
- // timeout: 60 * 1000, // Timeout
14
- // withCredentials: true, // Check cross-site Access-Control
15
- };
16
-
17
- const _axios = axios.create(config);
18
-
19
- _axios.interceptors.request.use(
20
- function(config) {
21
- // Do something before request is sent
22
- return config;
23
- },
24
- function(error) {
25
- // Do something with request error
26
- return Promise.reject(error);
27
- }
28
- );
29
-
30
- // Add a response interceptor
31
- _axios.interceptors.response.use(
32
- function(response) {
33
- // Do something with response data
34
- return response;
35
- },
36
- function(error) {
37
- // Do something with response error
38
- return Promise.reject(error);
39
- }
40
- );
41
-
42
- Plugin.install = function(Vue, options) {
43
- Vue.axios = _axios;
44
- window.axios = _axios;
45
- Object.defineProperties(Vue.prototype, {
46
- axios: {
47
- get() {
48
- return _axios;
49
- }
50
- },
51
- $axios: {
52
- get() {
53
- return _axios;
54
- }
55
- },
56
- });
57
- };
58
-
59
- Vue.use(Plugin)
60
-
61
- export default Plugin;
package/src/store/dict.js DELETED
@@ -1,76 +0,0 @@
1
- import {createPinia, defineStore, getActivePinia, setActivePinia} from 'pinia'
2
- const DIST = "ONLINE-DEVELOPMENT-TABLE-DIST";
3
- import {get} from "@/utils/http/httpUtil";
4
-
5
- if (!getActivePinia()) {
6
- setActivePinia(createPinia())
7
- }
8
- export const storeDict = defineStore(DIST, {
9
- state: () => {
10
- return {
11
- value: {},//{type:[]} 数组形式
12
- object: {},//对象形式
13
- isInit: true,
14
- }
15
- }, getters: {
16
- val: (state) => {
17
- return (code) => {
18
- return state.value[code]
19
- };
20
- }, obj: (state) => {
21
- return (code) => state.object[code];
22
- }, default: (state) => {
23
- return async (code) => {
24
- if (state.value[code]) {
25
- for (let o of state.value[code]) {
26
- if (o.isDefault == 1) {
27
- return String(o.value);
28
- }
29
- }
30
- }
31
- }
32
- }
33
- }, actions: {
34
- async init() {
35
- if (this.isInit) {
36
- await this.initValue();
37
- }
38
- },
39
- async initValue() {
40
- let dictItems = localStorage.getItem(DIST);
41
- if (dictItems) {
42
- let value = JSON.parse(dictItems);
43
- this.value = value;
44
- let obj = {};
45
- for (let key of Object.keys(value)) {
46
- for (let o of value[key]) {
47
- o.label = o.dictLabel;
48
- o.value = String(o.dictValue);
49
- obj[o.dictCode] = o;
50
- }
51
- }
52
- this.object = obj;
53
- this.isInit = false;
54
- } else {
55
- console.log("数据字典未初始化:"+DIST)
56
- //await this.refresh()
57
- }
58
- }, async refresh() {
59
- localStorage.removeItem(DIST);
60
- await get( '/online/sysDictData/initDist').then((value) => {
61
- //await get( '/online/sysDictData/listOnline').then((value) => {
62
- let obj = {};
63
- for (let key of Object.keys(value)) {
64
- for (let o of value[key]) {
65
- o.label = o.dictLabel;
66
- o.value = String(o.dictValue);
67
- obj[o.dictCode] = o;
68
- }
69
- }
70
- this.value = value;
71
- this.object = obj;
72
- localStorage.setItem(DIST, JSON.stringify(value));
73
- });
74
- }
75
- }
76
- })
@@ -1,52 +0,0 @@
1
-
2
- import {createPinia, defineStore, getActivePinia, setActivePinia} from 'pinia'
3
- import {get} from "@/utils/http/httpUtil";
4
- const DIST_TYPE = "ONLINE-DEVELOPMENT-TABLE-DIST-TYPE";
5
-
6
- if (!getActivePinia()) {
7
- setActivePinia(createPinia())
8
- }
9
- export const storeDictType = defineStore(DIST_TYPE, {
10
- state: () => {
11
- return {
12
- value: [], isInit: true,
13
- http: undefined,
14
- }
15
- }, getters: {
16
- val: (state) => {
17
- return () => state.value;
18
- }
19
- }, actions: {
20
- async init() {
21
- if (this.isInit) {
22
- await this.initValue();
23
- }
24
- },
25
- async initValue() {
26
- let dictItems = localStorage.getItem(DIST_TYPE);
27
- //let dictItems = undefined;
28
- if (dictItems) {
29
- let value = JSON.parse(dictItems);
30
- this.value = value;
31
- this.isInit = false;
32
- } else {
33
- console.log("数据字典未初始化:"+DIST_TYPE)
34
- //await this.refresh()
35
- }
36
- },
37
- async refresh() {
38
- localStorage.removeItem(DIST_TYPE);
39
- //await get('/online/sysDictType/listOnline').then((v) => {
40
- await get('/online/sysDictType/listDict').then((v) => {
41
- for (let o of v) {
42
- o.dictLabel = o.name;
43
- o.dictValue = String(o.code);
44
- o.label = o.name;
45
- o.value = String(o.code);
46
- }
47
- localStorage.setItem(DIST_TYPE, JSON.stringify(v));
48
- this.value = v;
49
- });
50
- }
51
- }
52
- })
@@ -1,45 +0,0 @@
1
- import {createPinia, defineStore, getActivePinia, setActivePinia} from 'pinia'
2
-
3
- //缓存的键名,唯一标识
4
- const PERMISSION_CACHE_KEY = "ONLINE-DEVELOPMENT-TABLE-PERMI";
5
- import {get} from "@/utils/http/httpUtil";
6
-
7
- if (!getActivePinia()) {
8
- setActivePinia(createPinia())
9
- }
10
- export const storePermi = defineStore(PERMISSION_CACHE_KEY , {
11
- state: () => {
12
- return {
13
- value: [],
14
- isInit: true,
15
- }
16
- },
17
- getters: {
18
- // 获取缓存的值
19
- val: (state) => state.value,
20
- },
21
- actions: {
22
- async init() {
23
- if (this.isInit) {
24
- await this.initValue();
25
- }
26
- },
27
- async initValue() {
28
- let dataItems = localStorage.getItem(PERMISSION_CACHE_KEY );
29
- if (dataItems) {
30
- let value = JSON.parse(dataItems);
31
- this.value = value;
32
- this.isInit = false
33
- } else {
34
- // await this.refresh(http)
35
- }
36
- },
37
- async refresh() {
38
- localStorage.removeItem(PERMISSION_CACHE_KEY );
39
- await get('/online/sysDictData/listPermi').then((value) => {
40
- this.value = value;
41
- localStorage.setItem(PERMISSION_CACHE_KEY , JSON.stringify(value));
42
- });
43
- }
44
- }
45
- })
@@ -1,37 +0,0 @@
1
- /* 在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */
2
- @font-face {
3
- font-family: 'online'; /* Project id 4539076 */
4
- src:
5
- url('//at.alicdn.com/t/c/font_4539076_9ii7aenrdz.woff2?t=1715239008922') format('woff2'),
6
- url('//at.alicdn.com/t/c/font_4539076_9ii7aenrdz.woff?t=1715239008922') format('woff'),
7
- url('//at.alicdn.com/t/c/font_4539076_9ii7aenrdz.ttf?t=1715239008922') format('truetype');
8
- }
9
-
10
- .online {
11
- font-family: "online" !important;
12
- font-style: normal;
13
- -webkit-font-smoothing: antialiased;
14
- -moz-osx-font-smoothing: grayscale;
15
- }
16
-
17
- // 关于 图标 CSS 的设置
18
- [class^="online-"] {
19
- font-family: "online" !important;
20
- /* 以下内容参照第三方图标库本身的规则 */
21
- font-style: normal;
22
- -webkit-font-smoothing: antialiased;
23
- -moz-osx-font-smoothing: grayscale;
24
- }
25
- .el-menu-item [class^=online] {
26
- margin-right: 5px;
27
- width: 24px;
28
- text-align: center;
29
- vertical-align: middle;
30
- }
31
-
32
- .el-submenu [class^=online] {
33
- vertical-align: middle;
34
- margin-right: 5px;
35
- width: 24px;
36
- text-align: center;
37
- }
@@ -1,48 +0,0 @@
1
- :root {
2
- --vxe-table-row-height-medium: 43px !important;
3
- --vxe-button-height-medium:35px !important;
4
- --vxe-input-height-medium:35px !important;
5
- --vxe-font-size-medium: 15px !important;
6
- --vxe-table-row-height-small: 36px !important;
7
- --vxe-button-height-small:30px !important;
8
- --vxe-input-height-small:31px !important;
9
- --vxe-font-size-small: 14px !important;
10
- --vxe-table-row-height-mini: 30px !important;
11
- --vxe-button-height-mini:28px !important;
12
- --vxe-button-height-mini:28px !important;
13
- --vxe-font-size-mini: 13px !important;
14
- --vxe-primary-color: #1677FF !important;
15
- --vxe-success-color: #52c41a !important;
16
- --vxe-warning-color: #faad14 !important;
17
- --vxe-error-color: #ff4d4f !important;
18
- --vxe-info-color: #1677ff !important;
19
- --vxe-table-header-font-weight: 600;
20
- --vxe-table-row-striped-background-color: rgba(0, 119, 255, 0.04) !important;
21
- --vxe-table-row-radio-checked-background-color: #e1f4fd !important;
22
- --vxe-table-row-checkbox-checked-background-color: #cbeefd !important;
23
- --vxe-table-row-current-background-color: #e1f4fd !important;
24
- --vxe-pager-perfect-button-background-color: #f4f4f56b !important;
25
-
26
- .vxe-table {
27
- .vxe-header--row {
28
- color: rgba(0, 0, 0, 0.59);
29
- background-color: #fafafa;
30
-
31
- }
32
- .vxe-body--column{
33
- color: rgba(0, 0, 0, 0.88);
34
- }
35
-
36
- }
37
- .vxe-grid.size--mini {
38
- .vxe-header--row{
39
- font-size: 12px;
40
- }
41
- .vxe-toolbar,.vxe-form{
42
- .vxe-button{
43
- font-size: 13px;
44
- min-width: 32px !important;
45
- }
46
- }
47
- }
48
- }
@@ -1,32 +0,0 @@
1
-
2
- /* 为整个页面的滚动条设置样式 */
3
- ::-webkit-scrollbar {
4
- width: 8px; /* 设置滚动条的宽度 */
5
- height: 8px; /* 设置滚动条的宽度 */
6
- }
7
-
8
- /* 滚动条的滑块 */
9
- ::-webkit-scrollbar-thumb {
10
- background: #caced0; /* 设置滑块的背景颜色 */
11
- border-radius: 4px;
12
- }
13
-
14
- /* 当鼠标悬停在滑块上 */
15
- ::-webkit-scrollbar-thumb:hover {
16
- background: #93999d; /* 设置滑块的背景颜色 */
17
- }
18
-
19
-
20
- /* 覆盖表格文本颜色 */
21
- .vxe-table {
22
- /* .vxe-header--row{
23
- color: #909399;
24
- }*/
25
- .row--hover{
26
- background-color: #ace3fc !important;
27
- }
28
-
29
- .vxe-header--row {
30
- background-color: #ffffff;
31
- }
32
- }
@@ -1,87 +0,0 @@
1
- import CryptoJS from 'crypto-js';
2
- import pako from 'pako';
3
- import { Base64 } from 'js-base64';
4
-
5
- // 配置参数
6
- const SECRETKEY = "liuzhououlaipu66"; // 必须与Java保持一致
7
- const IV_LENGTH = 16;
8
-
9
- // ================== 加密流程 ================== //
10
- /**
11
- * JS加密(与Java互操作)
12
- * @param {Object|string} data - 待加密数据
13
- * @returns {string} Base64加密字符串
14
- */
15
- function encryptWithCompress(data) {
16
- // Step1:JSON序列化
17
- const jsonStr = typeof data === 'string' ? data : JSON.stringify(data);
18
-
19
- // Step2:GZIP压缩
20
- const compressed = pako.gzip(jsonStr, { level: 6 });
21
-
22
- // Step3:生成随机IV
23
- const iv = CryptoJS.lib.WordArray.random(IV_LENGTH);
24
-
25
- // Step4:AES加密
26
- const key = CryptoJS.enc.Utf8.parse(SECRETKEY);
27
- const cipher = CryptoJS.AES.encrypt(
28
- CryptoJS.lib.WordArray.create(compressed),
29
- key,
30
- {
31
- iv: iv,
32
- mode: CryptoJS.mode.CBC,
33
- padding: CryptoJS.pad.Pkcs7
34
- }
35
- );
36
-
37
- // Step5:拼接IV+密文 → Base64
38
- const ivBytes = CryptoJS.enc.Hex.parse(iv.toString(CryptoJS.enc.Hex));
39
- const combined = ivBytes.concat(cipher.ciphertext);
40
- return combined.toString(CryptoJS.enc.Base64);
41
- }
42
-
43
- // ================== 解密流程 ================== //
44
- /**
45
- * JS解密(兼容Java加密数据)
46
- * @param {string} encryptedBase64 - Java加密字符串
47
- * @returns {Object} 原始数据
48
- */
49
- function decryptWithDecompress(encryptedBase64) {
50
- // Step1:Base64解码(处理Apache格式)
51
- const rawData = Base64.toUint8Array(encryptedBase64.replace(/\n/g, ''));
52
-
53
- // Step2:提取IV和密文
54
- const ivBytes = rawData.slice(0, IV_LENGTH);
55
- const cipherBytes = rawData.slice(IV_LENGTH);
56
-
57
- // Step3:AES解密配置
58
- const key = CryptoJS.enc.Utf8.parse(SECRETKEY);
59
- const iv = CryptoJS.lib.WordArray.create(ivBytes);
60
-
61
- // Step4:执行解密
62
- const decrypted = CryptoJS.AES.decrypt(
63
- { ciphertext: CryptoJS.lib.WordArray.create(cipherBytes) },
64
- key,
65
- { iv: iv, padding: CryptoJS.pad.Pkcs7 }
66
- );
67
-
68
- // Step5:GZIP解压
69
- const uint8Array = new Uint8Array(decrypted.sigBytes);
70
- decrypted.words.forEach((word, i) => {
71
- uint8Array[i*4] = (word >> 24) & 0xff;
72
- uint8Array[i*4+1] = (word >> 16) & 0xff;
73
- uint8Array[i*4+2] = (word >> 8) & 0xff;
74
- uint8Array[i*4+3] = word & 0xff;
75
- });
76
-
77
- try {
78
- const decompressed = pako.ungzip(uint8Array);
79
- const str = new TextDecoder().decode(decompressed);
80
- return JSON.parse(str);
81
- } catch (e) {
82
- throw new Error(`解密失败:${e.message}`);
83
- }
84
- }
85
- export {
86
- encryptWithCompress, decryptWithDecompress,
87
- }
@@ -1,35 +0,0 @@
1
- export const getDate = () => {
2
- return dateFormat(new Date(), 1)
3
- }
4
- export const getDateTime = (format) => {
5
- return dateFormat(new Date(), format)
6
- }
7
- export const dateFormat = (date, format) => {
8
- if (!date) {
9
- date = new Date();
10
- }
11
- let yyyy = date.getFullYear(); // 年
12
- let MM = date.getMonth() + 1; // 月
13
- MM = MM < 10 ? '0' + MM : MM;
14
- let dd = date.getDate(); // 日
15
- dd = dd < 10 ? '0' + dd : dd; // 日
16
- let HH = date.getHours(); // 时
17
- HH = HH < 10 ? '0' + HH : HH; // 如果只有一位,则前面补零
18
- let mm = date.getMinutes(); // 分
19
- mm = mm < 10 ? '0' + mm : mm; // 如果只有一位,则前面补零
20
- let ss = date.getSeconds();//秒
21
- ss = ss < 10 ? '0' + ss : ss; // 如果只有一位,则前面补零
22
-
23
- if (format === 1) {
24
- return yyyy
25
- } else if (format === 2) {
26
- return yyyy + '-' + MM
27
- } else if (format === 3) {
28
- return yyyy + '-' + MM + '-' + dd
29
- } else if (format === 98) {
30
- return yyyy + '-' + MM + '-' + dd + ' ' + HH + ':' + mm + ':' + ss + "_" + date.getTime().toString().substring(10)
31
- } else if (format === 99) {
32
- return yyyy + '年' + (date.getMonth() + 1) + '月' + date.getDate() + '日'
33
- }
34
- return yyyy + '-' + MM + '-' + dd + ' ' + HH + ':' + mm + ':' + ss
35
- }
@@ -1,159 +0,0 @@
1
- import {useMessage} from "@/utils/message";
2
- import FileSaver from "file-saver";
3
-
4
- const message = useMessage() // 消息弹窗
5
- /**
6
- * 组装导出表格
7
- * @param data 页面导出数据
8
- * @param name 文件名
9
- * @param keys 自定义导出字段
10
- * @param option 对齐方式
11
- * @param columns 页面字段
12
- * @param sheetOpt 多sheet
13
- */
14
- import ExcelJS from "exceljs";
15
-
16
- export function exportExcel({data, name, keys, option, columns, sheetOpt}) {
17
- // 创建工作簿
18
- const workbook = new ExcelJS.Workbook();
19
- // 添加工作表,名为sheet1
20
- const sheet1 = workbook.addWorksheet("sheet1");
21
- sheet1.columns = getColumns(columns)
22
- // 将数据写入工作表
23
- if (data && data.length >= 1) {
24
- setExportData(data, sheet1, columns)
25
- }
26
- // 标题宽度
27
- setColumnWidth({sheet: sheet1, option: option})
28
- setRowHorizontal({sheet: sheet1, option: option})
29
-
30
- saveXlsx(workbook, name)
31
- }
32
-
33
- /**
34
- * 获取导出excel标题列
35
- * @param keys 自定义导出字段
36
- * @param columns 页面字段
37
- * @returns {*[]}
38
- */
39
- function getColumns(columns) {
40
- let res = []
41
- for (const column of columns) {
42
- const width = column.width
43
- res.push({
44
- header: column.title, key: column.field, width: isNaN(width) ? 20 : width / 10
45
- })
46
- }
47
- return res
48
- }
49
-
50
- /**
51
- * 设置全部单元格对齐方式
52
- * @param sheet
53
- * @param option
54
- */
55
- function setRowHorizontal({sheet, option}) {
56
- sheet.eachRow((row, rowNumber) => {
57
- // 遍历每个单元格
58
- row.eachCell((cell) => {
59
- // 设置边框样式
60
- // cell.border = {
61
- // top: {style: 'thin'},
62
- // left: {style: 'thin'},
63
- // bottom: {style: 'thin'},
64
- // right: {style: 'thin'}
65
- // };
66
- // 设置居中对齐
67
- cell.alignment = {
68
- vertical: 'middle', horizontal: option.align
69
- };
70
- });
71
- row.font = {
72
- size: 12, name: '宋体'
73
- };
74
- });
75
- }
76
-
77
- /**
78
- * 根据表格单元格值设置单元格宽度
79
- * @param sheet 表格
80
- * @param option 单元格内容对齐方式
81
- */
82
- function setColumnWidth({sheet, option}) {
83
- sheet.columns.forEach(function (column, i) {
84
- let maxLength = 0;
85
- column["eachCell"]({includeEmpty: true}, function (cell) {
86
- let columnLength = cell.value ? cell.value.toString().length : 10;
87
- if (new RegExp("[\\u4E00-\\u9FFF]+", "g").test(cell.value)) {
88
- columnLength = columnLength * 2
89
- }
90
- maxLength = 10
91
- if (columnLength >= maxLength) {
92
- maxLength = columnLength + 3;
93
- }
94
- column.width = maxLength > 30 ? 30 : maxLength;
95
- });
96
-
97
- // 列头样式
98
- let cell = sheet.getCell(column.letter + '1')
99
- cell.fill = {
100
- type: 'pattern', pattern: 'solid', fgColor: {argb: 'ff808080'}, bgColor: {argb: '00000000'},
101
- }
102
- cell.font = {
103
- color: {argb: 'ffffffff'},
104
- }
105
- cell.alignment = {
106
- horizontal: option.align, vertical: 'middle',
107
- }
108
- });
109
- }
110
-
111
- /**
112
- * 导出表格赋值
113
- * @param data 导出数据
114
- * @param keys 自定义导出字段 t_id
115
- * @param sheet 表格
116
- * @param columns 页面表单字段
117
- */
118
- function setExportData(data, sheet, columns) {
119
- data.map(row => {
120
- let column = {}
121
- columns.forEach((item) => {
122
- column[item.field] = getRowValue(item, row)
123
- })
124
- let values = Object.values(column);
125
- sheet.addRow(values);
126
- })
127
- }
128
-
129
- /**
130
- * 获取行数据值
131
- * @param columns 页面表单字段
132
- * @param row 行数据
133
- * @param key 字段
134
- * @returns {*}
135
- */
136
- function getRowValue(column, row) {
137
- let value = row[column.field]
138
- if (column.params && column.params.dictValueLabel && column.params.dictValueLabel[value]) {
139
- value = column.params.dictValueLabel[value];
140
- }
141
- return value
142
- }
143
-
144
- /**
145
- * 导出
146
- * @param workbook 工作表格
147
- * @param name 导出文件名称
148
- */
149
- function saveXlsx(workbook, name) {
150
- // 导出表格文件
151
- workbook.xlsx.writeBuffer().then((buffer) => {
152
- let file = new Blob([buffer], {type: "application/octet-stream"});
153
- FileSaver.saveAs(file, name + ".xlsx");
154
- message.success("导出成功[" + name + ".xlsx]")
155
- }).catch(error => {
156
- message.error("导出失败[" + name + ".xlsx]")
157
- console.log('Error writing excel export', error)
158
- })
159
- }