Commit ed30f06ae128163342c029ec4da1b551933a34d0
1 parent
71d4c5ad
feat: xtable增加预览功能
Showing
3 changed files
with
36 additions
and
1 deletions
yudao-ui-admin-vue3/src/plugins/vxeTable/renderer/index.tsx
yudao-ui-admin-vue3/src/plugins/vxeTable/renderer/preview.tsx
0 → 100644
| 1 | +import { VXETable } from 'vxe-table' | ||
| 2 | +import { ElImage, ElLink } from 'element-plus' | ||
| 3 | + | ||
| 4 | +// 图片渲染 | ||
| 5 | +VXETable.renderer.add('XPreview', { | ||
| 6 | + // 默认显示模板 | ||
| 7 | + renderDefault(_renderOpts, params) { | ||
| 8 | + const { row, column } = params | ||
| 9 | + if (row.type.indexOf('image/') === 0) { | ||
| 10 | + return ( | ||
| 11 | + <ElImage | ||
| 12 | + style="width: 80px; height: 50px" | ||
| 13 | + src={row[column.field]} | ||
| 14 | + key={row[column.field]} | ||
| 15 | + preview-src-list={[row[column.field]]} | ||
| 16 | + fit="contain" | ||
| 17 | + lazy | ||
| 18 | + ></ElImage> | ||
| 19 | + ) | ||
| 20 | + } else if (row.type.indexOf('video/') === 0) { | ||
| 21 | + return ( | ||
| 22 | + <video> | ||
| 23 | + <source src={row[column.field]}></source> | ||
| 24 | + </video> | ||
| 25 | + ) | ||
| 26 | + } else { | ||
| 27 | + return ( | ||
| 28 | + <ElLink href={row[column.field]} target="_blank"> | ||
| 29 | + {row[column.field]} | ||
| 30 | + </ElLink> | ||
| 31 | + ) | ||
| 32 | + } | ||
| 33 | + } | ||
| 34 | +}) |
yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts
| @@ -23,7 +23,7 @@ const crudSchemas = reactive<VxeCrudSchema>({ | @@ -23,7 +23,7 @@ const crudSchemas = reactive<VxeCrudSchema>({ | ||
| 23 | field: 'url', | 23 | field: 'url', |
| 24 | table: { | 24 | table: { |
| 25 | cellRender: { | 25 | cellRender: { |
| 26 | - name: 'XImg' | 26 | + name: 'XPreview' |
| 27 | } | 27 | } |
| 28 | } | 28 | } |
| 29 | }, | 29 | }, |