Skip to content

Commit e292232

Browse files
committed
feat: 默认页调整为由父级页面下拉选择
1 parent 8279ef5 commit e292232

File tree

5 files changed

+74
-17
lines changed

5 files changed

+74
-17
lines changed

packages/common/js/http.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export const requestEvent = (url, params) => {
3737
* @returns { Promise }
3838
*
3939
*/
40-
export const handlePageUpdate = (pageId, params, routerChange, isCurEditPage) => {
40+
export const handlePageUpdate = (pageId, params, routerChange, isCurEditPage, isShowNotify = true) => {
4141
return getMetaApi(META_SERVICE.Http)
4242
.post(`/app-center/api/pages/update/${pageId}`, params)
4343
.then((res) => {
@@ -57,7 +57,9 @@ export const handlePageUpdate = (pageId, params, routerChange, isCurEditPage) =>
5757
}
5858
}
5959

60-
useNotify({ message: '保存成功!', type: 'success' })
60+
if (isShowNotify) {
61+
useNotify({ message: '保存成功!', type: 'success' })
62+
}
6163

6264
// 更新 页面状态 标志
6365
setSaved(true)

packages/plugins/page/src/Main.vue

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,6 @@ export default {
136136
.catch(() => {
137137
useNotify({ message: '主页设置失败!', type: 'error' })
138138
})
139-
},
140-
cancel: () => {
141-
state.checked = false
142139
}
143140
})
144141
}

packages/plugins/page/src/PageGeneral.vue

Lines changed: 50 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,26 @@
5353
</span>
5454
</div>
5555
</tiny-form-item>
56-
<tiny-form-item v-if="pageSettingState.currentPageData.group !== 'publicPages'" prop="isDefault">
57-
<tiny-checkbox v-model="pageSettingState.currentPageData.isDefault">设为默认页</tiny-checkbox>
56+
<tiny-form-item
57+
v-if="pageSettingState.currentPageData.group !== 'publicPages' && !isFolder"
58+
label="设置默认跳转页"
59+
prop="isDefault"
60+
>
61+
<tiny-select
62+
v-model="state.defaultPageId"
63+
:options="state.childPageOp"
64+
placeholder="请选择默认跳转页"
65+
@change="changeDefaultPage"
66+
></tiny-select>
5867
</tiny-form-item>
5968
</tiny-form>
6069
</div>
6170
</template>
6271

