Skip to content

Commit 2d47b79

Browse files
authored
fix: parent form field in page settings do not display (opentiny#1069)
1 parent 48f25c6 commit 2d47b79

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

packages/plugins/page/src/PageGeneral.vue

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
prop="parentId"
3333
>
3434
<tiny-select
35-
v-model="pageSettingState.currentPageData.parentId"
35+
v-model="pageParentId"
3636
value-field="id"
3737
render-type="tree"
3838
:tree-op="treeFolderOp"
@@ -94,15 +94,25 @@ export default {
9494
setup() {
9595
const { pageSettingState, changeTreeData, STATIC_PAGE_GROUP_ID } = usePage()
9696
const ROOT_ID = pageSettingState.ROOT_ID
97-
const oldParentId = ref(pageSettingState.currentPageData.parentId)
97+
98+
const pageParentId = computed({
99+
get() {
100+
return String(pageSettingState.currentPageData.parentId)
101+
},
102+
set(value) {
103+
pageSettingState.currentPageData.parentId = value
104+
}
105+
})
106+
107+
const oldParentId = ref(pageParentId.value)
98108
99109
watchEffect(() => {
100110
oldParentId.value = pageSettingState.oldParentId
101111
})
102112
103113
const currentRoute = computed(() => {
104114
let route = pageSettingState.currentPageData.route || ''
105-
let parentId = pageSettingState.currentPageData.parentId
115+
let parentId = pageParentId
106116
107117
while (parentId !== ROOT_ID) {
108118
const parent = pageSettingState.treeDataMapping[parentId]
@@ -233,6 +243,7 @@ export default {
233243
pageRules,
234244
folderRules,
235245
pageSettingState,
246+
pageParentId,
236247
generalForm,
237248
validGeneralForm,
238249
treeFolderOp,

packages/plugins/page/src/composable/usePage.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ const isTemporaryPage = reactive({
7575
saved: false
7676
})
7777

78+
const STATIC_PAGE_GROUP_ID = 0
79+
const COMMON_PAGE_GROUP_ID = 1
80+
7881
const generateCssString = (pageOptions, materialsOptions) => {
7982
if (!pageOptions?.pageBaseStyle?.className || !pageOptions?.pageBaseStyle?.style) {
8083
return ''
@@ -151,10 +154,21 @@ const isCurrentDataSame = () => {
151154
return isEqual
152155
}
153156

157+
const getParentNode = (parentId) => {
158+
return parentId === pageSettingState.ROOT_ID
159+
? { id: pageSettingState.ROOT_ID, children: pageSettingState.pages[STATIC_PAGE_GROUP_ID].data }
160+
: pageSettingState.treeDataMapping[parentId]
161+
}
162+
154163
const changeTreeData = (newParentId, oldParentId) => {
155-
if (newParentId && oldParentId && newParentId !== oldParentId) {
156-
const folderData = pageSettingState.treeDataMapping[newParentId]
157-
const parentData = pageSettingState.treeDataMapping[oldParentId]
164+
if (newParentId && oldParentId && String(newParentId) !== String(oldParentId)) {
165+
const folderData = getParentNode(newParentId)
166+
const parentData = getParentNode(oldParentId)
167+
168+
if (!folderData || !parentData) {
169+
return
170+
}
171+
158172
const currentPageDataId = pageSettingState.currentPageData.id
159173
const curDataIndex = parentData.children?.findIndex?.(({ id }) => id === currentPageDataId)
160174

@@ -187,9 +201,6 @@ const resetPageData = () => {
187201
// 判断当前页面内容是否有修改
188202
const isChangePageData = () => !isEqual(pageSettingState.currentPageData, pageSettingState.currentPageDataCopy)
189203

190-
const STATIC_PAGE_GROUP_ID = 0
191-
const COMMON_PAGE_GROUP_ID = 1
192-
193204
/**
194205
*
195206
* @typedef {Object} PageData

0 commit comments

Comments
 (0)