@koi-br/ocr-web-sdk 1.0.14 → 1.0.16

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.
@@ -1,168 +1,171 @@
1
- <template>
2
- <div class="preview-container">
3
- <!-- 工具栏 -->
4
- <div class="preview-toolbar preview-toolbar-right">
5
- <div class="toolbar-group">
6
- <span class="scale-text">
7
- {{ Math.round(scale * 100) }}%
8
- </span>
9
- <div class="toolbar-divider"></div>
10
- <ATooltip mini position="bottom" content="重置">
11
- <AButton
12
- size="small"
13
- type="outline"
14
- @click="reset"
15
- >
16
- <RefreshCcw :size="16" />
17
- </AButton>
18
- </ATooltip>
19
- <ATooltip mini position="bottom" content="缩小">
20
- <AButton
21
- size="small"
22
- type="outline"
23
- :disabled="scale <= 0.5"
24
- @click="zoom(-0.1)"
25
- >
26
- <ZoomOut :size="16" />
27
- </AButton>
28
- </ATooltip>
29
- <ATooltip mini position="bottom" content="放大">
30
- <AButton
31
- size="small"
32
- type="outline"
33
- :disabled="scale >= 2"
34
- @click="zoom(0.1)"
35
- >
36
- <ZoomIn :size="16" />
37
- </AButton>
38
- </ATooltip>
39
- <ATooltip
40
- v-if="isDownload"
41
- mini
42
- position="bottom"
43
- content="下载"
44
- >
45
- <AButton
46
- size="small"
47
- type="outline"
48
- @click="emit('download')"
49
- >
50
- <Download :size="16" />
51
- </AButton>
52
- </ATooltip>
53
- </div>
54
- </div>
55
- <div
56
- class="excel-wrapper"
57
- :style="{ transform: `scale(${scale})`, transformOrigin: 'top left' }"
58
- >
59
- <VueOfficeExcel
60
- v-if="excel"
61
- :src="excel"
62
- style="width: 100%; height: 75vh"
63
- @rendered="onRendered"
64
- @error="onError"
65
- />
66
- </div>
67
- </div>
68
- </template>
69
-
70
- <script setup>
71
- import { ref, watch } from 'vue';
72
- import { Message, Button as AButton, Tooltip as ATooltip } from '@arco-design/web-vue';
73
- import { ZoomIn, ZoomOut, RefreshCcw, Download } from 'lucide-vue-next';
74
- import VueOfficeExcel from '@vue-office/excel/lib/v3/index';
75
- import '@vue-office/excel/lib/v3/index.css';
76
-
77
- const props = defineProps({
78
- url: {
79
- type: String,
80
- required: true
81
- },
82
- isDownload: {
83
- type: Boolean,
84
- default: false
85
- }
86
- });
87
-
88
- const emit = defineEmits(['download']);
89
-
90
- const excel = ref('');
91
- const loading = ref(false);
92
- const scale = ref(1);
93
-
94
- // 缩放方法
95
- const zoom = delta => {
96
- const newScale = scale.value + delta;
97
- if (newScale >= 0.5 && newScale <= 2) {
98
- scale.value = newScale;
99
- }
100
- };
101
-
102
- // 重置方法
103
- const reset = () => {
104
- scale.value = 1;
105
- };
106
-
107
- // 放大
108
- const zoomIn = () => {
109
- zoom(0.1);
110
- };
111
-
112
- // 缩小
113
- const zoomOut = () => {
114
- zoom(-0.1);
115
- };
116
-
117
- // 重置缩放
118
- const resetZoom = () => {
119
- reset();
120
- };
121
-
122
- // 文件加载成功
123
- const onRendered = () => {
124
- loading.value = false;
125
- };
126
-
127
- // 文件加载失败
128
- const onError = error => {
129
- loading.value = false;
130
- Message.error('Excel文件加载失败');
131
- console.error('Excel文件加载失败:', error);
132
- };
133
-
134
- // 监听URL变化
135
- watch(
136
- () => props.url,
137
- newUrl => {
138
- if (newUrl) {
139
- loading.value = true;
140
- excel.value = newUrl;
141
- }
142
- },
143
- { immediate: true }
144
- );
145
-
146
- // 清理函数
147
- const cleanup = () => {
148
- loading.value = false;
149
- excel.value = '';
150
- scale.value = 1;
151
- };
152
-
153
- // 暴露清理方法给父组件
154
- defineExpose({
155
- cleanup
156
- });
157
- </script>
158
-
159
- <style lang="less" scoped>
160
- // 样式已统一到公共样式文件,这里只保留组件特定样式
161
- .excel-wrapper {
162
- flex: 1;
163
- display: inline-block;
164
- min-width: 100%;
165
- overflow: auto;
166
- transition: transform 0.2s ease;
167
- }
168
- </style>
1
+ <template>
2
+ <div class="preview-container">
3
+ <!-- 工具栏 -->
4
+ <div class="preview-toolbar preview-toolbar-between">
5
+ <div class="toolbar-group">
6
+ <slot name="left-top"></slot>
7
+ </div>
8
+ <div class="toolbar-group">
9
+ <span class="scale-text">
10
+ {{ Math.round(scale * 100) }}%
11
+ </span>
12
+ <div class="toolbar-divider"></div>
13
+ <ATooltip mini position="bottom" content="重置">
14
+ <AButton
15
+ size="small"
16
+ type="outline"
17
+ @click="reset"
18
+ >
19
+ <RefreshCcw :size="16" />
20
+ </AButton>
21
+ </ATooltip>
22
+ <ATooltip mini position="bottom" content="缩小">
23
+ <AButton
24
+ size="small"
25
+ type="outline"
26
+ :disabled="scale <= 0.5"
27
+ @click="zoom(-0.1)"
28
+ >
29
+ <ZoomOut :size="16" />
30
+ </AButton>
31
+ </ATooltip>
32
+ <ATooltip mini position="bottom" content="放大">
33
+ <AButton
34
+ size="small"
35
+ type="outline"
36
+ :disabled="scale >= 2"
37
+ @click="zoom(0.1)"
38
+ >
39
+ <ZoomIn :size="16" />
40
+ </AButton>
41
+ </ATooltip>
42
+ <ATooltip
43
+ v-if="isDownload"
44
+ mini
45
+ position="bottom"
46
+ content="下载"
47
+ >
48
+ <AButton
49
+ size="small"
50
+ type="outline"
51
+ @click="emit('download')"
52
+ >
53
+ <Download :size="16" />
54
+ </AButton>
55
+ </ATooltip>
56
+ </div>
57
+ </div>
58
+ <div
59
+ class="excel-wrapper"
60
+ :style="{ transform: `scale(${scale})`, transformOrigin: 'top left' }"
61
+ >
62
+ <VueOfficeExcel
63
+ v-if="excel"
64
+ :src="excel"
65
+ style="width: 100%; height: 75vh"
66
+ @rendered="onRendered"
67
+ @error="onError"
68
+ />
69
+ </div>
70
+ </div>
71
+ </template>
72
+
73
+ <script setup>
74
+ import { ref, watch } from 'vue';
75
+ import { Message, Button as AButton, Tooltip as ATooltip } from '@arco-design/web-vue';
76
+ import { ZoomIn, ZoomOut, RefreshCcw, Download } from 'lucide-vue-next';
77
+ import VueOfficeExcel from '@vue-office/excel/lib/v3/index';
78
+ import '@vue-office/excel/lib/v3/index.css';
79
+
80
+ const props = defineProps({
81
+ url: {
82
+ type: String,
83
+ required: true
84
+ },
85
+ isDownload: {
86
+ type: Boolean,
87
+ default: false
88
+ }
89
+ });
90
+
91
+ const emit = defineEmits(['download']);
92
+
93
+ const excel = ref('');
94
+ const loading = ref(false);
95
+ const scale = ref(1);
96
+
97
+ // 缩放方法
98
+ const zoom = delta => {
99
+ const newScale = scale.value + delta;
100
+ if (newScale >= 0.5 && newScale <= 2) {
101
+ scale.value = newScale;
102
+ }
103
+ };
104
+
105
+ // 重置方法
106
+ const reset = () => {
107
+ scale.value = 1;
108
+ };
109
+
110
+ // 放大
111
+ const zoomIn = () => {
112
+ zoom(0.1);
113
+ };
114
+
115
+ // 缩小
116
+ const zoomOut = () => {
117
+ zoom(-0.1);
118
+ };
119
+
120
+ // 重置缩放
121
+ const resetZoom = () => {
122
+ reset();
123
+ };
124
+
125
+ // 文件加载成功
126
+ const onRendered = () => {
127
+ loading.value = false;
128
+ };
129
+
130
+ // 文件加载失败
131
+ const onError = error => {
132
+ loading.value = false;
133
+ Message.error('Excel文件加载失败');
134
+ console.error('Excel文件加载失败:', error);
135
+ };
136
+
137
+ // 监听URL变化
138
+ watch(
139
+ () => props.url,
140
+ newUrl => {
141
+ if (newUrl) {
142
+ loading.value = true;
143
+ excel.value = newUrl;
144
+ }
145
+ },
146
+ { immediate: true }
147
+ );
148
+
149
+ // 清理函数
150
+ const cleanup = () => {
151
+ loading.value = false;
152
+ excel.value = '';
153
+ scale.value = 1;
154
+ };
155
+
156
+ // 暴露清理方法给父组件
157
+ defineExpose({
158
+ cleanup
159
+ });
160
+ </script>
161
+
162
+ <style lang="less" scoped>
163
+ // 样式已统一到公共样式文件,这里只保留组件特定样式
164
+ .excel-wrapper {
165
+ flex: 1;
166
+ display: inline-block;
167
+ min-width: 100%;
168
+ overflow: auto;
169
+ transition: transform 0.2s ease;
170
+ }
171
+ </style>