Prechádzať zdrojové kódy

修改导出及知识库目录联动

yangg 7 mesiacov pred
rodič
commit
741d68cfe3
68 zmenil súbory, kde vykonal 184 pridanie a 160 odobranie
  1. 1 1
      .env.development
  2. 0 0
      dist/index.html
  3. 0 0
      dist/static/css/app.5bf33343.css
  4. 0 0
      dist/static/css/chunk-143f34d0.affe1720.css
  5. 0 0
      dist/static/css/chunk-5802c52e.1c89a016.css
  6. 0 0
      dist/static/css/chunk-dfd55446.affe1720.css
  7. 0 0
      dist/static/css/chunk-e03d00b0.fcc2dcbb.css
  8. 0 0
      dist/static/css/chunk-e0a8cdc0.3e6a7fec.css
  9. 0 0
      dist/static/js/app.8b236e19.js
  10. 0 0
      dist/static/js/app.ba18f133.js
  11. 0 0
      dist/static/js/chunk-0074d5fe.07e7a26b.js
  12. 0 0
      dist/static/js/chunk-01f26467.476ed5ec.js
  13. 0 0
      dist/static/js/chunk-091613b3.3dfa26cf.js
  14. 0 0
      dist/static/js/chunk-09f78c22.2e37f5c5.js
  15. 0 0
      dist/static/js/chunk-0c9d75e0.1e8a58c3.js
  16. 0 0
      dist/static/js/chunk-0ec56e2a.451b4fb4.js
  17. 0 0
      dist/static/js/chunk-11ff1a32.82ae86aa.js
  18. 0 0
      dist/static/js/chunk-138f7583.e87e3174.js
  19. 0 0
      dist/static/js/chunk-143f34d0.5db43294.js
  20. 0 0
      dist/static/js/chunk-16a60d86.9b780238.js
  21. 0 0
      dist/static/js/chunk-16c4b6aa.4a27728a.js
  22. 0 0
      dist/static/js/chunk-194e2959.87591c9d.js
  23. 0 0
      dist/static/js/chunk-1a853461.275a9926.js
  24. 0 0
      dist/static/js/chunk-1bb467bc.ce3306c0.js
  25. 0 0
      dist/static/js/chunk-1cf15dbe.dda523cd.js
  26. 0 0
      dist/static/js/chunk-2216f77a.bb7f3893.js
  27. 0 0
      dist/static/js/chunk-254ac533.3190eeb1.js
  28. 0 0
      dist/static/js/chunk-2a11f130.421ef908.js
  29. 0 0
      dist/static/js/chunk-2c408f43.a63a4965.js
  30. 0 0
      dist/static/js/chunk-2d0d3705.30d9fc65.js
  31. 0 0
      dist/static/js/chunk-3125e59e.d745aa7a.js
  32. 0 0
      dist/static/js/chunk-35464144.5ece6f93.js
  33. 0 0
      dist/static/js/chunk-3ecbedba.6205e478.js
  34. 0 0
      dist/static/js/chunk-4444d405.771a28a8.js
  35. 0 0
      dist/static/js/chunk-44eee83d.cc58a439.js
  36. 0 0
      dist/static/js/chunk-461baa1d.c6b205ce.js
  37. 0 0
      dist/static/js/chunk-48f27aa5.680c5c83.js
  38. 0 0
      dist/static/js/chunk-4ac7f82e.3276d861.js
  39. 0 0
      dist/static/js/chunk-4b6b3cb9.e7ad79d4.js
  40. 0 0
      dist/static/js/chunk-5802c52e.c6d676a5.js
  41. 0 0
      dist/static/js/chunk-5a3bdf57.0c2d0c5f.js
  42. 0 0
      dist/static/js/chunk-6111b966.25e1e8d4.js
  43. 0 0
      dist/static/js/chunk-683feb49.bc813b34.js
  44. 0 0
      dist/static/js/chunk-6a80e4ca.920f0641.js
  45. 0 0
      dist/static/js/chunk-6c81d65e.a7d8189e.js
  46. 0 0
      dist/static/js/chunk-6ddf6871.0bc829fb.js
  47. 0 0
      dist/static/js/chunk-6ec5c8f6.0bdff326.js
  48. 0 0
      dist/static/js/chunk-708604c0.40fde57e.js
  49. 0 0
      dist/static/js/chunk-708c45dc.4e20c7e3.js
  50. 0 0
      dist/static/js/chunk-72e66010.7eb102ba.js
  51. 0 0
      dist/static/js/chunk-77bc8fb9.4e5e5203.js
  52. 0 0
      dist/static/js/chunk-7a88741c.3aeb7152.js
  53. 0 0
      dist/static/js/chunk-7b81ddc1.9dc5bee0.js
  54. 0 0
      dist/static/js/chunk-9235c1ae.dfcba5b5.js
  55. 0 0
      dist/static/js/chunk-935ebfea.0119c1b6.js
  56. 0 0
      dist/static/js/chunk-cda0aa98.86494b4b.js
  57. 0 0
      dist/static/js/chunk-cdf4eda6.7f34d850.js
  58. 0 0
      dist/static/js/chunk-dfd55446.7bd239e1.js
  59. 0 0
      dist/static/js/chunk-e03d00b0.b8b12764.js
  60. 0 0
      dist/static/js/chunk-e0a8cdc0.dc035f64.js
  61. 0 0
      dist/static/js/chunk-libs.a90e0ecf.js
  62. 5 5
      src/components/FilePreview/index.vue
  63. 1 1
      src/views/document/com/view.vue
  64. 1 1
      src/views/document/viewCreate.vue
  65. 19 0
      src/views/knowledgeMenu/category/components/dataSearch.vue
  66. 2 1
      src/views/knowledgeMenu/category/knowledgeSet.vue
  67. 3 3
      src/views/login/aiIndex.vue
  68. 152 148
      src/views/project/components/dataList.vue

