From 20e6520be621221456a3ef4260401dd96e28fa4a Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期四, 22 一月 2026 16:55:21 +0800
Subject: [PATCH] 1
---
pages/AGV/CollectionPakinT.vue | 613 +++++++++++++++++++++++++++++++++++++++++++++++++++
pages/AGV/CollectionPakin.vue | 94 +++++--
2 files changed, 680 insertions(+), 27 deletions(-)
diff --git a/pages/AGV/CollectionPakin.vue b/pages/AGV/CollectionPakin.vue
index f3c8270..fa04e86 100644
--- a/pages/AGV/CollectionPakin.vue
+++ b/pages/AGV/CollectionPakin.vue
@@ -5,6 +5,10 @@
<view class="code-decs">婧愭墭鐩�:</view>
<input type="text" placeholder=" 鎵爜 / 杈撳叆" v-model="orgBarcode" :focus="orgBarcodeFocus" />
</view>
+ <view class="item">
+ <view class="code-decs">鍑哄簱绔欏彿:</view>
+ <input type="text" placeholder=" 鎵爜 / 杈撳叆" v-model="devNo" />
+ </view>
<view class="item" style="display: none;">
<view class="code-decs">鍙拌溅鐮�:</view>
<input type="text" placeholder=" 鎵爜 / 杈撳叆" v-model="barcode" :focus="barcodeFocus" />
@@ -484,42 +488,78 @@
return;
}
}
+
uni.request({
- url: that.baseUrl + '/mobile/comb/auth',
- data: JSON.stringify({
- orderNo: that.orderNo,
- barcode: that.barcode,
- boxType1: that.boxType1,
- combMats: that.dataList,
- type: '1'
- }),
+ url: `${this.baseUrl}/mobile/agv/collectionPakin/auth`,
method: 'POST',
+ data: JSON.stringify({
+ orgBarcode: that.orgBarcode,
+ tarBarcode: that.barcode,
+ devNo: that.devNo,
+ combMats: that.dataList
+ }),
header: {
- 'token': uni.getStorageSync('token')
+ token: that.token
},
- success(result) {
- var res = result.data
+ success: (result) => {
+ const res = result.data
if (res.code === 200) {
- that.resst();
- that.messageText = "缁勬墭鎴愬姛"
- that.messageToggle('success')
- const innerAudioContext = uni.createInnerAudioContext();
- innerAudioContext.src = '/static/music/pakinOk.mp3';
- innerAudioContext.play()
- } else if (res.code == 403) {
- that.messageText = res.msg
- that.messageToggle('error')
- setTimeout(() => {
- uni.reLaunch({
- url: '../login/login'
- });
- }, 1000);
+ that.clearAll()
+ that.showMessage(res.msg, 'success')
+ // this.showMessage('缁勬墭鎴愬姛')
+ // // 鎾斁鎴愬姛鎻愮ず闊�
+ // const audio = uni.createInnerAudioContext()
+ // audio.src = '/static/music/pakinOk.mp3'
+ // audio.play()
+ } else if (res.code === 403) {
+ that.handleAuthError(res.msg)
} else {
- that.messageText = res.msg
- that.messageToggle('error')
+ that.showMessage(res.msg, 'error')
}
+ },
+ complete: () => {
+ // 璇锋眰瀹屾垚鍚庤В闄ら槻鎶栭攣瀹�
+ setTimeout(() => {
+ that.isCombing = false
+ }, 500)
}
});
+ // uni.request({
+ // url: that.baseUrl + '/mobile/comb/auth',
+ // data: JSON.stringify({
+ // orderNo: that.orderNo,
+ // barcode: that.barcode,
+ // boxType1: that.boxType1,
+ // combMats: that.dataList,
+ // type: '1'
+ // }),
+ // method: 'POST',
+ // header: {
+ // 'token': uni.getStorageSync('token')
+ // },
+ // success(result) {
+ // var res = result.data
+ // if (res.code === 200) {
+ // that.resst();
+ // that.messageText = "缁勬墭鎴愬姛"
+ // that.messageToggle('success')
+ // const innerAudioContext = uni.createInnerAudioContext();
+ // innerAudioContext.src = '/static/music/pakinOk.mp3';
+ // innerAudioContext.play()
+ // } else if (res.code == 403) {
+ // that.messageText = res.msg
+ // that.messageToggle('error')
+ // setTimeout(() => {
+ // uni.reLaunch({
+ // url: '../login/login'
+ // });
+ // }, 1000);
+ // } else {
+ // that.messageText = res.msg
+ // that.messageToggle('error')
+ // }
+ // }
+ // });
},
reset(type) {
this.msgType = type
diff --git a/pages/AGV/CollectionPakinT.vue b/pages/AGV/CollectionPakinT.vue
new file mode 100644
index 0000000..d38c4ee
--- /dev/null
+++ b/pages/AGV/CollectionPakinT.vue
@@ -0,0 +1,613 @@
+<template>
+ <view>
+ <view class="code">
+ <view class="item">
+ <view class="code-decs">婧愭墭鐩�:</view>
+ <input type="text" placeholder=" 鎵爜 / 杈撳叆" v-model="orgBarcode" :focus="orgBarcodeFocus"
+ @input="barcodeInput()" />
+ </view>
+ <!-- // style="display: none;" -->
+ <view class="item" style="display: none;">
+ <view class="code-decs">鍙拌溅鐮�:</view>
+ <input type="text" placeholder=" 鎵爜 / 杈撳叆" v-model="tarBarcode" :focus="tarBarcodeFocus" />
+ </view>
+ <view class="item">
+ <view class="code-decs">鏍煎眰缂栫爜:</view>
+ <input type="text" placeholder=" 鎵爜 / 杈撳叆" v-model="boxType1" :focus="boxType1Focus"
+ @input="boxType1Input()">
+ </view>
+ <view class="item">
+ <view class="code-decs">绔欑偣鍙�:</view>
+ <input type="text" placeholder=" 鎵爜 / 杈撳叆" v-model="devNo" />
+ </view>
+ </view>
+ <view class="mat-list-title">鍟嗗搧鍒楄〃</view>
+ <scroll-view scroll-y>
+ <view class="list" v-for="(item, index) in dataList" :key="index">
+ <view class="list-left">
+ <view class="list-left-item">
+ <view class="desc">No锛�</view>
+ <view class="left-item">{{ index + 1 }}</view>
+ </view>
+ <view class="list-left-item">
+ <view class="desc">缂栫爜锛�</view>
+ <view class="left-item">
+ <uni-tag :text="item.matnr" type="primary"></uni-tag>
+ </view>
+ </view>
+ <view class="list-left-item">
+ <view class="desc">鍝佸悕锛�</view>
+ <uni-tooltip class="left-item" :content="item.maktx" placement="bottom">
+ <view class="left-item tip" style="">
+ {{ item.maktx }}
+ </view>
+ </uni-tooltip>
+ </view>
+ <view class="list-left-item">
+ <view class="desc">瑙勬牸锛�</view>
+ <view class="left-item">{{ item.specs }}</view>
+ </view>
+ <view class="popup-item">
+ <view class="desc">鏍煎眰缂栫爜锛�</view>
+ <view class="left-item">{{ item.boxType1 }}</view>
+ </view>
+ <view class="list-left-item">
+ <view class="desc">渚涘簲鍟嗭細</view>
+ <view class="left-item">
+ <uni-tag :text="item.standby1" type="warning"></uni-tag>
+ </view>
+ </view>
+ <view class="list-left-item">
+ <view class="desc">鏁伴噺锛�</view>
+ <view class="left-item">{{ item.anfme }}</view>
+ </view>
+ <view class="list-left-item">
+ <view class="desc">鎷h揣鏁伴噺:</view>
+ <view class="left-item" style="border: none; justify-content: center">
+ <uni-number-box disabled="true" v-model="item.workQty" :max="item.anfme" color="#747474" />
+ </view>
+ </view>
+ </view>
+ <view class="list-right">
+ <uni-icons type="compose" color="#9add8b" size="24" @click="revise(item, index)"></uni-icons>
+ <uni-icons type="trash" color="#f58a8a" size="24" @click="remove(index)"></uni-icons>
+ </view>
+ </view>
+ <!-- 绌虹姸鎬佹彁绀� -->
+ <view v-if="dataList.length === 0" class="empty-tips">
+ 鏆傛棤鍟嗗搧锛岃鎵爜娣诲姞
+ </view>
+ </scroll-view>
+ <!-- 搴曢儴鎿嶄綔鎸夐挳 -->
+ <view class="buttom">
+ <button size="mini" @click="reset">
+ 閲嶇疆
+ </button>
+ <button size="mini" type="primary" @click="combConfirm">
+ 缁勬墭
+ </button>
+ </view>
+
+ <!-- 淇敼鏁伴噺寮圭獥 -->
+ <uni-popup ref="revise" type="dialog">
+ <view class="popup">
+ <view class="title">淇敼</view>
+ <view class="popup-item">
+ <view class="popup-item-left">缂栫爜:</view>
+ <view class="popup-item-right">
+ <input type="text" v-model="editForm.matnr" disabled style="
+ background-color: #f7f7f7;
+ padding: 0;
+ color: #d5d5d5;
+ " />
+ </view>
+ </view>
+ <view class="popup-item">
+ <view class="popup-item-left">渚涘簲鍟�:</view>
+ <view class="popup-item-right">
+ <input type="text" v-model="editForm.standby1" />
+ </view>
+ </view>
+ <view class="popup-item">
+ <view class="popup-item-left">鏍煎眰缂栫爜:</view>
+ <view class="popup-item-right">
+ <input type="text" v-model="tempBoxType"
+ style="padding: 0;color: #d5d5d5;">
+ </view>
+ </view>
+ <view class="popup-item">
+ <view class="popup-item-left">鏁伴噺:</view>
+ <view class="popup-item-right" style="border: none; justify-content: center">
+ <uni-number-box :value="editForm.count" :step="0.01" :max="9999999" color="#747474"
+ @change="changeValue" />
+ </view>
+ </view>
+ <view class="btn">
+ <view class="btn-left" @click="reviseClose">
+ 鍙栨秷
+ </view>
+ <view class="btn-right" @click="reviseConfirm">
+ 淇敼
+ </view>
+ </view>
+ </view>
+ </uni-popup>
+
+ <!-- 绉婚櫎纭寮圭獥 -->
+ <uni-popup ref="removeDialog" type="dialog">
+ <uni-popup-dialog type="warn" confirmText="绉婚櫎" title="璀﹀憡" content="鏄惁绉婚櫎褰撳墠鍟嗗搧!" @confirm="removeConfirm"
+ @close="removeClose"></uni-popup-dialog>
+ </uni-popup>
+
+ <!-- 娑堟伅鎻愮ず -->
+ <uni-popup ref="message" type="message">
+ <uni-popup-message :type="msgType" :message="messageText" :duration="2000"></uni-popup-message>
+ </uni-popup>
+
+ <!-- 纭缁勬墭寮圭獥 -->
+ <uni-popup ref="combDialog" type="dialog">
+ <uni-popup-dialog type="warn" cancelText="鍙栨秷" confirmText="纭" title="璀﹀憡" content="鏄惁鐜板湪缁勬墭!" @confirm="comb"
+ @close="combClose"></uni-popup-dialog>
+ </uni-popup>
+
+ <!-- 纭閲嶇疆寮圭獥 -->
+ <uni-popup ref="resetDialog" type="dialog">
+ <uni-popup-dialog type="warn" cancelText="鍙栨秷" confirmText="纭" title="璀﹀憡" content="鏄惁閲嶇疆!"
+ @confirm="resetConfirm" @close="resetClose"></uni-popup-dialog>
+ </uni-popup>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ baseUrl: '',
+ token: '',
+ orgBarcode: '',
+ tarBarcode: '',
+ dataList: [],
+ orgBarcodeFocus: false,
+ tarBarcodeFocus: false,
+ boxType1Focus: true,
+ tempBoxType: '',
+ devNo: '',
+ // 缂栬緫琛ㄥ崟
+ editForm: {
+ index: -1,
+ matnr: '',
+ standby1: '',
+ weight: '',
+ count: 0
+ },
+ // 寰呯Щ闄ら」绱㈠紩
+ removeIndex: -1,
+ // 娑堟伅鎻愮ず
+ msgType: 'success',
+ messageText: '',
+ // 缁勬墭鎸夐挳闃叉姈
+ isCombing: false
+ }
+ },
+
+ onShow() {
+ this.baseUrl = uni.getStorageSync('baseUrl')
+ this.token = uni.getStorageSync('token')
+ },
+
+ methods: {
+ itemWorkQtyChange(item) {},
+ // 鏄剧ず娑堟伅鎻愮ず
+ showMessage(text, type = 'success') {
+ this.msgType = type
+ this.messageText = text
+ this.$refs.message.open()
+ },
+
+ boxType1Input() {
+ let bcode = this.boxType1.split("-")[0];
+ if (this.tarBarcode != null && this.tarBarcode != undefined && this.tarBarcode != '') {
+ if (this.tarBarcode != bcode && this.dataList.length > 0) {
+ this.messageText = "澶氭缁勬墭鍙拌溅涓嶄竴鑷达紝璇锋鏌ュ悗鍐嶆搷浣滐紒锛�"
+ this.messageToggle('error')
+ this.dataList = [];
+ return;
+ }
+ }
+ this.tarBarcode = bcode;
+ },
+
+
+ // 閲嶇疆鍏夋爣鐒︾偣
+ resetFocus(field) {
+ this[field] = false
+ setTimeout(() => {
+ this[field] = true
+ }, 100)
+ },
+
+ // 澶勭悊鎺堟潈閿欒
+ handleAuthError(msg) {
+ this.showMessage(msg, 'error')
+ setTimeout(() => {
+ uni.reLaunch({
+ url: '../login/login'
+ })
+ }, 1000)
+ },
+
+ // 婧愭墭鐩樿緭鍏ヤ簨浠�
+ barcodeInput() {
+ setTimeout(() => {
+ const len = this.orgBarcode.length
+ if (len > 0 && len < 8) {
+ uni.showToast({
+ title: '鎵樼洏鐮佹湁璇閲嶈瘯',
+ icon: 'none',
+ position: 'top'
+ })
+ this.orgBarcode = ''
+ this.resetFocus('orgBarcodeFocus')
+ return
+ }
+ this.resetFocus('tarBarcodeFocus')
+ }, 200)
+ this.search()
+ },
+ search() {
+ let that = this
+ uni.request({
+ url: that.baseUrl + '/mobile/agv/collectionPakin/view',
+ header: {
+ token: uni.getStorageSync('token')
+ },
+ data: JSON.stringify({
+ orgBarcode: that.orgBarcode
+ }),
+ method: 'POST',
+ success(res) {
+ res = res.data
+ if (res.code === 200) {
+ that.dataList = res.data.map((item) => ({
+ ...item,
+ workQty: item.anfme
+ }))
+ } else if (res.code == 403) {
+ that.messageText = res.msg
+ that.messageToggle('error')
+ setTimeout(() => {
+ uni.reLaunch({
+ url: '../login/login'
+ })
+ }, 1000)
+ } else {
+ that.showMessage(res.msg, 'error')
+ }
+ }
+ })
+ },
+ // 鎼滅储鐗╂枡
+ findMat() {
+ if (!this.tarBarcode) return
+ setTimeout(() => {
+ uni.request({
+ url: `${this.baseUrl}/mat/auth`,
+ data: {
+ matnr: this.tarBarcode
+ },
+ header: {
+ token: this.token
+ },
+ success: (result) => {
+ const res = result.data
+ if (res.code === 200 && res.data) {
+ this.navigateToMatSelect(res.data)
+ } else if (res.code === 403) {
+ this.handleAuthError(res.msg)
+ } else {
+ uni.showToast({
+ title: res.msg,
+ icon: 'none',
+ position: 'top'
+ })
+ }
+ }
+ })
+ }, 200)
+ },
+
+ // 璺宠浆鐗╂枡閫夋嫨椤�
+ navigateToMatSelect(matData) {
+ matData.batch = ''
+ uni.navigateTo({
+ url: '../mat/matSelected',
+ success: (res) => {
+ res.eventChannel.emit('mat', {
+ data: [matData]
+ })
+ },
+ events: {
+ matList: (data) => {
+ this.checkMat(data.data)
+ this.tarBarcode = ''
+ this.resetFocus('tarBarcodeFocus')
+ }
+ }
+ })
+ },
+
+ // 閫夋嫨鐗╂枡
+ selectMat() {
+ uni.navigateTo({
+ url: '../mat/matQuery',
+ success: (res) => {
+ res.eventChannel.emit('commonUrl', {
+ commonUrl: ''
+ })
+ },
+ events: {
+ acceptDataFromOpenedPage: (data) => {
+ this.tarBarcode = data.data
+ this.findMat()
+ }
+ }
+ })
+ },
+
+ // 妫�鏌ュ苟娣诲姞鐗╂枡
+ checkMat(mat) {
+ const existIndex = this.dataList.findIndex(
+ (item) => item.matnr === mat.matnr && item.batch === mat.batch
+ )
+
+ if (existIndex > -1) {
+ // 鐩稿悓鐗╂枡鐩稿悓鎵瑰彿锛屾暟閲忕疮鍔�
+ this.dataList[existIndex].anfme += mat.anfme
+ this.$forceUpdate()
+ } else {
+ // 鏂板鍒板垪琛ㄥご閮�
+ this.dataList.unshift(mat)
+ }
+ if (this.dataList[existIndex].boxType1 != null && this.dataList[existIndex].boxType1 == "1") {
+ this.dataList[existIndex].boxType1 = this.boxType1;
+ }
+ },
+
+ // 鎵撳紑淇敼寮圭獥
+ revise(item, index) {
+ // const item = this.dataList[index]
+ console.log(item);
+ this.editForm = {
+ index,
+ matnr: item.matnr,
+ standby1: item.standby1,
+ weight: item.weight,
+ count: item.anfme
+ }
+ this.$refs.revise.open()
+ },
+
+ // 鏁伴噺鍙樻洿
+ changeValue(value) {
+ this.editForm.count = value
+ },
+
+ // 纭淇敼
+ reviseConfirm() {
+ const {
+ index,
+ count,
+ standby1,
+ weight,
+ } = this.editForm
+ this.dataList[index].anfme = count
+ this.dataList[index].standby1 = standby1
+ this.dataList[index].weight = weight
+ this.dataList[index].boxType1 = this.tempBoxType
+ this.$refs.revise.close()
+
+ let bcode = this.tempBoxType.split("-")[0];
+ if (this.tarBarcode != null && this.tarBarcode != undefined && this.tarBarcode != '') {
+ if (this.tarBarcode != bcode && this.dataList.length > 0) {
+ this.messageText = "澶氭缁勬墭鍙拌溅涓嶄竴鑷达紝璇锋鏌ュ悗鍐嶆搷浣滐紒锛�"
+ this.messageToggle('error')
+ return;
+ }
+ }
+ this.tarBarcode = bcode;
+
+ this.showMessage('淇敼鎴愬姛')
+ },
+
+ // 鍏抽棴淇敼寮圭獥
+ reviseClose() {
+ this.$refs.revise.close()
+ },
+
+ // 鎵撳紑绉婚櫎纭寮圭獥
+ remove(index) {
+ this.removeIndex = index
+ this.$refs.removeDialog.open()
+ },
+
+ // 纭绉婚櫎
+ removeConfirm() {
+ this.dataList.splice(this.removeIndex, 1)
+ this.showMessage('绉婚櫎鎴愬姛')
+ },
+
+ // 鍏抽棴绉婚櫎寮圭獥
+ removeClose() {
+ this.$refs.removeDialog.close()
+ },
+
+ // 鎵撳紑缁勬墭纭寮圭獥
+ combConfirm() {
+ if (!this.orgBarcode) {
+ this.showMessage('璇锋壂鎻忔簮鎵樼洏鏉$爜', 'error')
+ return
+ }
+ if (this.dataList.length === 0) {
+ this.showMessage('璇锋坊鍔犲晢鍝佸垪琛�', 'error')
+ return
+ }
+ if (!this.tarBarcode) {
+ this.showMessage('璇锋壂鎻忕洰鏍囨墭鐩樻潯鐮�', 'error')
+ return
+ }
+ const invalidItem = this.dataList.find(
+ (item) => !item.anfme || item.anfme === 0
+ )
+ if (invalidItem) {
+ this.showMessage(
+ `${invalidItem.matnr} 缁勬墭鏁伴噺涓嶈兘涓�0`,
+ 'error'
+ )
+ return
+ }
+ this.$refs.combDialog.open()
+ },
+
+ // 鍏抽棴缁勬墭寮圭獥
+ combClose() {
+ this.$refs.combDialog.close()
+ },
+
+ // 鎵ц缁勬墭
+ comb() {
+ if (this.isCombing) return
+ this.isCombing = true
+ uni.vibrateShort()
+
+ uni.request({
+ url: `${this.baseUrl}/mobile/agv/collectionPakin/auth`,
+ method: 'POST',
+ data: JSON.stringify({
+ orgBarcode: this.orgBarcode,
+ tarBarcode: this.tarBarcode,
+ devNo: this.devNo,
+ combMats: this.dataList
+ }),
+ header: {
+ token: this.token
+ },
+ success: (result) => {
+ const res = result.data
+ if (res.code === 200) {
+ this.clearAll()
+ this.showMessage(res.msg, 'success')
+ // this.showMessage('缁勬墭鎴愬姛')
+ // // 鎾斁鎴愬姛鎻愮ず闊�
+ // const audio = uni.createInnerAudioContext()
+ // audio.src = '/static/music/pakinOk.mp3'
+ // audio.play()
+ } else if (res.code === 403) {
+ this.handleAuthError(res.msg)
+ } else {
+ this.showMessage(res.msg, 'error')
+ }
+ },
+ complete: () => {
+ // 璇锋眰瀹屾垚鍚庤В闄ら槻鎶栭攣瀹�
+ setTimeout(() => {
+ this.isCombing = false
+ }, 500)
+ }
+ })
+ },
+
+ // 鎵撳紑閲嶇疆纭寮圭獥
+ reset() {
+ this.$refs.resetDialog.open()
+ },
+
+ // 纭閲嶇疆
+ resetConfirm() {
+ this.clearAll()
+ this.showMessage('閲嶇疆瀹屾垚')
+ },
+
+ // 鍏抽棴閲嶇疆寮圭獥
+ resetClose() {
+ this.$refs.resetDialog.close()
+ },
+
+ // 娓呯┖鎵�鏈夋暟鎹�
+ clearAll() {
+ this.dataList = []
+ this.orgBarcode = ''
+ this.tarBarcode = ''
+ this.devNo = ''
+ this.resetFocus('orgBarcodeFocus')
+ }
+ }
+ }
+</script>
+
+<style>
+ @import url('../../static/css/wms.css/wms.css');
+
+ .code {
+ width: 100%;
+ position: fixed;
+ min-height: 200rpx;
+ background-color: #fff;
+ z-index: 10;
+ }
+
+ .item {
+ display: flex;
+ align-items: center;
+ height: 100rpx;
+ margin-left: 20rpx;
+ border-bottom: 1px solid #dcdfe6;
+ }
+
+ .item input {
+ height: 50rpx;
+ line-height: 50rpx;
+ font-size: 36upx;
+ font-family: PingFang SC;
+ width: 55vw;
+ }
+
+ .code-decs {
+ width: 20vw;
+ font-size: 18px;
+ color: #303133;
+ }
+
+ .item-right {
+ margin-left: auto;
+ margin-right: 20rpx;
+ }
+
+ .mat-list-title {
+ height: 80rpx;
+ line-height: 80rpx;
+ width: 100%;
+ background-color: white;
+ position: fixed;
+ margin-top: 150rpx;
+ z-index: 9;
+ text-align: center;
+ box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.5);
+ }
+
+ .list:first-child {
+ margin-top: 270rpx;
+ }
+
+ .empty-tips {
+ text-align: center;
+ color: #909399;
+ padding: 100rpx 0;
+ margin-top: 150rpx;
+ }
+
+ .tip {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+</style>
\ No newline at end of file
--
Gitblit v1.9.1