修复pagetype编辑界面添加新列及字段后保存后新列丢失的问题
This commit is contained in:
parent
50f99f64d9
commit
39cba0d878
@ -2,7 +2,7 @@
|
|||||||
<div
|
<div
|
||||||
:class="['column', selected ? 'selected' : hovered ? 'hovered' : '']"
|
:class="['column', selected ? 'selected' : hovered ? 'hovered' : '']"
|
||||||
:title="column.df.fieldname"
|
:title="column.df.fieldname"
|
||||||
@click.stop="store.form.selected_field = column.df"
|
@click.stop="handleColumnClick"
|
||||||
@mouseover.stop="hovered = true"
|
@mouseover.stop="hovered = true"
|
||||||
@mouseout.stop="hovered = false"
|
@mouseout.stop="hovered = false"
|
||||||
>
|
>
|
||||||
@ -27,6 +27,7 @@
|
|||||||
:easing="store.getAnimation"
|
:easing="store.getAnimation"
|
||||||
item-key="id"
|
item-key="id"
|
||||||
:disabled="store.readOnly"
|
:disabled="store.readOnly"
|
||||||
|
@click="handleContainerClick"
|
||||||
>
|
>
|
||||||
<template #item="{ element }">
|
<template #item="{ element }">
|
||||||
<Field
|
<Field
|
||||||
@ -36,7 +37,7 @@
|
|||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</draggable>
|
</draggable>
|
||||||
<div class="empty-column" :hidden="store.readOnly">
|
<div class="empty-column" :hidden="store.readOnly" @click="handleEmptyColumnClick">
|
||||||
<AddFieldButton :column="column" />
|
<AddFieldButton :column="column" />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="column.fields.length" class="add-new-field-btn">
|
<div v-if="column.fields.length" class="add-new-field-btn">
|
||||||
@ -67,6 +68,56 @@ whenever(Backspace, (value) => {
|
|||||||
|
|
||||||
const hovered = ref(false);
|
const hovered = ref(false);
|
||||||
const selected = computed(() => store.selected(props.column.df.name));
|
const selected = computed(() => store.selected(props.column.df.name));
|
||||||
|
|
||||||
|
function handleColumnClick(event) {
|
||||||
|
console.log('[Column] handleColumnClick triggered');
|
||||||
|
console.log('[Column] event.target:', event.target);
|
||||||
|
|
||||||
|
// 如果点击的是 AddFieldButton,不选中列
|
||||||
|
const target = event.target;
|
||||||
|
const wrapper = target.closest('.add-field-btn, .add-field-wrapper');
|
||||||
|
console.log('[Column] closest wrapper:', wrapper);
|
||||||
|
|
||||||
|
if (wrapper) {
|
||||||
|
console.log('[Column] Clicked on AddFieldButton, skipping column selection');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('[Column] Selecting column');
|
||||||
|
store.form.selected_field = props.column.df;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleEmptyColumnClick(event) {
|
||||||
|
// 如果点击的是按钮,不阻止事件(让按钮处理)
|
||||||
|
const target = event.target;
|
||||||
|
const isButton = target.closest('.add-field-btn, .add-field-wrapper');
|
||||||
|
if (isButton) {
|
||||||
|
// 让事件继续传播到按钮
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 否则阻止事件冒泡(避免选中列)
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleContainerClick(event) {
|
||||||
|
console.log('[Column] handleContainerClick triggered');
|
||||||
|
console.log('[Column] event.target:', event.target);
|
||||||
|
|
||||||
|
// 如果点击的是按钮,不阻止事件
|
||||||
|
const target = event.target;
|
||||||
|
const isButton = target.closest('.add-field-btn, .add-field-wrapper');
|
||||||
|
console.log('[Column] isButton:', isButton);
|
||||||
|
|
||||||
|
if (isButton) {
|
||||||
|
console.log('[Column] Clicked on button, not stopping propagation');
|
||||||
|
// 不阻止,让按钮处理
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 否则阻止事件冒泡到列容器
|
||||||
|
console.log('[Column] Stopping propagation');
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@ -153,10 +204,12 @@ const selected = computed(() => store.selected(props.column.df.name));
|
|||||||
gap: 5px;
|
gap: 5px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
|
z-index: 5; // 确保在 column-container 上面
|
||||||
|
|
||||||
button {
|
button {
|
||||||
background-color: #f9fafb;
|
background-color: #f9fafb;
|
||||||
z-index: 2;
|
z-index: 10;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: #e5e7eb;
|
background-color: #e5e7eb;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user