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