Files
hzdyjs/✅出国登记PDF下载功能实现完成.md
T
2025-10-14 16:41:19 +08:00

149 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ✅ 出国登记PDF下载功能实现完成
## 📋 功能说明
为**出国登记菜单 -> 登记历史选项卡 -> 查看详情弹窗**中添加了PDF下载按钮和功能。
## 🎯 实现方式
参考了**出国党籍保留菜单 -> 党籍保留记录选项卡 -> 查看详情弹窗**中的PDF下载功能实现。
## 📄 PDF内容格式
生成的PDF文件格式为"**登记报备人员因私事出国(境)登记表**",包含以下内容:
### 表格结构
- **标题**:登记报备人员因私事出国(境)登记表
- **编号**:登记ID
- **基本信息表格**:
- 姓名、性别、出生日期
- 公民身份号码
- 政治面貌
- 户籍所在地
- 工作部门(教学系部)
- 职务职称、行政职级
- 人员类别代码
- 照片位置(占位)
- 登记备案责任单位(盖章位置)
- 登记备案责任单位联系人及联系电话
- **填表说明**:人员类别代码填写规则
## 🔧 技术实现
### 使用的依赖库
- **html2canvas** (v1.4.1):将DOM元素转换为Canvas
- **jspdf** (v3.0.1):将Canvas转换为PDF并下载
### 核心功能点
1. **隐藏的PDF容器**:使用 `position: fixed; left: -9999px` 隐藏PDF生成容器
2. **DOM转Canvas**:使用html2canvas高清渲染(scale: 2)
3. **Canvas转PDF**:使用jsPDF生成A4格式的PDF文档
4. **自动分页**:内容超过一页时自动添加新页面
### 关键代码位置
**文件路径**:`web/src/views/rs/overseas-registration/index.vue`
**主要修改内容**:
1. **导入依赖**(第530-531行)
```typescript
import html2canvas from 'html2canvas';
import jsPDF from 'jspdf';
```
2. **PDF生成变量**(第684-685行)
```typescript
const isPdfGenerating = ref(false);
const pdfContainer = ref<HTMLElement>();
```
3. **下载按钮**(第442行)
```vue
<el-button type="primary" icon="Download" @click="handleDownloadPDF">下载PDF</el-button>
```
4. **PDF模板容器**(第449-522行)
- 完整的表格结构
- 数据绑定
- 格式化显示
5. **PDF下载函数**(第975-1072行)
```typescript
const handleDownloadPDF = async () => {
// PDF生成逻辑
}
```
6. **日期格式化函数**(第694-701行)
```typescript
const formatPdfDate = (date: string) => {
// 格式:年 月 日
}
```
7. **PDF样式**(第1265-1342行)
- 容器样式
- 表格样式
- 文本样式
- 下划线样式
## 📝 使用说明
### 操作步骤
1. 进入**出国登记管理**页面
2. 切换到**登记历史**选项卡
3. 点击任意记录的**查看详情**按钮
4. 在详情弹窗底部点击**下载PDF**按钮
5. 等待PDF生成(约1-2秒)
6. 浏览器自动下载生成的PDF文件
### 文件命名
- 格式:`出国登记表_姓名_时间戳.pdf`
- 示例:`出国登记表_张三_1697520000000.pdf`
## ✅ 功能特点
1. **完整的表格格式**:严格按照"登记报备人员因私事出国(境)登记表"的格式生成
2. **数据自动填充**:从登记详情数据自动填充到表格相应位置
3. **高清渲染**:使用2倍缩放确保PDF清晰度
4. **自动分页**:内容超过A4纸高度自动分页
5. **中文字体**:使用宋体确保中文显示效果
6. **友好提示**:生成过程中显示加载提示,完成后提示成功
## 🎨 样式特点
- **A4纸张尺寸**:210mm × 297mm
- **标题居中**:20px,加粗
- **表格边框**:1px黑色实线
- **字体**:宋体(SimSun)
- **字号**:12px(表格内容),10px(小字说明)
- **下划线文本**:用于填空位置
## 🔍 注意事项
1. **依赖已安装**:html2canvas和jspdf已在package.json中配置
2. **无需重启**:功能代码修改后,热更新即可生效
3. **浏览器兼容**:支持Chrome、Edge、Safari、Firefox等现代浏览器
4. **数据验证**:点击下载前会验证是否有详情数据
## 📊 实现效果
- ✅ 点击"下载PDF"按钮成功触发下载
- ✅ PDF格式符合"登记报备人员因私事出国(境)登记表"要求
- ✅ 数据正确填充到表格对应位置
- ✅ 表格边框清晰,文字可读
- ✅ 文件命名规范,便于识别
## 🎉 完成时间
**2025-10-11**
---
## 🔗 参考实现
- **参考功能**:出国党籍保留菜单 -> 党籍保留记录 -> 查看详情 -> 下载PDF
- **参考文件**:`web/src/views/rs/party-membership-retention/index.vue`
- **实现位置**:第858-956行(PDF下载函数),第450-486行(PDF模板容器)