+ 1 - 1
.env.development

@@ -3,7 +3,7 @@ ENV = 'development'
 port = 8080
 # base api
 VUE_APP_BASE_AI_API='https://ylaiapi.raycos.com.cn'
-VUE_APP_BASE_API = 'http://192.168.66.187:8084'
+VUE_APP_BASE_API = 'http://192.168.66.163:8084'
 #192.168.66.187
 #朱:192.168.66.163
 #测试服务器:121.36.251.245

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/index.html


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/css/app.5bf33343.css


+ 0 - 0
dist/static/css/chunk-2216f77a.30cf7b33.css → dist/static/css/chunk-143f34d0.affe1720.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/css/chunk-5802c52e.1c89a016.css


+ 0 - 0
dist/static/css/chunk-3125e59e.e7ff2f91.css → dist/static/css/chunk-dfd55446.affe1720.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/css/chunk-e03d00b0.fcc2dcbb.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/css/chunk-e0a8cdc0.3e6a7fec.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/app.8b236e19.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/app.ba18f133.js


+ 0 - 0
dist/static/js/chunk-0074d5fe.c1436b98.js → dist/static/js/chunk-0074d5fe.07e7a26b.js


+ 0 - 0
dist/static/js/chunk-01f26467.d812d0c8.js → dist/static/js/chunk-01f26467.476ed5ec.js


+ 0 - 0
dist/static/js/chunk-091613b3.8c11eea6.js → dist/static/js/chunk-091613b3.3dfa26cf.js


+ 0 - 0
dist/static/js/chunk-09f78c22.eee9c21f.js → dist/static/js/chunk-09f78c22.2e37f5c5.js


+ 0 - 0
dist/static/js/chunk-0c9d75e0.4b858ba3.js → dist/static/js/chunk-0c9d75e0.1e8a58c3.js


+ 0 - 0
dist/static/js/chunk-0ec56e2a.499ad863.js → dist/static/js/chunk-0ec56e2a.451b4fb4.js


+ 0 - 0
dist/static/js/chunk-11ff1a32.71613439.js → dist/static/js/chunk-11ff1a32.82ae86aa.js


+ 0 - 0
dist/static/js/chunk-138f7583.5920e15c.js → dist/static/js/chunk-138f7583.e87e3174.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-143f34d0.5db43294.js


+ 0 - 0
dist/static/js/chunk-16a60d86.3b0fda44.js → dist/static/js/chunk-16a60d86.9b780238.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-16c4b6aa.4a27728a.js


