XieXing преди 4 месеца
родител
ревизия
7c066f67fd

+ 1 - 1
shudao-vue-frontend/src/components/DeleteConfirmModal.vue

@@ -75,7 +75,7 @@ const handleDelete = () => {
 }
 
 .delete-modal {
-  background-image: url('../assets/chat/20.png');
+  background-image: url('./assets/chat/20.png');
   background-size: 100% 100%;
   background-repeat: no-repeat;
   padding: 24px 24px;

+ 3 - 3
shudao-vue-frontend/src/components/FeedbackModal.vue

@@ -65,7 +65,7 @@
           <!-- <h3 class="section-title"></h3> -->
           <div class="upload-area" @click="triggerFileUpload" v-if="uploadedImages.length === 0">
             <div class="upload-icon">
-              <img src="../assets/index/14.png" alt="上传" class="upload-img">
+              <img src="./assets/index/14.png" alt="上传" class="upload-img">
             </div>
             <div class="upload-text">
               上传截图(选填,最多3张,每张不超过5M)
@@ -96,7 +96,7 @@
             <!-- 当图片数量少于3张时,显示继续上传按钮 -->
             <div class="continue-upload" v-if="uploadedImages.length < 3" @click="triggerFileUpload">
               <div class="upload-icon">
-                <img src="../assets/index/14.png" alt="继续上传" class="upload-img">
+                <img src="./assets/index/14.png" alt="继续上传" class="upload-img">
               </div>
               <div class="upload-text">
                 继续上传
@@ -406,7 +406,7 @@ onUnmounted(() => {
 .modal-content {
   width: 580px;
   height: 781px;
-  background: url('../assets/index/18.png') center/cover no-repeat;
+  background: url('./assets/index/18.png') center/cover no-repeat;
   border-radius: 16px;
   display: flex;
   flex-direction: column;

+ 3 - 3
shudao-vue-frontend/src/components/MobileFeedbackModal.vue

@@ -65,7 +65,7 @@
           <!-- <h3 class="section-title"></h3> -->
           <div class="upload-area" @click="triggerFileUpload" v-if="uploadedImages.length === 0">
             <div class="upload-icon">
-              <img src="../assets/index/14.png" alt="上传" class="upload-img">
+              <img src="./assets/index/14.png" alt="上传" class="upload-img">
             </div>
             <div class="upload-text">
               上传截图(选填,最多3张,每张不超过5M)
@@ -96,7 +96,7 @@
             <!-- 当图片数量少于3张时,显示继续上传按钮 -->
             <div class="continue-upload" v-if="uploadedImages.length < 3" @click="triggerFileUpload">
               <div class="upload-icon">
-                <img src="../assets/index/14.png" alt="继续上传" class="upload-img">
+                <img src="./assets/index/14.png" alt="继续上传" class="upload-img">
               </div>
               <div class="upload-text">
                 继续上传
@@ -427,7 +427,7 @@ onUnmounted(() => {
 .modal-content {
   width: 420px;
   height: 650px;
-  background: url('../assets/index/18.png') center/cover no-repeat;
+  background: url('./assets/index/18.png') center/cover no-repeat;
   border-radius: 16px;
   display: flex;
   flex-direction: column;

+ 1 - 1
shudao-vue-frontend/src/components/MobileHeader.vue

@@ -1,7 +1,7 @@
 <template>
   <header class="mobile-header">
     <button class="back-button" @click="goHome">
-      <img src="../assets/index/2.jpg" alt="回到首页" class="back-icon">
+      <img src="./assets/index/2.jpg" alt="回到首页" class="back-icon">
     </button>
     <h1 class="page-title">{{ title }}</h1>
     <button v-if="showMenu" class="hamburger-btn" @click="$emit('menu')">

+ 8 - 8
shudao-vue-frontend/src/components/Sidebar.vue

@@ -2,29 +2,29 @@
   <div class="nav-sidebar">
     <!-- Logo区域 -->
     <div class="logo-section" @click="goToHome">
-      <img src="../assets/index/2.jpg" alt="logo" class="logo-image">
+      <img src="./assets/index/2.jpg" alt="logo" class="logo-image">
     </div>
 
     <!-- 导航菜单 -->
     <div class="nav-menu">
       <div class="nav-item" :class="{ active: currentRoute === 'Chat' }" @click="handleNavItem('ai-chat')">
-        <img src="../assets/chat/17.png" alt="AI问答" class="nav-icon">
+        <img src="./assets/chat/17.png" alt="AI问答" class="nav-icon">
         <span class="nav-text">AI问答</span>
       </div>
       <div class="nav-item" :class="{ active: currentRoute === 'HazardDetection' }" @click="handleNavItem('hazard-detection')">
-        <img src="../assets/chat/8.png" alt="隐患识别" class="nav-icon">
+        <img src="./assets/chat/8.png" alt="隐患识别" class="nav-icon">
         <span class="nav-text">隐患提示</span>
       </div>
       <div class="nav-item" :class="{ active: currentRoute === 'SafetyHazard' }" @click="handleNavItem('safety-hazard')">
-        <img src="../assets/chat/14.png" alt="安全隐患" class="nav-icon">
+        <img src="./assets/chat/14.png" alt="安全隐患" class="nav-icon">
         <span class="nav-text">安全培训</span>
       </div>
       <div class="nav-item" :class="{ active: currentRoute === 'AIWriting' }" @click="handleNavItem('ai-writing')">
-        <img src="../assets/chat/13.png" alt="AI写作" class="nav-icon">
+        <img src="./assets/chat/13.png" alt="AI写作" class="nav-icon">
         <span class="nav-text">AI写作</span>
       </div>
       <div class="nav-item" :class="{ active: currentRoute === 'ExamWorkshop' }" @click="handleNavItem('exam-workshop')">
-        <img src="../assets/chat/19.png" alt="考试工坊" class="nav-icon">
+        <img src="./assets/chat/19.png" alt="考试工坊" class="nav-icon">
         <span class="nav-text">考试工坊</span>
       </div>
     </div>
@@ -32,7 +32,7 @@
     <!-- 退出按钮 -->
     <!-- <div class="logout-section">
       <div class="nav-item logout-item" @click="handleLogout">
-        <img src="../assets/out.png" alt="退出" class="out-icon">
+        <img src="./assets/out.png" alt="退出" class="out-icon">
         <span class="nav-text">退出</span>
       </div>
     </div> -->
@@ -93,7 +93,7 @@ const handleLogout = () => {
   width: 80px;
   min-width: 80px;
   flex-shrink: 0;
-  background: url('../assets/chat/1.png') no-repeat center center;
+  background: url('./assets/chat/1.png') no-repeat center center;
   background-size: cover;
   color: white;
   display: flex;

+ 28 - 28
shudao-vue-frontend/src/views/AIWriting.vue

@@ -8,7 +8,7 @@
       <div class="history-header">
         <span class="section-title">历史记录</span>
         <img
-          src="../assets/chat/2.png"
+          src="./assets/chat/2.png"
           alt="新建任务"
           class="new-chat-btn"
           :class="{ 'disabled': isPolishing }"
@@ -47,7 +47,7 @@
         
         <!-- 无历史记录时显示空状态 -->
         <div v-else class="empty-history">
-          <img src="../assets/Chat/22.png" alt="暂无数据" class="empty-icon">
+          <img src="./assets/Chat/22.png" alt="暂无数据" class="empty-icon">
           <div class="empty-text">暂无数据</div>
         </div>
       </div>
@@ -79,7 +79,7 @@
               <div class="input-actions">
                 <div class="left-actions">
                   <button class="attachment-btn" @click="triggerFileUpload" :disabled="isSending">
-                    <img src="../assets/AIWriting/4.png" alt="附件" class="action-icon" />
+                    <img src="./assets/AIWriting/4.png" alt="附件" class="action-icon" />
                   </button>
                   <!-- 文件预览区域 - 显示在输入框右边 -->
                   <div v-if="selectedFile" class="file-preview-inline">
@@ -97,7 +97,7 @@
                 <div class="right-actions">
                   <button class="voice-btn" @click="handleVoiceClick" :disabled="isSending" :class="{ 'recording': isListening }">
                     <div class="icon-container">
-                      <img src="../assets/chat/18.png" alt="语音" class="action-icon" />
+                      <img src="./assets/chat/18.png" alt="语音" class="action-icon" />
                       <div v-if="isListening" class="recording-indicator"></div>
                     </div>
                   </button>
@@ -174,15 +174,15 @@
             </div>
             <div class="editor-actions">
               <!-- <button class="back-btn" @click="backToMain">
-                <img src="../assets/chat/2.png" alt="返回" class="action-icon" />
+                <img src="./assets/chat/2.png" alt="返回" class="action-icon" />
                 返回
               </button> -->
               <button class="save-btn" @click="saveDocument" :disabled="isPolishing">
-                <!-- <img src="../assets/chat/16.png" alt="保存" class="action-icon" /> -->
+                <!-- <img src="./assets/chat/16.png" alt="保存" class="action-icon" /> -->
                 保存文档
               </button>
               <button class="download-btn" @click="downloadDocument" :disabled="isPolishing">
-                <img src="../assets/Exam/13.png" alt="下载Word" class="download-icon" />
+                <img src="./assets/Exam/13.png" alt="下载Word" class="download-icon" />
               </button>
             </div>
           </div>
@@ -297,7 +297,7 @@
                     <div class="action-buttons">
                       <button class="action-btn copy-btn" @click="copyUserMessage(message)">
                         <img
-                          src="../assets/AIWriting/5.png"
+                          src="./assets/AIWriting/5.png"
                           alt="复制"
                           class="action-icon"
                         />
@@ -305,7 +305,7 @@
                       </button>
                       <button class="action-btn edit-btn" @click="editUserMessage(message)">
                         <img
-                          src="../assets/AIWriting/6.png"
+                          src="./assets/AIWriting/6.png"
                           alt="编辑"
                           class="action-icon"
                         />
@@ -318,7 +318,7 @@
                   <div v-else-if="message.type === 'ai'" class="ai-message">
                     <div class="ai-avatar">
                       <img
-                        src="../assets/AIWriting/15.png"
+                        src="./assets/AIWriting/15.png"
                         alt="AI头像"
                         class="avatar-img"
                       />
@@ -337,7 +337,7 @@
                       >
                         <div class="doc-icon">
                           <img
-                            src="../assets/AIWriting/14.png"
+                            src="./assets/AIWriting/14.png"
                             alt="文档图标"
                             class="info-icon"
                           />
@@ -359,7 +359,7 @@
                         <div class="left-actions">
                           <button class="action-btn copy-btn" @click="copyAIMessage(message)">
                             <img
-                              src="../assets/AIWriting/5.png"
+                              src="./assets/AIWriting/5.png"
                               alt="复制"
                               class="action-icon"
                             />
@@ -367,7 +367,7 @@
                           </button>
                           <button class="action-btn regenerate-btn" @click="regenerateResponse(index)" :disabled="isGenerating">
                             <img
-                              src="../assets/AIWriting/7.png"
+                              src="./assets/AIWriting/7.png"
                               alt="重新生成"
                               class="action-icon"
                             />
@@ -375,7 +375,7 @@
                           </button>
                           <button class="action-btn delete-btn" @click="handleDeleteClick(index)">
                             <img
-                              src="../assets/AIWriting/8.png"
+                              src="./assets/AIWriting/8.png"
                               alt="删除"
                               class="action-icon"
                             />
@@ -383,7 +383,7 @@
                           </button>
                           <button class="action-btn voice-btn" @click="handleVoiceRead(message)">
                             <img
-                              src="../assets/AIWriting/9.png"
+                              src="./assets/AIWriting/9.png"
                               alt="语音朗读"
                               class="action-icon"
                             />
@@ -396,14 +396,14 @@
                             :class="{ active: message.userFeedback === 'like' }"
                             @click="handleThumbsUp(message)"
                           >
-                            <img src="../assets/AIWriting/10.png" alt="点赞" class="action-icon">
+                            <img src="./assets/AIWriting/10.png" alt="点赞" class="action-icon">
                           </button>
                           <button 
                             class="action-btn thumbs-down-btn"
                             :class="{ active: message.userFeedback === 'dislike' }"
                             @click="handleThumbsDown(message)"
                           >
-                            <img src="../assets/AIWriting/11.png" alt="踩" class="action-icon">
+                            <img src="./assets/AIWriting/11.png" alt="踩" class="action-icon">
                           </button>
                         </div>
                       </div>
@@ -415,7 +415,7 @@
                 <div v-if="isGenerating" class="message-item generating">
                   <div class="ai-avatar">
                     <img
-                      src="../assets/AIWriting/15.png"
+                      src="./assets/AIWriting/15.png"
                       alt="AI头像"
                       class="avatar-img"
                     />
@@ -452,7 +452,7 @@
                 
                 <div class="input-container">
                   <button class="attachment-btn" @click="triggerFileUpload" :disabled="isGenerating">
-                    <img src="../assets/chat/9.png" alt="上传文件" class="action-icon" />
+                    <img src="./assets/chat/9.png" alt="上传文件" class="action-icon" />
                   </button>
                   <input
                     v-model="detailInputText"
@@ -466,7 +466,7 @@
                   />
                   <button class="voice-btn" @click="handleVoiceClick" :disabled="isGenerating" :class="{ 'recording': isListening }">
                     <div class="icon-container">
-                      <img src="../assets/chat/18.png" alt="语音" class="action-icon" />
+                      <img src="./assets/chat/18.png" alt="语音" class="action-icon" />
                       <div v-if="isListening" class="recording-indicator"></div>
                     </div>
                   </button>
@@ -491,15 +491,15 @@
                 </h3>
                 <div class="doc-actions">
                   <button class="action-btn" @click="copyDocumentContent">
-                    <img src="../assets/AIWriting/12.png" alt="复制" class="action-icon" />
+                    <img src="./assets/AIWriting/12.png" alt="复制" class="action-icon" />
                     复制
                   </button>
                   <button class="action-btn" @click="downloadDocumentAsWord">
-                    <img src="../assets/AIWriting/13.png" alt="下载" class="action-icon" />
+                    <img src="./assets/AIWriting/13.png" alt="下载" class="action-icon" />
                     下载
                   </button>
                   <button class="action-btn close-btn" @click="closeDocumentPreview">
-                    <img src="../assets/AIWriting/16.png" alt="关闭" class="action-icon" />
+                    <img src="./assets/AIWriting/16.png" alt="关闭" class="action-icon" />
                   </button>
                 </div>
               </div>
@@ -1299,11 +1299,11 @@ const tabs = [
   { key: "meeting", name: "会议纪要" },
   { key: "speech", name: "决定" },
 ];
-import announcementIcon from '../assets/AIWriting/3.png'
-import notificationIcon from '../assets/AIWriting/2.png'
-import summaryIcon from '../assets/AIWriting/1.png'
-import meetingIcon from '../assets/AIWriting/18.png'
-import speechIcon from '../assets/AIWriting/19.png'
+import announcementIcon from './assets/AIWriting/3.png'
+import notificationIcon from './assets/AIWriting/2.png'
+import summaryIcon from './assets/AIWriting/1.png'
+import meetingIcon from './assets/AIWriting/18.png'
+import speechIcon from './assets/AIWriting/19.png'
 
 // 模板数据配置
 const templates = [

+ 8 - 8
shudao-vue-frontend/src/views/Admin.vue

@@ -4,7 +4,7 @@
     <div class="sidebar">
       <!-- 顶部AI图标 -->
       <div class="sidebar-header">
-        <img src="../assets/admin/1.png" alt="AI" class="ai-icon">
+        <img src="./assets/admin/1.png" alt="AI" class="ai-icon">
         <span class="ai-title">AI后台管理系统</span>
       </div>
       
@@ -14,14 +14,14 @@
           :class="['nav-item', { active: currentPage === 'chat' }]"
           @click="switchPage('chat')"
         >
-          <img src="../assets/admin/2.png" alt="对话记录" class="nav-icon">
+          <img src="./assets/admin/2.png" alt="对话记录" class="nav-icon">
           <span class="nav-text">AI对话记录</span>
         </div>
         <div 
           :class="['nav-item', { active: currentPage === 'data' }]"
           @click="switchPage('data')"
         >
-          <img src="../assets/admin/3.png" alt="数据资源" class="nav-icon">
+          <img src="./assets/admin/3.png" alt="数据资源" class="nav-icon">
           <span class="nav-text">数据资源</span>
         </div>
       </nav>
@@ -29,14 +29,14 @@
       <!-- 底部用户信息 -->
       <div class="sidebar-footer">
         <div class="user-info">
-          <img src="../assets/admin/4.png" alt="管理员" class="user-avatar">
+          <img src="./assets/admin/4.png" alt="管理员" class="user-avatar">
           <div class="user-details">
             <span class="user-name">管理员</span>
             <span class="user-role">超级管理员</span>
           </div>
         </div>
         <button class="logout-btn" @click="handleLogout">
-          <img src="../assets/admin/5.png" alt="退出" class="logout-icon">
+          <img src="./assets/admin/5.png" alt="退出" class="logout-icon">
         </button>
       </div>
     </div>
@@ -52,7 +52,7 @@
             <p class="page-description">查看和管理所有用户与AI助手的对话历史记录</p>
           </div>
           <div class="search-box">
-            <img src="../assets/admin/6.png" alt="搜索" class="search-icon">
+            <img src="./assets/admin/6.png" alt="搜索" class="search-icon">
             <input 
               type="text" 
               placeholder="搜索用户ID或问题内容" 
@@ -129,7 +129,7 @@
             <p class="page-description">查看和管理已标注的相关文档知识点</p>
           </div>
           <div class="search-box">
-            <img src="../assets/admin/6.png" alt="搜索" class="search-icon">
+            <img src="./assets/admin/6.png" alt="搜索" class="search-icon">
             <input 
               type="text" 
               placeholder="搜索ID、知识点内容或标签" 
@@ -543,7 +543,7 @@ onMounted(() => {
 /* 左侧边栏 */
 .sidebar {
   width: 240px;
-  background: url('../assets/admin/7.png') no-repeat;
+  background: url('./assets/admin/7.png') no-repeat;
 //   background-size: 240px 100%;
   background-position: center;
   display: flex;

+ 1 - 1
shudao-vue-frontend/src/views/Chat.vue

@@ -309,7 +309,7 @@
                       </button>
                       <!-- 删除按钮 -->
                       <button class="action-btn delete-btn" @click="handleDeleteClick(index)">
-                        <img src="../assets/AIWriting/8.png" alt="删除" class="action-icon">
+                        <img src="./assets/AIWriting/8.png" alt="删除" class="action-icon">
                         删除
                       </button>
                       <button class="action-btn voice-btn" @click="handleVoiceRead(message)" :class="{ speaking: isSpeaking(message.id) }">

+ 19 - 19
shudao-vue-frontend/src/views/ExamWorkshop.vue

@@ -402,7 +402,7 @@
                           :disabled="isGenerating"
                           title="编辑选项"
                         >
-                          <img src="../assets/Chat/13.png" alt="编辑" class="edit-icon" />
+                          <img src="./assets/Chat/13.png" alt="编辑" class="edit-icon" />
                         </button> -->
                       </div>
                     </div>
@@ -537,7 +537,7 @@
                           :disabled="isGenerating"
                           title="编辑选项"
                         >
-                          <img src="../assets/Chat/13.png" alt="编辑" class="edit-icon" />
+                          <img src="./assets/Chat/13.png" alt="编辑" class="edit-icon" />
                         </button> -->
                       </div>
                     </div>
@@ -594,7 +594,7 @@
                           :disabled="isGenerating"
                           title="编辑答题要点"
                         >
-                          <img src="../assets/Chat/13.png" alt="编辑" class="edit-icon" />
+                          <img src="./assets/Chat/13.png" alt="编辑" class="edit-icon" />
                         </button> -->
                       </div>
                     </div>
@@ -685,22 +685,22 @@ import { ElMessage } from 'element-plus'
 // import { getUserId } from '@/utils/userManager.js'
 
 // 导入图片资源
-import bridgeIcon from '../assets/Exam/4.png'
-import tunnelIcon from '../assets/Exam/18.png'
-import equipmentIcon from '../assets/Exam/5.png'
-import gasStationIcon from '../assets/Exam/6.png'
-import highwayIcon from '../assets/Exam/7.png'
-import comprehensiveIcon from '../assets/Exam/8.png'
-import aiIcon from '../assets/Exam/9.png'
-import pptIcon from '../assets/Exam/10.png'
-import previewIcon from '../assets/Exam/14.png'
-import clearIcon from '../assets/Exam/11.png'
-import generateIcon from '../assets/Exam/12.png'
-import saveIcon from '../assets/Exam/15.png'
-import downloadIcon from '../assets/Exam/13.png'
-import expandIcon from '../assets/Exam/17.png'
-import collapseIcon from '../assets/Exam/16.png'
-import attachmentIcon from '../assets/chat/9.png'
+import bridgeIcon from './assets/Exam/4.png'
+import tunnelIcon from './assets/Exam/18.png'
+import equipmentIcon from './assets/Exam/5.png'
+import gasStationIcon from './assets/Exam/6.png'
+import highwayIcon from './assets/Exam/7.png'
+import comprehensiveIcon from './assets/Exam/8.png'
+import aiIcon from './assets/Exam/9.png'
+import pptIcon from './assets/Exam/10.png'
+import previewIcon from './assets/Exam/14.png'
+import clearIcon from './assets/Exam/11.png'
+import generateIcon from './assets/Exam/12.png'
+import saveIcon from './assets/Exam/15.png'
+import downloadIcon from './assets/Exam/13.png'
+import expandIcon from './assets/Exam/17.png'
+import collapseIcon from './assets/Exam/16.png'
+import attachmentIcon from './assets/chat/9.png'
 
 
 

+ 6 - 6
shudao-vue-frontend/src/views/HazardDetection.vue

@@ -8,7 +8,7 @@
             <div class="history-header">
                 <span class="section-title">历史记录</span>
                 <img
-                    src="../assets/chat/2.png"
+                    src="./assets/chat/2.png"
                     alt="新建任务"
                     class="new-chat-btn"
                     @click="createNewChat"
@@ -80,7 +80,7 @@
                 <!-- 无数据时显示空状态 -->
                 <div v-else class="empty-history">
                     <img
-                        src="../assets/Chat/22.png"
+                        src="./assets/Chat/22.png"
                         alt="暂无数据"
                         class="empty-icon"
                     />
@@ -191,7 +191,7 @@
                                     <!-- 显示上传区域 -->
                                     <div v-else class="upload-content">
                                         <img
-                                            src="../assets/Hazard/5.png"
+                                            src="./assets/Hazard/5.png"
                                             alt="上传图标"
                                             class="upload-icon"
                                         />
@@ -482,7 +482,7 @@
                             <div class="analysis-header">
                                 <div class="robot-avatar">
                                     <img
-                                        src="../assets/Hazard/21.png"
+                                        src="./assets/Hazard/21.png"
                                         alt="蜀安AI助手"
                                         class="robot-img"
                                     />
@@ -896,7 +896,7 @@
                     <div class="modal-header">
                         <span class="modal-title">点评确认</span>
                         <img
-                            src="../assets/Hazard/11.png"
+                            src="./assets/Hazard/11.png"
                             alt="关闭"
                             class="close-icon"
                             @click="closeEvaluationModal"
@@ -1075,7 +1075,7 @@
                     >
                         <button class="submit-btn" @click="submitEvaluation">
                             <img
-                                src="../assets/Hazard/13.png"
+                                src="./assets/Hazard/13.png"
                                 alt="提交反馈"
                                 class="submit-icon"
                             />

+ 12 - 12
shudao-vue-frontend/src/views/Index.vue

@@ -3,7 +3,7 @@
     <!-- 顶部logo -->
     <div class="header">
       <div class="logo">
-        <img src="../assets/new_index/1.png" alt="logo" class="logo-img">
+        <img src="./assets/new_index/1.png" alt="logo" class="logo-img">
       </div>
       
       <!-- 用户信息区域 -->
@@ -103,7 +103,7 @@
           <div class="service-card exam-workshop-card" @click="goToExamWorkshop">
             <div class="service-header">
               <div class="service-icon">
-                <img src="../assets/new_index/6-1.png" alt="考试工坊" class="icon-img">
+                <img src="./assets/new_index/6-1.png" alt="考试工坊" class="icon-img">
               </div>
               <div class="service-title">考试工坊</div>
             </div>
@@ -113,7 +113,7 @@
           <div class="service-card policy-document-card" @click="goToPolicyDocument">
             <div class="service-header">
               <div class="service-icon">
-                <img src="../assets/new_index/8-1.png" alt="政策文件" class="icon-img">
+                <img src="./assets/new_index/8-1.png" alt="政策文件" class="icon-img">
               </div>
               <div class="service-title">政策文件</div>
             </div>
@@ -127,7 +127,7 @@
           <div class="service-card ai-writing-card" @click="goToAIWriting">
             <div class="service-header">
               <div class="service-icon">
-                <img src="../assets/new_index/7-1.png" alt="AI写作" class="icon-img">
+                <img src="./assets/new_index/7-1.png" alt="AI写作" class="icon-img">
               </div>
               <div class="service-title">AI写作</div>
             </div>
@@ -137,7 +137,7 @@
           <div class="service-card feedback-card" @click="openFeedbackModal">
             <div class="service-header">
               <div class="service-icon">
-                <img src="../assets/new_index/9-1.png" alt="意见反馈" class="icon-img">
+                <img src="./assets/new_index/9-1.png" alt="意见反馈" class="icon-img">
               </div>
               <div class="service-title">意见反馈</div>
             </div>
@@ -874,7 +874,7 @@ onUnmounted(() => {
 
 /* 常见问题卡片 */
 .common-questions-card {
-  background-image: url('../assets/new_index/3.png');
+  background-image: url('./assets/new_index/3.png');
   background-size: 100% 100%;
   background-repeat: no-repeat;
   width: 338px;
@@ -949,7 +949,7 @@ onUnmounted(() => {
 
 /* 隐患提示卡片 */
 .hazard-card {
-  background-image: url('../assets/new_index/4.png');
+  background-image: url('./assets/new_index/4.png');
   background-size: 100% 100%;
   background-repeat: no-repeat;
   width: 406px;
@@ -983,7 +983,7 @@ onUnmounted(() => {
 
 /* 安全培训卡片 */
 .training-card {
-  background-image: url('../assets/new_index/5.png');
+  background-image: url('./assets/new_index/5.png');
   background-size: 100% 100%;
   background-repeat: no-repeat;
   width: 406px;
@@ -1031,19 +1031,19 @@ onUnmounted(() => {
   }
   
   &.exam-workshop-card {
-    background-image: url('../assets/new_index/6.png');
+    background-image: url('./assets/new_index/6.png');
   }
   
   &.policy-document-card {
-    background-image: url('../assets/new_index/8.png');
+    background-image: url('./assets/new_index/8.png');
   }
   
   &.ai-writing-card {
-    background-image: url('../assets/new_index/7.png');
+    background-image: url('./assets/new_index/7.png');
   }
   
   &.feedback-card {
-    background-image: url('../assets/new_index/9.png');
+    background-image: url('./assets/new_index/9.png');
   }
   
   .service-header {

+ 2 - 2
shudao-vue-frontend/src/views/Login.vue

@@ -6,7 +6,7 @@
     
     <!-- Logo区域 -->
     <div class="logo-container">
-      <img src="../assets/横版.png" alt="logo" class="logo-image" />
+      <img src="./assets/横版.png" alt="logo" class="logo-image" />
     </div>
     
     <div class="login-card">
@@ -294,7 +294,7 @@ const handleLogin = async () => {
   left: 0;
   right: 0;
   bottom: 0;
-  background-image: url('../assets/登录背景.jpg');
+  background-image: url('./assets/登录背景.jpg');
   background-size: 100% 100%;
   background-position: center;
   background-repeat: no-repeat;

+ 8 - 8
shudao-vue-frontend/src/views/PolicyDocument.vue

@@ -5,7 +5,7 @@
             <div class="header-left">
                 <div class="logo-section" @click="goToHome">
                     <img
-                        src="../assets/new_index/1.png"
+                        src="./assets/new_index/1.png"
                         alt="logo"
                         class="logo-img"
                     />
@@ -20,7 +20,7 @@
             <div class="page-header">
                 <div class="back-button1" @click="goToHome">
                     <img
-                        src="../assets/Policy/9.png"
+                        src="./assets/Policy/9.png"
                         alt="返回"
                         class="back-icon"
                     />
@@ -34,7 +34,7 @@
                 <div class="search-box">
                     <div class="search-icon-left">
                         <img
-                            src="../assets/Policy/8.png"
+                            src="./assets/Policy/8.png"
                             alt="搜索"
                             class="search-icon"
                         />
@@ -139,7 +139,7 @@
                                 class="tag tag-blue"
                             >
                                 <img
-                                    src="../assets/Policy/10.png"
+                                    src="./assets/Policy/10.png"
                                     alt="标签图标"
                                     class="tag-icon"
                                 />
@@ -153,7 +153,7 @@
                             <div class="doc-info">
                                 <span class="info-item">
                                     <img
-                                        src="../assets/Policy/5.png"
+                                        src="./assets/Policy/5.png"
                                         alt="部门"
                                         class="info-icon"
                                     />
@@ -161,7 +161,7 @@
                                 </span>
                                 <span class="info-item">
                                     <img
-                                        src="../assets/Policy/6.png"
+                                        src="./assets/Policy/6.png"
                                         alt="次数"
                                         class="info-icon"
                                     />
@@ -180,7 +180,7 @@
                                     @click="downloadPolicy(file)"
                                 >
                                     <img
-                                        src="../assets/Policy/7.png"
+                                        src="./assets/Policy/7.png"
                                         alt=""
                                         class="action-icon"
                                     />
@@ -509,7 +509,7 @@ onUnmounted(() => {
 <style lang="less" scoped>
 .policy-container {
     min-height: 100vh;
-    background-image: url("../assets/Policy/1.png");
+    background-image: url("./assets/Policy/1.png");
     background-size: cover;
     background-position: center;
     background-repeat: no-repeat;

+ 40 - 40
shudao-vue-frontend/src/views/SafetyHazard.vue

@@ -16,7 +16,7 @@
 
         <span class="section-title">历史记录</span>
 
-        <img src="../assets/chat/2.png" alt="新建任务" class="new-chat-btn" @click="handleNewChatClick"
+        <img src="./assets/chat/2.png" alt="新建任务" class="new-chat-btn" @click="handleNewChatClick"
           :class="{ 'disabled': isProcessing }">
 
         <!-- 测试按钮 -->
@@ -87,7 +87,7 @@
 
         <div v-else class="empty-history">
 
-          <img src="../assets/Chat/22.png" alt="暂无数据" class="empty-icon">
+          <img src="./assets/Chat/22.png" alt="暂无数据" class="empty-icon">
 
           <div class="empty-text">暂无数据</div>
 
@@ -131,7 +131,7 @@
 
               <div class="ai-avatar">
 
-                <img src="../assets/Safety/5.png" alt="AI头像" class="ai-avatar-img">
+                <img src="./assets/Safety/5.png" alt="AI头像" class="ai-avatar-img">
 
               </div>
 
@@ -186,7 +186,7 @@
 
                   <div class="card-icon">
 
-                    <img src="../assets/Safety/4.png" alt="安全培训课程" class="card-icon-img">
+                    <img src="./assets/Safety/4.png" alt="安全培训课程" class="card-icon-img">
 
                   </div>
 
@@ -209,7 +209,7 @@
 
                   <div class="card-icon">
 
-                    <img src="../assets/Safety/3.png" alt="安全评估" class="card-icon-img">
+                    <img src="./assets/Safety/3.png" alt="安全评估" class="card-icon-img">
 
                   </div>
 
@@ -232,7 +232,7 @@
 
                   <div class="card-icon">
 
-                    <img src="../assets/Safety/2.png" alt="安全法规" class="card-icon-img">
+                    <img src="./assets/Safety/2.png" alt="安全法规" class="card-icon-img">
 
                   </div>
 
@@ -255,7 +255,7 @@
 
                   <div class="card-icon">
 
-                    <img src="../assets/Safety/1.png" alt="应急程序" class="card-icon-img">
+                    <img src="./assets/Safety/1.png" alt="应急程序" class="card-icon-img">
 
                   </div>
 
@@ -324,7 +324,7 @@
 
                     <button class="action-btn copy-btn" @click="copyUserMessage(message)">
 
-                      <img src="../assets/AIWriting/5.png" alt="复制" class="action-icon">
+                      <img src="./assets/AIWriting/5.png" alt="复制" class="action-icon">
 
                       复制
 
@@ -332,7 +332,7 @@
 
                     <button class="action-btn edit-btn">
 
-                      <img src="../assets/AIWriting/6.png" alt="编辑" class="action-icon">
+                      <img src="./assets/AIWriting/6.png" alt="编辑" class="action-icon">
 
                       编辑
 
@@ -350,7 +350,7 @@
 
                   <div class="ai-avatar-small">
 
-                    <img src="../assets/Safety/5.png" alt="AI" class="ai-icon">
+                    <img src="./assets/Safety/5.png" alt="AI" class="ai-icon">
 
                   </div>
 
@@ -447,7 +447,7 @@
                   <button class="action-btn exam-btn" @click="generateExam"
                     :disabled="isGeneratingExam || !outlineData.length">
 
-                    <img src="../assets/Safety/31.png" alt="考试" class="action-icon">
+                    <img src="./assets/Safety/31.png" alt="考试" class="action-icon">
 
                     生成考题
 
@@ -455,7 +455,7 @@
 
                   <button class="action-btn" @click="copyEntireOutline" :disabled="isGeneratingOutline">
 
-                    <img src="../assets/AIWriting/12.png" alt="复制" class="action-icon">
+                    <img src="./assets/AIWriting/12.png" alt="复制" class="action-icon">
 
                     复制
 
@@ -463,7 +463,7 @@
 
                   <button class="action-btn" @click="downloadOutlineAsWord" :disabled="isGeneratingOutline">
 
-                    <img src="../assets/AIWriting/13.png" alt="下载" class="action-icon">
+                    <img src="./assets/AIWriting/13.png" alt="下载" class="action-icon">
 
                     下载
 
@@ -507,19 +507,19 @@
 
                   <button class="zoom-btn">
 
-                    <img src="../assets/Safety/7.png" alt="编辑" class="zoom-icon">
+                    <img src="./assets/Safety/7.png" alt="编辑" class="zoom-icon">
 
                   </button>
 
                   <button class="zoom-btn">
 
-                    <img src="../assets/Safety/8.png" alt="新增" class="zoom-icon">
+                    <img src="./assets/Safety/8.png" alt="新增" class="zoom-icon">
 
                   </button>
 
                   <button class="zoom-btn">
 
-                    <img src="../assets/Safety/9.png" alt="删除" class="zoom-icon">
+                    <img src="./assets/Safety/9.png" alt="删除" class="zoom-icon">
 
                   </button>
 
@@ -565,14 +565,14 @@
 
                               <button class="edit-option-btn" @click="addNewItem('section', chapterIndex)">
 
-                                <img src="../assets/Safety/8.png" alt="添加小节" class="edit-icon">
+                                <img src="./assets/Safety/8.png" alt="添加小节" class="edit-icon">
 
                               </button>
 
                               <button v-if="outlineData.length > 2" class="edit-option-btn delete-btn"
                                 @click="deleteItem('chapter', chapterIndex)">
 
-                                <img src="../assets/AIWriting/8.png" alt="删除" class="edit-icon">
+                                <img src="./assets/AIWriting/8.png" alt="删除" class="edit-icon">
 
                               </button>
 
@@ -623,14 +623,14 @@
                                     <button class="edit-option-btn"
                                       @click="addNewItem('subsection', `${chapterIndex}-${sectionIndex}`)">
 
-                                      <img src="../assets/Safety/8.png" alt="添加子标题" class="edit-icon">
+                                      <img src="./assets/Safety/8.png" alt="添加子标题" class="edit-icon">
 
                                     </button>
 
                                     <button v-if="chapter.sections.length > 1" class="edit-option-btn delete-btn"
                                       @click="deleteItem('section', `${chapterIndex}-${sectionIndex}`)">
 
-                                      <img src="../assets/AIWriting/8.png" alt="删除" class="edit-icon">
+                                      <img src="./assets/AIWriting/8.png" alt="删除" class="edit-icon">
 
                                     </button>
 
@@ -695,7 +695,7 @@
                                           <button class="edit-option-btn delete-btn"
                                             @click="deleteItem('subsection', `${chapterIndex}-${sectionIndex}-${subsectionIndex}`)">
 
-                                            <img src="../assets/AIWriting/8.png" alt="删除" class="edit-icon">
+                                            <img src="./assets/AIWriting/8.png" alt="删除" class="edit-icon">
 
                                           </button>
 
@@ -785,7 +785,7 @@
 
                     <button class="add-chapter-btn" @click="addNewItem('chapter', null)">
 
-                      <img src="../assets/Safety/8.png" alt="添加章节" class="add-icon">
+                      <img src="./assets/Safety/8.png" alt="添加章节" class="add-icon">
 
                       <span>添加新章节</span>
 
@@ -905,7 +905,7 @@
 
                 <div class="section-header">
 
-                  <img src="../assets/Safety/10.png" alt="统计" class="section-icon">
+                  <img src="./assets/Safety/10.png" alt="统计" class="section-icon">
 
                   <h5>大纲统计信息</h5>
 
@@ -957,7 +957,7 @@
 
                 <div class="section-header">
 
-                  <img src="../assets/Safety/11.png" alt="提示" class="section-icon">
+                  <img src="./assets/Safety/11.png" alt="提示" class="section-icon">
 
                   <h5>大纲编辑提示</h5>
 
@@ -1004,7 +1004,7 @@
                     <button class="eval-btn satisfied" :class="{ active: getEvaluationStatus() === 'satisfied' }"
                       @click="setEvaluation('satisfied')" :disabled="isGeneratingOutline">
 
-                      <img src="../assets/AIWriting/10.png" alt="满意" class="eval-icon">
+                      <img src="./assets/AIWriting/10.png" alt="满意" class="eval-icon">
 
                       满意
 
@@ -1013,7 +1013,7 @@
                     <button class="eval-btn unsatisfied" :class="{ active: getEvaluationStatus() === 'unsatisfied' }"
                       @click="setEvaluation('unsatisfied')" :disabled="isGeneratingOutline">
 
-                      <img src="../assets/AIWriting/11.png" alt="不满意" class="eval-icon">
+                      <img src="./assets/AIWriting/11.png" alt="不满意" class="eval-icon">
 
                       不满意
 
@@ -1034,7 +1034,7 @@
                 <button class="action-btn secondary" @click="generateNewOutline"
                   :disabled="isGeneratingOutline || isGeneratingExam">
 
-                  <img src="../assets/Safety/12.png" alt="刷新" class="action-icon"
+                  <img src="./assets/Safety/12.png" alt="刷新" class="action-icon"
                     :class="{ 'rotating': isGeneratingOutline }">
 
                   生成新大纲
@@ -1046,13 +1046,13 @@
 
                   继续创作
 
-                  <img src="../assets/Safety/13.png" alt="箭头" class="action-icon">
+                  <img src="./assets/Safety/13.png" alt="箭头" class="action-icon">
 
                 </button>
 
                 <!-- <button class="action-btn wps" @click="goToStep3" :disabled="isGeneratingOutline">
 
-                  <img src="../assets/Safety/28.png" alt="WPS AI PPT" class="action-icon">
+                  <img src="./assets/Safety/28.png" alt="WPS AI PPT" class="action-icon">
 
                   WPS AI PPT
 
@@ -1065,11 +1065,11 @@
                 <button v-if="showOpenPPTButton && currentPPTInfo" class="action-btn primary" @click="openTestPPT"
                   style="background: #EA580C; color: #fff;">
 
-                  <!-- <img src="../assets/Safety/28.png" alt="打开PPT" class="action-icon"> -->
+                  <!-- <img src="./assets/Safety/28.png" alt="打开PPT" class="action-icon"> -->
 
                   修改PPT模板
 
-                  <img src="../assets/Safety/13.png" alt="箭头" class="action-icon">
+                  <img src="./assets/Safety/13.png" alt="箭头" class="action-icon">
 
                 </button>
 
@@ -1157,7 +1157,7 @@
 
                     <button class="carousel-btn prev" @click="prevSlide">
 
-                      <img src="../assets/Safety/23.png" alt="上一页" class="carousel-icon">
+                      <img src="./assets/Safety/23.png" alt="上一页" class="carousel-icon">
 
                     </button>
 
@@ -1195,7 +1195,7 @@
 
                     <button class="carousel-btn next" @click="nextSlide">
 
-                      <img src="../assets/Safety/24.png" alt="下一页" class="carousel-icon">
+                      <img src="./assets/Safety/24.png" alt="下一页" class="carousel-icon">
 
                     </button>
 
@@ -1672,7 +1672,7 @@
 
                     <div v-if="selectedDownloadOption === index" class="option-check">
 
-                      <img src="../assets/Safety/29.png" alt="选中" class="check-icon">
+                      <img src="./assets/Safety/29.png" alt="选中" class="check-icon">
 
                     </div>
 
@@ -1692,7 +1692,7 @@
 
                   <button class="action-btn primary" @click="exportPPTX" :disabled="isDownloading">
 
-                    <img src="../assets/Safety/30.png" alt="下载" class="download-icon">
+                    <img src="./assets/Safety/30.png" alt="下载" class="download-icon">
 
                     {{ isDownloading ? '生成中...' : '立即下载' }}
 
@@ -1838,7 +1838,7 @@
         <div v-if="hotQuestions.length === 0" class="question-tag"
           @click="handleRecommendedQuestion('施工现场安全培训的主要内容有哪些?')">
 
-          <img src="../assets/chat/12.png" alt="问题" class="question-icon">
+          <img src="./assets/chat/12.png" alt="问题" class="question-icon">
 
           施工现场安全培训的主要内容有哪些?
 
@@ -1847,7 +1847,7 @@
         <div v-if="hotQuestions.length === 0" class="question-tag"
           @click="handleRecommendedQuestion('高空作业安全防护措施有哪些要求?')">
 
-          <img src="../assets/chat/10.png" alt="问题" class="question-icon">
+          <img src="./assets/chat/10.png" alt="问题" class="question-icon">
 
           高空作业安全防护措施有哪些要求?
 
@@ -1855,7 +1855,7 @@
 
         <div v-if="hotQuestions.length === 0" class="question-tag" @click="handleRecommendedQuestion('《建设工程安全生产管理条例》')">
 
-          <img src="../assets/chat/11.png" alt="文档" class="question-icon">
+          <img src="./assets/chat/11.png" alt="文档" class="question-icon">
 
           《建设工程安全生产管理条例》
 
@@ -1908,7 +1908,7 @@
 
               <div class="icon-container">
 
-                <img src="../assets/chat/9.png" alt="附件" class="action-icon"
+                <img src="./assets/chat/9.png" alt="附件" class="action-icon"
                   style="width: 20px; height: 20px; max-width: 20px; max-height: 20px;">
 
               </div>
@@ -1924,7 +1924,7 @@
 
               <div class="icon-container">
 
-                <img src="../assets/chat/18.png" alt="语音" class="action-icon"
+                <img src="./assets/chat/18.png" alt="语音" class="action-icon"
                   style="width: 20px; height: 20px; max-width: 20px; max-height: 20px;">
 
                 <div v-if="isListening" class="recording-indicator"></div>