z-certificate-editor 1.0.3 → 1.0.4

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/dist/style.css ADDED
@@ -0,0 +1,1047 @@
1
+
2
+ .design-panel[data-v-b694f9ff] {
3
+ display: flex;
4
+ flex-direction: column;
5
+ height: 100%;
6
+ background: #fff;
7
+ }
8
+ .panel-tabs[data-v-b694f9ff] {
9
+ display: flex;
10
+ border-bottom: 1px solid #e0e0e0;
11
+ background: #fafafa;
12
+ }
13
+ .tab-item[data-v-b694f9ff] {
14
+ flex: 1;
15
+ padding: 12px;
16
+ text-align: center;
17
+ cursor: pointer;
18
+ font-size: 14px;
19
+ color: #666;
20
+ border-bottom: 2px solid transparent;
21
+ transition: all 0.3s;
22
+ }
23
+ .tab-item[data-v-b694f9ff]:hover {
24
+ color: #1890ff;
25
+ background: #f0f0f0;
26
+ }
27
+ .tab-item.active[data-v-b694f9ff] {
28
+ color: #1890ff;
29
+ border-bottom-color: #1890ff;
30
+ background: #fff;
31
+ font-weight: 500;
32
+ }
33
+ .panel-content[data-v-b694f9ff] {
34
+ flex: 1;
35
+ overflow-y: auto;
36
+ padding: 16px;
37
+ }
38
+ .elements-section[data-v-b694f9ff] {
39
+ width: 100%;
40
+ }
41
+ .elements-grid[data-v-b694f9ff] {
42
+ display: grid;
43
+ grid-template-columns: repeat(2, 1fr);
44
+ gap: 12px;
45
+ }
46
+ .element-item[data-v-b694f9ff] {
47
+ display: flex;
48
+ flex-direction: column;
49
+ align-items: center;
50
+ justify-content: center;
51
+ padding: 16px;
52
+ border: 1px solid #e0e0e0;
53
+ border-radius: 4px;
54
+ cursor: pointer;
55
+ transition: all 0.3s;
56
+ background: #fff;
57
+ }
58
+ .element-item[data-v-b694f9ff]:hover {
59
+ border-color: #1890ff;
60
+ background: #f0f7ff;
61
+ transform: translateY(-2px);
62
+ box-shadow: 0 2px 8px rgba(24, 144, 255, 0.2);
63
+ }
64
+ .element-icon[data-v-b694f9ff] {
65
+ font-size: 32px;
66
+ margin-bottom: 8px;
67
+ }
68
+ .element-label[data-v-b694f9ff] {
69
+ font-size: 12px;
70
+ color: #333;
71
+ }
72
+ .templates-section[data-v-b694f9ff] {
73
+ width: 100%;
74
+ }
75
+ .upload-section[data-v-b694f9ff] {
76
+ padding: 16px;
77
+ border: 1px dashed #d9d9d9;
78
+ border-radius: 4px;
79
+ text-align: center;
80
+ background: #fafafa;
81
+ margin-bottom: 16px;
82
+ }
83
+ .template-type-switch[data-v-b694f9ff] {
84
+ display: flex;
85
+ gap: 8px;
86
+ margin-bottom: 16px;
87
+ padding: 4px;
88
+ background: #f5f5f5;
89
+ border-radius: 4px;
90
+ }
91
+ .switch-btn[data-v-b694f9ff] {
92
+ flex: 1;
93
+ padding: 6px 12px;
94
+ border: none;
95
+ background: transparent;
96
+ color: #666;
97
+ border-radius: 4px;
98
+ cursor: pointer;
99
+ font-size: 14px;
100
+ transition: all 0.3s;
101
+ }
102
+ .switch-btn.active[data-v-b694f9ff] {
103
+ background: #fff;
104
+ color: #1890ff;
105
+ font-weight: 500;
106
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
107
+ }
108
+ .templates-list[data-v-b694f9ff] {
109
+ display: flex;
110
+ flex-direction: column;
111
+ gap: 12px;
112
+ margin-bottom: 16px;
113
+ }
114
+ .template-item[data-v-b694f9ff] {
115
+ border: 1px solid #e0e0e0;
116
+ border-radius: 4px;
117
+ overflow: hidden;
118
+ cursor: pointer;
119
+ transition: all 0.3s;
120
+ background: #fff;
121
+ }
122
+ .template-item[data-v-b694f9ff]:hover {
123
+ border-color: #1890ff;
124
+ box-shadow: 0 2px 8px rgba(24, 144, 255, 0.2);
125
+ }
126
+ .template-preview[data-v-b694f9ff] {
127
+ width: 100%;
128
+ height: 120px;
129
+ background: #f5f5f5;
130
+ }
131
+ .template-name[data-v-b694f9ff] {
132
+ padding: 8px 12px;
133
+ font-size: 13px;
134
+ color: #333;
135
+ text-align: center;
136
+ background: #fff;
137
+ }
138
+ .upload-btn[data-v-b694f9ff] {
139
+ display: flex;
140
+ align-items: center;
141
+ justify-content: center;
142
+ gap: 6px;
143
+ width: 100%;
144
+ padding: 8px 16px;
145
+ border: 1px solid #d9d9d9;
146
+ background: #fff;
147
+ color: #333;
148
+ border-radius: 4px;
149
+ cursor: pointer;
150
+ font-size: 14px;
151
+ transition: all 0.3s;
152
+ margin-bottom: 8px;
153
+ }
154
+ .upload-btn[data-v-b694f9ff]:hover {
155
+ border-color: #1890ff;
156
+ color: #1890ff;
157
+ }
158
+ .upload-hint[data-v-b694f9ff] {
159
+ font-size: 11px;
160
+ color: #999;
161
+ line-height: 1.5;
162
+ }
163
+
164
+ .canvas-area[data-v-81f2131e] {
165
+ width: 100%;
166
+ height: 100%;
167
+ overflow: auto;
168
+ background: #f0f0f0;
169
+ display: flex;
170
+ justify-content: center;
171
+ align-items: flex-start;
172
+ padding: 40px 20px;
173
+ }
174
+ .certificate-canvas[data-v-81f2131e] {
175
+ position: relative;
176
+ width: 800px;
177
+ min-height: 1000px;
178
+ background: #fff;
179
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
180
+ padding: 60px 50px;
181
+ }
182
+ .certificate-border[data-v-81f2131e] {
183
+ position: absolute;
184
+ top: 0;
185
+ left: 0;
186
+ right: 0;
187
+ bottom: 0;
188
+ border: 12px solid #1890ff;
189
+ background-image:
190
+ repeating-linear-gradient(
191
+ 0deg,
192
+ transparent,
193
+ transparent 2px,
194
+ rgba(255, 255, 255, 0.1) 2px,
195
+ rgba(255, 255, 255, 0.1) 4px
196
+ ),
197
+ repeating-linear-gradient(
198
+ 90deg,
199
+ transparent,
200
+ transparent 2px,
201
+ rgba(255, 255, 255, 0.1) 2px,
202
+ rgba(255, 255, 255, 0.1) 4px
203
+ );
204
+ background-size: 20px 20px;
205
+ box-shadow:
206
+ inset 0 0 0 2px rgba(255, 255, 255, 0.3),
207
+ inset 0 0 0 4px #1890ff,
208
+ inset 0 0 0 6px rgba(255, 255, 255, 0.3);
209
+ }
210
+ .editable-element[data-v-81f2131e] {
211
+ position: absolute;
212
+ border: 1px dashed #ccc;
213
+ cursor: move;
214
+ min-width: 50px;
215
+ min-height: 30px;
216
+ padding: 4px;
217
+ }
218
+ .editable-element.selected[data-v-81f2131e] {
219
+ border-color: #1890ff;
220
+ border-width: 2px;
221
+ background: rgba(24, 144, 255, 0.05);
222
+ }
223
+ .editable-element.text[data-v-81f2131e],
224
+ .editable-element.longtext[data-v-81f2131e] {
225
+ border: 1px dashed #999;
226
+ }
227
+ .editable-element.text.selected[data-v-81f2131e],
228
+ .editable-element.longtext.selected[data-v-81f2131e] {
229
+ border-color: #1890ff;
230
+ border-width: 2px;
231
+ }
232
+ .text-content[data-v-81f2131e] {
233
+ width: 100%;
234
+ height: 100%;
235
+ word-wrap: break-word;
236
+ white-space: pre-wrap;
237
+ padding: 2px;
238
+ min-height: 20px;
239
+ }
240
+ .field-placeholder-highlight[data-v-81f2131e] {
241
+ background: #e6f7ff;
242
+ color: #1890ff;
243
+ padding: 2px 4px;
244
+ border-radius: 2px;
245
+ font-weight: 500;
246
+ }
247
+ .field-value[data-v-81f2131e] {
248
+ color: #52c41a;
249
+ font-weight: 500;
250
+ }
251
+ .image-placeholder[data-v-81f2131e],
252
+ .qrcode-placeholder[data-v-81f2131e] {
253
+ width: 100%;
254
+ height: 100%;
255
+ display: flex;
256
+ align-items: center;
257
+ justify-content: center;
258
+ background: #f5f5f5;
259
+ border: 1px dashed #ccc;
260
+ color: #999;
261
+ }
262
+ .image-element[data-v-81f2131e],
263
+ .qrcode-element[data-v-81f2131e] {
264
+ width: 100%;
265
+ height: 100%;
266
+ overflow: hidden;
267
+ }
268
+ .element-image[data-v-81f2131e] {
269
+ width: 100%;
270
+ height: 100%;
271
+ object-fit: contain;
272
+ display: block;
273
+ }
274
+ .qrcode-content[data-v-81f2131e] {
275
+ width: 100%;
276
+ height: 100%;
277
+ display: flex;
278
+ flex-direction: column;
279
+ align-items: center;
280
+ justify-content: center;
281
+ background: #f5f5f5;
282
+ border: 1px dashed #ccc;
283
+ padding: 8px;
284
+ }
285
+ .qrcode-placeholder-text[data-v-81f2131e] {
286
+ font-size: 12px;
287
+ color: #999;
288
+ margin-bottom: 4px;
289
+ }
290
+ .qrcode-info[data-v-81f2131e] {
291
+ font-size: 10px;
292
+ color: #666;
293
+ word-break: break-all;
294
+ text-align: center;
295
+ }
296
+ .resize-handles[data-v-81f2131e] {
297
+ position: absolute;
298
+ top: -4px;
299
+ left: -4px;
300
+ right: -4px;
301
+ bottom: -4px;
302
+ pointer-events: none;
303
+ }
304
+ .handle[data-v-81f2131e] {
305
+ position: absolute;
306
+ width: 8px;
307
+ height: 8px;
308
+ background: #1890ff;
309
+ border: 1px solid #fff;
310
+ pointer-events: all;
311
+ cursor: nwse-resize;
312
+ }
313
+ .handle-nw[data-v-81f2131e] {
314
+ top: -4px;
315
+ left: -4px;
316
+ cursor: nwse-resize;
317
+ }
318
+ .handle-ne[data-v-81f2131e] {
319
+ top: -4px;
320
+ right: -4px;
321
+ cursor: nesw-resize;
322
+ }
323
+ .handle-sw[data-v-81f2131e] {
324
+ bottom: -4px;
325
+ left: -4px;
326
+ cursor: nesw-resize;
327
+ }
328
+ .handle-se[data-v-81f2131e] {
329
+ bottom: -4px;
330
+ right: -4px;
331
+ cursor: nwse-resize;
332
+ }
333
+ .delete-btn[data-v-81f2131e] {
334
+ position: absolute;
335
+ top: -12px;
336
+ right: -12px;
337
+ width: 24px;
338
+ height: 24px;
339
+ border-radius: 50%;
340
+ background: #ff4d4f;
341
+ color: #fff;
342
+ border: none;
343
+ cursor: pointer;
344
+ font-size: 18px;
345
+ line-height: 1;
346
+ display: flex;
347
+ align-items: center;
348
+ justify-content: center;
349
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
350
+ }
351
+ .delete-btn[data-v-81f2131e]:hover {
352
+ background: #ff7875;
353
+ }
354
+
355
+ .field-dialog-overlay[data-v-c4ecd92f] {
356
+ position: fixed;
357
+ top: 0;
358
+ left: 0;
359
+ right: 0;
360
+ bottom: 0;
361
+ background: rgba(0, 0, 0, 0.5);
362
+ display: flex;
363
+ align-items: center;
364
+ justify-content: center;
365
+ z-index: 1000;
366
+ }
367
+ .field-dialog[data-v-c4ecd92f] {
368
+ background: #fff;
369
+ border-radius: 8px;
370
+ width: 600px;
371
+ max-height: 80vh;
372
+ display: flex;
373
+ flex-direction: column;
374
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
375
+ }
376
+ .dialog-header[data-v-c4ecd92f] {
377
+ display: flex;
378
+ justify-content: space-between;
379
+ align-items: center;
380
+ padding: 16px 20px;
381
+ border-bottom: 1px solid #e0e0e0;
382
+ }
383
+ .dialog-header h3[data-v-c4ecd92f] {
384
+ font-size: 18px;
385
+ font-weight: 500;
386
+ color: #333;
387
+ margin: 0;
388
+ }
389
+ .close-btn[data-v-c4ecd92f] {
390
+ width: 32px;
391
+ height: 32px;
392
+ border: none;
393
+ background: transparent;
394
+ font-size: 24px;
395
+ color: #999;
396
+ cursor: pointer;
397
+ display: flex;
398
+ align-items: center;
399
+ justify-content: center;
400
+ border-radius: 4px;
401
+ transition: all 0.3s;
402
+ }
403
+ .close-btn[data-v-c4ecd92f]:hover {
404
+ background: #f5f5f5;
405
+ color: #333;
406
+ }
407
+ .dialog-content[data-v-c4ecd92f] {
408
+ flex: 1;
409
+ display: flex;
410
+ flex-direction: column;
411
+ padding: 20px;
412
+ overflow: hidden;
413
+ }
414
+ .search-box[data-v-c4ecd92f] {
415
+ margin-bottom: 16px;
416
+ }
417
+ .search-input[data-v-c4ecd92f] {
418
+ width: 100%;
419
+ padding: 8px 12px;
420
+ border: 1px solid #d9d9d9;
421
+ border-radius: 4px;
422
+ font-size: 14px;
423
+ }
424
+ .search-input[data-v-c4ecd92f]:focus {
425
+ outline: none;
426
+ border-color: #1890ff;
427
+ }
428
+ .table-container[data-v-c4ecd92f] {
429
+ flex: 1;
430
+ overflow-y: auto;
431
+ border: 1px solid #e0e0e0;
432
+ border-radius: 4px;
433
+ }
434
+ .fields-table[data-v-c4ecd92f] {
435
+ width: 100%;
436
+ border-collapse: collapse;
437
+ background: #fff;
438
+ }
439
+ .fields-table thead[data-v-c4ecd92f] {
440
+ background: #fafafa;
441
+ position: sticky;
442
+ top: 0;
443
+ z-index: 10;
444
+ }
445
+ .fields-table th[data-v-c4ecd92f] {
446
+ padding: 12px 16px;
447
+ text-align: left;
448
+ font-size: 14px;
449
+ font-weight: 500;
450
+ color: #333;
451
+ border-bottom: 1px solid #e0e0e0;
452
+ }
453
+ .fields-table th[data-v-c4ecd92f]:first-child {
454
+ width: 70%;
455
+ }
456
+ .fields-table th[data-v-c4ecd92f]:last-child {
457
+ width: 30%;
458
+ text-align: center;
459
+ }
460
+ .fields-table tbody tr[data-v-c4ecd92f] {
461
+ border-bottom: 1px solid #f0f0f0;
462
+ transition: background 0.2s;
463
+ }
464
+ .fields-table tbody tr[data-v-c4ecd92f]:hover {
465
+ background: #fafafa;
466
+ }
467
+ .fields-table tbody tr[data-v-c4ecd92f]:last-child {
468
+ border-bottom: none;
469
+ }
470
+ .field-row[data-v-c4ecd92f] {
471
+ cursor: pointer;
472
+ }
473
+ .field-name[data-v-c4ecd92f] {
474
+ padding: 12px 16px;
475
+ font-size: 14px;
476
+ color: #333;
477
+ }
478
+ .field-action[data-v-c4ecd92f] {
479
+ padding: 12px 16px;
480
+ text-align: center;
481
+ }
482
+ .select-btn[data-v-c4ecd92f] {
483
+ padding: 4px 16px;
484
+ border: 1px solid #1890ff;
485
+ background: #fff;
486
+ color: #1890ff;
487
+ border-radius: 4px;
488
+ font-size: 14px;
489
+ cursor: pointer;
490
+ transition: all 0.3s;
491
+ }
492
+ .select-btn[data-v-c4ecd92f]:hover {
493
+ background: #1890ff;
494
+ color: #fff;
495
+ }
496
+ .pagination[data-v-c4ecd92f] {
497
+ display: flex;
498
+ justify-content: center;
499
+ align-items: center;
500
+ gap: 8px;
501
+ margin-top: 16px;
502
+ padding-top: 16px;
503
+ border-top: 1px solid #e0e0e0;
504
+ }
505
+ .page-btn[data-v-c4ecd92f] {
506
+ min-width: 32px;
507
+ height: 32px;
508
+ padding: 0 8px;
509
+ border: 1px solid #d9d9d9;
510
+ background: #fff;
511
+ color: #333;
512
+ border-radius: 4px;
513
+ font-size: 14px;
514
+ cursor: pointer;
515
+ transition: all 0.3s;
516
+ }
517
+ .page-btn[data-v-c4ecd92f]:hover:not(:disabled) {
518
+ border-color: #1890ff;
519
+ color: #1890ff;
520
+ }
521
+ .page-btn.active[data-v-c4ecd92f] {
522
+ background: #1890ff;
523
+ border-color: #1890ff;
524
+ color: #fff;
525
+ }
526
+ .page-btn[data-v-c4ecd92f]:disabled {
527
+ opacity: 0.5;
528
+ cursor: not-allowed;
529
+ }
530
+
531
+ .properties-panel[data-v-7662a3c6] {
532
+ display: flex;
533
+ flex-direction: column;
534
+ height: 100%;
535
+ background: #fff;
536
+ }
537
+ .panel-header[data-v-7662a3c6] {
538
+ padding: 12px 16px;
539
+ border-bottom: 1px solid #e0e0e0;
540
+ }
541
+ .panel-header h3[data-v-7662a3c6] {
542
+ font-size: 14px;
543
+ font-weight: 500;
544
+ color: #333;
545
+ margin: 0;
546
+ }
547
+ .panel-content[data-v-7662a3c6] {
548
+ flex: 1;
549
+ overflow-y: auto;
550
+ padding: 16px;
551
+ }
552
+ .section-title[data-v-7662a3c6] {
553
+ font-size: 13px;
554
+ font-weight: 500;
555
+ color: #666;
556
+ margin-bottom: 12px;
557
+ padding-bottom: 8px;
558
+ border-bottom: 1px solid #f0f0f0;
559
+ }
560
+ .form-group[data-v-7662a3c6] {
561
+ margin-bottom: 16px;
562
+ }
563
+ .form-label[data-v-7662a3c6] {
564
+ display: block;
565
+ font-size: 12px;
566
+ color: #666;
567
+ margin-bottom: 6px;
568
+ }
569
+ .form-input[data-v-7662a3c6],
570
+ .form-select[data-v-7662a3c6] {
571
+ width: 100%;
572
+ padding: 6px 10px;
573
+ border: 1px solid #d9d9d9;
574
+ border-radius: 4px;
575
+ font-size: 13px;
576
+ }
577
+ .form-input[data-v-7662a3c6]:focus,
578
+ .form-select[data-v-7662a3c6]:focus {
579
+ outline: none;
580
+ border-color: #1890ff;
581
+ }
582
+ .content-input-wrapper[data-v-7662a3c6] {
583
+ display: flex;
584
+ flex-direction: column;
585
+ gap: 8px;
586
+ }
587
+ .content-textarea[data-v-7662a3c6] {
588
+ width: 100%;
589
+ padding: 8px;
590
+ border: 1px solid #d9d9d9;
591
+ border-radius: 4px;
592
+ font-size: 13px;
593
+ resize: vertical;
594
+ }
595
+ .content-textarea[data-v-7662a3c6]:focus {
596
+ outline: none;
597
+ border-color: #1890ff;
598
+ }
599
+ .insert-field-btn[data-v-7662a3c6] {
600
+ display: flex;
601
+ align-items: center;
602
+ gap: 4px;
603
+ padding: 6px 12px;
604
+ border: 1px solid #d9d9d9;
605
+ background: #fff;
606
+ color: #666;
607
+ border-radius: 4px;
608
+ font-size: 12px;
609
+ cursor: pointer;
610
+ transition: all 0.3s;
611
+ }
612
+ .insert-field-btn[data-v-7662a3c6]:hover {
613
+ border-color: #1890ff;
614
+ color: #1890ff;
615
+ }
616
+ .style-buttons[data-v-7662a3c6] {
617
+ display: flex;
618
+ gap: 8px;
619
+ }
620
+ .style-btn[data-v-7662a3c6] {
621
+ width: 32px;
622
+ height: 32px;
623
+ border: 1px solid #d9d9d9;
624
+ background: #fff;
625
+ border-radius: 4px;
626
+ cursor: pointer;
627
+ font-size: 14px;
628
+ transition: all 0.3s;
629
+ }
630
+ .style-btn[data-v-7662a3c6]:hover {
631
+ border-color: #1890ff;
632
+ }
633
+ .style-btn.active[data-v-7662a3c6] {
634
+ background: #1890ff;
635
+ border-color: #1890ff;
636
+ color: #fff;
637
+ }
638
+ .color-input[data-v-7662a3c6] {
639
+ width: 100%;
640
+ height: 32px;
641
+ border: 1px solid #d9d9d9;
642
+ border-radius: 4px;
643
+ cursor: pointer;
644
+ }
645
+ .align-buttons[data-v-7662a3c6] {
646
+ display: flex;
647
+ gap: 8px;
648
+ }
649
+ .align-btn[data-v-7662a3c6] {
650
+ flex: 1;
651
+ padding: 6px 12px;
652
+ border: 1px solid #d9d9d9;
653
+ background: #fff;
654
+ border-radius: 4px;
655
+ font-size: 12px;
656
+ cursor: pointer;
657
+ transition: all 0.3s;
658
+ }
659
+ .align-btn[data-v-7662a3c6]:hover {
660
+ border-color: #1890ff;
661
+ }
662
+ .align-btn.active[data-v-7662a3c6] {
663
+ background: #1890ff;
664
+ border-color: #1890ff;
665
+ color: #fff;
666
+ }
667
+ .radio-group[data-v-7662a3c6] {
668
+ display: flex;
669
+ gap: 16px;
670
+ }
671
+ .radio-label[data-v-7662a3c6] {
672
+ display: flex;
673
+ align-items: center;
674
+ gap: 6px;
675
+ font-size: 13px;
676
+ cursor: pointer;
677
+ }
678
+ .image-upload-wrapper[data-v-7662a3c6],
679
+ .qrcode-upload-wrapper[data-v-7662a3c6] {
680
+ display: flex;
681
+ flex-direction: column;
682
+ gap: 8px;
683
+ }
684
+ .upload-btn[data-v-7662a3c6] {
685
+ width: 100%;
686
+ padding: 10px 16px;
687
+ border: 2px solid #1890ff;
688
+ background: #1890ff;
689
+ color: #fff;
690
+ border-radius: 4px;
691
+ font-size: 14px;
692
+ font-weight: 500;
693
+ cursor: pointer;
694
+ transition: all 0.3s;
695
+ display: flex;
696
+ align-items: center;
697
+ justify-content: center;
698
+ gap: 6px;
699
+ }
700
+ .upload-btn[data-v-7662a3c6]:hover {
701
+ background: #40a9ff;
702
+ border-color: #40a9ff;
703
+ box-shadow: 0 2px 8px rgba(24, 144, 255, 0.3);
704
+ }
705
+ .upload-btn[data-v-7662a3c6]:active {
706
+ background: #096dd9;
707
+ border-color: #096dd9;
708
+ }
709
+ .image-url-input[data-v-7662a3c6],
710
+ .qrcode-input[data-v-7662a3c6] {
711
+ width: 100%;
712
+ padding: 6px 10px;
713
+ border: 1px solid #d9d9d9;
714
+ border-radius: 4px;
715
+ font-size: 13px;
716
+ }
717
+ .image-url-input[data-v-7662a3c6]:focus,
718
+ .qrcode-input[data-v-7662a3c6]:focus {
719
+ outline: none;
720
+ border-color: #1890ff;
721
+ }
722
+ .remove-btn[data-v-7662a3c6] {
723
+ padding: 4px 12px;
724
+ border: 1px solid #ff4d4f;
725
+ background: #fff;
726
+ color: #ff4d4f;
727
+ border-radius: 4px;
728
+ font-size: 12px;
729
+ cursor: pointer;
730
+ transition: all 0.3s;
731
+ align-self: flex-start;
732
+ }
733
+ .remove-btn[data-v-7662a3c6]:hover {
734
+ background: #ff4d4f;
735
+ color: #fff;
736
+ }
737
+ .image-preview[data-v-7662a3c6],
738
+ .qrcode-preview[data-v-7662a3c6] {
739
+ margin-top: 8px;
740
+ padding: 8px;
741
+ border: 1px solid #e0e0e0;
742
+ border-radius: 4px;
743
+ background: #fafafa;
744
+ }
745
+ .image-preview img[data-v-7662a3c6],
746
+ .qrcode-preview img[data-v-7662a3c6] {
747
+ max-width: 100%;
748
+ max-height: 200px;
749
+ display: block;
750
+ }
751
+ .field-preview[data-v-7662a3c6] {
752
+ margin-top: 8px;
753
+ padding: 6px 10px;
754
+ background: #f0f7ff;
755
+ border: 1px solid #d6e4ff;
756
+ border-radius: 4px;
757
+ font-size: 12px;
758
+ color: #1890ff;
759
+ }
760
+ .form-row[data-v-7662a3c6] {
761
+ display: grid;
762
+ grid-template-columns: 1fr 1fr;
763
+ gap: 12px;
764
+ }
765
+
766
+ .field-data-panel[data-v-33e53b63] {
767
+ display: flex;
768
+ flex-direction: column;
769
+ height: 100%;
770
+ background: #fff;
771
+ border-top: 1px solid #e0e0e0;
772
+ }
773
+ .panel-header[data-v-33e53b63] {
774
+ display: flex;
775
+ justify-content: space-between;
776
+ align-items: center;
777
+ padding: 12px 16px;
778
+ border-bottom: 1px solid #e0e0e0;
779
+ }
780
+ .panel-header h3[data-v-33e53b63] {
781
+ font-size: 14px;
782
+ font-weight: 500;
783
+ color: #333;
784
+ margin: 0;
785
+ }
786
+ .reset-btn[data-v-33e53b63] {
787
+ padding: 4px 12px;
788
+ border: 1px solid #d9d9d9;
789
+ background: #fff;
790
+ border-radius: 4px;
791
+ font-size: 12px;
792
+ color: #666;
793
+ cursor: pointer;
794
+ }
795
+ .reset-btn[data-v-33e53b63]:hover {
796
+ border-color: #1890ff;
797
+ color: #1890ff;
798
+ }
799
+ .panel-content[data-v-33e53b63] {
800
+ flex: 1;
801
+ overflow-y: auto;
802
+ padding: 16px;
803
+ }
804
+ .field-category[data-v-33e53b63] {
805
+ margin-bottom: 24px;
806
+ }
807
+ .category-title[data-v-33e53b63] {
808
+ font-size: 13px;
809
+ font-weight: 500;
810
+ color: #666;
811
+ margin-bottom: 12px;
812
+ padding-bottom: 8px;
813
+ border-bottom: 1px solid #f0f0f0;
814
+ }
815
+ .fields-list[data-v-33e53b63] {
816
+ display: flex;
817
+ flex-direction: column;
818
+ gap: 16px;
819
+ }
820
+ .field-item[data-v-33e53b63] {
821
+ display: flex;
822
+ flex-direction: column;
823
+ gap: 6px;
824
+ }
825
+ .field-label[data-v-33e53b63] {
826
+ font-size: 13px;
827
+ color: #333;
828
+ font-weight: 500;
829
+ }
830
+ .field-input[data-v-33e53b63] {
831
+ padding: 6px 10px;
832
+ border: 1px solid #d9d9d9;
833
+ border-radius: 4px;
834
+ font-size: 13px;
835
+ }
836
+ .field-input[data-v-33e53b63]:focus {
837
+ outline: none;
838
+ border-color: #1890ff;
839
+ }
840
+ .field-hint[data-v-33e53b63] {
841
+ font-size: 11px;
842
+ color: #999;
843
+ }
844
+
845
+ .preview-overlay[data-v-813a5922] {
846
+ position: fixed;
847
+ top: 0;
848
+ left: 0;
849
+ right: 0;
850
+ bottom: 0;
851
+ background: rgba(0, 0, 0, 0.7);
852
+ display: flex;
853
+ align-items: center;
854
+ justify-content: center;
855
+ z-index: 2000;
856
+ }
857
+ .preview-dialog[data-v-813a5922] {
858
+ background: #fff;
859
+ border-radius: 8px;
860
+ width: 90%;
861
+ max-width: 1200px;
862
+ max-height: 90vh;
863
+ display: flex;
864
+ flex-direction: column;
865
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
866
+ }
867
+ .preview-header[data-v-813a5922] {
868
+ display: flex;
869
+ justify-content: space-between;
870
+ align-items: center;
871
+ padding: 16px 20px;
872
+ border-bottom: 1px solid #e0e0e0;
873
+ }
874
+ .preview-header h3[data-v-813a5922] {
875
+ font-size: 18px;
876
+ font-weight: 500;
877
+ color: #333;
878
+ margin: 0;
879
+ }
880
+ .close-btn[data-v-813a5922] {
881
+ width: 32px;
882
+ height: 32px;
883
+ border: none;
884
+ background: transparent;
885
+ font-size: 24px;
886
+ color: #999;
887
+ cursor: pointer;
888
+ display: flex;
889
+ align-items: center;
890
+ justify-content: center;
891
+ border-radius: 4px;
892
+ transition: all 0.3s;
893
+ }
894
+ .close-btn[data-v-813a5922]:hover {
895
+ background: #f5f5f5;
896
+ color: #333;
897
+ }
898
+ .preview-content[data-v-813a5922] {
899
+ flex: 1;
900
+ overflow: auto;
901
+ padding: 40px;
902
+ display: flex;
903
+ justify-content: center;
904
+ align-items: flex-start;
905
+ background: #f5f5f5;
906
+ }
907
+ .preview-canvas-wrapper[data-v-813a5922] {
908
+ display: flex;
909
+ justify-content: center;
910
+ align-items: flex-start;
911
+ }
912
+ .preview-canvas[data-v-813a5922] {
913
+ background: #fff;
914
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
915
+ position: relative;
916
+ padding: 60px 50px;
917
+ }
918
+ .preview-element[data-v-813a5922] {
919
+ position: absolute;
920
+ }
921
+ .preview-text-content[data-v-813a5922] {
922
+ width: 100%;
923
+ height: 100%;
924
+ word-wrap: break-word;
925
+ white-space: pre-wrap;
926
+ }
927
+ .preview-image-element[data-v-813a5922],
928
+ .preview-qrcode-element[data-v-813a5922] {
929
+ width: 100%;
930
+ height: 100%;
931
+ overflow: hidden;
932
+ }
933
+ .preview-element-image[data-v-813a5922] {
934
+ width: 100%;
935
+ height: 100%;
936
+ object-fit: contain;
937
+ display: block;
938
+ }
939
+ .preview-qrcode-text[data-v-813a5922] {
940
+ width: 100%;
941
+ height: 100%;
942
+ display: flex;
943
+ align-items: center;
944
+ justify-content: center;
945
+ background: #f5f5f5;
946
+ border: 1px solid #e0e0e0;
947
+ font-size: 12px;
948
+ color: #666;
949
+ word-break: break-all;
950
+ padding: 8px;
951
+ }
952
+
953
+ .certificate-editor[data-v-8565cf9a] {
954
+ display: flex;
955
+ flex-direction: column;
956
+ width: 100%;
957
+ height: 100%;
958
+ background: #f5f5f5;
959
+ }
960
+ .toolbar[data-v-8565cf9a] {
961
+ display: flex;
962
+ align-items: center;
963
+ gap: 12px;
964
+ padding: 12px 20px;
965
+ background: #fff;
966
+ border-bottom: 1px solid #e0e0e0;
967
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
968
+ flex-shrink: 0;
969
+ }
970
+ .toolbar-btn[data-v-8565cf9a] {
971
+ display: flex;
972
+ align-items: center;
973
+ gap: 6px;
974
+ padding: 8px 16px;
975
+ border: 1px solid #d9d9d9;
976
+ background: #fff;
977
+ color: #333;
978
+ border-radius: 4px;
979
+ cursor: pointer;
980
+ font-size: 14px;
981
+ transition: all 0.3s;
982
+ }
983
+ .toolbar-btn[data-v-8565cf9a]:hover {
984
+ border-color: #1890ff;
985
+ color: #1890ff;
986
+ }
987
+ .toolbar-btn.preview-btn[data-v-8565cf9a]:hover {
988
+ background: #e6f7ff;
989
+ border-color: #1890ff;
990
+ }
991
+ .toolbar-btn.save-btn[data-v-8565cf9a]:hover {
992
+ background: #f6ffed;
993
+ border-color: #52c41a;
994
+ color: #52c41a;
995
+ }
996
+ .certificate-editor-content[data-v-8565cf9a] {
997
+ display: flex;
998
+ flex: 1;
999
+ min-height: 0;
1000
+ overflow: hidden;
1001
+ }
1002
+ .left-panel[data-v-8565cf9a] {
1003
+ width: 280px;
1004
+ background: #fff;
1005
+ border-right: 1px solid #e0e0e0;
1006
+ overflow-y: auto;
1007
+ }
1008
+ .canvas-area[data-v-8565cf9a] {
1009
+ flex: 1;
1010
+ overflow: auto;
1011
+ display: flex;
1012
+ justify-content: center;
1013
+ align-items: flex-start;
1014
+ padding: 20px;
1015
+ }
1016
+ .right-panel[data-v-8565cf9a] {
1017
+ width: 350px;
1018
+ background: #fff;
1019
+ border-left: 1px solid #e0e0e0;
1020
+ display: flex;
1021
+ flex-direction: column;
1022
+ overflow: hidden;
1023
+ }
1024
+ .properties-section[data-v-8565cf9a] {
1025
+ flex: 1;
1026
+ overflow-y: auto;
1027
+ border-bottom: 1px solid #e0e0e0;
1028
+ }
1029
+ .field-data-section[data-v-8565cf9a] {
1030
+ height: 300px;
1031
+ overflow-y: auto;
1032
+ }
1033
+ * {
1034
+ margin: 0;
1035
+ padding: 0;
1036
+ box-sizing: border-box;
1037
+ }
1038
+
1039
+ body {
1040
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
1041
+ overflow: hidden;
1042
+ }
1043
+
1044
+ #app {
1045
+ width: 100vw;
1046
+ height: 100vh;
1047
+ }