+ 0 - 0
dist/static/js/chunk-194e2959.4082741d.js → dist/static/js/chunk-194e2959.87591c9d.js


+ 0 - 0
dist/static/js/chunk-1a853461.887c4a29.js → dist/static/js/chunk-1a853461.275a9926.js


+ 0 - 0
dist/static/js/chunk-1bb467bc.c7550e05.js → dist/static/js/chunk-1bb467bc.ce3306c0.js


+ 0 - 0
dist/static/js/chunk-1cf15dbe.93d7cf70.js → dist/static/js/chunk-1cf15dbe.dda523cd.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-2216f77a.bb7f3893.js


+ 0 - 0
dist/static/js/chunk-254ac533.a0d7787e.js → dist/static/js/chunk-254ac533.3190eeb1.js


+ 0 - 0
dist/static/js/chunk-2a11f130.8750a584.js → dist/static/js/chunk-2a11f130.421ef908.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-2c408f43.a63a4965.js


+ 0 - 0
dist/static/js/chunk-2d0d3705.6c0bd1f2.js → dist/static/js/chunk-2d0d3705.30d9fc65.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-3125e59e.d745aa7a.js


+ 0 - 0
dist/static/js/chunk-35464144.42134520.js → dist/static/js/chunk-35464144.5ece6f93.js


+ 0 - 0
dist/static/js/chunk-3ecbedba.c2c4c65f.js → dist/static/js/chunk-3ecbedba.6205e478.js


+ 0 - 0
dist/static/js/chunk-4444d405.f0a365c5.js → dist/static/js/chunk-4444d405.771a28a8.js


+ 0 - 0
dist/static/js/chunk-44eee83d.cd40a825.js → dist/static/js/chunk-44eee83d.cc58a439.js


+ 0 - 0
dist/static/js/chunk-461baa1d.ad052acd.js → dist/static/js/chunk-461baa1d.c6b205ce.js


+ 0 - 0
dist/static/js/chunk-48f27aa5.d9888afd.js → dist/static/js/chunk-48f27aa5.680c5c83.js


+ 0 - 0
dist/static/js/chunk-4ac7f82e.18f20846.js → dist/static/js/chunk-4ac7f82e.3276d861.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-4b6b3cb9.e7ad79d4.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-5802c52e.c6d676a5.js


+ 0 - 0
dist/static/js/chunk-5a3bdf57.9f478b75.js → dist/static/js/chunk-5a3bdf57.0c2d0c5f.js


+ 0 - 0
dist/static/js/chunk-6111b966.7669d489.js → dist/static/js/chunk-6111b966.25e1e8d4.js


+ 0 - 0
dist/static/js/chunk-683feb49.a3e8b1f1.js → dist/static/js/chunk-683feb49.bc813b34.js


+ 0 - 0
dist/static/js/chunk-6a80e4ca.7cac3124.js → dist/static/js/chunk-6a80e4ca.920f0641.js


+ 0 - 0
dist/static/js/chunk-6c81d65e.6e64ae41.js → dist/static/js/chunk-6c81d65e.a7d8189e.js


+ 0 - 0
dist/static/js/chunk-6ddf6871.8834fc35.js → dist/static/js/chunk-6ddf6871.0bc829fb.js


+ 0 - 0
dist/static/js/chunk-6ec5c8f6.70827d97.js → dist/static/js/chunk-6ec5c8f6.0bdff326.js


+ 0 - 0
dist/static/js/chunk-708604c0.f4d9629d.js → dist/static/js/chunk-708604c0.40fde57e.js


+ 0 - 0
dist/static/js/chunk-708c45dc.d358c815.js → dist/static/js/chunk-708c45dc.4e20c7e3.js


+ 0 - 0
dist/static/js/chunk-72e66010.d3539583.js → dist/static/js/chunk-72e66010.7eb102ba.js


+ 0 - 0
dist/static/js/chunk-77bc8fb9.98f6551b.js → dist/static/js/chunk-77bc8fb9.4e5e5203.js


+ 0 - 0
dist/static/js/chunk-7a88741c.e0a32ae3.js → dist/static/js/chunk-7a88741c.3aeb7152.js


