|
@@ -0,0 +1,184 @@
|
|
|
+<template>
|
|
|
+ <view class="p-content">
|
|
|
+ <view class="p-head" v-if="baseData">
|
|
|
+ <view>
|
|
|
+ <text>采购单号:</text>
|
|
|
+ <text style="color: crimson;">{{baseData[0].purchaseBillNo}}</text>
|
|
|
+ </view>
|
|
|
+ <view>
|
|
|
+ <text>发货单号:</text>
|
|
|
+ <text style="color: crimson;">{{baseData[0].sendBillNo}}</text>
|
|
|
+ </view>
|
|
|
+ <view>
|
|
|
+ <text>条码:</text>
|
|
|
+ <view>
|
|
|
+ <input
|
|
|
+ @blur="queryProduct"
|
|
|
+ style="width: 100%;text-align: left;"
|
|
|
+ class="uni-input"
|
|
|
+ placeholder="扫描或输入条码"
|
|
|
+ border="surround"
|
|
|
+ v-model="code">
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view style="justify-content: flex-start;flex-wrap: wrap;" v-for="(item,bindex) in baseData" :key="item.id">
|
|
|
+ <view>总款数:{{ item.totalPutCategory }}</view>
|
|
|
+ <view>本次发货数量合计: {{ item.totalPutQty }}</view>
|
|
|
+ <view>本次发货金额合计: {{ item.totalPutAmount?toThousands(item.totalPutAmount,2):'0.00' }}</view>
|
|
|
+ <view>本次入库数量合计: {{ item && (item.totalRealPutQty || item.totalRealPutQty==0) ? item.totalRealPutQty : '--' }}</view>
|
|
|
+ <view>本次入库金额合计: {{ item && (item.totalRealPutAmount || item.totalRealPutAmount==0) ? toThousands(item.totalRealPutAmount, 2) : '--' }}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="p-body">
|
|
|
+ <uni-table style="width: 100%;" border emptyText="暂无数据" :loading="loading" >
|
|
|
+ <!-- 表头行 -->
|
|
|
+ <uni-tr>
|
|
|
+ <uni-td align="center">产品编码</uni-td>
|
|
|
+ <uni-td align="center">产品分类</uni-td>
|
|
|
+ <uni-td align="center">入库/发货数量</uni-td>
|
|
|
+ <uni-td align="center">入库金额</uni-td>
|
|
|
+ </uni-tr>
|
|
|
+ <!-- 表格数据行 -->
|
|
|
+ <uni-tr v-for="item in detailList" :key="item.id" :checkedRow="curProduct&&curProduct.qrCode == item.qrCode">
|
|
|
+ <uni-td width="30%" align="center">{{item.dealerProductEntity.code}}</uni-td>
|
|
|
+ <uni-td width="30%" align="center">{{item.dealerProductEntity.productTypeName2}}</uni-td>
|
|
|
+ <uni-td width="25%" align="center"><text style="color: red;">{{item.realPutQty}}</text>/{{item.putQty}}</uni-td>
|
|
|
+ <uni-td width="15%" align="center">
|
|
|
+ {{item.realPutAmount}}
|
|
|
+ </uni-td>
|
|
|
+ </uni-tr>
|
|
|
+ </uni-table>
|
|
|
+ </view>
|
|
|
+ <view class="p-footer">
|
|
|
+ <button :disabled="loading" size="mini" type="primary" @click="toOut"> 入库 <text class="iconfont icon-icon-test43"></text></button>
|
|
|
+ </view>
|
|
|
+ <scanCode></scanCode>
|
|
|
+ </view>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import scanCode from '@/libs/scan-code.vue';
|
|
|
+ import { purchaseWriteStockIn, receivingQuery, receivingDetail, purchaseUpdateWarehouse, updateRealPutQty } from '@/config/api.js'
|
|
|
+ import { playAudio, toThousands } from '@/libs/tools.js'
|
|
|
+ export default {
|
|
|
+ components: { scanCode },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ loading: false,
|
|
|
+ baseData: null,
|
|
|
+ detailList:[],
|
|
|
+ code:'',
|
|
|
+ receivingBillSn: null,
|
|
|
+ salesId: null,
|
|
|
+ curProduct: null,
|
|
|
+ toThousands
|
|
|
+ };
|
|
|
+ },
|
|
|
+ onLoad(opts) {
|
|
|
+ var _this = this
|
|
|
+ this.receivingBillSn = opts.receivingBillSn
|
|
|
+ this.salesId = opts.id
|
|
|
+ this.getDetail()
|
|
|
+ this.getDetailList()
|
|
|
+
|
|
|
+ uni.$on('scancodedate', function(content) {
|
|
|
+ console.log("扫描到的内容为:", content)
|
|
|
+ _this.code = content||''
|
|
|
+ _this.queryProduct()
|
|
|
+ })
|
|
|
+ },
|
|
|
+ onShow() {
|
|
|
+ this.hideKeyborder()
|
|
|
+ },
|
|
|
+ onUnload() {
|
|
|
+ uni.$off('scancodedate')
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ hideKeyborder(){
|
|
|
+ uni.hideKeyboard()
|
|
|
+ },
|
|
|
+ //检货
|
|
|
+ queryProduct(){
|
|
|
+ if(this.code==''){return}
|
|
|
+ this.loading = true
|
|
|
+ salesPick({receivingBillSn: this.receivingBillSn, productQrCode: this.code}).then(res => {
|
|
|
+ console.log(res)
|
|
|
+ if(res.status == 200){
|
|
|
+ if(res.data){
|
|
|
+ this.getDetailList()
|
|
|
+ }else{
|
|
|
+ uni.$u.toast("此商品不存在")
|
|
|
+ playAudio('error')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.loading = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 详情
|
|
|
+ getDetail(){
|
|
|
+ receivingQuery({receivingBillSn: this.receivingBillSn}).then(res => {
|
|
|
+ console.log(res,'详情')
|
|
|
+ if(res.status == 200){
|
|
|
+ this.baseData = res.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 产品明细列表
|
|
|
+ getDetailList(){
|
|
|
+ receivingDetail({pageNo:1,pageSize:1000,receivingBillSn:this.receivingBillSn}).then(res => {
|
|
|
+ if(res.status == 200){
|
|
|
+ this.detailList = res.data.list
|
|
|
+ const curProduct = this.detailList.find(item => item.qrCode == this.code)
|
|
|
+ this.curProduct = curProduct || null
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 入库
|
|
|
+ async toOut(){
|
|
|
+ const ret = await salesWriteStockOut({receivingBillSn: this.receivingBillSn})
|
|
|
+ if(ret.status == 200){
|
|
|
+ this.$store.state.vuex_isRefash = true
|
|
|
+ uni.navigateBack()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ }
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss">
|
|
|
+ .p-content{
|
|
|
+ .p-head{
|
|
|
+ font-size: 32upx;
|
|
|
+ color: $uni-text-color;
|
|
|
+ >view{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 10upx 20upx;
|
|
|
+ border-bottom: 1px solid #eee;
|
|
|
+ > view{
|
|
|
+ display: flex;
|
|
|
+ padding: 0 10upx;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .uni-input{
|
|
|
+ border: 1px solid #eee;
|
|
|
+ width: 150upx;
|
|
|
+ text-align: center;
|
|
|
+ padding: 8upx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .p-body{
|
|
|
+ overflow: auto;
|
|
|
+ flex-grow: 1;
|
|
|
+ height: 50%;
|
|
|
+ }
|
|
|
+ .p-footer{
|
|
|
+ padding:30upx;
|
|
|
+ display: flex;
|
|
|
+ > button{
|
|
|
+ width: 40%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|