adtec-core-package 3.1.8 → 3.2.0

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 (62) hide show
  1. package/.idea/codeStyles/Project.xml +61 -0
  2. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  3. package/.idea/misc.xml +6 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/vcs.xml +6 -0
  6. package/.idea//345/211/215/347/253/257/346/240/270/345/277/203/345/214/205.iml +8 -0
  7. package/package.json +2 -1
  8. package/src/assets/style/index.less +30 -42
  9. package/src/assets/style/scrollbar-classic.less +105 -0
  10. package/src/assets/style/scrollbar-classic.scss +105 -0
  11. package/src/components/ElCardList.vue +7 -1
  12. package/src/components/Scrollbars/ElScrollbars.vue +10 -2
  13. package/src/components/editor-main/src/assets/styles/_variables.less +1 -1
  14. package/src/components/upload/DocxJsViewer.vue +2 -16
  15. package/src/components/upload/FileView.vue +7 -2
  16. package/src/components/upload/OfficePreview.vue +9 -1
  17. package/src/components/upload/PdfJsViewer.vue +2 -2
  18. package/src/config/VxeTableConfig.ts +2 -2
  19. package/src/css/elementUI/common/var.scss +4 -4
  20. package/src/css/elementUI/mixins/mixins.scss +4 -28
  21. package/src/css/elementUI/scrollbar.scss +20 -5
  22. package/src/css/vxeTableUI/components/table.scss +22 -29
  23. package/src/utils/excelPreviewUtil.ts +219 -45
  24. package/src/utils/officePreviewUtil.ts +6 -0
  25. package/.claude/skills/gitnexus/gitnexus-cli/SKILL.md +0 -83
  26. package/.claude/skills/gitnexus/gitnexus-debugging/SKILL.md +0 -89
  27. package/.claude/skills/gitnexus/gitnexus-exploring/SKILL.md +0 -78
  28. package/.claude/skills/gitnexus/gitnexus-guide/SKILL.md +0 -64
  29. package/.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md +0 -97
  30. package/.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md +0 -121
  31. package/.editorconfig +0 -6
  32. package/.prettierrc.json +0 -7
  33. package/.vscode/extensions.json +0 -8
  34. package/AGENTS.md +0 -43
  35. package/CLAUDE.md +0 -43
  36. package/adtec-core-package/adtec-core-package.css +0 -1
  37. package/adtec-core-package/adtec-core-package.js +0 -41216
  38. package/adtec-core-package/adtec-core-package.umd.cjs +0 -87
  39. package/adtec-core-package/favicon.ico +0 -0
  40. package/adtec-core-package-3.1.7.tgz +0 -0
  41. package/auto-imports.d.ts +0 -299
  42. package/env.d.ts +0 -1
  43. package/eslint.config.js +0 -56
  44. package/index.html +0 -13
  45. package/package/.editorconfig +0 -6
  46. package/package/adtec-core-package/adtec-core-package.css +0 -1
  47. package/package/adtec-core-package/adtec-core-package.js +0 -41216
  48. package/package/adtec-core-package/adtec-core-package.umd.cjs +0 -87
  49. package/package/adtec-core-package/favicon.ico +0 -0
  50. package/package/index.html +0 -13
  51. package/package/prebuilt/umo-editor/favicon.ico +0 -0
  52. package/package/prebuilt/umo-editor/umo-editor.css +0 -1
  53. package/package/public/favicon.ico +0 -0
  54. package/package/src/assets/base.css +0 -86
  55. package/package/src/assets/main.css +0 -35
  56. package/package/src/components/editor-main/src/extensions/bookmark.js +0 -110
  57. package/prebuilt/umo-editor/umo-editor.js.map +0 -1
  58. package/tsconfig.app.json +0 -12
  59. package/tsconfig.json +0 -11
  60. package/tsconfig.node.json +0 -18
  61. package/vite.config.ts +0 -46
  62. package/vite.config.umo.ts +0 -81
