diff --git a/mock/role/index.ts b/mock/role/index.ts
index 068c8e4..8933e00 100644
--- a/mock/role/index.ts
+++ b/mock/role/index.ts
@@ -151,6 +151,14 @@ const adminList = [
meta: {
title: 'router.PicturePreview'
}
+ },
+ {
+ path: 'table-video-preview',
+ component: 'views/Components/Table/TableVideoPreview',
+ name: 'TableVideoPreview',
+ meta: {
+ title: 'router.tableVideoPreview'
+ }
}
// {
// path: 'ref-table',
@@ -650,6 +658,7 @@ const testList: string[] = [
'/components/table/use-table',
'/components/table/tree-table',
'/components/table/table-image-preview',
+ '/components/table/table-video-preview',
'/components/table/ref-table',
'/components/editor-demo',
'/components/editor-demo/editor',
diff --git a/mock/table/index.ts b/mock/table/index.ts
index cbe0541..f3ffcb6 100644
--- a/mock/table/index.ts
+++ b/mock/table/index.ts
@@ -47,7 +47,9 @@ for (let i = 0; i < count; i++) {
importance: '@integer(1, 3)',
display_time: '@datetime',
pageviews: '@integer(100, 500)',
- image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)')
+ image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)'),
+ video_uri:
+ '//sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-720p.mp4'
})
)
}
diff --git a/src/components/Table/src/Table.vue b/src/components/Table/src/Table.vue
index 7fca7d7..caf4fe9 100644
--- a/src/components/Table/src/Table.vue
+++ b/src/components/Table/src/Table.vue
@@ -15,6 +15,8 @@ import { set, get } from 'lodash-es'
import { CSSProperties } from 'vue'
import { getSlot } from '@/utils/tsxHelper'
import TableActions from './components/TableActions.vue'
+import { isImgPath } from '@/utils/is'
+import { VideoPlayer } from '@/components/VideoPlayer'
export default defineComponent({
name: 'Table',
@@ -359,14 +361,18 @@ export default defineComponent({
const renderPreview = (url: string) => {
return (
-
+ {isImgPath(url) ? (
+
+ ) : (
+
+ )}
)
}
diff --git a/src/locales/en.ts b/src/locales/en.ts
index 2aab3fc..88109a5 100644
--- a/src/locales/en.ts
+++ b/src/locales/en.ts
@@ -179,7 +179,9 @@ export default {
request: 'Request',
waterfall: 'Waterfall',
imageCropping: 'Image cropping',
- videoPlayer: 'Video player'
+ videoPlayer: 'Video player',
+ // 表格视频预览
+ tableVideoPreview: 'Table video preview'
},
permission: {
hasPermission: 'Please set the operation permission value'
@@ -454,7 +456,8 @@ export default {
fixedHeaderOrAuto: 'Fixed header or auto',
getSelections: 'Get selections',
preview: 'Preview',
- showOrHiddenSortable: 'Show or hidden sortable'
+ showOrHiddenSortable: 'Show or hidden sortable',
+ videoPreview: 'Video preview'
},
richText: {
richText: 'Rich text',
diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts
index 380df58..8bf21f1 100644
--- a/src/locales/zh-CN.ts
+++ b/src/locales/zh-CN.ts
@@ -177,7 +177,8 @@ export default {
request: '请求',
waterfall: '瀑布流',
imageCropping: '图片裁剪',
- videoPlayer: '视频播放器'
+ videoPlayer: '视频播放器',
+ tableVideoPreview: '表格视频预览'
},
permission: {
hasPermission: '请设置操作权限值'
@@ -447,7 +448,8 @@ export default {
fixedHeaderOrAuto: '固定头部/自动',
getSelections: '获取多选数据',
preview: '封面',
- showOrHiddenSortable: '显示/隐藏排序'
+ showOrHiddenSortable: '显示/隐藏排序',
+ videoPreview: '视频预览'
},
richText: {
richText: '富文本',
diff --git a/src/router/index.ts b/src/router/index.ts
index e061336..89c6612 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -200,6 +200,14 @@ export const asyncRouterMap: AppRouteRecordRaw[] = [
meta: {
title: t('router.PicturePreview')
}
+ },
+ {
+ path: 'table-video-preview',
+ component: () => import('@/views/Components/Table/TableVideoPreview.vue'),
+ name: 'TableVideoPreview',
+ meta: {
+ title: t('router.tableVideoPreview')
+ }
}
]
},
diff --git a/src/views/Components/Table/TableVideoPreview.vue b/src/views/Components/Table/TableVideoPreview.vue
new file mode 100644
index 0000000..dc10d03
--- /dev/null
+++ b/src/views/Components/Table/TableVideoPreview.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+