From 94d565b9bc2d441972f203ace2423dc1fe156934 Mon Sep 17 00:00:00 2001
From: lbq <1065079612@qq.com>
Date: 星期二, 23 十二月 2025 13:44:55 +0800
Subject: [PATCH] WMS3.0,PDA端,平湖银座五期
---
pages/outbound/productDirectDelivery.vue | 283 ++
static/img/toux80.png | 0
locale/zh-Hans.json | 24
pages/outbound/matPreparation.vue | 287 ++
pages/workInfo/locInfo.vue | 239 ++
locale/en.json | 6
pages/emptyTray/inBound.vue | 264 ++
pages/inbound/orderIn.vue | 382 +++
common/request.js | 2
pages/transfer/orderTransferItem.vue | 291 ++
pages/home/orderManage.vue | 13
pages/emptyTray/outBound.vue | 235 ++
pages/home/index.vue | 314 ++
pages/listing/unPakin.vue | 17
pages/transfer/orderTransfer.vue | 287 ++
pages/outbound/matDirectDelivery.vue | 283 ++
pages/inspect/bad.vue | 3
pages/outbound/orderOutExecute.vue | 295 ++
pages/inbound/buffStore.vue | 309 ++
pages/outbound/orderPick.vue | 287 ++
pages/listing/matnrPalletising.vue | 25
pages/inspect/check.vue | 10
pages/transfer/transferType.vue | 382 +++
pages/outbound/productionMatCall.vue | 8
pages/workInfo/taskInfo.vue | 296 ++
pages.json | 135 +
pages/outbound/matPreparationItem.vue | 329 ++
pages/outbound/orderOutItem.vue | 291 ++
pages/inbound/orderInItem.vue | 291 ++
pages/inbound/orderInExecute.vue | 296 ++
pages/AGV/StartInTask.vue | 47
pages/listing/labour.vue | 9
pages/workInfo/stationInfo.vue | 234 ++
pages/transfer/matTransfer.vue | 265 ++
pages/outbound/orderOut.vue | 382 +++
35 files changed, 6,677 insertions(+), 144 deletions(-)
diff --git a/common/request.js b/common/request.js
index 7645f4e..d0bc13c 100644
--- a/common/request.js
+++ b/common/request.js
@@ -16,7 +16,7 @@
const token = uni.getStorageSync('token');
// const URL = 'http://47.76.147.249:8080/rsf-server/pda' + url;
// const URL = 'http://test.zoneyung.net:8080/rsf-server/pda' + url;
- const URL = 'http://192.168.51.35:8085/rsf-server/pda' + url;
+ const URL = 'http://127.0.0.1:8085/rsf-server/pda' + url;
uni.request({
url: URL,
data: postData,
diff --git a/locale/en.json b/locale/en.json
index a960e47..1a32564 100644
--- a/locale/en.json
+++ b/locale/en.json
@@ -35,8 +35,10 @@
"language-change-confirm":"chenge",
"hello":"Hello, welcome to log in to the WMS system!",
"intro":"Make manufacturing and logistics more efficient",
- "checkOrder":"checkOrder"
-
+ "checkOrder":"checkOrder",
+ "emptyTrayInBound":"EmptyTray InBound",
+ "emptyTrayOutBound":"EmptyTray OutBound",
+ "orderPick":"Order Pick"
},
"other":{
diff --git a/locale/zh-Hans.json b/locale/zh-Hans.json
index ff7223c..fd0a7e1 100644
--- a/locale/zh-Hans.json
+++ b/locale/zh-Hans.json
@@ -23,11 +23,11 @@
"palletizing": "鍗曟嵁缁勬墭",
"palletBuilding":"缁勬墭瑙g粦",
"inspectionRequest":"鎶ユ",
- "qualityInspection":"璐ㄦ",
- "defectiveMarking":"涓嶈壇鏍囪",
+ "qualityInspection":"璐ㄦ瑙i攣",
+ "defectiveMarking":"璐ㄦ涓婇攣",
"manualPutaway":"浜哄伐涓婃灦",
"stationBinding":"绔欑偣缁戝畾",
- "inboundInitiation":"鍚姩鍏ュ簱",
+ "inboundInitiation":"AGV鍏ュ簱",
"stationUnbinding":"绔欑偣瑙g粦",
"bindAndInbound":"缁戝畾&鍏ュ簱",
"quickPicking":"蹇�熸嫞璐�",
@@ -36,7 +36,23 @@
"language-change-confirm":"纭畾鍒囨崲?",
"hello":"鎮ㄥソ锛屾杩庣櫥褰昗MS绯荤粺锛�",
"intro":"璁╁埗閫犱笌鐗╂祦鏇撮珮鏁�",
- "checkOrder":"鐩樼偣"
+ "checkOrder":"鐩樼偣",
+ "emptyOutBound":"绌烘墭鍑哄簱",
+ "emptyInBound":"绌烘墭鍏ュ簱",
+ "orderPick":"璁㈠崟鍑哄簱",
+ "orderPickGroup":"鍑哄簱璁㈠崟",
+ "orderTransfer":"璋冩嫧璁㈠崟",
+ "orderIn":"鍏ュ簱璁㈠崟",
+ "orderInItem":"鍏ュ簱璁㈠崟璇︽儏",
+ "matTransfer":"绉诲簱",
+ "buffStore":"鐏屾《鍏ュ簱",
+ "stationInfo":"绔欑偣缁存姢",
+ "locInfo":"搴撲綅缁存姢",
+ "taskInfo":"宸ヤ綔浠诲姟",
+ "productionMatCall":"鐢熶骇鍙枡",
+ "matDirectDelivery":"鐢熶骇鐩撮��",
+ "productDirectDelivery":"鎴愬搧鐩村嚭",
+ "matPreparation":"鐢熶骇澶囨枡"
},
diff --git a/pages.json b/pages.json
index 6b96799..150f997 100644
--- a/pages.json
+++ b/pages.json
@@ -13,6 +13,132 @@
}
},
{
+ "path": "pages/emptyTray/outBound",
+ "style": {
+ "navigationBarTitleText": "绌烘墭鍑哄簱"
+ }
+ },
+ {
+ "path": "pages/emptyTray/inBound",
+ "style": {
+ "navigationBarTitleText": "绌烘墭鍏ュ簱"
+ }
+ },
+ {
+ "path": "pages/outbound/orderPick",
+ "style": {
+ "navigationBarTitleText": "璁㈠崟鍑哄簱"
+ }
+ },
+ {
+ "path": "pages/outbound/orderOut",
+ "style": {
+ "navigationBarTitleText": "鍑哄簱璁㈠崟"
+ }
+ },
+ {
+ "path": "pages/outbound/orderOutItem",
+ "style": {
+ "navigationBarTitleText": "璁㈠崟鍑哄簱璇︽儏"
+ }
+ },
+ {
+ "path": "pages/outbound/matPreparation",
+ "style": {
+ "navigationBarTitleText": "鐢熶骇澶囨枡"
+ }
+ },
+ {
+ "path": "pages/outbound/matPreparationItem",
+ "style": {
+ "navigationBarTitleText": "鐢熶骇澶囨枡璇︽儏"
+ }
+ },
+ {
+ "path": "pages/inbound/orderIn",
+ "style": {
+ "navigationBarTitleText": "鍏ュ簱璁㈠崟"
+ }
+ },
+ {
+ "path": "pages/inbound/orderInExecute",
+ "style": {
+ "navigationBarTitleText": "鍏ュ簱璁㈠崟鍒楄〃"
+ }
+ },
+ {
+ "path": "pages/inbound/orderInItem",
+ "style": {
+ "navigationBarTitleText": "鍏ュ簱璁㈠崟璇︽儏"
+ }
+ },
+ {
+ "path": "pages/transfer/transferType",
+ "style": {
+ "navigationBarTitleText": "璋冩嫧绫诲瀷"
+ }
+ },
+ {
+ "path": "pages/transfer/orderTransfer",
+ "style": {
+ "navigationBarTitleText": "璋冩嫧璁㈠崟"
+ }
+ },
+ {
+ "path": "pages/transfer/orderTransferItem",
+ "style": {
+ "navigationBarTitleText": "璋冩嫧璁㈠崟璇︽儏"
+ }
+ },
+ {
+ "path": "pages/transfer/matTransfer",
+ "style": {
+ "navigationBarTitleText": "绉诲簱"
+ }
+ },
+ {
+ "path": "pages/workInfo/taskInfo",
+ "style": {
+ "navigationBarTitleText": "宸ヤ綔浠诲姟"
+ }
+ },
+ {
+ "path": "pages/workInfo/stationInfo",
+ "style": {
+ "navigationBarTitleText": "绔欑偣淇℃伅"
+ }
+ },
+ {
+ "path": "pages/workInfo/locInfo",
+ "style": {
+ "navigationBarTitleText": "搴撲綅淇℃伅"
+ }
+ },
+ {
+ "path": "pages/inbound/buffStore",
+ "style": {
+ "navigationBarTitleText": "鐏屾《鍏ュ簱"
+ }
+ },
+ {
+ "path": "pages/outbound/matDirectDelivery",
+ "style": {
+ "navigationBarTitleText": "鐢熶骇鐩撮��"
+ }
+ },
+ {
+ "path": "pages/outbound/productDirectDelivery",
+ "style": {
+ "navigationBarTitleText": "鎴愬搧鐩村嚭"
+ }
+ },
+ {
+ "path": "pages/outbound/productionMatCall",
+ "style": {
+ "navigationBarTitleText": "鐢熶骇鍙枡"
+ }
+ },
+ {
"path": "pages/outbound/wavePick",
"style": {
"navigationBarTitleText": "娉㈡鎷h揣"
@@ -75,7 +201,7 @@
{
"path": "pages/AGV/StartInTask",
"style": {
- "navigationBarTitleText": "AGV鍚姩鍏ュ簱"
+ "navigationBarTitleText": "AGV鍏ュ簱"
}
},
{
@@ -112,13 +238,13 @@
{
"path": "pages/inspect/check",
"style": {
- "navigationBarTitleText": "璐ㄦ"
+ "navigationBarTitleText": "璐ㄦ瑙i攣"
}
},
{
"path": "pages/inspect/bad",
"style": {
- "navigationBarTitleText": "涓嶈壇鏍囩"
+ "navigationBarTitleText": "璐ㄦ涓婇攣"
}
},
{
@@ -275,9 +401,6 @@
"enablePullDownRefresh": false
}
}
-
-
-
, {
"path": "pages/phyz/AGV/emptyOut",
"style": {
diff --git a/pages/AGV/StartInTask.vue b/pages/AGV/StartInTask.vue
index d43db9e..f59316a 100644
--- a/pages/AGV/StartInTask.vue
+++ b/pages/AGV/StartInTask.vue
@@ -1,11 +1,19 @@
<template>
<view class="has-foot">
<form>
- <view class="cu-form-group ">
- <view class="title">鎺ラ┏绔�</view>
- <input placeholder="璇锋壂鎻忔帴椹崇珯鏉$爜" v-model="barcode" ></input>
+ <view class="cu-form-group margin-top">
+ <view class="title">鎺ラ┏绔欑偣</view>
+ <input placeholder="璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+ <!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+ </view>
+ <view class="cu-form-group">
+ <view class="title">瀹瑰櫒鍙�</view>
+ <input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="barcode" ></input>
<text class='cuIcon-search text-blue' @click="search"></text>
</view>
+<!-- <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-blue margin-left">瀹瑰櫒鐮�:{{container}}</view>
+ </view> -->
<view class="cu-form-group">
<view class="title">鐩爣搴撳尯</view>
<view style="width: 75%;">
@@ -14,11 +22,6 @@
</view>
</view>
</form>
- <view class="flex solid-bottom padding-sm justify-between">
- <view class="text-blue">瀹瑰櫒鐮�:{{container}}</view>
-
- </view>
-
<view class="cu-list det menu sm-border padding">
@@ -70,7 +73,7 @@
<view class="cu-bar btn-group foot">
<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍚姩</button>
+ <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button>
</view>
@@ -106,7 +109,10 @@
computed: {
...mapState('user', ['dynamicFields']),
},
- mounted() {},
+ mounted() {
+ this.getRece()
+ this.whAreaId = uni.getStorageSync('whAreaId')
+ },
methods: {
selChange(val) {
uni.setStorageSync('whAreaId', val)
@@ -166,7 +172,7 @@
async confirm() {
if(this.barcode === '' || this.barcode ===null){
uni.showToast({
- title: "鎺ラ┏绔欑爜涓嶈兘涓虹┖",
+ title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
icon: "none",
})
return ;
@@ -177,7 +183,7 @@
icon: "none",
})
return ;
- }
+ }
this.repeatClick = true
const {
code,
@@ -200,10 +206,21 @@
})
}
this.repeatClick = false
-
-
},
-
+
+ async getRece() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/areas/receipt', {}, 'get')
+ if (code === 200) {
+ this.range = data.map(item => ({
+ value: item.id,
+ text: item.warehouseId$ + "-- " + item.name
+ }));
+ }
+ },
}
}
</script>
diff --git a/pages/emptyTray/inBound.vue b/pages/emptyTray/inBound.vue
new file mode 100644
index 0000000..f7dd07f
--- /dev/null
+++ b/pages/emptyTray/inBound.vue
@@ -0,0 +1,264 @@
+<template>
+ <view class="has-foot">
+ <form>
+ <view class="cu-form-group margin-top">
+ <view class="title">瀹瑰櫒鍙�</view>
+ <input placeholder="璇锋壂瀹瑰櫒鏉$爜" v-model="container"></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ <view class="cu-form-group ">
+ <view class="title">鎺ラ┏绔欑偣</view>
+ <input placeholder="璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+ </view>
+ </form>
+
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index">
+ <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ <view class="text-blue">
+ {{`${item.maktx}`}}
+ </view>
+ </view>
+ <!-- <view class="action" >
+ <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
+ </view> -->
+ </view>
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">ASN:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.asnCode}}</text>
+ </view>
+ </view>
+
+
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鎵规:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.batch}}</text>
+ </view>
+ </view>
+
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鏀惰揣鏁伴噺:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.anfme}}</text>
+ </view>
+ </view>
+
+ </block>
+ </view>
+
+
+ <view class="cu-bar btn-group foot">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="confirm">鍥炲簱</button>
+ </view>
+
+ <uni-popup ref="popup" class="cu-popup">
+ <view class="popup-content">
+ <view class="head">
+ <text>鎺ㄨ崘</text>
+ <text class='cuIcon-close text-red close' @click="close"></text>
+ </view>
+
+ <div class="body">
+ <view class="cu-list grid col-3 no-border">
+ <view class="item" v-for="el in range">
+ <view class="cu-btn round sm" :class="[el===curCode?'bg-blue':'line-blue']"
+ @click="itemChange(el)">{{el}}</view>
+ </view>
+ </view>
+ </div>
+
+ <view class="cu-bar btn-group ">
+ <button class="cu-btn bg-blue shadow-blur" @click="popupSubmit">鎻愪氦</button>
+ </view>
+ </view>
+ </uni-popup>
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ barcode: '',
+ areaName: '',
+ locCode: '',
+ container: '',
+ list: [],
+ range: [],
+ curCode: ''
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ },
+ mounted() {},
+ methods: {
+ async search() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/stock/operate/list', {
+ barcode: this.container,
+ sta: this.barcode
+ })
+ if (code === 200) {
+ // const find = this.list.find(el => el.id === data.id);
+ // !find &&
+ this.list = data
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ },
+
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+
+ this.container = ''
+ this.barcode = ''
+ },
+
+ open() {
+ this.$refs.popup.open()
+ },
+
+ close() {
+ this.$refs.popup.close()
+ },
+
+ popupSubmit() {
+ this.$refs.popup.close()
+ },
+ itemChange(el) {
+ this.curCode = el
+ },
+
+ async confirm() {
+ if(this.container === '' || this.container ===null){
+ uni.showToast({
+ title: "瀹瑰櫒鐮佷笉鑳戒负绌�",
+ icon: "none",
+ })
+ return ;
+ }
+ if(this.barcode === '' || this.barcode ===null){
+ uni.showToast({
+ title: "鎺ラ┏绔欑爜涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/AGV/staBind',{
+ barcode: this.container,
+ sta: this.barcode
+ }
+ )
+ if (code === 200) {
+ uni.showToast({
+ title: '缁戝畾鎴愬姛'
+ })
+ this.clear()
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+
+
+
+ },
+
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+
+ .uni-file-picker {
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ .uni-select__selector {
+ z-index: 999;
+ }
+
+ .tj {
+ height: auto;
+ padding: 6px 8px;
+ display: inline-block;
+ border-radius: 6px;
+ }
+
+ .item {
+ display: flex;
+ justify-content: center;
+ }
+
+ .item .cu-btn {
+ font-size: 26upx;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/emptyTray/outBound.vue b/pages/emptyTray/outBound.vue
new file mode 100644
index 0000000..a0ef4e2
--- /dev/null
+++ b/pages/emptyTray/outBound.vue
@@ -0,0 +1,235 @@
+<template>
+ <view class="has-foot">
+ <form>
+ <view class="cu-form-group margin-top">
+ <view class="title">鎺ラ┏绔欑偣</view>
+ <input placeholder=" 璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+ </view>
+
+ <view class="cu-form-group margin-bottom">
+ <view class="title">瀹瑰櫒绫诲瀷</view>
+ <view style="width: 78%;">
+ <uni-data-select style="min-width: 80%; max-width: 80%;" v-model="palletTypeId" :localdata="range"
+ placement="bottom" @change="selChange"></uni-data-select>
+ </view>
+ </view>
+ </form>
+
+
+ <view class="cu-bar btn-group foot">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="confirm">鍛煎彨</button>
+ </view>
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ barcode: '',
+ areaName: '',
+ locCode: '',
+ container: '',
+ list: [],
+ range: [],
+ curCode: ''
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ },
+ mounted() {
+ this.getPalletType(),
+ this.palletTypeId = uni.getStorageSync('palletTypeId')
+ },
+ methods: {
+ selChange(val) {
+ uni.setStorageSync('palletTypeId', val.value)
+ },
+ // async search() {
+ // const {
+ // code,
+ // data,
+ // msg
+ // } = await request('/stock/operate/list', {
+ // barcode: this.container,
+ // sta: this.barcode
+ // })
+ // if (code === 200) {
+ // // const find = this.list.find(el => el.id === data.id);
+ // // !find &&
+ // this.list = data
+ // } else {
+ // uni.showToast({
+ // title: msg,
+ // icon: "none",
+ // })
+ // }
+ // },
+
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.palletTypeId = ''
+ this.container = ''
+ this.barcode = ''
+ },
+
+ open() {
+ this.$refs.popup.open()
+ },
+
+ close() {
+ this.$refs.popup.close()
+ },
+
+ popupSubmit() {
+ this.$refs.popup.close()
+ },
+ itemChange(el) {
+ this.curCode = el
+ },
+
+ async getPalletType() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/info/palletType/list', {}, 'get')
+ if (code === 200) {
+ this.range = data.map(item => ({
+ value: item.id,
+ text: item.group === null ? item.label : item.group + "-- " + item.label
+ }));
+ }
+ },
+
+ async confirm() {
+ if(this.barcode === '' || this.barcode === null){
+ uni.showToast({
+ title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ if(this.palletTypeId === '' || this.palletTypeId === null){
+ uni.showToast({
+ title: "璇烽�夋嫨鎵樼洏绫诲瀷",
+ icon: "none",
+ })
+ return ;
+ } else {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/orders/confirm', {
+ receipts: newArr,
+ palletTypeId: this.palletTypeId
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: '鍛煎彨绌烘墭鐩樹腑锛岃绋嶄綔绛夊緟'
+ })
+ this.list = []
+ this.barcode = ''
+ this.isconfirm = false
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+ }
+
+ // const {
+ // code,
+ // data,
+ // msg
+ // } = await request('/AGV/staBind',{
+ // barcode: this.container,
+ // sta: this.barcode
+ // }
+ // )
+ // if (code === 200) {
+ // uni.showToast({
+ // title: '缁戝畾鎴愬姛'
+ // })
+ // this.clear()
+ // } else {
+ // uni.showToast({
+ // title: msg,
+ // icon: "none",
+ // })
+ // }
+ },
+
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+
+ .uni-file-picker {
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ .uni-select__selector {
+ z-index: 999;
+ }
+
+ .tj {
+ height: auto;
+ padding: 6px 8px;
+ display: inline-block;
+ border-radius: 6px;
+ }
+
+ .item {
+ display: flex;
+ justify-content: center;
+ }
+
+ .item .cu-btn {
+ font-size: 26upx;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/home/index.vue b/pages/home/index.vue
index 5ccdfae..14543a6 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -3,61 +3,84 @@
<view class="user-bg">
<image src="../../static/img/toux.png" class="tx" mode="widthFix"></image>
<view class="text-xl margin-top-sm margin-left-lg">
- <view class="text-blue text-bold text-xxl">
+ <view class="text-blue text-bold text-xl">
{{user.username}}
</view>
- <view class="text-gray">浠撳簱涓荤 | zy32423423</view>
+ <view class="text-gray text-l">{{user.code}}</view>
</view>
-
+ <view class="cu-btn bg-red margin-tb-sm lg round" style="position: absolute; right: 20px; width: 30%; height: 50%;" @click="equit">{{$t('index.outLogin')}}</view>
</view>
-
- <view class="cu-bar bg-white solid-bottom margin-top">
+
+ <view class="cu-bar bg-white solid-bottom margin-top-sm">
<view class="action">
- <text class="cuIcon-title text-orange "></text> 鏀惰揣
+ <text class="cuIcon-title text-orange "></text> 鍏ュ簱
</view>
-
- </view>
-
+ </view>
<view class="cu-list grid col-4 no-border">
- <!-- <view class="cu-item">
+ <!-- 绌烘墭鍏ュ簱 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/emptyTray/inBound" navigateTo>
+ <view class="cuIcon-pulldown text-blue"></view>
+ <text>{{$t('index.emptyInBound')}}</text>
+ </navigator>
+ </view>
+ <view class="cu-item">
<navigator hover-class='none' url="/pages/rece/standard" navigateTo>
<view class="cuIcon-apps text-blue">
</view>
<text>鏍囧噯鏀惰揣</text>
</navigator>
- </view> -->
-
+ </view>
+ <!-- 鍗曟嵁缁勬墭 -->
<view class="cu-item">
+ <navigator hover-class='none' url="/pages/listing/matnrPalletising" navigateTo>
+ <view class="cuIcon-cardboard text-blue"></view>
+ <text>{{$t('index.palletizing')}}</text>
+ </navigator>
+ </view>
+ <!-- 缁勬墭瑙g粦 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/listing/unPakin" navigateTo>
+ <view class="cuIcon-cardboardforbid text-blue"></view>
+ <text>{{$t('index.palletBuilding')}}</text>
+ </navigator>
+ </view>
+ <!-- 鍚姩鍏ュ簱 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/AGV/StartInTask" navigateTo>
+ <view class="cuIcon-pulldown text-blue"></view>
+ <text>{{$t('index.inboundInitiation')}}</text>
+ </navigator>
+ </view>
+ <!-- 鍏ュ簱璁㈠崟 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/inbound/orderIn" navigateTo>
+ <view class="cuIcon-addressbook text-blue"></view>
+ <text>{{$t('index.orderIn')}}</text>
+ </navigator>
+ </view>
+ <!-- 浜哄伐涓婃灦 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/listing/labour" navigateTo>
+ <view class="cuIcon-friendadd text-blue"></view>
+ <text>{{$t('index.manualPutaway')}}</text>
+ </navigator>
+ </view>
+ <!-- 鐏屾《鍏ュ簱锛氱紦瀛樺尯琚嬭濉戞枡绮掑瓙鐏屾《鍚庡叆搴� -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/inbound/buffStore" navigateTo>
+ <view class="cuIcon-all text-blue"></view>
+ <text>{{$t('index.buffStore')}}</text>
+ </navigator>
+ </view>
+
+<!-- <view class="cu-item">
<navigator hover-class='none' url="/pages/rece/other" navigateTo>
<view class="cuIcon-taoxiaopu text-blue">
</view>
<text>{{$t('index.GR')}}</text>
</navigator>
</view>
-
- <!-- <view class="cu-item">
- <navigator hover-class='none' url="/pages/listing/disc" navigateTo>
- <view class="cuIcon-cardboard text-blue">
- </view>
- <text>缁勭洏</text>
- </navigator>
- </view> -->
- <view class="cu-item">
- <navigator hover-class='none' url="/pages/listing/matnrPalletising" navigateTo>
- <view class="cuIcon-cardboard text-blue">
- </view>
- <text>{{$t('index.palletizing')}}</text>
- </navigator>
- </view>
-
- <view class="cu-item">
- <navigator hover-class='none' url="/pages/listing/unPakin" navigateTo>
- <view class="cuIcon-cardboardforbid text-blue">
- </view>
- <text>{{$t('index.palletBuilding')}}</text>
- </navigator>
- </view>
-
<view class="cu-item">
<navigator hover-class='none' url="/pages/inspect/report" navigateTo>
<view class="cuIcon-edit text-blue">
@@ -65,35 +88,164 @@
<text>{{$t('index.inspectionRequest')}}</text>
</navigator>
</view>
-
+
<view class="cu-item">
- <navigator hover-class='none' url="/pages/inspect/check" navigateTo>
- <view class="cuIcon-warn text-blue">
+ <navigator hover-class='none' url="/pages/listing/disc" navigateTo>
+ <view class="cuIcon-cardboard text-blue">
</view>
- <text>{{$t('index.qualityInspection')}}</text>
+ <text>缁勭洏</text>
+ </navigator>
+ </view> -->
+ </view>
+
+
+ <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <text class="cuIcon-title text-orange "></text> 鍑哄簱
+ </view>
+ </view>
+ <view class="cu-list grid col-4 no-border">
+ <!-- 绌烘墭鍑哄簱 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/emptyTray/outBound" navigateTo>
+ <view class="cuIcon-pullup text-blue"></view>
+ <text>{{$t('index.emptyOutBound')}}</text>
</navigator>
</view>
-
+ <!-- 璁㈠崟鍑哄簱 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/outbound/orderPick" navigateTo>
+ <view class="cuIcon-addressbook text-blue"></view>
+ <text>{{$t('index.orderPick')}}</text>
+ </navigator>
+ </view>
+ <!-- 鐢熶骇鐩撮�侊細鍘熸潗鏂欎笉鍏ュ簱鐩存帴閫佷骇绾� -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/outbound/matDirectDelivery" navigateTo>
+ <view class="cuIcon-deliver text-blue"></view>
+ <text>{{$t('index.matDirectDelivery')}}</text>
+ </navigator>
+ </view>
+ <!-- 鎴愬搧鐩村嚭锛氭垚鍝佷笉鍏ョ珛搴撶洿鎺ュ嚭搴� -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/outbound/productDirectDelivery" navigateTo>
+ <view class="cuIcon-deliver_fill text-blue"></view>
+ <text>{{$t('index.productDirectDelivery')}}</text>
+ </navigator>
+ </view>
+ <!-- 鍑哄簱璁㈠崟 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/outbound/orderOut" navigateTo>
+ <view class="cuIcon-addressbook text-blue"></view>
+ <text>{{$t('index.orderPickGroup')}}</text>
+ </navigator>
+ </view>
+ <!-- 鐢熶骇澶囨枡 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/outbound/matPreparation" navigateTo>
+ <view class="cuIcon-present text-blue"></view>
+ <text>{{$t('index.matPreparation')}}</text>
+ </navigator>
+ </view>
+
+ <!-- 鐢熶骇鍙枡 -->
+<!-- <view class="cu-item">
+ <navigator hover-class='none' url="/pages/outbound/productionMatCall" navigateTo>
+ <view class="cuIcon-apps text-blue">
+ </view>
+ <text>{{$t('index.productionMatCall')}}</text>
+ </navigator>
+ </view> -->
+ </view>
+
+
+ <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <text class="cuIcon-title text-orange "></text> 缁煎悎
+ </view>
+ </view>
+ <view class="cu-list grid col-4 no-border">
+ <!-- 璋冩嫧璁㈠崟 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/transfer/transferType" navigateTo>
+ <view class="cuIcon-addressbook text-blue"></view>
+ <text>{{$t('index.orderTransfer')}}</text>
+ </navigator>
+ </view>
+ <!-- 绉诲簱 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/transfer/matTransfer" navigateTo>
+ <view class="cuIcon-location text-blue"></view>
+ <text>{{$t('index.matTransfer')}}</text>
+ </navigator>
+ </view>
+ <!-- 鐩樼偣 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/check/checkOrder" navigateTo>
+ <view class="cuIcon-roundcheck text-blue"></view>
+ <text>{{$t('index.checkOrder')}}</text>
+ </navigator>
+ </view>
+ <!-- 璐ㄦ涓婇攣 -->
<view class="cu-item">
<navigator hover-class='none' url="/pages/inspect/bad" navigateTo>
- <view class="cuIcon-appreciate text-blue">
- </view>
+ <view class="cuIcon-lock text-blue"></view>
<text>{{$t('index.defectiveMarking')}}</text>
</navigator>
</view>
-
-
+ <!-- 璐ㄦ瑙i攣 -->
<view class="cu-item">
- <navigator hover-class='none' url="/pages/listing/labour" navigateTo>
- <view class="cuIcon-friendadd text-blue">
- </view>
- <text>{{$t('index.manualPutaway')}}</text>
+ <navigator hover-class='none' url="/pages/inspect/check" navigateTo>
+ <view class="cuIcon-unlock text-blue"></view>
+ <text>{{$t('index.qualityInspection')}}</text>
</navigator>
</view>
-
-
+ <!-- 宸ヤ綔浠诲姟 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/workInfo/taskInfo" navigateTo>
+ <view class="cuIcon-tagfill text-blue"></view>
+ <text>{{$t('index.taskInfo')}}</text>
+ </navigator>
+ </view>
+ <!-- 绔欑偣缁存姢 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/workInfo/stationInfo" navigateTo>
+ <view class="cuIcon-service text-blue"></view>
+ <text>{{$t('index.stationInfo')}}</text>
+ </navigator>
+ </view>
+ <!-- 搴撲綅缁存姢 -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/workInfo/locInfo" navigateTo>
+ <view class="cuIcon-servicefill text-blue"></view>
+ <text>{{$t('index.locInfo')}}</text>
+ </navigator>
+ </view>
+
+ <!-- <view class="cu-item">
+ <navigator hover-class='none' url="/pages/outbound/fastPicking" navigateTo>
+ <view class="cuIcon-apps text-blue">
+ </view>
+ <text>{{$t('index.quickPicking')}}</text>
+ </navigator>
+ </view>
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/outbound/wavePickItem" navigateTo>
+ <view class="cuIcon-apps text-blue">
+ </view>
+ <text>{{$t('index.wavePick')}}</text>
+ </navigator>
+ </view> -->
+<!-- <view class="cu-item">
+ <navigator hover-class='none' url="/pages/check/firstCheck" navigateTo>
+ <view class="cuIcon-apps text-blue"></view>
+ <text>{{$t('index.checkOrder')}}</text>
+ </navigator>
+ </view> -->
</view>
- <view class="cu-bar bg-white solid-bottom margin-top">
+
+
+ <!-- <view class="cu-bar bg-white solid-bottom margin-top-sm">
<view class="action">
<text class="cuIcon-title text-orange "></text> AGV
</view>
@@ -127,51 +279,51 @@
</view>
<text>{{$t('index.bindAndInbound')}}</text>
</navigator>
- </view>
-
- </view>
+ </view>
+ </view> -->
- <view class="cu-bar bg-white solid-bottom margin-top">
+
+ <!-- <view class="cu-bar bg-white solid-bottom margin-top-sm">
<view class="action">
- <text class="cuIcon-title text-orange "></text> 浣滀笟
+ <text class="cuIcon-title text-orange "></text> 寮�鍙�
</view>
</view>
-
+
<view class="cu-list grid col-4 no-border">
<view class="cu-item">
- <navigator hover-class='none' url="/pages/outbound/fastPicking" navigateTo>
- <view class="cuIcon-apps text-blue">
+ <navigator hover-class='none' url="/pages/phyz/stationManage/stationManage" navigateTo>
+ <view class="cuIcon-punch text-blue">
</view>
- <text>{{$t('index.quickPicking')}}</text>
+ <text>{{$t('index.stationBinding')}}</text>
</navigator>
</view>
<view class="cu-item">
- <navigator hover-class='none' url="/pages/outbound/wavePickItem" navigateTo>
- <view class="cuIcon-apps text-blue">
+ <navigator hover-class='none' url="/pages/home/orderManage" navigateTo>
+ <view class="cuIcon-punch text-blue">
</view>
- <text>{{$t('index.wavePick')}}</text>
+ <text>{{$t('index.stationBinding')}}</text>
</navigator>
</view>
<view class="cu-item">
- <navigator hover-class='none' url="/pages/check/checkOrder" navigateTo>
- <view class="cuIcon-apps text-blue">
+ <navigator hover-class='none' url="/pages/home/locMastManage" navigateTo>
+ <view class="cuIcon-punch text-blue">
</view>
- <text>{{$t('index.checkOrder')}}</text>
+ <text>{{$t('index.stationBinding')}}</text>
</navigator>
</view>
<view class="cu-item">
- <navigator hover-class='none' url="/pages/check/firstCheck" navigateTo>
- <view class="cuIcon-apps text-blue">
+ <navigator hover-class='none' url="/pages/home/wrkMastManage" navigateTo>
+ <view class="cuIcon-punch text-blue">
</view>
- <text>{{$t('index.checkOrder')}}</text>
+ <text>{{$t('index.stationBinding')}}</text>
</navigator>
- </view>
-
+ </view> -->
</view>
+
- <view class="padding flex flex-direction">
+<!-- <view class="padding flex flex-direction">
<view class="cu-btn bg-red margin-tb-sm lg round" @click="equit">{{$t('index.outLogin')}}</view>
- </view>
+ </view> -->
</view>
</view>
</template>
@@ -180,15 +332,11 @@
export default {
data() {
return {
- user:{
-
+ user:{
}
}
},
-
onShow() {
-
-
this.user = uni.getStorageSync('userData');
},
methods: {
@@ -217,27 +365,23 @@
display: flex;
flex-direction: row;
background-size: cover;
- height: 280rpx;
+ height: 150rpx;
position: relative;
color: #000;
align-items: center;
justify-content: start;
padding: 0 40rpx;
background-color: #fff;
-
}
-
.tx {
- width: 160rpx;
+ width: 100rpx;
border-radius: 50%;
border: 1px solid #e9e9e9;
}
-
.left {
display: flex;
flex-direction: column;
}
-
.avatar {
width: 160rpx;
height: 160rpx;
diff --git a/pages/home/orderManage.vue b/pages/home/orderManage.vue
index 6a8d160..4a01019 100644
--- a/pages/home/orderManage.vue
+++ b/pages/home/orderManage.vue
@@ -1,11 +1,20 @@
<template>
<view>
+<!-- <form >
+ <view class="cu-form-group margin-top" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form> -->
+
<scroll-view scroll-y class="page">
<view class="nav-list">
<!-- :url="'/pages' + item.url + '?param=' + item.param" navigateTo-->
<view hover-class='none' class="nav-li" @click="toOrder(item)"
:class="'bg-'+item.color" :style="[{animation: 'show ' + ((index+1)*0.2+1) + 's 1'}]"
- v-for="(item,index) in elements" :key="index">
+ v-for="(item,index) in elements2" :key="index">
<view class="nav-title">{{item.title}}</view>
<view class="nav-name">{{item.name}}</view>
<text :class="'cuIcon-' + item.cuIcon"></text>
@@ -31,7 +40,7 @@
title: '寰呭寘瑁呭叆搴撳崟',
name: 'pakinOrder',
color: 'blue',
- url: `/phyz/waitOrder/waitOrderIn`
+ url: `/outbound/orderPick`
},
{
title: '寰呭寘瑁呭嚭搴撳崟',
diff --git a/pages/inbound/buffStore.vue b/pages/inbound/buffStore.vue
new file mode 100644
index 0000000..6ce4095
--- /dev/null
+++ b/pages/inbound/buffStore.vue
@@ -0,0 +1,309 @@
+<template>
+ <view class="has-foot">
+ <form>
+ <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-grey margin-left">宸查�夌墿鏂欎俊鎭細{{container}}</view>
+ </view>
+
+ <view class="cu-form-group margin-top">
+ <view class="title">绌烘《鎺ラ┏绔欑偣</view>
+ <input placeholder="璇锋壂鎻忕┖妗舵帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+ <!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+ </view>
+
+ <view class="cu-bar btn-group top margin-top">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">1.鍛煎彨绌烘《</button>
+ <!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">2.鍛煎彨琚嬭鏂版枡</button> -->
+<!-- <button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨琚嬭鏂版枡</button>
+ <button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨绌烘《</button> -->
+ <!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button> -->
+ </view>
+
+ <view class="cu-form-group margin-top">
+ <view class="title">琚嬭鏂版枡鎺ラ┏绔欑偣</view>
+ <input placeholder="璇锋壂鎻忚瑁呮柊鏂欐帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+ <!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+ </view>
+
+ <view class="cu-bar btn-group top margin-top">
+ <!-- <button class="cu-btn text-blue line-blue shadow" @click="clear">1.鍛煎彨绌烘《</button> -->
+ <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">2.鍛煎彨琚嬭鏂版枡</button>
+ <!-- <button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨琚嬭鏂版枡</button>
+ <button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨绌烘《</button> -->
+ <!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button> -->
+ </view>
+
+ <view class="cu-form-group margin-top">
+ <view class="title">瀹瑰櫒鍙�</view>
+ <input placeholder="璇锋壂闇�瑕佸叆搴撳鍣ㄦ潯鐮�" v-model="container"></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+
+
+
+<!-- <view class="cu-form-group">
+ <view class="title">鐩爣搴撳尯</view>
+ <view style="width: 75%;">
+ <uni-data-select style="min-width: 50%; max-width: 100%;" v-model="whAreaId" :localdata="range"
+ placement="bottom" @change="selChange"></uni-data-select>
+ </view>
+ </view> -->
+
+ <view class="cu-bar btn-group top margin-top">
+ <button class="cu-btn bg-green shadow-blur" @click="clear">3.妗惰鏂版枡鍏ュ簱</button>
+ </view>
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index">
+ <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ <view class="text-blue">
+ {{`${item.maktx}`}}
+ </view>
+ </view>
+ <!-- <view class="action" >
+ <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
+ </view> -->
+ </view>
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">ASN:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.asnCode}}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鎵规:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.batch}}</text>
+ </view>
+ </view>
+
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鏀惰揣鏁伴噺:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.anfme}}</text>
+ </view>
+ </view>
+
+ </block>
+ </view>
+
+
+<!-- <view class="cu-bar btn-group foot">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button>
+ </view> -->
+
+
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ barcode: '',
+ areaName: '',
+ locCode: '',
+ container: '',
+ list: [],
+ range: [],
+ curCode: '',
+ whAreaId:'',
+ repeatClick: false,
+
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ },
+ mounted() {
+ this.getRece()
+ this.whAreaId = uni.getStorageSync('whAreaId')
+ },
+ methods: {
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async search() {
+ let that = this
+ const {
+ code,
+ data,
+ msg
+ } = await request('/staBind/list', {
+ sta: this.barcode
+ })
+ if (code === 200) {
+ if(data.list.length >0){
+ that.container = data.barcode
+ that.list = data.list
+ }
+ that.range = data.warehouseAreasList.map(item => ({
+ value: item.id,
+ text: item.name
+ }));
+ that.whAreaId = data.area
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ },
+
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+
+ this.container = ''
+ this.barcode = ''
+ },
+
+ open() {
+ this.$refs.popup.open()
+ },
+
+ close() {
+ this.$refs.popup.close()
+ },
+
+ popupSubmit() {
+ this.$refs.popup.close()
+ },
+ itemChange(el) {
+ this.curCode = el
+ },
+
+ async confirm() {
+ if(this.barcode === '' || this.barcode ===null){
+ uni.showToast({
+ title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ if(this.whAreaId === '' || this.whAreaId ===null){
+ uni.showToast({
+ title: "鐩爣搴撳尯涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ this.repeatClick = true
+ const {
+ code,
+ data,
+ msg
+ } = await request('/AGV/task/start',{
+ sta: this.barcode,
+ area: this.whAreaId
+ }
+ )
+ if (code === 200) {
+ uni.showToast({
+ title: '鍚姩鎴愬姛'
+ })
+ this.clear()
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ this.repeatClick = false
+ },
+
+ async getRece() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/areas/receipt', {}, 'get')
+ if (code === 200) {
+ this.range = data.map(item => ({
+ value: item.id,
+ text: item.warehouseId$ + "-- " + item.name
+ }));
+ }
+ },
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+
+ .uni-file-picker {
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ .uni-select__selector {
+ z-index: 999;
+ }
+
+ .tj {
+ height: auto;
+ padding: 6px 8px;
+ display: inline-block;
+ border-radius: 6px;
+ }
+
+ .item {
+ display: flex;
+ justify-content: center;
+ }
+
+ .item .cu-btn {
+ font-size: 26upx;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/inbound/orderIn.vue b/pages/inbound/orderIn.vue
new file mode 100644
index 0000000..850d251
--- /dev/null
+++ b/pages/inbound/orderIn.vue
@@ -0,0 +1,382 @@
+<template>
+ <view>
+<!-- <form >
+ <view class="cu-form-group margin-top" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form> -->
+
+ <scroll-view scroll-y class="page">
+ <view class="nav-list">
+ <!-- :url="'/pages' + item.url + '?param=' + item.param" navigateTo-->
+ <view hover-class='none' class="nav-li" @click="toOrder(item)"
+ :class="'bg-'+item.color" :style="[{animation: 'show ' + ((index+1)*0.2+1) + 's 1'}]"
+ v-for="(item,index) in elements2" :key="index">
+ <view class="nav-title">{{item.title}}</view>
+ <view class="nav-name">{{item.name}}</view>
+ <text :class="'cuIcon-' + item.cuIcon"></text>
+ </view>
+ </view>
+ <view class="cu-tabbar-height"></view>
+ </scroll-view>
+ <view style="height: 50rpx;"></view>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ baseUrl: '',
+ token: '',
+ icon: '',
+ elements: [],
+ project: 'tzsk',
+ elements2: [
+ {
+ title: '寰呭寘瑁呭叆搴撳崟',
+ name: 'pakinOrder',
+ color: 'blue',
+ url: `/inbound/orderInExecute`
+ },
+ // {
+ // title: '寰呭寘瑁呭嚭搴撳崟',
+ // name: 'pakinOrder',
+ // color: 'blue',
+ // url: `/phyz/waitOrder/waitOrderOut`
+ // },
+ {
+ title: '閲囪喘鍏ュ簱鍗�',
+ name: 'pakinOrder',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/inbound/orderInExecute`
+ },
+ // {
+ // title: '鍑哄簱鍗�',
+ // name: 'outOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/order/outOrder`
+ // },
+ // {
+ // title: '鍏ュ簱鍗曟祴璇曠敤',
+ // name: 'pakin',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/order/purchaseOrder`
+ // },
+ // {
+ // title: '閲囪喘鍑哄簱',
+ // name: 'outOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/orderOut/orderOutSelect`
+ // },
+ {
+ title: '鍗婃垚鍝佸叆搴撳崟',
+ name: 'bcpOrder',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/inbound/orderInExecute`
+ },
+ {
+ title: '鍗婃垚鍝佸叆搴撳崟_鍚稿',
+ name: 'bcpOrder',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/inbound/orderInExecute`
+ },
+ // {
+ // title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+ // name: 'bcpDbOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/bcp/bcpDbOrder`
+ // },
+ // {
+ // title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+ // name: 'bcpDbOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/bcp/bcpDbOrderV2`
+ // },
+ // {
+ // title: '鍗婃垚鍝佸嚭搴撳崟',
+ // name: 'bcpOutOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/orderOut/bcpOrderOutSelect`
+ // },
+ // {
+ // title: '鍗婃垚鍝佸嚭搴撳崟_浜屽巶',
+ // name: 'bcpOutOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/orderOut/bcpOrderOutSelect_2`,
+ // param: {orderType: [1,2,3]}
+ // },
+ // {
+ // title: '鍗婃垚鍝佸姞宸ュ崟',
+ // name: 'processOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/processOrder/processOrder`
+ // },
+ {
+ title: '鍗婃垚鍝佸洖娴佸崟',
+ name: 'backStock',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/inbound/orderInExecute`
+ },
+ {
+ title: '鍏ュ簱鍗�',
+ name: 'orderIn',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/inbound/orderInExecute`
+ },
+ // {
+ // title: '鍑哄簱鍗�',
+ // name: 'orderOut',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/comOrder/orderOut`
+ // },
+
+ ],
+ menu: [],
+ colorList: ['cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive','cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive' ]
+ };
+ },
+ // onShow() {
+ // this.baseUrl = uni.getStorageSync('baseUrl');
+ // this.token = uni.getStorageSync('token');
+ // this.project = uni.getStorageSync('project')
+ // // this.getAuth()
+ // this.backGroundRepeat()
+ // },
+ onLoad(option) {
+ this.baseUrl = uni.getStorageSync('baseUrl');
+ this.token = uni.getStorageSync('token');
+ this.project = uni.getStorageSync('project');
+ this.menu = uni.getStorageSync('menu');
+ this.getAuth2(option.id)
+ this.backGroundRepeat()
+ },
+ methods: {
+ backGroundRepeat() {
+ let len = this.colorList.length
+ let i = 0
+ for (let k in this.elements2) {
+ if (i == len) {
+ i = 0
+ }
+ this.elements2[k].color = this.colorList[i]
+ i++
+ }
+ },
+ toOrder(item) {
+ uni.navigateTo({
+ url: `/pages${item.url}`,
+ success(res) {
+ res.eventChannel.emit('param', {
+ param: item.param
+ })
+ }
+ })
+ },
+ getAuth2(id) {
+ let secMenu = []
+ for (let k of this.menu) {
+ if (id == k.id) {
+ secMenu = k.children
+ }
+ }
+ for (let i in secMenu) {
+ this.getIcon(secMenu[i].title)
+ // 鍏煎2025 02 18 鑿滃崟param
+ if (secMenu[i].param) {
+ this.elements.unshift({
+ title: secMenu[i].name,
+ name: secMenu[i].title,
+ color: this.colorList[i],
+ cuIcon: this.icon,
+ id: secMenu[i].id,
+ param: JSON.parse(secMenu[i].param),
+ url: `${secMenu[i].code}`
+ })
+ } else {
+ this.elements.unshift({
+ title: secMenu[i].name,
+ name: secMenu[i].title,
+ color: this.colorList[i],
+ cuIcon: this.icon,
+ id: secMenu[i].id,
+ url: `${secMenu[i].code}`
+ })
+ }
+ }
+ console.log(this.elements);
+ },
+ getAuth(id) {
+ let that = this
+ uni.request({
+ url: that.baseUrl + '/menu/pda/auth',
+ data: {level:2 ,id: id},
+ header: { 'token': uni.getStorageSync('token') },
+ method: 'POST',
+ success(res) {
+ console.log(res);
+ if (res.statusCode === 404) {
+ that.elements = that.elements2
+ return
+ }
+ res = res.data
+ that.elements = []
+ if (res.code === 200) {
+ if (res.data == undefined || res.data == null || res.data == "") {
+ if (res.data.length == 0) {
+ return
+ } else {
+ that.elements = that.elements2
+ }
+ }
+ for (var i = 0; i < res.data.length; i++) {
+ if (res.data.length < 0) {
+ break;
+ }
+ that.getIcon(res.data[i].title)
+ that.elements.unshift({
+ title: res.data[i].name,
+ name: res.data[i].title,
+ color: that.colorList[i],
+ cuIcon: that.icon,
+ url: `${res.data[i].code}`
+ })
+ }
+ } else if (res.code === 403) {
+ uni.showToast({
+ title: res.msg,
+ icon: "none",
+ position: 'top'
+ })
+ setTimeout(() => {
+ uni.reLaunch({
+ url: '../login/login'
+ });
+ }, 1000);
+ } else if(res.status === 404) {
+ that.elements = that.elements2
+ // uni.showToast({
+ // title: '榛樿涓婚〉',
+ // icon: "none",
+ // position: 'top'
+ // })
+ } else {
+ uni.showToast({
+ title: res.msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+ },
+ fail(err) {
+ console.log(err);
+ }
+ })
+ },
+ getIcon(e) {
+ const ways = ['pakin','orderPakin','orderPutOn']
+ if (ways.includes(e)) {
+ this.icon = 'pullup'
+ }
+ }
+ }
+ }
+</script>
+
+<style>
+ .page {
+ height: 100vh;
+ }
+
+ .bg-red {
+ background-color: #e54d42;
+ color: #ffffff;
+ }
+
+ .bg-orange {
+ background-color: #f37b1d;
+ color: #ffffff;
+ }
+
+ .bg-yellow {
+ background-color: #fbbd08;
+ color: #333333;
+ }
+
+ .bg-olive {
+ background-color: #8dc63f;
+ color: #ffffff;
+ }
+
+ .bg-green {
+ background-color: #39b54a;
+ color: #ffffff;
+ }
+
+ .bg-cyan {
+ background-color: #1cbbb4;
+ color: #ffffff;
+ }
+
+ .bg-blue {
+ background-color: #0081ff;
+ color: #ffffff;
+ }
+
+ .bg-purple {
+ background-color: #6739b6;
+ color: #ffffff;
+ }
+
+ .bg-mauve {
+ background-color: #9c26b0;
+ color: #ffffff;
+ }
+
+ .bg-pink {
+ background-color: #e03997;
+ color: #ffffff;
+ }
+
+ .bg-brown {
+ background-color: #a5673f;
+ color: #ffffff;
+ }
+
+ .bg-grey {
+ background-color: #8799a3;
+ color: #ffffff;
+ }
+
+ .bg-gray {
+ background-color: #f0f0f0;
+ color: #333333;
+ }
+
+ .bg-black {
+ background-color: #333333;
+ color: #ffffff;
+ }
+
+ .bg-white {
+ background-color: #ffffff;
+ color: #666666;
+ }
+</style>
diff --git a/pages/inbound/orderInExecute.vue b/pages/inbound/orderInExecute.vue
new file mode 100644
index 0000000..273e09a
--- /dev/null
+++ b/pages/inbound/orderInExecute.vue
@@ -0,0 +1,296 @@
+<template>
+ <view class="has-foot">
+ <form >
+ <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-blue"> 璁㈠崟绫诲瀷锛氬緟鍖呰鍏ュ簱鍗�</view>
+ </view>
+ <view class="cu-form-group" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index" >
+ <view class="cu-list det menu" @click="clickTaskItem(index)">
+
+<!-- <view class="cu-bar bg-white solid-bottom">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ </view>
+ <view class="content2">
+ <text class="text-gray"><text class="text-black ">{{item.status$}}</text></text>
+ </view>
+ </view> -->
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁㈠崟鍙凤細<text class="text-black">{{item.orderCode}}</text></text>
+ </view>
+<!-- <view class="content">
+ <text class="text-black">{{item.status$}}</text>
+ </view> -->
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁㈠崟鏃堕棿锛�<text class="text-black ">{{item.createTime$}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡鍚嶇О锛�<text class="text-black ">{{item.maktx}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">瀹炴敹鏁伴噺:<text class="text-black ">{{item.workQty}}</text></text>
+ </view>
+ <view class="content">
+ <text class="text-gray">搴旀敹鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+ </view>
+ </view>
+<!-- <view class="cu-item">
+ <view class="content">
+ <progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+ </view>
+ </view> -->
+ </view>
+ </block>
+ </view>
+
+
+<!-- <view class="text-blue text-right padding-lr" v-show="isconfirm">
+ 鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+ </view>
+
+ <view class="cu-form-group " v-show="isconfirm">
+ <view class="title">鏀惰揣鍖�</view>
+ <uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+ @change="selChange"></uni-data-select>
+ </view> -->
+
+<!-- <view class="cu-bar btn-group foot" v-show="!isconfirm">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="next">鍑哄簱</button>
+ </view> -->
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ isClickItem:false,
+ clickItem:'',
+ QRbarcode:null,
+ barcode: '',
+ whAreaId: '',
+ list: [],
+ range: [],
+ isconfirm: false,
+ itemStyle: {
+ backgroundColor: '#42b983',
+ borderColor: '#42b983'
+ },
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ allCount() {
+ return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+ }
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ clickTaskItem(index){
+ let that = this
+ uni.navigateTo({
+ url: "./orderInItem",
+ // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ success: function(res) {
+ res.eventChannel.emit('checkItem', {
+ data: that.list[index]
+ })
+ }
+
+ });
+ },
+ typeChange(e){
+ this.typeSelect = e.value
+ this.search()
+ },
+ toOrderItem(item) {
+ uni.navigateTo({
+ url: `/pages/inbound/orderInItem`,
+ success(res) {
+ res.eventChannel.emit('param', {
+ param: item.param
+ })
+ }
+ })
+ },
+ async search() {
+ this.list = []
+ if(this.barcode === '' || this.barcode ===null){
+ this.barcode = 'OS2509030230';
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/outStockItem/page',{
+ orderId:this.barcode
+ }
+ )
+ if (code === 200) {
+ if (Object.keys(data).length === 0){
+ uni.showToast({
+ title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+ icon: "none",
+ position: 'top'
+ })
+ }
+ this.list.push(...data)
+
+ }else if(code == 401){
+ setTimeout(() => {
+ uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/login/login"
+ });
+ }, 1000);
+ }else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+
+ },
+ clearCode() {
+ this.barcode = ''
+ },
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.barcode = ''
+ },
+ next() {
+ if (this.list.length) {
+ this.isconfirm = true
+ } else {
+ uni.showToast({
+ icon: "none",
+ title: '鏈�夌墿鏂欐爣绛�'
+ })
+ }
+ },
+ prev() {
+ this.isconfirm = false
+ },
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async confirm() {
+ const newArr = this.list.map(item => {
+ return {
+ ...item,
+ receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+ };
+ });
+ if (this.whAreaId === '') {
+ uni.showToast({
+ icon: "none",
+ title: '璇烽�夋嫨鏀惰揣鍖�'
+ })
+ } else {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/orders/confirm', {
+ receipts: newArr,
+ whAreaId: this.whAreaId
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: '鏀惰揣鎴愬姛'
+ })
+ this.list = []
+ this.barcode = ''
+ this.isconfirm = false
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+ }
+ },
+
+ DateChange(e, item) {
+ item.prodTime = e.detail.value
+ }
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+ .content2 {
+ /* background-color: coral; */
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ margin-right: 10px;
+ color: #0081ff;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/inbound/orderInItem.vue b/pages/inbound/orderInItem.vue
new file mode 100644
index 0000000..1044ea7
--- /dev/null
+++ b/pages/inbound/orderInItem.vue
@@ -0,0 +1,291 @@
+<template>
+ <view class="has-foot">
+ <form >
+ <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-gray"> 璁㈠崟鍙凤細IN250807152830</view>
+ </view>
+<!-- <view class="cu-form-group" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view> -->
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index" >
+ <view class="cu-list det menu " @click="clickTaskItem(index)">
+
+
+ <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ </view>
+ <view class="content2">
+ <text class="text-gray margin-right-sm"><text class="text-black ">{{item.status$}}</text></text>
+ </view>
+ </view>
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁″垝璺熻釜鍙凤細<text class="text-black ">{{item.orderCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡缂栫爜锛�<text class="text-black ">{{item.matnrCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡鍚嶇О锛�<text class="text-black ">{{item.maktx}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">瀹炴敹鏁伴噺:<text class="text-black ">{{item.workQty}}</text></text>
+ </view>
+ <view class="content">
+ <text class="text-gray">搴旀敹鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+ </view>
+ </view>
+ <!-- <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+ </view>
+ </view> -->
+ <view class="cu-item">
+ <view class="content">
+ <progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+ </view>
+ </view>
+
+ </view>
+ </block>
+ </view>
+
+
+<!-- <view class="text-blue text-right padding-lr" v-show="isconfirm">
+ 鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+ </view>
+
+ <view class="cu-form-group " v-show="isconfirm">
+ <view class="title">鏀惰揣鍖�</view>
+ <uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+ @change="selChange"></uni-data-select>
+ </view> -->
+
+ <view class="cu-bar btn-group foot" v-show="!isconfirm">
+ <!-- <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button> -->
+ <button class="cu-btn bg-blue shadow-blur" @click="next">鍒锋柊</button>
+ </view>
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ isClickItem:false,
+ clickItem:'',
+ QRbarcode:null,
+ barcode: '',
+ whAreaId: '',
+ list: [],
+ range: [],
+ isconfirm: false,
+ itemStyle: {
+ backgroundColor: '#42b983',
+ borderColor: '#42b983'
+ },
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ allCount() {
+ return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+ }
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ clickTaskItem(index){
+ let that = this
+
+ // uni.navigateTo({
+ // url: "./orderInItem",
+ // // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ // success: function(res) {
+ // res.eventChannel.emit('checkItem', {
+ // data: that.list[index]
+ // })
+ // }
+
+ // });
+ },
+ typeChange(e){
+ this.typeSelect = e.value
+ this.search()
+ },
+ async search() {
+ this.list = []
+ if(this.barcode === '' || this.barcode ===null){
+ this.barcode = 'OS2509030230';
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/outStockItem/page',{
+ orderId:this.barcode
+ }
+ )
+ if (code === 200) {
+ if (Object.keys(data).length === 0){
+ uni.showToast({
+ title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+ icon: "none",
+ position: 'top'
+ })
+ }
+ this.list.push(...data)
+
+ }else if(code == 401){
+ setTimeout(() => {
+ uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/login/login"
+ });
+ }, 1000);
+ }else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+
+ },
+ clearCode() {
+ this.barcode = ''
+ },
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.barcode = ''
+ },
+ next() {
+ if (this.list.length) {
+ this.isconfirm = true
+ } else {
+ uni.showToast({
+ icon: "none",
+ title: '鏈�夌墿鏂欐爣绛�'
+ })
+ }
+ },
+ prev() {
+ this.isconfirm = false
+ },
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async confirm() {
+ const newArr = this.list.map(item => {
+ return {
+ ...item,
+ receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+ };
+ });
+ if (this.whAreaId === '') {
+ uni.showToast({
+ icon: "none",
+ title: '璇烽�夋嫨鏀惰揣鍖�'
+ })
+ } else {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/orders/confirm', {
+ receipts: newArr,
+ whAreaId: this.whAreaId
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: '鏀惰揣鎴愬姛'
+ })
+ this.list = []
+ this.barcode = ''
+ this.isconfirm = false
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+ }
+ },
+
+ DateChange(e, item) {
+ item.prodTime = e.detail.value
+ }
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+ .content2 {
+ /* background-color: coral; */
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ margin-right: 10px;
+ color: #0081ff;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/inspect/bad.vue b/pages/inspect/bad.vue
index 5e3b9ea..cbf4133 100644
--- a/pages/inspect/bad.vue
+++ b/pages/inspect/bad.vue
@@ -91,7 +91,8 @@
</view>
<view class="cu-bar btn-group foot">
- <button class="cu-btn bg-blue shadow-blur" @click="confirm">鎻愪氦</button>
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="confirm">涓婇攣</button>
</view>
</view>
diff --git a/pages/inspect/check.vue b/pages/inspect/check.vue
index f3f1bbb..a8ebbce 100644
--- a/pages/inspect/check.vue
+++ b/pages/inspect/check.vue
@@ -2,14 +2,14 @@
<view class="has-foot">
<form>
<view class="cu-form-group margin-top">
- <view class="title">璐ㄦ鍗�</view>
- <input placeholder="璇锋壂鎻忚川妫�鍗�" v-model="isptCode" focus></input>
+ <view class="title">瀹瑰櫒鍙�</view>
+ <input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="isptCode" focus></input>
<text class='cuIcon-search text-blue' @click="search"></text>
</view>
<view class="cu-form-group ">
- <view class="title">鐗╂枡鐮�</view>
- <input placeholder="璇锋壂鎻忕墿鏂欑爜" v-model="barcode"></input>
+ <view class="title">鐗╂枡鍙�</view>
+ <input placeholder="璇锋壂鎻忕墿鏂欑紪鐮�" v-model="barcode"></input>
<text class='cuIcon-search text-blue' @click="scrollTo"></text>
</view>
</form>
@@ -115,7 +115,7 @@
</view>
<view class="cu-bar btn-group foot">
<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
- <button class="cu-btn bg-blue shadow-blur" @click="confirm">鎻愪氦</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="confirm">瑙i攣</button>
</view>
</view>
diff --git a/pages/listing/labour.vue b/pages/listing/labour.vue
index 5b27e05..b9a05a4 100644
--- a/pages/listing/labour.vue
+++ b/pages/listing/labour.vue
@@ -2,13 +2,14 @@
<view class="has-foot">
<form>
<view class="cu-form-group ">
- <view class="title">瀹瑰櫒鐮�</view>
- <input placeholder="璇锋壂鎻忓鍣ㄧ爜" v-model="container"></input>
+ <view class="title">瀹瑰櫒鍙�</view>
+ <input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="container"></input>
<text class='cuIcon-search text-blue' @click="search"></text>
</view>
<view class="cu-form-group">
- <view class="title">搴撲綅鐮�</view>
- <input placeholder="璇锋壂鎻忓簱浣嶇爜" v-model="locCode"></input>
+ <view class="title">搴撲綅鍙�</view>
+ <input placeholder="璇锋壂鎻忓簱浣嶇紪鐮�" v-model="locCode"></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
</view>
</form>
<view class="cu-list det menu sm-border padding">
diff --git a/pages/listing/matnrPalletising.vue b/pages/listing/matnrPalletising.vue
index 50618e4..e4d4f34 100644
--- a/pages/listing/matnrPalletising.vue
+++ b/pages/listing/matnrPalletising.vue
@@ -4,24 +4,25 @@
<form>
<view class="cu-form-group margin-top">
- <view class="title">瀹瑰櫒鍙�</view>
- <input placeholder="璇锋壂鎻忓鍣ㄥ彿" v-model="container" focus></input>
- <text class='cuIcon-search text-blue' @click="getList"></text>
- </view>
- <view class="cu-form-group">
- <view class="title">鐗╂枡缂栫爜</view>
- <input placeholder="璇锋壂鎻忕墿鏂欑紪鐮�" v-model="matnrCode"></input>
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇疯緭鍏ヨ鍗曞彿" v-model="asnCode"></input>
<text class='cuIcon-search text-blue' @click="search"></text>
</view>
<view class="cu-form-group">
- <view class="title">ASN鍗曞彿</view>
- <input placeholder="璇疯緭鍏SN鍗曞彿" v-model="asnCode"></input>
+ <view class="title">瀹瑰櫒鍙�</view>
+ <input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="container" focus></input>
+ <text class='cuIcon-search text-blue' @click="getList"></text>
+ </view>
+ <view class="cu-form-group">
+ <view class="title">鐗╂枡鍙�</view>
+ <input placeholder="璇锋壂鎻忕墿鏂欑紪鐮�" v-model="matnrCode"></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
</view>
</form>
<view class="flex solid-bottom padding-sm justify-between">
- <view class="text-blue">鐗╂枡鎬荤被:{{list.length}}</view>
- <view class="text-blue">缁勭洏鎬绘暟:{{allCount}}</view>
+ <view class="text-blue">鐗╂枡绉嶇被:{{list.length}}</view>
+ <view class="text-blue">缁勬墭鎬绘暟:{{allCount}}</view>
</view>
</view>
@@ -115,7 +116,7 @@
</view>
<view class="cu-bar btn-group foot">
<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">缁勭洏</button>
+ <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">缁勬墭</button>
</view>
</view>
</template>
diff --git a/pages/listing/unPakin.vue b/pages/listing/unPakin.vue
index dab82c2..77cf212 100644
--- a/pages/listing/unPakin.vue
+++ b/pages/listing/unPakin.vue
@@ -2,21 +2,24 @@
<view class="has-foot">
<view>
<form>
- <view class="cu-form-group ">
+ <view class="cu-form-group margin-top">
<view class="title">瀹瑰櫒鍙�</view>
- <input placeholder="璇锋壂鎻忓鍣ㄥ彿" v-model="container" focus></input>
+ <input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="container" focus></input>
<text class='cuIcon-search text-blue' @click="getList"></text>
</view>
+ <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-blue margin-left">鐗╂枡淇℃伅:{{container}}</view>
+ </view>
<view class="cu-form-group">
- <view class="title">缂栫爜</view>
- <input placeholder="璇锋壂鎻忕粍鎵樻。缂栫爜" v-model="pkCode"></input>
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇锋悳绱㈣鍗曞彿" v-model="pkCode"></input>
<text class='cuIcon-search text-blue' @click="getList"></text>
</view>
</form>
- <view class="flex solid-bottom padding-sm justify-between">
- <view class="text-blue">鐗╂枡鎬荤被:{{list.length}}</view>
+<!-- <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-blue">鐗╂枡绉嶇被:{{list.length}}</view>
<view class="text-blue">缁勭洏鎬绘暟:{{allCount}}</view>
- </view>
+ </view> -->
</view>
<view class="padding-lr margin-top-sm">
<block v-for="(item, index) in list" :key="index">
diff --git a/pages/outbound/matDirectDelivery.vue b/pages/outbound/matDirectDelivery.vue
new file mode 100644
index 0000000..30000b4
--- /dev/null
+++ b/pages/outbound/matDirectDelivery.vue
@@ -0,0 +1,283 @@
+<template>
+ <view class="has-foot">
+ <form>
+ <view class="cu-form-group margin-top">
+ <view class="title">鎺ラ┏绔欑偣</view>
+ <input placeholder="璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+ <!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+ </view>
+ <view class="cu-form-group">
+ <view class="title">瀹瑰櫒鍙�</view>
+ <input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="barcode" ></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+<!-- <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-blue margin-left">瀹瑰櫒鐮�:{{container}}</view>
+ </view> -->
+ <view class="cu-form-group">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" ></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ <view class="cu-form-group">
+ <view class="title">鐩爣绔欑偣</view>
+ <view style="width: 75%;">
+ <uni-data-select style="min-width: 50%; max-width: 100%;" v-model="whAreaId" :localdata="range"
+ placement="bottom" @change="selChange"></uni-data-select>
+ </view>
+ </view>
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index">
+ <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ <view class="text-blue">
+ {{`${item.maktx}`}}
+ </view>
+ </view>
+ <!-- <view class="action" >
+ <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
+ </view> -->
+ </view>
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">ASN:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.asnCode}}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鎵规:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.batch}}</text>
+ </view>
+ </view>
+
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鏀惰揣鏁伴噺:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.anfme}}</text>
+ </view>
+ </view>
+
+ </block>
+ </view>
+
+
+ <view class="cu-bar btn-group foot">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">杩愰��</button>
+ </view>
+
+
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ barcode: '',
+ areaName: '',
+ locCode: '',
+ container: '',
+ list: [],
+ range: [],
+ curCode: '',
+ whAreaId:'',
+ repeatClick: false,
+
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ },
+ mounted() {
+ this.getRece()
+ this.whAreaId = uni.getStorageSync('whAreaId')
+ },
+ methods: {
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async search() {
+ let that = this
+ const {
+ code,
+ data,
+ msg
+ } = await request('/staBind/list', {
+ sta: this.barcode
+ })
+ if (code === 200) {
+ if(data.list.length >0){
+ that.container = data.barcode
+ that.list = data.list
+ }
+ that.range = data.warehouseAreasList.map(item => ({
+ value: item.id,
+ text: item.name
+ }));
+ that.whAreaId = data.area
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ },
+
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+
+ this.container = ''
+ this.barcode = ''
+ },
+
+ open() {
+ this.$refs.popup.open()
+ },
+
+ close() {
+ this.$refs.popup.close()
+ },
+
+ popupSubmit() {
+ this.$refs.popup.close()
+ },
+ itemChange(el) {
+ this.curCode = el
+ },
+
+ async confirm() {
+ if(this.barcode === '' || this.barcode ===null){
+ uni.showToast({
+ title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ if(this.whAreaId === '' || this.whAreaId ===null){
+ uni.showToast({
+ title: "鐩爣搴撳尯涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ this.repeatClick = true
+ const {
+ code,
+ data,
+ msg
+ } = await request('/AGV/task/start',{
+ sta: this.barcode,
+ area: this.whAreaId
+ }
+ )
+ if (code === 200) {
+ uni.showToast({
+ title: '鍚姩鎴愬姛'
+ })
+ this.clear()
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ this.repeatClick = false
+ },
+
+ async getRece() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/areas/receipt', {}, 'get')
+ if (code === 200) {
+ this.range = data.map(item => ({
+ value: item.id,
+ text: item.warehouseId$ + "-- " + item.name
+ }));
+ }
+ },
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+
+ .uni-file-picker {
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ .uni-select__selector {
+ z-index: 999;
+ }
+
+ .tj {
+ height: auto;
+ padding: 6px 8px;
+ display: inline-block;
+ border-radius: 6px;
+ }
+
+ .item {
+ display: flex;
+ justify-content: center;
+ }
+
+ .item .cu-btn {
+ font-size: 26upx;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/outbound/matPreparation.vue b/pages/outbound/matPreparation.vue
new file mode 100644
index 0000000..5216d16
--- /dev/null
+++ b/pages/outbound/matPreparation.vue
@@ -0,0 +1,287 @@
+<template>
+ <view class="has-foot">
+ <form >
+ <view class="cu-form-group margin-top" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index">
+ <view class="cu-list det menu " @click="clickTaskItem(index)">
+
+
+<!-- <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ </view>
+ <view class="content2">
+ <text class="text-gray"><text class="text-black ">{{item.status$}}</text></text>
+ </view>
+ </view> -->
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">澶囨枡鍗曞彿锛�<text class="text-black ">{{item.orderCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">澶囨枡鍗曟椂闂达細<text class="text-black ">{{item.createTime$}}</text></text>
+ </view>
+ </view>
+<!-- <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡鍚嶇О锛�<text class="text-black ">{{item.maktx}}</text></text>
+ </view>
+ </view> -->
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">瀹炲鏁伴噺:<text class="text-black ">{{item.workQty}}</text></text>
+ </view>
+ <view class="content">
+ <text class="text-gray">搴斿鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+ </view>
+ </view>
+<!-- <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+ </view>
+ </view> -->
+ <!-- <view class="cu-item">
+ <view class="content">
+ <progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+ </view>
+ </view> -->
+
+ </view>
+ </block>
+ </view>
+
+
+<!-- <view class="text-blue text-right padding-lr" v-show="isconfirm">
+ 鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+ </view>
+
+ <view class="cu-form-group " v-show="isconfirm">
+ <view class="title">鏀惰揣鍖�</view>
+ <uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+ @change="selChange"></uni-data-select>
+ </view> -->
+
+<!-- <view class="cu-bar btn-group foot" v-show="!isconfirm">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="next">鍑哄簱</button>
+ </view> -->
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ isClickItem:false,
+ clickItem:'',
+ QRbarcode:null,
+ barcode: '',
+ whAreaId: '',
+ list: [],
+ range: [],
+ isconfirm: false,
+ itemStyle: {
+ backgroundColor: '#42b983',
+ borderColor: '#42b983'
+ },
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ allCount() {
+ return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+ }
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ clickTaskItem(index){
+ let that = this
+ uni.navigateTo({
+ url: "./matPreparationItem",
+ // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ success: function(res) {
+ res.eventChannel.emit('checkItem', {
+ data: that.list[index]
+ })
+ }
+
+ });
+ },
+ typeChange(e){
+ this.typeSelect = e.value
+ this.search()
+ },
+ async search() {
+ this.list = []
+ if(this.barcode === '' || this.barcode ===null){
+ this.barcode = 'OS2509030230';
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/outStockItem/page',{
+ orderId:this.barcode
+ }
+ )
+ if (code === 200) {
+ if (Object.keys(data).length === 0){
+ uni.showToast({
+ title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+ icon: "none",
+ position: 'top'
+ })
+ }
+ this.list.push(...data)
+
+ }else if(code == 401){
+ setTimeout(() => {
+ uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/login/login"
+ });
+ }, 1000);
+ }else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+
+ },
+ clearCode() {
+ this.barcode = ''
+ },
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.barcode = ''
+ },
+ next() {
+ if (this.list.length) {
+ this.isconfirm = true
+ } else {
+ uni.showToast({
+ icon: "none",
+ title: '鏈�夌墿鏂欐爣绛�'
+ })
+ }
+ },
+ prev() {
+ this.isconfirm = false
+ },
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async confirm() {
+ const newArr = this.list.map(item => {
+ return {
+ ...item,
+ receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+ };
+ });
+ if (this.whAreaId === '') {
+ uni.showToast({
+ icon: "none",
+ title: '璇烽�夋嫨鏀惰揣鍖�'
+ })
+ } else {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/orders/confirm', {
+ receipts: newArr,
+ whAreaId: this.whAreaId
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: '鏀惰揣鎴愬姛'
+ })
+ this.list = []
+ this.barcode = ''
+ this.isconfirm = false
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+ }
+ },
+
+ DateChange(e, item) {
+ item.prodTime = e.detail.value
+ }
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+ .content2 {
+ /* background-color: coral; */
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ margin-right: 10px;
+ color: #0081ff;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/outbound/matPreparationItem.vue b/pages/outbound/matPreparationItem.vue
new file mode 100644
index 0000000..98a0809
--- /dev/null
+++ b/pages/outbound/matPreparationItem.vue
@@ -0,0 +1,329 @@
+<template>
+ <view class="has-foot">
+ <form>
+ <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-grey margin-left">鐗╂枡娓呭崟锛�1銆佹媺鏉� 10涓� 2銆佺毊濂� 2绫�</view>
+ <!-- <view class="text-grey margin-left"> 2銆佺毊濂� 2绫�</view> -->
+
+ </view>
+
+ <view class="cu-form-group margin-top">
+ <view class="title">澶囨枡鎺ラ┏绔欑偣</view>
+ <input placeholder="璇锋壂鎻忓鏂欐帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+ <!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+ </view>
+
+ <view class="cu-bar btn-group top margin-top">
+ <!-- <button class="cu-btn text-blue line-blue shadow" @click="clear">1.鍛煎彨绌烘《</button> -->
+ <button class="cu-btn text-blue line-blue shadow" :disabled="repeatClick" @click="confirm">1.鍛煎彨澶囨枡</button>
+ <!-- <button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨琚嬭鏂版枡</button>
+ <button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨绌烘《</button> -->
+ <!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button> -->
+ </view>
+
+
+ <view class="cu-form-group margin-top">
+ <view class="title">绌烘枡鏋舵帴椹崇珯鐐�</view>
+ <input placeholder="璇锋壂鎻忕┖鏂欐灦鎺ラ┏绔欑偣鏉$爜" v-model="barcode" ></input>
+ <!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+ </view>
+
+ <view class="cu-bar btn-group top margin-top">
+ <button class="cu-btn bg-blue shadow-blur" @click="clear">2.鍛煎彨绌烘枡鏋�</button>
+ <!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">2.鍛煎彨琚嬭鏂版枡</button> -->
+<!-- <button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨琚嬭鏂版枡</button>
+ <button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨绌烘《</button> -->
+ <!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button> -->
+ </view>
+
+
+ <view class="cu-form-group margin-top">
+ <view class="title">澶囨枡鏋跺彿</view>
+ <input placeholder="璇锋壂澶囨枡瀹屾垚鐨勬枡鏋舵潯鐮�" v-model="container"></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+
+ <view class="cu-form-group">
+ <view class="title">澶囨枡鏋舵帴椹崇珯鐐�</view>
+ <input placeholder="璇锋壂澶囨枡鏋舵帴椹崇珯鐐规潯鐮�" v-model="container"></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+
+
+
+<!-- <view class="cu-form-group">
+ <view class="title">鐩爣搴撳尯</view>
+ <view style="width: 75%;">
+ <uni-data-select style="min-width: 50%; max-width: 100%;" v-model="whAreaId" :localdata="range"
+ placement="bottom" @change="selChange"></uni-data-select>
+ </view>
+ </view> -->
+
+ <view class="cu-bar btn-group top margin-top">
+ <button class="cu-btn bg-green shadow-blur" @click="clear">3.瀹屾垚澶囨枡鍥炲簱</button>
+ </view>
+
+ <view class="flex solid-bottom padding-sm justify-between margin-top-sm">
+ <view class="text-grey margin-left">鍓╀綑鐗╂枡娓呭崟锛�1銆佹媺鏉� 2涓� 2銆佺毊濂� 1绫�</view>
+ <!-- <view class="text-grey margin-left"> 2銆佺毊濂� 2绫�</view> -->
+
+ </view>
+
+ <view class="cu-bar btn-group top margin-top">
+ <button class="cu-btn bg-yellow shadow-blur" @click="clear">4.浣欐枡鍥炲簱</button>
+ </view>
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index">
+ <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ <view class="text-blue">
+ {{`${item.maktx}`}}
+ </view>
+ </view>
+ <!-- <view class="action" >
+ <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
+ </view> -->
+ </view>
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">ASN:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.asnCode}}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鎵规:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.batch}}</text>
+ </view>
+ </view>
+
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鏀惰揣鏁伴噺:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.anfme}}</text>
+ </view>
+ </view>
+
+ </block>
+ </view>
+
+
+<!-- <view class="cu-bar btn-group foot">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button>
+ </view> -->
+
+
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ barcode: '',
+ areaName: '',
+ locCode: '',
+ container: '',
+ list: [],
+ range: [],
+ curCode: '',
+ whAreaId:'',
+ repeatClick: false,
+
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ },
+ mounted() {
+ this.getRece()
+ this.whAreaId = uni.getStorageSync('whAreaId')
+ },
+ methods: {
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async search() {
+ let that = this
+ const {
+ code,
+ data,
+ msg
+ } = await request('/staBind/list', {
+ sta: this.barcode
+ })
+ if (code === 200) {
+ if(data.list.length >0){
+ that.container = data.barcode
+ that.list = data.list
+ }
+ that.range = data.warehouseAreasList.map(item => ({
+ value: item.id,
+ text: item.name
+ }));
+ that.whAreaId = data.area
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ },
+
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+
+ this.container = ''
+ this.barcode = ''
+ },
+
+ open() {
+ this.$refs.popup.open()
+ },
+
+ close() {
+ this.$refs.popup.close()
+ },
+
+ popupSubmit() {
+ this.$refs.popup.close()
+ },
+ itemChange(el) {
+ this.curCode = el
+ },
+
+ async confirm() {
+ if(this.barcode === '' || this.barcode ===null){
+ uni.showToast({
+ title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ if(this.whAreaId === '' || this.whAreaId ===null){
+ uni.showToast({
+ title: "鐩爣搴撳尯涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ this.repeatClick = true
+ const {
+ code,
+ data,
+ msg
+ } = await request('/AGV/task/start',{
+ sta: this.barcode,
+ area: this.whAreaId
+ }
+ )
+ if (code === 200) {
+ uni.showToast({
+ title: '鍚姩鎴愬姛'
+ })
+ this.clear()
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ this.repeatClick = false
+ },
+
+ async getRece() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/areas/receipt', {}, 'get')
+ if (code === 200) {
+ this.range = data.map(item => ({
+ value: item.id,
+ text: item.warehouseId$ + "-- " + item.name
+ }));
+ }
+ },
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+
+ .uni-file-picker {
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ .uni-select__selector {
+ z-index: 999;
+ }
+
+ .tj {
+ height: auto;
+ padding: 6px 8px;
+ display: inline-block;
+ border-radius: 6px;
+ }
+
+ .item {
+ display: flex;
+ justify-content: center;
+ }
+
+ .item .cu-btn {
+ font-size: 26upx;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/outbound/orderOut.vue b/pages/outbound/orderOut.vue
new file mode 100644
index 0000000..5d2e469
--- /dev/null
+++ b/pages/outbound/orderOut.vue
@@ -0,0 +1,382 @@
+<template>
+ <view>
+<!-- <form >
+ <view class="cu-form-group margin-top" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form> -->
+
+ <scroll-view scroll-y class="page">
+ <view class="nav-list">
+ <!-- :url="'/pages' + item.url + '?param=' + item.param" navigateTo-->
+ <view hover-class='none' class="nav-li" @click="toOrder(item)"
+ :class="'bg-'+item.color" :style="[{animation: 'show ' + ((index+1)*0.2+1) + 's 1'}]"
+ v-for="(item,index) in elements2" :key="index">
+ <view class="nav-title">{{item.title}}</view>
+ <view class="nav-name">{{item.name}}</view>
+ <text :class="'cuIcon-' + item.cuIcon"></text>
+ </view>
+ </view>
+ <view class="cu-tabbar-height"></view>
+ </scroll-view>
+ <view style="height: 50rpx;"></view>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ baseUrl: '',
+ token: '',
+ icon: '',
+ elements: [],
+ project: 'tzsk',
+ elements2: [
+ // {
+ // title: '寰呭寘瑁呭叆搴撳崟',
+ // name: 'pakinOrder',
+ // color: 'blue',
+ // url: `/outbound/orderPick`
+ // },
+ {
+ title: '寰呭寘瑁呭嚭搴撳崟',
+ name: 'pakinOrder',
+ color: 'blue',
+ url: `/outbound/orderPick`
+ },
+ // {
+ // title: '閲囪喘鍏ュ簱鍗�',
+ // name: 'pakinOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/order/pakinOrderSelect`
+ // },
+ // {
+ // title: '鍑哄簱鍗�',
+ // name: 'outOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/order/outOrder`
+ // },
+ // {
+ // title: '鍏ュ簱鍗曟祴璇曠敤',
+ // name: 'pakin',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/order/purchaseOrder`
+ // },
+ {
+ title: '閲囪喘鍑哄簱',
+ name: 'outOrder',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/outbound/orderPick`
+ },
+ // {
+ // title: '鍗婃垚鍝佸叆搴撳崟',
+ // name: 'bcpOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/bcp/bcpOrder`
+ // },
+ // {
+ // title: '鍗婃垚鍝佸叆搴撳崟_鍚稿',
+ // name: 'bcpOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/bcp/bcpOrder_xs`
+ // },
+ // {
+ // title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+ // name: 'bcpDbOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/bcp/bcpDbOrder`
+ // },
+ // {
+ // title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+ // name: 'bcpDbOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/bcp/bcpDbOrderV2`
+ // },
+ {
+ title: '鍗婃垚鍝佸嚭搴撳崟',
+ name: 'bcpOutOrder',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/outbound/orderPick`
+ },
+ {
+ title: '鍗婃垚鍝佸嚭搴撳崟_浜屽巶',
+ name: 'bcpOutOrder',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/outbound/orderPick`,
+ param: {orderType: [1,2,3]}
+ },
+ {
+ title: '鍗婃垚鍝佸姞宸ュ崟',
+ name: 'processOrder',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/outbound/orderPick`
+ },
+ // {
+ // title: '鍗婃垚鍝佸洖娴佸崟',
+ // name: 'backStock',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/backStock/backStocksOrder`
+ // },
+ // {
+ // title: '鍏ュ簱鍗�',
+ // name: 'orderIn',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/comOrder/orderIn`
+ // },
+ {
+ title: '鍑哄簱鍗�',
+ name: 'orderOut',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/outbound/orderPick`
+ },
+
+ ],
+ menu: [],
+ colorList: ['cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive','cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive' ]
+ };
+ },
+ // onShow() {
+ // this.baseUrl = uni.getStorageSync('baseUrl');
+ // this.token = uni.getStorageSync('token');
+ // this.project = uni.getStorageSync('project')
+ // // this.getAuth()
+ // this.backGroundRepeat()
+ // },
+ onLoad(option) {
+ this.baseUrl = uni.getStorageSync('baseUrl');
+ this.token = uni.getStorageSync('token');
+ this.project = uni.getStorageSync('project');
+ this.menu = uni.getStorageSync('menu');
+ this.getAuth2(option.id)
+ this.backGroundRepeat()
+ },
+ methods: {
+ backGroundRepeat() {
+ let len = this.colorList.length
+ let i = 0
+ for (let k in this.elements2) {
+ if (i == len) {
+ i = 0
+ }
+ this.elements2[k].color = this.colorList[i]
+ i++
+ }
+ },
+ toOrder(item) {
+ uni.navigateTo({
+ url: `/pages${item.url}`,
+ success(res) {
+ res.eventChannel.emit('param', {
+ param: item.param
+ })
+ }
+ })
+ },
+ getAuth2(id) {
+ let secMenu = []
+ for (let k of this.menu) {
+ if (id == k.id) {
+ secMenu = k.children
+ }
+ }
+ for (let i in secMenu) {
+ this.getIcon(secMenu[i].title)
+ // 鍏煎2025 02 18 鑿滃崟param
+ if (secMenu[i].param) {
+ this.elements.unshift({
+ title: secMenu[i].name,
+ name: secMenu[i].title,
+ color: this.colorList[i],
+ cuIcon: this.icon,
+ id: secMenu[i].id,
+ param: JSON.parse(secMenu[i].param),
+ url: `${secMenu[i].code}`
+ })
+ } else {
+ this.elements.unshift({
+ title: secMenu[i].name,
+ name: secMenu[i].title,
+ color: this.colorList[i],
+ cuIcon: this.icon,
+ id: secMenu[i].id,
+ url: `${secMenu[i].code}`
+ })
+ }
+ }
+ console.log(this.elements);
+ },
+ getAuth(id) {
+ let that = this
+ uni.request({
+ url: that.baseUrl + '/menu/pda/auth',
+ data: {level:2 ,id: id},
+ header: { 'token': uni.getStorageSync('token') },
+ method: 'POST',
+ success(res) {
+ console.log(res);
+ if (res.statusCode === 404) {
+ that.elements = that.elements2
+ return
+ }
+ res = res.data
+ that.elements = []
+ if (res.code === 200) {
+ if (res.data == undefined || res.data == null || res.data == "") {
+ if (res.data.length == 0) {
+ return
+ } else {
+ that.elements = that.elements2
+ }
+ }
+ for (var i = 0; i < res.data.length; i++) {
+ if (res.data.length < 0) {
+ break;
+ }
+ that.getIcon(res.data[i].title)
+ that.elements.unshift({
+ title: res.data[i].name,
+ name: res.data[i].title,
+ color: that.colorList[i],
+ cuIcon: that.icon,
+ url: `${res.data[i].code}`
+ })
+ }
+ } else if (res.code === 403) {
+ uni.showToast({
+ title: res.msg,
+ icon: "none",
+ position: 'top'
+ })
+ setTimeout(() => {
+ uni.reLaunch({
+ url: '../login/login'
+ });
+ }, 1000);
+ } else if(res.status === 404) {
+ that.elements = that.elements2
+ // uni.showToast({
+ // title: '榛樿涓婚〉',
+ // icon: "none",
+ // position: 'top'
+ // })
+ } else {
+ uni.showToast({
+ title: res.msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+ },
+ fail(err) {
+ console.log(err);
+ }
+ })
+ },
+ getIcon(e) {
+ const ways = ['pakin','orderPakin','orderPutOn']
+ if (ways.includes(e)) {
+ this.icon = 'pullup'
+ }
+ }
+ }
+ }
+</script>
+
+<style>
+ .page {
+ height: 100vh;
+ }
+
+ .bg-red {
+ background-color: #e54d42;
+ color: #ffffff;
+ }
+
+ .bg-orange {
+ background-color: #f37b1d;
+ color: #ffffff;
+ }
+
+ .bg-yellow {
+ background-color: #fbbd08;
+ color: #333333;
+ }
+
+ .bg-olive {
+ background-color: #8dc63f;
+ color: #ffffff;
+ }
+
+ .bg-green {
+ background-color: #39b54a;
+ color: #ffffff;
+ }
+
+ .bg-cyan {
+ background-color: #1cbbb4;
+ color: #ffffff;
+ }
+
+ .bg-blue {
+ background-color: #0081ff;
+ color: #ffffff;
+ }
+
+ .bg-purple {
+ background-color: #6739b6;
+ color: #ffffff;
+ }
+
+ .bg-mauve {
+ background-color: #9c26b0;
+ color: #ffffff;
+ }
+
+ .bg-pink {
+ background-color: #e03997;
+ color: #ffffff;
+ }
+
+ .bg-brown {
+ background-color: #a5673f;
+ color: #ffffff;
+ }
+
+ .bg-grey {
+ background-color: #8799a3;
+ color: #ffffff;
+ }
+
+ .bg-gray {
+ background-color: #f0f0f0;
+ color: #333333;
+ }
+
+ .bg-black {
+ background-color: #333333;
+ color: #ffffff;
+ }
+
+ .bg-white {
+ background-color: #ffffff;
+ color: #666666;
+ }
+</style>
diff --git a/pages/outbound/orderOutExecute.vue b/pages/outbound/orderOutExecute.vue
new file mode 100644
index 0000000..cfcd85a
--- /dev/null
+++ b/pages/outbound/orderOutExecute.vue
@@ -0,0 +1,295 @@
+<template>
+ <view class="has-foot">
+ <form >
+ <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-gray"> 璁㈠崟鍙凤細IN25102330271</view>
+ </view>
+<!-- <view class="cu-form-group" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view> -->
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index">
+ <view class="cu-list det menu" @click="clickTaskItem(index)">
+
+
+<!-- <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ </view>
+ <view class="content2">
+ <text class="text-gray"><text class="text-black ">{{item.status$}}</text></text>
+ </view>
+ </view> -->
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁㈠崟鍙凤細<text class="text-black ">{{item.orderCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁㈠崟鏃堕棿锛�<text class="text-black ">{{item.createTime$}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁″垝璺熻釜鍙凤細<text class="text-black ">{{item.matnrCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡缂栫爜锛�<text class="text-black ">{{item.matnrCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">瀹屾垚鏁伴噺:<text class="text-black ">{{item.workQty}}</text></text>
+ </view>
+ <view class="content">
+ <text class="text-gray">鎬绘暟閲�:<text class="text-black ">{{item.anfme}}</text></text>
+ </view>
+ </view>
+ <!-- <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+ </view>
+ </view> -->
+ <view class="cu-item">
+ <view class="content">
+ <progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+ </view>
+ </view>
+
+ </view>
+ </block>
+ </view>
+
+
+<!-- <view class="text-blue text-right padding-lr" v-show="isconfirm">
+ 鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+ </view>
+
+ <view class="cu-form-group " v-show="isconfirm">
+ <view class="title">鏀惰揣鍖�</view>
+ <uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+ @change="selChange"></uni-data-select>
+ </view> -->
+
+<!-- <view class="cu-bar btn-group foot" v-show="!isconfirm">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="next">鍑哄簱</button>
+ </view> -->
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ isClickItem:false,
+ clickItem:'',
+ QRbarcode:null,
+ barcode: '',
+ whAreaId: '',
+ list: [],
+ range: [],
+ isconfirm: false,
+ itemStyle: {
+ backgroundColor: '#42b983',
+ borderColor: '#42b983'
+ },
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ allCount() {
+ return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+ }
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ clickTaskItem(index){
+ let that = this
+ uni.navigateTo({
+ url: "./checkOrderItem",
+ // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ success: function(res) {
+ res.eventChannel.emit('checkItem', {
+ data: that.list[index]
+ })
+ }
+
+ });
+ },
+ typeChange(e){
+ this.typeSelect = e.value
+ this.search()
+ },
+ async search() {
+ this.list = []
+ if(this.barcode === '' || this.barcode ===null){
+ this.barcode = 'OS2509030230';
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/outStockItem/page',{
+ orderId:this.barcode
+ }
+ )
+ if (code === 200) {
+ if (Object.keys(data).length === 0){
+ uni.showToast({
+ title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+ icon: "none",
+ position: 'top'
+ })
+ }
+ this.list.push(...data)
+
+ }else if(code == 401){
+ setTimeout(() => {
+ uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/login/login"
+ });
+ }, 1000);
+ }else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+
+ },
+ clearCode() {
+ this.barcode = ''
+ },
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.barcode = ''
+ },
+ next() {
+ if (this.list.length) {
+ this.isconfirm = true
+ } else {
+ uni.showToast({
+ icon: "none",
+ title: '鏈�夌墿鏂欐爣绛�'
+ })
+ }
+ },
+ prev() {
+ this.isconfirm = false
+ },
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async confirm() {
+ const newArr = this.list.map(item => {
+ return {
+ ...item,
+ receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+ };
+ });
+ if (this.whAreaId === '') {
+ uni.showToast({
+ icon: "none",
+ title: '璇烽�夋嫨鏀惰揣鍖�'
+ })
+ } else {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/orders/confirm', {
+ receipts: newArr,
+ whAreaId: this.whAreaId
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: '鏀惰揣鎴愬姛'
+ })
+ this.list = []
+ this.barcode = ''
+ this.isconfirm = false
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+ }
+ },
+
+ DateChange(e, item) {
+ item.prodTime = e.detail.value
+ }
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+ .content2 {
+ /* background-color: coral; */
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ margin-right: 10px;
+ color: #0081ff;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/outbound/orderOutItem.vue b/pages/outbound/orderOutItem.vue
new file mode 100644
index 0000000..fa589b5
--- /dev/null
+++ b/pages/outbound/orderOutItem.vue
@@ -0,0 +1,291 @@
+<template>
+ <view class="has-foot">
+ <form >
+ <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-gray"> 璁㈠崟鍙凤細OS250807152830</view>
+ </view>
+<!-- <view class="cu-form-group" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view> -->
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index" >
+ <view class="cu-list det menu " @click="clickTaskItem(index)">
+
+
+ <view class="cu-bar bg-white solid-bottom">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ </view>
+ <view class="content2">
+ <text class="text-gray margin-right-sm"><text class="text-black ">{{item.status$}}</text></text>
+ </view>
+ </view>
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁″垝璺熻釜鍙凤細<text class="text-black ">{{item.orderCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡缂栫爜锛�<text class="text-black ">{{item.matnrCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡鍚嶇О锛�<text class="text-black ">{{item.maktx}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">瀹炲彂鏁伴噺:<text class="text-black ">{{item.workQty}}</text></text>
+ </view>
+ <view class="content">
+ <text class="text-gray">搴斿彂鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+ </view>
+ </view>
+ <!-- <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+ </view>
+ </view> -->
+ <view class="cu-item">
+ <view class="content">
+ <progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+ </view>
+ </view>
+
+ </view>
+ </block>
+ </view>
+
+
+<!-- <view class="text-blue text-right padding-lr" v-show="isconfirm">
+ 鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+ </view>
+
+ <view class="cu-form-group " v-show="isconfirm">
+ <view class="title">鏀惰揣鍖�</view>
+ <uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+ @change="selChange"></uni-data-select>
+ </view> -->
+
+ <view class="cu-bar btn-group foot" v-show="!isconfirm">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">鍒锋柊</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="next">鍑哄簱</button>
+ </view>
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ isClickItem:false,
+ clickItem:'',
+ QRbarcode:null,
+ barcode: '',
+ whAreaId: '',
+ list: [],
+ range: [],
+ isconfirm: false,
+ itemStyle: {
+ backgroundColor: '#42b983',
+ borderColor: '#42b983'
+ },
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ allCount() {
+ return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+ }
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ clickTaskItem(index){
+ let that = this
+
+ // uni.navigateTo({
+ // url: "./orderInItem",
+ // // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ // success: function(res) {
+ // res.eventChannel.emit('checkItem', {
+ // data: that.list[index]
+ // })
+ // }
+
+ // });
+ },
+ typeChange(e){
+ this.typeSelect = e.value
+ this.search()
+ },
+ async search() {
+ this.list = []
+ if(this.barcode === '' || this.barcode ===null){
+ this.barcode = 'OS2509030230';
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/outStockItem/page',{
+ orderId:this.barcode
+ }
+ )
+ if (code === 200) {
+ if (Object.keys(data).length === 0){
+ uni.showToast({
+ title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+ icon: "none",
+ position: 'top'
+ })
+ }
+ this.list.push(...data)
+
+ }else if(code == 401){
+ setTimeout(() => {
+ uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/login/login"
+ });
+ }, 1000);
+ }else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+
+ },
+ clearCode() {
+ this.barcode = ''
+ },
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.barcode = ''
+ },
+ next() {
+ if (this.list.length) {
+ this.isconfirm = true
+ } else {
+ uni.showToast({
+ icon: "none",
+ title: '鏈�夌墿鏂欐爣绛�'
+ })
+ }
+ },
+ prev() {
+ this.isconfirm = false
+ },
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async confirm() {
+ const newArr = this.list.map(item => {
+ return {
+ ...item,
+ receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+ };
+ });
+ if (this.whAreaId === '') {
+ uni.showToast({
+ icon: "none",
+ title: '璇烽�夋嫨鏀惰揣鍖�'
+ })
+ } else {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/orders/confirm', {
+ receipts: newArr,
+ whAreaId: this.whAreaId
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: '鏀惰揣鎴愬姛'
+ })
+ this.list = []
+ this.barcode = ''
+ this.isconfirm = false
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+ }
+ },
+
+ DateChange(e, item) {
+ item.prodTime = e.detail.value
+ }
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+ .content2 {
+ /* background-color: coral; */
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ margin-right: 10px;
+ color: #0081ff;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/outbound/orderPick.vue b/pages/outbound/orderPick.vue
new file mode 100644
index 0000000..35bac76
--- /dev/null
+++ b/pages/outbound/orderPick.vue
@@ -0,0 +1,287 @@
+<template>
+ <view class="has-foot">
+ <form >
+ <view class="cu-form-group margin-top" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index">
+ <view class="cu-list det menu " @click="clickTaskItem(index)">
+
+
+<!-- <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ </view>
+ <view class="content2">
+ <text class="text-gray"><text class="text-black ">{{item.status$}}</text></text>
+ </view>
+ </view> -->
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁㈠崟鍙凤細<text class="text-black ">{{item.orderCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁㈠崟鏃堕棿锛�<text class="text-black ">{{item.createTime$}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡鍚嶇О锛�<text class="text-black ">{{item.maktx}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">瀹炲嚭鏁伴噺:<text class="text-black ">{{item.workQty}}</text></text>
+ </view>
+ <view class="content">
+ <text class="text-gray">搴斿嚭鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+ </view>
+ </view>
+ <!-- <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+ </view>
+ </view> -->
+ <!-- <view class="cu-item">
+ <view class="content">
+ <progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+ </view>
+ </view> -->
+
+ </view>
+ </block>
+ </view>
+
+
+<!-- <view class="text-blue text-right padding-lr" v-show="isconfirm">
+ 鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+ </view>
+
+ <view class="cu-form-group " v-show="isconfirm">
+ <view class="title">鏀惰揣鍖�</view>
+ <uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+ @change="selChange"></uni-data-select>
+ </view> -->
+
+<!-- <view class="cu-bar btn-group foot" v-show="!isconfirm">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="next">鍑哄簱</button>
+ </view> -->
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ isClickItem:false,
+ clickItem:'',
+ QRbarcode:null,
+ barcode: '',
+ whAreaId: '',
+ list: [],
+ range: [],
+ isconfirm: false,
+ itemStyle: {
+ backgroundColor: '#42b983',
+ borderColor: '#42b983'
+ },
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ allCount() {
+ return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+ }
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ clickTaskItem(index){
+ let that = this
+ uni.navigateTo({
+ url: "./orderOutItem",
+ // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ success: function(res) {
+ res.eventChannel.emit('checkItem', {
+ data: that.list[index]
+ })
+ }
+
+ });
+ },
+ typeChange(e){
+ this.typeSelect = e.value
+ this.search()
+ },
+ async search() {
+ this.list = []
+ if(this.barcode === '' || this.barcode ===null){
+ this.barcode = 'OS2509030230';
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/outStockItem/page',{
+ orderId:this.barcode
+ }
+ )
+ if (code === 200) {
+ if (Object.keys(data).length === 0){
+ uni.showToast({
+ title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+ icon: "none",
+ position: 'top'
+ })
+ }
+ this.list.push(...data)
+
+ }else if(code == 401){
+ setTimeout(() => {
+ uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/login/login"
+ });
+ }, 1000);
+ }else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+
+ },
+ clearCode() {
+ this.barcode = ''
+ },
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.barcode = ''
+ },
+ next() {
+ if (this.list.length) {
+ this.isconfirm = true
+ } else {
+ uni.showToast({
+ icon: "none",
+ title: '鏈�夌墿鏂欐爣绛�'
+ })
+ }
+ },
+ prev() {
+ this.isconfirm = false
+ },
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async confirm() {
+ const newArr = this.list.map(item => {
+ return {
+ ...item,
+ receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+ };
+ });
+ if (this.whAreaId === '') {
+ uni.showToast({
+ icon: "none",
+ title: '璇烽�夋嫨鏀惰揣鍖�'
+ })
+ } else {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/orders/confirm', {
+ receipts: newArr,
+ whAreaId: this.whAreaId
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: '鏀惰揣鎴愬姛'
+ })
+ this.list = []
+ this.barcode = ''
+ this.isconfirm = false
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+ }
+ },
+
+ DateChange(e, item) {
+ item.prodTime = e.detail.value
+ }
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+ .content2 {
+ /* background-color: coral; */
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ margin-right: 10px;
+ color: #0081ff;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/outbound/productDirectDelivery.vue b/pages/outbound/productDirectDelivery.vue
new file mode 100644
index 0000000..30000b4
--- /dev/null
+++ b/pages/outbound/productDirectDelivery.vue
@@ -0,0 +1,283 @@
+<template>
+ <view class="has-foot">
+ <form>
+ <view class="cu-form-group margin-top">
+ <view class="title">鎺ラ┏绔欑偣</view>
+ <input placeholder="璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+ <!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+ </view>
+ <view class="cu-form-group">
+ <view class="title">瀹瑰櫒鍙�</view>
+ <input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="barcode" ></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+<!-- <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-blue margin-left">瀹瑰櫒鐮�:{{container}}</view>
+ </view> -->
+ <view class="cu-form-group">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" ></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ <view class="cu-form-group">
+ <view class="title">鐩爣绔欑偣</view>
+ <view style="width: 75%;">
+ <uni-data-select style="min-width: 50%; max-width: 100%;" v-model="whAreaId" :localdata="range"
+ placement="bottom" @change="selChange"></uni-data-select>
+ </view>
+ </view>
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index">
+ <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ <view class="text-blue">
+ {{`${item.maktx}`}}
+ </view>
+ </view>
+ <!-- <view class="action" >
+ <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
+ </view> -->
+ </view>
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">ASN:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.asnCode}}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鎵规:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.batch}}</text>
+ </view>
+ </view>
+
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鏀惰揣鏁伴噺:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.anfme}}</text>
+ </view>
+ </view>
+
+ </block>
+ </view>
+
+
+ <view class="cu-bar btn-group foot">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">杩愰��</button>
+ </view>
+
+
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ barcode: '',
+ areaName: '',
+ locCode: '',
+ container: '',
+ list: [],
+ range: [],
+ curCode: '',
+ whAreaId:'',
+ repeatClick: false,
+
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ },
+ mounted() {
+ this.getRece()
+ this.whAreaId = uni.getStorageSync('whAreaId')
+ },
+ methods: {
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async search() {
+ let that = this
+ const {
+ code,
+ data,
+ msg
+ } = await request('/staBind/list', {
+ sta: this.barcode
+ })
+ if (code === 200) {
+ if(data.list.length >0){
+ that.container = data.barcode
+ that.list = data.list
+ }
+ that.range = data.warehouseAreasList.map(item => ({
+ value: item.id,
+ text: item.name
+ }));
+ that.whAreaId = data.area
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ },
+
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+
+ this.container = ''
+ this.barcode = ''
+ },
+
+ open() {
+ this.$refs.popup.open()
+ },
+
+ close() {
+ this.$refs.popup.close()
+ },
+
+ popupSubmit() {
+ this.$refs.popup.close()
+ },
+ itemChange(el) {
+ this.curCode = el
+ },
+
+ async confirm() {
+ if(this.barcode === '' || this.barcode ===null){
+ uni.showToast({
+ title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ if(this.whAreaId === '' || this.whAreaId ===null){
+ uni.showToast({
+ title: "鐩爣搴撳尯涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ this.repeatClick = true
+ const {
+ code,
+ data,
+ msg
+ } = await request('/AGV/task/start',{
+ sta: this.barcode,
+ area: this.whAreaId
+ }
+ )
+ if (code === 200) {
+ uni.showToast({
+ title: '鍚姩鎴愬姛'
+ })
+ this.clear()
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ this.repeatClick = false
+ },
+
+ async getRece() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/areas/receipt', {}, 'get')
+ if (code === 200) {
+ this.range = data.map(item => ({
+ value: item.id,
+ text: item.warehouseId$ + "-- " + item.name
+ }));
+ }
+ },
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+
+ .uni-file-picker {
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ .uni-select__selector {
+ z-index: 999;
+ }
+
+ .tj {
+ height: auto;
+ padding: 6px 8px;
+ display: inline-block;
+ border-radius: 6px;
+ }
+
+ .item {
+ display: flex;
+ justify-content: center;
+ }
+
+ .item .cu-btn {
+ font-size: 26upx;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/outbound/productionMatCall.vue b/pages/outbound/productionMatCall.vue
new file mode 100644
index 0000000..02409e3
--- /dev/null
+++ b/pages/outbound/productionMatCall.vue
@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/pages/transfer/matTransfer.vue b/pages/transfer/matTransfer.vue
new file mode 100644
index 0000000..efd6e63
--- /dev/null
+++ b/pages/transfer/matTransfer.vue
@@ -0,0 +1,265 @@
+<template>
+ <view class="has-foot">
+ <form>
+ <view class="cu-form-group margin-top">
+ <view class="title">璧峰搴撲綅鎵樼洏鍙�</view>
+ <input placeholder="璇锋壂璧峰搴撲綅鎵樼洏鍙�" v-model="container"></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ <view class="cu-form-group ">
+ <view class="title">鐩爣搴撲綅鍙�</view>
+ <input placeholder="璇烽�夋嫨鐩爣搴撲綅鍙�" v-model="barcode" ></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form>
+
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index">
+ <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ <view class="text-blue">
+ {{`${item.maktx}`}}
+ </view>
+ </view>
+ <!-- <view class="action" >
+ <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
+ </view> -->
+ </view>
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">ASN:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.asnCode}}</text>
+ </view>
+ </view>
+
+
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鎵规:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.batch}}</text>
+ </view>
+ </view>
+
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-black">鏀惰揣鏁伴噺:</text>
+ </view>
+ <view class="action">
+ <text class="text-grey ">{{item.anfme}}</text>
+ </view>
+ </view>
+
+ </block>
+ </view>
+
+
+ <view class="cu-bar btn-group foot">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="confirm">绉诲簱</button>
+ </view>
+
+ <uni-popup ref="popup" class="cu-popup">
+ <view class="popup-content">
+ <view class="head">
+ <text>鎺ㄨ崘</text>
+ <text class='cuIcon-close text-red close' @click="close"></text>
+ </view>
+
+ <div class="body">
+ <view class="cu-list grid col-3 no-border">
+ <view class="item" v-for="el in range">
+ <view class="cu-btn round sm" :class="[el===curCode?'bg-blue':'line-blue']"
+ @click="itemChange(el)">{{el}}</view>
+ </view>
+ </view>
+ </div>
+
+ <view class="cu-bar btn-group ">
+ <button class="cu-btn bg-blue shadow-blur" @click="popupSubmit">鎻愪氦</button>
+ </view>
+ </view>
+ </uni-popup>
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ barcode: '',
+ areaName: '',
+ locCode: '',
+ container: '',
+ list: [],
+ range: [],
+ curCode: ''
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ },
+ mounted() {},
+ methods: {
+ async search() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/stock/operate/list', {
+ barcode: this.container,
+ sta: this.barcode
+ })
+ if (code === 200) {
+ // const find = this.list.find(el => el.id === data.id);
+ // !find &&
+ this.list = data
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ },
+
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+
+ this.container = ''
+ this.barcode = ''
+ },
+
+ open() {
+ this.$refs.popup.open()
+ },
+
+ close() {
+ this.$refs.popup.close()
+ },
+
+ popupSubmit() {
+ this.$refs.popup.close()
+ },
+ itemChange(el) {
+ this.curCode = el
+ },
+
+ async confirm() {
+ if(this.container === '' || this.container ===null){
+ uni.showToast({
+ title: "瀹瑰櫒鐮佷笉鑳戒负绌�",
+ icon: "none",
+ })
+ return ;
+ }
+ if(this.barcode === '' || this.barcode ===null){
+ uni.showToast({
+ title: "鎺ラ┏绔欑爜涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/AGV/staBind',{
+ barcode: this.container,
+ sta: this.barcode
+ }
+ )
+ if (code === 200) {
+ uni.showToast({
+ title: '缁戝畾鎴愬姛'
+ })
+ this.clear()
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+
+
+
+ },
+
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+
+ .uni-file-picker {
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ .uni-select__selector {
+ z-index: 999;
+ }
+
+ .tj {
+ height: auto;
+ padding: 6px 8px;
+ display: inline-block;
+ border-radius: 6px;
+ }
+
+ .item {
+ display: flex;
+ justify-content: center;
+ }
+
+ .item .cu-btn {
+ font-size: 26upx;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/transfer/orderTransfer.vue b/pages/transfer/orderTransfer.vue
new file mode 100644
index 0000000..215c97e
--- /dev/null
+++ b/pages/transfer/orderTransfer.vue
@@ -0,0 +1,287 @@
+<template>
+ <view class="has-foot">
+ <form >
+ <view class="cu-form-group margin-top" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index">
+ <view class="cu-list det menu " @click="clickTaskItem(index)">
+
+
+<!-- <view class="cu-bar bg-white solid-bottom margin-top-sm">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ </view>
+ <view class="content2">
+ <text class="text-gray"><text class="text-black ">{{item.status$}}</text></text>
+ </view>
+ </view> -->
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁㈠崟鍙凤細<text class="text-black ">{{item.orderCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁㈠崟鏃堕棿锛�<text class="text-black ">{{item.createTime$}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡鍚嶇О锛�<text class="text-black ">{{item.maktx}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">瀹屾垚鏁伴噺:<text class="text-black ">{{item.workQty}}</text></text>
+ </view>
+ <view class="content">
+ <text class="text-gray">璋冩嫧鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+ </view>
+ </view>
+ <!-- <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+ </view>
+ </view> -->
+ <!-- <view class="cu-item">
+ <view class="content">
+ <progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+ </view>
+ </view> -->
+
+ </view>
+ </block>
+ </view>
+
+
+<!-- <view class="text-blue text-right padding-lr" v-show="isconfirm">
+ 鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+ </view>
+
+ <view class="cu-form-group " v-show="isconfirm">
+ <view class="title">鏀惰揣鍖�</view>
+ <uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+ @change="selChange"></uni-data-select>
+ </view> -->
+
+<!-- <view class="cu-bar btn-group foot" v-show="!isconfirm">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="next">鍑哄簱</button>
+ </view> -->
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ isClickItem:false,
+ clickItem:'',
+ QRbarcode:null,
+ barcode: '',
+ whAreaId: '',
+ list: [],
+ range: [],
+ isconfirm: false,
+ itemStyle: {
+ backgroundColor: '#42b983',
+ borderColor: '#42b983'
+ },
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ allCount() {
+ return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+ }
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ clickTaskItem(index){
+ let that = this
+ uni.navigateTo({
+ url: "./orderTransferItem",
+ // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ success: function(res) {
+ res.eventChannel.emit('checkItem', {
+ data: that.list[index]
+ })
+ }
+
+ });
+ },
+ typeChange(e){
+ this.typeSelect = e.value
+ this.search()
+ },
+ async search() {
+ this.list = []
+ if(this.barcode === '' || this.barcode ===null){
+ this.barcode = 'OS2509030230';
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/outStockItem/page',{
+ orderId:this.barcode
+ }
+ )
+ if (code === 200) {
+ if (Object.keys(data).length === 0){
+ uni.showToast({
+ title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+ icon: "none",
+ position: 'top'
+ })
+ }
+ this.list.push(...data)
+
+ }else if(code == 401){
+ setTimeout(() => {
+ uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/login/login"
+ });
+ }, 1000);
+ }else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+
+ },
+ clearCode() {
+ this.barcode = ''
+ },
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.barcode = ''
+ },
+ next() {
+ if (this.list.length) {
+ this.isconfirm = true
+ } else {
+ uni.showToast({
+ icon: "none",
+ title: '鏈�夌墿鏂欐爣绛�'
+ })
+ }
+ },
+ prev() {
+ this.isconfirm = false
+ },
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async confirm() {
+ const newArr = this.list.map(item => {
+ return {
+ ...item,
+ receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+ };
+ });
+ if (this.whAreaId === '') {
+ uni.showToast({
+ icon: "none",
+ title: '璇烽�夋嫨鏀惰揣鍖�'
+ })
+ } else {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/orders/confirm', {
+ receipts: newArr,
+ whAreaId: this.whAreaId
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: '鏀惰揣鎴愬姛'
+ })
+ this.list = []
+ this.barcode = ''
+ this.isconfirm = false
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+ }
+ },
+
+ DateChange(e, item) {
+ item.prodTime = e.detail.value
+ }
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+ .content2 {
+ /* background-color: coral; */
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ margin-right: 10px;
+ color: #0081ff;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/transfer/orderTransferItem.vue b/pages/transfer/orderTransferItem.vue
new file mode 100644
index 0000000..66aa345
--- /dev/null
+++ b/pages/transfer/orderTransferItem.vue
@@ -0,0 +1,291 @@
+<template>
+ <view class="has-foot">
+ <form >
+ <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-gray"> 璁㈠崟鍙凤細OS250807152830</view>
+ </view>
+<!-- <view class="cu-form-group" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view> -->
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index" >
+ <view class="cu-list det menu " @click="clickTaskItem(index)">
+
+
+ <view class="cu-bar bg-white solid-bottom">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ </view>
+ <view class="content2">
+ <text class="text-gray margin-right-sm"><text class="text-black ">{{item.status$}}</text></text>
+ </view>
+ </view>
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璁″垝璺熻釜鍙凤細<text class="text-black ">{{item.orderCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡缂栫爜锛�<text class="text-black ">{{item.matnrCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡鍚嶇О锛�<text class="text-black ">{{item.maktx}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">瀹屾垚鏁伴噺:<text class="text-black ">{{item.workQty}}</text></text>
+ </view>
+ <view class="content">
+ <text class="text-gray">璋冩嫧鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+ </view>
+ </view>
+ <!-- <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+ </view>
+ </view> -->
+ <view class="cu-item">
+ <view class="content">
+ <progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+ </view>
+ </view>
+
+ </view>
+ </block>
+ </view>
+
+
+<!-- <view class="text-blue text-right padding-lr" v-show="isconfirm">
+ 鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+ </view>
+
+ <view class="cu-form-group " v-show="isconfirm">
+ <view class="title">鏀惰揣鍖�</view>
+ <uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+ @change="selChange"></uni-data-select>
+ </view> -->
+
+ <view class="cu-bar btn-group foot" v-show="!isconfirm">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">鍒锋柊</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="next">璋冩嫧</button>
+ </view>
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ isClickItem:false,
+ clickItem:'',
+ QRbarcode:null,
+ barcode: '',
+ whAreaId: '',
+ list: [],
+ range: [],
+ isconfirm: false,
+ itemStyle: {
+ backgroundColor: '#42b983',
+ borderColor: '#42b983'
+ },
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ allCount() {
+ return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+ }
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ clickTaskItem(index){
+ let that = this
+
+ // uni.navigateTo({
+ // url: "./orderInItem",
+ // // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ // success: function(res) {
+ // res.eventChannel.emit('checkItem', {
+ // data: that.list[index]
+ // })
+ // }
+
+ // });
+ },
+ typeChange(e){
+ this.typeSelect = e.value
+ this.search()
+ },
+ async search() {
+ this.list = []
+ if(this.barcode === '' || this.barcode ===null){
+ this.barcode = 'OS2509030230';
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/outStockItem/page',{
+ orderId:this.barcode
+ }
+ )
+ if (code === 200) {
+ if (Object.keys(data).length === 0){
+ uni.showToast({
+ title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+ icon: "none",
+ position: 'top'
+ })
+ }
+ this.list.push(...data)
+
+ }else if(code == 401){
+ setTimeout(() => {
+ uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/login/login"
+ });
+ }, 1000);
+ }else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+
+ },
+ clearCode() {
+ this.barcode = ''
+ },
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.barcode = ''
+ },
+ next() {
+ if (this.list.length) {
+ this.isconfirm = true
+ } else {
+ uni.showToast({
+ icon: "none",
+ title: '鏈�夌墿鏂欐爣绛�'
+ })
+ }
+ },
+ prev() {
+ this.isconfirm = false
+ },
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async confirm() {
+ const newArr = this.list.map(item => {
+ return {
+ ...item,
+ receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+ };
+ });
+ if (this.whAreaId === '') {
+ uni.showToast({
+ icon: "none",
+ title: '璇烽�夋嫨鏀惰揣鍖�'
+ })
+ } else {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/orders/confirm', {
+ receipts: newArr,
+ whAreaId: this.whAreaId
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: '鏀惰揣鎴愬姛'
+ })
+ this.list = []
+ this.barcode = ''
+ this.isconfirm = false
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+ }
+ },
+
+ DateChange(e, item) {
+ item.prodTime = e.detail.value
+ }
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+ .content2 {
+ /* background-color: coral; */
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ margin-right: 10px;
+ color: #0081ff;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/transfer/transferType.vue b/pages/transfer/transferType.vue
new file mode 100644
index 0000000..176bde8
--- /dev/null
+++ b/pages/transfer/transferType.vue
@@ -0,0 +1,382 @@
+<template>
+ <view>
+<!-- <form >
+ <view class="cu-form-group margin-top" v-show="!isconfirm">
+ <view class="title">璁㈠崟鍙�</view>
+ <input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form> -->
+
+ <scroll-view scroll-y class="page">
+ <view class="nav-list">
+ <!-- :url="'/pages' + item.url + '?param=' + item.param" navigateTo-->
+ <view hover-class='none' class="nav-li" @click="toOrder(item)"
+ :class="'bg-'+item.color" :style="[{animation: 'show ' + ((index+1)*0.2+1) + 's 1'}]"
+ v-for="(item,index) in elements2" :key="index">
+ <view class="nav-title">{{item.title}}</view>
+ <view class="nav-name">{{item.name}}</view>
+ <text :class="'cuIcon-' + item.cuIcon"></text>
+ </view>
+ </view>
+ <view class="cu-tabbar-height"></view>
+ </scroll-view>
+ <view style="height: 50rpx;"></view>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ baseUrl: '',
+ token: '',
+ icon: '',
+ elements: [],
+ project: 'tzsk',
+ elements2: [
+ // {
+ // title: '寰呭寘瑁呭叆搴撳崟',
+ // name: 'pakinOrder',
+ // color: 'blue',
+ // url: `/outbound/orderPick`
+ // },
+ // {
+ // title: '寰呭寘瑁呭嚭搴撳崟',
+ // name: 'pakinOrder',
+ // color: 'blue',
+ // url: `/phyz/waitOrder/waitOrderOut`
+ // },
+ // {
+ // title: '閲囪喘鍏ュ簱鍗�',
+ // name: 'pakinOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/order/pakinOrderSelect`
+ // },
+ // {
+ // title: '鍑哄簱鍗�',
+ // name: 'outOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/order/outOrder`
+ // },
+ // {
+ // title: '鍏ュ簱鍗曟祴璇曠敤',
+ // name: 'pakin',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/order/purchaseOrder`
+ // },
+ // {
+ // title: '閲囪喘鍑哄簱',
+ // name: 'outOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/orderOut/orderOutSelect`
+ // },
+ // {
+ // title: '鍗婃垚鍝佸叆搴撳崟',
+ // name: 'bcpOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/bcp/bcpOrder`
+ // },
+ // {
+ // title: '鍗婃垚鍝佸叆搴撳崟_鍚稿',
+ // name: 'bcpOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/bcp/bcpOrder_xs`
+ // },
+ {
+ title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+ name: 'bcpDbOrder',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/orderTransfer`
+ },
+ {
+ title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+ name: 'bcpDbOrder',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/orderTransfer`
+ },
+ // {
+ // title: '鍗婃垚鍝佸嚭搴撳崟',
+ // name: 'bcpOutOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/orderOut/bcpOrderOutSelect`
+ // },
+ // {
+ // title: '鍗婃垚鍝佸嚭搴撳崟_浜屽巶',
+ // name: 'bcpOutOrder',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/orderOut/bcpOrderOutSelect_2`,
+ // param: {orderType: [1,2,3]}
+ // },
+ {
+ title: '鍗婃垚鍝佸姞宸ュ崟',
+ name: 'processOrder',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/orderTransfer`
+ },
+ {
+ title: '鍗婃垚鍝佸洖娴佸崟',
+ name: 'backStock',
+ color: 'blue',
+ // cuIcon: 'pullup',
+ url: `/orderTransfer`
+ },
+ // {
+ // title: '鍏ュ簱鍗�',
+ // name: 'orderIn',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/comOrder/orderIn`
+ // },
+ // {
+ // title: '鍑哄簱鍗�',
+ // name: 'orderOut',
+ // color: 'blue',
+ // // cuIcon: 'pullup',
+ // url: `/phyz/comOrder/orderOut`
+ // },
+
+ ],
+ menu: [],
+ colorList: ['cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive','cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive' ]
+ };
+ },
+ // onShow() {
+ // this.baseUrl = uni.getStorageSync('baseUrl');
+ // this.token = uni.getStorageSync('token');
+ // this.project = uni.getStorageSync('project')
+ // // this.getAuth()
+ // this.backGroundRepeat()
+ // },
+ onLoad(option) {
+ this.baseUrl = uni.getStorageSync('baseUrl');
+ this.token = uni.getStorageSync('token');
+ this.project = uni.getStorageSync('project');
+ this.menu = uni.getStorageSync('menu');
+ this.getAuth2(option.id)
+ this.backGroundRepeat()
+ },
+ methods: {
+ backGroundRepeat() {
+ let len = this.colorList.length
+ let i = 0
+ for (let k in this.elements2) {
+ if (i == len) {
+ i = 0
+ }
+ this.elements2[k].color = this.colorList[i]
+ i++
+ }
+ },
+ toOrder(item) {
+ uni.navigateTo({
+ url: `/pages/transfer${item.url}`,
+ success(res) {
+ res.eventChannel.emit('param', {
+ param: item.param
+ })
+ }
+ })
+ },
+ getAuth2(id) {
+ let secMenu = []
+ for (let k of this.menu) {
+ if (id == k.id) {
+ secMenu = k.children
+ }
+ }
+ for (let i in secMenu) {
+ this.getIcon(secMenu[i].title)
+ // 鍏煎2025 02 18 鑿滃崟param
+ if (secMenu[i].param) {
+ this.elements.unshift({
+ title: secMenu[i].name,
+ name: secMenu[i].title,
+ color: this.colorList[i],
+ cuIcon: this.icon,
+ id: secMenu[i].id,
+ param: JSON.parse(secMenu[i].param),
+ url: `${secMenu[i].code}`
+ })
+ } else {
+ this.elements.unshift({
+ title: secMenu[i].name,
+ name: secMenu[i].title,
+ color: this.colorList[i],
+ cuIcon: this.icon,
+ id: secMenu[i].id,
+ url: `${secMenu[i].code}`
+ })
+ }
+ }
+ console.log(this.elements);
+ },
+ getAuth(id) {
+ let that = this
+ uni.request({
+ url: that.baseUrl + '/menu/pda/auth',
+ data: {level:2 ,id: id},
+ header: { 'token': uni.getStorageSync('token') },
+ method: 'POST',
+ success(res) {
+ console.log(res);
+ if (res.statusCode === 404) {
+ that.elements = that.elements2
+ return
+ }
+ res = res.data
+ that.elements = []
+ if (res.code === 200) {
+ if (res.data == undefined || res.data == null || res.data == "") {
+ if (res.data.length == 0) {
+ return
+ } else {
+ that.elements = that.elements2
+ }
+ }
+ for (var i = 0; i < res.data.length; i++) {
+ if (res.data.length < 0) {
+ break;
+ }
+ that.getIcon(res.data[i].title)
+ that.elements.unshift({
+ title: res.data[i].name,
+ name: res.data[i].title,
+ color: that.colorList[i],
+ cuIcon: that.icon,
+ url: `${res.data[i].code}`
+ })
+ }
+ } else if (res.code === 403) {
+ uni.showToast({
+ title: res.msg,
+ icon: "none",
+ position: 'top'
+ })
+ setTimeout(() => {
+ uni.reLaunch({
+ url: '../login/login'
+ });
+ }, 1000);
+ } else if(res.status === 404) {
+ that.elements = that.elements2
+ // uni.showToast({
+ // title: '榛樿涓婚〉',
+ // icon: "none",
+ // position: 'top'
+ // })
+ } else {
+ uni.showToast({
+ title: res.msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+ },
+ fail(err) {
+ console.log(err);
+ }
+ })
+ },
+ getIcon(e) {
+ const ways = ['pakin','orderPakin','orderPutOn']
+ if (ways.includes(e)) {
+ this.icon = 'pullup'
+ }
+ }
+ }
+ }
+</script>
+
+<style>
+ .page {
+ height: 100vh;
+ }
+
+ .bg-red {
+ background-color: #e54d42;
+ color: #ffffff;
+ }
+
+ .bg-orange {
+ background-color: #f37b1d;
+ color: #ffffff;
+ }
+
+ .bg-yellow {
+ background-color: #fbbd08;
+ color: #333333;
+ }
+
+ .bg-olive {
+ background-color: #8dc63f;
+ color: #ffffff;
+ }
+
+ .bg-green {
+ background-color: #39b54a;
+ color: #ffffff;
+ }
+
+ .bg-cyan {
+ background-color: #1cbbb4;
+ color: #ffffff;
+ }
+
+ .bg-blue {
+ background-color: #0081ff;
+ color: #ffffff;
+ }
+
+ .bg-purple {
+ background-color: #6739b6;
+ color: #ffffff;
+ }
+
+ .bg-mauve {
+ background-color: #9c26b0;
+ color: #ffffff;
+ }
+
+ .bg-pink {
+ background-color: #e03997;
+ color: #ffffff;
+ }
+
+ .bg-brown {
+ background-color: #a5673f;
+ color: #ffffff;
+ }
+
+ .bg-grey {
+ background-color: #8799a3;
+ color: #ffffff;
+ }
+
+ .bg-gray {
+ background-color: #f0f0f0;
+ color: #333333;
+ }
+
+ .bg-black {
+ background-color: #333333;
+ color: #ffffff;
+ }
+
+ .bg-white {
+ background-color: #ffffff;
+ color: #666666;
+ }
+</style>
diff --git a/pages/workInfo/locInfo.vue b/pages/workInfo/locInfo.vue
new file mode 100644
index 0000000..21714ab
--- /dev/null
+++ b/pages/workInfo/locInfo.vue
@@ -0,0 +1,239 @@
+<template>
+ <view class="has-foot">
+ <form>
+ <view class="cu-form-group margin-top">
+ <view class="title">搴撲綅鍙�</view>
+ <input placeholder="璇锋壂鎻忓簱浣嶇紪鐮�" v-model="barcode" ></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form>
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index" @click="clickTaskItem(index)">
+ <view class="cu-list det menu" @click="clickTaskItem(index)">
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-grey">搴撲綅鍙凤細</text><text class="text-black">{{item.stationName}}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-grey">搴撲綅绫诲瀷锛�</text><text class="text-black ">{{item.type === 1 ? '绠卞3' : '鍘熸潗鏂�'}}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-grey">瀹瑰櫒鍙凤細</text><text class="text-black ">{{item.containerType}}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-grey">搴撲綅鐘舵�侊細</text><text class="text-black ">{{item.status === 0 ? '鍦ㄥ簱' : '绌洪棽' }}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <button class="cu-btn bg-red shadow-blur margin-left-xl justify-center" @click="popupSubmit">绂佺敤</button>
+ <button class="cu-btn bg-green shadow-blur margin-right-xl justify-center" @click="popupSubmit">瑙g</button>
+ <!-- <text class="text-grey">瀹瑰櫒鍙凤細</text><text class="text-black ">{{item.anfme}}</text> -->
+
+<!-- <view class="content margin-left-xl justify-center">
+ </view> -->
+ </view>
+ </view>
+ </block>
+ </view>
+
+<!-- <uni-popup ref="popup" class="cu-popup">
+ <view class="popup-content">
+ <view class="head">
+ <text>鎺ㄨ崘</text>
+ <text class='cuIcon-close text-red close' @click="close"></text>
+ </view>
+
+ <div class="body">
+ <view class="cu-list grid col-3 no-border">
+ <view class="item" v-for="el in range">
+ <view class="cu-btn round sm" :class="[el===curCode?'bg-blue':'line-blue']"
+ @click="itemChange(el)">{{el}}</view>
+ </view>
+ </view>
+ </div>
+
+ <view class="cu-bar btn-group ">
+ <button class="cu-btn bg-blue shadow-blur" @click="popupSubmit">鎻愪氦</button>
+ </view>
+ </view>
+ </uni-popup> -->
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ container: '',
+ list: [],
+ range: [],
+ curCode: ''
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ async search() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/basStation/page', {
+ current: 1,
+ pageSize: 10000,
+ stationName: this.barcode
+ })
+ if (code === 200) {
+ this.list = data.records
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ },
+ clickTaskItem(index){
+ let that = this
+ uni.navigateTo({
+ url: "./orderInItem",
+ // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ success: function(res) {
+ res.eventChannel.emit('checkItem', {
+ data: that.list[index]
+ })
+ }
+
+ });
+ },
+
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.container = ''
+ this.barcode = ''
+ },
+
+ open() {
+ this.$refs.popup.open()
+ },
+
+ close() {
+ this.$refs.popup.close()
+ },
+
+ popupSubmit() {
+ this.$refs.popup.close()
+ },
+ itemChange(el) {
+ this.curCode = el
+ },
+
+ async confirm() {
+ if(this.barcode === '' || this.barcode ===null){
+ uni.showToast({
+ title: "鎺ラ┏绔欑爜涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/AGV/staBind',{
+ barcode: this.container,
+ sta: this.barcode
+ }
+ )
+ if (code === 200) {
+ uni.showToast({
+ title: '缁戝畾鎴愬姛'
+ })
+ this.clear()
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+
+ },
+
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+
+ .uni-file-picker {
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ .uni-select__selector {
+ z-index: 999;
+ }
+
+ .tj {
+ height: auto;
+ padding: 6px 8px;
+ display: inline-block;
+ border-radius: 6px;
+ }
+
+ .item {
+ display: flex;
+ justify-content: center;
+ }
+
+ .item .cu-btn {
+ font-size: 26upx;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/workInfo/stationInfo.vue b/pages/workInfo/stationInfo.vue
new file mode 100644
index 0000000..da07f5b
--- /dev/null
+++ b/pages/workInfo/stationInfo.vue
@@ -0,0 +1,234 @@
+<template>
+ <view class="has-foot">
+ <form>
+ <view class="cu-form-group margin-top">
+ <view class="title">鎺ラ┏绔欑偣</view>
+ <input placeholder="璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form>
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index" @click="clickTaskItem(index)">
+ <view class="cu-list det menu" @click="clickTaskItem(index)">
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-grey">绔欑偣缂栫爜锛�</text><text class="text-black">{{item.stationName}}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-grey">绔欑偣绫诲瀷锛�</text><text class="text-black ">{{item.type === 1 ? '鍏夌數绔欑偣' : '鏅�氱珯鐐�'}}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-grey">绔欑偣鐘舵�侊細</text><text class="text-black ">{{item.status === 0 ? '姝e父' : '绂佺敤' }}</text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <button class="cu-btn bg-red shadow-blur margin-left-xl justify-center" @click="popupSubmit">绂佺敤</button>
+ <button class="cu-btn bg-green shadow-blur margin-right-xl justify-center" @click="popupSubmit">瑙g</button>
+ <!-- <text class="text-grey">瀹瑰櫒鍙凤細</text><text class="text-black ">{{item.anfme}}</text> -->
+
+<!-- <view class="content margin-left-xl justify-center">
+ </view> -->
+ </view>
+ </view>
+ </block>
+ </view>
+
+<!-- <uni-popup ref="popup" class="cu-popup">
+ <view class="popup-content">
+ <view class="head">
+ <text>鎺ㄨ崘</text>
+ <text class='cuIcon-close text-red close' @click="close"></text>
+ </view>
+
+ <div class="body">
+ <view class="cu-list grid col-3 no-border">
+ <view class="item" v-for="el in range">
+ <view class="cu-btn round sm" :class="[el===curCode?'bg-blue':'line-blue']"
+ @click="itemChange(el)">{{el}}</view>
+ </view>
+ </view>
+ </div>
+
+ <view class="cu-bar btn-group ">
+ <button class="cu-btn bg-blue shadow-blur" @click="popupSubmit">鎻愪氦</button>
+ </view>
+ </view>
+ </uni-popup> -->
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ container: '',
+ list: [],
+ range: [],
+ curCode: ''
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ async search() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/basStation/page', {
+ current: 1,
+ pageSize: 10000,
+ stationName: this.barcode
+ })
+ if (code === 200) {
+ this.list = data.records
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ },
+ clickTaskItem(index){
+ let that = this
+ uni.navigateTo({
+ url: "./orderInItem",
+ // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ success: function(res) {
+ res.eventChannel.emit('checkItem', {
+ data: that.list[index]
+ })
+ }
+
+ });
+ },
+
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.container = ''
+ this.barcode = ''
+ },
+
+ open() {
+ this.$refs.popup.open()
+ },
+
+ close() {
+ this.$refs.popup.close()
+ },
+
+ popupSubmit() {
+ this.$refs.popup.close()
+ },
+ itemChange(el) {
+ this.curCode = el
+ },
+
+ async confirm() {
+ if(this.barcode === '' || this.barcode ===null){
+ uni.showToast({
+ title: "鎺ラ┏绔欑爜涓嶈兘涓虹┖",
+ icon: "none",
+ })
+ return ;
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/AGV/staBind',{
+ barcode: this.container,
+ sta: this.barcode
+ }
+ )
+ if (code === 200) {
+ uni.showToast({
+ title: '缁戝畾鎴愬姛'
+ })
+ this.clear()
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+
+ },
+
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+
+ .uni-file-picker {
+ width: 100%;
+ margin-bottom: 10px;
+ }
+
+ .uni-select__selector {
+ z-index: 999;
+ }
+
+ .tj {
+ height: auto;
+ padding: 6px 8px;
+ display: inline-block;
+ border-radius: 6px;
+ }
+
+ .item {
+ display: flex;
+ justify-content: center;
+ }
+
+ .item .cu-btn {
+ font-size: 26upx;
+ }
+</style>
\ No newline at end of file
diff --git a/pages/workInfo/taskInfo.vue b/pages/workInfo/taskInfo.vue
new file mode 100644
index 0000000..951fbf6
--- /dev/null
+++ b/pages/workInfo/taskInfo.vue
@@ -0,0 +1,296 @@
+<template>
+ <view class="has-foot">
+ <form >
+<!-- <view class="flex solid-bottom padding-sm justify-between">
+ <view class="text-gray"> 璁㈠崟鍙凤細OS250807152830</view>
+ </view> -->
+ <view class="cu-form-group" v-show="!isconfirm">
+ <view class="title">宸ヤ綔鍙�</view>
+ <input placeholder="璇烽�夋嫨宸ヤ綔鍙�" v-model="barcode" @input="search()" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="search"></text>
+ </view>
+ </form>
+
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" :key="index" >
+ <view class="cu-list det menu " @click="clickTaskItem(index)">
+
+
+ <view class="cu-bar bg-white solid-bottom">
+ <view class="action">
+ <view class="index">
+ {{index+1}}
+ </view>
+ </view>
+ <view class="content2">
+ <text class="text-gray margin-right-sm"><text class="text-black ">{{item.status$}}</text></text>
+ </view>
+ </view>
+
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">宸ヤ綔鍙凤細<text class="text-black ">{{item.orderCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">宸ヤ綔鏃堕棿锛�<text class="text-black ">{{item.matnrCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">宸ヤ綔绫诲瀷锛�<text class="text-black ">{{item.maktx}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">璧峰绔欑偣:<text class="text-black ">{{item.workQty}}</text></text>
+ </view>
+ <view class="content">
+ <text class="text-gray">鐩爣绔欑偣:<text class="text-black ">{{item.anfme}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐩爣瀹瑰櫒鍙�:<text class="text-black ">{{item.checkType$}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">宸ヤ綔鐘舵��:<text class="text-black ">{{item.checkType$}}</text></text>
+ </view>
+ </view>
+<!-- <view class="cu-item">
+ <view class="content">
+ <progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+ </view>
+ </view> -->
+
+ </view>
+ </block>
+ </view>
+
+
+<!-- <view class="text-blue text-right padding-lr" v-show="isconfirm">
+ 鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+ </view>
+
+ <view class="cu-form-group " v-show="isconfirm">
+ <view class="title">鏀惰揣鍖�</view>
+ <uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+ @change="selChange"></uni-data-select>
+ </view> -->
+
+ <view class="cu-bar btn-group foot" v-show="!isconfirm">
+ <button class="cu-btn text-blue line-blue shadow" @click="clear">鍒锋柊</button>
+ <button class="cu-btn bg-blue shadow-blur" @click="next">鍑哄簱</button>
+ </view>
+
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ isClickItem:false,
+ clickItem:'',
+ QRbarcode:null,
+ barcode: '',
+ whAreaId: '',
+ list: [],
+ range: [],
+ isconfirm: false,
+ itemStyle: {
+ backgroundColor: '#42b983',
+ borderColor: '#42b983'
+ },
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ allCount() {
+ return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+ }
+ },
+ mounted() {
+ this.search()
+ },
+ methods: {
+ clickTaskItem(index){
+ let that = this
+
+ // uni.navigateTo({
+ // url: "./orderInItem",
+ // // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+ // success: function(res) {
+ // res.eventChannel.emit('checkItem', {
+ // data: that.list[index]
+ // })
+ // }
+
+ // });
+ },
+ typeChange(e){
+ this.typeSelect = e.value
+ this.search()
+ },
+ async search() {
+ this.list = []
+ if(this.barcode === '' || this.barcode ===null){
+ this.barcode = 'OS2509030230';
+ }
+ const {
+ code,
+ data,
+ msg
+ } = await request('/outStockItem/page',{
+ orderId:this.barcode
+ }
+ )
+ if (code === 200) {
+ if (Object.keys(data).length === 0){
+ uni.showToast({
+ title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+ icon: "none",
+ position: 'top'
+ })
+ }
+ this.list.push(...data)
+
+ }else if(code == 401){
+ setTimeout(() => {
+ uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/login/login"
+ });
+ }, 1000);
+ }else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+
+ },
+ clearCode() {
+ this.barcode = ''
+ },
+ remove(index) {
+ this.list.splice(index, 1);
+ },
+ clear() {
+ this.list = []
+ this.barcode = ''
+ },
+ next() {
+ if (this.list.length) {
+ this.isconfirm = true
+ } else {
+ uni.showToast({
+ icon: "none",
+ title: '鏈�夌墿鏂欐爣绛�'
+ })
+ }
+ },
+ prev() {
+ this.isconfirm = false
+ },
+ selChange(val) {
+ uni.setStorageSync('whAreaId', val)
+ },
+ async confirm() {
+ const newArr = this.list.map(item => {
+ return {
+ ...item,
+ receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+ };
+ });
+ if (this.whAreaId === '') {
+ uni.showToast({
+ icon: "none",
+ title: '璇烽�夋嫨鏀惰揣鍖�'
+ })
+ } else {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/orders/confirm', {
+ receipts: newArr,
+ whAreaId: this.whAreaId
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: '鏀惰揣鎴愬姛'
+ })
+ this.list = []
+ this.barcode = ''
+ this.isconfirm = false
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+ }
+ },
+
+ DateChange(e, item) {
+ item.prodTime = e.detail.value
+ }
+ }
+ }
+</script>
+
+<style>
+ .index {
+ border: 1px solid #e54d42;
+ color: #e54d42;
+ border-radius: 50%;
+ display: block;
+ width: 50rpx;
+ height: 50rpx;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 20rpx;
+ font-size: 30rpx;
+ }
+
+ .text-blue {
+ color: #0081ff !important;
+
+ }
+
+ .item {
+ position: relative;
+ display: flex;
+ min-height: 80upx;
+ align-items: center;
+ }
+ .content2 {
+ /* background-color: coral; */
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ margin-right: 10px;
+ color: #0081ff;
+ }
+</style>
\ No newline at end of file
diff --git a/static/img/toux80.png b/static/img/toux80.png
new file mode 100644
index 0000000..4eace0a
--- /dev/null
+++ b/static/img/toux80.png
Binary files differ
--
Gitblit v1.9.1