|
7 | 7 | xmlns:xlink="http://www.w3.org/1999/xlink"
|
8 | 8 | >
|
9 | 9 | <defs>
|
| 10 | + <!-- 线性渐变定义,使用唯一ID避免多个组件实例间的冲突 --> |
10 | 11 | <linearGradient
|
11 |
| - id="linearGradient-1" |
| 12 | + :id="`linearGradient-1-${uniqueId}`" |
12 | 13 | x1="50%"
|
13 | 14 | y1="15.6101617%"
|
14 | 15 | x2="50%"
|
|
22 | 23 | />
|
23 | 24 | </linearGradient>
|
24 | 25 | <linearGradient
|
25 |
| - id="linearGradient-2" |
| 26 | + :id="`linearGradient-2-${uniqueId}`" |
26 | 27 | x1="50%"
|
27 | 28 | y1="-2.48949813e-15%"
|
28 | 29 | x2="50%"
|
|
32 | 33 | <stop stop-color="#EEEEEE" offset="100%" />
|
33 | 34 | </linearGradient>
|
34 | 35 | <linearGradient
|
35 |
| - id="linearGradient-3" |
| 36 | + :id="`linearGradient-3-${uniqueId}`" |
36 | 37 | x1="50%"
|
37 | 38 | y1="100%"
|
38 | 39 | x2="50%"
|
|
42 | 43 | <stop stop-color="#E7E7E7" offset="100%" />
|
43 | 44 | </linearGradient>
|
44 | 45 | <linearGradient
|
45 |
| - id="linearGradient-4" |
| 46 | + :id="`linearGradient-4-${uniqueId}`" |
46 | 47 | x1="50%"
|
47 | 48 | y1="100%"
|
48 | 49 | x2="50%"
|
|
52 | 53 | <stop stop-color="#DBDBDB" offset="100%" />
|
53 | 54 | </linearGradient>
|
54 | 55 | <linearGradient
|
55 |
| - id="linearGradient-5" |
| 56 | + :id="`linearGradient-5-${uniqueId}`" |
56 | 57 | x1="100%"
|
57 | 58 | y1="50%"
|
58 | 59 | x2="0.124801956%"
|
|
62 | 63 | <stop stop-color="#E6E6E6" offset="100%" />
|
63 | 64 | </linearGradient>
|
64 | 65 | <linearGradient
|
65 |
| - id="linearGradient-6" |
| 66 | + :id="`linearGradient-6-${uniqueId}`" |
66 | 67 | x1="-2.22044605e-14%"
|
67 | 68 | y1="50%"
|
68 | 69 | x2="100%"
|
|
72 | 73 | <stop stop-color="#EBEBEB" offset="100%" />
|
73 | 74 | </linearGradient>
|
74 | 75 | <linearGradient
|
75 |
| - id="linearGradient-7" |
| 76 | + :id="`linearGradient-7-${uniqueId}`" |
76 | 77 | x1="-2.22044605e-14%"
|
77 | 78 | y1="50%"
|
78 | 79 | x2="100%"
|
|
82 | 83 | <stop stop-color="#FAFAFA" offset="100%" />
|
83 | 84 | </linearGradient>
|
84 | 85 | <linearGradient
|
85 |
| - id="linearGradient-8" |
| 86 | + :id="`linearGradient-8-${uniqueId}`" |
86 | 87 | x1="-2.22044605e-14%"
|
87 | 88 | y1="50%"
|
88 | 89 | x2="100%"
|
|
92 | 93 | <stop stop-color="#F7F7F7" offset="100%" />
|
93 | 94 | </linearGradient>
|
94 | 95 | <linearGradient
|
95 |
| - id="linearGradient-9" |
| 96 | + :id="`linearGradient-9-${uniqueId}`" |
96 | 97 | x1="-2.22044605e-14%"
|
97 | 98 | y1="50%"
|
98 | 99 | x2="100%"
|
|
116 | 117 | >
|
117 | 118 | <g id="Group-1" transform="translate(0.000000, 91.892457)">
|
118 | 119 | <g id="Group-1-1">
|
| 120 | + <!-- 使用动态绑定的渐变引用,确保每个组件实例的唯一性 --> |
119 | 121 | <path
|
120 | 122 | id="Oval-1"
|
121 | 123 | 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})`" |
123 | 125 | />
|
124 | 126 | <path
|
125 | 127 | id="Rectangle-1"
|
126 | 128 | 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})`" |
128 | 130 | />
|
129 | 131 | <path
|
130 | 132 | id="Rectangle-Copy-1"
|
131 | 133 | 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})`" |
133 | 135 | transform="translate(197.004789, 64.050536) scale(-1, 1) translate(-197.004789, -64.050536) "
|
134 | 136 | />
|
135 | 137 | <polygon
|
136 | 138 | id="Rectangle-Copy-2"
|
137 |
| - fill="url(#linearGradient-4)" |
| 139 | + :fill="`url(#linearGradient-4-${uniqueId})`" |
138 | 140 | transform="translate(196.954349, 16.551537) scale(-1, 1) translate(-196.954349, -16.551537) "
|
139 | 141 | points="184.000001 3.41060513e-13 209.908696 6.82390337e-13 209.908696 33.1030746 184.000001 33.1030746"
|
140 | 142 | />
|
141 | 143 | <polygon
|
142 | 144 | id="Rectangle-2"
|
143 |
| - fill="url(#linearGradient-5)" |
| 145 | + :fill="`url(#linearGradient-5-${uniqueId})`" |
144 | 146 | opacity="0.898363386"
|
145 | 147 | points="54 26.5915493 174.685305 26.5915493 183.908695 3.41060513e-13 184 32.915493 54 32.915493"
|
146 | 148 | />
|
147 | 149 | <polygon
|
148 | 150 | id="Rectangle-Copy-4"
|
149 |
| - fill="url(#linearGradient-6)" |
| 151 | + :fill="`url(#linearGradient-6-${uniqueId})`" |
150 | 152 | points="209.908695 1.13686838e-13 221 26.7978558 193.908695 26.5915493 183.908695 1.13686838e-13"
|
151 | 153 | />
|
152 | 154 | <polygon
|
153 | 155 | id="Rectangle-3"
|
154 |
| - fill="url(#linearGradient-7)" |
| 156 | + :fill="`url(#linearGradient-7-${uniqueId})`" |
155 | 157 | transform="translate(113.553972, 13.295775) scale(-1, 1) rotate(-180.000000) translate(-113.553972, -13.295775) "
|
156 | 158 | points="43.0584897 7.00000001e-07 174.685305 7.00000001e-07 184.049454 26.59155 53.555527 26.59155"
|
157 | 159 | />
|
158 | 160 | </g>
|
159 | 161 | <rect
|
160 | 162 | id="Rectangle-Copy-3"
|
161 |
| - fill="url(#linearGradient-8)" |
| 163 | + :fill="`url(#linearGradient-8-${uniqueId})`" |
162 | 164 | x="74"
|
163 | 165 | y="82.1010721"
|
164 | 166 | width="90"
|
|
167 | 169 | />
|
168 | 170 | <rect
|
169 | 171 | id="Shape-Combination-Copy"
|
170 |
| - fill="url(#linearGradient-9)" |
| 172 | + :fill="`url(#linearGradient-9-${uniqueId})`" |
171 | 173 | x="74"
|
172 | 174 | y="58.0505361"
|
173 | 175 | width="41"
|
|
211 | 213 | </g>
|
212 | 214 | </svg>
|
213 | 215 | </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