diff --git a/apps/frontend/src/components/DownloadConfirmModal/index.vue b/apps/frontend/src/components/DownloadConfirmModal/index.vue new file mode 100644 index 0000000..15f52b1 --- /dev/null +++ b/apps/frontend/src/components/DownloadConfirmModal/index.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/apps/frontend/src/components/HeaderComponent/HeaderComponent.vue b/apps/frontend/src/components/HeaderComponent/HeaderComponent.vue index d9c2bd7..34871ef 100644 --- a/apps/frontend/src/components/HeaderComponent/HeaderComponent.vue +++ b/apps/frontend/src/components/HeaderComponent/HeaderComponent.vue @@ -7,7 +7,6 @@ -

{{ projectName }}

diff --git a/apps/frontend/src/locales/index.js b/apps/frontend/src/locales/index.js index 2bfeae4..a97f793 100644 --- a/apps/frontend/src/locales/index.js +++ b/apps/frontend/src/locales/index.js @@ -147,7 +147,11 @@ export default { download: '下载', delete: '删除', purchase: '购买', - loadingText: '图片加载中...' + loadingText: '图片加载中...', + downloadConfirmTitle: '下载确认', + downloadConfirmMessage: '用于创建的原始图片可能存在版权限制,这些限制可能限制或禁止商业使用。如果您公开分享此作品,请注明由"印你"创作', + confirm: '确定', + cancel: '取消' }, addModal: { title: '添加内容', @@ -553,7 +557,7 @@ export default { verificationCodePlaceholder: '请输入6位验证码', confirmBind: '确认绑定', deleteConfirmTitle: '删除确认', - deleteConfirmContent: '您确定要删除智能体 "{agentName}" 吗?', + deleteConfirmContent: '您确定要删除智能体吗?', deleteWarning: '此操作不可恢复,所有相关数据将被永久删除。', devices: '台设备' }, @@ -1209,6 +1213,7 @@ export default { confirm: '确认', yes: '是', no: '否', + delete: '删除', cancel: '取消', generate: '生成', back: '返回', @@ -1768,7 +1773,11 @@ export default { download: 'Save', delete: 'Remove', purchase: 'Purchase', - loadingText: 'Loading image...' + loadingText: 'Loading image...', + downloadConfirmTitle: 'Download Confirmation', + downloadConfirmMessage: 'The original images used for creation may be subject to copyright restrictions, which may limit or prohibit commercial use. If you share this work publicly, please credit "印你" as the creator', + confirm: 'Confirm', + cancel: 'Cancel' }, addModal: { title: 'Add Content', @@ -2254,7 +2263,7 @@ export default { verificationCodePlaceholder: 'Please enter 6-digit verification code', confirmBind: 'Confirm Bind', deleteConfirmTitle: 'Delete Confirmation', - deleteConfirmContent: 'Are you sure you want to delete agent "{agentName}"?', + deleteConfirmContent: 'Are you sure you want to delete agent?', deleteWarning: 'This operation cannot be undone, all related data will be permanently deleted.', devices: 'devices' }, @@ -2918,6 +2927,7 @@ export default { back: 'Back', save: 'Save', create: 'Create', + delete: 'Delete', search: 'Search', reset: 'Reset', selectStartTime: 'Select Start Time', diff --git a/apps/frontend/src/views/AgentManagement.vue b/apps/frontend/src/views/AgentManagement.vue index 19a66e4..27855cf 100644 --- a/apps/frontend/src/views/AgentManagement.vue +++ b/apps/frontend/src/views/AgentManagement.vue @@ -109,14 +109,14 @@ center >
-

{{ t('agentManagement.deleteConfirmContent', { agentName: currentAgentName.value }) }}

+

{{ t('agentManagement.deleteConfirmContent') }}

{{ t('agentManagement.deleteWarning') }}

diff --git a/apps/frontend/src/views/CreationWorkspace/CreationWorkspace.vue b/apps/frontend/src/views/CreationWorkspace/CreationWorkspace.vue index a10cbd7..fdae661 100644 --- a/apps/frontend/src/views/CreationWorkspace/CreationWorkspace.vue +++ b/apps/frontend/src/views/CreationWorkspace/CreationWorkspace.vue @@ -147,7 +147,6 @@ import { Plus as PlusIcon, Folder as FolderIcon, Edit as EditIcon, View as ViewI import SeriesSelector from '../../components/SeriesSelector.vue' import {Project} from '../Project/index' import { dateUtils } from '@deotaland/utils' - const { formatDate } = dateUtils const PluginProject = new Project() const { t } = useI18n() diff --git a/apps/frontend/src/views/ModernHome/ModernHome.vue b/apps/frontend/src/views/ModernHome/ModernHome.vue index 5bbc99a..2a7f939 100644 --- a/apps/frontend/src/views/ModernHome/ModernHome.vue +++ b/apps/frontend/src/views/ModernHome/ModernHome.vue @@ -21,7 +21,7 @@ type="primary" size="large" class="action-btn primary-btn create-btn-large" - @click="navigateToFeature({ path: `/project/new/Done` })"> + @click="showSeriesSelector = true"> {{ t('home.welcome.startCreating') }}
@@ -103,6 +103,12 @@
+ +
@@ -110,6 +116,7 @@ import { computed, onMounted } from 'vue' import { useRouter } from 'vue-router' import { useI18n } from 'vue-i18n' +import SeriesSelector from '../../components/SeriesSelector.vue' import { useAuthStore } from '@/stores/auth' import CountUp from 'vue-countup-v3' import { ModernHome } from './index.js' @@ -132,7 +139,20 @@ import { Picture, Cpu } from '@element-plus/icons-vue' - +// 处理系列选择取消 +const handleSeriesCancel = () => { + showSeriesSelector.value = false +} +const createNewProject = (series) => { + router.push(`/project/new/${series.name}`) +} +// 处理系列选择确认 +const handleSeriesConfirm = (series) => { + showSeriesSelector.value = false + createNewProject(series) +} +// 系列选择弹窗状态 +const showSeriesSelector = ref(false) const { t } = useI18n() const router = useRouter() const authStore = useAuthStore() diff --git a/apps/frontend/src/views/Project/CreateProject.vue b/apps/frontend/src/views/Project/CreateProject.vue index 21fb5a1..954299f 100644 --- a/apps/frontend/src/views/Project/CreateProject.vue +++ b/apps/frontend/src/views/Project/CreateProject.vue @@ -129,6 +129,12 @@ :initialIndex="currentImageIndex" @close="showImagePreview = false" /> + + { } //下载图片 const downloadImage = async (url) => { + pendingDownloadUrl.value = url; + showDownloadConfirm.value = true; +} + +const handleDownloadConfirm = async () => { + showDownloadConfirm.value = false; + const url = pendingDownloadUrl.value; + pendingDownloadUrl.value = null; + try { const blobUrl = await fileServer.fetchImage(url); const link = document.createElement('a'); @@ -1040,10 +1059,8 @@ const stopSceneDrag = () => { }; // 处理鼠标滚轮事件,实现缩放和移动功能 const handleWheel = (e) => { - // 移动端不阻止默认行为,避免影响触摸事件 - if (!isMobile.value) { - e.preventDefault(); // 阻止默认的滚轮行为(页面滚动) - } + // 阻止默认的滚轮行为(页面滚动),以便处理触摸板的水平滚动 + e.preventDefault(); // 如果按下了Ctrl键(Windows/Linux)或Cmd键(Mac),执行缩放操作 if (e.ctrlKey || e.metaKey) { @@ -1081,9 +1098,14 @@ const handleWheel = (e) => { scale.value = newScale; } } else { - // 单纯滚轮滚动,实现场景上下移动 - const moveAmount = e.deltaY * 0.5; // 调整移动速度 - sceneOffsetY.value += (-moveAmount); + // 单纯滚轮滚动,实现场景移动 + // 处理触摸板的水平滚动和垂直滚动 + const moveAmountY = e.deltaY * 0.5; + const moveAmountX = e.deltaX * 0.5; + + // 更新场景偏移量 + sceneOffsetY.value += (-moveAmountY); + sceneOffsetX.value += (-moveAmountX); } }; @@ -1133,10 +1155,10 @@ onMounted(() => { setTimeout(()=>{ setTourJson(); },200) - // 使用优化的被动事件监听器 - const removeWheelListener = addPassiveEventListener(document, 'wheel', preventZoom); - const removeTouchStartListener = addPassiveEventListener(document, 'touchstart', preventPinchZoom); - const removeTouchMoveListener = addPassiveEventListener(document, 'touchmove', preventPinchZoom); + // 使用非被动事件监听器,以便能够阻止默认行为 + const removeWheelListener = addPassiveEventListener(document, 'wheel', preventZoom, { passive: false }); + const removeTouchStartListener = addPassiveEventListener(document, 'touchstart', preventPinchZoom, { passive: false }); + const removeTouchMoveListener = addPassiveEventListener(document, 'touchmove', preventPinchZoom, { passive: false }); // 存储清理函数以便组件卸载时使用 cleanupFunctions.value = { wheel: removeWheelListener, @@ -1350,13 +1372,13 @@ html { position: relative; overflow: hidden; user-select: none; - touch-action: none; /* 阻止触摸设备上的默认行为 */ + touch-action: pan-x pan-y; /* 允许触摸板左右和上下拖动 */ } /* 移动端主内容区域适配 */ @media (max-width: 768px) { .main-content { - touch-action: pan-x pan-y; /* 移动端允许平移 */ + touch-action: none; /* 移动端阻止默认行为,使用自定义触摸处理 */ user-select: auto; /* 移动端允许选择文本 */ } } diff --git a/apps/frontend/src/views/Project/CreateProjectShu/CreateProjectShu.vue b/apps/frontend/src/views/Project/CreateProjectShu/CreateProjectShu.vue index c3c1fbe..77ea76c 100644 --- a/apps/frontend/src/views/Project/CreateProjectShu/CreateProjectShu.vue +++ b/apps/frontend/src/views/Project/CreateProjectShu/CreateProjectShu.vue @@ -136,6 +136,12 @@ :image-url="canvasEditorImageUrl" @add-prompt-card="handleCanvasSave" /> + + -
-

{{ $t('userCenter.invitation.title') }}

-
+
+

{{ $t('userCenter.invitation.title') }}

+
{{ userData.inviteCount }}
- -
+

{{ $t('userCenter.invitation.inviteCodes') }}

- - - - - - - - - -
+

{{ $t('userCenter.invitation.rules.title') }}

@@ -273,8 +263,6 @@
- -