使用说明

简介

该组件可以实现浏览器自定义的图片列表采集

  • 支持处理黑白、彩色、灰度图片
  • 支持图片自定义文字水印、图片水印
  • 支持自定义文件分片上传
  • 支持切换视频源和分辨率(需要插件盒子支持)

注意:

最新版本chrome浏览器会限制网页调用本地设备,需要配置允许访问

  • chrome浏览器输入 chrome://flags/#unsafely-treat-insecure-origin-as-secure,输入需要调用设备的ip+post,如:127.0.0.1:8080。并且启用配置
  • chrome浏览器:设置»隐私设置和安全性»网站设置»权限,确保有摄像头和麦克风权限

组件文件

scanBox
├── archItem.vue  // 右侧采集项
├── archSubList.vue  // 右侧采集列表
├── captureView.vue  // 采集器视频流处理
├── file.js  // 图片处理js-提供了常用的js图片处理、文字以及图片水印功能等
├── fileUpload.js  // 文件上传处理js-提供图片分片上传和普通上传逻辑
├── imageThumbList.vue  // 右侧下方图片列表
├── imageThumbNail.vue // 右侧下方图片缩略图
├── localUpload.vue //本地上传控件
└── scanBox.vue   //采集器主界面

组件依赖说明

  • “element-ui”: “^2.14.0” -组件基础框架
  • “spark-md5”: “^3.0.1” -文件md5计算
  • “vue-cropper”: “^0.5.5” -页面文件截图操作
  • “v-viewer”: “^1.5.1” -图片预览
  • “vuedraggable”: “^2.24.3” -图片列表拖拽调整

使用说明

// 1 导入文件
import scanBox from './scanBox/scanBox'

// 2 组件注册
components: {
    scanBox
  },

// 3 引入标签
<scan-box ref="scanBox"
          :scanList='scanList'
          :deviceFrameSizeList="deviceFrameSizeList"
          @endScanHandler="endScanHandler"/>

// 4 方法调用,显示采集弹框
openScanBox () {
      // 初始化分辨率(三方插件支持)
     this.deviceFrameSizeList = deviceFrameSizeList || []
     this.$refs.scanBox.showWin('scan', 0, this.scanList)
}

// 5 监听采集完成返回文件列表
endScanHandler (scanImageList) {
      // 采集完成返回完整的采集信息,自己做上传处理
      console.log('endScanHandler===', scanImageList)
}

// 6 自定义文件上传以及文件处理
import { beforeUpload } from './scanBox/fileUpload'
uploadFile (scanImageList) {
      // todo 采集完成返回完整的采集信息,自己做上传处理
      // 上传
      // 移除未改变项
      let uploadScanImageList = scanImageList.filter(item => item.isChange !== false)
      // 上传接口需要的额外参数
			let expandInfo = {
        acpt_id: '99999999',
        cust_id: '99999999',
        operator_no: 10571,
        op_branch_no: 1,
        branch_no: 1
      }
			// 上传前是否添加水印
      let isWater = true
			// 水印信息
      let waterMsg = 'waterMsg'
			// 上传url
      const uploadUrl = 'https://test.com/fileUpload'
	    // 图片水印url
			let waterLogoUrl = 'https://gitee.com/ching7777/gitee_graph_bed/raw/master/img/80.jpg'
      beforeUpload(uploadScanImageList, acptInfo, isWater, waterMsg, waterLogoUrl, uploadUrl).then(res => {
				console.log('单个采集项上传完成')
        // todo 每个采集项上传进度
      }).catch(err => {
        this.$hMessage.error(err)
      })
      console.log('全部采集项上传完成')
    },

参数说明

<scan-box ref="scanBox"
          :scanList='scanList'
          :deviceFrameSizeList="deviceFrameSizeList"
          @endScanHandler="endScanHandler"/>
  • 参数

    scanList:需要采集的图片列表

    deviceFrameSizeList:当前设备支持的分辨率

  • 方法

    endScanHandler:采集结束后返回的文件列表

  • 参数以及方法详细信息

# 需要采集的图片列表
scanList = [{
        'archFileNo': '-1',  //采集文件编号-建议纯数字,每一项不重复
        'filePath': '',//当前采集项首页图片
        'haveScan': '0',//当前采集项是否必须采集
        'imageName': '批量扫描',//当前采集项名称
        'imageSet': '3',     //当前采集文件类型,1:黑白 2:灰度 3:彩色
        'importLocalFlag': '0', //当前采集是否可以本地导入
        'index': '0', // 当前采集项索引
				'tipInfo':'test',//当前档案采集提示信息
        'isChange': false,// 当前采集项是否发生变化
        'pageInfo': [{
					'filePath': "https://gitee.com/ching7777/gitee_graph_bed/raw/master/img/80.jpg",
					'pageNo': 1,
				}],// 当前采集项每一页信息
        'pageNum': 9999,//当前采集项可以采集的页数
      },...]

# 支持的设备分辨率(需要三方插件)
deviceFrameSizeList = 
[
		{
        "FrameSize": ["640x480", "800x600", "1280x720", "1280x960", "1600x1200"],
        "Name": "ZLPorCamera"
    },
    {
        "FrameSize": ["640x480", "800x600", "1280x720", "1600x1200", "1920x1080","2048x1536","2592x1944","3264x2448"],
        "Name": "RXSX Video"
    }
]

# 采集结束后返回的文件列表
scanList = [{
        'archFileNo': '-1',  //采集文件编号-建议纯数字,每一项不重复
        'filePath': 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD',//当前采集项首页图片
        'haveScan': '0',//当前采集项是否必须采集
        'imageName': '头像',//当前采集项名称
        'imageSet': '3',     //当前采集文件类型,1:黑白 2:灰度 3:彩色
        'importLocalFlag': '0', //当前采集是否可以本地导入
        'index': '0', // 当前采集项索引
				'tipInfo':'test',//当前档案采集提示信息
        'isChange': false,// 当前采集项是否发生变化
        'pageInfo': [{
					'filePath': "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD",
					'pageNo': 1,
				},{
					filePath: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD"
					pageNo: 2
				}],// 当前采集项每一页信息
        'pageNum': 9999,//当前采集项可以采集的页数
      },...]