refactor: 将多处Drawer组件替换为Modal组件
统一页面弹窗组件命名,将所有Drawer类型的弹窗组件替换为Modal命名规范,修正了注释中的抽屉描述为弹窗,调整了对应组件导入路径和名称
This commit is contained in:
parent
b7ceeb11f3
commit
eb6858e8a8
@ -318,8 +318,8 @@
|
|||||||
@close="handleQrLoginClose"
|
@close="handleQrLoginClose"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- Webhook 测试抽屉 -->
|
<!-- Webhook 测试弹窗 -->
|
||||||
<WebhookTestDrawer
|
<WebhookTestModal
|
||||||
v-model:open="webhookDrawerVisible"
|
v-model:open="webhookDrawerVisible"
|
||||||
:channel-type="channelType"
|
:channel-type="channelType"
|
||||||
:account-id="accountId"
|
:account-id="accountId"
|
||||||
@ -375,7 +375,7 @@ import LoadingState from '@/components/external-systems/common/LoadingState.vue'
|
|||||||
import EmptyState from '@/components/external-systems/common/EmptyState.vue'
|
import EmptyState from '@/components/external-systems/common/EmptyState.vue'
|
||||||
import StatusTag from '@/components/external-systems/common/StatusTag.vue'
|
import StatusTag from '@/components/external-systems/common/StatusTag.vue'
|
||||||
import QrLoginModal from '@/components/channels/access-ops/QrLoginModal.vue'
|
import QrLoginModal from '@/components/channels/access-ops/QrLoginModal.vue'
|
||||||
import WebhookTestDrawer from '@/components/channels/access-ops/WebhookTestDrawer.vue'
|
import WebhookTestModal from '@/components/channels/access-ops/WebhookTestModal.vue'
|
||||||
import CloneAccountModal from '@/components/channels/access-ops/CloneAccountModal.vue'
|
import CloneAccountModal from '@/components/channels/access-ops/CloneAccountModal.vue'
|
||||||
import DeleteAccountModal from '@/components/channels/access-ops/DeleteAccountModal.vue'
|
import DeleteAccountModal from '@/components/channels/access-ops/DeleteAccountModal.vue'
|
||||||
import BasicInfoTab from './account-detail/BasicInfoTab.vue'
|
import BasicInfoTab from './account-detail/BasicInfoTab.vue'
|
||||||
|
|||||||
@ -423,8 +423,8 @@
|
|||||||
<p>该操作不可逆,确认继续?</p>
|
<p>该操作不可逆,确认继续?</p>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
||||||
<!-- Webhook 测试抽屉(原型 §20 复用) -->
|
<!-- Webhook 测试弹窗(原型 §20 复用) -->
|
||||||
<WebhookTestDrawer
|
<WebhookTestModal
|
||||||
:open="webhookTestVisible"
|
:open="webhookTestVisible"
|
||||||
:channel-type="wizard.channelType.value || ''"
|
:channel-type="wizard.channelType.value || ''"
|
||||||
@update:open="webhookTestVisible = $event"
|
@update:open="webhookTestVisible = $event"
|
||||||
@ -441,7 +441,7 @@ import { X, Info, ShieldCheck, CheckCircle2, Webhook } from 'lucide-vue-next'
|
|||||||
import { useChannelWizard } from '@/composables/channels/useChannelWizard'
|
import { useChannelWizard } from '@/composables/channels/useChannelWizard'
|
||||||
import { useAgentStore } from '@/stores/agent'
|
import { useAgentStore } from '@/stores/agent'
|
||||||
import { MATCH_SOURCE_OPTIONS, MATCH_SOURCE_META } from '@/composables/channels/constants'
|
import { MATCH_SOURCE_OPTIONS, MATCH_SOURCE_META } from '@/composables/channels/constants'
|
||||||
import WebhookTestDrawer from './WebhookTestDrawer.vue'
|
import WebhookTestModal from './WebhookTestModal.vue'
|
||||||
import WizardQrLogin from './WizardQrLogin.vue'
|
import WizardQrLogin from './WizardQrLogin.vue'
|
||||||
|
|
||||||
const matchSourceOptions = MATCH_SOURCE_OPTIONS
|
const matchSourceOptions = MATCH_SOURCE_OPTIONS
|
||||||
|
|||||||
@ -207,8 +207,8 @@
|
|||||||
@success="fetchList"
|
@success="fetchList"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 测试解析抽屉 -->
|
<!-- 测试解析弹窗 -->
|
||||||
<RouteBindingResolveDrawer
|
<RouteBindingResolveModal
|
||||||
v-model:open="detailVisible"
|
v-model:open="detailVisible"
|
||||||
:initial-record="resolveRecord"
|
:initial-record="resolveRecord"
|
||||||
/>
|
/>
|
||||||
@ -232,7 +232,7 @@ import {
|
|||||||
import PageContainer from '@/components/channels/layout/PageContainer.vue'
|
import PageContainer from '@/components/channels/layout/PageContainer.vue'
|
||||||
import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
||||||
import RouteBindingFormModal from './RouteBindingFormModal.vue'
|
import RouteBindingFormModal from './RouteBindingFormModal.vue'
|
||||||
import RouteBindingResolveDrawer from './RouteBindingResolveDrawer.vue'
|
import RouteBindingResolveModal from './RouteBindingResolveModal.vue'
|
||||||
import { useRouteBinding } from '@/composables/channels/useRouteBinding'
|
import { useRouteBinding } from '@/composables/channels/useRouteBinding'
|
||||||
import { useChannelTypes } from '@/composables/channels/useChannelTypes'
|
import { useChannelTypes } from '@/composables/channels/useChannelTypes'
|
||||||
import {
|
import {
|
||||||
|
|||||||
@ -385,7 +385,7 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 重发消息抽屉 -->
|
<!-- 重发消息抽屉 -->
|
||||||
<MessageResendDrawer
|
<MessageResendModal
|
||||||
:open="resendVisible"
|
:open="resendVisible"
|
||||||
:message="resendContext"
|
:message="resendContext"
|
||||||
:loading="resending"
|
:loading="resending"
|
||||||
@ -406,7 +406,7 @@ import PageContainer from '@/components/channels/layout/PageContainer.vue'
|
|||||||
import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
||||||
import PaginationBar from '@/components/external-systems/common/PaginationBar.vue'
|
import PaginationBar from '@/components/external-systems/common/PaginationBar.vue'
|
||||||
import MessageDetailDrawer from './MessageDetailDrawer.vue'
|
import MessageDetailDrawer from './MessageDetailDrawer.vue'
|
||||||
import MessageResendDrawer from './MessageResendDrawer.vue'
|
import MessageResendModal from './MessageResendModal.vue'
|
||||||
import { useMessage } from '@/composables/channels/useMessage'
|
import { useMessage } from '@/composables/channels/useMessage'
|
||||||
import { formatTime } from '@/composables/channels/utils'
|
import { formatTime } from '@/composables/channels/utils'
|
||||||
import { useChannelTypes } from '@/composables/channels/useChannelTypes'
|
import { useChannelTypes } from '@/composables/channels/useChannelTypes'
|
||||||
@ -467,7 +467,7 @@ const hasSearched = ref(false) // 是否已发起过搜索(用于空状态文
|
|||||||
// 详情抽屉
|
// 详情抽屉
|
||||||
const detailVisible = ref(false)
|
const detailVisible = ref(false)
|
||||||
const detailMessageId = ref('')
|
const detailMessageId = ref('')
|
||||||
// 重发抽屉
|
// 重发弹窗
|
||||||
const resendVisible = ref(false)
|
const resendVisible = ref(false)
|
||||||
const resendContext = ref(null) // { message_id, channel_type, conversation_id, content }
|
const resendContext = ref(null) // { message_id, channel_type, conversation_id, content }
|
||||||
// 批量撤回
|
// 批量撤回
|
||||||
@ -732,7 +732,7 @@ function handleDetailResend() {
|
|||||||
resendVisible.value = true
|
resendVisible.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===== 重发抽屉 =====
|
// ===== 重发弹窗 =====
|
||||||
async function handleResendSubmit(payload) {
|
async function handleResendSubmit(payload) {
|
||||||
const ctx = resendContext.value
|
const ctx = resendContext.value
|
||||||
if (!ctx?.channel_type || !ctx?.message_id) {
|
if (!ctx?.channel_type || !ctx?.message_id) {
|
||||||
|
|||||||
@ -625,8 +625,8 @@
|
|||||||
@reload="reloadDetail"
|
@reload="reloadDetail"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 重试策略抽屉 -->
|
<!-- 重试策略弹窗 -->
|
||||||
<OutboxRetryPolicyDrawer
|
<OutboxRetryPolicyModal
|
||||||
:visible="policyVisible"
|
:visible="policyVisible"
|
||||||
:policy="policy"
|
:policy="policy"
|
||||||
:loading="policyLoading"
|
:loading="policyLoading"
|
||||||
@ -728,7 +728,7 @@ import {
|
|||||||
import PageContainer from '@/components/channels/layout/PageContainer.vue'
|
import PageContainer from '@/components/channels/layout/PageContainer.vue'
|
||||||
import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
||||||
import OutboxMessageDetailDrawer from './OutboxMessageDetailDrawer.vue'
|
import OutboxMessageDetailDrawer from './OutboxMessageDetailDrawer.vue'
|
||||||
import OutboxRetryPolicyDrawer from './OutboxRetryPolicyDrawer.vue'
|
import OutboxRetryPolicyModal from './OutboxRetryPolicyModal.vue'
|
||||||
import { useOutbox } from '@/composables/channels/useOutbox'
|
import { useOutbox } from '@/composables/channels/useOutbox'
|
||||||
import { useThemeStore } from '@/stores/theme'
|
import { useThemeStore } from '@/stores/theme'
|
||||||
import { useChannelTypes } from '@/composables/channels/useChannelTypes'
|
import { useChannelTypes } from '@/composables/channels/useChannelTypes'
|
||||||
@ -1514,7 +1514,7 @@ function downloadExport(res) {
|
|||||||
URL.revokeObjectURL(url)
|
URL.revokeObjectURL(url)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===== 重试策略抽屉 =====
|
// ===== 重试策略弹窗 =====
|
||||||
const policyVisible = ref(false)
|
const policyVisible = ref(false)
|
||||||
|
|
||||||
function openPolicyDrawer() {
|
function openPolicyDrawer() {
|
||||||
|
|||||||
@ -124,7 +124,7 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 重发 Drawer -->
|
<!-- 重发 Drawer -->
|
||||||
<MessageResendDrawer
|
<MessageResendModal
|
||||||
v-model:open="resendVisible"
|
v-model:open="resendVisible"
|
||||||
:message="resendMessageData"
|
:message="resendMessageData"
|
||||||
:loading="operationLoading"
|
:loading="operationLoading"
|
||||||
@ -179,7 +179,7 @@ import SessionTransferModal from './SessionTransferModal.vue'
|
|||||||
import SessionMergeModal from './SessionMergeModal.vue'
|
import SessionMergeModal from './SessionMergeModal.vue'
|
||||||
import SessionBatchCloseModal from './SessionBatchCloseModal.vue'
|
import SessionBatchCloseModal from './SessionBatchCloseModal.vue'
|
||||||
import SessionBindUserModal from './SessionBindUserModal.vue'
|
import SessionBindUserModal from './SessionBindUserModal.vue'
|
||||||
import MessageResendDrawer from './MessageResendDrawer.vue'
|
import MessageResendModal from './MessageResendModal.vue'
|
||||||
import MessageSendModal from './MessageSendModal.vue'
|
import MessageSendModal from './MessageSendModal.vue'
|
||||||
import { useChannelSessions } from '@/composables/channels/useChannelSessions'
|
import { useChannelSessions } from '@/composables/channels/useChannelSessions'
|
||||||
import { useChannelEvents } from '@/composables/channels/useChannelEvents'
|
import { useChannelEvents } from '@/composables/channels/useChannelEvents'
|
||||||
|
|||||||
@ -229,7 +229,7 @@ export const BATCH_LIMIT = 100
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 统计抽屉 -->
|
<!-- 统计抽屉 -->
|
||||||
<ContentReviewStatsDrawer
|
<ContentReviewStatsModal
|
||||||
:visible="statsDrawerVisible"
|
:visible="statsDrawerVisible"
|
||||||
:stats="stats"
|
:stats="stats"
|
||||||
:loading="statsLoading"
|
:loading="statsLoading"
|
||||||
@ -293,7 +293,7 @@ import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
|||||||
import ContentReviewPreviewModal from './ContentReviewPreviewModal.vue'
|
import ContentReviewPreviewModal from './ContentReviewPreviewModal.vue'
|
||||||
import ContentReviewBatchDecisionModal from './ContentReviewBatchDecisionModal.vue'
|
import ContentReviewBatchDecisionModal from './ContentReviewBatchDecisionModal.vue'
|
||||||
import ContentReviewDetailDrawer from './ContentReviewDetailDrawer.vue'
|
import ContentReviewDetailDrawer from './ContentReviewDetailDrawer.vue'
|
||||||
import ContentReviewStatsDrawer from './ContentReviewStatsDrawer.vue'
|
import ContentReviewStatsModal from './ContentReviewStatsModal.vue'
|
||||||
import { useContentReview } from '@/composables/channels/useContentReview'
|
import { useContentReview } from '@/composables/channels/useContentReview'
|
||||||
import { listReviewHistoryApi } from '@/apis/channels/content_review_api'
|
import { listReviewHistoryApi } from '@/apis/channels/content_review_api'
|
||||||
import { unwrap } from '@/composables/channels/utils'
|
import { unwrap } from '@/composables/channels/utils'
|
||||||
@ -716,7 +716,7 @@ function downloadErrorLog() {
|
|||||||
URL.revokeObjectURL(url)
|
URL.revokeObjectURL(url)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===== 统计抽屉 =====
|
// ===== 统计弹窗 =====
|
||||||
function openStatsDrawer() {
|
function openStatsDrawer() {
|
||||||
statsDrawerVisible.value = true
|
statsDrawerVisible.value = true
|
||||||
loadStats({ granularity: 'day' })
|
loadStats({ granularity: 'day' })
|
||||||
|
|||||||
@ -272,8 +272,8 @@
|
|||||||
@add-to-allowlist="handleAddToAllowlist"
|
@add-to-allowlist="handleAddToAllowlist"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 统计抽屉 -->
|
<!-- 统计弹窗 -->
|
||||||
<PairingStatsDrawer
|
<PairingStatsModal
|
||||||
:visible="statsDrawerVisible"
|
:visible="statsDrawerVisible"
|
||||||
:stats="stats"
|
:stats="stats"
|
||||||
:loading="statsLoading"
|
:loading="statsLoading"
|
||||||
@ -351,7 +351,7 @@ import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
|||||||
import PairingCreateModal from './PairingCreateModal.vue'
|
import PairingCreateModal from './PairingCreateModal.vue'
|
||||||
import PairingCleanExpiredModal from './PairingCleanExpiredModal.vue'
|
import PairingCleanExpiredModal from './PairingCleanExpiredModal.vue'
|
||||||
import PairingDetailDrawer from './PairingDetailDrawer.vue'
|
import PairingDetailDrawer from './PairingDetailDrawer.vue'
|
||||||
import PairingStatsDrawer from './PairingStatsDrawer.vue'
|
import PairingStatsModal from './PairingStatsModal.vue'
|
||||||
import PairingReasonModal from './PairingReasonModal.vue'
|
import PairingReasonModal from './PairingReasonModal.vue'
|
||||||
import { usePairingApproval } from '@/composables/channels/usePairingApproval'
|
import { usePairingApproval } from '@/composables/channels/usePairingApproval'
|
||||||
import { countPairingsApi } from '@/apis/channels/pairing_api'
|
import { countPairingsApi } from '@/apis/channels/pairing_api'
|
||||||
@ -918,7 +918,7 @@ function downloadErrorLog() {
|
|||||||
URL.revokeObjectURL(url)
|
URL.revokeObjectURL(url)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===== 统计抽屉 =====
|
// ===== 统计弹窗 =====
|
||||||
let statsGranularity = 'day'
|
let statsGranularity = 'day'
|
||||||
|
|
||||||
function openStatsDrawer() {
|
function openStatsDrawer() {
|
||||||
|
|||||||
@ -158,8 +158,8 @@
|
|||||||
@submit="handleExportSubmit"
|
@submit="handleExportSubmit"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 统计抽屉 -->
|
<!-- 统计弹窗 -->
|
||||||
<AuditLogStatsDrawer
|
<AuditLogStatsModal
|
||||||
:visible="statsVisible"
|
:visible="statsVisible"
|
||||||
:stats="stats"
|
:stats="stats"
|
||||||
:loading="statsLoading"
|
:loading="statsLoading"
|
||||||
@ -201,7 +201,7 @@ import PageContainer from '@/components/channels/layout/PageContainer.vue'
|
|||||||
import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
||||||
import AuditLogDetailDrawer from './AuditLogDetailDrawer.vue'
|
import AuditLogDetailDrawer from './AuditLogDetailDrawer.vue'
|
||||||
import AuditLogExportModal from './AuditLogExportModal.vue'
|
import AuditLogExportModal from './AuditLogExportModal.vue'
|
||||||
import AuditLogStatsDrawer from './AuditLogStatsDrawer.vue'
|
import AuditLogStatsModal from './AuditLogStatsModal.vue'
|
||||||
import RetentionPolicyModal from './RetentionPolicyModal.vue'
|
import RetentionPolicyModal from './RetentionPolicyModal.vue'
|
||||||
import OperationTypesModal from './OperationTypesModal.vue'
|
import OperationTypesModal from './OperationTypesModal.vue'
|
||||||
import { useAuditLog } from '@/composables/channels/useAuditLog'
|
import { useAuditLog } from '@/composables/channels/useAuditLog'
|
||||||
@ -323,7 +323,7 @@ function handleOpenStats() {
|
|||||||
statsVisible.value = true
|
statsVisible.value = true
|
||||||
// 打开时立即拉取一次全量统计
|
// 打开时立即拉取一次全量统计
|
||||||
fetchStats({}).catch(() => {
|
fetchStats({}).catch(() => {
|
||||||
// 错误已在抽屉内展示
|
// 错误已在弹窗内展示
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -191,7 +191,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Schema 预览抽屉(§4.1) -->
|
<!-- Schema 预览抽屉(§4.1) -->
|
||||||
<ConfigSchemaDrawer
|
<ConfigSchemaModal
|
||||||
:open="schemaDrawerVisible"
|
:open="schemaDrawerVisible"
|
||||||
:loading="schemaLoading"
|
:loading="schemaLoading"
|
||||||
:schema="schema"
|
:schema="schema"
|
||||||
@ -209,8 +209,8 @@
|
|||||||
@cancel="handleEditCancel"
|
@cancel="handleEditCancel"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 批量更新抽屉(§4.3) -->
|
<!-- 批量更新弹窗(§4.3) -->
|
||||||
<ConfigBatchUpdateDrawer
|
<ConfigBatchUpdateModal
|
||||||
:open="batchVisible"
|
:open="batchVisible"
|
||||||
:submitting="batchSubmitting"
|
:submitting="batchSubmitting"
|
||||||
:scope="scope"
|
:scope="scope"
|
||||||
@ -221,8 +221,8 @@
|
|||||||
@close="handleBatchClose"
|
@close="handleBatchClose"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 导入配置抽屉(§4.4) -->
|
<!-- 导入配置弹窗(§4.4) -->
|
||||||
<ConfigImportDrawer
|
<ConfigImportModal
|
||||||
:open="importVisible"
|
:open="importVisible"
|
||||||
:submitting="importSubmitting"
|
:submitting="importSubmitting"
|
||||||
:scope="scope"
|
:scope="scope"
|
||||||
@ -266,10 +266,10 @@ import { RefreshCw, Eye, Download, Upload, ListChecks, Copy, ChevronDown } from
|
|||||||
import PageContainer from '@/components/channels/layout/PageContainer.vue'
|
import PageContainer from '@/components/channels/layout/PageContainer.vue'
|
||||||
import PermissionButton from '@/components/channels/common/PermissionButton.vue'
|
import PermissionButton from '@/components/channels/common/PermissionButton.vue'
|
||||||
import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
import ErrorRetryAlert from '@/components/channels/common/ErrorRetryAlert.vue'
|
||||||
import ConfigSchemaDrawer from './ConfigSchemaDrawer.vue'
|
import ConfigSchemaModal from './ConfigSchemaModal.vue'
|
||||||
import ConfigEditModal from './ConfigEditModal.vue'
|
import ConfigEditModal from './ConfigEditModal.vue'
|
||||||
import ConfigBatchUpdateDrawer from './ConfigBatchUpdateDrawer.vue'
|
import ConfigBatchUpdateModal from './ConfigBatchUpdateModal.vue'
|
||||||
import ConfigImportDrawer from './ConfigImportDrawer.vue'
|
import ConfigImportModal from './ConfigImportModal.vue'
|
||||||
import ConfigRollbackModal from './ConfigRollbackModal.vue'
|
import ConfigRollbackModal from './ConfigRollbackModal.vue'
|
||||||
import ConfigHistoryPanel from './ConfigHistoryPanel.vue'
|
import ConfigHistoryPanel from './ConfigHistoryPanel.vue'
|
||||||
import { useUserStore } from '@/stores/user'
|
import { useUserStore } from '@/stores/user'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user