|
|
|
@ -262,7 +262,7 @@ import WordTable from './components/WordTable.vue'; |
|
|
|
|
|
|
|
const route = useRoute(); |
|
|
|
const router = useRouter(); |
|
|
|
const { createMessage } = useMessage(); |
|
|
|
const { createMessage, createConfirm } = useMessage(); |
|
|
|
|
|
|
|
// 课程页面列表 |
|
|
|
const pageList = ref([]); |
|
|
|
@ -498,50 +498,59 @@ function editPage(page: any) { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 删除页面 |
|
|
|
* 删除页面(二次确认) |
|
|
|
*/ |
|
|
|
async function deletePage(page: any) { |
|
|
|
if (!page.id) { |
|
|
|
// 如果是新页面(未保存),直接从列表中移除 |
|
|
|
const index = pageList.value.findIndex(p => p === page); |
|
|
|
if (index > -1) { |
|
|
|
pageList.value.splice(index, 1); |
|
|
|
// 重新设置排序值 |
|
|
|
updatePageSortOrder(); |
|
|
|
// 如果删除的是当前页面,选择其他页面 |
|
|
|
if (currentPageId.value === page.id || currentPageId.value === '') { |
|
|
|
if (pageList.value.length > 0) { |
|
|
|
selectPage(pageList.value[0]); |
|
|
|
} else { |
|
|
|
// 没有页面了,创建新页面 |
|
|
|
handleAddPage(); |
|
|
|
createConfirm({ |
|
|
|
iconType: 'warning', |
|
|
|
title: '确认删除', |
|
|
|
content: '删除后不可恢复,是否继续?', |
|
|
|
okText: '删除', |
|
|
|
cancelText: '取消', |
|
|
|
onOk: async () => { |
|
|
|
if (!page.id) { |
|
|
|
// 如果是新页面(未保存),直接从列表中移除 |
|
|
|
const index = pageList.value.findIndex(p => p === page); |
|
|
|
if (index > -1) { |
|
|
|
pageList.value.splice(index, 1); |
|
|
|
// 重新设置排序值 |
|
|
|
updatePageSortOrder(); |
|
|
|
// 如果删除的是当前页面,选择其他页面 |
|
|
|
if (currentPageId.value === page.id || currentPageId.value === '') { |
|
|
|
if (pageList.value.length > 0) { |
|
|
|
selectPage(pageList.value[0]); |
|
|
|
} else { |
|
|
|
// 没有页面了,创建新页面 |
|
|
|
await handleAddPage(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
try { |
|
|
|
await deleteOne({ id: page.id }, () => { |
|
|
|
createMessage.success('删除成功'); |
|
|
|
// 重新加载页面列表 |
|
|
|
loadPageList(); |
|
|
|
// 如果删除的是当前页面,选择其他页面 |
|
|
|
if (currentPageId.value === page.id) { |
|
|
|
if (pageList.value.length > 1) { |
|
|
|
const index = pageList.value.findIndex(p => p.id === page.id); |
|
|
|
const nextPage = pageList.value[index === 0 ? 1 : index - 1]; |
|
|
|
selectPage(nextPage); |
|
|
|
} else { |
|
|
|
// 没有其他页面了,创建新页面 |
|
|
|
handleAddPage(); |
|
|
|
} |
|
|
|
try { |
|
|
|
await deleteOne({ id: page.id }, () => { |
|
|
|
createMessage.success('删除成功'); |
|
|
|
// 重新加载页面列表 |
|
|
|
loadPageList(); |
|
|
|
// 如果删除的是当前页面,选择其他页面 |
|
|
|
if (currentPageId.value === page.id) { |
|
|
|
if (pageList.value.length > 1) { |
|
|
|
const index = pageList.value.findIndex(p => p.id === page.id); |
|
|
|
const nextPage = pageList.value[index === 0 ? 1 : index - 1]; |
|
|
|
selectPage(nextPage); |
|
|
|
} else { |
|
|
|
// 没有其他页面了,创建新页面 |
|
|
|
handleAddPage(); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (error) { |
|
|
|
console.error('删除页面失败:', error); |
|
|
|
createMessage.error('删除失败'); |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (error) { |
|
|
|
console.error('删除页面失败:', error); |
|
|
|
createMessage.error('删除失败'); |
|
|
|
} |
|
|
|
}, |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@ -887,8 +896,10 @@ function getPageTypeName(type: string) { |
|
|
|
.page-item { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
min-width: 160px; |
|
|
|
width: 160px; |
|
|
|
/* 自适应内容宽度,保留一个合理的最小宽度 */ |
|
|
|
flex: 0 0 auto; |
|
|
|
width: auto; |
|
|
|
min-width: 120px; |
|
|
|
padding: 8px; |
|
|
|
background: #fff; |
|
|
|
border: 1px solid #d9d9d9; |
|
|
|
@ -933,9 +944,8 @@ function getPageTypeName(type: string) { |
|
|
|
font-weight: 500; |
|
|
|
color: #262626; |
|
|
|
margin-bottom: 6px; |
|
|
|
/* 保持单行显示,允许容器宽度随内容扩展 */ |
|
|
|
white-space: nowrap; |
|
|
|
overflow: hidden; |
|
|
|
text-overflow: ellipsis; |
|
|
|
} |
|
|
|
|
|
|
|
.page-meta { |
|
|
|
@ -954,6 +964,8 @@ function getPageTypeName(type: string) { |
|
|
|
display: flex; |
|
|
|
justify-content: center; |
|
|
|
gap: 8px; |
|
|
|
/* 防止操作按钮挤压内容,保持自身宽度 */ |
|
|
|
flex-shrink: 0; |
|
|
|
} |
|
|
|
|
|
|
|
.empty-page-list { |
|
|
|
|