adtec-core-package 0.4.1 → 0.4.2

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 (61) hide show
  1. package/README.en.md +36 -36
  2. package/package.json +59 -59
  3. package/src/api/BasicApi.ts +17 -17
  4. package/src/api/DocumentApi.ts +27 -27
  5. package/src/api/SysDictCacheApi.ts +26 -26
  6. package/src/api/SysUserApi.ts +35 -35
  7. package/src/api/framework.ts +12 -12
  8. package/src/assets/style/ant.scss +19 -19
  9. package/src/assets/style/index.less +180 -180
  10. package/src/components/ElFlex/ElFlex.vue +297 -297
  11. package/src/components/OperationAuth/operationAuth.vue +26 -26
  12. package/src/components/Search/ElIconSearch.vue +260 -260
  13. package/src/components/Search/ElSearch.vue +154 -154
  14. package/src/components/Table/ElTableColumnEdit.vue +218 -218
  15. package/src/components/Title/ElTitle.vue +49 -49
  16. package/src/components/autoToolTip/ElAutoToolTip.vue +61 -61
  17. package/src/components/baseEcharts/index.vue +48 -48
  18. package/src/components/business/userSelect.vue +412 -412
  19. package/src/components/upload/ElUploads.vue +9 -2
  20. package/src/components/upload/FileView.vue +158 -158
  21. package/src/components/upload/FileViewComponents.vue +57 -57
  22. package/src/config/ElementPlusConfig.ts +95 -95
  23. package/src/css/elementUI/autocomplete.scss +89 -89
  24. package/src/css/elementUI/common/var.scss +1549 -1549
  25. package/src/css/elementUI/date-picker/picker.scss +219 -219
  26. package/src/css/elementUI/drawer.scss +164 -164
  27. package/src/css/elementUI/table.scss +694 -694
  28. package/src/css/elementUI/tabs.scss +659 -659
  29. package/src/directives/vKeydown.ts +93 -93
  30. package/src/hooks/useDictHooks.ts +79 -76
  31. package/src/hooks/useEcharts.ts +58 -58
  32. package/src/hooks/useFileView.ts +34 -34
  33. package/src/hooks/useMessageHooks.ts +132 -132
  34. package/src/hooks/useResetRefHooks.ts +18 -18
  35. package/src/interface/BaseEntity.ts +28 -28
  36. package/src/interface/IMdmDept.ts +82 -82
  37. package/src/interface/IOrgDeptInfo.ts +12 -12
  38. package/src/interface/ISysDictDataCacheVo.ts +46 -46
  39. package/src/interface/ISysDictType.ts +37 -37
  40. package/src/interface/ISysMenuDataVo.ts +22 -22
  41. package/src/interface/ISysMenuInfoVo.ts +83 -83
  42. package/src/interface/ISysMenuOperationVo.ts +21 -21
  43. package/src/interface/ISysUploadFiles.ts +16 -16
  44. package/src/interface/ISysUserInfo.ts +70 -70
  45. package/src/interface/IUserPermissionVo.ts +34 -34
  46. package/src/interface/Message.ts +69 -69
  47. package/src/interface/PageData.ts +17 -17
  48. package/src/interface/ResponseData.ts +16 -16
  49. package/src/interface/dictMapType.ts +11 -11
  50. package/src/interface/enum/MessageEnum.ts +41 -41
  51. package/src/mixin/globalMixin.ts +37 -37
  52. package/src/packages/index.ts +18 -18
  53. package/src/packages/text.vue +13 -13
  54. package/src/plugins/echartsConfig.ts +73 -73
  55. package/src/plugins/plugins.ts +12 -12
  56. package/src/stores/dictStore.ts +27 -20
  57. package/src/stores/messageStore.ts +49 -49
  58. package/src/stores/permissionStore.ts +108 -108
  59. package/src/stores/storeConfig.ts +23 -23
  60. package/src/stores/userInfoStore.ts +31 -31
  61. package/src/utils/AxiosConfig.ts +216 -216
