@lambo-design/shared 1.0.0-beta.25 → 1.0.0-beta.251

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 (203) hide show
  1. package/config/config.js +16 -2
  2. package/config/index.js +7 -2
  3. package/config/themes/atrovirens/atrovirens.css +577 -0
  4. package/config/themes/atrovirens/atrovirens.css.map +1 -0
  5. package/config/themes/atrovirens/atrovirens.less +668 -0
  6. package/config/themes/atrovirens/var.less +675 -0
  7. package/config/themes/blue/blue.css +577 -0
  8. package/config/themes/blue/blue.css.map +1 -0
  9. package/config/themes/blue/blue.less +670 -0
  10. package/config/themes/blue/var.less +678 -0
  11. package/config/themes/blue-white/blue-white.css +577 -0
  12. package/config/themes/blue-white/blue-white.css.map +1 -0
  13. package/config/themes/blue-white/blue-white.less +670 -0
  14. package/config/themes/blue-white/var.less +677 -0
  15. package/config/themes/blue-white-tight/blue-white-tight.css +578 -0
  16. package/config/themes/blue-white-tight/blue-white-tight.css.map +1 -0
  17. package/config/themes/blue-white-tight/blue-white-tight.less +672 -0
  18. package/config/themes/blue-white-tight/var.less +678 -0
  19. package/config/themes/danqing/danqing.css +577 -0
  20. package/config/themes/danqing/danqing.css.map +1 -0
  21. package/config/themes/danqing/danqing.less +669 -0
  22. package/config/themes/danqing/danqing.wxss +576 -0
  23. package/config/themes/danqing/var.less +680 -0
  24. package/config/themes/deep/deep.css +577 -0
  25. package/config/themes/deep/deep.css.map +1 -0
  26. package/config/themes/deep/deep.less +670 -0
  27. package/config/themes/deep/var.less +678 -0
  28. package/config/themes/default/default.css +576 -242
  29. package/config/themes/default/default.css.map +1 -1
  30. package/config/themes/default/default.less +368 -16
  31. package/config/themes/default/var.less +376 -12
  32. package/config/themes/eap/eap.css +577 -0
  33. package/config/themes/eap/eap.css.map +1 -0
  34. package/config/themes/eap/eap.less +672 -0
  35. package/config/themes/eap/var.less +678 -0
  36. package/config/themes/gold/gold.css +577 -0
  37. package/config/themes/gold/gold.css.map +1 -0
  38. package/config/themes/gold/gold.less +672 -0
  39. package/config/themes/gold/var.less +370 -6
  40. package/config/themes/index.js +18 -4
  41. package/config/themes/lime/lime.css +577 -0
  42. package/config/themes/lime/lime.css.map +1 -0
  43. package/config/themes/lime/lime.less +672 -0
  44. package/config/themes/lime/var.less +371 -6
  45. package/config/themes/orange/orange.css +576 -242
  46. package/config/themes/orange/orange.css.map +1 -1
  47. package/config/themes/orange/orange.less +352 -0
  48. package/config/themes/orange/var.less +371 -6
  49. package/config/themes/red/red.css +576 -242
  50. package/config/themes/red/red.css.map +1 -1
  51. package/config/themes/red/red.less +352 -0
  52. package/config/themes/red/var.less +370 -6
  53. package/config/themes/theme-atrovirens.js +559 -0
  54. package/config/themes/theme-blue.js +559 -0
  55. package/config/themes/theme-bw.js +559 -0
  56. package/config/themes/theme-bwt.js +561 -0
  57. package/config/themes/theme-danqing.js +559 -0
  58. package/config/themes/theme-deep.js +559 -0
  59. package/config/themes/theme-default.js +366 -60
  60. package/config/themes/theme-eap.js +559 -0
  61. package/config/themes/theme-gold.js +314 -8
  62. package/config/themes/theme-lime.js +314 -8
  63. package/config/themes/theme-orange.js +547 -27
  64. package/config/themes/theme-red.js +551 -32
  65. package/config/themes/theme-white.js +559 -0
  66. package/config/themes/white/var.less +677 -0
  67. package/config/themes/white/white.css +577 -0
  68. package/config/themes/white/white.css.map +1 -0
  69. package/config/themes/white/white.less +670 -0
  70. package/directives/module/print.js +1 -0
  71. package/directives/module/vue-print-nb/README.md +63 -0
  72. package/directives/module/vue-print-nb/print.js +94 -0
  73. package/directives/module/vue-print-nb/printarea.js +532 -0
  74. package/index.js +7 -1
  75. package/nstyles/common.less +197 -0
  76. package/nstyles/components/404.less +46 -0
  77. package/nstyles/components/button.less +34 -0
  78. package/nstyles/components/date-picker.less +37 -0
  79. package/nstyles/components/drawer.less +20 -0
  80. package/nstyles/components/dropdown.less +18 -0
  81. package/nstyles/components/excel-flow.less +72 -0
  82. package/nstyles/components/form.less +313 -0
  83. package/nstyles/components/index.less +23 -0
  84. package/nstyles/components/layout/collect.less +10 -0
  85. package/nstyles/components/layout/detail-view.less +107 -0
  86. package/nstyles/components/layout/full-screen.less +7 -0
  87. package/nstyles/components/layout/index.less +7 -0
  88. package/nstyles/components/layout/other-menu.less +142 -0
  89. package/nstyles/components/layout/page-view.less +101 -0
  90. package/nstyles/components/layout/sider-trigger.less +41 -0
  91. package/nstyles/components/layout/tags-nav.less +113 -0
  92. package/nstyles/components/modal.less +90 -0
  93. package/nstyles/components/n-button.less +131 -0
  94. package/nstyles/components/n-image-preview.less +131 -0
  95. package/nstyles/components/n-model/index.less +19 -0
  96. package/nstyles/components/n-model/report-index.less +43 -0
  97. package/nstyles/components/n-panel.less +41 -0
  98. package/nstyles/components/n-picker.less +37 -0
  99. package/nstyles/components/n-sign.less +17 -0
  100. package/nstyles/components/n-tooltip.less +10 -0
  101. package/nstyles/components/panel.less +31 -0
  102. package/nstyles/components/select.less +3 -0
  103. package/nstyles/components/sign.less +27 -0
  104. package/nstyles/components/table.less +315 -0
  105. package/nstyles/components/tree.less +159 -0
  106. package/nstyles/components/upload.less +164 -0
  107. package/nstyles/index.less +5 -0
  108. package/nstyles/reset.less +65 -0
  109. package/nstyles/third/ag.less +174 -0
  110. package/nstyles/third/icons/sort-desc.svg +1 -0
  111. package/nstyles/third/icons/sort-up.svg +1 -0
  112. package/nstyles/third/icons/sorting.svg +1 -0
  113. package/nstyles/third/index.less +11 -0
  114. package/nstyles/third/view-design.less +367 -0
  115. package/nstyles/variables/base.less +143 -0
  116. package/nstyles/variables/index.less +4 -0
  117. package/nstyles/variables/theme/default/button.less +7 -0
  118. package/nstyles/variables/theme/default/common.less +57 -0
  119. package/nstyles/variables/theme/default/index.less +7 -0
  120. package/nstyles/variables/theme/default/layout.less +40 -0
  121. package/nstyles/variables/theme/default/table.less +37 -0
  122. package/nstyles/variables/theme/default/tag.less +3 -0
  123. package/nstyles/variables/theme/default/upload.less +3 -0
  124. package/nstyles/variables/theme/index.less +13 -0
  125. package/nstyles/variables/theme/lsv/button.less +7 -0
  126. package/nstyles/variables/theme/lsv/common.less +39 -0
  127. package/nstyles/variables/theme/lsv/index.less +5 -0
  128. package/nstyles/variables/theme/lsv/layout.less +21 -0
  129. package/nstyles/variables/theme/lsv/table.less +20 -0
  130. package/nstyles/variables/theme/lsv/tag.less +3 -0
  131. package/nstyles/variables/theme/small/button.less +7 -0
  132. package/nstyles/variables/theme/small/common.less +39 -0
  133. package/nstyles/variables/theme/small/index.less +5 -0
  134. package/nstyles/variables/theme/small/layout.less +21 -0
  135. package/nstyles/variables/theme/small/table.less +17 -0
  136. package/nstyles/variables/theme/small/tag.less +3 -0
  137. package/package.json +27 -7
  138. package/plugin/index.js +12 -0
  139. package/plugin/module/date-format.js +30 -0
  140. package/plugin/module/loading.js +26 -0
  141. package/plugin/module/warn-handler.js +11 -0
  142. package/styles/image/inspur.png +0 -0
  143. package/styles/image/lan_navigator.png +0 -0
  144. package/styles/image/lv_navigator.png +0 -0
  145. package/utils/ajax/content-type.js +30 -0
  146. package/utils/ajax/sseFetchUtil.js +104 -0
  147. package/utils/assist.js +91 -25
  148. package/utils/base64.js +126 -0
  149. package/utils/blob.js +47 -0
  150. package/utils/crypto/aes.js +23 -0
  151. package/utils/crypto/index.js +10 -0
  152. package/utils/crypto/rsa.js +16 -0
  153. package/utils/date.js +334 -305
  154. package/utils/dict/built-in-dict.js +20 -0
  155. package/utils/dict/index.js +168 -0
  156. package/utils/event.js +72 -0
  157. package/utils/excel.js +371 -239
  158. package/utils/file.js +19 -0
  159. package/utils/form/validate.js +29 -0
  160. package/utils/half-year.js +68 -0
  161. package/utils/index.js +37 -0
  162. package/utils/json.js +29 -0
  163. package/utils/lodop.js +5 -0
  164. package/utils/menu/index.js +275 -15
  165. package/utils/mime_type.js +67 -0
  166. package/utils/modelerUtil.js +4 -1
  167. package/utils/n/api.js +22 -0
  168. package/utils/n/date.js +57 -0
  169. package/utils/n/index.js +10 -0
  170. package/utils/n/is-type.js +176 -0
  171. package/utils/n/number.js +144 -0
  172. package/utils/n/permission-cache.js +11 -0
  173. package/utils/n/reuqest/axiosN.js +17 -0
  174. package/utils/n/reuqest/content-type.js +19 -0
  175. package/utils/n/reuqest/interceptors.js +95 -0
  176. package/utils/n/reuqest/url-params.js +12 -0
  177. package/utils/n/storage.js +51 -0
  178. package/utils/n/token.js +51 -0
  179. package/utils/n/user-cache.js +11 -0
  180. package/utils/n/user.js +34 -0
  181. package/utils/n/uuid.js +16 -0
  182. package/utils/n-generator-routers.js +208 -0
  183. package/utils/n-router.js +205 -0
  184. package/utils/n-theme.js +30 -0
  185. package/utils/number.js +72 -15
  186. package/utils/oss.js +57 -0
  187. package/utils/platform.js +804 -23
  188. package/utils/quarter.js +58 -0
  189. package/utils/storage.js +198 -0
  190. package/utils/style.js +24 -0
  191. package/utils/theme.js +98 -3
  192. package/utils/transfer-queue.js +7 -0
  193. package/utils/transform.js +205 -0
  194. package/utils/type.js +102 -0
  195. package/utils/util.js +795 -0
  196. package/utils/vForm.js +349 -0
  197. package/utils/validator.js +181 -0
  198. package/config/themes/gold/default.css +0 -243
  199. package/config/themes/gold/default.css.map +0 -1
  200. package/config/themes/gold/default.less +0 -320
  201. package/config/themes/lime/default.css +0 -243
  202. package/config/themes/lime/default.css.map +0 -1
  203. package/config/themes/lime/default.less +0 -320