+ 0 - 0
dist/static/js/chunk-7b81ddc1.5587853c.js → dist/static/js/chunk-7b81ddc1.9dc5bee0.js


+ 0 - 0
dist/static/js/chunk-9235c1ae.eafdb69a.js → dist/static/js/chunk-9235c1ae.dfcba5b5.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-935ebfea.0119c1b6.js


+ 0 - 0
dist/static/js/chunk-cda0aa98.df79cfe9.js → dist/static/js/chunk-cda0aa98.86494b4b.js


+ 0 - 0
dist/static/js/chunk-cdf4eda6.358b9435.js → dist/static/js/chunk-cdf4eda6.7f34d850.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-dfd55446.7bd239e1.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-e03d00b0.b8b12764.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/chunk-e0a8cdc0.dc035f64.js


+ 0 - 0
dist/static/js/chunk-libs.039883c0.js → dist/static/js/chunk-libs.a90e0ecf.js


+ 5 - 5
src/components/FilePreview/index.vue

@@ -607,10 +607,10 @@ export default {
         }
 
         // 正确获取起始点和终点坐标
-        const startX = coords[2]; // x1
-        const endY = coords[0]; // y1
-        const endX = coords[3]; // x2
-        const startY = coords[1]; // y2
+        const startX = coords[0]; // x1
+        const endY = coords[1]; // y1
+        const endX = coords[2]; // x2
+        const startY = coords[3]; // y2
 
         // 计算矩形的位置和尺寸
         const highlight = {
@@ -688,7 +688,7 @@ export default {
   <style scoped>
 .file-preview {
   width: 100%;
-  height: 100vh;
+  /* height: 100vh; */
   overflow: hidden;
   display: flex;
   flex-direction: column;

+ 1 - 1
src/views/document/com/view.vue

@@ -29,7 +29,7 @@
 <script>
 import { exportDocument } from "@/api/document";
 import TextArea from "./components/TextView";
-import htmlDocx from "html-docx-js/dist/html-docx";
+/* import htmlDocx from "html-docx-js/dist/html-docx"; */
 import jsPDF from "jspdf";
 import html2canvas from "html2canvas";
 import { findData } from "@/api/sourceData";

+ 1 - 1
src/views/document/viewCreate.vue

@@ -701,7 +701,7 @@ import {
 import ViewForm from "./com/view";
 import elDragDialog from "@/directive/el-drag-dialog";
 import draggable from "vuedraggable";
-import htmlDocx from "html-docx-js/dist/html-docx";
+/* import htmlDocx from "html-docx-js/dist/html-docx"; */
 import { searchFormula } from "@/api/formula";
 import axios from "axios";
 import settings from "@/settings";

+ 19 - 0
src/views/knowledgeMenu/category/components/dataSearch.vue

@@ -164,6 +164,11 @@ export default {
         };
       },
     },
+    currentFolderId: {
+      // 添加新的 prop 接收当前选中的目录 ID
+      type: [String, Number],
+      default: "",
+    },
   },
   data() {
     // 自定义验证函数
@@ -270,6 +275,20 @@ export default {
       folderList: [], // 确保这个字段存在
     };
   },
+  watch: {
+    currentFolderId: {
+      handler(newVal) {
+        // 确保类型转换正确处理
+        if (newVal === "001" || newVal === "") {
+          this.uploadForm.doc_type_id = "";
+        } else {
+          // 将值转换为数字类型
+          this.uploadForm.doc_type_id = Number(newVal) || "";
+        }
+      },
+      immediate: true,
+    },
+  },
   mounted() {
     this.url = process.env.VUE_APP_BASE_API;
     this.queryForm.bucket_id = this.$route.query.id;

+ 2 - 1
src/views/knowledgeMenu/category/knowledgeSet.vue

@@ -52,6 +52,7 @@
       <dataSearch
         @bindSetQuery="setQuery"
         @refreshFolders="typeList"
+        :currentFolderId="queryForm.doc_type_id" 
       ></dataSearch>
       <!--  <dataList
         :queryForm="queryForm"
@@ -1143,7 +1144,7 @@ export default {
             // Start checking the status immediately after successful API call
             setTimeout(() => {
               this.startAnalysisStatusChecker(row);
-            });
+            },5000);
           } else {
             this.$message.error("解析请求失败");
             this.$set(row, "run", 0);

+ 3 - 3
src/views/login/aiIndex.vue

@@ -402,7 +402,7 @@ export default {
         }
       }
       const chatId = this.getUuid();
