资源下载地址:https://download.csdn.net/download/sheziqiong/85788429
资源下载地址:https://download.csdn.net/download/sheziqiong/85788429

VUE + Element UI 作为前端,Node 的 Express 作为后台,模拟打印机的 Web 即时打印

开发背景

公司接到了这样一个用户需求,用户可以通过手机扫描打印机的二维码来打开打印机的 WebPage,然后可以通过 WebPage 来设定部分打印参数,并且可以向打印机发送打印文件,可以查看打印完毕的历史记录。

由于打印机端的固件程序开发还没有完成(二维码生成模块,打印部模块还在重构中),为了保证前后端的开发同其他部门并行顺利进行,在没有打印机硬件的前提下,我决定先行模拟开发出一个演示版,模拟开发可以提前确定一部分 API 接口,等到打印机硬件开发结束,可以把我们的前端代码,嵌入的到打印机里,直接进入到测试阶段,以缩短我们的开发周期。

模拟方案提出

使用 VUE 框架 + Element UI 开发 Web 前端,使用 Node 的 Express 框架来模拟打印机后端,前端使用 axios 通信框架向 Express 发送请求,Express 接收到请求后,模拟打印机把设定的参数保存到文件中,把收到的打印文件数据保存到一个固定的目录中。如果目录中的文件可以完整的打开,就说明数据收到正确。

软件架构

接口设计

设定打印参数

方法:post
URL: /printer/parameter
参数:form: {
size: ‘’,
type: ‘’,
depulx: false,
tray: ‘’,
direction: ‘’
},

取得打印参数

方法:get
URL: /printer/parameter

取得打印历史数据

方法:get
URL: /printer/history

发送打印文件,打印机收到文件开始打印

方法:post
URL: /printer/upload
参数:formdata type=file

前端设计

组件结构

设计了三个组件: Home 组件(父组件),Print 组件(子组件),History 组件(子组件)

Home 组件:入口组件,负责加载两个子组件。
Print 组件:负责打印参数设定和打印文件的组件,在这个组件中使用 Element UI 的 el-form 和 el-upload。
History 组件:负责显示打印的历史记录,在这个组件中使用 Element UI 的 el-table。

模块关系

发送打印文件动作时序

发送打印文件代码参照

以下是局部代码,整体代码请参照上传到 Git 的代码

fileUpload () {if (this.fileList.length === 0) {this.$message({type: 'warning',message: '请先选择文件 !!! '})} else {this.$confirm('可以开始打印?', '打印确认', {distinguishCancelAndClose: true,confirmButtonText: '开始打印',cancelButtonText: '取消打印',type: 'info'}).then(async () => {while (this.fileList.length !== 0) {let data = new FormData()data.append('file', this.fileList.shift().raw)try {let response = await startPrint(data)if (response.status === 200) {this.$message({type: 'success',message: response.data.data})}} catch (error) {this.$message({type: 'error',message: '打印失败 : ' + error})}}}).catch(action => {this.$message({type: 'info',message: action === 'cancel'? '已经取消打印': action})})}},

整体画面

打印设定和发送打印文件画面

打印历史记录画面

后端设计

模块结构

整体结构,由如下中间件组成。浅绿色部分不是中间件是功能函数。

模块关系

模拟打印

模拟打印的实现在 printer 路由中间件实现,当服务器收到 http://XXXXX:8080/printer/upload 的请求后,读出请求体的文件内容,保存到指定的路径下来完成模拟打印。

printer.post('/upload', upload.single('file'), async (req, res, next) => {try {// console.log(req)if (req.file == undefined) {throw new Error('你发送一个空文件');}  else {let parameter = await getParameter()if (parameter == undefined) {res.status(202).send('请先进行打印参数设定')}else{let name = upload_path + `${req.file.originalname}`await rename(`${req.file.path}`, name)console.log('成功打印' + name)let time = getTime()let db = await getDb()db.upload.push({"ip": req.ip,"date": time,"file": `${req.file.originalname}`,"parameter": parameter})await saveDb(db)res.json({data: `成功收到文件: ${req.file.originalname}`})}}} catch (error) {next(error)}
})

开发环境

前端开发路径

后端开发路径


} catch (error) {
next(error)
}
})

资源下载地址:https://download.csdn.net/download/sheziqiong/85788429
资源下载地址:https://download.csdn.net/download/sheziqiong/85788429

