From 9ce9f36a1085b7078d45d99049a35f4d13de5366 Mon Sep 17 00:00:00 2001
From: Hooray <304327508@qq.com>
Date: Sun, 15 Jun 2025 23:43:59 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20`FaImagePreview`=20?=
=?UTF-8?q?=E7=BB=84=E4=BB=B6=EF=BC=8C=E5=B9=B6=E7=A7=BB=E9=99=A4=20`Image?=
=?UTF-8?q?Preview`=20=E7=BB=84=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/ImagePreview/index.vue | 63 ------
src/router/modules/component.example.ts | 16 +-
src/types/components.d.ts | 2 +-
.../FaImagePreview/dialog/Dialog.vue | 14 ++
.../FaImagePreview/dialog/DialogClose.vue | 11 ++
.../FaImagePreview/dialog/DialogContent.vue | 48 +++++
.../dialog/DialogDescription.vue | 21 ++
.../FaImagePreview/dialog/DialogFooter.vue | 19 ++
.../FaImagePreview/dialog/DialogHeader.vue | 16 ++
.../dialog/DialogScrollContent.vue | 56 ++++++
.../FaImagePreview/dialog/DialogTitle.vue | 26 +++
.../FaImagePreview/dialog/DialogTrigger.vue | 11 ++
.../components/FaImagePreview/dialog/index.ts | 9 +
src/ui/components/FaImagePreview/index.vue | 187 ++++++++++++++++++
.../imagepreview.vue | 28 +++
15 files changed, 455 insertions(+), 72 deletions(-)
delete mode 100755 src/components/ImagePreview/index.vue
create mode 100644 src/ui/components/FaImagePreview/dialog/Dialog.vue
create mode 100644 src/ui/components/FaImagePreview/dialog/DialogClose.vue
create mode 100644 src/ui/components/FaImagePreview/dialog/DialogContent.vue
create mode 100644 src/ui/components/FaImagePreview/dialog/DialogDescription.vue
create mode 100644 src/ui/components/FaImagePreview/dialog/DialogFooter.vue
create mode 100644 src/ui/components/FaImagePreview/dialog/DialogHeader.vue
create mode 100644 src/ui/components/FaImagePreview/dialog/DialogScrollContent.vue
create mode 100644 src/ui/components/FaImagePreview/dialog/DialogTitle.vue
create mode 100644 src/ui/components/FaImagePreview/dialog/DialogTrigger.vue
create mode 100644 src/ui/components/FaImagePreview/dialog/index.ts
create mode 100644 src/ui/components/FaImagePreview/index.vue
create mode 100644 src/views/component_built_in_example/imagepreview.vue
diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue
deleted file mode 100755
index c8afadfd..00000000
--- a/src/components/ImagePreview/index.vue
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/router/modules/component.example.ts b/src/router/modules/component.example.ts
index cb0c1c8c..6ef3b668 100755
--- a/src/router/modules/component.example.ts
+++ b/src/router/modules/component.example.ts
@@ -110,6 +110,14 @@ const routes: RouteRecordRaw = {
title: '悬浮卡片',
},
},
+ {
+ path: 'imagepreview',
+ name: 'componentExampleBuiltInImagePreview',
+ component: () => import('@/views/component_built_in_example/imagepreview.vue'),
+ meta: {
+ title: '图片预览',
+ },
+ },
{
path: 'input',
name: 'componentExampleBuiltInInput',
@@ -271,14 +279,6 @@ const routes: RouteRecordRaw = {
title: '上传',
},
},
- {
- path: 'imagepreview',
- name: 'componentExampleExtendImagePreview',
- component: () => import('@/views/component_extend_example/image.preview.vue'),
- meta: {
- title: '图片预览',
- },
- },
{
path: 'pcas',
name: 'componentExampleExtendPcas',
diff --git a/src/types/components.d.ts b/src/types/components.d.ts
index dce63eb4..5cc8de04 100644
--- a/src/types/components.d.ts
+++ b/src/types/components.d.ts
@@ -24,6 +24,7 @@ declare module 'vue' {
FaFixedActionBar: typeof import('./../ui/components/FaFixedActionBar/index.vue')['default']
FaHoverCard: typeof import('./../ui/components/FaHoverCard/index.vue')['default']
FaIcon: typeof import('./../ui/components/FaIcon/index.vue')['default']
+ FaImagePreview: typeof import('./../ui/components/FaImagePreview/index.vue')['default']
FaInput: typeof import('./../ui/components/FaInput/index.vue')['default']
FaKbd: typeof import('./../ui/components/FaKbd/index.vue')['default']
FaMaskScrollContainer: typeof import('./../ui/components/FaMaskScrollContainer/index.vue')['default']
@@ -47,7 +48,6 @@ declare module 'vue' {
FaToast: typeof import('./../ui/components/FaToast/index.vue')['default']
FaTooltip: typeof import('./../ui/components/FaTooltip/index.vue')['default']
FileUpload: typeof import('./../components/FileUpload/index.vue')['default']
- ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
ImagesUpload: typeof import('./../components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
diff --git a/src/ui/components/FaImagePreview/dialog/Dialog.vue b/src/ui/components/FaImagePreview/dialog/Dialog.vue
new file mode 100644
index 00000000..9fc9c7d1
--- /dev/null
+++ b/src/ui/components/FaImagePreview/dialog/Dialog.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/src/ui/components/FaImagePreview/dialog/DialogClose.vue b/src/ui/components/FaImagePreview/dialog/DialogClose.vue
new file mode 100644
index 00000000..ba036b51
--- /dev/null
+++ b/src/ui/components/FaImagePreview/dialog/DialogClose.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/src/ui/components/FaImagePreview/dialog/DialogContent.vue b/src/ui/components/FaImagePreview/dialog/DialogContent.vue
new file mode 100644
index 00000000..4307460a
--- /dev/null
+++ b/src/ui/components/FaImagePreview/dialog/DialogContent.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+ Close
+
+
+
+
diff --git a/src/ui/components/FaImagePreview/dialog/DialogDescription.vue b/src/ui/components/FaImagePreview/dialog/DialogDescription.vue
new file mode 100644
index 00000000..096fb6f8
--- /dev/null
+++ b/src/ui/components/FaImagePreview/dialog/DialogDescription.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
diff --git a/src/ui/components/FaImagePreview/dialog/DialogFooter.vue b/src/ui/components/FaImagePreview/dialog/DialogFooter.vue
new file mode 100644
index 00000000..b633458e
--- /dev/null
+++ b/src/ui/components/FaImagePreview/dialog/DialogFooter.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/src/ui/components/FaImagePreview/dialog/DialogHeader.vue b/src/ui/components/FaImagePreview/dialog/DialogHeader.vue
new file mode 100644
index 00000000..dee30d9a
--- /dev/null
+++ b/src/ui/components/FaImagePreview/dialog/DialogHeader.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/src/ui/components/FaImagePreview/dialog/DialogScrollContent.vue b/src/ui/components/FaImagePreview/dialog/DialogScrollContent.vue
new file mode 100644
index 00000000..a4ba16d2
--- /dev/null
+++ b/src/ui/components/FaImagePreview/dialog/DialogScrollContent.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+ {
+ const originalEvent = event.detail.originalEvent;
+ const target = originalEvent.target as HTMLElement;
+ if (originalEvent.offsetX > target.clientWidth || originalEvent.offsetY > target.clientHeight) {
+ event.preventDefault();
+ }
+ }"
+ >
+
+
+
+
+ Close
+
+
+
+
+
diff --git a/src/ui/components/FaImagePreview/dialog/DialogTitle.vue b/src/ui/components/FaImagePreview/dialog/DialogTitle.vue
new file mode 100644
index 00000000..00c5a3ab
--- /dev/null
+++ b/src/ui/components/FaImagePreview/dialog/DialogTitle.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/src/ui/components/FaImagePreview/dialog/DialogTrigger.vue b/src/ui/components/FaImagePreview/dialog/DialogTrigger.vue
new file mode 100644
index 00000000..2984f371
--- /dev/null
+++ b/src/ui/components/FaImagePreview/dialog/DialogTrigger.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/src/ui/components/FaImagePreview/dialog/index.ts b/src/ui/components/FaImagePreview/dialog/index.ts
new file mode 100644
index 00000000..ca8cfeae
--- /dev/null
+++ b/src/ui/components/FaImagePreview/dialog/index.ts
@@ -0,0 +1,9 @@
+export { default as Dialog } from './Dialog.vue'
+export { default as DialogClose } from './DialogClose.vue'
+export { default as DialogContent } from './DialogContent.vue'
+export { default as DialogDescription } from './DialogDescription.vue'
+export { default as DialogFooter } from './DialogFooter.vue'
+export { default as DialogHeader } from './DialogHeader.vue'
+export { default as DialogScrollContent } from './DialogScrollContent.vue'
+export { default as DialogTitle } from './DialogTitle.vue'
+export { default as DialogTrigger } from './DialogTrigger.vue'
diff --git a/src/ui/components/FaImagePreview/index.vue b/src/ui/components/FaImagePreview/index.vue
new file mode 100644
index 00000000..3270688d
--- /dev/null
+++ b/src/ui/components/FaImagePreview/index.vue
@@ -0,0 +1,187 @@
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_built_in_example/imagepreview.vue b/src/views/component_built_in_example/imagepreview.vue
new file mode 100644
index 00000000..2a083859
--- /dev/null
+++ b/src/views/component_built_in_example/imagepreview.vue
@@ -0,0 +1,28 @@
+
+meta:
+ enabled: false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义错误信息
+
+
+ 图片加载失败
+
+
+
+
+
+
+
+