From 3dc3d79e10232c821db66a952341b2daae80e0e1 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期二, 16 十二月 2025 17:17:47 +0800
Subject: [PATCH] 修改

---
 src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectReview/index.vue |  122 ++++++++++++++++++++++++++++++++--------
 1 files changed, 98 insertions(+), 24 deletions(-)

diff --git a/src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectReview/index.vue b/src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectReview/index.vue
index 5b3361a..098b7e7 100644
--- a/src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectReview/index.vue
+++ b/src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectReview/index.vue
@@ -12,7 +12,7 @@
               v-hasPermi="['projectReview:add']"
           >新增</el-button>
         </el-form-item>
-        <el-form-item v-if="isAdmin" label="企业:" >
+        <el-form-item v-if="isAdmin" label="单位:" >
           <el-select v-model="data.queryParams.companyId" placeholder="请选择" @change="changeCom" clearable>
             <el-option
                 v-for="item in companyList"
@@ -37,6 +37,17 @@
 <!--            </el-option>-->
 <!--          </el-select>-->
 
+        </el-form-item>
+        <el-form-item label="类型:">
+          <el-select v-model="data.queryParams.type" filterable placeholder="请选择"
+          >
+            <el-option
+                v-for="item in data.typeList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id">
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item >
           <el-button  type="primary" @click="getList">查询</el-button>
@@ -109,7 +120,9 @@
 import {delReview, getReviewPage, sendReview} from "@/api/selfProblems/projectReview";
 import axios from "axios";
 import {getToken} from "@/utils/auth";
+// import {generateWordDocument} from "@/views/build/conpanyFunctionConsult/digitalFileDep/manageType/qualityManual/components/exportDoc";
 import {generateWordDocument} from "@/utils/exportWord";
+import {imageUrlToBase64} from "@/utils/imageToBase";
 const userStore = useUserStore()
 const { proxy } = getCurrentInstance();
 const loading = ref(false);
@@ -120,14 +133,24 @@
     pageNum: 1,
     pageSize: 10,
     companyId: null,
-    itemName: null
+    itemName: null,
+    type:null
   },
   total: 0,
   dataList: [],
   companyList: [],
   industryList: [],
   isAdmin: false,
-  typeList: [],
+  typeList: [
+    {
+      id: 1,
+      name: '会签评审'
+    },
+    {
+      id: 2,
+      name: '会议评审'
+    },
+  ],
   exportDialog: false,
   projectList: [],
 
@@ -201,7 +224,8 @@
       pageNum: 1,
       pageSize: 10,
       companyId: null,
-      itemId: null
+      itemId: null,
+      type:null
     }
     await getCompanyList()
   }else {
@@ -209,7 +233,8 @@
       pageNum: 1,
       pageSize: 10,
       companyId: data.queryParams.companyId,
-      itemId: null
+      itemId: null,
+      type:null
     }
   }
   choosedData.value = []
@@ -239,7 +264,7 @@
 const openFile = async(path)=>{
   const ext = path.split('.').pop().toLowerCase();
   if (ext === 'doc') {
-    ElMessageBox.confirm('暂不支持线上预览.doc文件,是否下载查看?', '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning' }).then(() => {
+    ElMessageBox.confirm('暂不支持线上预览.doc、.xls、.xlsx文件,是否下载查看?', '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning' }).then(() => {
       window.open(`${import.meta.env.VITE_APP_BASE_API}/${path}`, '_blank');
     }).catch(() => {
       console.log('取消预览')
@@ -330,34 +355,83 @@
 const templatePath = ref('/projectReviewExample.docx')
 const startGeneration = async () => {
   const data = JSON.parse(JSON.stringify(choosedData.value))
-  data.forEach(item => {
-    item.leaderList = item.reviewUsers.filter(item => item.reviewType == '评审组长').map((x,index) => {
-      return {
-        ...x,
-        first: index === 0
 
+  for(const item of data){
+    item.leaderList = await Promise.all(
+        item.reviewUsers
+            .filter(user => user.reviewType === '评审组长')
+            .map(async (x, index) => {
+              let signBase64 = '';
+              if (x.sign != '') {
+                try {
+                  const url = import.meta.env.VITE_APP_BASE_API + '/' + x.sign;
+                  signBase64 = await imageUrlToBase64(url, {
+                    format: 'png',
+                    quality: 0.8
+                  });
+                } catch (err) {
+                  signBase64 = '';
+                }
+              }
+              return {
+                ...x,
+                first: index === 0,
+                sign: signBase64 || '',
+                reviewOpinionName: x.reviewOpinion == 1 ? '同意':x.reviewOpinion == 2 ? '不同意':'',
+                reviewTime: x.reviewTime ?x.reviewTime: ''
+              };
+            })
+    );
+    item.leaderAgre = item.leaderList.filter(item => item.reviewOpinion == 1)
+
+    // 2. 处理 peopleList:同样用 Promise.all 等待异步完成
+    item.peopleList = await Promise.all(
+        item.reviewUsers
+            .filter(user => user.reviewType === '评审组员')
+            .map(async (x, index) => {
+              let signBase64 = '';
+              if (x.sign != '') {
+                try {
+                  const url = import.meta.env.VITE_APP_BASE_API + '/' + x.sign;
+                  signBase64 = await imageUrlToBase64(url, {
+                    format: 'png',
+                    quality: 0.8
+                  });
+                } catch (err) {
+                  signBase64 = '';
+                }
+              }
+              return {
+                ...x,
+                first: index === 0,
+                sign: signBase64 || '',
+                reviewOpinionName: x.reviewOpinion == 1 ? '同意':x.reviewOpinion == 2 ? '不同意':'',
+                reviewTime: x.reviewTime ?x.reviewTime: ''
+              };
+            })
+    );
+    const productList = item.projectDocuments.map(i => i.fileName)
+    const processList = item.processInspections.map(i => i.fileName)
+    item.productItems = productList.concat(processList).map(item => {
+      return {
+        name:item
       }
     })
-    item.peopleList = item.reviewUsers.filter(item => item.reviewType == '评审组员').map((x,index) => {
-      return {
-        ...x,
-        first: index === 0
-
-      }
-    })
-    item.leaderTime = item.leaderTime?.substring(0,10)
-    item.groupTime = item.groupTime?.substring(0,10)
-    console.log(' item.tableList', item.tableList)
+    console.log('item.productItems', item.productItems)
     try {
-      generateWordDocument(templatePath.value, item, item.itemName + `_项目审批表.docx`);
-    } catch (error){
+      generateWordDocument(templatePath.value, item, item.itemName + `_${item.stage}审批表.docx`);
+    } catch (error) {
       ElMessage({
         type: 'warning',
         message: '导出失败'
       });
     }
-  })
+
+
+  }
 }
+
+
 const changeCom = () => {
   getProjectList()
 }

--
Gitblit v1.9.2