Skip to content

Commit c5c17e6

Browse files
authored
fix: 修复empty使用svg id固定问题 (#951)
1 parent da8e70e commit c5c17e6

File tree

1 file changed

+48
-18
lines changed

1 file changed

+48
-18
lines changed

components/empty/imgEmpty.vue

Lines changed: 48 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
xmlns:xlink="http://www.w3.org/1999/xlink"
88
>
99
<defs>
10+
<!-- 线性渐变定义,使用唯一ID避免多个组件实例间的冲突 -->
1011
<linearGradient
11-
id="linearGradient-1"
12+
:id="`linearGradient-1-${uniqueId}`"
1213
x1="50%"
1314
y1="15.6101617%"
1415
x2="50%"
@@ -22,7 +23,7 @@
2223
/>
2324
</linearGradient>
2425
<linearGradient
25-
id="linearGradient-2"
26+
:id="`linearGradient-2-${uniqueId}`"
2627
x1="50%"
2728
y1="-2.48949813e-15%"
2829
x2="50%"
@@ -32,7 +33,7 @@
3233
<stop stop-color="#EEEEEE" offset="100%" />
3334
</linearGradient>
3435
<linearGradient
35-
id="linearGradient-3"
36+
:id="`linearGradient-3-${uniqueId}`"
3637
x1="50%"
3738
y1="100%"
3839
x2="50%"
@@ -42,7 +43,7 @@
4243
<stop stop-color="#E7E7E7" offset="100%" />
4344
</linearGradient>
4445
<linearGradient
45-
id="linearGradient-4"
46+
:id="`linearGradient-4-${uniqueId}`"
4647
x1="50%"
4748
y1="100%"
4849
x2="50%"
@@ -52,7 +53,7 @@
5253
<stop stop-color="#DBDBDB" offset="100%" />
5354
</linearGradient>
5455
<linearGradient
55-
id="linearGradient-5"
56+
:id="`linearGradient-5-${uniqueId}`"
5657
x1="100%"
5758
y1="50%"
5859
x2="0.124801956%"
@@ -62,7 +63,7 @@
6263
<stop stop-color="#E6E6E6" offset="100%" />
6364
</linearGradient>
6465
<linearGradient
65-
id="linearGradient-6"
66+
:id="`linearGradient-6-${uniqueId}`"
6667
x1="-2.22044605e-14%"
6768
y1="50%"
6869
x2="100%"
@@ -72,7 +73,7 @@
7273
<stop stop-color="#EBEBEB" offset="100%" />
7374
</linearGradient>
7475
<linearGradient
75-
id="linearGradient-7"
76+
:id="`linearGradient-7-${uniqueId}`"
7677
x1="-2.22044605e-14%"
7778
y1="50%"
7879
x2="100%"
@@ -82,7 +83,7 @@
8283
<stop stop-color="#FAFAFA" offset="100%" />
8384
</linearGradient>
8485
<linearGradient
85-
id="linearGradient-8"
86+
:id="`linearGradient-8-${uniqueId}`"
8687
x1="-2.22044605e-14%"
8788
y1="50%"
8889
x2="100%"
@@ -92,7 +93,7 @@
9293
<stop stop-color="#F7F7F7" offset="100%" />
9394
</linearGradient>
9495
<linearGradient
95-
id="linearGradient-9"
96+
:id="`linearGradient-9-${uniqueId}`"
9697
x1="-2.22044605e-14%"
9798
y1="50%"
9899
x2="100%"
@@ -116,49 +117,50 @@
116117
>
117118
<g id="Group-1" transform="translate(0.000000, 91.892457)">
118119
<g id="Group-1-1">
120+
<!-- 使用动态绑定的渐变引用,确保每个组件实例的唯一性 -->
119121
<path
120122
id="Oval-1"
121123
d="M260,146.301035 C260,133.413733 201.797017,122.966511 130,122.966511 C58.2029825,122.966511 0,133.413733 0,146.301035 C0,159.188336 260,159.188336 260,146.301035 Z"
122-
fill="url(#linearGradient-1)"
124+
:fill="`url(#linearGradient-1-${uniqueId})`"
123125
/>
124126
<path
125127
id="Rectangle-1"
126128
d="M184,0 L54,0 L54,124.46629 C54,126.473725 55.6273476,128.101072 57.6347826,128.101072 L184,128.101072 L184,128.101072 L184,0 Z"
127-
fill="url(#linearGradient-2)"
129+
:fill="`url(#linearGradient-2-${uniqueId})`"
128130
/>
129131
<path
130132
id="Rectangle-Copy-1"
131133
d="M184.000001,1.13686838e-13 L210.009578,1.13686838e-13 L210.009578,128.101072 L187.634784,128.101072 C185.627349,128.101072 184.000001,126.473725 184.000001,124.46629 L184.000001,1.13686838e-13 L184.000001,1.13686838e-13 Z"
132-
fill="url(#linearGradient-3)"
134+
:fill="`url(#linearGradient-3-${uniqueId})`"
133135
transform="translate(197.004789, 64.050536) scale(-1, 1) translate(-197.004789, -64.050536) "
134136
/>
135137
<polygon
136138
id="Rectangle-Copy-2"
137-
fill="url(#linearGradient-4)"
139+
:fill="`url(#linearGradient-4-${uniqueId})`"
138140
transform="translate(196.954349, 16.551537) scale(-1, 1) translate(-196.954349, -16.551537) "
139141
points="184.000001 3.41060513e-13 209.908696 6.82390337e-13 209.908696 33.1030746 184.000001 33.1030746"
140142
/>
141143
<polygon
142144
id="Rectangle-2"
143-
fill="url(#linearGradient-5)"
145+
:fill="`url(#linearGradient-5-${uniqueId})`"
144146
opacity="0.898363386"
145147
points="54 26.5915493 174.685305 26.5915493 183.908695 3.41060513e-13 184 32.915493 54 32.915493"
146148
/>
147149
<polygon
148150
id="Rectangle-Copy-4"
149-
fill="url(#linearGradient-6)"
151+
:fill="`url(#linearGradient-6-${uniqueId})`"
150152
points="209.908695 1.13686838e-13 221 26.7978558 193.908695 26.5915493 183.908695 1.13686838e-13"
151153
/>
152154
<polygon
153155
id="Rectangle-3"
154-
fill="url(#linearGradient-7)"
156+
:fill="`url(#linearGradient-7-${uniqueId})`"
155157
transform="translate(113.553972, 13.295775) scale(-1, 1) rotate(-180.000000) translate(-113.553972, -13.295775) "
156158
points="43.0584897 7.00000001e-07 174.685305 7.00000001e-07 184.049454 26.59155 53.555527 26.59155"
157159
/>
158160
</g>
159161
<rect
160162
id="Rectangle-Copy-3"
161-
fill="url(#linearGradient-8)"
163+
:fill="`url(#linearGradient-8-${uniqueId})`"
162164
x="74"
163165
y="82.1010721"
164166
width="90"
@@ -167,7 +169,7 @@
167169
/>
168170
<rect
169171
id="Shape-Combination-Copy"
170-
fill="url(#linearGradient-9)"
172+
:fill="`url(#linearGradient-9-${uniqueId})`"
171173
x="74"
172174
y="58.0505361"
173175
width="41"
@@ -211,3 +213,31 @@
211213
</g>
212214
</svg>
213215
</template>
216+
217+
<script lang="ts">
218+
import { defineComponent } from 'vue';
219+
220+
// 全局计数器,用于生成唯一ID
221+
let idCounter = 0;
222+
223+
/**
224+
* 生成唯一ID的工具函数
225+
* 结合计数器和时间戳确保每个组件实例的唯一性
226+
* @returns {string} 唯一标识符
227+
*/
228+
function generateUniqueId(): string {
229+
return `empty-${++idCounter}-${Date.now()}`;
230+
}
231+
232+
export default defineComponent({
233+
name: 'DefaultImgEmpty',
234+
setup() {
235+
// 为每个组件实例生成唯一ID,避免SVG渐变定义冲突
236+
const uniqueId = generateUniqueId();
237+
238+
return {
239+
uniqueId,
240+
};
241+
},
242+
});
243+
</script>

0 commit comments

Comments
 (0)