-      const wsUrl = `${process.env.VUE_APP_BASE_AI_API}/chatbot/multimodal`;
+      const wsUrl = `${process.env.VUE_APP_BASE_API}/chatbot/multimodal`;
       let message = this.userInput.trim();
       
       const imageUrls = this.uploadFiles
@@ -560,7 +560,7 @@ export default {
     },
 
     async handleResponse(value, existingMessage) {
-      const data = value.data.answer.answer;
+      const data = value.data.answer;
 
       existingMessage.messageType = data;
       /* existingMessage.time = data.timestamp; */
@@ -581,7 +581,7 @@ export default {
         });
         sourceText += "</ol></div>";
       }
-
+      console.log(mainText);
       // 先进行主要内容的打字效果
       await this.typeMessage(existingMessage, mainText);
 

+ 152 - 148
src/views/project/components/dataList.vue

@@ -210,9 +210,9 @@
                 <el-dropdown-menu>
                   <el-dropdown-item command="word">Word格式</el-dropdown-item>
                   <el-dropdown-item command="pdf">PDF格式</el-dropdown-item>
-                  <!-- <el-dropdown-item command="pdf-to-word"
+                  <el-dropdown-item command="pdf-to-word"
                     >PDF转Word</el-dropdown-item
-                  > -->
+                  >
                 </el-dropdown-menu>
               </template>
             </el-dropdown>
@@ -410,174 +410,172 @@ export default {
       }
     },
 