@@ -1,216 +1,216 @@
1
- /**
2
- * Create by丁盼
3
- * 说明: AxiosConfig
4
- * 创建时间: 2025/1/14 16:58
5
- * 修改时间: 2025/1/14 16:58
6
- */
7
- import axios, { type AxiosResponse } from 'axios'
8
- import type { ResponseData } from '../interface/ResponseData'
9
- import { v4 as uuidv4 } from 'uuid'
10
- import encrypt from './encrypt'
11
- // @ts-ignore
12
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
-
14
- import { Md5 } from 'ts-md5'
15
- import { ElMessage } from 'element-plus'
16
- import { useEventBus } from '@vueuse/core'
17
- /** 是否正在刷新的标志 */
18
- let isRefreshing = false
19
- const loginAgainBus = useEventBus<string>('loginAgainBus')
20
- /** 存储请求的数组 */
21
- let requests: any[] = []
22
- const request = axios.create({
23
- timeout: 60000,
24
- validateStatus(status) {
25
- return status >= 200 && status < 500
26
- },
27
- })
28
- function setHeaders(config: any) {
29
- //数据防止篡改
30
- const Authorization = sessionStorage.getItem('Authorization')
31
- const signa = 'F2E49299-D0D2-4AA1-87A3-270272EA3D6A'
32
- let dataJson: string = ''
33
- if (config.method === 'get') {
34
- if (config.params) {
35
- if (typeof config.params === 'string') {
36
- dataJson = JSON.stringify(JSON.parse(config.params))
37
- } else {
38
- dataJson = JSON.stringify(config.params)
39
- }
40
- }
41
- dataJson += config.url
42
- } else {
43
- if (config.data) {
44
- if (typeof config.data === 'string') {
45
- dataJson = JSON.stringify(JSON.parse(config.data))
46
- } else {
47
- dataJson = JSON.stringify(config.data)
48
- }
49
- }
50
- }
51
-
52
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
53
- // @ts-ignore
54
- dataJson = dataJson
55
- .replaceAll('"', '')
56
- .replaceAll(',', '')
57
- .replaceAll(':', '')
58
- .replaceAll('.', '')
59
- .replaceAll('/', '')
60
- dataJson = dataJson.split('').sort().join('')
61
- config.headers.sessionId = sessionStorage.getItem('sessionId')
62
- config.headers.Authorization = Authorization
63
- config.headers.signa = Md5.hashStr(Authorization + signa + dataJson)
64
- config.headers.antiShakeKey = Md5.hashStr(dataJson)
65
- //防止重放 GUID+当前时间+TOKEN 加密
66
- const timeDifference = sessionStorage.getItem('timeDifference')
67
- const id = uuidv4()
68
- const localTime = new Date().getTime()
69
- const obj = { timeDifference: timeDifference, guid: id, localTime }
70
- config.headers.replayToken = encrypt.encrypt(JSON.stringify(obj))
71
- }
72
- //用于前端axios 请求防抖
73
- const debounceTokenCancel = new Map()
74
- request.interceptors.request.use(
75
- (config) => {
76
- setHeaders(config)
77
- // @ts-ignore
78
- if (config.isAntiShake) {
79
- // @ts-ignore
80
- const antiShakeTime = config.antiShakeTime
81
- //@ts-ignore
82
- const antiShakeKey = `${config.method}-${config.url}-${config.antiShakeKey}`
83
- const cancel = debounceTokenCancel.get(antiShakeKey)
84
- if (cancel) {
85
- cancel()
86
- }
87
- return new Promise((resolve) => {
88
- const timer = setTimeout(() => {
89
- clearTimeout(timer)
90
- resolve(config)
91
- }, antiShakeTime)
92
- debounceTokenCancel.set(antiShakeKey, () => {
93
- clearTimeout(timer)
94
- })
95
- })
96
- } else {
97
- return config
98
- }
99
- },
100
- (error: any) => {
101
- return Promise.resolve(error)
102
- },
103
- )
104
-
105
- // response 拦截
106
- request.interceptors.response.use(
107
- async (response: AxiosResponse<ResponseData>) => {
108
- const { status, data, config } = response
109
- if (status === 200) {
110
- if (data.code === '0') {
111
- return Promise.resolve(response)
112
- } else if (data.code == '10508') {
113
- isRefreshing = true
114
- } else if (data.code == '10401') {
115
- //TOKen过期
116
- if (!isRefreshing) {
117
- isRefreshing = true
118
- const rToken = sessionStorage.getItem('refreshToken')
119
- const data = await request.post('/api/system/login/refreshToken', {
120
- rToken: rToken,
121
- })
122
- if (data.data.code === '0') {
123
- sessionStorage.setItem('Authorization', data.data.data.token)
124
- sessionStorage.setItem('refreshToken', data.data.data.refreshToken)
125
- const r = request(config)
126
- requests.forEach((cb) => {
127
- cb.fn()
128
- })
129
- isRefreshing = false
130
- requests = []
131
- return r
132
- } else {
133
- isRefreshing = false
134
- requests = []
135
- ElMessage.warning({
136
- showClose: true,
137
- message: '用户信息已过期,请重新登录',
138
- grouping: true,
139
- })
140
- loginAgainBus.emit('loginAgain')
141
- throw {
142
- code: '10508',
143
- msg: '用户信息已过期,请重新登录',
144
- url: config.url,
145
- }
146
- }
147
- } else {
148
- return new Promise((resolve) => {
149
- requests.push({
150
- fn: () => {
151
- //需要重新设置signa
152
- // setHeaders(config)
153
- resolve(request(config))
154
- },
155
- url: config.url,
156
- })
157
- })
158
- }
159
- } else {
160
- return Promise.resolve(response)
161
- }
162
- }
163
- return Promise.resolve(response)
164
- },
165
- (error: any) => {
166
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
167
- // @ts-ignore
168
- return Promise.reject(error)
169
- },
170
- )
171
- export default <T = any>(config: any) => {
172
- return request(config)
173
- .then((res: any) => {
174
- if (res.status !== 200) {
175
- throw {
176
- code: res.status + '',
177
- msg: res.status + res.statusText,
178
- url: config.url,
179
- }
180
- } else {
181
- const data = res.data as ResponseData<T>
182
- if (data.code === '0') {
183
- return data.data
184
- } else if (data.code == '10508') {
185
- ElMessage.warning({
186
- showClose: true,
187
- message: '用户信息已过期,请重新登录',
188
- grouping: true,
189
- })
190
- loginAgainBus.emit('loginAgain')
191
- throw {
192
- code: data.code,
193
- msg: data.msg,
194
- url: config.url,
195
- }
196
- } else {
197
- throw {
198
- code: data.code,
199
- msg: data.msg,
200
- url: config.url,
201
- }
202
- }
203
- }
204
- })
205
- .catch((error) => {
206
- if (error.msg) {
207
- throw error
208
- } else {
209
- throw {
210
- code: error.response.status + '',
211
- msg: error.message,
212
- url: config.url,
213
- }
214
- }
215
- })
216
- }
1
+ /**
2
+ * Create by丁盼
3
+ * 说明: AxiosConfig
4
+ * 创建时间: 2025/1/14 16:58
5
+ * 修改时间: 2025/1/14 16:58
6
+ */
7
+ import axios, { type AxiosResponse } from 'axios'
8
+ import type { ResponseData } from '../interface/ResponseData'
9
+ import { v4 as uuidv4 } from 'uuid'
10
+ import encrypt from './encrypt'
11
+ // @ts-ignore
12
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
+
14
+ import { Md5 } from 'ts-md5'
15
+ import { ElMessage } from 'element-plus'
16
+ import { useEventBus } from '@vueuse/core'
17
+ /** 是否正在刷新的标志 */
18
+ let isRefreshing = false
19
+ const loginAgainBus = useEventBus<string>('loginAgainBus')
20
+ /** 存储请求的数组 */
21
+ let requests: any[] = []
22
+ const request = axios.create({
23
+ timeout: 60000,
24
+ validateStatus(status) {
25
+ return status >= 200 && status < 500
26
+ },
27
+ })
28
+ function setHeaders(config: any) {
29
+ //数据防止篡改
30
+ const Authorization = sessionStorage.getItem('Authorization')
31
+ const signa = 'F2E49299-D0D2-4AA1-87A3-270272EA3D6A'
32
+ let dataJson: string = ''
33
+ if (config.method === 'get') {
34
+ if (config.params) {
35
+ if (typeof config.params === 'string') {
36
+ dataJson = JSON.stringify(JSON.parse(config.params))
37
+ } else {
38
+ dataJson = JSON.stringify(config.params)
39
+ }
40
+ }
41
+ dataJson += config.url
42
+ } else {
43
+ if (config.data) {
44
+ if (typeof config.data === 'string') {
45
+ dataJson = JSON.stringify(JSON.parse(config.data))
46
+ } else {
47
+ dataJson = JSON.stringify(config.data)
48
+ }
49
+ }
50
+ }
51
+
52
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
53
+ // @ts-ignore
54
+ dataJson = dataJson
55
+ .replaceAll('"', '')
56
+ .replaceAll(',', '')
57
+ .replaceAll(':', '')
58
+ .replaceAll('.', '')
59
+ .replaceAll('/', '')
60
+ dataJson = dataJson.split('').sort().join('')
61
+ config.headers.sessionId = sessionStorage.getItem('sessionId')
62
+ config.headers.Authorization = Authorization
63
+ config.headers.signa = Md5.hashStr(Authorization + signa + dataJson)
64
+ config.headers.antiShakeKey = Md5.hashStr(dataJson)
65
+ //防止重放 GUID+当前时间+TOKEN 加密
66
+ const timeDifference = sessionStorage.getItem('timeDifference')
67
+ const id = uuidv4()
68
+ const localTime = new Date().getTime()
69
+ const obj = { timeDifference: timeDifference, guid: id, localTime }
70
+ config.headers.replayToken = encrypt.encrypt(JSON.stringify(obj))
71
+ }
72
+ //用于前端axios 请求防抖
73
+ const debounceTokenCancel = new Map()
74
+ request.interceptors.request.use(
75
+ (config) => {
76
+ setHeaders(config)
77
+ // @ts-ignore
78
+ if (config.isAntiShake) {
79
+ // @ts-ignore
80
+ const antiShakeTime = config.antiShakeTime
81
+ //@ts-ignore
82
+ const antiShakeKey = `${config.method}-${config.url}-${config.antiShakeKey}`
83
+ const cancel = debounceTokenCancel.get(antiShakeKey)
84
+ if (cancel) {
85
+ cancel()
86
+ }
87
+ return new Promise((resolve) => {
88
+ const timer = setTimeout(() => {
89
+ clearTimeout(timer)
90
+ resolve(config)
91
+ }, antiShakeTime)
92
+ debounceTokenCancel.set(antiShakeKey, () => {
93
+ clearTimeout(timer)
94
+ })
95
+ })
96
+ } else {
97
+ return config
98
+ }
99
+ },
100
+ (error: any) => {
101
+ return Promise.resolve(error)
102
+ },
103
+ )
104
+
105
+ // response 拦截
106
+ request.interceptors.response.use(
107
+ async (response: AxiosResponse<ResponseData>) => {
108
+ const { status, data, config } = response
109
+ if (status === 200) {
110
+ if (data.code === '0') {
111
+ return Promise.resolve(response)
112
+ } else if (data.code == '10508') {
113
+ isRefreshing = true
114
+ } else if (data.code == '10401') {
115
+ //TOKen过期
116
+ if (!isRefreshing) {
117
+ isRefreshing = true
118
+ const rToken = sessionStorage.getItem('refreshToken')
119
+ const data = await request.post('/api/system/login/refreshToken', {
120
+ rToken: rToken,
121
+ })
122
+ if (data.data.code === '0') {
123
+ sessionStorage.setItem('Authorization', data.data.data.token)
124
+ sessionStorage.setItem('refreshToken', data.data.data.refreshToken)
125
+ const r = request(config)
126
+ requests.forEach((cb) => {
127
+ cb.fn()
128
+ })
129
+ isRefreshing = false
130
+ requests = []
131
+ return r
132
+ } else {
133
+ isRefreshing = false
134
+ requests = []
135
+ ElMessage.warning({
136
+ showClose: true,
137
+ message: '用户信息已过期,请重新登录',
138
+ grouping: true,
139
+ })
140
+ loginAgainBus.emit('loginAgain')
141
+ throw {
142
+ code: '10508',
143
+ msg: '用户信息已过期,请重新登录',
144
+ url: config.url,
145
+ }
146
+ }
147
+ } else {
148
+ return new Promise((resolve) => {
149
+ requests.push({
150
+ fn: () => {
151
+ //需要重新设置signa
152
+ // setHeaders(config)
153
+ resolve(request(config))
154
+ },
155
+ url: config.url,
156
+ })
157
+ })
158
+ }
159
+ } else {
160
+ return Promise.resolve(response)
161
+ }
162
+ }
163
+ return Promise.resolve(response)
164
+ },
165
+ (error: any) => {
166
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
167
+ // @ts-ignore
168
+ return Promise.reject(error)
169
+ },
170
+ )
171
+ export default <T = any>(config: any) => {
172
+ return request(config)
173
+ .then((res: any) => {
174
+ if (res.status !== 200) {
175
+ throw {
176
+ code: res.status + '',
177
+ msg: res.status + res.statusText,
178
+ url: config.url,
179
+ }
180
+ } else {
181
+ const data = res.data as ResponseData<T>
182
+ if (data.code === '0') {
183
+ return data.data
184
+ } else if (data.code == '10508') {
185
+ ElMessage.warning({
186
+ showClose: true,
187
+ message: '用户信息已过期,请重新登录',
188
+ grouping: true,
189
+ })
190
+ loginAgainBus.emit('loginAgain')
191
+ throw {
192
+ code: data.code,
193
+ msg: data.msg,
194
+ url: config.url,
195
+ }
196
+ } else {
197
+ throw {
198
+ code: data.code,
199
+ msg: data.msg,
200
+ url: config.url,
201
+ }
202
+ }
203
+ }
204
+ })
205
+ .catch((error) => {
206
+ if (error.msg) {
207
+ throw error
208
+ } else {
209
+ throw {
210
+ code: error.response.status + '',
211
+ msg: error.message,
212
+ url: config.url,
213
+ }
214
+ }
215
+ })
216
+ }