|
@@ -0,0 +1,743 @@
|
|
|
+<template>
|
|
|
+ <div class="wrapper">
|
|
|
+ <a-card style="height: 800px">
|
|
|
+ <a-form-model layout="inline" :model="searchModel" class="text-center form" size="large">
|
|
|
+ <a-form-model-item label="车牌号">
|
|
|
+ <a-input v-model="searchModel.truckNumber" style="width: 280px" size="large"
|
|
|
+ ref="deliveryNote" allowClear></a-input>
|
|
|
+ </a-form-model-item>
|
|
|
+ <a-form-model-item label="身份证号码">
|
|
|
+ <a-input v-model="searchModel.identityCard" style="width: 280px" size="large" @focus="handleFocus" allowClear
|
|
|
+ @change="handleChangeV2"
|
|
|
+ ref="identityCard"></a-input>
|
|
|
+ </a-form-model-item>
|
|
|
+ <a-form-model-item label="提货单号">
|
|
|
+ <a-input v-model="searchModel.deliveryNote" style="width: 280px" size="large"
|
|
|
+ ref="deliveryNote" allowClear></a-input>
|
|
|
+ </a-form-model-item>
|
|
|
+ <a-form-model-item>
|
|
|
+ <a-button type="primary" @click="search" size="large">
|
|
|
+ 查询
|
|
|
+ </a-button>
|
|
|
+ </a-form-model-item>
|
|
|
+ </a-form-model>
|
|
|
+ <div class="table-operator">
|
|
|
+ <a-row>
|
|
|
+ <a-col :span="10">
|
|
|
+ <a-button type="primary" @click="createAndPrint" style="width: 120px;height:40px" size="large" :loading="loading">
|
|
|
+ 打印
|
|
|
+ </a-button>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <div class="time">
|
|
|
+ {{ txt }} 秒后自动返回主界面!
|
|
|
+ </div>
|
|
|
+ </a-col>
|
|
|
+ </a-row>
|
|
|
+
|
|
|
+ <!-- <a-button type="primary" @click="print" style="height:60px;width: 100px;margin-left: 1080px" size="large">-->
|
|
|
+ <!-- 补打-->
|
|
|
+ <!-- </a-button>-->
|
|
|
+ </div>
|
|
|
+ <a-table :columns="columns" :data-source="list" :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: handleChangeV1 }" size="default"
|
|
|
+ :customHeaderRow="customHeaderRow" :custom-row="customRow" :pagination="pagination" @change="tablePaginationChange" >
|
|
|
+ <span slot="serial" slot-scope="text, record, index">
|
|
|
+ {{ index + 1 }}
|
|
|
+ </span>
|
|
|
+ </a-table>
|
|
|
+ </a-card>
|
|
|
+ <a-card>
|
|
|
+ <video id="video" v-ant-ref="(c) => (video = c)" width="1920" height="1080" autoplay hidden></video>
|
|
|
+ <!-- <button id="snap" v-ant-ref="(c) => (snap = c)" hidden>拍照</button>-->
|
|
|
+ <!-- <button id="save" v-ant-ref="(c) => (save = c)" hidden>保存</button>-->
|
|
|
+ <canvas id="canvas" v-ant-ref="(c) => (canvas = c)" width="1920" height="1080" hidden></canvas>
|
|
|
+ <video id="video2" v-ant-ref="(c) => (video2 = c)" width="1920" height="1080" autoplay hidden></video>
|
|
|
+ <canvas id="canvas2" v-ant-ref="(c) => (canvas2 = c)" width="1920" height="1080" hidden></canvas>
|
|
|
+ <video id="video3" v-ant-ref="(c) => (video3 = c)" width="1920" height="1080" autoplay hidden></video>
|
|
|
+ <canvas id="canvas3" v-ant-ref="(c) => (canvas3 = c)" width="1920" height="1080" hidden></canvas>
|
|
|
+ </a-card>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+
|
|
|
+import moment from 'moment'
|
|
|
+import {sendPrintSock, webSock} from "../../store/modules/hrPrint";
|
|
|
+
|
|
|
+const columns = [
|
|
|
+ {
|
|
|
+ width: 60,
|
|
|
+ title: '序号',
|
|
|
+ scopedSlots: {customRender: 'serial'}
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 100,
|
|
|
+ title: '交货单号',
|
|
|
+ dataIndex: 'customerRefferenceId',
|
|
|
+ key: 'customerRefferenceId',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 150,
|
|
|
+ title: '客户名称',
|
|
|
+ dataIndex: 'receiverName',
|
|
|
+ key: 'receiverName',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 100,
|
|
|
+ title: '订单类型',
|
|
|
+ dataIndex: 'orderCenterOrderType',
|
|
|
+ key: 'orderCenterOrderType',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 100,
|
|
|
+ title: '车牌号',
|
|
|
+ key: 'truckNumber',
|
|
|
+ dataIndex: 'truckNumber',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 80,
|
|
|
+ title: '司机姓名',
|
|
|
+ key: 'driver',
|
|
|
+ dataIndex: 'driver'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 100,
|
|
|
+ title: '创建日期',
|
|
|
+ key: 'creationTime',
|
|
|
+ dataIndex: 'creationTime',
|
|
|
+ }
|
|
|
+];
|
|
|
+
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ dateFormat: "YYYY/MM/DD",
|
|
|
+ moment,
|
|
|
+ searchModel: {
|
|
|
+ factoryCode: '1500',
|
|
|
+ identityCard: undefined,
|
|
|
+ truckNumber: undefined,
|
|
|
+ deliveryNote: undefined,
|
|
|
+ startTime: moment(new Date(new Date().getTime() - 6 * 24 * 60 * 60 * 1000)),
|
|
|
+ endTime: undefined
|
|
|
+ },
|
|
|
+ intervalID:undefined,
|
|
|
+ list: [],
|
|
|
+ dataSourceList: [],
|
|
|
+ columns,
|
|
|
+ selectedRowKeys: [],
|
|
|
+ selectedRows: [],
|
|
|
+ loading: false,
|
|
|
+ deviceIds: [],
|
|
|
+ rowSelection: {
|
|
|
+ onChange: (selectedRowKeys, selectedRows) => {
|
|
|
+ this.selectedRowKeys = selectedRowKeys;
|
|
|
+ this.selectedRows = selectedRows
|
|
|
+ },
|
|
|
+ },
|
|
|
+ options: [ // 下拉框的选项
|
|
|
+
|
|
|
+ ],
|
|
|
+ pagination: {
|
|
|
+ current: 1,
|
|
|
+ // defaultCurrent: 1,
|
|
|
+ total: 0, // 总数
|
|
|
+ showSizeChanger: false,
|
|
|
+ pageSizeOptions: ["10", "20", "50"],
|
|
|
+ showTotal: total => `共 ${total} 条`, // 分页中显示总的数据
|
|
|
+ // hideOnSinglePage: true, // 只有一页时是否隐藏分页器
|
|
|
+ pageSize: 10 // 每页条数,所有页设置统一的条数
|
|
|
+ },
|
|
|
+ video:undefined,
|
|
|
+ canvas:undefined,
|
|
|
+ video2:undefined,
|
|
|
+ canvas2:undefined,
|
|
|
+ video3:undefined,
|
|
|
+ canvas3:undefined,
|
|
|
+ txt: 30,
|
|
|
+ inactivityTimer: ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ setInterval(() => {
|
|
|
+ this.txt = this.txt -1;
|
|
|
+ }, 1000)
|
|
|
+ this.resetTimer()
|
|
|
+ // 在用户活动时调用 resetTimer 重置定时器
|
|
|
+ document.addEventListener('mousedown', this.resetTimer)
|
|
|
+ document.addEventListener('keydown', this.resetTimer)
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ resetTimer() {
|
|
|
+ this.txt = 30;
|
|
|
+ const self = this
|
|
|
+ clearTimeout(this.inactivityTimer)
|
|
|
+ this.inactivityTimer = setTimeout(() => {
|
|
|
+ // 执行注销操作或者跳转到登录页面的代码
|
|
|
+ self.$router.push('/');
|
|
|
+ }, 0.5 * 60 * 1000) // 30分钟
|
|
|
+ },
|
|
|
+ tablePaginationChange (pagination) {
|
|
|
+ // console.log(pagination)
|
|
|
+ this.pagination.current = pagination.current // 重新设置当前页
|
|
|
+ this.pagination.pageSize = pagination.pageSize
|
|
|
+ },
|
|
|
+ search() {
|
|
|
+ const self = this
|
|
|
+ if ((self.searchModel.truckNumber === undefined || self.searchModel.truckNumber === null || self.searchModel.truckNumber === '')
|
|
|
+ && (self.searchModel.identityCard === undefined || self.searchModel.identityCard === null || self.searchModel.identityCard === '')
|
|
|
+ && (self.searchModel.deliveryNote === undefined || self.searchModel.deliveryNote === null || self.searchModel.deliveryNote === '')) {
|
|
|
+ this.$message.info('至少填写一个信息', 2);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (self.searchModel.identityCard !== undefined || self.searchModel.identityCard !== null || self.searchModel.identityCard !== '') {
|
|
|
+ if (self.searchModel.identityCard.length !== 18) {
|
|
|
+ this.$message.info('身份信息填写有误!', 2);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (self.searchModel.startTime === undefined) {
|
|
|
+ this.$message.info('提货开始时间不能为空', 2);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let endTime = moment(new Date()).format('YYYY-MM-DD');
|
|
|
+ if (self.searchModel.endTime !== undefined && self.searchModel.endTime !== null) {
|
|
|
+ endTime = self.searchModel.endTime.format('YYYY-MM-DD')
|
|
|
+ }
|
|
|
+ self.list = [];
|
|
|
+ self.selectedRowKeys = [];
|
|
|
+ self.selectedRows = [];
|
|
|
+ self.axios({
|
|
|
+ method: "post",//指定请求方式
|
|
|
+ url: "/Print/searchWasteDeliveryNote.action",//请求接口(相对接口,后面会介绍到)
|
|
|
+ params: {
|
|
|
+ // factoryCode: self.searchModel.factoryCode,
|
|
|
+ truckNumber: self.searchModel.truckNumber,
|
|
|
+ identityCard: self.searchModel.identityCard,
|
|
|
+ deliveryNote: self.searchModel.deliveryNote,
|
|
|
+ loginName: self.default_login_name,
|
|
|
+ startTime: self.searchModel.startTime.format('YYYY-MM-DD'),
|
|
|
+ endTime: endTime
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .then(function (res) {
|
|
|
+ if (res.data.code === 'fail' || res.data.data === null || res.data.data.length === 0 ) {
|
|
|
+ self.$message.info('暂无预约信息,请检查信息填写是否有误或联系车队,尽快预约!', 2);
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ self.$message.info('请在下方指示位置放好身份证,行驶证,驾驶证!', 5);
|
|
|
+ res.data.data.forEach(order => {
|
|
|
+ order.key = order.zorderno + order.zresno
|
|
|
+ order.kwmeng = 0
|
|
|
+ order.arktx = ''
|
|
|
+ order.items.forEach(item => {
|
|
|
+ order.kwmeng += item.kwmeng
|
|
|
+ order.arktx += item.arktx
|
|
|
+ })
|
|
|
+ self.list.push(order)
|
|
|
+ });
|
|
|
+ const pagination = { ...self.pagination }
|
|
|
+ pagination.current = 1
|
|
|
+ // 重新设置当前页 才会生效
|
|
|
+ self.tablePaginationChange(pagination)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ createAndPrint() {
|
|
|
+ const self = this
|
|
|
+
|
|
|
+ if(webSock.readyState !== webSock.OPEN) {
|
|
|
+ this.$message.info('请检查打印插件是否开启!', 2);
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if (self.selectedRowKeys.length === 0) {
|
|
|
+ this.$message.info('请选择提货单打印!', 2);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ self.loading = true
|
|
|
+ var video = self.video;
|
|
|
+ var canvas = self.canvas;
|
|
|
+ var video2 = self.video2;
|
|
|
+ var canvas2 = self.canvas2;
|
|
|
+ var video3 = self.video3;
|
|
|
+ var canvas3 = self.canvas3;
|
|
|
+ // Get access to the camera!
|
|
|
+ if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
|
|
|
+ // Not adding `{ audio: true }` since we only want video now
|
|
|
+ for (let i = 0; i < self.deviceIds.length; i++) {
|
|
|
+ navigator.mediaDevices.getUserMedia({ video: {
|
|
|
+ deviceId: {exact: self.deviceIds[i]},
|
|
|
+ width: 1920,
|
|
|
+ height: 1080,
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .then(function(stream) {
|
|
|
+ // 访问成功,可以做一些处理,比如显示摄像头画面
|
|
|
+ if (i == 0) {
|
|
|
+ video.srcObject = stream;
|
|
|
+ video.play();
|
|
|
+ } else if (i == 1) {
|
|
|
+ video2.srcObject = stream;
|
|
|
+ video2.play();
|
|
|
+ } else if (i == 2) {
|
|
|
+ video3.srcObject = stream;
|
|
|
+ video3.play();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function(err) {
|
|
|
+ console.log(err.name + ": " + err.message);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ setTimeout(function () {
|
|
|
+ let formData = new FormData();
|
|
|
+ formData.append('list',JSON.stringify(self.selectedRows));
|
|
|
+ formData.append('loginName',self.default_login_name);
|
|
|
+ for (let i = 0; i < self.deviceIds.length; i++) {
|
|
|
+ if (i == 0) {
|
|
|
+ var context = canvas.getContext('2d');
|
|
|
+ context.drawImage(video, 0, 0, 1920, 1080);
|
|
|
+ var picBase64 = canvas.toDataURL()
|
|
|
+ formData.append('file1',self.base64toBlob(picBase64));
|
|
|
+ } else if (i == 1) {
|
|
|
+ var context = canvas2.getContext('2d');
|
|
|
+ context.drawImage(video2, 0, 0, 1920, 1080);
|
|
|
+ var picBase642 = canvas2.toDataURL()
|
|
|
+ formData.append('file2',self.base64toBlob(picBase642));
|
|
|
+ } else if (i == 2) {
|
|
|
+ var context = canvas3.getContext('2d');
|
|
|
+ context.drawImage(video3, 0, 0, 1920, 1080);
|
|
|
+ var picBase643 = canvas3.toDataURL()
|
|
|
+ formData.append('file3',self.base64toBlob(picBase643));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let config = {
|
|
|
+ headers:{'Content-Type':'multipart/form-data'}
|
|
|
+ };
|
|
|
+
|
|
|
+ self.axios.post('/Print/printWasteDeliveryNote.action',formData,config)
|
|
|
+ .then(function (res) {
|
|
|
+ self.loading = false
|
|
|
+ console.log(res)
|
|
|
+ if (res.data.code === "success") {
|
|
|
+ const msg = res.data.data
|
|
|
+ var printData = msg.printData;
|
|
|
+ for (const obj of printData) {
|
|
|
+ const printMsg = {
|
|
|
+ requestData: {
|
|
|
+ TempleteType: '通用模板',
|
|
|
+ Acccoutid: msg.accountId,
|
|
|
+ TempleteVersion: 1,
|
|
|
+ ShowPreview: 1,
|
|
|
+ AutoMatch: 1,
|
|
|
+ TempleteName: '',
|
|
|
+ ShowPrinterSelect: 1,
|
|
|
+ Warehouseid: '',
|
|
|
+ PrintDatas: [obj]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sendPrintSock("DoPrint", printMsg, top.getPrintCallback);
|
|
|
+ self.$message.info('打印成功!', 2);
|
|
|
+ self.$router.push('/')
|
|
|
+ }
|
|
|
+ if (null != res.data.data.errMsg && res.data.data.errMsg.length > 0) {
|
|
|
+ res.data.data.errMsg.forEach(mes => {
|
|
|
+ self.$message.info(mes, 4);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ self.search();
|
|
|
+ // if (self.intervalID) {
|
|
|
+ // clearInterval(self.intervalID); // 停止定时器
|
|
|
+ // }
|
|
|
+ // self.intervalID = setInterval(function() {
|
|
|
+ // self.$router.push('/')
|
|
|
+ // clearInterval(self.intervalID); // 停止定时器
|
|
|
+ // }, 5000); // 1000 毫秒 = 1 秒
|
|
|
+ } else {
|
|
|
+ self.$message.info(res.data.errorDesc, 2);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }, 2000);
|
|
|
+ },
|
|
|
+ base64toBlob(picBase64) {
|
|
|
+ const dataArr = picBase64.split(",");
|
|
|
+ const byteString = atob(dataArr[1]);
|
|
|
+ const options = {
|
|
|
+ type: "image/jpeg",
|
|
|
+ endings: "native"
|
|
|
+ };
|
|
|
+ const u8Arr = new Uint8Array(byteString.length);
|
|
|
+ for (let i = 0; i < byteString.length; i++) {
|
|
|
+ u8Arr[i] = byteString.charCodeAt(i);
|
|
|
+ }
|
|
|
+ return new File([u8Arr], "test" + ".jpg", options);//返回文件流
|
|
|
+ },
|
|
|
+ print() {
|
|
|
+ const self = this
|
|
|
+
|
|
|
+ if(webSock.readyState !== webSock.OPEN) {
|
|
|
+ this.$message.info('请检查打印插件是否开启!', 2);
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // var obj = {
|
|
|
+ // FIELD1: "绥化淀粉副产品库",
|
|
|
+ // FIELD2: "2022121200001",
|
|
|
+ // FIELD3: "原盘入储",
|
|
|
+ // FIELD4: "HSD2301040000002",
|
|
|
+ // FIELD5: "JXAdmin",
|
|
|
+ // FIELD7: "仓储物流部",
|
|
|
+ // FIELD8: 4,
|
|
|
+ // FIELD9: 0,
|
|
|
+ // FIELD10: "2023-01-04 10:16:54",
|
|
|
+ // FIELD11: "",
|
|
|
+ // FIELD12: "",
|
|
|
+ // FIELD13: "",
|
|
|
+ // FIELD14: "",
|
|
|
+ // DETAILS:[{FIELD1: "入库作业-吨包-集装箱",
|
|
|
+ // FIELD2: "马良|魏警徽|陈宇驰|",
|
|
|
+ // FIELD3: "潮玉米",
|
|
|
+ // FIELD4: 4,
|
|
|
+ // FIELD5: 4,
|
|
|
+ // FIELD6: "吨",
|
|
|
+ // FIELD7: "叉车",
|
|
|
+ // FIELD9: "叉车",
|
|
|
+ // FIELD10: "叉车",
|
|
|
+ // FIELD11: "叉车",
|
|
|
+ // FIELD12: "叉车",
|
|
|
+ // FIELD8: "淀粉库-入库-A班"}],
|
|
|
+ // TEMPLETETYPE: "提货单1"
|
|
|
+ // }
|
|
|
+ // const printMsg = {
|
|
|
+ // requestData: {
|
|
|
+ // TempleteType: '通用模板',
|
|
|
+ // Acccoutid: '1808060000002',
|
|
|
+ // TempleteVersion: 1,
|
|
|
+ // ShowPreview: 1,
|
|
|
+ // AutoMatch: 1,
|
|
|
+ // TempleteName: '',
|
|
|
+ // ShowPrinterSelect: 1,
|
|
|
+ // Warehouseid: '',
|
|
|
+ // PrintDatas: [obj]
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // sendPrintSock("DoPrint",printMsg,this.getPrintCallback);
|
|
|
+
|
|
|
+ if (self.selectedRowKeys.length === 0) {
|
|
|
+ this.$message.info('请选择交货单打印!', 2);
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for (let i = 0; i < self.selectedRows.length; i++) {
|
|
|
+ if(self.selectedRows[i].vbeln === null || self.selectedRows[i].vbeln === undefined || self.selectedRows[i].vbeln === '')
|
|
|
+ {
|
|
|
+ this.$message.info(self.selectedRows[i].zorderno+'无交货单号,请选择创建并打印交货单号!', 2);
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ self.loading = true
|
|
|
+ var video = self.video;
|
|
|
+ var canvas = self.canvas;
|
|
|
+ var video2 = self.video2;
|
|
|
+ var canvas2 = self.canvas2;
|
|
|
+ var video3 = self.video3;
|
|
|
+ var canvas3 = self.canvas3;
|
|
|
+ // Get access to the camera!
|
|
|
+ if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
|
|
|
+ // Not adding `{ audio: true }` since we only want video now
|
|
|
+ for (let i = 0; i < self.deviceIds.length; i++) {
|
|
|
+ navigator.mediaDevices.getUserMedia({ video: { deviceId: { exact: self.deviceIds[i] } } })
|
|
|
+ .then(function(stream) {
|
|
|
+ // 访问成功,可以做一些处理,比如显示摄像头画面
|
|
|
+ if (i == 0) {
|
|
|
+ video.srcObject = stream;
|
|
|
+ video.play();
|
|
|
+ } else if (i == 1) {
|
|
|
+ video2.srcObject = stream;
|
|
|
+ video2.play();
|
|
|
+ } else if (i == 2) {
|
|
|
+ video3.srcObject = stream;
|
|
|
+ video3.play();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function(err) {
|
|
|
+ console.log(err.name + ": " + err.message);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ setTimeout(function () {
|
|
|
+ let formData = new FormData();
|
|
|
+ formData.append('list',JSON.stringify(self.selectedRows));
|
|
|
+ formData.append('loginName',self.default_login_name);
|
|
|
+ for (let i = 0; i < self.deviceIds.length; i++) {
|
|
|
+ if (i == 0) {
|
|
|
+ var context = canvas.getContext('2d');
|
|
|
+ context.drawImage(video, 0, 0, 1920, 1080);
|
|
|
+ var picBase64 = canvas.toDataURL()
|
|
|
+ formData.append('file1',self.base64toBlob(picBase64));
|
|
|
+ } else if (i == 1) {
|
|
|
+ var context = canvas2.getContext('2d');
|
|
|
+ context.drawImage(video2, 0, 0, 1920, 1080);
|
|
|
+ var picBase642 = canvas2.toDataURL()
|
|
|
+ formData.append('file2',self.base64toBlob(picBase642));
|
|
|
+ } else if (i == 2) {
|
|
|
+ var context = canvas3.getContext('2d');
|
|
|
+ context.drawImage(video3, 0, 0, 1920, 1080);
|
|
|
+ var picBase643 = canvas3.toDataURL()
|
|
|
+ formData.append('file3',self.base64toBlob(picBase643));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let config = {
|
|
|
+ headers:{'Content-Type':'multipart/form-data'}
|
|
|
+ };
|
|
|
+
|
|
|
+ // const formData = new URLSearchParams();
|
|
|
+ // formData.append('list',JSON.stringify(self.selectedRows));
|
|
|
+ // formData.append('loginName', self.default_login_name);
|
|
|
+
|
|
|
+ // self.axios({
|
|
|
+ // method: "post",//指定请求方式
|
|
|
+ // url: "/Print/printReceiveDeliveryNote.action",
|
|
|
+ // headers: {
|
|
|
+ // 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
|
|
|
+ // },
|
|
|
+ // data: formData
|
|
|
+ // })
|
|
|
+ self.axios.post('/Print/printReceiveDeliveryNote.action',formData,config)
|
|
|
+ .then(function (res) {
|
|
|
+ self.loading = false
|
|
|
+ if (res.data.code === "success") {
|
|
|
+ const msg = res.data.data
|
|
|
+ var printData = msg.printData;
|
|
|
+ for (const obj of printData) {
|
|
|
+ const printMsg = {
|
|
|
+ requestData: {
|
|
|
+ TempleteType: '通用模板',
|
|
|
+ Acccoutid: msg.accountId,
|
|
|
+ TempleteVersion: 1,
|
|
|
+ ShowPreview: 1,
|
|
|
+ AutoMatch: 1,
|
|
|
+ TempleteName: '',
|
|
|
+ ShowPrinterSelect: 1,
|
|
|
+ Warehouseid: '',
|
|
|
+ PrintDatas: [obj]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sendPrintSock("DoPrint", printMsg, top.getPrintCallback);
|
|
|
+ self.$message.info('打印成功!', 2);
|
|
|
+ self.$router.push('/');
|
|
|
+ // if (self.intervalID) {
|
|
|
+ // clearInterval(self.intervalID); // 停止定时器
|
|
|
+ // }
|
|
|
+ // self.intervalID = setInterval(function() {
|
|
|
+ // self.$router.push('/')
|
|
|
+ // clearInterval(self.intervalID); // 停止定时器
|
|
|
+ // }, 5000); // 1000 毫秒 = 1 秒
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ self.$message.info('无单据打印!', 2);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }, 2000);
|
|
|
+ },
|
|
|
+ getPrintCallback(error) {
|
|
|
+ const self = this;
|
|
|
+ if (error.status === 'success') {
|
|
|
+ self.$message.info('getPrintCallback!', 2);
|
|
|
+ console.log('getPrintCallback', error)
|
|
|
+ } else {
|
|
|
+ if (error.cmd === 'print' && (error.msg === 'TaskID 重复' || error.msg === 'taskID重复')) {
|
|
|
+ self.$message.info('运单号:' + error.taskID + ':' + error.msg + '请删除插件任务', 2);
|
|
|
+ }
|
|
|
+ self.$message.info('error' + error, 2);
|
|
|
+ console.log('error', error)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ customHeaderRow(column) {
|
|
|
+ column.forEach((e, index) => {
|
|
|
+ column[index].className = 'tableClass1' // 给数组中的每一列加上一个类名
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleChangeV1(selectedKeys,selectedRows) {
|
|
|
+ this.selectedRowKeys = selectedKeys; // 更新选中的行
|
|
|
+ this.selectedRows = selectedRows; // 更新选中的行
|
|
|
+ },
|
|
|
+ customRow(record) {
|
|
|
+ return {
|
|
|
+ on: {
|
|
|
+ click: () => {
|
|
|
+ this.selectedRowKeys.push(record.key);
|
|
|
+ this.selectedRows.push(record);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleFocus() {
|
|
|
+ // 在此处处理聚焦事件
|
|
|
+ const self = this
|
|
|
+ if (self.searchModel.identityCard === undefined || self.searchModel.identityCard === null || self.searchModel.identityCard === '') {
|
|
|
+ let intervalId = setInterval(function () {
|
|
|
+ self.axios({
|
|
|
+ method: "get",//指定请求方式
|
|
|
+ url: "http://localhost:5601/getIDCard",//请求接口(相对接口,后面会介绍到)
|
|
|
+ })
|
|
|
+ .then(function (res) {
|
|
|
+ if (Number(res.data.code) === 200) {
|
|
|
+ self.searchModel.identityCard = res.data.message
|
|
|
+ self.search();
|
|
|
+ clearInterval(intervalId);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (self.searchModel.identityCard !== undefined && self.searchModel.identityCard !== null && self.searchModel.identityCard !== '') {
|
|
|
+ clearInterval(intervalId);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function (error) {
|
|
|
+ if (error.response) {
|
|
|
+ // 请求已经发出,服务器也返回了状态码,但并不意味着请求是成功的
|
|
|
+ console.log(error.response.data);
|
|
|
+ console.log(error.response.status);
|
|
|
+ console.log(error.response.headers);
|
|
|
+ } else if (error.request) {
|
|
|
+ // 请求已经发出,但没有收到任何响应
|
|
|
+ console.log('Error', error.message);
|
|
|
+ } else {
|
|
|
+ // 在设置请求时触发了一个错误
|
|
|
+ console.log('Error', error.message);
|
|
|
+ }
|
|
|
+ console.log(error.config);
|
|
|
+ clearInterval(intervalId);
|
|
|
+ })
|
|
|
+ }, 2000);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleChangeV2() {
|
|
|
+ // 在此处处理聚焦事件
|
|
|
+ const self = this
|
|
|
+ if (self.searchModel.identityCard === undefined || self.searchModel.identityCard === null || self.searchModel.identityCard === '') {
|
|
|
+ let intervalId = setInterval(function () {
|
|
|
+ self.axios({
|
|
|
+ method: "get",//指定请求方式
|
|
|
+ url: "http://localhost:5601/getIDCard",//请求接口(相对接口,后面会介绍到)
|
|
|
+ })
|
|
|
+ .then(function (res) {
|
|
|
+ console.log(res)
|
|
|
+ if (Number(res.data.code) === 200) {
|
|
|
+ self.searchModel.identityCard = res.data.message
|
|
|
+ self.search();
|
|
|
+ clearInterval(intervalId);
|
|
|
+ }
|
|
|
+ if (self.searchModel.identityCard !== undefined && self.searchModel.identityCard !== null && self.searchModel.identityCard !== '') {
|
|
|
+ clearInterval(intervalId);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function (error) {
|
|
|
+ if (error.response) {
|
|
|
+ // 请求已经发出,服务器也返回了状态码,但并不意味着请求是成功的
|
|
|
+ console.log(error.response.data);
|
|
|
+ console.log(error.response.status);
|
|
|
+ console.log(error.response.headers);
|
|
|
+ } else if (error.request) {
|
|
|
+ // 请求已经发出,但没有收到任何响应
|
|
|
+ console.log('Error', error.message);
|
|
|
+ } else {
|
|
|
+ // 在设置请求时触发了一个错误
|
|
|
+ console.log('Error', error.message);
|
|
|
+ }
|
|
|
+ console.log(error.config);
|
|
|
+ clearInterval(intervalId);
|
|
|
+ })
|
|
|
+ }, 2000);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getDevices() {
|
|
|
+ const self = this;
|
|
|
+ try {
|
|
|
+ navigator.mediaDevices.enumerateDevices()
|
|
|
+ .then(function(devices) {
|
|
|
+ devices.forEach(function(device) {
|
|
|
+ if (device.kind === 'videoinput') {
|
|
|
+ self.deviceIds.push(device.deviceId)
|
|
|
+ console.log(self.deviceIds)
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch(function(err) {
|
|
|
+ console.log(err.name + ": " + err.message);
|
|
|
+ });
|
|
|
+ } catch (err) {
|
|
|
+ console.log(err.name + ": " + err.message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.identityCard.focus()
|
|
|
+ })
|
|
|
+ const self = this
|
|
|
+ self.getDevices()
|
|
|
+ self.axios({
|
|
|
+ method: "post",//指定请求方式
|
|
|
+ url: "/Print/getCustomerList.action",//请求接口(相对接口,后面会介绍到)
|
|
|
+ params: {
|
|
|
+ loginName: self.default_login_name
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .then(function (res) {
|
|
|
+ if (res.data.data === null || res.data.code === 'fail') {
|
|
|
+ self.$message.info('未查询到用户的工厂', 2);
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+
|
|
|
+ res.data.data.forEach(customer => {
|
|
|
+ const object = {}
|
|
|
+ object.value = customer.customerCode
|
|
|
+ object.label = customer.customerName
|
|
|
+ self.options.push(object)
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+.wrapper {
|
|
|
+ background: #f0f2f5;
|
|
|
+ padding: 24px;
|
|
|
+}
|
|
|
+
|
|
|
+.form {
|
|
|
+ /deep/ .ant-form-item {
|
|
|
+ margin-bottom: 24px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.table-operator {
|
|
|
+ margin-bottom: 18px;
|
|
|
+ text-align: left;
|
|
|
+}
|
|
|
+
|
|
|
+.text-left {
|
|
|
+ text-align: left;
|
|
|
+}
|
|
|
+
|
|
|
+.text-center {
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
+/deep/ .tableClass1 {
|
|
|
+ font-size: 16px;
|
|
|
+}
|
|
|
+
|
|
|
+.time {
|
|
|
+ color: #333;
|
|
|
+ font-size: 22px;
|
|
|
+ font-weight: 700;
|
|
|
+ color: red;
|
|
|
+}
|
|
|
+</style>
|