-    // 修改后的导出文档方法
+    // 修改导出文档方法,确保表格有边框
     async exportDocument(template) {
       try {
-        // 解析模版内容
         const templateData = JSON.parse(template.data || "[]");
 
-        // 创建一个临时的容器来存放内容
+        // 创建一个处理样式的函数
+        const processStyles = (element) => {
+          // 保留原有的样式
+          const originalStyle = element.getAttribute("style") || "";
+
+          // 处理字体颜色
+          const color = window.getComputedStyle(element).color;
+          if (color && color !== "rgb(0, 0, 0)") {
+            element.style.color = color;
+          }
+
+          // 处理字体大小
+          const fontSize = window.getComputedStyle(element).fontSize;
+          if (fontSize && fontSize !== "16px") {
+            element.style.fontSize = fontSize;
+          }
+
+          // 处理字体粗细
+          const fontWeight = window.getComputedStyle(element).fontWeight;
+          if (fontWeight && fontWeight !== "normal") {
+            element.style.fontWeight = fontWeight;
+          }
+
+          // 处理背景色
+          const backgroundColor =
+            window.getComputedStyle(element).backgroundColor;
+          if (backgroundColor && backgroundColor !== "transparent") {
+            element.style.backgroundColor = backgroundColor;
+          }
+
+          // 处理对齐方式
+          const textAlign = window.getComputedStyle(element).textAlign;
+          if (textAlign && textAlign !== "left") {
+            element.style.textAlign = textAlign;
+          }
+        };
+
         const contentContainer = document.createElement("div");
         contentContainer.className = "content";
 
-        // 处理每个模版段落
-        templateData.forEach((item) => {
+        templateData.forEach((item, index) => {
           const templateSection = document.createElement("div");
           templateSection.className = "template-textarea";
 
-          // 创建临时div来解析HTML
           const tempDiv = document.createElement("div");
           tempDiv.innerHTML = item.content;
 
-          // 处理标题格式
-          tempDiv
-            .querySelectorAll("h1, h2, h3, h4, h5, h6")
-            .forEach((heading) => {
-              heading.style.fontWeight = "bold";
-              heading.style.margin = "1em 0";
-
-              switch (heading.tagName.toLowerCase()) {
-                case "h1":
-                  heading.style.fontSize = "24pt";
-                  break;
-                case "h2":
-                  heading.style.fontSize = "18pt";
-                  break;
-                case "h3":
-                  heading.style.fontSize = "14pt";
-                  break;
-                case "h4":
-                case "h5":
-                case "h6":
-                  heading.style.fontSize = "12pt";
-                  break;
-              }
-            });
+          // 处理所有元素的样式
+          const allElements = tempDiv.getElementsByTagName("*");
+          Array.from(allElements).forEach((element) => {
+            processStyles(element);
+
+            // 特别处理表格
+            if (element.tagName === "TABLE") {
+              element.style.borderCollapse = "collapse";
+              element.style.width = "100%";
+              element.style.border = "1pt solid windowtext";
+              element.style.msoTableLspace = "0pt";
+              element.style.msoTableRspace = "0pt";
+              element.style.msoBorderAlt = "solid windowtext .5pt";
+              element.style.msoPaddingAlt = "0cm 5.4pt 0cm 5.4pt";
+            }
+
+            // 处理表格单元格
+            if (element.tagName === "TD" || element.tagName === "TH") {
+              element.style.border = "1pt solid windowtext";
+              element.style.padding = "5pt";
+              element.style.msoBorderAlt = "solid windowtext .5pt";
 
-          // 处理表格
-          tempDiv.querySelectorAll("table").forEach((table) => {
-            // 设置表格属性
-            table.setAttribute("border", "1");
-            table.setAttribute("cellspacing", "0");
-            table.setAttribute("cellpadding", "5");
-            table.style.borderCollapse = "collapse";
-            table.style.width = "100%";
-            table.style.border = "1px solid black";
-
-            // 处理所有单元格
-            const cells = table.querySelectorAll("td, th");
-            cells.forEach((cell) => {
-              cell.style.border = "1px solid black";
-              cell.style.padding = "5px";
-              if (cell.tagName === "TH") {
-                cell.style.backgroundColor = "#f0f0f0";
-                cell.style.fontWeight = "bold";
+              if (element.tagName === "TH") {
+                element.style.backgroundColor = "#f0f0f0";
+                element.style.fontWeight = "bold";
               }
-            });
+            }
           });
 
           templateSection.innerHTML = tempDiv.innerHTML;
           contentContainer.appendChild(templateSection);
         });
 
-        // 构建HTML内容
         let contentData = `
-        <!DOCTYPE html>
-        <html xmlns:o='urn:schemas-microsoft-com:office:office' 
-              xmlns:w='urn:schemas-microsoft-com:office:word'
-              xmlns='http://www.w3.org/TR/REC-html40'>
-        <head>
-          <meta charset="UTF-8">
-          <title>${template.title}</title>
-          <xml>
-            <w:WordDocument>
-              <w:View>Print</w:View>
-              <w:Zoom>100</w:Zoom>
-              <w:DoNotOptimizeForBrowser/>
-            </w:WordDocument>
-          </xml>
-          <style>
-            /* 重置样式 */
-            * {
-              margin: 0;
-              padding: 0;
-              box-sizing: border-box;
-            }
-            
-            /* 页面设置 */
-            @page {
-              size: A4;
-              margin: 2cm;
-            }
-            
-            /* 基本样式 */
-            body {
-              font-family: "Times New Roman", SimSun, serif;
-              font-size: 12pt;
-              line-height: 1.5;
-            }
-            
-            /* 标题样式 */
-            h1 { font-size: 24pt; margin: 1em 0; }
-            h2 { font-size: 18pt; margin: 1em 0; }
-            h3 { font-size: 14pt; margin: 1em 0; }
-            h4, h5, h6 { font-size: 12pt; margin: 1em 0; }
-            
-            /* 表格样式 */
-            table {
-              width: 100%;
-              border-collapse: collapse;
-              border: 1px solid black;
-              margin: 1em 0;
-              mso-table-lspace: 0pt;
-              mso-table-rspace: 0pt;
-              mso-border-alt: solid windowtext .5pt;
-            }
-            
-            td, th {
-              border: 1px solid black;
-              padding: 5px;
-              mso-border-alt: solid windowtext .5pt;
-            }
-            
-            th {
-              background-color: #f0f0f0;
-              font-weight: bold;
-            }
-            
-            /* Word特定样式 */
-            .MsoNormal {
-              margin-bottom: .0001pt;
-              text-align: justify;
-              text-justify: inter-ideograph;
-            }
-            
-            /* 分页控制 */
-            .template-textarea {
-              page-break-after: always;
-            }
-            
-            /* 隐藏目录 */
-            .TOC {
-              display: none !important;
-            }
-          </style>
-          <!--[if gte mso 9]>
-          <xml>
-            <w:WordDocument>
-              <w:View>Print</w:View>
-              <w:Zoom>100</w:Zoom>
-              <w:DoNotOptimizeForBrowser/>
-            </w:WordDocument>
-          </xml>
-          <![endif]-->
-        </head>
-        <body>
-          ${contentContainer.innerHTML}
-        </body>
-        </html>`;
+    <!DOCTYPE html>
+    <html xmlns:o='urn:schemas-microsoft-com:office:office' 
+          xmlns:w='urn:schemas-microsoft-com:office:word'
+          xmlns:v='urn:schemas-microsoft-com:vml'
+          xmlns='http://www.w3.org/TR/REC-html40'>
+    <head>
+      <meta charset="UTF-8">
+      <xml>
+        <w:WordDocument>
+          <w:View>Print</w:View>
+          <w:Zoom>100</w:Zoom>
+          <w:DoNotOptimizeForBrowser/>
+          <w:TrackMoves>false</w:TrackMoves>
+          <w:TrackFormatting/>
+          <w:ValidateAgainstSchemas/>
+          <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+          <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+          <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+          <w:DoNotPromoteQF/>
+          <w:LidThemeOther>EN-US</w:LidThemeOther>
+          <w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
+          <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+          <w:Compatibility>
+            <w:BreakWrappedTables/>
+            <w:SnapToGridInCell/>
+            <w:WrapTextWithPunct/>
+            <w:UseAsianBreakRules/>
+            <w:DontGrowAutofit/>
+            <w:SplitPgBreakAndParaMark/>
+            <w:EnableOpenTypeKerning/>
+            <w:DontFlipMirrorIndents/>
+            <w:OverrideTableStyleHps/>
+          </w:Compatibility>
+        </w:WordDocument>
+      </xml>
+      <style>
+        /* 基础样式 */
+        body, div, table, td, p {
+          font-family: "SimSun", "宋体", serif;
+          font-size: 10.5pt;
+          line-height: 1.5;
+        }
+        
+        /* 表格样式 */
+        table {
+          border-collapse: collapse;
+          width: 100%;
+          mso-table-layout-alt: fixed;
+          mso-padding-alt: 0cm 5.4pt 0cm 5.4pt;
+          border:1px solid #000 !important;
+        }
+        
+        /* 分页样式 */
+        .template-textarea {
+          page-break-after: always;
+        }
+        
+        /* Word特定样式 */
+        @page {
+          mso-page-orientation: portrait;
+          margin: 1.0in;
+        }
+        
+        /* 确保中文正确显示 */
+        @font-face {
+          font-family: "SimSun";
+          panose-1: 2 1 6 0 3 1 1 1 1 1;
+          mso-font-alt: SimSun;
+          mso-font-charset: 134;
+          mso-generic-font-family: auto;
+          mso-font-pitch: variable;
+          mso-font-signature: 3 680460288 22 0 262145 0;
+        }
+      </style>
+    </head>
+    <body>
+      ${contentContainer.innerHTML}
+    </body>
+    </html>`;
 
-        // 调用导出接口
         const res = await exportDocument({
           content: contentData,
           title: template.title,
@@ -585,6 +583,13 @@ export default {
             format: "docx",
             encoding: "utf-8",
             preserveStyles: true,
+            pageOrientation: "portrait",
+            margins: {
+              top: "2.54cm",
+              right: "2.54cm",
+              bottom: "2.54cm",
+              left: "2.54cm",
+            },
           },
         });
 
@@ -593,7 +598,6 @@ export default {
           return;
         }
 
-        // 处理文件下载
         const link = document.createElement("a");
         link.href = res.data.file_path;
         link.download = `${template.title}.docx`;

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov