From 4e5c26d0d1ab130a2603c41df537ef5867496297 Mon Sep 17 00:00:00 2001
From: ShineKOT <1917095344@qq.com>
Date: Mon, 4 Aug 2025 13:59:31 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=8D=A1=E7=89=87?=
=?UTF-8?q?=EF=BC=8C=E5=88=97=E8=A1=A8=EF=BC=8C=E7=9C=8B=E6=9D=BF=E9=A1=B9?=
=?UTF-8?q?=E6=8B=96=E6=8B=BD=E5=9B=BE=E6=A0=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGELOG.md | 1 +
src/control/data-view/data-view.scss | 4 +++
src/control/data-view/data-view.tsx | 18 +++++++++++
src/control/kanban/kanban.scss | 14 ++++++++
src/control/kanban/kanban.tsx | 32 +++++++++++++++----
.../swimlane-kanban/swimlane-kanban.scss | 12 +++++++
.../swimlane-kanban/swimlane-kanban.tsx | 31 ++++++++++++++++--
src/control/list/list.scss | 6 +++-
src/control/list/list.tsx | 18 +++++++++++
9 files changed, 126 insertions(+), 10 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dbfd405bb..7ae6e686f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,7 @@
- 新增列表新建和拖拽功能
- 新增表格动态控件参数grouprowmode,控制分组行模式
- 新增重复器表格排序
+- 新增卡片,列表,看板项拖拽图标
### Changed
diff --git a/src/control/data-view/data-view.scss b/src/control/data-view/data-view.scss
index 409d19a32..6d01d45bd 100644
--- a/src/control/data-view/data-view.scss
+++ b/src/control/data-view/data-view.scss
@@ -39,6 +39,10 @@ $control-dataview-group-item-content: (
cursor: pointer;
}
+ @include e(drag-icon) {
+ cursor: move;
+ }
+
// 内容区样式
@include e(content) {
flex-grow: 1;
diff --git a/src/control/data-view/data-view.tsx b/src/control/data-view/data-view.tsx
index f31e59e7d..351f31a45 100644
--- a/src/control/data-view/data-view.tsx
+++ b/src/control/data-view/data-view.tsx
@@ -359,6 +359,23 @@ export const DataViewControl = defineComponent({
}
>
+ {c.state.draggable && !c.state.readonly && (
+
+ )}
{cardStyle.value === 'style2' && !c.state.singleSelect && (
onDraggableChange(evt, group?.key)}
diff --git a/src/control/kanban/kanban.scss b/src/control/kanban/kanban.scss
index 5c372a2ef..c3d2acab4 100644
--- a/src/control/kanban/kanban.scss
+++ b/src/control/kanban/kanban.scss
@@ -21,6 +21,11 @@ $control-kanban: (
}
}
+ @include e(drag-icon) {
+ margin-right: getCssVar('spacing', 'tight');
+ cursor: move;
+ }
+
@include e(content) {
display: flex;
flex-grow: 1;
@@ -226,9 +231,18 @@ $control-kanban: (
@include when(selected) {
background-color: getCssVar(control-kanban, selected-bg-color);
}
+
@include when(disabled) {
cursor: no-drop;
}
+
+ @include e(content) {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ }
+
@include e(bottom) {
display: flex;
align-items: center;
diff --git a/src/control/kanban/kanban.tsx b/src/control/kanban/kanban.tsx
index 0995ad9fd..38510ce91 100644
--- a/src/control/kanban/kanban.tsx
+++ b/src/control/kanban/kanban.tsx
@@ -361,9 +361,28 @@ export const KanbanControl = defineComponent({
onDbRowClick(item, event)
}
>
- {panel
- ? renderPanelItemLayout(item, panel)
- : renderDefaultItem(item, group)}
+
+ {c.state.draggable && !c.state.readonly && (
+
+ )}
+ {panel
+ ? renderPanelItemLayout(item, panel)
+ : renderDefaultItem(item, group)}
+
);
};
@@ -556,10 +575,11 @@ export const KanbanControl = defineComponent({
]}
>
@@ -629,9 +630,33 @@ export const SwimlaneKanban = defineComponent({
onClick={() => c.onRowClick(element)}
onDblclick={() => c.onDbRowClick(element)}
>
- {c.model.itemLayoutPanel
- ? renderPanelItemLayout(lane, element)
- : renderDefaultItem(lane, element, group)}
+
+ {c.state.draggable &&
+ !c.state.readonly &&
+ c.draggableMode !== 0 && (
+
+ )}
+ {c.model.itemLayoutPanel
+ ? renderPanelItemLayout(lane, element)
+ : renderDefaultItem(lane, element, group)}
+
);
},
diff --git a/src/control/list/list.scss b/src/control/list/list.scss
index f150cd44c..0f49e579d 100644
--- a/src/control/list/list.scss
+++ b/src/control/list/list.scss
@@ -50,8 +50,8 @@ $control-list-group-style2: (
display: flex;
align-items: center;
justify-content: center;
- color: getCssVar(color, text, 3);
margin-top: getCssVar(spacing, tight);
+ color: getCssVar(color, text, 3);
border: 2px dashed getCssVar(color, border);
}
}
@@ -63,6 +63,10 @@ $control-list-group-style2: (
position: relative;
height: 100%;
+ @include e(drag-icon) {
+ cursor: move;
+ }
+
@include e(nav-icon) {
position: absolute;
top: 18px;
diff --git a/src/control/list/list.tsx b/src/control/list/list.tsx
index ce0c5e572..2919c2e68 100644
--- a/src/control/list/list.tsx
+++ b/src/control/list/list.tsx
@@ -360,6 +360,23 @@ export const ListControl = defineComponent({
style={cardStyle}
class={[ns.b('scroll-item'), ns.is('active', isSelected(item))]}
>
+ {c.state.draggable && !c.state.readonly && (
+
+ )}
{c.model.controlStyle === 'EXTVIEW2' && !c.state.singleSelect && (
onDraggableChange(evt, group?.key)}
--
Gitee