Explorar el Código

修改邮件相关

Fan hace 3 semanas
padre
commit
fe3b6a0592

+ 15 - 2
ui/smarttrade-platform/src/components/marketing/aiGenerator.vue

@@ -134,8 +134,8 @@
         </div>
         <div class="modal-footer">
           <button class="btn btn-secondary" @click="showAIModal = false">关闭</button>
-          <button class="btn btn-secondary">预览</button>
-          <button class="btn btn-primary" @click="useEmail">保存使用</button>
+          <button class="btn btn-secondary" @click="previewEmail" :disabled="!emailContent">预览</button>
+          <button class="btn btn-primary" @click="useEmail" :disabled="!emailContent">保存使用</button>
         </div>
       </div>
     </div>
@@ -143,11 +143,13 @@
 
 <script setup>
     import { ref } from 'vue'
+    import { useRouter } from 'vue-router'
     import ckeditor from '@/components/ckeditor/index.vue'
     import { getSopById, saveGenerateEmail } from '@/api/marketing'
     import { getToken } from '@/utils/auth'
 
     const showAIModal = ref(false)
+    const router = useRouter()
     const userInfo = JSON.parse(localStorage.getItem('userInfo'))
     const aiGenerator = ref({
         inputs: {
@@ -383,6 +385,17 @@
             console.error('Fetch error:', error);
         }
     }
+    const previewEmail = () => {
+        sessionStorage.setItem('aiEmailPreview', JSON.stringify({
+            subject: emailSubject.value,
+            content: emailContent.value
+        }))
+        const { href } = router.resolve({
+            path: '/emails/detail',
+            query: { preview: '1' }
+        })
+        window.open(href, '_blank')
+    }
     const useEmail = () => {
         let params = {
             id: typeData.value.filter(item => item.name == aiGenerator.value.inputs.scene)[0].id,

+ 20 - 1
ui/smarttrade-platform/src/views/emails/detail.vue

@@ -2,7 +2,7 @@
     <div class="follow_email" v-loading="emailLoading">
         <div class="email_area">
             <div class='header_message'>
-                <div class='item'>
+                <div class='item' v-if="!previewMode">
                     <div class="label">发件人</div>
                     <span>:</span>
                     <div class='value'>{{ emailDetail?.fromName }}({{ emailDetail?.fromAddr }})</div>
@@ -67,7 +67,26 @@
 
     const router = useRouter();
     let queryData = router.currentRoute.value.query
+    const previewMode = queryData.preview === '1'
+    const loadPreviewData = () => {
+        try {
+            const previewData = JSON.parse(sessionStorage.getItem('aiEmailPreview') || '{}')
+            Object.assign(emailDetail.value, {
+                subject: previewData.subject || '',
+                content: previewData.content || ''
+            })
+        } catch (error) {
+            console.error('读取邮件预览数据失败:', error)
+        } finally {
+            sessionStorage.removeItem('aiEmailPreview')
+        }
+    }
     const getData = () => {
+        if (previewMode) {
+            loadPreviewData()
+            return
+        }
+
         emailLoading.value = true;
         getEmailDetail({ mailId: queryData.id }).then(res => {
             res.result.sentDate = moment(res.result.sentDate).format('YYYY-MM-DD HH:mm:ss')