From 26816ce456d57c6c98511dd4a795c66297d86c0f Mon Sep 17 00:00:00 2001 From: sakurayinfei <970412446@qq.com> Date: Wed, 10 Sep 2025 17:34:09 +0800 Subject: [PATCH 1/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dfigure=E7=BB=84?= =?UTF-8?q?=E4=BB=B6lazyPreview=E5=8F=82=E6=95=B0=E5=8D=95=E8=AF=8D?= =?UTF-8?q?=E6=8B=BC=E5=86=99=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/opendesign/src/figure/OFigure.vue | 2 +- packages/opendesign/src/figure/types.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/opendesign/src/figure/OFigure.vue b/packages/opendesign/src/figure/OFigure.vue index 1b2551a8..fbcbbc08 100644 --- a/packages/opendesign/src/figure/OFigure.vue +++ b/packages/opendesign/src/figure/OFigure.vue @@ -93,7 +93,7 @@ const paddingTop = computed(() => { // 全屏预览图片 const previewVisible = ref(false); -const canPreview = computed(() => props.preview || props.lazyPreiew); +const canPreview = computed(() => props.preview || props.lazyPreview); const previewCloseTypes = computed(() => { if (!props.previewClose) { return isPhonePad.value ? ['image', 'mask', 'button'] : ['mask', 'button']; diff --git a/packages/opendesign/src/figure/types.ts b/packages/opendesign/src/figure/types.ts index 1aa2bcca..0955b8eb 100644 --- a/packages/opendesign/src/figure/types.ts +++ b/packages/opendesign/src/figure/types.ts @@ -61,7 +61,7 @@ export const figureProps = { /** * 支持通过实例接口调用预览 */ - lazyPreiew: { + lazyPreview: { type: Boolean, }, /** -- Gitee From 25fb30b42ef3668ccf79dbbb202e4d0b8ba11c71 Mon Sep 17 00:00:00 2001 From: sakurayinfei <970412446@qq.com> Date: Thu, 11 Sep 2025 11:47:59 +0800 Subject: [PATCH 2/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=97=B6ts=E6=8A=A5=E9=94=99=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/opendesign/package.json | 3 ++- packages/opendesign/src/vite-env.d.ts | 6 ------ pnpm-lock.yaml | 3 +++ 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/opendesign/package.json b/packages/opendesign/package.json index da46d068..7660970f 100644 --- a/packages/opendesign/package.json +++ b/packages/opendesign/package.json @@ -33,6 +33,7 @@ "devDependencies": { "@opensig/open-scripts": "workspace:^", "typescript": "catalog:typescript", - "vue-tsc": "catalog:build" + "vue-tsc": "catalog:build", + "vite": "catalog:build" } } diff --git a/packages/opendesign/src/vite-env.d.ts b/packages/opendesign/src/vite-env.d.ts index af36df34..11f02fe2 100644 --- a/packages/opendesign/src/vite-env.d.ts +++ b/packages/opendesign/src/vite-env.d.ts @@ -1,7 +1 @@ /// - -declare module '*.vue' { - import type { DefineComponent } from 'vue'; - const component: DefineComponent<{}, {}, any>; - export default component; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a05f93d..12deaee6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -279,6 +279,9 @@ importers: typescript: specifier: catalog:typescript version: 5.8.2 + vite: + specifier: catalog:build + version: 6.3.0(@types/node@22.13.1)(sass-embedded@1.83.4)(sass@1.84.0)(terser@5.38.1) vue-tsc: specifier: catalog:build version: 2.2.8(typescript@5.8.2) -- Gitee From 43c26d1e40e99efacf6f1062b6d45995ccabe8ca Mon Sep 17 00:00:00 2001 From: sakurayinfei <970412446@qq.com> Date: Thu, 18 Sep 2025 09:10:33 +0800 Subject: [PATCH 3/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=BD=93=20backgr?= =?UTF-8?q?ound=20=E4=B8=BA=E7=9C=9F=E6=97=B6=20figure=20=E6=87=92?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E5=AE=8C=E6=88=90=E5=89=8D=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E9=80=9A=E8=BF=87=20ratio=20=E5=B1=9E=E6=80=A7=E4=BF=9D?= =?UTF-8?q?=E6=8C=81=E5=AE=BD=E9=AB=98=E6=AF=94=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/opendesign/src/figure/OFigure.vue | 52 +++++++++---------- .../src/figure/__demo__/FigureLazy.vue | 15 ++++++ 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/packages/opendesign/src/figure/OFigure.vue b/packages/opendesign/src/figure/OFigure.vue index fbcbbc08..2d7fff25 100644 --- a/packages/opendesign/src/figure/OFigure.vue +++ b/packages/opendesign/src/figure/OFigure.vue @@ -150,42 +150,40 @@ defineExpose({ @click="onFigureClick" ref="rootEl" > - - - - - - + + + - + + diff --git a/packages/opendesign/src/figure/__demo__/FigureLazy.vue b/packages/opendesign/src/figure/__demo__/FigureLazy.vue index b010a854..2a4af937 100644 --- a/packages/opendesign/src/figure/__demo__/FigureLazy.vue +++ b/packages/opendesign/src/figure/__demo__/FigureLazy.vue @@ -1,4 +1,5 @@ @@ -31,6 +41,8 @@ const lazyOption = { onload('img3')" lazy @error="() => onerror('img3')" preview /> onload('img4')" lazy @error="() => onerror('img4')" preview /> + 测试当 background 为真时 figure 懒加载完成前不能通过 ratio 属性保持宽高比的问题 + 懒加载 lazy= { rootMargin: '400px 0px 400px 0px' } @@ -64,4 +76,7 @@ const lazyOption = { font-size: 32px; cursor: pointer; } +#lazy-preview-ratio-check { + border: 5px solid red; +} -- Gitee From 7209cbb93892e1efc465b4a426646dc13bc46b02 Mon Sep 17 00:00:00 2001 From: sakurayinfei <970412446@qq.com> Date: Thu, 18 Sep 2025 09:11:32 +0800 Subject: [PATCH 4/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dfigure=E7=BB=84?= =?UTF-8?q?=E5=BB=BA=E5=9C=A8=E8=AE=BE=E7=BD=AE=20background=20=E4=B8=BA?= =?UTF-8?q?=20true=20=E4=B8=94=E6=9C=AA=E8=AE=BE=E7=BD=AE=20ratio=20?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E6=97=B6=EF=BC=8Cbackground=20=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98=E4=BB=A5=E5=8F=8Aload=20?= =?UTF-8?q?=E6=88=96=20error=20=E8=A7=A6=E5=8F=91=E4=B8=A4=E6=AC=A1?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/opendesign/src/figure/OFigure.vue | 15 +++----- .../src/figure/__demo__/FigureBasic.vue | 36 +++++++++++++++++++ 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/packages/opendesign/src/figure/OFigure.vue b/packages/opendesign/src/figure/OFigure.vue index 2d7fff25..a79689ac 100644 --- a/packages/opendesign/src/figure/OFigure.vue +++ b/packages/opendesign/src/figure/OFigure.vue @@ -141,25 +141,18 @@ defineExpose({ 'o-figure-hoverable': props.hoverable || !!props.href || props.preview || props.videoPoster, 'o-figure-previewable': props.preview, 'o-figure-video-poster': props.videoPoster, + 'o-figure-bg': props.background, }" :style="{ '--figure-prest-color': prestColor, '--figure-padding-top': paddingTop, '--figure-fit': props.fit, + backgroundImage: bgUrl, }" @click="onFigureClick" ref="rootEl" > - + @@ -175,7 +168,7 @@ defineExpose({ /> +import { onMounted, useTemplateRef } from 'vue'; import { OFigure } from '../index'; const img = 'https://www.openeuler.org/img/banners/20230418-odd.png'; @@ -12,6 +13,22 @@ const onload = () => { const onerror = () => { console.log('error'); }; +let count = 0; +const testTriggerDouble = () => { + if (count++ >= 1) { + console.error('失败:修复在设置 background 为 true 且未设置 ratio 属性时,load 或 error 触发两次的问题'); + } else { + console.log('trigger', count); + } +}; +const figureDom = useTemplateRef('background-no-ratio'); +onMounted(() => { + if (figureDom.value?.$el.querySelector('img')) { + console.error('失败:修复在设置 background 为 true 且未设置 ratio 属性时,background 失效的问题'); + } else { + console.log('成功:修复在设置 background 为 true 且未设置 ratio 属性时,background 失效的问题'); + } +}); 基本 @@ -25,6 +42,20 @@ const onerror = () => { + background + + + 修复在设置 background 为 true 且未设置 ratio 属性时,background 失效的问题以及load 或 error 触发两次的问题 + + slot @@ -37,6 +68,11 @@ const onerror = () => {