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

4.5 KiB
Raw Blame History

✅ 出国登记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行)

    import html2canvas from 'html2canvas';
    import jsPDF from 'jspdf';
    
  2. PDF生成变量(第684-685行)

    const isPdfGenerating = ref(false);
    const pdfContainer = ref<HTMLElement>();
    
  3. 下载按钮(第442行)

    <el-button type="primary" icon="Download" @click="handleDownloadPDF">下载PDF</el-button>
    
  4. PDF模板容器(第449-522行)

    • 完整的表格结构
    • 数据绑定
    • 格式化显示
  5. PDF下载函数(第975-1072行)

    const handleDownloadPDF = async () => {
      // PDF生成逻辑
    }
    
  6. 日期格式化函数(第694-701行)

    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模板容器)