当前位置: 首页 > news >正文

如何实现打印功能

一、AI赋能提供思路

基本框架

<!-- 隐藏的打印内容(默认不显示) -->
<div id="print-container" style="display: none;"><h1>退货单打印内容</h1><table><!-- 打印专用的表格结构 --></table>
</div><script>
export default {methods: {handlePrint() {// 临时显示打印内容document.getElementById('print-container').style.display = 'block';// 调用打印window.print();// 打印完成后隐藏(需延迟执行,确保打印已触发)setTimeout(() => {document.getElementById('print-container').style.display = 'none';}, 500);}}
}
</script>

二、具体实操

1.实现显示页面

主要设计:按钮区、主表格区、打印区

<div class="button"><el-button size="mini" type="primary"@click="handlePrint">打印</el-button></div><div class="tableData"><el-table :data="tableData" ref="multiTable" @selection-change="handleSelection"><el-table-column type="selection"></el-table-column><el-table-column prop="id" label="ID"></el-table-column><el-table-column prop="name" label="名字"></el-table-column><el-table-column prop="category" label="种类"></el-table-column><el-table-column prop="price" label="价格"></el-table-column><el-table-column prop="stock" label="库存"></el-table-column><el-table-column prop="date" label="时间"></el-table-column></el-table></div><div id="printData" style="display: none;"><h2>库存表格</h2><table><thead><tr><th>序号</th><th>名字</th><th>种类</th><th>价格</th><th>库存</th><th>时间</th></tr></thead><tbody><tr v-for="(row,index) in selectRow" :key="row.id"><th>{{ index+1 }}</th><th>{{ row.name }}</th><th>{{ row.category }}</th><th>{{ row.price }}</th><th>{{ row.stock }}</th><th>{{ row.date }}</th></tr></tbody></table></div>

2.准备基础数据

响应信息

{"code": 200,"message": "success","data": [{"id": 1,"name": "华为Mate 60 Pro","category": "手机","price": 6999,"stock": 120,"date": "2023-10-01"},{"id": 2,"name": "苹果iPhone 15","category": "手机","price": 7999,"stock": 85,"date": "2023-09-20"}]
}

数据接收

data() {return {tableData: [],loading: false};},methods: {async fetchData() {this.loading = true;try {const response = await axios.get('/mock/tableData.json');this.tableData = response.data.data;} catch (error) {console.error('获取数据失败', error);} finally {this.loading = false;}}},mounted() {this.fetchData();}
};

三、逻辑实现

methods:{handleSelection(row){this.selectRow=row},handlePrint(){// 1.打印模板const printTemplate=document.getElementById("printData");// 2. 显示打印模板(默认隐藏)const originalDisplay = printTemplate.style.display;printTemplate.style.display = "block";// 3. 调用浏览器打印功能window.print();// 4. 恢复模板隐藏状态printTemplate.style.display = originalDisplay;}}

四、样式设置

@media print {/* 隐藏类名是tableData和button的组件内容 */.tableData, .button {display: none !important;}/* 确保在id为printData的组件中显示 */#printData {display: block !important;}
}
h2 {
text-align: center;margin: 20px 0;
}table {border-collapse: collapse; /* 合并边框 */width: 100%;margin: 0 auto;display: flex;/* 弹性布局实现动态对齐 */
}
th, td {border: 1px solid #ddd; /* 单元格边框 */padding: 8px;text-align: left;
}
th {background-color: #f5f5f5; /* 表头灰色背景 */
}

常见的表格布局

基础流式:本实操中的

<div class="table-container"><table><thead><tr><th>列1</th><th>列2</th><th>列3</th></tr></thead><tbody><tr><td>数据1</td><td>数据2</td><td>数据3</td></tr></tbody></table>
</div>

卡片式布局

<div class="card-container"><!-- 每个卡片对应一行数据 --><div class="data-card" v-for="row in tableData" :key="row.id"><div class="card-field"><span class="field-label">商品名称:</span><span class="field-value">{{ row.name }}</span></div><div class="card-field"><span class="field-label">价格:</span><span class="field-value">{{ row.price }}</span></div></div>
</div>.card-container {display: grid;grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); /* 自动换行 */gap: 15px; /* 卡片间距 */padding: 10px;
}
.data-card {padding: 15px;border-radius: 8px;box-shadow: 0 2px 5px rgba(0,0,0,0.1); /* 卡片阴影 */background: #fff;
}

更多布局可参考Bootstrap和elementUI 

 

 

http://www.lryc.cn/news/600488.html

相关文章:

  • AI 编程工具 Trae 重要的升级。。。
  • Linux基本指令:掌握系统操作的钥匙
  • 【Bluedroid】btif_av_sink_execute_service之服务器禁用源码流程解析
  • 【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第十节:网关安全-单向加密
  • Item11:在operator=中处理自我赋值
  • Go-Elasticsearch v9 安装与版本兼容性
  • 全文检索官网示例
  • “给予” 超越 “莲花”,支持图片在线编辑
  • [论文阅读] 人工智能 + 软件工程 | NoCode-bench:评估LLM无代码功能添加能力的新基准
  • SSRF_XXE_RCE_反序列化学习
  • 面试实战,问题十三,Redis在Java项目中的作用及使用场景详解,怎么回答
  • 大语言模型 LLM 通过 Excel 知识库 增强日志分析,根因分析能力的技术方案(3):使用云平台最小外部依赖方案
  • GMP模型
  • 深入解析Java内存模型:原理与并发优化实践
  • Oracle 误删数据恢复
  • ClickHouse高性能实时分析数据库-高性能的模式设计
  • 学习随想录-- web3学习入门计划
  • 50道JavaScript基础面试题:从基础到进阶
  • haproxy原理及实战部署
  • 根本是什么
  • 统计学07:概率论基础
  • Chukonu 阅读笔记
  • 分类预测 | MATLAB实现DBO-SVM蜣螂算法优化支持向量机分类预测
  • 深入解析YARN中的FairScheduler与CapacityScheduler:资源分配策略的核心区别
  • 检索召回率优化探究一:基于 LangChain 0.3集成 Milvus 2.5向量数据库构建的智能问答系统
  • 微信小程序 自定义带图片弹窗
  • 数据存储:OLAP vs OLTP
  • Flutter实现Retrofit风格的网络请求封装
  • Apache Doris Data Agent 解决方案:开启智能运维与数据治理新纪元
  • RS485转Profinet网关配置指南:高效启动JRT激光测距传感器测量模式