@@ -0,0 +1,61 @@
1
+ <component name="ProjectCodeStyleConfiguration">
2
+ <code_scheme name="Project" version="173">
3
+ <HTMLCodeStyleSettings>
4
+ <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
5
+ </HTMLCodeStyleSettings>
6
+ <JSCodeStyleSettings version="0">
7
+ <option name="USE_SEMICOLON_AFTER_STATEMENT" value="false" />
8
+ <option name="FORCE_SEMICOLON_STYLE" value="true" />
9
+ <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
10
+ <option name="USE_DOUBLE_QUOTES" value="false" />
11
+ <option name="FORCE_QUOTE_STYlE" value="true" />
12
+ <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
13
+ <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
14
+ <option name="SPACES_WITHIN_IMPORTS" value="true" />
15
+ </JSCodeStyleSettings>
16
+ <TypeScriptCodeStyleSettings version="0">
17
+ <option name="USE_SEMICOLON_AFTER_STATEMENT" value="false" />
18
+ <option name="FORCE_SEMICOLON_STYLE" value="true" />
19
+ <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
20
+ <option name="USE_DOUBLE_QUOTES" value="false" />
21
+ <option name="FORCE_QUOTE_STYlE" value="true" />
22
+ <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
23
+ <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
24
+ <option name="SPACES_WITHIN_IMPORTS" value="true" />
25
+ </TypeScriptCodeStyleSettings>
26
+ <VueCodeStyleSettings>
27
+ <option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
28
+ <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
29
+ </VueCodeStyleSettings>
30
+ <codeStyleSettings language="HTML">
31
+ <option name="SOFT_MARGINS" value="100" />
32
+ <indentOptions>
33
+ <option name="INDENT_SIZE" value="2" />
34
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
35
+ <option name="TAB_SIZE" value="2" />
36
+ </indentOptions>
37
+ </codeStyleSettings>
38
+ <codeStyleSettings language="JavaScript">
39
+ <option name="SOFT_MARGINS" value="100" />
40
+ <indentOptions>
41
+ <option name="INDENT_SIZE" value="2" />
42
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
43
+ <option name="TAB_SIZE" value="2" />
44
+ </indentOptions>
45
+ </codeStyleSettings>
46
+ <codeStyleSettings language="TypeScript">
47
+ <option name="SOFT_MARGINS" value="100" />
48
+ <indentOptions>
49
+ <option name="INDENT_SIZE" value="2" />
50
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
51
+ <option name="TAB_SIZE" value="2" />
52
+ </indentOptions>
53
+ </codeStyleSettings>
54
+ <codeStyleSettings language="Vue">
55
+ <option name="SOFT_MARGINS" value="100" />
56
+ <indentOptions>
57
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
58
+ </indentOptions>
59
+ </codeStyleSettings>
60
+ </code_scheme>
61
+ </component>
@@ -0,0 +1,5 @@
1
+ <component name="ProjectCodeStyleConfiguration">
2
+ <state>
3
+ <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
+ </state>
5
+ </component>
package/.idea/misc.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="SvnConfiguration">
4
+ <configuration>$USER_HOME$/.subversion</configuration>
5
+ </component>
6
+ </project>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/前端核心包.iml" filepath="$PROJECT_DIR$/.idea/前端核心包.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
package/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="WEB_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$" />
5
+ <orderEntry type="inheritedJdk" />
6
+ <orderEntry type="sourceFolder" forTests="false" />
7
+ </component>
8
+ </module>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adtec-core-package",
3
- "version": "3.1.8",
3
+ "version": "3.2.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -82,6 +82,7 @@
82
82
  "es-drager": "1.2.11",
83
83
  "exceljs": "4.4.0",
84
84
  "fast-glob": "3.3.3",
85
+ "fflate": "^0.3.8",
85
86
  "file-saver": "2.0.5",
86
87
  "hotkeys-js": "4.0.2",
87
88
  "jsbarcode": "3.12.3",
@@ -5,6 +5,7 @@
5
5
  // @import './sidebar.scss';
6
6
  // @import './btn.scss';
7
7
  @import './transition.scss';
8
+ @import './scrollbar-classic.less';
8
9
 
9
10
  body {
10
11
  height: 100%;
@@ -126,60 +127,47 @@ div:focus {
126
127
  --margin-8: 8px;
127
128
  --margin-9: 9px;
128
129
  --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);
129
148
  }
130
149
  .move-back {
131
150
  background: #f5f5f5 !important;
132
151
  }
133
152
 
