|
1 | 1 | <template>
|
2 | 2 | <div
|
3 | 3 | :class="prefixCls"
|
4 |
| - class="flex mx-auto items-center" |
| 4 | + class="flex items-center mx-auto" |
5 | 5 | v-if="imgList && imgList.length"
|
6 | 6 | :style="getWrapStyle"
|
7 | 7 | >
|
8 |
| - <PreviewGroup> |
9 |
| - <template v-for="img in imgList" :key="img"> |
10 |
| - <Image :width="size" :src="img" /> |
| 8 | + <Badge :count="!showBadge || imgList.length == 1 ? 0 : imgList.length" v-if="simpleShow"> |
| 9 | + <div class="img-div"> |
| 10 | + <PreviewGroup> |
| 11 | + <template v-for="(img, index) in imgList" :key="img"> |
| 12 | + <Image |
| 13 | + :width="size" |
| 14 | + :style="{ |
| 15 | + display: index === 0 ? '' : 'none !important', |
| 16 | + }" |
| 17 | + :src="srcPrefix + img" |
| 18 | + /> |
| 19 | + </template> |
| 20 | + </PreviewGroup> |
| 21 | + </div> |
| 22 | + </Badge> |
| 23 | + <PreviewGroup v-else> |
| 24 | + <template v-for="(img, index) in imgList" :key="img"> |
| 25 | + <Image |
| 26 | + :width="size" |
| 27 | + :style="{ 'margin-left': index === 0 ? 0 : margin }" |
| 28 | + :src="srcPrefix + img" |
| 29 | + /> |
11 | 30 | </template>
|
12 | 31 | </PreviewGroup>
|
13 | 32 | </div>
|
|
17 | 36 | import { defineComponent, computed } from 'vue';
|
18 | 37 | import { useDesign } from '/@/hooks/web/useDesign';
|
19 | 38 |
|
20 |
| - import { Image } from 'ant-design-vue'; |
| 39 | + import { Image, Badge } from 'ant-design-vue'; |
21 | 40 | import { propTypes } from '/@/utils/propTypes';
|
22 | 41 |
|
23 | 42 | export default defineComponent({
|
24 | 43 | name: 'TableImage',
|
25 |
| - components: { Image, PreviewGroup: Image.PreviewGroup }, |
| 44 | + components: { Image, PreviewGroup: Image.PreviewGroup, Badge }, |
26 | 45 | props: {
|
27 | 46 | imgList: propTypes.arrayOf(propTypes.string),
|
28 | 47 | size: propTypes.number.def(40),
|
| 48 | + // 是否简单显示(只显示第一张图片) |
| 49 | + simpleShow: propTypes.bool, |
| 50 | + // 简单模式下是否显示图片数量的badge |
| 51 | + showBadge: propTypes.bool.def(true), |
| 52 | + // 图片间距 |
| 53 | + margin: propTypes.number.def(4), |
| 54 | + // src前缀,将会附加在imgList中每一项之前 |
| 55 | + srcPrefix: propTypes.string.def(''), |
29 | 56 | },
|
30 | 57 | setup(props) {
|
31 |
| - const getWrapStyle = computed( |
32 |
| - (): CSSProperties => { |
33 |
| - const { size } = props; |
34 |
| - const s = `${size}px`; |
35 |
| - return { height: s, width: s }; |
36 |
| - } |
37 |
| - ); |
| 58 | + const getWrapStyle = computed((): CSSProperties => { |
| 59 | + const { size } = props; |
| 60 | + const s = `${size}px`; |
| 61 | + return { height: s, width: s }; |
| 62 | + }); |
38 | 63 |
|
39 | 64 | const { prefixCls } = useDesign('basic-table-img');
|
40 | 65 | return { prefixCls, getWrapStyle };
|
|
53 | 78 | border-radius: 2px;
|
54 | 79 | }
|
55 | 80 | }
|
| 81 | +
|
| 82 | + .img-div { |
| 83 | + display: inline-grid; |
| 84 | + } |
56 | 85 | }
|
57 | 86 | </style>
|
0 commit comments