From 477cdf0e4f9574ea9d1506af8b00bb875209cef7 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期四, 30 十月 2025 13:36:19 +0800
Subject: [PATCH] 修改

---
 src/views/work/selfProblems/internalAudit/innerReviewSheet/index.vue |  126 +++++++++++++++++++-----------------------
 1 files changed, 57 insertions(+), 69 deletions(-)

diff --git a/src/views/work/selfProblems/internalAudit/innerReviewSheet/index.vue b/src/views/work/selfProblems/internalAudit/innerReviewSheet/index.vue
index 86fa2e4..4f1f8a7 100644
--- a/src/views/work/selfProblems/internalAudit/innerReviewSheet/index.vue
+++ b/src/views/work/selfProblems/internalAudit/innerReviewSheet/index.vue
@@ -8,6 +8,7 @@
               plain
               icon="Plus"
               @click="openDialog('add',{})"
+              v-hasPermi="['innerReviewSheet:list:add']"
           >新增</el-button>
         </el-form-item>
         <el-form-item v-if="isAdmin" label="企业:" >
@@ -24,21 +25,28 @@
           <el-button v-if="isAdmin" type="primary" @click="getList">查询</el-button>
           <el-button v-if="isAdmin" type="primary" plain @click="reset">重置</el-button>
         </el-form-item>
+        <el-form-item style="margin-left: -20px">
+          <el-button
+              type="primary"
+              @click="exportData"
+          >导出</el-button>
+        </el-form-item>
       </el-form>
     </div>
     <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column type="index" label="序号"></el-table-column>
+    <el-table v-loading="loading" :data="dataList" :border="true"  @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" />
+      <el-table-column type="index" align="center" label="序号" width="80"></el-table-column>
       <el-table-column label="检查表" align="center">
         <template #default="scope">
           {{scope.row.deptName }}内审检查表
         </template>
       </el-table-column>
+      <el-table-column label="受审核部门" prop="deptName" align="center"></el-table-column>
       <el-table-column label="操作" align="center">
         <template #default="scope">
-          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button link type="primary" @click="downloadFile(scope.row.id)">导出</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
+          <el-button link type="primary" @click="openDialog('edit',scope.row)" v-hasPermi="['innerReviewSheet:list:edit']">编辑</el-button>
+          <el-button link type="danger" @click="handleDelete(scope.row)" v-hasPermi="['innerReviewSheet:list:del']">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -77,6 +85,7 @@
 const { proxy } = getCurrentInstance();
 const loading = ref(false);
 const dialogRef = ref();
+const choosedData = ref([])
 const data = reactive({
   queryParams: {
     pageNum: 1,
@@ -96,6 +105,7 @@
     data.isAdmin = true
     await getCompanyList()
   }else{
+
     data.isAdmin = false
     data.queryParams.companyId = userStore.companyId
   }
@@ -112,6 +122,7 @@
   if(res.code == 200){
     data.dataList = res.data.list || []
     data.total = res.data.total
+    console.log('x',data.dataList)
   }else{
     ElMessage.warning(res.message)
   }
@@ -131,71 +142,8 @@
     ElMessage.warning(res.message)
   }
 }
-
-const downloadFile = async (id)=>{
-  const res = await getInternalAuditCheckInfo({id: id})
-  if(res.code == 200){
-    if(res.data){
-      let tableData = res.data
-      tableData.content = res.data.caluseNum.split('、').map((i,index)=>i + res.data.caluseContent.split(';\n')[index]).join('\n')
-      tableData.interPeople = res.data.internalAuditCheckPeople.map(i=>i.auditUserName)
-      try {
-        generateWordDocument('/interCheck.docx', tableData, tableData.deptName +'内审检查表.docx');
-      } catch (error){
-        ElMessage({
-          type: 'warning',
-          message: '导出失败'
-        });
-      }
-    }else{
-      ElMessage.warning('暂无数据')
-    }
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-
-const openFile = async(path)=>{
-  const ext = path.split('.').pop().toLowerCase();
-  if (ext === 'doc') {
-    ElMessageBox.confirm('暂不支持线上预览.doc文件,是否下载查看?', '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning' }).then(() => {
-      window.open(`${import.meta.env.VITE_APP_BASE_API}/${path}`, '_blank');
-    }).catch(() => {
-      console.log('取消预览')
-    });
-    return
-  }
-  try {
-    // 1. 获取文件
-    const response = await fetch(import.meta.env.VITE_APP_BASE_API + '/' + path);
-    const arrayBuffer = await response.arrayBuffer();
-    // 2. 创建新窗口
-    const win = window.open('', '_blank');
-    win.document.write(`
-      <!DOCTYPE html>
-      <html>
-        <head>
-          <title>预览</title>
-          <style>
-            body { margin: 20px; font-family: Arial; }
-            .docx-container { width: 100%; height: 100%; }
-          </style>
-        </head>
-        <body>
-          <div id="container" class="docx-container"></div>
-        </body>
-      </html>
-    `);
-    // 3. 渲染 DOCX
-    await renderAsync(arrayBuffer, win.document.getElementById('container'));
-
-  } catch (error) {
-    console.error('预览失败:', error);
-    alert(`预览失败: ${error.message}`);
-  }
-}
-
 const openDialog = (type, value) => {
+
   dialogRef.value.openDialog(type, value, data.queryParams.companyId, data.isAdmin, data.companyList);
 }
 
@@ -206,6 +154,7 @@
     pageSize: 10,
     companyId: null
   }
+  choosedData.value = []
   await getCompanyList()
   await getList()
 }
@@ -228,5 +177,44 @@
         }
       })
 }
+const handleSelectionChange = (val) => {
+  choosedData.value = val
+}
+const exportData = () => {
+  if(choosedData.value && choosedData.value.length === 0){
+    ElMessage.warning('请选择需要导出的数据')
+  }else {
+    startGeneration()
+  }
+}
+const templatePath = ref('')
+const startGeneration = async () => {
+  const data = JSON.parse(JSON.stringify(choosedData.value))
+  data.forEach(item => {
+    templatePath.value = '/innerReviewExport.docx'
+    item.tableData = item.checkCatalogues.map((i,index) => {
+      return{
+        ...i,
+        checkContents: i.checkContents.map((q,qindex) => {
+          return{
+            ...q,
+            first: qindex == 0,
+            well: q.result == 1,
+            fine: q.result == 2,
+            bad: q.result == 3,
+          }
+        })
+      }
+    })
+    try {
+      generateWordDocument(templatePath.value, item, item.deptName+'_内审检查表.docx');
+    } catch (error){
+      ElMessage({
+        type: 'warning',
+        message: '导出失败'
+      });
+    }
+  })
+}
 
 </script>

--
Gitblit v1.9.2