新增: 全局对话框服务 AppDialog,Promise 风格 appAlert/appConfirm/appPrompt 替代原生弹窗

This commit is contained in:
lxy
2026-08-25 12:30:12 +08:00
parent 0907a104cf
commit 8eef4606c5
9 changed files with 253 additions and 25 deletions
+4 -3
View File
@@ -9,6 +9,7 @@ import { store } from '../../core/store'
import { generate, polish, chat, beautifyPage, isConfigured } from '../../core/ai'
import { elementTypes } from '../../core/sample'
import { renderMd } from '../../core/markdown'
import { appPrompt, appConfirm } from '../../core/dialog'
import OutlinePanel from './OutlinePanel.vue'
const emit = defineEmits<{
@@ -292,7 +293,7 @@ function onStop() {
/* ---------- 生成整套 ---------- */
async function onGenerate() {
if (busy.value) return
const topic = inputText.value.trim() || prompt('请输入演示主题,例如「远程办公的兴起与未来」')
const topic = inputText.value.trim() || await appPrompt('生成整套', { message: '请输入演示主题', placeholder: '例如「远程办公的兴起与未来」' })
if (!topic) return
if (!isConfigured()) { toast('请先配置 API Key'); emit('open-settings'); return }
inputText.value = ''
@@ -345,9 +346,9 @@ async function onPolish() {
}
/* ---------- 清空 ---------- */
function onClear() {
async function onClear() {
if (!chatLog.value.length) { toast('对话已是空的'); return }
if (!confirm('清空当前 PPT 的对话记录?')) return
if (!(await appConfirm('清空对话记录?', '将清空当前 PPT 的对话记录', { danger: true, okText: '清空' }))) return
chatLog.value = []
store.clearChat(currentChatId.value)
renderMsgs.value = []