From bea4b9e9da44517844bff2e8952b85206ce839ca Mon Sep 17 00:00:00 2001 From: 王震 <10952869+daywangzhen@user.noreply.gitee.com> Date: 星期一, 04 十二月 2023 17:15:40 +0800 Subject: [PATCH] modified: package.json modified: src/views/plan/manufacturingorder/index.vue modified: src/views/quality/Packaging_ledger/index.vue new file: src/views/quality/rawMaterial/QrcodeReader.vue modified: src/views/quality/rawMaterial/rawMaterial-form.vue modified: vue.config.js --- src/views/quality/rawMaterial/rawMaterial-form.vue | 82 ++++++++++++++++++++ src/views/plan/manufacturingorder/index.vue | 66 ++++++++++++++++ src/views/quality/rawMaterial/QrcodeReader.vue | 77 +++++++++++++++++++ vue.config.js | 3 package.json | 1 src/views/quality/Packaging_ledger/index.vue | 2 6 files changed, 225 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index fb282aa..1bd2008 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "vue-json-editor": "^1.2.3", "vue-json-tree-view": "^2.1.4", "vue-qr": "^4.0.9", + "vue-qrcode-reader": "^5.4.1", "vue-quill-editor": "3.0.6", "vue-router": "^3.0.2", "vuedraggable": "^2.24.3", diff --git a/src/views/plan/manufacturingorder/index.vue b/src/views/plan/manufacturingorder/index.vue index c6e2cf8..9cd676f 100644 --- a/src/views/plan/manufacturingorder/index.vue +++ b/src/views/plan/manufacturingorder/index.vue @@ -105,6 +105,12 @@ :loading="loadingExcel" >瀵煎嚭 </el-button> + <el-button + @click="labelPrint" + type="primary" + style="margin-left:10px;" + >鎵撳嵃鏍囩 + </el-button> <!-- <el-button v-if="permissions.manufacturingorder_update_orderno" @click="updateOrderNo" @@ -189,6 +195,35 @@ </div> </span> </el-dialog> + <!-- 鏍囩鎵撳嵃 --> + <el-dialog title="鏍囩鍒楄〃" :visible.sync="diaPrintTab" width="500px"> + <div class="dia_body" style="height: 400px;overflow-y: auto;padding: 0 10px;"> + <el-card class="box-card" v-for="(tem, i) in orderDatalist" :key="i" style="margin-bottom: 15px;"> + <el-row> + <el-col :span="10" :offset="3">搴忓彿锛�</el-col> + <el-col :span="10" style="font-weight: bold;">{{ i + 1 }}</el-col> + </el-row> + <el-row> + <el-col :span="10" :offset="3">瀹㈡埛璁㈠崟鍙凤細</el-col> + <el-col :span="10" style="font-weight: bold;">{{ tem.customerOrderNo }}</el-col> + </el-row> + <el-row> + <el-col :span="10" :offset="3">闆朵欢鍚嶇О锛�</el-col> + <el-col :span="10" style="font-weight: bold;">{{ tem.partName }}</el-col> + </el-row> + <el-row> + <el-col :span="10" :offset="3">璁㈠崟浜岀淮鐮侊細</el-col> + <el-col :span="10"> + <vueQr :text="JSON.stringify(tem)" :size="200" :margin="2"></vueQr> + </el-col> + </el-row> + </el-card> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="diaPrintTab = false">鍙� 娑�</el-button> + <el-button type="primary" @click="diaPrintTab = false">鎵� 鍗�</el-button> + </span> + </el-dialog> </basic-container> </div> </template> @@ -218,9 +253,12 @@ import DelMatUnIssueVue from './DelMatUnIssue.vue' import { getStore } from '@/util/store.js' import { getObj as getSysParam } from '@/api/admin/sys-public-param' +import vueQr from 'vue-qr' export default { data() { return { + orderDatalist:[], + diaPrintTab:false, showCustomerorder: false, paramObj: { customerList: null }, customerOrder: null, @@ -895,7 +933,8 @@ AutoOperationtask, IssueMaterialForm, OrderMergeForm, - DelMatUnIssueVue + DelMatUnIssueVue, + vueQr }, created() { this.getManufactureAttrs() @@ -1357,6 +1396,24 @@ }, // table鑷甫浜嬩欢 handleSelectionChange(val) { + let orderData = [] + orderData =val.map( el =>{ + return{ + moNo:el.moNo, + workShop:el.workShop, + operationNames:el.operationNames, + customerOrderNo:el.customerOrderNo, + customerName:el.customerName, + mpsNo:el.mpsNo, + remark:el.remark, + partNo:el.partNo, + partName:el.partName, + unit:el.unit, + requiredDate:el.requiredDate, + } + }) + this.orderDatalist = orderData + console.log(orderData,"澶氳閫変腑"); // 鏍规嵁鐘舵�侊紝绂佺敤琛ㄥご鎸夐挳 // 绛涢�夊嚭閫変腑璁板綍鐨勭姸鎬� var stateArr = val.map(function(value, index) { @@ -1648,6 +1705,13 @@ } else { this.$message.error('涓婁紶澶辫触') } + }, + labelPrint(){ + if(this.multipleSelection.length==0){ + this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�') + return + } + this.diaPrintTab = true } } } diff --git a/src/views/quality/Packaging_ledger/index.vue b/src/views/quality/Packaging_ledger/index.vue index 9a1c0ae..0e98986 100644 --- a/src/views/quality/Packaging_ledger/index.vue +++ b/src/views/quality/Packaging_ledger/index.vue @@ -306,7 +306,7 @@ if (this.dataway.state == "鏈姤妫�") { this.increase = true }else{ - this.$message.error('璇峰厛閫夋嫨鍖呰椤圭洰') + this.$message.error('鏀归」鐩凡瀹屾垚妫�楠�') } }, preserve(datalist){ diff --git a/src/views/quality/rawMaterial/QrcodeReader.vue b/src/views/quality/rawMaterial/QrcodeReader.vue new file mode 100644 index 0000000..2dbdff2 --- /dev/null +++ b/src/views/quality/rawMaterial/QrcodeReader.vue @@ -0,0 +1,77 @@ +<template> + <div class="qrcode"> + <div class="code"> + <!-- decode鏄壂鎻忕粨鏋滅殑鍑芥暟锛宼orch鐢ㄤ簬鏄惁闇�瑕佹墦寮�鎵嬬數绛掞紝init鐢ㄤ簬妫�鏌ヨ璁惧鏄惁鑳藉璋冪敤鎽勫儚澶寸殑鏉冮檺锛宑amera鍙敤浜庢墦寮�鍓嶉潰鎴栬�呭悗闈㈡憚鍍忓ご --> + <qrcode-drop-zone @decode="onDecode"> + <qrcode-stream @decode="onDecode" :torch="torchActive" @init="onInit" :camera="camera" /> + </qrcode-drop-zone> + <div class="code-button"> + <button @click="switchCamera">鐩告満鍙嶈浆</button> + <button @click="ClickFlash">鎵撳紑鎵嬬數绛�</button> + <button @click="turnCameraOff">鍏抽棴鐩告満</button> + </div> + </div> + </div> + </template> + + <script> + // 寮曠敤vue-qrcode-reader鎻掍欢 + import { QrcodeStream, QrcodeDropZone, QrcodeCapture } from 'vue-qrcode-reader' + + export default { + name: 'Approve', + props: { + camera: { + type: String, + default: 'rear', + }, + torchActive: { + type: Boolean, + default: false, + }, + qrcode: { + type: Boolean, + default: false, + }, + noStreamApiSupport: { + type: Boolean, + default: false, + }, + }, + data() { + return {} + }, + created() { + console.log(222222222222224564646); + }, + + components: { + // 娉ㄥ唽缁勪欢 + QrcodeStream, + QrcodeDropZone, + QrcodeCapture, + }, + methods: { + // 鎵爜缁撴灉鍥炶皟 + onDecode(result) { + this.$emit('onDecode', result) + }, + // 鐩告満鍙嶈浆 + switchCamera() { + this.$emit('switchCamera') + }, + // 鍏抽棴鐩告満锛燂紵锛燂紵锛燂紵 + turnCameraOff() { + this.$emit('turnCameraOff') + }, + // 鎵撳紑鎵嬬數绛� + ClickFlash() { + this.$emit('ClickFlash') + }, + // 妫�鏌ユ槸鍚﹁皟鐢ㄦ憚鍍忓ご + onInit(promise) { + this.$emit('onInit', promise) + }, + }, + } + </script> \ No newline at end of file diff --git a/src/views/quality/rawMaterial/rawMaterial-form.vue b/src/views/quality/rawMaterial/rawMaterial-form.vue index 62a368f..7e8f9be 100644 --- a/src/views/quality/rawMaterial/rawMaterial-form.vue +++ b/src/views/quality/rawMaterial/rawMaterial-form.vue @@ -34,6 +34,11 @@ icon="el-icon-search" :disabled="resultVal!=null && dataForm.id!=null" @click="queryCode()"></el-button> + <!-- <el-button + slot="append" + icon="el-icon-full-screen" + :disabled="resultVal!=null && dataForm.id!=null" + @click="Turnonthecamera"></el-button> --> </el-input> </el-form-item> </el-col> @@ -51,7 +56,6 @@ type="datetime" value-format="yyyy-MM-dd HH:mm:ss" disabled> - </el-date-picker> </el-form-item> </el-col> @@ -261,6 +265,7 @@ <el-button type="primary" @click="submitSave()">纭� 瀹�</el-button> </span> </el-dialog> + <!-- <qrcode :qrcode="qrcode" v-show="qrcode" :camera="camera" /> --> </div> </template> @@ -273,13 +278,19 @@ updateRawInspectsById, updateDeviceById, } from '@/api/quality/rawMaterial' import rawMaterialPartDialog from '@/views/common/rawMaterial-part' + // import qrcode from './QrcodeReader.vue' export default { computed:{}, components:{ - rawMaterialPartDialog + rawMaterialPartDialog, + // qrcode + // qrcode: () => import('./QrcodeReader.vue'), }, data(){ return{ + qrcode: false, + torchActive: false, + camera: 'off', userdata:[], currentRow:[], userlist:[], @@ -352,6 +363,73 @@ }, }, methods:{ + // 鎵撳紑鐩告満 + Turnonthecamera() { + this.qrcode = true + this.camera = 'rear' + console.log(2222222); + }, + // 鎵爜缁撴灉鍥炶皟 + // onDecode(result) { + // console.log(result) + // this.turnCameraOff() + // }, + // 鐩告満鍙嶈浆 + // switchCamera() { + // switch (this.camera) { + // case 'front': + // this.camera = 'rear' + // break + // case 'rear': + // this.camera = 'front' + // break + // default: + // this.$toast('閿欒') + // } + // }, + // 鍏抽棴鐩告満 + // turnCameraOff() { + // this.camera = 'off' + // this.qrcode = false + // }, + // 鎵撳紑鎵嬬數绛� + // ClickFlash() { + // switch (this.torchActive) { + // case true: + // this.torchActive = false + // break + // case false: + // this.torchActive = true + // break + // default: + // this.$toast('閿欒') + // } + // }, + + // 妫�鏌ユ槸鍚﹁皟鐢ㄦ憚鍍忓ご + // async onInit(promise) { + // try { + // await promise + // } catch (error) { + // if (error.name === 'StreamApiNotSupportedError') { + // } else if (error.name === 'NotAllowedError') { + // this.errorMessage = 'Hey! I need access to your camera' + // } else if (error.name === 'NotFoundError') { + // this.errorMessage = 'Do you even have a camera on your device?' + // } else if (error.name === 'NotSupportedError') { + // this.errorMessage = + // 'Seems like this page is served in non-secure context (HTTPS, localhost or file://)' + // } else if (error.name === 'NotReadableError') { + // this.errorMessage = + // "Couldn't access your camera. Is it already in use?" + // } else if (error.name === 'OverconstrainedError') { + // this.errorMessage = + // "Constraints don't match any installed camera. Did you asked for the front camera although there is none?" + // } else { + // this.errorMessage = 'UNKNOWN ERROR: ' + error.message + // } + // } + // }, // 纭鍥炶皟 selectPart(param, nodePart, index) { if (typeof param !== 'undefined') { diff --git a/vue.config.js b/vue.config.js index b450b4c..605ac39 100644 --- a/vue.config.js +++ b/vue.config.js @@ -3,8 +3,7 @@ * https://cli.vuejs.org/zh/config/ */ // const url = 'http://192.168.2.7:9999' -const url = 'http://192.168.2.7:9999' -//const url = 'http://192.168.32.45:9999' +const url = 'http://192.168.32.45:9999' // const url = 'http://192.168.0.23:9999' // const url = 'http://localhost:9999' -- Gitblit v1.9.3