Binary file
Binary file
@@ -0,0 +1,30 @@
1
+ const contentTypeKey = 'Content-Type'
2
+
3
+ export function getContentType(config) {
4
+ // let type = config?.[contentTypeKey] || config?.['content-type'] || ''
5
+ let type = '';
6
+
7
+ if (config && config[contentTypeKey]) {
8
+ type = config[contentTypeKey];
9
+ } else if (config && config['content-type']) {
10
+ type = config['content-type'];
11
+ }
12
+ const suffixIdx = type.indexOf(';')
13
+ if (suffixIdx !== -1) {
14
+ type = type.substring(0, suffixIdx)
15
+ }
16
+
17
+ return type
18
+ }
19
+
20
+ export function setContentType(headers, type) {
21
+ headers[contentTypeKey] = type
22
+ }
23
+
24
+ export const CONTENT_TYPE = {
25
+ form: 'application/x-www-form-urlencoded',
26
+ multiForm: 'multipart/form-data',
27
+ body: 'application/json',
28
+ os: 'application/octet-stream',
29
+ json: 'application/json',
30
+ }
@@ -0,0 +1,104 @@
1
+ class CustomEventSource {
2
+ constructor(url, options) {
3
+ this.url = url;
4
+ this.options = options || {};
5
+ this.listeners = {};
6
+ this.awaitConnect()
7
+ }
8
+
9
+ async awaitConnect() {
10
+ const response = await fetch(this.url, { ...this.options, method: 'POST' });
11
+ const reader = response.body.getReader();
12
+ await this.readStream(reader);
13
+ }
14
+
15
+ async readStream(reader) {
16
+ let done, value, chunk = '';
17
+ do {
18
+ ({done, value} = await reader.read());
19
+ if (done) {
20
+ this.dispatchEvent('message_finished');
21
+ } else {
22
+ const decoder = new TextDecoder('utf-8');
23
+ chunk +=decoder.decode(value, { stream: true })
24
+ if (chunk && chunk.trim().endsWith("}")) {
25
+ const lines = chunk.split('\n');
26
+ chunk = '';
27
+ for (let line of lines) {
28
+ if (line.startsWith('data:')) {
29
+ const data = line.substring(5).trim(); // 去掉 'data:' 前缀
30
+ if (data) {
31
+ this.dispatchEvent('message', { data: data });
32
+ }
33
+ } else if (line.startsWith("{") && line.endsWith("}")) {
34
+ this.dispatchEvent('message', { data: line });
35
+ }
36
+ }
37
+ }
38
+ }
39
+ } while (!done);
40
+ }
41
+
42
+ connect() {
43
+ fetch(this.url, { ...this.options, method: 'POST' })
44
+ .then(response => {
45
+ if (response.ok && response.body) {
46
+ const reader = response.body.getReader();
47
+ this.read(reader);
48
+ } else {
49
+ throw new Error('Failed to connect to the SSE endpoint.');
50
+ }
51
+ })
52
+ .catch(error => {
53
+ console.error('Connection error:', error);
54
+ this.dispatchEvent('message_finished',error);
55
+ });
56
+ }
57
+
58
+ read(reader) {
59
+ reader.read().then(({done,value}) => {
60
+ if (done) {
61
+ this.dispatchEvent('message_finished');
62
+ } else {
63
+ const decoder = new TextDecoder('utf-8');
64
+ const chunk = decoder.decode(value, { stream: true });
65
+ if (chunk) {
66
+ const lines = chunk.split('\n');
67
+ for (let line of lines) {
68
+ if (line.startsWith('data:')) {
69
+ const data = line.substring(5).trim(); // 去掉 'data:' 前缀
70
+ if (data) {
71
+ this.dispatchEvent('message', { data: data });
72
+ }
73
+ } else if (line.startsWith("{") && line.endsWith("}")) {
74
+ this.dispatchEvent('message', { data: line });
75
+ }
76
+ }
77
+ }
78
+
79
+ this.read(reader);
80
+ }
81
+ }).catch(error => {
82
+ console.error('Read error:', error);
83
+ this.dispatchEvent('message_finished',error);
84
+ });
85
+ }
86
+
87
+ addEventListener(type, listener) {
88
+ if (!this.listeners[type]) {
89
+ this.listeners[type] = [];
90
+ }
91
+ this.listeners[type].push(listener);
92
+ }
93
+
94
+ dispatchEvent(type, event) {
95
+ if (this.listeners[type]) {
96
+ this.listeners[type].forEach(listener => listener(event));
97
+ }
98
+ }
99
+ }
100
+
101
+ export default CustomEventSource;
102
+ export {
103
+ CustomEventSource
104
+ }
package/utils/assist.js CHANGED
@@ -25,6 +25,23 @@ export function deepCopy(data) {
25
25
  }
