对上一版进行优化:已收起卡片,点击边缘也可以展开

This commit is contained in:
1378012178@qq.com 2026-04-24 10:29:37 +08:00
parent a44a8a0331
commit 5818735df2
1 changed files with 26 additions and 5 deletions

View File

@ -3,9 +3,9 @@
<a-row style="margin-top: -4px;">
<a-col v-for="(item, index) in nuInfos" style="padding:7px 7px;" :key="index" :span="24">
<a-card :class="['card-3d', { 'card-collapsed': expandedCard !== item.nuId }]"
style="height: auto; min-height: 320px;">
style="height: auto; min-height: 320px;" @click="handleCardClick(item.nuId, $event)">
<!-- 卡片头部可点击展开 -->
<div class="card-header" @click="expandCard(item.nuId)">
<div class="card-header">
<div class="left-area">
<div class="left-area">
<div class="region-name">名称{{ item.nuName }}</div>
@ -22,7 +22,7 @@
</div>
<!-- 卡片内容只有展开的卡片才显示 -->
<div class="card-content" v-if="expandedCard === item.nuId">
<div class="card-content" v-if="expandedCard === item.nuId" @click.stop>
<!-- 上半部分左右布局 -->
<div class="top-section">
<!-- 右侧其他内容区域 -->
@ -168,6 +168,25 @@ const disabled = computed(() => {
return props.formDisabled;
});
//
function handleCardClick(nuId: string, event: Event) {
//
const target = event.target as HTMLElement;
const isInputElement = target.tagName === 'INPUT' ||
target.tagName === 'BUTTON' ||
target.closest('.ant-input-number') ||
target.closest('.ant-checkbox-wrapper') ||
target.closest('button');
// /
if (isInputElement && expandedCard.value === nuId) {
return;
}
// /
expandCard(nuId);
}
// /
function expandCard(nuId: string) {
//
@ -413,6 +432,7 @@ defineExpose({
transition: all 0.3s ease;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
overflow: hidden;
cursor: pointer;
}
/* 鼠标悬停效果 */
@ -438,12 +458,12 @@ defineExpose({
transition: padding 0.3s ease;
}
/* 卡片头部 */
/* 卡片头部的鼠标样式 */
.card-header {
display: flex;
align-items: center;
justify-content: space-between;
cursor: pointer;
cursor: inherit;
user-select: none;
}
@ -595,6 +615,7 @@ defineExpose({
/* 强制 checkbox 文字显示为黑色 */
.right-area {
:deep(.ant-checkbox-wrapper),
:deep(.ant-checkbox-wrapper-disabled),
:deep(.ant-checkbox + span),