newtv-ui-3.0 0.0.1

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 (79) hide show
  1. package/README.md +55 -0
  2. package/lib/asserts/fonts/iconfont.539b8438.woff +0 -0
  3. package/lib/asserts/fonts/iconfont.5ee3b92b.ttf +0 -0
  4. package/lib/asserts/fonts/iconfont.b5b01d3e.woff2 +0 -0
  5. package/lib/asserts/img/gaoding.59d9deae.png +0 -0
  6. package/lib/asserts/img/zhihui.edef9d17.png +0 -0
  7. package/lib/demo.html +10 -0
  8. package/lib/newtv-ui-3.0.common.js +110261 -0
  9. package/lib/newtv-ui-3.0.css +1 -0
  10. package/lib/newtv-ui-3.0.umd.js +110271 -0
  11. package/lib/newtv-ui-3.0.umd.min.js +47 -0
  12. package/package.json +42 -0
  13. package/packages/assets/iconfont/iconfont.css +435 -0
  14. package/packages/assets/iconfont/iconfont.js +1 -0
  15. package/packages/assets/iconfont/iconfont.json +744 -0
  16. package/packages/assets/iconfont/iconfont.ttf +0 -0
  17. package/packages/assets/iconfont/iconfont.woff +0 -0
  18. package/packages/assets/iconfont/iconfont.woff2 +0 -0
  19. package/packages/assets/iconfont/iconfontSVG.js +1 -0
  20. package/packages/assets/images/bg.png +0 -0
  21. package/packages/assets/images/danger-bg.png +0 -0
  22. package/packages/assets/images/empty-bg.png +0 -0
  23. package/packages/assets/images/error-poster.png +0 -0
  24. package/packages/assets/images/error_img.png +0 -0
  25. package/packages/assets/images/logo.png +0 -0
  26. package/packages/assets/images/logo2.png +0 -0
  27. package/packages/assets/images/no_img.png +0 -0
  28. package/packages/assets/images/primary-bg.png +0 -0
  29. package/packages/assets/images/save.svg +3 -0
  30. package/packages/assets/images/state-Unpass.png +0 -0
  31. package/packages/assets/images/state-ing.png +0 -0
  32. package/packages/assets/images/state-ms.png +0 -0
  33. package/packages/assets/images/state-non.png +0 -0
  34. package/packages/assets/images/state-pass.png +0 -0
  35. package/packages/assets/images/success-bg.png +0 -0
  36. package/packages/assets/images/thumbnail-empty.png +0 -0
  37. package/packages/assets/images/versionIcon.png +0 -0
  38. package/packages/assets/images/warning-bg.png +0 -0
  39. package/packages/avatar-upload/index.js +10 -0
  40. package/packages/avatar-upload/src/error-poster.png +0 -0
  41. package/packages/avatar-upload/src/gaoding.png +0 -0
  42. package/packages/avatar-upload/src/previewDialog.vue +96 -0
  43. package/packages/avatar-upload/src/upload.vue +640 -0
  44. package/packages/avatar-upload/src/zhihui.png +0 -0
  45. package/packages/avatar-upload/src/zhihui_2.png +0 -0
  46. package/packages/cardTable/index.js +10 -0
  47. package/packages/cardTable/src/cardTable.vue +151 -0
  48. package/packages/form/index.js +10 -0
  49. package/packages/form/src/EllipsisTooltip.vue +31 -0
  50. package/packages/form/src/TextOverflow.vue +122 -0
  51. package/packages/form/src/form-item.vue +395 -0
  52. package/packages/form/src/form.js +46 -0
  53. package/packages/form/src/form.vue +233 -0
  54. package/packages/icon-tips/index.js +10 -0
  55. package/packages/icon-tips/src/icon-tips.vue +49 -0
  56. package/packages/index.js +49 -0
  57. package/packages/menu/index.js +10 -0
  58. package/packages/menu/src/menu.js +27 -0
  59. package/packages/menu/src/menu.vue +84 -0
  60. package/packages/menu/src/sub-item.vue +108 -0
  61. package/packages/pagination/index.js +10 -0
  62. package/packages/pagination/src/pagination.vue +134 -0
  63. package/packages/table/index.js +10 -0
  64. package/packages/table/src/table.vue +797 -0
  65. package/packages/tags/index.js +10 -0
  66. package/packages/tags/src/tag.vue +179 -0
  67. package/theme/pool_style.scss +598 -0
  68. package/theme/skyStyle/config.scss +19 -0
  69. package/theme/sky_style.scss +268 -0
  70. package/types/component.d.ts +7 -0
  71. package/types/dashboard.d.ts +10 -0
  72. package/types/form.d.ts +12 -0
  73. package/types/header.d.ts +10 -0
  74. package/types/index.d.ts +4 -0
  75. package/types/leftMenu.d.ts +14 -0
  76. package/types/list.d.ts +8 -0
  77. package/types/newtv-ui.d.ts +23 -0
  78. package/types/secondNav.d.ts +13 -0
  79. package/types/table.d.ts +14 -0