VUE前端+Node后台模拟打印机Web即时打印相关推荐

  1. vue前端处理后台返回的Long型数据精度丢失

    vue前端处理后台返回的Long型数据精度丢失 问题描述 开发时后端返回的id为Long型,结果发现俩id怎么会一样呢?如下图是控制台Preview返回的数据 正以为是后端那边数据有误时,我点开Res ...

  2. Vue前端-Flask后台跨域访问问题的处理

    采用前后端分离的方式开发WEB应用,前端适用了Vue.js,后端用的是Flask. 在使用axios进行前后台交互时,浏览器控制台报错: blocked by CORS policy: No 'Acc ...

  3. vue前端+springboot后台实现人脸识别签到系统

    项目背景:临近大四毕设,选了一个高校课时管理系统的项目,欠于没有什么可以拿得出手的亮点,老师建议我加入人脸识别的功能(人脸识别早已有现成的接口,百度ai免费使用). 这里先展示一下成果吧. 登录界面就 ...

  4. 前端vue不经过后台实现下载功能本地打印出现报错跨域问题

    这段时间有个项目对接法院的项目,主要是内网实现笔录的一个下载打印的问题,主要来说一下打印和下载遇到的坑的问题.首先是打印的 问题,这边就是需求就是根据html的东西完了点击打印直接下载为docx的wo ...

  5. VUE前端从后台请求过来的数据进行转换数据结构

    let label(){let _this = this; let _offset = (_this.pagination.currentPage - 1) * _this.pagination.pa ...

  6. vue前端如何向后台发送值_VUE前端从后台请求过来的数据进行转换数据结构操作...

    我就废话不多说了,大家还是直接看代码吧` let label(){ let _this = this; let _offset = (_this.pagination.currentPage - 1) ...

  7. Vue Element+Node.js开发企业通用管理后台系统笔记完

    第三四章 Vue进阶 emit和emit 和emit和on 用this.$on来定义一个事件, 并且指定事件的执行对象(函数), 他主要是用来干什么的呢 --事件的定义和消费 使用this.on来定义 ...

  8. java mysql物联网土壤智能监控web前端+java后台+数据接程序

    博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 java mysql物联网土壤智能监控web前端+java后台+数据接程序 视频效 ...

  9. 【前端Vue+后端Node.js+MySql】部署到服务器

    [前端Vue+后端Node.js+MySql]部署到服务器 文章目录 [前端Vue+后端Node.js+MySql]部署到服务器 1.买服务器 2.服务器操作 2.1.修改服务器密码,xshell登录 ...

  10. 完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档

    完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档 完整代码下载地址:完整企业官网源码 某工程管理有限公司企业官网 前端 新版 ...

最新文章

  1. leetcode算法题--Surrounded Regions
  2. 为什么batchnormalize 有效
  3. 自定义Exchange2003未送达报告(NDR)
  4. 关于LGame-0.2.9版的开发进度
  5. SQL Server 行转列,列转行。多行转成一列
  6. 【ArcGIS遇上Python】从入门到精通系列之第一章:ArcGIS Python简介
  7. c语言变量相等问题穷举法,C语言穷举法经典例题.ppt
  8. 若依的框架怎么样_若依框架的功能代码
  9. (32)SystemVerilog语言编写打两拍
  10. Zookeeper 夺命连环 9 问
  11. 控件无法安装的问题-Unable to execute file
  12. (课程笔记1)ENVI裁剪出Landsat8全色波段和其他波段的同一区域数据
  13. 计算机毕设 SpringBoot+Vue车辆租赁管理系统 网上汽车租赁系统 汽车租赁管理系统 汽车分时租赁系统Java Vue MySQL数据库 远程调试 代码讲解
  14. 【报告分享】休闲游戏商业化发行指南-穿山甲(附下载)
  15. 冰点还原忘记密码如何修改配置或卸载
  16. 由微博图床挂掉之后想到的
  17. screen和scp
  18. 情人节c语言程序,情人节c语言代码.doc
  19. HTML----锚标签
  20. Java解析JSON格式数据

热门文章

  1. 计算机考研408每日一题 day162
  2. CoFlash 基本操作说明和Flash编程算法
  3. OSEK 网络管理之认识NM报文
  4. 浙大PAT 1063
  5. html audio解决浏览器无法播放问题
  6. python合并多个txt文件
  7. 工程施工工地进度监控带天气经纬度相机(监理日志不再难写)
  8. JAVA毕业设计共享汽车管理系统计算机源码+lw文档+系统+调试部署+数据库
  9. CAD无法打印的问题解决办法
  10. 产品设计:《广告设计与创意》