<template>
<block-history-list :history="list" @preview="previewHistory" @restore="restoreHistory"></block-history-list>
</template>
<script lang="ts">
/* metaService: engine.plugins.appmanage.PageHistory */
import { ref, watchEffect } from 'vue'
import { BlockHistoryList } from '@opentiny/tiny-engine-common'
import { previewPage } from '@opentiny/tiny-engine-common/js/preview'
import { usePage, useBlock, useModal, getMetaApi, META_SERVICE } from '@opentiny/tiny-engine-meta-register'
import { fetchPageHistory } from './http'
export default {
components: {
BlockHistoryList
},
props: {
curPageData: {
type: Object,
default: () => ({})
}
},
emits: ['restorePage'],
setup(props, { emit }) {
const { pageSettingState, getFamily } = usePage()
const { getDateFromNow } = useBlock()
const { confirm } = useModal()
const list = ref([])
const getHistoryList = (pageId) => {
const { id, version } = getMetaApi(META_SERVICE.GlobalService).getBaseInfo()
const params = version ? `&app=${id}&version=${version}` : ''
if (pageId) {
fetchPageHistory(pageId + params).then((data) => {
if (!data) {
return
}
data.forEach((item) => {
item.backupTitle = item.message
item.backupTime = getDateFromNow(new Date(item.time))
})
list.value = data.reverse()
})
} else {
list.value = []
}
}
watchEffect(() => {
const pageId = pageSettingState.currentPageData?.id || ''
getHistoryList(pageId)
})
const previewHistory = async (item) => {
if (item) {
const params = {
...item,
id: Number(item.page),
history: item.id,
previewType: 'page'
}
params.ancestors = await getFamily(params)
previewPage(params, true)
}
}
const restoreHistory = (item) => {
confirm({
title: '提示',
message: '您即将还原历史页面,是否继续还原?',
exec: () => {
emit('restorePage', item)
}
})
}
return {
list,
previewHistory,
restoreHistory
}
}
}
</script>