@@ -0,0 +1,640 @@
1
+ <script>
2
+ import { defineComponent, ref, toRef, useSlots } from 'vue'
3
+ import { ElMessage } from 'element-plus'
4
+ import { Plus, Download, Delete, ZoomIn } from '@element-plus/icons-vue'
5
+ import previewDialog from './previewDialog.vue'
6
+ export default defineComponent({
7
+ name: 'fgAvatarUpload',
8
+ emits: ['on-success', 'on-remove', 'http-request', 'on-crop', 'on-generation'],
9
+ components: { Plus, Download, Delete, ZoomIn, previewDialog },
10
+ props: {
11
+ uploadType: {
12
+ type: String,
13
+ default: 'Card', // Default Card
14
+ },
15
+ uploadTitle: {
16
+ type: String,
17
+ default: '上传', // 仅在Default时生效
18
+ },
19
+ name: {
20
+ type: String,
21
+ default: 'file',
22
+ },
23
+ url: {
24
+ type: String,
25
+ default: '',
26
+ },
27
+ action: {
28
+ type: String,
29
+ default: '',
30
+ },
31
+ uploadWidth: {
32
+ type: String,
33
+ default: '178px',
34
+ },
35
+ uploadHeight: {
36
+ type: String,
37
+ default: '178px',
38
+ },
39
+ width: {
40
+ type: Number,
41
+ default: 0,
42
+ },
43
+ height: {
44
+ type: Number,
45
+ default: 0,
46
+ },
47
+ tips: {
48
+ type: String,
49
+ default: '',
50
+ },
51
+ // 上传文件类型
52
+ accept: {
53
+ type: String,
54
+ default: 'image/jpg, image/jpeg, image/png',
55
+ },
56
+ // 上传文件大小,单位按MB计算
57
+ size: {
58
+ type: Number,
59
+ default: 2,
60
+ },
61
+ data: {
62
+ type: Object,
63
+ default: () => {},
64
+ },
65
+ edit: {
66
+ type: Boolean,
67
+ default: false,
68
+ },
69
+ httpRequest: {
70
+ type: Function,
71
+ default: null,
72
+ },
73
+ isImgDetail: {
74
+ type: Boolean,
75
+ default: false,
76
+ },
77
+ imgWidth: {
78
+ type: Number,
79
+ default: 0,
80
+ },
81
+ imgHeight: {
82
+ type: Number,
83
+ default: 0,
84
+ },
85
+ fileType: {
86
+ type: String,
87
+ default: '',
88
+ },
89
+ isCrop: {
90
+ type: Boolean,
91
+ default: false,
92
+ },
93
+ intelligentDraw: {
94
+ type: Boolean,
95
+ default: false,
96
+ },
97
+ isShowGenetaion: {
98
+ type: Boolean,
99
+ default: false,
100
+ },
101
+ genetaionIcon: {
102
+ type: String,
103
+ default: '',
104
+ },
105
+ genetaionTitle: {
106
+ type: String,
107
+ default: '自动上传', // 仅在Default时生效
108
+ },
109
+ disabledBtn: {
110
+ type: Boolean,
111
+ default: false,
112
+ },
113
+ },
114
+ setup(__props, { emit }) {
115
+ const uploader = ref(null)
116
+ const preview = ref(null)
117
+ const props = __props
118
+ const fsize = props.size
119
+ const accept = props.accept
120
+ const imageUrl = toRef(props, 'url')
121
+ const typeTip = accept
122
+ .split(',')
123
+ .map((item) => item.split('/')[1].toLocaleLowerCase())
124
+ .join(',')
125
+
126
+ const slotPrepend = !!useSlots().prepend
127
+ const slotAppend = !!useSlots().append
128
+ let tips = props.tips
129
+ const beforeUpload = (rawFile) => {
130
+ if (!rawFile.type || accept.indexOf(rawFile.type) == -1) {
131
+ ElMessage.error(`仅支持 ${typeTip} 类型的上传`)
132
+ return false
133
+ }
134
+
135
+ if (rawFile.size / 1024 / 1024 > fsize) {
136
+ ElMessage.error(`上传大小不超过${fsize}MB`)
137
+ return false
138
+ }
139
+
140
+ const w = Number(props.width)
141
+ const h = Number(props.height)
142
+ if (w && h) {
143
+ return new Promise((resolve, reject) => {
144
+ judgeImgSize(rawFile, w, h, (flag) => {
145
+ if (flag) {
146
+ resolve()
147
+ } else {
148
+ ElMessage.error(`图片大小应为${w}*${h}`)
149
+ reject()
150
+ }
151
+ })
152
+ })
153
+ }
154
+
155
+ return true
156
+ }
157
+
158
+ const judgeImgSize = (rawFile, w, h, callback) => {
159
+ const reader = new FileReader()
160
+ reader.onload = (e) => {
161
+ const data = e.target.result
162
+ //加载图片获取图片真实宽度和高度
163
+ const image = new Image()
164
+ image.onload = () => {
165
+ const width = image.width
166
+ const height = image.height
167
+ if (width != w || height != h) {
168
+ callback && callback(false)
169
+ } else {
170
+ callback && callback(true)
171
+ }
172
+ }
173
+ image.src = data
174
+ }
175
+ reader.readAsDataURL(rawFile)
176
+ }
177
+
178
+ const percentage = ref(0)
179
+ const handleProgress = (evt, uploadFile) => {
180
+ percentage.value = uploadFile.percentage
181
+ }
182
+
183
+ const handleSuccess = (response, uploadFile, uploadFiles) => {
184
+ // uploadFile && uploadFile.raw;
185
+ emit('on-success', response, uploadFile)
186
+ }
187
+ const handleCrop = () => {
188
+ emit('on-crop')
189
+ }
190
+ const handleRemove = () => {
191
+ percentage.value = 0
192
+ emit('on-remove')
193
+ }
194
+ const handlerGeneration = (mode, data = null) => {
195
+ emit('on-generation', {
196
+ mode,
197
+ data,
198
+ })
199
+ }
200
+ const dialogVisible = ref(false)
201
+ const handlePreview = () => {
202
+ preview.value.open()
203
+ // dialogVisible.value = true
204
+ }
205
+
206
+ const loading = ref(true)
207
+ return {
208
+ uploader,
209
+ preview,
210
+ httpRequest: props.httpRequest,
211
+ data: props.data,
212
+ tips,
213
+ imageUrl,
214
+ handleSuccess,
215
+ beforeUpload,
216
+ handleCrop,
217
+ handleRemove,
218
+ handlerGeneration,
219
+ handlePreview,
220
+ handleProgress,
221
+ dialogVisible,
222
+ edit: toRef(props, 'edit'),
223
+ name: props.name,
224
+ slotPrepend,
225
+ slotAppend,
226
+ percentage,
227
+ uploadHeight: props.uploadHeight,
228
+ loading,
229
+ intelligentDraw: props.intelligentDraw,
230
+ isShowGenetaion: props.isShowGenetaion,
231
+ }
232
+ },
233
+ })
234
+ </script>
235
+
236
+ <template>
237
+ <div class="fg-upload">
238
+ <div class="fg-avatar-uploader" :class="{ 'fg-default': uploadType == 'Default' }">
239
+ <template v-if="!edit && !imageUrl">
240
+ <div v-if="slotPrepend && !percentage" class="upload-prepend">
241
+ <slot name="prepend"></slot>
242
+ </div>
243
+ <el-upload
244
+ class="upload"
245
+ ref="uploader"
246
+ :action="action"
247
+ :data="data"
248
+ :show-file-list="false"
249
+ :on-success="handleSuccess"
250
+ :before-upload="beforeUpload"
251
+ :on-progress="handleProgress"
252
+ :http-request="httpRequest"
253
+ :with-credentials="true"
254
+ :name="name"
255
+ v-if="httpRequest"
256
+ >
257
+ <el-button v-if="uploadType == 'Default'" type="primary" text>
258
+ <i class="iconfont icon-tubiao-shangchuan"></i>
259
+ {{ uploadTitle }}
260
+ </el-button>
261
+
262
+ <el-icon v-if="uploadType == 'Card'" class="avatar-uploader-icon"><Plus /></el-icon>
263
+
264
+ <template #tip>
265
+ <div class="el-upload__tip" v-if="tips">
266
+ {{ tips }}
267
+ </div>
268
+ </template>
269
+ </el-upload>
270
+
271
+ <el-upload
272
+ class="upload"
273
+ ref="uploader"
274
+ :action="action"
275
+ :data="data"
276
+ :show-file-list="false"
277
+ :on-success="handleSuccess"
278
+ :on-progress="handleProgress"
279
+ :before-upload="beforeUpload"
280
+ :with-credentials="true"
281
+ :name="name"
282
+ v-else
283
+ >
284
+ <slot name="prevUploadBtn"></slot>
285
+
286
+ <div class="genetaion" v-if="intelligentDraw && !percentage">
287
+ <i
288
+ class="iconfont-btn zhihui"
289
+ @click.stop="handlerGeneration('zhihui')"
290
+ title="智绘"
291
+ ></i>
292
+ <!--<i class="iconfont-btn gaoding" @click.stop="handlerGeneration('gaoding')" title="稿定"></i>-->
293
+ </div>
294
+
295
+ <el-button
296
+ v-if="isShowGenetaion && !percentage"
297
+ type="primary"
298
+ text
299
+ @click.stop="handlerGeneration"
300
+ :disabled="disabledBtn"
301
+ >
302
+ <i class="iconfont" :class="genetaionIcon"></i>
303
+ {{ genetaionTitle }}
304
+ </el-button>
305
+
306
+ <el-button v-if="uploadType == 'Default' && !percentage" type="primary" text>
307
+ <i class="iconfont icon-tubiao-shangchuan"></i>
308
+ {{ uploadTitle }}
309
+ </el-button>
310
+
311
+ <el-icon v-if="uploadType == 'Card' && !percentage" class="avatar-uploader-icon"
312
+ ><Plus
313
+ /></el-icon>
314
+ <div v-if="percentage != 0 && percentage != 100">
315
+ <div class="upload-progress" v-loading="percentage != 0 && percentage != 100">
316
+ <!--<el-progress-->
317
+ <!--:width="80"-->
318
+ <!--type="circle"-->
319
+ <!--:percentage="parseFloat(percentage.toFixed(2))"-->
320
+ <!--&gt;</el-progress>-->
321
+ </div>
322
+ </div>
323
+
324
+ <template #tip>
325
+ <div class="el-upload__tip" v-if="tips">
326
+ {{ tips }}
327
+ </div>
328
+ </template>
329
+ </el-upload>
330
+
331
+ <div v-if="slotAppend" class="upload-append">
332
+ <slot name="append" />
333
+ </div>
334
+ </template>
335
+
336
+ <div v-else class="fg-avatar-picture-card">
337
+ <el-image :src="imageUrl" class="avatar" fit="contain">
338
+ <template #error>
339
+ <div class="image-slot">
340
+ <img src="../../assets/images/error-poster.png" alt="" />
341
+ <p class="slot-title">{{ imageUrl ? '图片加载失败' : '暂无图片' }}</p>
342
+ </div>
343
+ </template>
344
+ </el-image>
345
+ <!-- <img :src="imageUrl" /> -->
346
+ <span :class="{ actions: true, hide: edit }">
347
+ <span @click="handleCrop(file)" v-if="isCrop">
348
+ <i class="iconfont icon-caijian el-icon"></i>
349
+ </span>
350
+ <span
351
+ @click="handleCrop(file)"
352
+ v-if="intelligentDraw"
353
+ style="display: inline-block; padding: 0; background: transparent"
354
+ >
355
+ <i
356
+ class="iconfont-btn zhihui"
357
+ @click.stop="
358
+ handlerGeneration('zhihui', {
359
+ imgUrl: imageUrl,
360
+ imgWidth,
361
+ imgHeight,
362
+ })
363
+ "
364
+ title="智绘"
365
+ ></i>
366
+ </span>
367
+ <span @click="handlePreview(file)">
368
+ <i class="iconfont icon-tubiao-fangda el-icon"></i>
369
+ </span>
370
+ <span @click="handleRemove(file)">
371
+ <i class="iconfont icon-tubiaoanniu-shanchu el-icon"></i>
372
+ </span>
373
+ </span>
374
+ </div>
375
+ </div>
376
+ <previewDialog
377
+ ref="preview"
378
+ :imageUrl="imageUrl"
379
+ :isImgDetail="isImgDetail"
380
+ :imgWidth="imgWidth"
381
+ :imgHeight="imgHeight"
382
+ :fileType="fileType"
383
+ ></previewDialog>
384
+ <!--<el-dialog class="preview-dialog" v-model="dialogVisible">-->
385
+ <!--<img class="fg-avatar-preview-img" :src="imageUrl" alt="" />-->
386
+ <!--<div class="img-detail" v-if="isImgDetail">-->
387
+ <!--<div class="size detail">{{ imgWidth }}x{{ imgHeight }} | {{ fileType }}</div>-->
388
+ <!--<el-tooltip class="item" effect="dark" :content="imageUrl" placement="top">-->
389
+ <!--<div class="address detail">地址:{{ imageUrl }}</div>-->
390
+ <!--</el-tooltip>-->
391
+ <!--</div>-->
392
+ <!--</el-dialog>-->
393
+ </div>
394
+ </template>
395
+
396
+ <style lang="scss">
397
+ .fg-upload {
398
+ }
399
+ .fg-avatar-uploader {
400
+ :deep(.el-dialog) {
401
+ background: black !important;
402
+ }
403
+ .el-upload {
404
+ border-radius: 6px;
405
+ cursor: pointer;
406
+ position: relative;
407
+ overflow: hidden;
408
+ transition: var(--el-transition-duration-fast);
409
+ }
410
+ .el-upload:hover {
411
+ border-color: var(--el-color-primary);
412
+ }
413
+
414
+ .upload-progress {
415
+ width: v-bind(uploadWidth);
416
+ height: v-bind(uploadHeight);
417
+ text-align: center;
418
+ box-sizing: border-box;
419
+ display: flex;
420
+ justify-content: center;
421
+ align-items: center;
422
+ }
423
+ .el-icon.avatar-uploader-icon {
424
+ font-size: 28px;
425
+ color: #8c939d;
426
+ width: v-bind(uploadWidth);
427
+ height: v-bind(uploadHeight);
428
+ text-align: center;
429
+
430
+ border: 1px dashed #d9d9d9;
431
+ box-sizing: border-box;
432
+ }
433
+ .el-upload .el-button {
434
+ background: #ffffff;
435
+ border-radius: 16px 16px 16px 16px;
436
+ opacity: 1;
437
+ border: 1px solid #e6e6e6;
438
+ padding: 5px 10px;
439
+ margin: 10px;
440
+ }
441
+ .el-upload .el-button:hover {
442
+ background: #ffffff;
443
+ }
444
+ &.fg-default {
445
+ width: v-bind(uploadWidth);
446
+ height: v-bind(uploadHeight);
447
+ display: flex;
448
+ justify-content: center;
449
+ align-items: center;
450
+ text-align: center;
451
+ background: #f4f5f7;
452
+ /*border: 1px dashed #d9d9d9;*/
453
+ box-sizing: border-box;
454
+ /*line-height: v-bind(uploadHeight);*/
455
+ .upload {
456
+ display: inline-block;
457
+ }
458
+ .iconfont {
459
+ font-size: 16px;
460
+ }
461
+ .el-button {
462
+ padding: 0 10px;
463
+ line-height: 32px;
464
+ }
465
+ }
466
+ .upload-prepend,
467
+ .upload-append {
468
+ display: inline-flex;
469
+ justify-content: center;
470
+ align-items: center;
471
+ font-size: 14px;
472
+ .iconfont {
473
+ font-size: 16px;
474
+ }
475
+ .el-button {
476
+ padding: 0 10px;
477
+ line-height: 32px;
478
+ }
479
+ }
480
+
481
+ .iconfont-btn {
482
+ display: inline-block;
483
+ width: 32px;
484
+ height: 32px;
485
+ margin: 10px;
486
+ vertical-align: middle;
487
+ }
488
+
489
+ .zhihui {
490
+ background: url(./zhihui.png) center no-repeat;
491
+ background-size: contain;
492
+ }
493
+
494
+ .gaoding {
495
+ background: url(./gaoding.png) center no-repeat;
496
+ background-size: contain;
497
+ }
498
+ }
499
+
500
+ // 图片预览
501
+ .fg-avatar-picture-card {
502
+ position: relative;
503
+ overflow: hidden;
504
+ /*border: 1px solid #c0ccda;*/
505
+ color: #fff;
506
+ background: #d3d3d3;
507
+ /*border-radius: 6px;*/
508
+ box-sizing: border-box;
509
+ width: v-bind(uploadWidth);
510
+ height: v-bind(uploadHeight);
511
+ padding: 0;
512
+ display: inline-flex;
513
+ box-sizing: border-box;
514
+ &:hover {
515
+ span {
516
+ display: inline-flex;
517
+ }
518
+ }
519
+ .actions {
520
+ position: absolute;
521
+ width: 100%;
522
+ height: 100%;
523
+ left: 0;
524
+ top: 0;
525
+ cursor: default;
526
+ display: none;
527
+ justify-content: center;
528
+ align-items: center;
529
+ color: #fff;
530
+ font-size: 20px;
531
+ /*background: rgba(0, 0, 0, 0.3);*/
532
+ &.hide {
533
+ display: none;
534
+ }
535
+ span {
536
+ margin: 0 3px;
537
+ display: inline-flex;
538
+ cursor: pointer;
539
+ padding: 6px;
540
+ border-radius: 50%;
541
+ background: rgba(0, 0, 0, 0.5);
542
+ line-height: 0;
543
+ .iconfont {
544
+ font-size: 12px;
545
+ }
546
+ .iconfont-btn {
547
+ width: 24px;
548
+ height: 24px;
549
+ margin: 0;
550
+ }
551
+ }
552
+
553
+ .zhihui {
554
+ background: url(./zhihui_2.png) center no-repeat;
555
+ background-size: contain;
556
+ }
557
+ }
558
+ .avatar {
559
+ width: 100%;
560
+ height: 100%;
561
+ .image-slot {
562
+ height: 100%;
563
+ color: #ff5757;
564
+ text-align: center;
565
+ /*margin-top: 10px;*/
566
+ display: flex;
567
+ flex-direction: column;
568
+ justify-content: center;
569
+ align-items: center;
570
+ img {
571
+ width: 30px;
572
+ height: 30px;
573
+ }
574
+ .slot-title {
575
+ line-height: 30px;
576
+ }
577
+ }
578
+ }
579
+ }
580
+ /*loading*/
581
+ .el-loading-mask {
582
+ background: rgba(0, 0, 0, 0.1);
583
+ }
584
+ .el-loading-spinner {
585
+ /*top: 0 !important;*/
586
+ /*margin-top: 0 !important;*/
587
+ }
588
+ .el-loading-spinner .path {
589
+ stroke: #ffffff !important;
590
+ }
591
+ .fg-avatar-preview-img {
592
+ width: 100%;
593
+ }
594
+ .img-detail {
595
+ position: absolute;
596
+ right: 20px;
597
+ bottom: 30px;
598
+ .detail {
599
+ height: 36px;
600
+ line-height: 36px;
601
+ background: #e4e9ed;
602
+ border-radius: 18px;
603
+ opacity: 0.7;
604
+ padding: 0 20px;
605
+ font-size: 14px;
606
+ font-family: PingFangSC-Medium, PingFang SC;
607
+ font-weight: 500;
608
+ color: #282828;
609
+ float: left;
610
+ }
611
+ .size {
612
+ display: inline-block;
613
+ margin-right: 10px;
614
+ }
615
+ .address {
616
+ display: inline-block;
617
+ width: 338px;
618
+ word-wrap: break-word; /*强制换行*/
619
+ overflow: hidden; /*超出隐藏*/
620
+ text-overflow: ellipsis; /*隐藏后添加省略号*/
621
+ white-space: nowrap; /*强制不换行*/
622
+ }
623
+ }
624
+
625
+ .preview-dialog .el-dialog__header {
626
+ border: 0;
627
+ }
628
+ .upload-make {
629
+ :deep(.el-button) {
630
+ padding: 5px 10px;
631
+ background: white;
632
+ border-radius: 10px;
633
+ }
634
+ }
635
+ .upload .el-button.is-text.is-disabled {
636
+ color: #a0cfff !important;
637
+ -webkit-text-fill-color: #a0cfff !important;
638
+ background-color: transparent !important;
639
+ }
640
+ </style>
@@ -0,0 +1,10 @@
1
+ // 导入组件,组件必须声明 name
2
+ import fgCard from './src/cardTable.vue'
3
+
4
+ // 为组件提供 install 安装方法,供按需引入
5
+ fgCard.install = function (Vue) {
6
+ Vue.component(fgCard.name, fgCard)
7
+ }
8
+
9
+ // 默认导出组件
10
+ export default fgCard