#
whycq
2024-07-30 de15b63fefbe3fcdd006ec917d6712778332949a
#
2个文件已修改
1个文件已添加
415 ■■■■■ 已修改文件
pages/basics/stockCheck.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/basics/stockCheck1.vue 373 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/basics/stockCheck.vue
@@ -3,29 +3,31 @@
        <view class="cu-form-group margin-top">
            <view class="title">托盘码</view>
            <input v-model="billNo" placeholder="扫码 / 输入" name="input" @input="findCode()" focus>
            <button v-model="matBtn" class="cu-btn bg-yellow" @click="toggle('right')"><text>+补充</text></button>
            <!-- <button v-model="matBtn" class="cu-btn bg-yellow" @click="toggle('right')"><text>+补充</text></button> -->
            
        </view>
        <view class="margin-top">
            <uni-table border stripe emptyText="暂无更多数据">
                <uni-tr>
                    <uni-th align="center" width="80">数量</uni-th>
                    <uni-th align="center" width="100">单位</uni-th>
                    <uni-th align="center" width="100">产品编码</uni-th>
                    <uni-th align="center" width="100">产品名称</uni-th>
                    <uni-th align="center" width="100">产品批号</uni-th>
                    <uni-th align="center" width="100">库位</uni-th>
                    <uni-th align="center" width="150">确认数量</uni-th>
                    <!-- <uni-th align="center" width="100">库位</uni-th> -->
                    <!-- <uni-th align="center" width="150">确认数量</uni-th> -->
                </uni-tr>
                <uni-tr v-for="(item, index) in locDetlData" :key="index">
                    <uni-td>{{item.count}}</uni-td>
                    <uni-td>{{item.matNo}}</uni-td>
                    <uni-td>{{item.matName}}</uni-td>
                    <uni-td>{{item.itemBatch}}</uni-td>
                    <uni-td>{{item.locNo}}</uni-td>
                    <uni-td align="center">
                    <uni-td style="text-align: center;">{{item.anfme}}</uni-td>
                    <uni-td style="text-align: center;">{{item.model}}</uni-td>
                    <uni-td style="text-align: center;">{{item.matnr}}</uni-td>
                    <uni-td style="text-align: center;">{{item.maktx}}</uni-td>
                    <uni-td style="text-align: center;">{{item.batch}}</uni-td>
                    <!-- <uni-td>{{item.locNo}}</uni-td> -->
                    <!-- <uni-td align="center">
                        <button class ="cu-btn bg-orange margin-xs" @click="conf(index,item)">修改</button>
                        <button class ="cu-btn bg-red margin-xs" @click="remove(index,item)">删除</button>
                    </uni-td>
                    </uni-td> -->
                </uni-tr>
            </uni-table>
        </view>
@@ -34,7 +36,7 @@
        </view> 
        <view class="cu-bar foot input" style="height: 130rpx;">
            <view class="flex solid-bottom padding justify-start" >
                <button class="cu-btn bg-yellow main-btn margin-xs" style="width: 430rpx;" @click="check">确 认</button>
                <button class="cu-btn bg-yellow main-btn margin-xs" style="width: 430rpx;" @click="reset">确 认</button>
                <button class="cu-btn bg-grey main-btn margin-xs" @click="reset">重 置</button>
            </view>
        </view>