26
26
  return o;
27
27
  }
28
+ export function deepMerge(target, ...sources) {
29
+ if (!sources.length) return target;
30
+ const source = sources.shift();
31
+
32
+ if (isObject(target) && isObject(source)) {
33
+ for (const key in source) {
34
+ if (isObject(source[key])) {
35
+ if (!target[key]) Object.assign(target, { [key]: {} });
36
+ deepMerge(target[key], source[key]);
37
+ } else {
38
+ Object.assign(target, { [key]: source[key] });
39
+ }
40
+ }
41
+ }
42
+
43
+ return deepMerge(target, ...sources);
44
+ }
28
45
 
29
46
  export function typeOf(obj) {
30
47
  const toString = Object.prototype.toString;
@@ -43,42 +60,91 @@ export function typeOf(obj) {
43
60
  return map[toString.call(obj)];
44
61
  }
45
62
 
46
- export function operateBtn(vm, h, currentRow, operationName, operation, type, permission) {
47
- return h('Button', {
48
- props: {
49
- type: type,
50
- size: "small",
51
- ghost: true,
52
- },
53
- directives: [(permission === '' || permission === null) ? '' : {
54
- name: "permission",
55
- value: permission
56
- }],
57
- style: {
58
- margin: '0 2px'
59
- },
60
- on: {
61
- 'click': () => {
62
- operation(vm, currentRow);
63
- }
63
+ export function operateBtn(vm, h, currentRow, operationName, operation, type, permission, disabled = false) {
64
+ let renderOption = {
65
+ props: {
66
+ type: type,
67
+ size: "small",
68
+ ghost: true,
69
+ disabled: disabled
70
+ },
71
+ style: {
72
+ margin: '0 2px'
73
+ },
74
+ on: {
75
+ 'click': () => {
76
+ operation(vm, currentRow);
64
77
  }
65
- }, operationName);
78
+ }
79
+ }
80
+ if(permission){
81
+ renderOption['directives'] = [{
82
+ name: "permission",
83
+ value: permission
84
+ }]
85
+ }
86
+
87
+ return h('Button', renderOption, operationName);
66
88
 
67
89
  }
68
90
 
69
- export function operateHref(vm, h, currentRow, operationName, operation) {
70
- return h('a', {
71
- style: {
72
- margin: '0 4px'
73
- },
91
+ export function operateHref(vm, h, currentRow, operationName, operation, type, permission, disabled = false) {
92
+ let renderOption = {
93
+ style: {
94
+ margin: '0 4px',
95
+ color: disabled ? '#ccc' : '',
96
+ cursor: disabled ? 'not-allowed' : '',
97
+ pointerEvents: disabled ? 'none' : ''
98
+ },
74
99
  on: {
75
100
  'click': () => {
76
101
  operation(vm, currentRow);
77
102
  }
78
103
  }
79
- }, operationName);
104
+ }
105
+ if(permission){
106
+ renderOption['directives'] = [{
107
+ name: "permission",
108
+ value: permission
109
+ }]
110
+ }
111
+
112
+ return h('a', renderOption, operationName);
113
+ }
114
+
115
+ export function operateMore(vm, h, operation) {
116
+ return h("Dropdown", {
117
+ style: {
118
+ marginLeft: "4px",
119
+ },
120
+ props: {
121
+ transfer: true,
122
+ }
123
+ }, [
124
+ h("a", {
125
+ style: {
126
+ margin: '0 4px',
127
+ borderBottom: '0px solid #CC9900',
128
+ }
129
+ }, [
130
+ h("span", "更多"),
131
+ h("Icon", {
132
+ props: {
133
+ type: "ios-arrow-down"
134
+ },
135
+ })
136
+ ]),
137
+ h('DropdownMenu', {
138
+ slot: "list",
139
+ }, operation)
140
+ ]);
80
141
  }
81
142
 
82
143
  export function isJson(arg) {
83
144
  return typeof (arg) == "object" && Object.prototype.toString.call(arg).toLowerCase() == "[object object]" && !arg.length
84
145
  };
146
+
147
+
148
+ export function isObject(item) {
149
+ return (item && typeof item === 'object' && !Array.isArray(item));
150
+ }
@@ -0,0 +1,126 @@
1
+ let Base64 = {
2
+ Base64Chars:
3
+ "abcdefghijklmnopqrstuv" +
4
+ "wxyzABCDEFGHIJKLMNOP" +
5
+ "QRSTUVWXYZ0123456789@*-",
6
+ /**
7
+ * Encode a string to a Base64 string follow Bse64 regular.
8
+ * @param s, a normal string
9
+ * @return a Base64 string
10
+ */
11
+ encode: function (s) {
12
+ if (!s || s.length == 0) return s;
13
+
14
+ var d = "";
15
+ var b = this.ucs2_utf8(s);
16
+ var b0, b1, b2, b3;
17
+ var len = b.length;
18
+ var i = 0;
19
+ while (i < len) {
20
+ var tmp = b[i++];
21
+ b0 = (tmp & 0xfc) >> 2;
22
+ b1 = (tmp & 0x03) << 4;
23
+ if (i < len) {
24
+ tmp = b[i++];
25
+ b1 |= (tmp & 0xf0) >> 4;
26
+ b2 = (tmp & 0x0f) << 2;
27
+ if (i < len) {
28
+ tmp = b[i++];
29
+ b2 |= (tmp & 0xc0) >> 6;
30
+ b3 = tmp & 0x3f;
31
+ } else {
32
+ b3 = 64; // 1 byte "-" is supplement
33
+
34
+ }
35
+ } else {
36
+ b2 = b3 = 64; // 2 bytes "-" are supplement
37
+
38
+ }
39
+
40
+ d += this.Base64Chars.charAt(b0);
41
+ d += this.Base64Chars.charAt(b1);
42
+ d += this.Base64Chars.charAt(b2);
43
+ d += this.Base64Chars.charAt(b3);
44
+ }
45
+
46
+ return d;
47
+
48
+ },
49
+
50
+ /**
51
+ * Encodes a ucs2 string to a utf8 integer array.
52
+ * @param s, a string
53
+ * @return an integer array
54
+ */
55
+ ucs2_utf8: function (s) {
56
+ if (!s) return null;
57
+ var d = new Array();
58
+ if (s == "") return d;
59
+
60
+ var c = 0, i = 0, j = 0;
61
+ var len = s.length;
62
+ while (i < len) {
63
+ c = s.charCodeAt(i++);
64
+ if (c <= 0x7f) {
65
+ // 1 byte
66
+
67
+ d[j++] = c;
68
+ } else if ((c >= 0x80) && (c <= 0x7ff)) {
69
+ // 2 bytes
70
+
71
+ d[j++] = ((c >> 6) & 0x1f) | 0xc0;
72
+ d[j++] = (c & 0x3f) | 0x80;
73
+ } else {
74
+ // 3 bytes
75
+
76
+ d[j++] = (c >> 12) | 0xe0;
77
+ d[j++] = ((c >> 6) & 0x3f) | 0x80;
78
+ d[j++] = (c & 0x3f) | 0x80;
79
+ }
80
+ }
81
+
82
+ return d;
83
+ },
84
+ /**
85
+ * Encodes a utf8 integer array to a ucs2 string.
86
+ * @param s, an integer array
87
+ * @return a string
88
+ */
89
+ utf8_ucs2: function (s) {
90
+ if (!s) return null;
91
+ var len = s.length;
92
+ if (len == 0) return "";
93
+
94
+ var d = "";
95
+ var c = 0, i = 0, tmp = 0;
96
+ while (i < len) {
97
+ c = s[i++];
98
+ if ((c & 0xe0) == 0xe0) {
99
+ // 3 bytes
100
+
101
+ tmp = (c & 0x0f) << 12;
102
+ c = s[i++];
103
+ tmp |= ((c & 0x3f) << 6);
104
+ c = s[i++];
105
+ tmp |= (c & 0x3f);
106
+ } else if ((c & 0xc0) == 0xc0) {
107
+ // 2 bytes
108
+
109
+ tmp = (c & 0x1f) << 6;
110
+ c = s[i++];
111
+ tmp |= (c & 0x3f);
112
+ } else {
113
+ // 1 byte
114
+
115
+ tmp = c;
116
+ }
117
+
118
+ d += String.fromCharCode(tmp);
119
+ }
120
+
121
+ return d;
122
+ }
123
+ };
124
+ export {
125
+ Base64
126
+ }
package/utils/blob.js ADDED
@@ -0,0 +1,47 @@
1
+ /**
2
+ * 将base64转换为Blob
3
+ *
4
+ * @param base64Data base64数据
5
+ * @param contentType 数据的MIME Type,如 png 为 image/png
6
+ * @returns Blob数据
7
+ */
8
+ export function base64ToBlob(base64Data, contentType) {
9
+ contentType = contentType || ''
10
+ const sliceSize = 1024
11
+ const byteCharacters = atob(base64Data)
12
+ const bytesLength = byteCharacters.length
13
+ const slicesCount = Math.ceil(bytesLength / sliceSize)
14
+ const byteArrays = new Array(slicesCount)
15
+
16
+ for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
17
+ const begin = sliceIndex * sliceSize
18
+ const end = Math.min(begin + sliceSize, bytesLength)
19
+
20
+ const bytes = new Array(end - begin)
21
+ for (let offset = begin, i = 0; offset < end; ++i, ++offset) {
22
+ bytes[i] = byteCharacters[offset].charCodeAt(0)
23
+ }
24
+ byteArrays[sliceIndex] = new Uint8Array(bytes)
25
+ }
26
+ return new Blob(byteArrays, { type: contentType })
27
+ }
28
+
29
+ export function blobToBase64(blob, hasPrefix = true) {
30
+ return new Promise((resolve) => {
31
+ const reader = new FileReader()
32
+ reader.onload = function () {
33
+ // const base64Data = (reader?.result || '')
34
+ let base64Data = '';
35
+ if (reader !== null && reader !== undefined) {
36
+ base64Data = reader.result || '';
37
+ }
38
+ if (hasPrefix) {
39
+ resolve(base64Data)
40
+ return
41
+ }
42
+ const base64WithoutPrefix = base64Data.split(',')[1]
43
+ resolve(base64WithoutPrefix)
44
+ }
45
+ reader.readAsDataURL(blob)
46
+ })
47
+ }
@@ -0,0 +1,23 @@
1
+ import * as CryptoJS from 'crypto-js';
2
+
3
+ const AES_KEY = 'gYj2iqBV5AzxC8H0';
4
+ const AES_IV = 'z5c8fSuHX1PxWtIg';
5
+
6
+ crypto.aes = {
7
+ encrypt(message) {
8
+ return CryptoJS.AES.encrypt(message, AES_KEY, {
9
+ mode: CryptoJS.mode.CBC,
10
+ padding: CryptoJS.pad.Pkcs7,
11
+ iv: AES_IV
12
+ })
13
+ },
14
+ decrypt(ciphertext) {
15
+ return CryptoJS.AES.decrypt(ciphertext, AES_KEY, {
16
+ mode: CryptoJS.mode.CBC,
17
+ padding: CryptoJS.pad.Pkcs7,
18
+ iv: AES_IV
19
+ }).toString(CryptoJS.enc.Utf8)
20
+ }
21
+ }
22
+
23
+ export default crypto.aes;
@@ -1,5 +1,7 @@
1
1
  import sm3 from "./sm3";
2
2
  import md5 from "./md5";
3
+ import NodeRSA from "node-rsa";
4
+ import {Base64} from '../base64'
3
5
 
4
6
  let crypto = {}
5
7
  crypto.sm3 = function (s) {
@@ -35,4 +37,12 @@ crypto.md5 = function (s, add) {
35
37
  return md5.MD5(s);
36
38
  };
37
39
 
40
+ crypto.encodePwd = function (s,pk){
41
+ if (!pk) {
42
+ pk = `MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD2iolFHi+6bUh+V6JPr2gFJQsC0QNsq2EwI0MAPlI5AaizBHRVMjX1H73ptuDSiT3QZh4kk74w+eDLyYj4JXo1SvvDw5w378SLhUIDzH0zrlt3oleT3kiPQxC17yM3Os/wrtHO7IC+KGo9qrg+LJFyR/fYYHcyH9i+JAejBEnJQIDAQAB`
43
+ }
44
+ let nodeRSA = new NodeRSA(pk, "pkcs8-public");
45
+ return Base64.encode(nodeRSA.encrypt(s, 'base64'));
46
+ }
47
+
38
48
  export default crypto;
@@ -0,0 +1,16 @@
1
+ import NodeRSA from "node-rsa";
2
+
3
+ const publicKey = `-----BEGIN PUBLIC KEY-----
4
+ MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCyhhlApSAjPWRjzg+wSIfALbrC
5
+ Ti4GVBYYBjfMYKU0O9z6EGQAXSLPW+S4VYm4LKtKXuKoeF441KU2HvnGM63cTIYt
6
+ T4lGbTGeYfsbeWNs1u9G9J+DrfKK8HsVB1IZIqhbMf0x7KGMeoQ2SN4KtbaPIwhl
7
+ IPfXzuLZiCW90l+a/wIDAQAB
8
+ -----END PUBLIC KEY-----`;
9
+
10
+ // 创建NodeRSA实例并指定公钥格式
11
+ const key = new NodeRSA(publicKey, "pkcs8-public");
12
+
13
+ // 加密函数
14
+ function rsa(data) {
15
+ return key.encrypt(data, "base64");
16
+ }