adtec-core-package 3.2.4 → 3.2.6
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.
- package/package.json +2 -2
- package/scripts/build-vite-integration.mjs +15 -0
- package/src/assets/style/index.less +40 -42
- package/src/components/ElCardList.vue +1 -7
- package/src/components/RichTextEditor/RichTextEditor.vue +2 -33
- package/src/components/Scrollbars/ElScrollbars.vue +2 -10
- package/src/components/editor-main/src/assets/styles/_variables.less +1 -1
- package/src/components/editor-main/src/components/toolbar/index.vue +8 -13
- package/src/components/upload/CustomElUpload.vue +14 -16
- package/src/components/upload/ElUploads.vue +14 -16
- package/src/config/VxeTableConfig.ts +8 -26
- package/src/css/elementUI/common/var.scss +4 -4
- package/src/css/elementUI/mixins/mixins.scss +28 -4
- package/src/css/elementUI/scrollbar.scss +5 -20
- package/src/css/vxeTableUI/components/table.scss +30 -35
- package/src/utils/AxiosConfig.ts +4 -7
- package/src/utils/buildUploadHeaders.ts +58 -0
- package/src/assets/style/scrollbar-classic.less +0 -105
- package/src/assets/style/scrollbar-classic.scss +0 -105
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adtec-core-package",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"./scripts/*": "./scripts/*"
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
|
-
"build:vite-integration": "
|
|
20
|
+
"build:vite-integration": "node scripts/build-vite-integration.mjs",
|
|
21
21
|
"build:umo": "node scripts/inject-umo-composable-imports.mjs && node scripts/build-umo.mjs",
|
|
22
22
|
"dev": "vite",
|
|
23
23
|
"prepare:umo": "node scripts/prepare-umo-source.mjs",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as esbuild from 'esbuild'
|
|
2
|
+
import path from 'node:path'
|
|
3
|
+
import { fileURLToPath } from 'node:url'
|
|
4
|
+
|
|
5
|
+
const root = fileURLToPath(new URL('..', import.meta.url))
|
|
6
|
+
|
|
7
|
+
await esbuild.build({
|
|
8
|
+
entryPoints: [path.join(root, 'vite/umoIntegration.ts')],
|
|
9
|
+
bundle: true,
|
|
10
|
+
platform: 'node',
|
|
11
|
+
format: 'esm',
|
|
12
|
+
packages: 'external',
|
|
13
|
+
outfile: path.join(root, 'vite/umoIntegration.js'),
|
|
14
|
+
logLevel: 'info',
|
|
15
|
+
})
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
// @import './sidebar.scss';
|
|
6
6
|
// @import './btn.scss';
|
|
7
7
|
@import './transition.scss';
|
|
8
|
-
@import './scrollbar-classic.less';
|
|
9
8
|
|
|
10
9
|
body {
|
|
11
10
|
height: 100%;
|
|
@@ -127,61 +126,60 @@ div:focus {
|
|
|
127
126
|
--margin-8: 8px;
|
|
128
127
|
--margin-9: 9px;
|
|
129
128
|
--margin-10: 10px;
|
|
130
|
-
|
|
131
|
-
/* 现代圆角滚动条 */
|
|
132
|
-
--adtec-scrollbar-size: 15px;
|
|
133
|
-
--el-scrollbar-size: 8px;
|
|
134
|
-
--adtec-scrollbar-radius: 999px;
|
|
135
|
-
--adtec-scrollbar-thumb-color: rgba(0, 0, 0, 0.22);
|
|
136
|
-
--adtec-scrollbar-thumb-hover-color: rgba(0, 0, 0, 0.35);
|
|
137
|
-
--adtec-scrollbar-track-color: rgba(0, 0, 0, 0.04);
|
|
138
|
-
/* vxe 表格滚动条:与 el-scrollbar 对齐 */
|
|
139
|
-
--vxe-scrollbar-size: var(--el-scrollbar-size, 8px);
|
|
140
|
-
--vxe-scrollbar-thumb-color: var(--el-scrollbar-bg-color, rgba(0, 0, 0, 0.42));
|
|
141
|
-
--vxe-scrollbar-thumb-hover-color: var(--el-scrollbar-hover-bg-color, rgba(0, 0, 0, 0.55));
|
|
142
|
-
--vxe-scrollbar-track-color: rgba(0, 0, 0, 0.04);
|
|
143
|
-
/* el-scrollbar 单独配色(略粗 + 半透明灰,颜色偏深) */
|
|
144
|
-
--el-scrollbar-opacity: 0.65;
|
|
145
|
-
--el-scrollbar-bg-color: rgba(0, 0, 0, 0.42);
|
|
146
|
-
--el-scrollbar-hover-opacity: 0.85;
|
|
147
|
-
--el-scrollbar-hover-bg-color: rgba(0, 0, 0, 0.55);
|
|
148
129
|
}
|
|
149
130
|
.move-back {
|
|
150
131
|
background: #f5f5f5 !important;
|
|
151
132
|
}
|
|
152
133
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
*:hover {
|
|
158
|
-
.adtec-scrollbar-active();
|
|
134
|
+
*::-webkit-scrollbar {
|
|
135
|
+
width: 6px;
|
|
136
|
+
height: 6px;
|
|
137
|
+
background: transparent;
|
|
159
138
|
}
|
|
160
139
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
.vxe-table *:hover {
|
|
165
|
-
.adtec-scrollbar-hidden();
|
|
140
|
+
*::-webkit-scrollbar-thumb {
|
|
141
|
+
background: transparent;
|
|
142
|
+
border-radius: 4px;
|
|
166
143
|
}
|
|
167
144
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
.vxe-table--scroll-y-handle {
|
|
171
|
-
.adtec-vxe-scrollbar-active();
|
|
172
|
-
}
|
|
145
|
+
*:hover::-webkit-scrollbar-thumb {
|
|
146
|
+
background: #DDDEE0;
|
|
173
147
|
}
|
|
174
148
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
.docx-js-viewer,
|
|
178
|
-
.excel-grid-scroll,
|
|
179
|
-
.office-preview-root.is-rich-preview {
|
|
180
|
-
.adtec-scrollbar-persistent();
|
|
149
|
+
*:hover::-webkit-scrollbar-track {
|
|
150
|
+
background: transparent;
|
|
181
151
|
}
|
|
182
152
|
|
|
153
|
+
//::-webkit-scrollbar {
|
|
154
|
+
// width: 6px;
|
|
155
|
+
// height: 6px;
|
|
156
|
+
//}
|
|
157
|
+
//// 滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。
|
|
158
|
+
//::-webkit-scrollbar-button {
|
|
159
|
+
// display: none;
|
|
160
|
+
//}
|
|
161
|
+
//// 滚动条的轨道(里面装有Thumb)
|
|
162
|
+
//::-webkit-scrollbar-track {
|
|
163
|
+
// background: transparent;
|
|
164
|
+
//}
|
|
165
|
+
//// 滚动条的轨道(里面装有Thumb)
|
|
166
|
+
//::-webkit-scrollbar-track-piece {
|
|
167
|
+
// background-color: transparent;
|
|
168
|
+
//}
|
|
169
|
+
//// 滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)
|
|
170
|
+
//::-webkit-scrollbar-thumb {
|
|
171
|
+
// background: #DDDEE0;
|
|
172
|
+
// opacity: var(--el-scrollbar-opacity, .3);
|
|
173
|
+
// transition: var(--el-transition-duration) background-color;
|
|
174
|
+
// cursor: pointer;
|
|
175
|
+
// border-radius: 4px;
|
|
176
|
+
//}
|
|
177
|
+
//::-webkit-scrollbar-thumb:hover {
|
|
178
|
+
// background: #C7C9CC;
|
|
179
|
+
//}
|
|
180
|
+
// 边角,即两个滚动条的交汇处
|
|
183
181
|
::-webkit-scrollbar-corner {
|
|
184
|
-
|
|
182
|
+
display: none;
|
|
185
183
|
}
|
|
186
184
|
// 两个滚动条的交汇处上用于通过拖动调整元素大小的小控件
|
|
187
185
|
*::-webkit-resizer {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!--创建时间: 2025/5/8 09:15-->
|
|
4
4
|
<!--修改时间: 2025/5/8 09:15-->
|
|
5
5
|
<template>
|
|
6
|
-
<el-scrollbars :noresize="true"
|
|
6
|
+
<el-scrollbars :noresize="true" style="width: 100%">
|
|
7
7
|
<div v-if="!model || (model?.length ?? 0) == 0" class="el-table__empty-block">
|
|
8
8
|
<span class="el-table__empty-text">暂无数据</span>
|
|
9
9
|
</div>
|
|
@@ -61,10 +61,4 @@ defineExpose<{
|
|
|
61
61
|
.seMeetingSel {
|
|
62
62
|
border: 1px solid var(--el-color-primary) !important;
|
|
63
63
|
}
|
|
64
|
-
|
|
65
|
-
.el-card-list-scroll {
|
|
66
|
-
flex: 1;
|
|
67
|
-
min-height: 0;
|
|
68
|
-
overflow: hidden;
|
|
69
|
-
}
|
|
70
64
|
</style>
|
|
@@ -644,41 +644,10 @@ onUnmounted(() => {
|
|
|
644
644
|
min-width: 0;
|
|
645
645
|
}
|
|
646
646
|
|
|
647
|
-
/* classic 模式:切换工具栏固定右上角(与 ribbon 图二一致) */
|
|
648
|
-
:deep(.umo-toolbar-actions-classic) {
|
|
649
|
-
position: absolute;
|
|
650
|
-
right: 5px;
|
|
651
|
-
top: 6px;
|
|
652
|
-
z-index: 10;
|
|
653
|
-
border-radius: 6px;
|
|
654
|
-
background-color: var(--umo-color-white, #fff);
|
|
655
|
-
box-shadow:
|
|
656
|
-
0 0 0 1px hsla(0, 0%, 5%, 0.04),
|
|
657
|
-
0 2px 5px hsla(0, 0%, 5%, 0.06);
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
:deep(.toolbar-classic .umo-scrollable-container) {
|
|
661
|
-
padding-right: 108px;
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
:deep(.umo-scrollable-content) {
|
|
665
|
-
overflow-x: hidden;
|
|
666
|
-
overflow-y: hidden;
|
|
667
|
-
scrollbar-width: none;
|
|
668
|
-
-ms-overflow-style: none;
|
|
669
|
-
|
|
670
|
-
&::-webkit-scrollbar {
|
|
671
|
-
display: none;
|
|
672
|
-
width: 0;
|
|
673
|
-
height: 0;
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
|
|
677
647
|
:deep(.umo-classic-menu),
|
|
678
648
|
:deep(.umo-virtual-group) {
|
|
679
|
-
flex-wrap:
|
|
680
|
-
|
|
681
|
-
white-space: normal;
|
|
649
|
+
flex-wrap: nowrap;
|
|
650
|
+
white-space: nowrap;
|
|
682
651
|
}
|
|
683
652
|
|
|
684
653
|
:deep(.umo-button__text),
|
|
@@ -3,11 +3,7 @@
|
|
|
3
3
|
<!--创建时间: 2025/3/20 16:16-->
|
|
4
4
|
<!--修改时间: 2025/3/20 16:16-->
|
|
5
5
|
<template>
|
|
6
|
-
<el-scrollbar
|
|
7
|
-
class="adtec-el-scrollbar"
|
|
8
|
-
:noresize="true"
|
|
9
|
-
v-resize-observer="onResizeObserver"
|
|
10
|
-
ref="ref_scrollbar">
|
|
6
|
+
<el-scrollbar :noresize="true" v-resize-observer="onResizeObserver" ref="ref_scrollbar">
|
|
11
7
|
<slot></slot>
|
|
12
8
|
</el-scrollbar>
|
|
13
9
|
</template>
|
|
@@ -21,9 +17,5 @@ const onResizeObserver=(entries:any) =>{
|
|
|
21
17
|
}
|
|
22
18
|
</script>
|
|
23
19
|
<style scoped lang="scss">
|
|
24
|
-
|
|
25
|
-
height: 100%;
|
|
26
|
-
flex: 1;
|
|
27
|
-
min-height: 0;
|
|
28
|
-
}
|
|
20
|
+
|
|
29
21
|
</style>
|
|
@@ -250,12 +250,10 @@ const setContentFromCache = () => {
|
|
|
250
250
|
padding: 6px 10px;
|
|
251
251
|
display: flex;
|
|
252
252
|
align-items: center;
|
|
253
|
-
&-ribbon
|
|
254
|
-
&-classic {
|
|
253
|
+
&-ribbon {
|
|
255
254
|
position: absolute;
|
|
256
255
|
right: 0;
|
|
257
256
|
top: 1px;
|
|
258
|
-
z-index: 10;
|
|
259
257
|
}
|
|
260
258
|
&-button {
|
|
261
259
|
&.active {
|
|
@@ -339,18 +337,9 @@ const setContentFromCache = () => {
|
|
|
339
337
|
|
|
340
338
|
<style lang="less">
|
|
341
339
|
.umo-skin-modern {
|
|
342
|
-
&.toolbar-classic,
|
|
343
|
-
&.toolbar-ribbon {
|
|
344
|
-
.umo-toolbar-actions {
|
|
345
|
-
right: 5px !important;
|
|
346
|
-
top: 6px !important;
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
340
|
&.toolbar-classic {
|
|
350
|
-
.umo-scrollable-container {
|
|
351
|
-
padding-right: 108px;
|
|
352
|
-
}
|
|
353
341
|
.umo-toolbar-actions {
|
|
342
|
+
margin: 15px 15px 2px 0;
|
|
354
343
|
border-radius: 6px;
|
|
355
344
|
background-color: var(--umo-color-white);
|
|
356
345
|
box-shadow:
|
|
@@ -363,6 +352,12 @@ const setContentFromCache = () => {
|
|
|
363
352
|
}
|
|
364
353
|
}
|
|
365
354
|
}
|
|
355
|
+
&.toolbar-ribbon {
|
|
356
|
+
.umo-toolbar-actions {
|
|
357
|
+
right: 5px !important;
|
|
358
|
+
top: 6px !important;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
366
361
|
}
|
|
367
362
|
[theme-mode='dark'] .umo-skin-modern {
|
|
368
363
|
&.toolbar-classic {
|
|
@@ -44,15 +44,7 @@
|
|
|
44
44
|
:before-upload="beforeUpload"
|
|
45
45
|
drag
|
|
46
46
|
:accept="getAccept"
|
|
47
|
-
:action="
|
|
48
|
-
'/api/doc/uploadFile/' +
|
|
49
|
-
business +
|
|
50
|
-
'/' +
|
|
51
|
-
businessId +
|
|
52
|
-
'/' +
|
|
53
|
-
association +
|
|
54
|
-
(watermarkCode ? '?watermarkCode=' + watermarkCode : '')
|
|
55
|
-
"
|
|
47
|
+
:action="uploadAction"
|
|
56
48
|
multiple
|
|
57
49
|
:limit="limit"
|
|
58
50
|
:headers="uploadHeaders"
|
|
@@ -101,7 +93,7 @@
|
|
|
101
93
|
|
|
102
94
|
<script setup lang="ts">
|
|
103
95
|
import { UploadFilled } from '@element-plus/icons-vue'
|
|
104
|
-
import { computed,
|
|
96
|
+
import { computed, ref } from 'vue'
|
|
105
97
|
import {
|
|
106
98
|
ElMessage,
|
|
107
99
|
ElMessageBox,
|
|
@@ -116,11 +108,9 @@ import documentApi from '../../api/DocumentApi.ts'
|
|
|
116
108
|
import frameworkUtils from '../../utils/FrameworkUtils.ts'
|
|
117
109
|
import { userInfoStore } from '../../stores/userInfoStore'
|
|
118
110
|
import { getAcceptString } from '../../utils/uploadAccept.ts'
|
|
111
|
+
import { buildUploadHeaders } from '../../utils/buildUploadHeaders.ts'
|
|
119
112
|
|
|
120
113
|
const { fileView: fileView } = useFileView()
|
|
121
|
-
const uploadHeaders = ref({
|
|
122
|
-
Authorization: '',
|
|
123
|
-
})
|
|
124
114
|
const emit = defineEmits(['success'])
|
|
125
115
|
const userInfo = userInfoStore()
|
|
126
116
|
const ref_upload = ref()
|
|
@@ -217,6 +207,17 @@ const props = defineProps({
|
|
|
217
207
|
default: () => undefined,
|
|
218
208
|
},
|
|
219
209
|
})
|
|
210
|
+
const uploadAction = computed(
|
|
211
|
+
() =>
|
|
212
|
+
'/api/doc/uploadFile/' +
|
|
213
|
+
props.business +
|
|
214
|
+
'/' +
|
|
215
|
+
props.businessId +
|
|
216
|
+
'/' +
|
|
217
|
+
props.association +
|
|
218
|
+
(props.watermarkCode ? '?watermarkCode=' + props.watermarkCode : ''),
|
|
219
|
+
)
|
|
220
|
+
const uploadHeaders = computed(() => buildUploadHeaders(uploadAction.value))
|
|
220
221
|
/**
|
|
221
222
|
* 文件列表
|
|
222
223
|
*/
|
|
@@ -435,9 +436,6 @@ const confirm = async (autoDelete: boolean = true) => {
|
|
|
435
436
|
}
|
|
436
437
|
}
|
|
437
438
|
}
|
|
438
|
-
onMounted(() => {
|
|
439
|
-
uploadHeaders.value.Authorization = sessionStorage.getItem('Authorization') + ''
|
|
440
|
-
})
|
|
441
439
|
defineExpose({
|
|
442
440
|
remove,
|
|
443
441
|
confirm,
|
|
@@ -40,15 +40,7 @@
|
|
|
40
40
|
:before-upload="beforeUpload"
|
|
41
41
|
drag
|
|
42
42
|
:accept="getAccept"
|
|
43
|
-
:action="
|
|
44
|
-
'/api/doc/uploadFile/' +
|
|
45
|
-
business +
|
|
46
|
-
'/' +
|
|
47
|
-
businessId +
|
|
48
|
-
'/' +
|
|
49
|
-
association +
|
|
50
|
-
(watermarkCode ? '?watermarkCode=' + watermarkCode : '')
|
|
51
|
-
"
|
|
43
|
+
:action="uploadAction"
|
|
52
44
|
multiple
|
|
53
45
|
:limit="limit"
|
|
54
46
|
:headers="uploadHeaders"
|
|
@@ -97,7 +89,7 @@
|
|
|
97
89
|
|
|
98
90
|
<script setup lang="ts">
|
|
99
91
|
import { UploadFilled } from '@element-plus/icons-vue'
|
|
100
|
-
import { computed,
|
|
92
|
+
import { computed, ref, watch } from 'vue'
|
|
101
93
|
import {
|
|
102
94
|
ElMessage,
|
|
103
95
|
ElMessageBox,
|
|
@@ -112,11 +104,9 @@ import documentApi from '../../api/DocumentApi.ts'
|
|
|
112
104
|
import frameworkUtils from '../../utils/FrameworkUtils.ts'
|
|
113
105
|
import { userInfoStore } from '../../stores/userInfoStore'
|
|
114
106
|
import { getAcceptString } from '../../utils/uploadAccept.ts'
|
|
107
|
+
import { buildUploadHeaders } from '../../utils/buildUploadHeaders.ts'
|
|
115
108
|
|
|
116
109
|
const { fileView: fileView } = useFileView()
|
|
117
|
-
const uploadHeaders = ref({
|
|
118
|
-
Authorization: '',
|
|
119
|
-
})
|
|
120
110
|
const userInfo = userInfoStore()
|
|
121
111
|
const ref_upload = ref()
|
|
122
112
|
const hoverfileName = ref('')
|
|
@@ -201,6 +191,17 @@ const props = defineProps({
|
|
|
201
191
|
default: () => undefined,
|
|
202
192
|
},
|
|
203
193
|
})
|
|
194
|
+
const uploadAction = computed(
|
|
195
|
+
() =>
|
|
196
|
+
'/api/doc/uploadFile/' +
|
|
197
|
+
props.business +
|
|
198
|
+
'/' +
|
|
199
|
+
props.businessId +
|
|
200
|
+
'/' +
|
|
201
|
+
props.association +
|
|
202
|
+
(props.watermarkCode ? '?watermarkCode=' + props.watermarkCode : ''),
|
|
203
|
+
)
|
|
204
|
+
const uploadHeaders = computed(() => buildUploadHeaders(uploadAction.value))
|
|
204
205
|
const mousemove = (fileName: string) => {
|
|
205
206
|
hoverfileName.value = fileName
|
|
206
207
|
}
|
|
@@ -325,9 +326,6 @@ const remove = async (file: UploadFile) => {
|
|
|
325
326
|
}
|
|
326
327
|
// }
|
|
327
328
|
}
|
|
328
|
-
onMounted(() => {
|
|
329
|
-
uploadHeaders.value.Authorization = sessionStorage.getItem('Authorization') + ''
|
|
330
|
-
})
|
|
331
329
|
defineExpose({
|
|
332
330
|
remove,
|
|
333
331
|
})
|
|
@@ -6,8 +6,12 @@ import {
|
|
|
6
6
|
|
|
7
7
|
import VxeUIPluginRenderElement from '@vxe-ui/plugin-render-element'
|
|
8
8
|
import '@vxe-ui/plugin-render-element/dist/style.css'
|
|
9
|
+
import VxeUIPluginExportXLSX from '@vxe-ui/plugin-export-xlsx'
|
|
10
|
+
import ExcelJS from 'exceljs'
|
|
9
11
|
import 'vxe-pc-ui/lib/style.css'
|
|
10
12
|
import '../css/vxeTableUI/all.scss'
|
|
13
|
+
import VxeUIPluginExportPDF from '@vxe-ui/plugin-export-pdf'
|
|
14
|
+
import { jsPDF } from 'jspdf'
|
|
11
15
|
// 导入默认的语言(使用 es 构建,避免 lib CJS 在 Vite 下无 default 导出)
|
|
12
16
|
import zhCN from 'vxe-table/es/locale/lang/zh-CN'
|
|
13
17
|
|
|
@@ -25,30 +29,8 @@ export function initVxeTableInPage(
|
|
|
25
29
|
VxeUI.component(VxeTooltip)
|
|
26
30
|
// 局部注册插件
|
|
27
31
|
enableElementPlus && VxeUI.use(VxeUIPluginRenderElement)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
import('exceljs'),
|
|
31
|
-
import('@vxe-ui/plugin-export-xlsx'),
|
|
32
|
-
]).then(([{ default: ExcelJS }, xlsxModule]) => {
|
|
33
|
-
const VxeUIPluginExportXLSX =
|
|
34
|
-
xlsxModule.default ??
|
|
35
|
-
(xlsxModule as { VxeUIPluginExportXLSX?: typeof xlsxModule.default }).VxeUIPluginExportXLSX ??
|
|
36
|
-
xlsxModule
|
|
37
|
-
VxeUI.use(VxeUIPluginExportXLSX, { ExcelJS })
|
|
38
|
-
})
|
|
39
|
-
}
|
|
40
|
-
if (enablePdf) {
|
|
41
|
-
void Promise.all([
|
|
42
|
-
import('jspdf'),
|
|
43
|
-
import('@vxe-ui/plugin-export-pdf'),
|
|
44
|
-
]).then(([{ jsPDF }, pdfModule]) => {
|
|
45
|
-
const VxeUIPluginExportPDF =
|
|
46
|
-
pdfModule.default ??
|
|
47
|
-
(pdfModule as { VxeUIPluginExportPDF?: typeof pdfModule.default }).VxeUIPluginExportPDF ??
|
|
48
|
-
pdfModule
|
|
49
|
-
VxeUI.use(VxeUIPluginExportPDF, { jsPDF })
|
|
50
|
-
})
|
|
51
|
-
}
|
|
32
|
+
enableExcel && VxeUI.use(VxeUIPluginExportXLSX, { ExcelJS })
|
|
33
|
+
enablePdf && VxeUI.use(VxeUIPluginExportPDF, { jsPDF })
|
|
52
34
|
|
|
53
35
|
// 设置表格配置(可复制你在 VxeTableConfig.ts 中的配置)
|
|
54
36
|
VxeUI.setConfig({
|
|
@@ -231,8 +213,8 @@ export function initVxeTableInPage(
|
|
|
231
213
|
oSize: 2,
|
|
232
214
|
},
|
|
233
215
|
scrollbarConfig: {
|
|
234
|
-
width:
|
|
235
|
-
height:
|
|
216
|
+
// width: 0,
|
|
217
|
+
// height: 0
|
|
236
218
|
},
|
|
237
219
|
},
|
|
238
220
|
grid: {
|
|
@@ -1226,10 +1226,10 @@ $loading: map.merge(
|
|
|
1226
1226
|
$scrollbar: () !default;
|
|
1227
1227
|
$scrollbar: map.merge(
|
|
1228
1228
|
(
|
|
1229
|
-
'opacity': 0.
|
|
1230
|
-
'bg-color':
|
|
1231
|
-
'hover-opacity': 0.
|
|
1232
|
-
'hover-bg-color':
|
|
1229
|
+
'opacity': 0.3,
|
|
1230
|
+
'bg-color': getCssVar('text-color-secondary'),
|
|
1231
|
+
'hover-opacity': 0.5,
|
|
1232
|
+
'hover-bg-color': getCssVar('text-color-secondary'),
|
|
1233
1233
|
),
|
|
1234
1234
|
$scrollbar
|
|
1235
1235
|
);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
@use 'function' as *;
|
|
2
2
|
@use '../common/var' as *;
|
|
3
|
-
@use '../../../assets/style/scrollbar-classic.scss' as classic;
|
|
4
3
|
// forward mixins
|
|
5
4
|
@forward 'config';
|
|
6
5
|
@forward 'function';
|
|
@@ -23,10 +22,35 @@
|
|
|
23
22
|
|
|
24
23
|
// Scrollbar
|
|
25
24
|
@mixin scroll-bar {
|
|
26
|
-
|
|
25
|
+
$scrollbar-thumb-background: getCssVar('text-color', 'disabled');
|
|
26
|
+
$scrollbar-track-background: getCssVar('fill-color', 'blank');
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
&::-webkit-scrollbar {
|
|
29
|
+
z-index: 11;
|
|
30
|
+
width: 6px;
|
|
31
|
+
|
|
32
|
+
&:horizontal {
|
|
33
|
+
height: 6px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&-thumb {
|
|
37
|
+
border-radius: 5px;
|
|
38
|
+
width: 6px;
|
|
39
|
+
background: $scrollbar-thumb-background;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&-corner {
|
|
43
|
+
background: $scrollbar-track-background;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&-track {
|
|
47
|
+
background: $scrollbar-track-background;
|
|
48
|
+
|
|
49
|
+
&-piece {
|
|
50
|
+
background: $scrollbar-track-background;
|
|
51
|
+
width: 6px;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
30
54
|
}
|
|
31
55
|
}
|
|
32
56
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
@use 'mixins/mixins' as *;
|
|
4
4
|
@use 'mixins/var' as *;
|
|
5
5
|
@use 'common/var' as *;
|
|
6
|
-
@use '../../assets/style/scrollbar-classic.scss' as classic;
|
|
7
6
|
|
|
8
7
|
@include b(scrollbar) {
|
|
9
8
|
@include set-component-css-var('scrollbar', $scrollbar);
|
|
@@ -17,9 +16,6 @@
|
|
|
17
16
|
@include e(wrap) {
|
|
18
17
|
overflow: auto;
|
|
19
18
|
height: 100%;
|
|
20
|
-
box-sizing: border-box;
|
|
21
|
-
/* 预留滚动条槽位,避免 thumb 压在正文上 */
|
|
22
|
-
padding-right: calc(var(--el-scrollbar-size, 8px) + 4px);
|
|
23
19
|
|
|
24
20
|
@include m(hidden-default) {
|
|
25
21
|
scrollbar-width: none;
|
|
@@ -35,7 +31,7 @@
|
|
|
35
31
|
width: 0;
|
|
36
32
|
height: 0;
|
|
37
33
|
cursor: pointer;
|
|
38
|
-
border-radius:
|
|
34
|
+
border-radius: inherit;
|
|
39
35
|
background-color: var(
|
|
40
36
|
#{getCssVarName('scrollbar-bg-color')},
|
|
41
37
|
map.get($scrollbar, 'bg-color')
|
|
@@ -60,17 +56,14 @@
|
|
|
60
56
|
|
|
61
57
|
@include e(bar) {
|
|
62
58
|
position: absolute;
|
|
63
|
-
right:
|
|
59
|
+
right: 2px;
|
|
64
60
|
bottom: 2px;
|
|
65
61
|
z-index: 1;
|
|
66
|
-
border-radius:
|
|
67
|
-
opacity: 0;
|
|
68
|
-
transition: opacity getCssVar('transition-duration') ease-out;
|
|
62
|
+
border-radius: 4px;
|
|
69
63
|
|
|
70
64
|
@include when(vertical) {
|
|
71
|
-
width:
|
|
65
|
+
width: 6px;
|
|
72
66
|
top: 2px;
|
|
73
|
-
background-color: rgba(0, 0, 0, 0.04);
|
|
74
67
|
|
|
75
68
|
> div {
|
|
76
69
|
width: 100%;
|
|
@@ -78,22 +71,14 @@
|
|
|
78
71
|
}
|
|
79
72
|
|
|
80
73
|
@include when(horizontal) {
|
|
81
|
-
height:
|
|
74
|
+
height: 6px;
|
|
82
75
|
left: 2px;
|
|
83
|
-
background-color: rgba(0, 0, 0, 0.04);
|
|
84
76
|
|
|
85
77
|
> div {
|
|
86
78
|
height: 100%;
|
|
87
79
|
}
|
|
88
80
|
}
|
|
89
81
|
}
|
|
90
|
-
|
|
91
|
-
&:hover,
|
|
92
|
-
&:active {
|
|
93
|
-
@include e(bar) {
|
|
94
|
-
opacity: 1;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
82
|
}
|
|
98
83
|
|
|
99
84
|
.#{$namespace}-scrollbar-fade {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
@use '../helpers/baseMixin.scss';
|
|
2
|
-
@use '../../../assets/style/scrollbar-classic.scss' as classic;
|
|
3
2
|
@use './icon.scss';
|
|
4
3
|
@use './table-module/all.scss';
|
|
5
4
|
|
|
@@ -51,20 +50,11 @@
|
|
|
51
50
|
.vxe-table--body-wrapper,
|
|
52
51
|
.vxe-table--footer-wrapper,
|
|
53
52
|
.vxe-table--fixed-left-body-wrapper,
|
|
54
|
-
.vxe-table--fixed-right-body-wrapper
|
|
55
|
-
.vxe-table--fixed-left-wrapper,
|
|
56
|
-
.vxe-table--fixed-right-wrapper {
|
|
53
|
+
.vxe-table--fixed-right-body-wrapper {
|
|
57
54
|
overflow: hidden;
|
|
58
55
|
outline: 0;
|
|
59
56
|
scrollbar-width: none;
|
|
60
|
-
-ms-overflow-style: none;
|
|
61
57
|
-webkit-overflow-scrolling: touch;
|
|
62
|
-
|
|
63
|
-
&::-webkit-scrollbar {
|
|
64
|
-
display: none;
|
|
65
|
-
width: 0;
|
|
66
|
-
height: 0;
|
|
67
|
-
}
|
|
68
58
|
}
|
|
69
59
|
.vxe-table--header-inner-wrapper,
|
|
70
60
|
.vxe-table--body-inner-wrapper,
|
|
@@ -75,11 +65,8 @@
|
|
|
75
65
|
scrollbar-width: none;
|
|
76
66
|
-ms-overflow-style: none;
|
|
77
67
|
-webkit-overflow-scrolling: touch;
|
|
78
|
-
|
|
79
68
|
&::-webkit-scrollbar {
|
|
80
69
|
display: none;
|
|
81
|
-
width: 0;
|
|
82
|
-
height: 0;
|
|
83
70
|
}
|
|
84
71
|
}
|
|
85
72
|
.vxe-table--header-inner-wrapper,
|
|
@@ -92,16 +79,34 @@
|
|
|
92
79
|
overflow-x: scroll;
|
|
93
80
|
}
|
|
94
81
|
|
|
95
|
-
/*
|
|
82
|
+
/* 仅显示外层滚动条:鼠标进入表格显示,移出隐藏 */
|
|
96
83
|
.vxe-table--scroll-x-handle,
|
|
97
84
|
.vxe-table--scroll-y-handle {
|
|
98
|
-
|
|
85
|
+
scrollbar-width: none;
|
|
86
|
+
-ms-overflow-style: none;
|
|
87
|
+
&::-webkit-scrollbar {
|
|
88
|
+
width: 8px;
|
|
89
|
+
height: 8px;
|
|
90
|
+
background: transparent;
|
|
91
|
+
}
|
|
92
|
+
&::-webkit-scrollbar-thumb {
|
|
93
|
+
background: transparent;
|
|
94
|
+
border-radius: 4px;
|
|
95
|
+
}
|
|
96
|
+
&::-webkit-scrollbar-track {
|
|
97
|
+
background: transparent;
|
|
98
|
+
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
.vxe-table:hover {
|
|
102
102
|
.vxe-table--scroll-x-handle,
|
|
103
103
|
.vxe-table--scroll-y-handle {
|
|
104
|
-
|
|
104
|
+
scrollbar-width: thin;
|
|
105
|
+
scrollbar-color: #DDDEE0 transparent;
|
|
106
|
+
}
|
|
107
|
+
.vxe-table--scroll-x-handle::-webkit-scrollbar-thumb,
|
|
108
|
+
.vxe-table--scroll-y-handle::-webkit-scrollbar-thumb {
|
|
109
|
+
background: #DDDEE0;
|
|
105
110
|
}
|
|
106
111
|
}
|
|
107
112
|
|
|
@@ -599,10 +604,10 @@
|
|
|
599
604
|
}
|
|
600
605
|
}
|
|
601
606
|
.vxe-table--scroll-x-virtual {
|
|
602
|
-
height: 0;
|
|
607
|
+
height: 0 !important;
|
|
603
608
|
}
|
|
604
609
|
.vxe-table--scroll-y-virtual {
|
|
605
|
-
width:
|
|
610
|
+
width: 0px !important;
|
|
606
611
|
}
|
|
607
612
|
.vxe-table--scroll-x-virtual,
|
|
608
613
|
.vxe-table--scroll-y-virtual {
|
|
@@ -630,10 +635,10 @@
|
|
|
630
635
|
.vxe-table--scroll-x-handle {
|
|
631
636
|
overflow-y: hidden;
|
|
632
637
|
overflow-x: scroll;
|
|
633
|
-
height:
|
|
638
|
+
height: 8px;
|
|
634
639
|
}
|
|
635
640
|
.vxe-table--scroll-x-wrapper {
|
|
636
|
-
height:
|
|
641
|
+
height: 8px;
|
|
637
642
|
}
|
|
638
643
|
.vxe-table--scroll-y-handle,
|
|
639
644
|
.vxe-table--scroll-y-wrapper {
|
|
@@ -645,7 +650,7 @@
|
|
|
645
650
|
.vxe-table--scroll-y-handle {
|
|
646
651
|
overflow-y: scroll;
|
|
647
652
|
overflow-x: hidden;
|
|
648
|
-
width:
|
|
653
|
+
width: 8px;
|
|
649
654
|
height: 100%;
|
|
650
655
|
}
|
|
651
656
|
.vxe-table--scroll-x-space {
|
|
@@ -920,20 +925,10 @@
|
|
|
920
925
|
border-collapse: separate;
|
|
921
926
|
table-layout: fixed;
|
|
922
927
|
}
|
|
923
|
-
.vxe-table--render-wrapper
|
|
924
|
-
height:
|
|
925
|
-
display: flex;
|
|
926
|
-
flex-direction: column;
|
|
927
|
-
overflow: hidden;
|
|
928
|
-
|
|
928
|
+
.vxe-table--render-wrapper{
|
|
929
|
+
height:100%;
|
|
929
930
|
.vxe-table--layout-wrapper {
|
|
930
|
-
|
|
931
|
-
min-height: 0;
|
|
932
|
-
height: auto;
|
|
933
|
-
}
|
|
934
|
-
|
|
935
|
-
.vxe-table--scroll-x-virtual {
|
|
936
|
-
flex-shrink: 0;
|
|
931
|
+
height:100%
|
|
937
932
|
}
|
|
938
933
|
}
|
|
939
934
|
&:not(.is--empty) {
|
package/src/utils/AxiosConfig.ts
CHANGED
|
@@ -14,6 +14,7 @@ import encrypt from './encrypt'
|
|
|
14
14
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
15
15
|
|
|
16
16
|
import { Md5 } from 'ts-md5'
|
|
17
|
+
import { computeSigna, normalizeSignaPayload } from './buildUploadHeaders'
|
|
17
18
|
import { ElMessage } from 'element-plus'
|
|
18
19
|
import { useEventBus } from '@vueuse/core'
|
|
19
20
|
/** 是否正在刷新的标志 */
|
|
@@ -31,7 +32,6 @@ const request = axios.create({
|
|
|
31
32
|
function setHeaders(config: any) {
|
|
32
33
|
//数据防止篡改
|
|
33
34
|
const Authorization = config.skipAuthorization ? '' : sessionStorage.getItem('Authorization')
|
|
34
|
-
const signa = 'F2E49299-D0D2-4AA1-87A3-270272EA3D6A'
|
|
35
35
|
let dataJson: string = ''
|
|
36
36
|
if (config.method === 'get') {
|
|
37
37
|
if (config.params) {
|
|
@@ -52,14 +52,11 @@ function setHeaders(config: any) {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
// @ts-ignore
|
|
57
|
-
dataJson=dataJson.replace(/[^\u4E00-\u9FA5A-Za-z0-9]/g, '')
|
|
58
|
-
dataJson = dataJson.split('').sort().join('').trim()
|
|
55
|
+
const normalizedPayload = normalizeSignaPayload(dataJson)
|
|
59
56
|
config.headers.sessionId = config.skipAuthorization ? '' : sessionStorage.getItem('sessionId')
|
|
60
57
|
config.headers.Authorization = Authorization
|
|
61
|
-
config.headers.signa =
|
|
62
|
-
config.headers.antiShakeKey = Md5.hashStr(
|
|
58
|
+
config.headers.signa = computeSigna(Authorization || '', dataJson)
|
|
59
|
+
config.headers.antiShakeKey = Md5.hashStr(normalizedPayload)
|
|
63
60
|
//防止重放 GUID+当前时间+TOKEN 加密
|
|
64
61
|
const timeDifference = sessionStorage.getItem('timeDifference')
|
|
65
62
|
const id = uuidv4()
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Md5 } from 'ts-md5'
|
|
2
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
3
|
+
import encrypt from './encrypt'
|
|
4
|
+
|
|
5
|
+
/** 与后端 token.dataSigna / DataTamperingFilter 一致 */
|
|
6
|
+
export const SIGNA_KEY = 'F2E49299-D0D2-4AA1-87A3-270272EA3D6A'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 规范化 signa 参与签名的字符串(strip 非字母数字 → 字符排序)。
|
|
10
|
+
* multipart 上传使用完整 URL(含 query);JSON 接口使用序列化后的 body。
|
|
11
|
+
*/
|
|
12
|
+
export function normalizeSignaPayload(raw: string): string {
|
|
13
|
+
return raw
|
|
14
|
+
.replace(/[^\u4E00-\u9FA5A-Za-z0-9]/g, '')
|
|
15
|
+
.split('')
|
|
16
|
+
.sort()
|
|
17
|
+
.join('')
|
|
18
|
+
.trim()
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function computeSigna(authorization: string, payload: string): string {
|
|
22
|
+
return Md5.hashStr(authorization + SIGNA_KEY + normalizeSignaPayload(payload))
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface BuildUploadHeadersOptions {
|
|
26
|
+
/** 上传 action 路径,如 /api/doc/uploadFile/biz/id/true?watermarkCode=xxx */
|
|
27
|
+
url: string
|
|
28
|
+
skipAuthorization?: boolean
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* el-upload / uni.uploadFile 等不走 axios 拦截器的上传请求头。
|
|
33
|
+
* signa 按 URL 计算,与 DataTamperingFilter multipart 分支对齐。
|
|
34
|
+
*/
|
|
35
|
+
export function buildUploadHeaders(
|
|
36
|
+
options: BuildUploadHeadersOptions | string,
|
|
37
|
+
): Record<string, string> {
|
|
38
|
+
const url = typeof options === 'string' ? options : options.url
|
|
39
|
+
const skipAuthorization =
|
|
40
|
+
typeof options === 'string' ? false : (options.skipAuthorization ?? false)
|
|
41
|
+
|
|
42
|
+
const Authorization = skipAuthorization ? '' : sessionStorage.getItem('Authorization') || ''
|
|
43
|
+
const normalizedPayload = normalizeSignaPayload(url)
|
|
44
|
+
|
|
45
|
+
const timeDifference = sessionStorage.getItem('timeDifference')
|
|
46
|
+
const id = uuidv4()
|
|
47
|
+
const localTime = new Date().getTime()
|
|
48
|
+
const replayObj = { timeDifference, guid: id, localTime }
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
Authorization,
|
|
52
|
+
sessionId: skipAuthorization ? '' : sessionStorage.getItem('sessionId') || '',
|
|
53
|
+
signa: computeSigna(Authorization, url),
|
|
54
|
+
antiShakeKey: Md5.hashStr(normalizedPayload),
|
|
55
|
+
'Cache-Control': 'no-cache',
|
|
56
|
+
replayToken: encrypt.encrypt(JSON.stringify(replayObj)),
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/* 现代圆角滚动条(hover 显示),供全局 / vxe 复用 */
|
|
2
|
-
|
|
3
|
-
.adtec-scrollbar-active() {
|
|
4
|
-
scrollbar-width: thin;
|
|
5
|
-
scrollbar-color: var(--adtec-scrollbar-thumb-color) var(--adtec-scrollbar-track-color);
|
|
6
|
-
|
|
7
|
-
&::-webkit-scrollbar {
|
|
8
|
-
background: transparent;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
&::-webkit-scrollbar:vertical {
|
|
12
|
-
width: var(--adtec-scrollbar-size);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
&::-webkit-scrollbar:horizontal {
|
|
16
|
-
height: var(--adtec-scrollbar-size);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
&::-webkit-scrollbar-track {
|
|
20
|
-
background: var(--adtec-scrollbar-track-color);
|
|
21
|
-
border-radius: var(--adtec-scrollbar-radius);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
&::-webkit-scrollbar-thumb {
|
|
25
|
-
background: var(--adtec-scrollbar-thumb-color);
|
|
26
|
-
border-radius: var(--adtec-scrollbar-radius);
|
|
27
|
-
border: none;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
&::-webkit-scrollbar-thumb:hover {
|
|
31
|
-
background: var(--adtec-scrollbar-thumb-hover-color);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
&::-webkit-scrollbar-button {
|
|
35
|
-
display: none;
|
|
36
|
-
width: 0;
|
|
37
|
-
height: 0;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
&::-webkit-scrollbar-corner {
|
|
41
|
-
background: transparent;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.adtec-scrollbar-hidden() {
|
|
46
|
-
scrollbar-width: none;
|
|
47
|
-
-ms-overflow-style: none;
|
|
48
|
-
|
|
49
|
-
&::-webkit-scrollbar-thumb {
|
|
50
|
-
background: transparent;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
&::-webkit-scrollbar-track {
|
|
54
|
-
background: transparent;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/* 附件预览等关键区域:滚动条常显(覆盖全局 hover 才显示) */
|
|
59
|
-
.adtec-scrollbar-persistent() {
|
|
60
|
-
.adtec-scrollbar-active();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/* vxe 表格专用:尺寸/颜色与 el-scrollbar 一致 */
|
|
64
|
-
.adtec-vxe-scrollbar-active() {
|
|
65
|
-
scrollbar-width: thin;
|
|
66
|
-
scrollbar-color: var(--vxe-scrollbar-thumb-color, rgba(0, 0, 0, 0.42))
|
|
67
|
-
var(--vxe-scrollbar-track-color, rgba(0, 0, 0, 0.04));
|
|
68
|
-
|
|
69
|
-
&::-webkit-scrollbar {
|
|
70
|
-
background: transparent;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
&::-webkit-scrollbar:vertical {
|
|
74
|
-
width: var(--vxe-scrollbar-size, 8px);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
&::-webkit-scrollbar:horizontal {
|
|
78
|
-
height: var(--vxe-scrollbar-size, 8px);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
&::-webkit-scrollbar-track {
|
|
82
|
-
background: var(--vxe-scrollbar-track-color, rgba(0, 0, 0, 0.04));
|
|
83
|
-
border-radius: calc(var(--vxe-scrollbar-size, 8px) / 2);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
&::-webkit-scrollbar-thumb {
|
|
87
|
-
background: var(--vxe-scrollbar-thumb-color, rgba(0, 0, 0, 0.42));
|
|
88
|
-
border-radius: calc(var(--vxe-scrollbar-size, 8px) / 2);
|
|
89
|
-
border: none;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
&::-webkit-scrollbar-thumb:hover {
|
|
93
|
-
background: var(--vxe-scrollbar-thumb-hover-color, rgba(0, 0, 0, 0.55));
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
&::-webkit-scrollbar-button {
|
|
97
|
-
display: none;
|
|
98
|
-
width: 0;
|
|
99
|
-
height: 0;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
&::-webkit-scrollbar-corner {
|
|
103
|
-
background: transparent;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
// 现代圆角滚动条(hover 显示),与 scrollbar-classic.less 保持同步
|
|
2
|
-
|
|
3
|
-
@mixin adtec-scrollbar-active {
|
|
4
|
-
scrollbar-width: thin;
|
|
5
|
-
scrollbar-color: var(--adtec-scrollbar-thumb-color) var(--adtec-scrollbar-track-color);
|
|
6
|
-
|
|
7
|
-
&::-webkit-scrollbar {
|
|
8
|
-
background: transparent;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
&::-webkit-scrollbar:vertical {
|
|
12
|
-
width: var(--adtec-scrollbar-size);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
&::-webkit-scrollbar:horizontal {
|
|
16
|
-
height: var(--adtec-scrollbar-size);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
&::-webkit-scrollbar-track {
|
|
20
|
-
background: var(--adtec-scrollbar-track-color);
|
|
21
|
-
border-radius: var(--adtec-scrollbar-radius);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
&::-webkit-scrollbar-thumb {
|
|
25
|
-
background: var(--adtec-scrollbar-thumb-color);
|
|
26
|
-
border-radius: var(--adtec-scrollbar-radius);
|
|
27
|
-
border: none;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
&::-webkit-scrollbar-thumb:hover {
|
|
31
|
-
background: var(--adtec-scrollbar-thumb-hover-color);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
&::-webkit-scrollbar-button {
|
|
35
|
-
display: none;
|
|
36
|
-
width: 0;
|
|
37
|
-
height: 0;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
&::-webkit-scrollbar-corner {
|
|
41
|
-
background: transparent;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
@mixin adtec-scrollbar-hidden {
|
|
46
|
-
scrollbar-width: none;
|
|
47
|
-
-ms-overflow-style: none;
|
|
48
|
-
|
|
49
|
-
&::-webkit-scrollbar-thumb {
|
|
50
|
-
background: transparent;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
&::-webkit-scrollbar-track {
|
|
54
|
-
background: transparent;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/* 附件预览等关键区域:滚动条常显(覆盖全局 hover 才显示) */
|
|
59
|
-
@mixin adtec-scrollbar-persistent {
|
|
60
|
-
@include adtec-scrollbar-active;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/* vxe 表格专用:尺寸/颜色与 el-scrollbar 一致 */
|
|
64
|
-
@mixin adtec-vxe-scrollbar-active {
|
|
65
|
-
scrollbar-width: thin;
|
|
66
|
-
scrollbar-color: var(--vxe-scrollbar-thumb-color, rgba(0, 0, 0, 0.42))
|
|
67
|
-
var(--vxe-scrollbar-track-color, rgba(0, 0, 0, 0.04));
|
|
68
|
-
|
|
69
|
-
&::-webkit-scrollbar {
|
|
70
|
-
background: transparent;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
&::-webkit-scrollbar:vertical {
|
|
74
|
-
width: var(--vxe-scrollbar-size, 8px);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
&::-webkit-scrollbar:horizontal {
|
|
78
|
-
height: var(--vxe-scrollbar-size, 8px);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
&::-webkit-scrollbar-track {
|
|
82
|
-
background: var(--vxe-scrollbar-track-color, rgba(0, 0, 0, 0.04));
|
|
83
|
-
border-radius: calc(var(--vxe-scrollbar-size, 8px) / 2);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
&::-webkit-scrollbar-thumb {
|
|
87
|
-
background: var(--vxe-scrollbar-thumb-color, rgba(0, 0, 0, 0.42));
|
|
88
|
-
border-radius: calc(var(--vxe-scrollbar-size, 8px) / 2);
|
|
89
|
-
border: none;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
&::-webkit-scrollbar-thumb:hover {
|
|
93
|
-
background: var(--vxe-scrollbar-thumb-hover-color, rgba(0, 0, 0, 0.55));
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
&::-webkit-scrollbar-button {
|
|
97
|
-
display: none;
|
|
98
|
-
width: 0;
|
|
99
|
-
height: 0;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
&::-webkit-scrollbar-corner {
|
|
103
|
-
background: transparent;
|
|
104
|
-
}
|
|
105
|
-
}
|