134
- *::-webkit-scrollbar {
135
- width: 6px;
136
- height: 6px;
137
- background: transparent;
153
+ * {
154
+ .adtec-scrollbar-hidden();
138
155
  }
139
156
 
140
- *::-webkit-scrollbar-thumb {
141
- background: transparent;
142
- border-radius: 4px;
157
+ *:hover {
158
+ .adtec-scrollbar-active();
143
159
  }
144
160
 
145
- *:hover::-webkit-scrollbar-thumb {
146
- background: #DDDEE0;
161
+ /* 附件预览:常显滚动条,避免 hover 才出现导致“没有滚动条” */
162
+ .pdf-js-viewer,
163
+ .docx-js-viewer,
164
+ .excel-grid-scroll,
165
+ .office-preview-root.is-rich-preview {
166
+ .adtec-scrollbar-persistent();
147
167
  }
148
168
 
149
- *:hover::-webkit-scrollbar-track {
150
- background: transparent;
151
- }
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
- // 边角,即两个滚动条的交汇处
181
169
  ::-webkit-scrollbar-corner {
182
- display: none;
170
+ background: transparent;
183
171
  }
184
172
  // 两个滚动条的交汇处上用于通过拖动调整元素大小的小控件
185
173
  *::-webkit-resizer {
@@ -0,0 +1,105 @@
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
+ }
@@ -0,0 +1,105 @@
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
+ }
@@ -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" style="width: 100%">
6
+ <el-scrollbars :noresize="true" class="el-card-list-scroll" 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,4 +61,10 @@ 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
+ }
64
70
  </style>
@@ -3,7 +3,11 @@
3
3
  <!--创建时间: 2025/3/20 16:16-->
4
4
  <!--修改时间: 2025/3/20 16:16-->
5
5
  <template>
6
- <el-scrollbar :noresize="true" v-resize-observer="onResizeObserver" ref="ref_scrollbar">
6
+ <el-scrollbar
7
+ class="adtec-el-scrollbar"
8
+ :noresize="true"
9
+ v-resize-observer="onResizeObserver"
10
+ ref="ref_scrollbar">
7
11
  <slot></slot>
8
12
  </el-scrollbar>
9
13
  </template>
@@ -17,5 +21,9 @@ const onResizeObserver=(entries:any) =>{
17
21
  }
18
22
  </script>
19
23
  <style scoped lang="scss">
20
-
24
+ .adtec-el-scrollbar {
25
+ height: 100%;
26
+ flex: 1;
27
+ min-height: 0;
28
+ }
21
29
  </style>
@@ -60,7 +60,7 @@
60
60
  Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace;
61
61
 
62
62
  // 滚动条
63
- --umo-scrollbar-size: 8px;
63
+ --umo-scrollbar-size: 12px;
64
64
  --umo-scrollbar-thumb-color: rgba(0, 0, 0, 0.1);
65
65
  --umo-scrollbar-thumb-hover-color: rgba(0, 0, 0, 0.3);
66
66
  }
@@ -1,10 +1,7 @@
1
1
  <template>
2
2
  <div ref="scrollRef" class="docx-js-viewer">
3
3
  <div v-if="loading" class="docx-loading">正在解析 Word 文档…</div>
4
- <div v-else-if="legacyDoc" class="docx-legacy-tip">
5
- <el-empty description="旧版 Word(.doc)暂不支持浏览器内预览,请下载后查看或转换为 docx。" />
6
- </div>
7
- <div v-else-if="loadError" class="docx-legacy-tip">
4
+ <div v-else-if="loadError" class="docx-error-tip">
8
5
  <el-empty :description="loadError" />
9
6
  </div>
10
7
  <div v-else class="docx-body">
@@ -22,9 +19,7 @@ import { computed, nextTick, ref, watch } from 'vue'
22
19
  import {
23
20
  activateDocxSearchMark,
24
21
  clearDocxSearchMarks,
25
- detectWordBinaryFormat,
26
22
  type DocxSearchMatch,
27
- resolveRawWordExt,
28
23
  searchDocxPages,
29
24
  } from '../../utils/docxPreviewUtil.ts'
30
25
 
@@ -49,7 +44,6 @@ const scrollRef = ref<HTMLElement | null>(null)
49
44
  const styleHostRef = ref<HTMLElement | null>(null)
50
45
  const bodyHostRef = ref<HTMLElement | null>(null)
51
46
  const loading = ref(false)
52
- const legacyDoc = ref(false)
53
47
  const loadError = ref('')
54
48
  const totalPages = ref(0)
55
49
  const currentPage = ref(1)
@@ -72,7 +66,6 @@ const scaleHostStyle = computed(() => {
72
66
  })
73
67
 
