|
@@ -1,13 +1,32 @@
|
|
<template>
|
|
<template>
|
|
<div
|
|
<div
|
|
:class="prefixCls"
|
|
:class="prefixCls"
|
|
- class="flex mx-auto items-center"
|
|
|
|
|
|
+ class="flex items-center mx-auto"
|
|
v-if="imgList && imgList.length"
|
|
v-if="imgList && imgList.length"
|
|
:style="getWrapStyle"
|
|
:style="getWrapStyle"
|
|
>
|
|
>
|
|
- <PreviewGroup>
|
|
|
|
- <template v-for="img in imgList" :key="img">
|
|
|
|
- <Image :width="size" :src="img" />
|
|
|
|
|
|
+ <Badge :count="!showBadge || imgList.length == 1 ? 0 : imgList.length" v-if="simpleShow">
|
|
|
|
+ <div class="img-div">
|
|
|
|
+ <PreviewGroup>
|
|
|
|
+ <template v-for="(img, index) in imgList" :key="img">
|
|
|
|
+ <Image
|
|
|
|
+ :width="size"
|
|
|
|
+ :style="{
|
|
|
|
+ display: index === 0 ? '' : 'none !important',
|
|
|
|
+ }"
|
|
|
|
+ :src="srcPrefix + img"
|
|
|
|
+ />
|
|
|
|
+ </template>
|
|
|
|
+ </PreviewGroup>
|
|
|
|
+ </div>
|
|
|
|
+ </Badge>
|
|
|
|
+ <PreviewGroup v-else>
|
|
|
|
+ <template v-for="(img, index) in imgList" :key="img">
|
|
|
|
+ <Image
|
|
|
|
+ :width="size"
|
|
|
|
+ :style="{ 'margin-left': index === 0 ? 0 : margin }"
|
|
|
|
+ :src="srcPrefix + img"
|
|
|
|
+ />
|
|
</template>
|
|
</template>
|
|
</PreviewGroup>
|
|
</PreviewGroup>
|
|
</div>
|
|
</div>
|
|
@@ -17,24 +36,30 @@
|
|
import { defineComponent, computed } from 'vue';
|
|
import { defineComponent, computed } from 'vue';
|
|
import { useDesign } from '/@/hooks/web/useDesign';
|
|
import { useDesign } from '/@/hooks/web/useDesign';
|
|
|
|
|
|
- import { Image } from 'ant-design-vue';
|
|
|
|
|
|
+ import { Image, Badge } from 'ant-design-vue';
|
|
import { propTypes } from '/@/utils/propTypes';
|
|
import { propTypes } from '/@/utils/propTypes';
|
|
|
|
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
name: 'TableImage',
|
|
name: 'TableImage',
|
|
- components: { Image, PreviewGroup: Image.PreviewGroup },
|
|
|
|
|
|
+ components: { Image, PreviewGroup: Image.PreviewGroup, Badge },
|
|
props: {
|
|
props: {
|
|
imgList: propTypes.arrayOf(propTypes.string),
|
|
imgList: propTypes.arrayOf(propTypes.string),
|
|
size: propTypes.number.def(40),
|
|
size: propTypes.number.def(40),
|
|
|
|
+ // 是否简单显示(只显示第一张图片)
|
|
|
|
+ simpleShow: propTypes.bool,
|
|
|
|
+ // 简单模式下是否显示图片数量的badge
|
|
|
|
+ showBadge: propTypes.bool.def(true),
|
|
|
|
+ // 图片间距
|
|
|
|
+ margin: propTypes.number.def(4),
|
|
|
|
+ // src前缀,将会附加在imgList中每一项之前
|
|
|
|
+ srcPrefix: propTypes.string.def(''),
|
|
},
|
|
},
|
|
setup(props) {
|
|
setup(props) {
|
|
- const getWrapStyle = computed(
|
|
|
|
- (): CSSProperties => {
|
|
|
|
- const { size } = props;
|
|
|
|
- const s = `${size}px`;
|
|
|
|
- return { height: s, width: s };
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
|
|
+ const getWrapStyle = computed((): CSSProperties => {
|
|
|
|
+ const { size } = props;
|
|
|
|
+ const s = `${size}px`;
|
|
|
|
+ return { height: s, width: s };
|
|
|
|
+ });
|
|
|
|
|
|
const { prefixCls } = useDesign('basic-table-img');
|
|
const { prefixCls } = useDesign('basic-table-img');
|
|
return { prefixCls, getWrapStyle };
|
|
return { prefixCls, getWrapStyle };
|
|
@@ -53,5 +78,9 @@
|
|
border-radius: 2px;
|
|
border-radius: 2px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ .img-div {
|
|
|
|
+ display: inline-grid;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
</style>
|
|
</style>
|