6372
<script lang="jsx">
64-
import { ref, computed, watchEffect } from 'vue'
65-
import { Form, FormItem, Input, Select, Radio, Checkbox } from '@opentiny/vue'
73+
import { ref, computed, watchEffect, reactive } from 'vue'
74+
import { Form, FormItem, Input, Select, Radio } from '@opentiny/vue'
75+
import { iconFile } from '@opentiny/vue-icon'
6676
import { usePage } from '@opentiny/tiny-engine-meta-register'
6777
import { REGEXP_PAGE_NAME, REGEXP_FOLDER_NAME, REGEXP_ROUTE } from '@opentiny/tiny-engine-common/js/verification'
6878
@@ -72,8 +82,7 @@ export default {
7282
TinyFormItem: FormItem,
7383
TinyInput: Input,
7484
TinySelect: Select,
75-
TinyRadio: Radio,
76-
TinyCheckbox: Checkbox
85+
TinyRadio: Radio
7786
},
7887
props: {
7988
modelValue: {
@@ -86,7 +95,7 @@ export default {
8695
}
8796
},
8897
setup() {
89-
const { pageSettingState, changeTreeData, STATIC_PAGE_GROUP_ID } = usePage()
98+
const { pageSettingState, changeTreeData, STATIC_PAGE_GROUP_ID, getPageChildren, setDefaultPage } = usePage()
9099
const ROOT_ID = pageSettingState.ROOT_ID
91100
92101
const pageParentId = computed({
@@ -99,9 +108,40 @@ export default {
99108
})
100109
101110
const oldParentId = ref(pageParentId.value)
111+
const state = reactive({
112+
childPageList: [],
113+
childPageOp: [],
114+
defaultPageId: ''
115+
})
116+
117+
const setChildAndDefaultPage = async (id) => {
118+
if (pageSettingState.isNew) {
119+
state.childPageList = []
120+
state.childPageOp = []
121+
state.defaultPageId = ''
122+
} else {
123+
state.childPageList = await getPageChildren(id)
124+
if (state.childPageList?.length) {
125+
state.defaultPageId = state.childPageList?.find((item) => item.isDefault)?.id
126+
state.childPageOp = state.childPageList.map((item) => {
127+
return {
128+
value: item.id,
129+
label: item.name,
130+
icon: iconFile()
131+
}
132+
})
133+
setDefaultPage(state.childPageList, state.defaultPageId)
134+
}
135+
}
136+
}
137+
138+
const changeDefaultPage = () => {
139+
setDefaultPage(state.childPageList, state.defaultPageId)
140+
}
102141
103142
watchEffect(() => {
104143
oldParentId.value = pageSettingState.oldParentId
144+
setChildAndDefaultPage(pageSettingState.currentPageData?.id)
105145
})
106146
107147
const currentRoute = computed(() => {
@@ -242,7 +282,9 @@ export default {
242282
validGeneralForm,
243283
treeFolderOp,
244284
currentRoute,
245-
changeParentForderId
285+
changeParentForderId,
286+
state,
287+
changeDefaultPage
246288
}
247289
}
248290
}

packages/plugins/page/src/PageSetting.vue

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,11 +208,11 @@ export default {
208208
})
209209
}
210210
211-
const updatePage = (id, params) => {
211+
const updatePage = (id, params, isShowNotify = true) => {
212212
const routerChange = pageSettingState.currentPageDataCopy.route !== pageSettingState.currentPageData.route
213213
const isCurEditPage = pageState?.currentPage?.id === id
214214
215-
return handlePageUpdate(id, params, routerChange, isCurEditPage)
215+
return handlePageUpdate(id, params, routerChange, isCurEditPage, isShowNotify)
216216
}
217217
218218
const restorePage = (pageData) => {
@@ -273,6 +273,7 @@ export default {
273273
copyData.route = `${copyData.route}Copy`
274274
pageSettingState.currentPageData = copyData
275275
pageSettingState.currentPageDataCopy = extend(true, {}, copyData)
276+
pageSettingState.defaultPage = null
276277
}
277278
278279
const copyPage = () => {
@@ -291,6 +292,11 @@ export default {
291292
}
292293
}
293294
295+
const settingDefaultPage = () => {
296+
const params = { ...pageSettingState.defaultPage, isDefault: true }
297+
updatePage(pageSettingState.defaultPage?.id, params, false)
298+
}
299+
294300
const createHistoryMessage = () => {
295301
if (pageSettingState.isNew) {
296302
pageSettingState.currentPageData.message = 'Page auto save'
@@ -303,6 +309,7 @@ export default {
303309
const exec = () => {
304310
pageSettingState.currentPageData.message = state.historyMessage.trim() || 'Page auto save'
305311
editPage()
312+
settingDefaultPage()
306313
state.historyMessage = ''
307314
}
308315

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ const pageSettingState = reactive({
6565
isNew: false,
6666
ROOT_ID: '0', // 根节点ID
6767
updateTreeData: null,
68-
treeDataMapping: {}
68+
treeDataMapping: {},
69+
defaultPage: null // 当前页设置的默认页
6970
})
7071

7172
const isTemporaryPage = reactive({
@@ -193,6 +194,7 @@ const resetPageData = () => {
193194
pageSettingState.currentPageData = {}
194195
pageSettingState.currentPageDataCopy = {}
195196
pageSettingState.oldParentId = null
197+
pageSettingState.defaultPage = null
196198
}
197199

198200
// 判断当前页面内容是否有修改
@@ -488,6 +490,12 @@ const getFamily = async (previewParams) => {
488490
return familyPages
489491
}
490492

493+
const setDefaultPage = (childPageList, id) => {
494+
if (childPageList?.length && id) {
495+
pageSettingState.defaultPage = childPageList.find((item) => item.id === id)
496+
}
497+
}
498+
491499
export default () => {
492500
return {
493501
getDefaultPage,
@@ -507,6 +515,7 @@ export default () => {
507515
getFamily,
508516
getPageChildren,
509517
STATIC_PAGE_GROUP_ID,
510-
COMMON_PAGE_GROUP_ID
518+
COMMON_PAGE_GROUP_ID,
519+
setDefaultPage
511520
}
512521
}

0 commit comments

Comments
 (0)