74
68
  const resetViewer = () => {
75
- legacyDoc.value = false
76
69
  loadError.value = ''
77
70
  totalPages.value = 0
78
71
  currentPage.value = 1
@@ -110,13 +103,6 @@ const loadDocument = async (src: Blob | ArrayBuffer) => {
110
103
  resetViewer()
111
104
  try {
112
105
  const buffer = src instanceof Blob ? await src.arrayBuffer() : src
113
- const binaryFormat = detectWordBinaryFormat(buffer)
114
- const rawExt = resolveRawWordExt(props.fileType, props.fileName, props.fileUrl)
115
- if (binaryFormat === 'doc' || rawExt === 'doc') {
116
- legacyDoc.value = true
117
- emit('loaded')
118
- return
119
- }
120
106
  const bodyHost = bodyHostRef.value
121
107
  const styleHost = styleHostRef.value
122
108
  if (!bodyHost || !styleHost) {
@@ -253,7 +239,7 @@ defineExpose({
253
239
  }
254
240
 
255
241
  .docx-loading,
256
- .docx-legacy-tip {
242
+ .docx-error-tip {
257
243
  display: flex;
258
244
  align-items: center;
259
245
  justify-content: center;
@@ -5,7 +5,7 @@
5
5
  <template>
6
6
  <Teleport to="body" v-if="model">
7
7
  <div
8
- v-loading="loading"
8
+ v-loading="showOverlayLoading"
9
9
  element-loading-text="加载中,请稍后。。。"
10
10
  class="file-view-overlay"
11
11
  >
@@ -86,11 +86,16 @@ const isHeaderPreview = computed(() =>
86
86
  isHeaderPreviewFile(undefined, title.value, url.value),
87
87
  )
88
88
 
89
+ /** 富文本预览由 OfficePreview 自带 loading,避免与 v-loading 双层转圈 */
90
+ const showOverlayLoading = computed(() => loading.value && !isHeaderPreview.value)
91
+
89
92
  watch(
90
93
  [model, url],
91
94
  ([visible, fileUrl]) => {
92
95
  if (visible && fileUrl) {
93
- loading.value = true
96
+ if (!isHeaderPreview.value) {
97
+ loading.value = true
98
+ }
94
99
  previewScale.value = 1
95
100
  } else if (!visible) {
96
101
  loading.value = false
@@ -71,7 +71,7 @@
71
71
  @error="handleError"
72
72
  @page-change="previewCurrentPage = $event"
73
73
  />
74
- <div v-if="isPreviewLoading" class="office-rich-loading">
74
+ <div v-if="isPreviewLoading && !fileSrc" class="office-rich-loading">
75
75
  <div class="loading-card">
76
76
  <span class="loading-spinner" />
77
77
  <p class="loading-title">{{ loadingMessage }}</p>
@@ -394,6 +394,14 @@ defineExpose({
394
394
  min-height: 0;
395
395
  }
396
396
 
397
+ :deep(.office-rich-viewer) {
398
+ flex: 1;
399
+ width: 100%;
400
+ min-height: 0;
401
+ height: 100%;
402
+ overflow: auto;
403
+ }
404
+
397
405
  .office-rich-wrap {
398
406
  position: relative;
399
407
  flex: 1;
@@ -43,7 +43,7 @@ import {
43
43
  import * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.mjs'
44
44
  import pdfWorker from 'pdfjs-dist/legacy/build/pdf.worker.mjs?url'
45
45
  import { searchPdfDocument, type PdfSearchMatch } from '../../utils/pdfSearchUtil'
46
- import { computePdfDefaultFitScale } from '../../utils/officePreviewUtil.ts'
46
+ import { computePdfDefaultFitScale, buildPdfJsLoadOptions } from '../../utils/officePreviewUtil.ts'
47
47
 
48
48
  pdfjsLib.GlobalWorkerOptions.workerSrc = pdfWorker
49
49
 
@@ -667,7 +667,7 @@ const loadPdf = async (src: Blob | ArrayBuffer) => {
667
667
  const data = await toArrayBuffer(src)
668
668
  if (token !== loadToken) return
669
669
 
670
- const loadingTask = pdfjsLib.getDocument({ data })
670
+ const loadingTask = pdfjsLib.getDocument(buildPdfJsLoadOptions(data))
671
671
  activeTask = loadingTask
672
672
  const doc = await loadingTask.promise
673
673
  if (token !== loadToken) return
@@ -213,8 +213,8 @@ export function initVxeTableInPage(
213
213
  oSize: 2,
214
214
  },
215
215
  scrollbarConfig: {
216
- // width: 0,
217
- // height: 0
216
+ width: 10,
217
+ height: 10,
218
218
  },
219
219
  },
220
220
  grid: {
@@ -1226,10 +1226,10 @@ $loading: map.merge(
1226
1226
  $scrollbar: () !default;
1227
1227
  $scrollbar: map.merge(
1228
1228
  (
1229
- 'opacity': 0.3,
1230
- 'bg-color': getCssVar('text-color-secondary'),
1231
- 'hover-opacity': 0.5,
1232
- 'hover-bg-color': getCssVar('text-color-secondary'),
1229
+ 'opacity': 0.65,
1230
+ 'bg-color': rgba(0, 0, 0, 0.42),
1231
+ 'hover-opacity': 0.85,
1232
+ 'hover-bg-color': rgba(0, 0, 0, 0.55),
1233
1233
  ),
1234
1234
  $scrollbar
1235
1235
  );