| | |
| | | "navigationBarTitleText" : "组托入库", |
| | | "enablePullDownRefresh" : false |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/phyz/order/preview", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "出库预览", |
| | | "enablePullDownRefresh" : false |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | @input="findOrder()"> |
| | | </view> |
| | | <view class="item"> |
| | | <input type="text" placeholder=" 扫码 / 输入 料箱码" v-model="barcode" :focus="barcodeFocus" |
| | | <input type="text" placeholder=" 扫码 / 输入 货架码" v-model="barcode" :focus="barcodeFocus" |
| | | @input="barcodeInput()"> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="dropdown" @click="toggleDropdown()"> |
| | | <input type="text" style="width: 650rpx;" v-model="containerType"> |
| | | <uni-icons :type="isOpen ? 'top' : 'bottom'" color="#c1c1c1" style="margin-left: 10rpx;"></uni-icons> |
| | | <scroll-view scroll-y="ture" class="dropdown-content" v-if="isOpen"> |
| | | <view class="dropdown-item" v-for="option in selects" @click="selected(option)">{{option}}</view> |
| | | </scroll-view> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <input type="text" placeholder=" 扫码 / 输入 暂存位" v-model="stationCode" :focus="stationCodeFocus" |
| | |
| | | barcode: '', |
| | | orderNo: '', |
| | | stationCode: '', |
| | | containerType: '', |
| | | dataList: [], |
| | | count: 0, |
| | | rowNum: '', |
| | |
| | | flag: 0, |
| | | tempOrderInfo: {csocode: '',isoseq: ''}, |
| | | hide: true, |
| | | hidebg: 'kb-bgtr' |
| | | hidebg: 'kb-bgtr', |
| | | isOpen: false, |
| | | selects: ['1号','2号'] |
| | | } |
| | | }, |
| | | onLoad() { |
| | |
| | | } else { |
| | | this.hidebg = 'kb-bgfa' |
| | | } |
| | | }, |
| | | toggleDropdown() { |
| | | this.isOpen = !this.isOpen |
| | | }, |
| | | selected(option) { |
| | | this.containerType = option |
| | | }, |
| | | findOrder() { |
| | | let that = this |
| | |
| | | /* font-family: PingFang SC; uniapp 默认字体不居中 */ |
| | | font-size: 36upx; |
| | | font-family: PingFang SC; |
| | | width: 55vw; |
| | | |
| | | } |
| | | |
| | |
| | | text-align: center; |
| | | box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.5); |
| | | } |
| | | .dropdown { |
| | | position: relative; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 0rpx 20rpx; |
| | | } |
| | | .dropdown-content { |
| | | position: absolute; |
| | | top: calc(100% + 15rpx); |
| | | left: 0; |
| | | width: calc(100% - 20rpx); |
| | | max-height: 300rpx; |
| | | background-color: #fff; |
| | | box-shadow: 0 0px 6px rgba(0, 0, 0, 0.3); |
| | | border-radius: 8rpx; |
| | | z-index: 10; |
| | | } |
| | | .dropdown-item { |
| | | padding: 12rpx; |
| | | line-height: 1.2; |
| | | font-size: 12rpx; |
| | | color: #3a3a3a; |
| | | } |
| | | </style> |
| | |
| | | <view style="height: 100rpx;"></view> |
| | | |
| | | <!-- 底部操作按钮 --> |
| | | <view class="buttom"> |
| | | <view class="buttom" v-if="orderType == 'in'"> |
| | | <button size="mini" @click="reset('warn')">重置</button> |
| | | <button size="mini" type="primary" @click="combConfirm('warn')">去组托</button> |
| | | </view> |
| | | |
| | | <!-- 底部操作按钮 --> |
| | | <view class="buttom" v-if="orderType == 'out'"> |
| | | <button size="mini" @click="reset('warn')">重置</button> |
| | | <button size="mini" type="primary" @click="combConfirm2('warn')">去出库</button> |
| | | </view> |
| | | |
| | | </view> |
| | |
| | | newDataList: [], |
| | | allCheck: false, |
| | | allCheckBtnTitle: '全选', |
| | | orderType: 'out' |
| | | } |
| | | }, |
| | | onLoad() { |
| | |
| | | |
| | | }) |
| | | that.getOrderDetl(data.item.id) |
| | | |
| | | that.orderType = 'in' |
| | | }) |
| | | eventChannel.on('item1', function(data) { |
| | | console.log(data); |
| | | that.orderId = data.item.orderId |
| | | console.log(data.item.id); |
| | | uni.setNavigationBarTitle({ |
| | | title: data.item.orderNo, |
| | | |
| | | }) |
| | | that.getOrderDetl(data.item.id) |
| | | |
| | | that.orderType = 'out' |
| | | }) |
| | | }, |
| | | onShow() { |
| | |
| | | }, |
| | | }); |
| | | }, |
| | | combConfirm2(type) { |
| | | let _this = this |
| | | let combList = [] |
| | | for (let k of _this.dataList) { |
| | | if (k.checked) { |
| | | combList.push(k) |
| | | } |
| | | } |
| | | if (combList.length == 0) { |
| | | uni.showToast({ title: '请选择出库商品', icon: "error", position: 'top'}) |
| | | return |
| | | } |
| | | uni.navigateTo({ |
| | | url: "./preview", |
| | | success: function(res) { |
| | | // 通过eventChannel向被打开页面传送数据 向另外一个页面传递值的 |
| | | res.eventChannel.emit('mats', { |
| | | mats: combList |
| | | }) |
| | | }, |
| | | }); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <view> |
| | | <view class="code"> |
| | | <!-- <uni-search-bar :focus="matFocus" v-model="matnr" @input="matInput()" ma |
| | | maxlength="500" ancel="cancel" @clear="clear" placeholder="输入 / 扫描商品"> |
| | | </uni-search-bar> --> |
| | | <view class="code-title"> |
| | | <view></view> |
| | | <view>商品列表</view> |
| | | <view @click="allChecked">{{allCheckBtnTitle}}</view> |
| | | </view> |
| | | </view> |
| | | <view class="list" v-for="(item,i) in dataList"> |
| | | <view class="list-left"> |
| | | <view>编号:{{item.matnr}}</view> |
| | | <view>名称:{{item.maktx}}</view> |
| | | <view>规格:{{item.specs}}</view> |
| | | <view>批号:{{item.batch}}</view> |
| | | <view class="list-anfme">数量:{{item.anfme}}</view> |
| | | <view class="list-qty-1" v-if="item.anfme > item.qty">作业数量:{{item.qty}}</view> |
| | | <view class="list-qty-2" v-if="item.anfme <= item.qty">作业数量:{{item.qty}}</view> |
| | | <view class="card-id">{{i + 1}}</view> |
| | | <view>货位:{{item.locNo}}</view> |
| | | <view style="display: flex;">出库站: |
| | | <view class="dropdown" @click="toggleDropdown(item)"> |
| | | <input type="text" style="width: 270rpx;" v-model="item.agvStaNo"> |
| | | <uni-icons :type="item.isOpen ? 'top' : 'bottom'" color="#c1c1c1" style="margin-left: 10rpx;"></uni-icons> |
| | | <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen"> |
| | | <view class="dropdown-item" v-for="option in selects" @click="selected(option,item)">{{option.value}}</view> |
| | | </scroll-view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="list-right" @click="checkboxChange(item)"> |
| | | <label > |
| | | <checkbox :value="item.orderNo" :checked="item.checked" color="" :disabled="item.anfme <= item.qty" style="transform:scale(0.7)" /><text></text> |
| | | </label> |
| | | </view> |
| | | </view> |
| | | <view style="height: 100rpx;"></view> |
| | | |
| | | <!-- 底部操作按钮 --> |
| | | <view class="buttom"> |
| | | <button size="mini" @click="reset('warn')">稍后处理</button> |
| | | <button size="mini" type="primary" @click="combConfirm('warn')">立即出库</button> |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | baseUrl: '', |
| | | token: '', |
| | | orderId: '', |
| | | matFocus: true, |
| | | matnr: '', |
| | | checck: true, |
| | | dataList: [{}], |
| | | oldDataList: [], |
| | | newDataList: [], |
| | | allCheck: false, |
| | | allCheckBtnTitle: '全选', |
| | | orderType: 'out', |
| | | ids: [], |
| | | isOpen: false, |
| | | selects: [ |
| | | {value: "CS-101-001-01@1"}, |
| | | {value: "CS-101-001-02@1"}, |
| | | {value: "CS-101-001-03@1"}, |
| | | {value: "CS-101-002-01@1"}, |
| | | {value: "CS-101-002-02@1"}, |
| | | {value: "CS-101-002-03@1"}, |
| | | ] |
| | | } |
| | | }, |
| | | onLoad() { |
| | | let that = this |
| | | this.baseUrl = uni.getStorageSync('baseUrl'); |
| | | this.token = uni.getStorageSync('token'); |
| | | // const eventChannel = this.$scope.eventChannel; // 兼容APP-NVUE |
| | | const eventChannel = this.getOpenerEventChannel(); |
| | | |
| | | // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据 |
| | | eventChannel.on('mats', function(data) { |
| | | console.log(data); |
| | | for (let item of data.mats) { |
| | | that.ids.push(item.id) |
| | | } |
| | | that.getPakoutList(that.ids) |
| | | }) |
| | | }, |
| | | onShow() { |
| | | if (this.dataList.length > 0) { |
| | | this.oldDataList = [...this.dataList] |
| | | } |
| | | }, |
| | | methods: { |
| | | toggleDropdown(item) { |
| | | item.isOpen = !item.isOpen; |
| | | }, |
| | | selected(option,item) { |
| | | item.agvStaNo = option.value |
| | | }, |
| | | // 订单明细 |
| | | getPakoutList(ids) { |
| | | let _this = this |
| | | uni.request({ |
| | | url: `${_this.baseUrl}/out/pakout/preview/auth`, |
| | | header: {'token': uni.getStorageSync('token')}, |
| | | data: ids, |
| | | method: 'POST', |
| | | success(res) { |
| | | res = res.data |
| | | if (res.code === 200) { |
| | | for (let k of res.data) { |
| | | k['isOpen'] = false |
| | | } |
| | | _this.dataList = res.data |
| | | _this.oldDataList = [..._this.dataList] |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | matInput() { |
| | | let count = 0 |
| | | let sign = 0 |
| | | if (this.oldDataList.length > 0) { |
| | | this.dataList = [...this.oldDataList] |
| | | } |
| | | this.newDataList = [] |
| | | for (let k in this.dataList) { |
| | | if (!this.dataList[k].matnr.includes(this.matnr)) { |
| | | count++; |
| | | } else { |
| | | this.newDataList.push(this.dataList[k]) |
| | | } |
| | | } |
| | | if (this.matnr != '') { |
| | | for (let j in this.dataList) { |
| | | if (!this.dataList[j].maktx.includes(this.matnr)) { |
| | | } else { |
| | | for (let i in this.newDataList) { |
| | | if (this.newDataList[i].matnr == this.dataList[j].matnr) { |
| | | sign++ |
| | | } |
| | | } |
| | | if (sign == 0) { |
| | | this.newDataList.push(this.dataList[j]) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | this.dataList = this.newDataList |
| | | }, |
| | | checkboxChange(e) { |
| | | let items = this.dataList, |
| | | values = e.orderNo; |
| | | if (e.checked) { |
| | | this.$set(e,'checked',false) |
| | | } else { |
| | | if (e.anfme == e.qty) { |
| | | this.$set(e,'checked',false) |
| | | } else { |
| | | this.$set(e,'checked',true) |
| | | } |
| | | |
| | | } |
| | | }, |
| | | allChecked() { |
| | | if (this.allCheck) { |
| | | this.allCheck = false |
| | | this.allCheckBtnTitle = '全选' |
| | | } else { |
| | | this.allCheck = true |
| | | this.allCheckBtnTitle = '取消' |
| | | } |
| | | for (let item of this.dataList) { |
| | | if (this.allCheck) { |
| | | if (item.anfme == item.qty) { |
| | | this.$set(item,'checked',false) |
| | | } else { |
| | | this.$set(item,'checked',true) |
| | | } |
| | | } else { |
| | | this.$set(item,'checked',false) |
| | | } |
| | | } |
| | | }, |
| | | clear() { |
| | | this.matnr = '' |
| | | this.dataList = [...this.oldDataList] |
| | | }, |
| | | combConfirm(type) { |
| | | let _this = this |
| | | let combList = [] |
| | | for (let k of _this.dataList) { |
| | | if (k.checked) { |
| | | if (k.agvStaNo == null) { |
| | | uni.showToast({ title: `${k.locNo}当前货位没有选择出库站`, icon: "error", position: 'top'}) |
| | | return |
| | | } else { |
| | | combList.push(k) |
| | | } |
| | | } |
| | | } |
| | | if (combList.length == 0) { |
| | | uni.showToast({ title: '请选择出库商品', icon: "error", position: 'top'}) |
| | | return |
| | | } |
| | | uni.request({ |
| | | url: `${_this.baseUrl}/out/pakout/auth`, |
| | | header: {'token': uni.getStorageSync('token')}, |
| | | data: combList, |
| | | method: 'POST', |
| | | success(res) { |
| | | res = res.data |
| | | console.log(res); |
| | | } |
| | | }) |
| | | }, |
| | | combConfirm2(type) { |
| | | let _this = this |
| | | let combList = [] |
| | | for (let k of _this.dataList) { |
| | | if (k.checked) { |
| | | combList.push(k) |
| | | } |
| | | } |
| | | if (combList.length == 0) { |
| | | uni.showToast({ title: '请选择出库商品', icon: "error", position: 'top'}) |
| | | return |
| | | } |
| | | uni.navigateTo({ |
| | | url: "../AGV/AGVPakin2", |
| | | success: function(res) { |
| | | // 通过eventChannel向被打开页面传送数据 向另外一个页面传递值的 |
| | | res.eventChannel.emit('mats', { |
| | | mats: combList |
| | | }) |
| | | }, |
| | | }); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | @import url('../../../static/css/common/order.css'); |
| | | .list-anfme { |
| | | color: #0082ff; |
| | | font-weight: bold; |
| | | } |
| | | .list-qty-1 { |
| | | color: #33ba43; |
| | | font-weight: bold; |
| | | } |
| | | .list-qty-2 { |
| | | color: #e2231a; |
| | | font-weight: bold; |
| | | } |
| | | </style> |
| | |
| | | background-color: #e6f7ff; |
| | | border: 1px solid #91d5ff; |
| | | border-radius: 6rpx; |
| | | } |
| | | .dropdown { |
| | | position: relative; |
| | | display: flex; |
| | | align-items: center; |
| | | border-bottom: 1px solid #333; |
| | | padding: 0rpx 20rpx; |
| | | } |
| | | .dropdown-content { |
| | | position: absolute; |
| | | top: calc(100% + 15rpx); |
| | | left: 0; |
| | | width: calc(100%); |
| | | max-height: 300rpx; |
| | | background-color: #fff; |
| | | box-shadow: 0 0px 6px rgba(0, 0, 0, 0.3); |
| | | border-radius: 8rpx; |
| | | z-index: 10; |
| | | } |
| | | .dropdown-item { |
| | | padding: 12rpx; |
| | | line-height: 1.2; |
| | | font-size: 12rpx; |
| | | color: #3a3a3a; |
| | | } |