修复pagetype编辑界面添加新列及字段后保存后新列丢失的问题

This commit is contained in:
jingrow 2026-01-24 16:44:56 +08:00
parent 50f99f64d9
commit 39cba0d878

View File

@ -2,7 +2,7 @@
<div
:class="['column', selected ? 'selected' : hovered ? 'hovered' : '']"
:title="column.df.fieldname"
@click.stop="store.form.selected_field = column.df"
@click.stop="handleColumnClick"
@mouseover.stop="hovered = true"
@mouseout.stop="hovered = false"
>
@ -27,6 +27,7 @@
:easing="store.getAnimation"
item-key="id"
:disabled="store.readOnly"
@click="handleContainerClick"
>
<template #item="{ element }">
<Field
@ -36,7 +37,7 @@
/>
</template>
</draggable>
<div class="empty-column" :hidden="store.readOnly">
<div class="empty-column" :hidden="store.readOnly" @click="handleEmptyColumnClick">
<AddFieldButton :column="column" />
</div>
<div v-if="column.fields.length" class="add-new-field-btn">
@ -67,6 +68,56 @@ whenever(Backspace, (value) => {
const hovered = ref(false);
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>
<style lang="scss" scoped>
@ -153,10 +204,12 @@ const selected = computed(() => store.selected(props.column.df.name));
gap: 5px;
width: 100%;
padding: 15px;
z-index: 5; // column-container
button {
background-color: #f9fafb;
z-index: 2;
z-index: 10;
position: relative;
&:hover {
background-color: #e5e7eb;