@@ -148,15 +150,15 @@
                // 赋值前清空表格
                that.locDetlData = []
                uni.request({
                    url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/check/queryMatFromBarCode?barCode=" + barCode,
                    url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/pakout/query/auth",
                    header: {
                        'content-type':'application/x-www-form-urlencoded',
                        'token':uni.getStorageSync('token')
                    },
                    data: {
                        barCode: barCode
                        barcode: barCode
                    },
                    method:'GET',
                    method:'POST',
                    success(res) {
                        if (res.data.code === 200) {
                            that.locDetlData = res.data.data
pages/basics/stockCheck1.vue
New file
@@ -0,0 +1,373 @@
<template>
    <view>
        <view class="cu-form-group margin-top">
            <view class="title">托盘码</view>
            <input v-model="billNo" placeholder="扫码 / 输入" name="input" @input="findCode()" focus>
            <button v-model="matBtn" class="cu-btn bg-yellow" @click="toggle('right')"><text>+补充</text></button>
        </view>
        <view class="margin-top">
            <uni-table border stripe emptyText="暂无更多数据">
                <uni-tr>
                    <uni-th align="center" width="80">数量</uni-th>
                    <uni-th align="center" width="100">产品编码</uni-th>
                    <uni-th align="center" width="100">产品名称</uni-th>
                    <uni-th align="center" width="100">产品批号</uni-th>
                    <uni-th align="center" width="100">库位</uni-th>
                    <uni-th align="center" width="150">确认数量</uni-th>
                </uni-tr>
                <uni-tr v-for="(item, index) in locDetlData" :key="index">
                    <uni-td>{{item.count}}</uni-td>
                    <uni-td>{{item.matNo}}</uni-td>
                    <uni-td>{{item.matName}}</uni-td>
                    <uni-td>{{item.itemBatch}}</uni-td>
                    <uni-td>{{item.locNo}}</uni-td>
                    <uni-td align="center">
                        <button class ="cu-btn bg-orange margin-xs" @click="conf(index,item)">修改</button>
                        <button class ="cu-btn bg-red margin-xs" @click="remove(index,item)">删除</button>
                    </uni-td>
                </uni-tr>
            </uni-table>
        </view>
        <view style="height: 200rpx;">
             <!-- 空白层 -->
        </view>
        <view class="cu-bar foot input" style="height: 130rpx;">
            <view class="flex solid-bottom padding justify-start" >
                <button class="cu-btn bg-yellow main-btn margin-xs" style="width: 430rpx;" @click="check">确 认</button>
                <button class="cu-btn bg-grey main-btn margin-xs" @click="reset">重 置</button>
            </view>
        </view>
        <scroll-view>
            <uni-popup ref="popup" background-color="#fff" style="width: 500rpx;">
                <view class="popup-content" :class="{ 'popup-height': type === 'left' || type === 'right' }">
                        <view class="cu-form-group margin-top">
                            <text>补充产品</text>
                        </view>
                        <view class="cu-form-group margin-top">
                            <text class="title">产品ID</text>
                            <input type="text" v-model="matNo" placeholder="扫码 / 输入" name="input" autocomplete="off" focus @input="find()">
                        </view>
                        <view class="cu-form-group margin-top">
                            <text class="title">产品名称</text>
                            <input type="text" name="input" autocomplete="off" v-model="matName">
                        </view>
                        <view class="cu-form-group margin-top">
                            <text class="title">规格型号</text>
                            <input type="text" name="input" autocomplete="off" v-model="size">
                        </view>
                        <view class="cu-form-group margin-top">
                            <text class="title">单位</text>
                            <input type="text" name="input" autocomplete="off" v-model="unit">
                        </view>
                        <view class="cu-form-group margin-top">
                            <text class="title">数量</text>
                            <uni-number-box :min="0" :max="999" @change="countDom" v-model="count" />
                        </view>
                        <view class="flex solid-bottom padding justify-center">
                            <button class="cu-btn bg-yellow pda-btn2" @click="confirm">提取</button>
                        </view>
                        <view style="height: 200rpx;">
                             <!-- 空白层 -->
                        </view>
                </view>
            </uni-popup>
        </scroll-view>
        <view>
            <!-- 提示信息弹窗 -->
            <uni-popup ref="message" type="message">
                <uni-popup-message :type="msgType" :message="messageText" :duration="2000"></uni-popup-message>
            </uni-popup>
        </view>
        <view>
            <!-- 输入框示例 -->
            <uni-popup ref="inputDialog" type="dialog">
                <uni-popup-dialog ref="inputClose" mode="input" title="产品数量"
                    placeholder="请输入组托数量" @confirm="dialogInputConfirm">
                        <uni-number-box :min="0" :max="999" v-model="value" />
                </uni-popup-dialog>
            </uni-popup>
        </view>
        <!-- <view>
            <view class="uni-padding-wrap uni-common-mt">
                <view class="uni-btn-v">
                    <button type="default" @tap="noTitlemodalTap">无标题的modal</button>
                </view>
            </view>
        </view> -->
    </view>
</template>
<script>
    export default {
        data() {
            return {
                msgType: '',
                messageText: '',
                matBtn:'',
                souceData:[], // 初始化表格数据记录
                locDetlData:[],
                matNo:'',
                matName:'',
                size:'',
                unit:'',
                count:0,
                type: '',
                baseIP:'',
                basePORT:'',
                checkList:[],
                sourceList:[],
                billNo:'',
                matData:[],
                rowNum:'',
                value:'0',
            }
        },
        mounted(){
            // 获取IP端口
            const UIP = uni.getStorageSync('UIP');
            this.baseIP = UIP;
            const UPORT = uni.getStorageSync('UPORT');
            this.basePORT = UPORT;
        },
        methods: {
            // 提示窗口
            messageToggle(type) {
                this.msgType = type
                this.messageText = '提取失败'
                this.$refs.message.open()
            },
            // 根据托盘码查询
            findCode() {
                let that = this
                if (that.billNo.length === 0 || that.billNo.length !== 8) {
                    return
                }
                let barCode = that.billNo
                // 赋值前清空表格
                that.locDetlData = []
                uni.request({
                    url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/check/queryMatFromBarCode?barCode=" + barCode,
                    header: {
                        'content-type':'application/x-www-form-urlencoded',
                        'token':uni.getStorageSync('token')
                    },
                    data: {
                        barCode: barCode
                    },
                    method:'GET',
                    success(res) {
                        if (res.data.code === 200) {
                            that.locDetlData = res.data.data
                            if (res.data.data && res.data.data.length > 0) {
                                res.data.data.map(function(item){
                                    that.souceData.push(item)
                                })
                            }
                        } else if (res.data.code === 403) {
                            uni.navigateBack({
                                delta: 1
                            })
                        } else {
                            that.messageToggle('error')
                            that.messageText = res.data.msg
                        }
                    }
                })
            },
            // 点击补充的弹窗
            toggle(type) {
                this.type = type
                // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
                this.$refs.popup.open(type)
            },
            messageToggle(type) {
                this.msgType = type
                this.messageText = '提取失败'
                this.$refs.message.open()
            },
            countDom(value) {
            },
            // 根据产品ID查询产品详情
            find(){
                let that = this
                let thatId = that.matNo
                if(that.matNo.length===0){
                    return;
                }
                uni.request({
                    url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/matCode/auth",
                    header: {
                        'content-type':'application/x-www-form-urlencoded',
                        'token':uni.getStorageSync('token')
                        },
                    data: {
                        id:thatId
                    },
                    method: 'POST',
                    success(res){
                        let data = res.data.data
                        if(res.data.code === 200){
                            if(data != null){
                                that.matName = data.matName
                                that.size = data.size
                                that.unit = data.unit
                            }
                        } else if (res.data.code ===403 ){
                            uni.navigateBack({
                                delta: 1
                            })
                        } else {
                            this.messageToggle('error')
                            this.messageText = res.data.msg
                        }
                    }
                })
            },
            // 弹窗 确认补充
            confirm(){
                let that = this
                let data = {
                    matNo:that.matNo,
                    matName:that.matName,
                    count:that.count
                }
                that.addTableData(data)
            },
            // 修改数量
            conf(index,item){
                this.$refs.inputDialog.open()
                this.rowNum = index
                if (item.count === undefined ) {
                    this.value = 0
                }
            },
            // 修改数量弹窗
            dialogInputConfirm(value) {
                this.locDetlData[this.rowNum].count = this.value
                this.messageToggle('success')
                this.messageText = '修改成功'
            },
            // 移除物料
            remove(index,item){
                this.locDetlData.splice(index,1)
                this.messageToggle('success')
                this.messageText = '删除成功'
            },
            // 表格渲染
            addTableData(data){
                let that = this
                if(data.matNo.length === 0){
                    that.messageToggle('error')
                    that.messageText = '提取失败'
                    return
                }
                var toPush = true
                for (var j = 0; j < that.locDetlData.length; j++) {
                    if (data.matNo === that.locDetlData[j].matNo && data.locNo === that.locDetlData[j].locNo) {
                        toPush = false;
                    }
                }
                if (toPush) {
                    var pushData = {
                        locNo: that.locDetlData[0] ? that.locDetlData[0].locNo : null,
                        matNo: data.matNo,
                        count: data.count,
                        matName: data.matName
                    }
                    that.locDetlData.push(pushData);
                }
                that.$refs.popup.close()
            },
            // 重置
            reset(){
                this.billNo = ''
                this.locDetlData = []
            },
            check(){
                let that = this
                if(that.billNo.length === 0) {
                    that.messageToggle('error')
                    that.messageText = '请 扫码 / 输入 托盘码'
                    return
                }
                if(that.billNo.length < 8) {
                    that.messageToggle('error')
                    that.messageText = '托盘码必须为8位'
                    return
                }
                if(that.locDetlData.length > 0) {
                    for(var i = 0; i < that.locDetlData.length; i++){
                        if (that.locDetlData[i].count === null || that.locDetlData[i].count === 0 ||
                        that.locDetlData[i].count === undefined) {
                            that.messageToggle('error')
                            that.messageText = that.locDetlData[i].matNo + '商品数量错误'
                            return
                        }
                    }
                }
                if (that.locDetlData.length > 0) {
                    that.locDetlData.map(function (item) {
                        that.checkList.push({
                            locNo: item.locNo,
                            matNo: item.matNo,
                            checkQty: item.count,
                            itemBatch: item.itemBatch
                        });
                    });
                }
                if (that.souceData.length > 0) {
                    that.souceData.map(function (item) {
                        that.sourceList.push({
                            locNo: item.locNo,
                            matNo: item.matNo,
                            count: item.count,
                            itemBatch: item.itemBatch
                        });
                    });
                }
                // this.noTitlemodalTap()
                uni.request({
                    url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + "/mobile/stock/check",
                    header: {
                        'token':uni.getStorageSync('token')
                    },
                    data: JSON.stringify({
                        checkList: that.checkList
                    }),
                    method:'POST',
                    async:false,
                    success(res){
                        if(res.data.code === 200){
                            that.reset();
                            that.messageToggle('success')
                            that.messageText = '盘点成功'
                        } else if (res.data.code === 403) {
                            uni.navigateBack({
                                delta: 1
                            })
                        } else {
                            that.messageToggle('error')
                            that.messageText = res.data.msg
                        }
                    }
                })
            },
            noTitlemodalTap: function (e) {
                uni.showModal({
                    content: "是否确认盘点",
                    confirmText: "是",
                    cancelText: "否"
                })
            }
        }
    }
</script>
<style>
</style>
pages/index/index.vue
@@ -33,12 +33,12 @@
                //     color: 'green',
                //     cuIcon: 'video'
                // },
                // {
                //     title: '库存盘点',
                //     name: 'stockCheck',
                //     color: 'cyan',
                //     cuIcon: 'squarecheck'
                // },
                {
                    title: '库存盘点',
                    name: 'stockCheck',
                    color: 'cyan',
                    cuIcon: 'squarecheck'
                },
                // {
                //     title: '库存查询',
                //     name: 'stockQuery',