From a1a56050ceb9811cf36aaa97604ce627b7b607df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Thu, 30 Oct 2025 17:12:52 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=90=8D=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/tools.ts | 4 ++-- src/views/Workshop/creation/creation-details.vue | 7 ++----- src/views/Workshop/creation/creation-list.vue | 11 +++-------- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/utils/tools.ts b/src/utils/tools.ts index 0f81fc0..69b2286 100644 --- a/src/utils/tools.ts +++ b/src/utils/tools.ts @@ -108,7 +108,7 @@ export function FormatDate(value: Date | number | string, format: string = 'yyyy * @param onError 下载错误回调 * @param onSuccess 下载成功回调 */ -export async function DownloadImages(list: Array<{ url: string, name: string }>, onProgress?: (count: number, total: number, item: any) => void, onError?: (count: number, total: number, item: any) => void, onSuccess?: (successCount: number, errCount: number) => void) { +export async function DownloadImages(list: Array<{ url: string, name?: string }>, onProgress?: (count: number, total: number, item: any) => void, onError?: (count: number, total: number, item: any) => void, onSuccess?: (successCount: number, errCount: number) => void) { const total = list.length; let count = 0; let successCount = 0; @@ -124,7 +124,7 @@ export async function DownloadImages(list: Array<{ url: string, name: string }>, const blob = this.response; const a = document.createElement('a'); a.href = URL.createObjectURL(blob); - a.download = list[i].name || list[i].url; + a.download = list[i].name || list[i].url.split('/').pop().split('?').shift(); a.click(); successCount++; typeof onProgress === "function" && onProgress(count, total, list[i]); diff --git a/src/views/Workshop/creation/creation-details.vue b/src/views/Workshop/creation/creation-details.vue index 5810ae8..6057d36 100644 --- a/src/views/Workshop/creation/creation-details.vue +++ b/src/views/Workshop/creation/creation-details.vue @@ -4,15 +4,12 @@ import { DownloadImages } from '@/utils/tools' const router = useRouter() const query = computed(() => router.currentRoute.value.query) - const styleUrl = computed(() => query.value.styleUrl) + const styleUrl = computed(() => query.value.styleUrl as string) onMounted(() => {}) const loading = ref(false) const onDownload = () => { - DownloadImages([{ - url: styleUrl.value, - name: 'lane-crawford.png' - }]) + DownloadImages([{ url: styleUrl.value }]) } const onEdit = () => { console.log('edit') diff --git a/src/views/Workshop/creation/creation-list.vue b/src/views/Workshop/creation/creation-list.vue index 26ada1e..f1fa470 100644 --- a/src/views/Workshop/creation/creation-list.vue +++ b/src/views/Workshop/creation/creation-list.vue @@ -13,7 +13,7 @@ const router = useRouter() const emit = defineEmits(['view-type']) const query = computed(() => router.currentRoute.value.query) - const visitRecordId = computed(() => query.value.visitRecordId) + const visitRecordId = computed(() => query.value.visitRecordId)// 访问记录ID import { useGenerateStore } from '@/stores' const generateStore = useGenerateStore() @@ -85,11 +85,7 @@ if (v.loading) return v.loading = true v.selected = false - const obj = { - url: v.tryOnUrl, - name: v.tryOnUrl.split('/').pop() - } - DownloadImages([obj], null, null, () => { + DownloadImages([{ url: v.tryOnUrl }], null, null, () => { v.loading = false v.downloaded = true }) @@ -114,8 +110,7 @@ v.loading = true downloadList.push({ index: i, - url: v.tryOnUrl, - name: v.tryOnUrl.split('/').pop() + url: v.tryOnUrl }) } }) From 0bb916816c999b3c18255bf85825e27869a1bf30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Thu, 30 Oct 2025 17:22:50 +0800 Subject: [PATCH 2/9] fix --- src/stores/modules/generate.ts | 2 ++ src/views/Workshop/customize.vue | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/stores/modules/generate.ts b/src/stores/modules/generate.ts index 183d34f..bd5e612 100644 --- a/src/stores/modules/generate.ts +++ b/src/stores/modules/generate.ts @@ -32,6 +32,7 @@ export const useGenerateStore = defineStore({ /** AI魔改信息 */ customizeInfo: { inputText: '', + count: 0, tryOnId: '', tryOnUrl: '', @@ -108,6 +109,7 @@ export const useGenerateStore = defineStore({ /** 清空 AI魔改信息 */ clearCustomizeInfo() { this.customizeInfo.inputText = '' + this.customizeInfo.count = 0 this.customizeInfo.tryOnId = '' this.customizeInfo.tryOnUrl = '' this.customizeInfo.styleUrl = '' diff --git a/src/views/Workshop/customize.vue b/src/views/Workshop/customize.vue index 672b124..99dc668 100644 --- a/src/views/Workshop/customize.vue +++ b/src/views/Workshop/customize.vue @@ -40,10 +40,11 @@ isRegenerated: 1, prompt: customizeInfo.inputText } - if (generateStore.customerPhotoId) data["customerPhotoId"] = generateStore.customerPhotoId + if (generateStore.customerPhotoId && customizeInfo.count === 0) data["customerPhotoId"] = generateStore.customerPhotoId loading.value = true generateTryOnEffect(data) .then((res:any) => { + customizeInfo.count++ customizeInfo.tryOnId = res.tryOnId customizeInfo.tryOnUrl = res.tryOnUrl customizeInfo.styleUrl = res.styleUrl From ab1b88c9af7c14dea25aced56b23dcbcf9be12d0 Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Thu, 30 Oct 2025 17:27:03 +0800 Subject: [PATCH 3/9] =?UTF-8?q?style:=20=E7=BB=99=E6=89=80=E6=9C=89backdro?= =?UTF-8?q?p=E6=B7=BB=E5=8A=A0=E5=A4=9A=E6=B5=8F=E8=A7=88=E5=99=A8?= =?UTF-8?q?=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/css/style.css | 4 ++++ src/assets/css/style.less | 4 ++++ src/views/Workshop/uploadFace2.vue | 4 ++++ src/views/login/ResetPage.vue | 4 ++++ src/views/login/SignupPage.vue | 4 ++++ src/views/stylist/customer.vue | 3 +++ src/views/stylist/index.vue | 8 ++++++++ 7 files changed, 31 insertions(+) diff --git a/src/assets/css/style.css b/src/assets/css/style.css index b27916f..d3b349a 100644 --- a/src/assets/css/style.css +++ b/src/assets/css/style.css @@ -20,6 +20,10 @@ button.sandblasted-blurred::after { } button.sandblasted-blurred::before { backdrop-filter: blur(9.5rem); + -webkit-backdrop-filter: blur(9.5rem); + -moz-backdrop-filter: blur(9.5rem); + -ms-backdrop-filter: blur(9.5rem); + -o-backdrop-filter: blur(9.5rem); } button.sandblasted-blurred::after { opacity: 0.1; diff --git a/src/assets/css/style.less b/src/assets/css/style.less index 11dcf72..9e08bce 100644 --- a/src/assets/css/style.less +++ b/src/assets/css/style.less @@ -22,6 +22,10 @@ button.sandblasted-blurred { &::before { backdrop-filter: blur(9.5rem); + -webkit-backdrop-filter: blur(9.5rem); + -moz-backdrop-filter: blur(9.5rem); + -ms-backdrop-filter: blur(9.5rem); + -o-backdrop-filter: blur(9.5rem); } &::after { diff --git a/src/views/Workshop/uploadFace2.vue b/src/views/Workshop/uploadFace2.vue index 50de169..fcbbb59 100644 --- a/src/views/Workshop/uploadFace2.vue +++ b/src/views/Workshop/uploadFace2.vue @@ -119,6 +119,10 @@ height: 86.5rem; border-radius: 1rem; backdrop-filter: blur(5.27rem); + -webkit-backdrop-filter: blur(5.27rem); + -moz-backdrop-filter: blur(5.27rem); + -ms-backdrop-filter: blur(5.27rem); + -o-backdrop-filter: blur(5.27rem); box-shadow: 1.9rem 2.3rem 1.66rem 0.23rem -0.3rem 0.23rem #36180c40; border: 0.439rem solid #fff; // border-image: linear-gradient(90deg,#BF926E94, #ffffff) 1; diff --git a/src/views/login/ResetPage.vue b/src/views/login/ResetPage.vue index 7873102..3561a50 100644 --- a/src/views/login/ResetPage.vue +++ b/src/views/login/ResetPage.vue @@ -181,6 +181,10 @@ const handleSuccess = (data: any) => { rgba(0, 0, 0, 0) 100% ); backdrop-filter: blur(35px); + -webkit-backdrop-filter: blur(35px); + -moz-backdrop-filter: blur(35px); + -ms-backdrop-filter: blur(35px); + -o-backdrop-filter: blur(35px); border: 2px solid rgba(255, 255, 255, 0.15); border-radius: 4.79rem; padding: 6.8rem 5.9rem 6.2rem 7.18rem; diff --git a/src/views/login/SignupPage.vue b/src/views/login/SignupPage.vue index fc3de9a..b71f271 100644 --- a/src/views/login/SignupPage.vue +++ b/src/views/login/SignupPage.vue @@ -247,6 +247,10 @@ const handleSignupByGoogle = async () => { rgba(0, 0, 0, 0) 100% ); backdrop-filter: blur(35px); + -webkit-backdrop-filter: blur(35px); + -moz-backdrop-filter: blur(35px); + -ms-backdrop-filter: blur(35px); + -o-backdrop-filter: blur(35px); border: 2px solid rgba(255, 255, 255, 0.15); border-radius: 4.79rem; padding: 11.2rem 8.62rem 14.28rem 7.18rem; diff --git a/src/views/stylist/customer.vue b/src/views/stylist/customer.vue index f2b404a..5addda9 100644 --- a/src/views/stylist/customer.vue +++ b/src/views/stylist/customer.vue @@ -150,6 +150,9 @@ const handleConfirm = async () => { background: rgba(0, 0, 0, 0.2); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); + -moz-backdrop-filter: blur(20px); + -ms-backdrop-filter: blur(20px); + -o-backdrop-filter: blur(20px); margin-left: 7rem; position: relative; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1), inset 0 1px 0 #000000; diff --git a/src/views/stylist/index.vue b/src/views/stylist/index.vue index 3612569..5f54028 100644 --- a/src/views/stylist/index.vue +++ b/src/views/stylist/index.vue @@ -224,6 +224,10 @@ watch(showVideo, (newValue) => { rgba(0, 0, 0, 0) 100% ); backdrop-filter: blur(35px); + -webkit-backdrop-filter: blur(35px); + -moz-backdrop-filter: blur(35px); + -ms-backdrop-filter: blur(35px); + -o-backdrop-filter: blur(35px); overflow: hidden; position: relative; img { @@ -305,6 +309,10 @@ watch(showVideo, (newValue) => { border-radius: 50%; cursor: pointer; backdrop-filter: blur(1rem); + -webkit-backdrop-filter: blur(1rem); + -moz-backdrop-filter: blur(1rem); + -ms-backdrop-filter: blur(1rem); + -o-backdrop-filter: blur(1rem); border: 1px solid rgba(255, 255, 255, 0.3); box-shadow: 0 0.8rem 1.6rem rgba(0, 0, 0, 0.4), inset 0 0.2rem 0.4rem rgba(255, 255, 255, 0.1), inset 0 -0.2rem 0.4rem rgba(0, 0, 0, 0.3); From 009c01b53560eddde5c6c39056e374b9f97ff345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Thu, 30 Oct 2025 17:36:15 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E6=95=88=E6=9E=9C=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/stores/modules/generate.ts | 2 ++ src/views/Workshop/customize.vue | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/stores/modules/generate.ts b/src/stores/modules/generate.ts index bd5e612..d9856d0 100644 --- a/src/stores/modules/generate.ts +++ b/src/stores/modules/generate.ts @@ -33,6 +33,8 @@ export const useGenerateStore = defineStore({ customizeInfo: { inputText: '', count: 0, + oldInputText: '', + oldTryOnId: '', tryOnId: '', tryOnUrl: '', diff --git a/src/views/Workshop/customize.vue b/src/views/Workshop/customize.vue index 99dc668..13ac7ee 100644 --- a/src/views/Workshop/customize.vue +++ b/src/views/Workshop/customize.vue @@ -25,18 +25,21 @@ // console.log('发送消息:', text) } const onReload = () => { + customizeInfo.inputText = customizeInfo.oldInputText + generate("reload") customizeInfo.inputText = '' - generate() } // 生成结果 - const generate = () => { + const generate = (type?: "reload") => { + customizeInfo.oldInputText = customizeInfo.inputText + customizeInfo.oldTryOnId = customizeInfo.tryOnId const data = { customerId: generateStore.customerId, visitRecordId: generateStore.visitRecordId, styleId: generateStore.styleId, // modelPhotoId: generateStore.modelPhotoId, - originalTryOnId: generateStore.originalTryOnId, + originalTryOnId: type === "reload" ? customizeInfo.oldTryOnId : generateStore.originalTryOnId, isRegenerated: 1, prompt: customizeInfo.inputText } From ef3e117451015d221f24d0067349a151e6b041bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Fri, 31 Oct 2025 10:27:27 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E6=9B=B4=E6=94=B9ai=E9=AD=94=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/stores/modules/generate.ts | 6 ++++++ src/views/Workshop/customize.vue | 2 +- src/views/Workshop/uploadFace1.vue | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/stores/modules/generate.ts b/src/stores/modules/generate.ts index d9856d0..d3baaf8 100644 --- a/src/stores/modules/generate.ts +++ b/src/stores/modules/generate.ts @@ -1,6 +1,7 @@ // 每一个存储的模块,命名规则use开头,store结尾 import { defineStore } from 'pinia' import MyEvent from '@/utils/myEvent' +import { uploadCustomerPhoto } from '@/api/workshop' MyEvent.add('clear-generate-state', () => useGenerateStore().clearGenerateData()) export const useGenerateStore = defineStore({ @@ -118,6 +119,11 @@ export const useGenerateStore = defineStore({ this.customizeInfo.isRegenerated = '' this.customizeInfo.isFavorite = false }, + uploadCustomizeInfo(data: object){ + for (let key in data) { + this.customizeInfo[key] = data[key] + } + }, clearCustomerInfo(){ this.customerInfo = { customerId: '', diff --git a/src/views/Workshop/customize.vue b/src/views/Workshop/customize.vue index 13ac7ee..b70e5de 100644 --- a/src/views/Workshop/customize.vue +++ b/src/views/Workshop/customize.vue @@ -117,7 +117,7 @@
-
+
diff --git a/src/views/Workshop/uploadFace1.vue b/src/views/Workshop/uploadFace1.vue index 9022d2f..b81069b 100644 --- a/src/views/Workshop/uploadFace1.vue +++ b/src/views/Workshop/uploadFace1.vue @@ -20,6 +20,11 @@ const handleFinish = () => { generateStore.updatePhotoInfo({}) generateStore.clearCustomizeInfo() + generateStore.uploadCustomizeInfo({ + tryOnId: generateStore.originalTryOn.id, + tryOnUrl: generateStore.originalTryOn.tryOnUrl, + isFavorite: generateStore.originalTryOn.isLike, + }) router.push({ name: 'customize' }) } From 89716427f1f9f29e0777a05fec5b77991c9176e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Fri, 31 Oct 2025 10:27:48 +0800 Subject: [PATCH 6/9] 1 --- src/stores/modules/generate.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stores/modules/generate.ts b/src/stores/modules/generate.ts index d3baaf8..bb3e41a 100644 --- a/src/stores/modules/generate.ts +++ b/src/stores/modules/generate.ts @@ -120,7 +120,7 @@ export const useGenerateStore = defineStore({ this.customizeInfo.isFavorite = false }, uploadCustomizeInfo(data: object){ - for (let key in data) { + for (const key in data) { this.customizeInfo[key] = data[key] } }, From 632d65273be721e1c27be9ce294e6a7157c2a2c8 Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Fri, 31 Oct 2025 10:51:35 +0800 Subject: [PATCH 7/9] =?UTF-8?q?feat:=20request=E9=94=99=E8=AF=AF=E6=8A=9B?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/request.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/utils/request.ts b/src/utils/request.ts index 8b25c6f..e047ce9 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -89,8 +89,7 @@ service.interceptors.response.use( position: 'top', icon: 'none' }) - - return Promise.reject(new Error('error')) + return Promise.reject(new Error(res.errMsg || res.message || 'error')) } else { // 默认只返回data,不返回状态码和message // 通过 meta 中的 responseAll 配置来取决后台是否返回所有数据(包括状态码,message和data) From 5606784bb7cdde1c6f488f2a42148a52941d95b8 Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Fri, 31 Oct 2025 10:56:19 +0800 Subject: [PATCH 8/9] =?UTF-8?q?fix:=20=E6=B3=A8=E5=86=8C=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/login/SignupPage.vue | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/views/login/SignupPage.vue b/src/views/login/SignupPage.vue index b71f271..937254e 100644 --- a/src/views/login/SignupPage.vue +++ b/src/views/login/SignupPage.vue @@ -88,38 +88,31 @@ const validatePassword = (password: string) => { // 验证表单 const validateForm = () => { - let isValid = true - - // 重置错误信息 - formErrors.name = '' - formErrors.email = '' - formErrors.password = '' - // 验证邮箱 if (!formData.name) { - formErrors.name = '请输入姓名' - isValid = false + showToast('Please input your name') + return false } // 验证邮箱 if (!formData.email) { - formErrors.email = '请输入邮箱地址' - isValid = false + showToast('Please input your email') + return false } else if (!validateEmail(formData.email)) { - formErrors.email = '请输入有效的邮箱地址' - isValid = false + showToast('Please input valid email') + return false } // 验证密码 if (!formData.password) { - formErrors.password = '请输入密码' - isValid = false + showToast('Please input password') + return false } else if (!validatePassword(formData.password)) { - formErrors.password = '密码至少需要6位字符' - isValid = false + showToast('Password must be at least 6 characters') + return false } - return isValid + return true } // 返回上一页 @@ -130,7 +123,6 @@ const goBack = () => { // 处理注册 const handleConfirm = async () => { if (!validateForm()) { - showToast('请检查输入信息') return } From 387904e36df3030b74227bc16b3eab3999440088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Fri, 31 Oct 2025 11:01:14 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=AF=94=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Workshop/creation/creation-list.vue | 4 ++-- src/views/Workshop/customize.vue | 12 ++++++------ src/views/Workshop/library.vue | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/views/Workshop/creation/creation-list.vue b/src/views/Workshop/creation/creation-list.vue index f1fa470..ba31482 100644 --- a/src/views/Workshop/creation/creation-list.vue +++ b/src/views/Workshop/creation/creation-list.vue @@ -218,7 +218,7 @@ // justify-content: space-around; .item { width: 47%; - height: 52.9rem; + height: 62.2rem; // overflow: hidden; border-radius: var(--border-radius); background-color: #fff; @@ -228,7 +228,7 @@ > img { width: 100%; height: 100%; - object-fit: contain; + object-fit: cover; border-radius: var(--border-radius); } > .corner { diff --git a/src/views/Workshop/customize.vue b/src/views/Workshop/customize.vue index b70e5de..3e0115b 100644 --- a/src/views/Workshop/customize.vue +++ b/src/views/Workshop/customize.vue @@ -149,7 +149,7 @@ font-size: 8.4rem; text-align: center; line-height: 124%; - margin-top: 3.6rem; + margin-top: 3.2rem; } > .tip { margin-top: 0.56rem; @@ -159,7 +159,7 @@ color: rgba(0, 0, 0, 0.6); } > .input-box { - margin-top: 6rem; + margin-top: 4.5rem; width: 87.5rem; height: 8.3rem; border-radius: 0.5rem; @@ -196,9 +196,9 @@ } } > .card { - margin-top: 6.4rem; - width: 72.9rem; - height: 102.3rem; + margin-top: 5rem; + width: 73rem; + height: 109.5rem; border-radius: 2rem; // box-shadow: 1.3rem 1.4rem 2rem 0.2rem #0000004d; border: 0.2rem solid #d9d9d9; @@ -250,7 +250,7 @@ } } > .btns { - margin-top: 5.6rem; + margin-top: 5rem; width: 100%; display: flex; justify-content: center; diff --git a/src/views/Workshop/library.vue b/src/views/Workshop/library.vue index 41884d0..cd71b8b 100644 --- a/src/views/Workshop/library.vue +++ b/src/views/Workshop/library.vue @@ -26,7 +26,7 @@ const obj = { visitRecordId: v.visitRecordId, defaultImageUrl: v.defaultImageUrl, - datetime: FormatDate(v.visitTime, 'dd-MM-yyyy HH:mm'), + datetime: FormatDate(v.visitTime, 'dd/MM/yyyy HH:mm'), lastopened: FormatDate(v.visitTime, 'HH:mm') } list.push(obj) @@ -146,7 +146,7 @@ margin-top: 0; } > .image { - width: 21.4rem; + width: 22.9rem; height: 100%; overflow: hidden; border-radius: 2rem; @@ -154,7 +154,7 @@ > img { width: 100%; height: 100%; - object-fit: contain; + object-fit: cover; display: block; } }