From 56c9b08d1c1c978ee3933d074b4d020026686915 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期三, 09 七月 2025 14:26:30 +0800
Subject: [PATCH] 修改

---
 src/views/build/conpanyFunctionConsult/qualityObjectives/objective/components/objectiveDialog.vue |    2 +-
 src/views/build/conpanyFunctionConsult/qualityObjectives/table/index.vue                          |   13 +++++++++----
 public/tableDeptExample.docx                                                                      |    0 
 src/utils/exportWord.js                                                                           |   19 +++++++++++++++++++
 public/tableCompanyExample.docx                                                                   |    0 
 package.json                                                                                      |    6 ++++--
 src/components/Tinymce/Tinymce.vue                                                                |    5 +++--
 7 files changed, 36 insertions(+), 9 deletions(-)

diff --git a/package.json b/package.json
index a4207a4..cb8aa10 100644
--- a/package.json
+++ b/package.json
@@ -22,9 +22,10 @@
     "@wangeditor/editor": "^5.1.18",
     "@wangeditor/editor-for-vue": "^5.1.12",
     "@wangeditor/plugin-upload-attachment": "^1.1.0",
+    "angular-expressions": "^1.5.0",
     "axios": "0.27.2",
     "docx-preview": "^0.3.5",
-    "docxtemplater": "^3.63.2",
+    "docxtemplater": "^3.65.1",
     "docxtemplater-image-module-free": "^1.1.1",
     "echarts": "5.4.0",
     "element-plus": "2.2.27",
@@ -38,10 +39,11 @@
     "moment": "^2.30.1",
     "nprogress": "0.2.0",
     "pinia": "2.0.22",
-    "pizzip": "^3.2.0",
+    "pizzip": "^3.1.0",
     "quill": "^2.0.0-dev.3",
     "spark-md5": "^3.0.2",
     "tinymce": "^5.10.2",
+    "tinymce-paragraphspacing": "^1.0.1",
     "video.js": "^8.12.0",
     "vue": "3.2.45",
     "vue-cropper": "1.0.3",
diff --git a/public/tableCompanyExample.docx b/public/tableCompanyExample.docx
index 2180faf..7b1f1ac 100644
--- a/public/tableCompanyExample.docx
+++ b/public/tableCompanyExample.docx
Binary files differ
diff --git a/public/tableDeptExample.docx b/public/tableDeptExample.docx
index 7448677..5b23169 100644
--- a/public/tableDeptExample.docx
+++ b/public/tableDeptExample.docx
Binary files differ
diff --git a/src/components/Tinymce/Tinymce.vue b/src/components/Tinymce/Tinymce.vue
index 5e743ab..d61231a 100644
--- a/src/components/Tinymce/Tinymce.vue
+++ b/src/components/Tinymce/Tinymce.vue
@@ -12,6 +12,7 @@
 import tinymce from "tinymce/tinymce";
 import Editor from "@tinymce/tinymce-vue";
 import { upload } from "@/api/backManage/notice";
+import 'tinymce-paragraphspacing'
 import "tinymce/themes/silver";
 import "tinymce/themes/silver/theme";
 import "tinymce/icons/default/icons";
@@ -46,11 +47,11 @@
         },
         plugins: {
             type: [String, Array],
-            default: "upfile lists image table  wordcount  fullscreen  "
+            default: " paragraphspacing upfile lists image  table  wordcount  fullscreen  "
         },
         toolbar: {
             type: [String, Array],
-            default: " styleselect fontsizeselect | undo redo |  upfile image  bold italic | fontselect |alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists  insertfile  table | removeformat fullscreen  "
+            default: " styleselect fontsizeselect paragraphspacing  |  upfile image  bold italic | fontselect   |alignleft aligncenter alignright alignjustify | bullist numlist outdent indent |  undo redo | lists  insertfile  table | removeformat fullscreen  "
         }
     },
     data() {
diff --git a/src/utils/exportWord.js b/src/utils/exportWord.js
index e0ee5c1..6c7fbe1 100644
--- a/src/utils/exportWord.js
+++ b/src/utils/exportWord.js
@@ -23,6 +23,22 @@
             }
 
             try {
+                // 新版创建解析器的正确方式(无需 import AngularParser)
+                const parser = (tag, _variable) => {
+                    return {
+                        get(scope) {
+                            if (scope[tag] !== undefined) {
+                                return scope[tag] || '';
+                            }
+                            // 处理特殊变量(如 $first)
+                            if (tag.startsWith('$')) {
+                                const varName = tag.slice(1);
+                                return scope[varName] || '';
+                            }
+                            return '';
+                        }
+                    };
+                };
                 // 加载模板文件内容到 PizZip
                 const zip = new PizZip(content);
                 const doc = new Docxtemplater(zip, {
@@ -30,6 +46,9 @@
                     linebreaks: true,
                 });
 
+                // const parser = new AngularParser();
+                // doc.setOptions({ parser });
+
 
                 // 设置模板中的占位符数据
                 doc.setData(data);
diff --git a/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/components/objectiveDialog.vue b/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/components/objectiveDialog.vue
index 02fa9aa..f9085ba 100644
--- a/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/components/objectiveDialog.vue
+++ b/src/views/build/conpanyFunctionConsult/qualityObjectives/objective/components/objectiveDialog.vue
@@ -77,7 +77,7 @@
               <el-input  v-model="state.form.companyName" disabled></el-input>
             </el-form-item>
             <el-form-item  label="部门名称:" prop="departId" v-else-if="state.form.type == 2">
-<!--              <el-cascader v-model="state.form.departId" :options="state.deptList"  />-->
+<!--              <el-cascader v-model="state.form.departId" :disabled="title === '查看'" :options="state.deptList"  />-->
               <el-select
                   :disabled="title === '查看'"
                   v-model="state.form.departId"
diff --git a/src/views/build/conpanyFunctionConsult/qualityObjectives/table/index.vue b/src/views/build/conpanyFunctionConsult/qualityObjectives/table/index.vue
index 530ed77..1b20080 100644
--- a/src/views/build/conpanyFunctionConsult/qualityObjectives/table/index.vue
+++ b/src/views/build/conpanyFunctionConsult/qualityObjectives/table/index.vue
@@ -340,12 +340,17 @@
     const year = now.getFullYear()
     const month = (now.getMonth() +1).toString().padStart(2, '0');
     item.nowDate = year + '-' + month
+    console.log('item.qualityTargets',item.qualityTargets)
     item.tableData = item.qualityTargets.map((i,index) => {
-      return {
+      return{
         ...i,
-        nuum: index+1,
-        nuumRowSpan:`${i.qualityTargetMesses.length}cm`,
-        messageRowSpan:`${i.qualityTargetMesses.length}cm`,
+        qualityTargetMesses: i.qualityTargetMesses.map((q,qindex) => {
+          return{
+            ...q,
+            first: qindex == 0,
+            nuum: index+1
+          }
+        })
       }
     })
     try {

--
Gitblit v1.9.2