chenhaozhe
2025-09-03 346d8baddff15bebed6594e088378ccb64f62df4
调整 条码拆码2 模块
5个文件已修改
991 ■■■■ 已修改文件
components/PushSeOutStockBillPopup/PushSeOutStockBillPopup.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/caigouruku/form.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tiaomachaima/tiaomachaima.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tiaomachaima/tiaomachaima2.vue 963 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/xiaoshouchuku/form.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/PushSeOutStockBillPopup/PushSeOutStockBillPopup.vue
@@ -3,16 +3,16 @@
        <uni-popup ref="popup" type="bottom" @change="popupChangeHandler">
            <view class="content">
                <view class="search-condition">
                    <view class="title"><text>出库通知单号: </text></view>
                    <view class="right"><input type="text" v-model="HBillNo" /></view>
                    <view class="title"><text>发货通知单号: </text></view>
                    <view class="right"><input type="text" v-model="HBillNo" @confirm="search" /></view>
                </view>
                <view class="search-condition">
                    <view class="title"><text>客户: </text></view>
                    <view class="right"><input type="text" v-model="HCustomer" /></view>
                    <view class="right"><input type="text" v-model="HCustomer" @confirm="search" /></view>
                </view>
                <view class="search-condition">
                    <view class="title"><text>销售员: </text></view>
                    <view class="right"><input type="text" v-model="HSeller" /></view>
                    <view class="right"><input type="text" v-model="HSeller" @confirm="search" /></view>
                </view>
                <view class="search-condition">
                    <view class="title">
@@ -233,7 +233,7 @@
                }
                if (!CommonUtils.isEmpty(this.HBillNo)) {
                    sWhere += ` and 单据号 like N'%${this.HMaterialID}%'`
                    sWhere += ` and 单据号 like N'%${this.HBillNo}%'`
                }
                if (!CommonUtils.isEmpty(this.HCustomer)) {
                    sWhere += ` and 客户 like N'%${this.HCustomer}%'`
pages/caigouruku/form.vue
@@ -555,7 +555,8 @@
                } else {
                    inputVal = this.hform.HSourceBillNo
                }
                console.log('inputVal: ',inputVal);
                if (inputVal == '') {
                    CommonUtils.playSound(0)
                    this.refreshHSourceBillState()
@@ -1408,7 +1409,8 @@
                        uni.request({
                            url: this.serverUrl + '/WEBSController/set_SavePOStockInBill_Json',
                            method: 'POST',
                            dataType: "json",
                            dataType: "json",
                            timeout: 10000,
                            data: {
                                oMain: sMainStr
                            },
@@ -1416,7 +1418,7 @@
                                console.log(1, res);
                                uni.hideLoading()
                                if (res.data.count == 1) {
                                    let sMain = JSON.stringify(this.materMeta) + ';' + this.hform.HBillType + ';' + this.hform.HBillNo
                                    let sMain = JSON.stringify(this.materMeta) + ';' + this.hform.HBillType + ';' + this.hform.HSourceBillNo
                                    try {
                                        // 为条码设置出库单号和出库次数
                                        await this.Set_BarCodeBill(sMain)
pages/tiaomachaima/tiaomachaima.vue
@@ -4,8 +4,8 @@
            <view class="item">
                <view class="left">条码编号:</view>
                <view class="right">
                    <input name="HBarCode" disabled v-model="barCodeInfoMeta.barCodeNo" placeholder="请扫描设备"
                        @blur="searchbarCodeInfo" />
                    <input name="HBarCode" v-model="barCodeInfoMeta.barCodeNo" placeholder="请扫描条码"
                        @confirm="searchbarCodeInfo" />
                </view>
                <view>
                    <uni-icons type="scan"
pages/tiaomachaima/tiaomachaima2.vue
@@ -1,113 +1,114 @@
<template>
    <view class="container">
        <view class="header">
            <view class="item">
                <view class="left">条码编号:</view>
                <view class="right">
                    <input name="HBarCode"  v-model="barCodeInfoMeta.barCodeNo" placeholder="请扫描条码"
                        @blur="searchbarCodeInfo" />
                </view>
                <view>
                    <uni-icons type="scan"
                        style="background-color: #3A78FF;padding: 6rpx;color: #fff;border-radius: 100%;font-weight: 500;"
                        size="20" @click="toScanCode"></uni-icons>
                </view>
            </view>
            <view class="item">
                <view class="left">拆码数量:</view>
                <view class="right">
                    <input type="number" name="HSplitNum" v-model="barCodeInfoMeta.splitNum" placeholder="请输入拆码数量" />
                </view>
            </view>
            <view class="item">
                <view class="left">制单人:</view>
                <view class="right">
                    <input type="text" disabled name="HMaker" v-model="barCodeInfoMeta.billMaker"
                        placeholder="请输入制单人" />
                </view>
            </view>
            <view class="operation-zone">
                <button class="btn-c" @click="searchbarCodeInfoMeta">拆码</button>
                <button type="default" :class="cantGenerate?'':'btn-c'" @click="SaveBarCodeCreate"
                    :disabled="cantGenerate">生成</button>
                <button type="default" :class="cantPrint?'':'btn-c'" @click="PrintHBarCode" :disabled="cantPrint" >打印</button>
            </view>
        </view>
        <view class="divide"></view>
        <view class="content">
            <view class="barcode-detail" v-show="CommonUtils.isEmpty(Object.assign(barCodeInfo, {})) === false">
                <view class="title">条码信息</view>
                <uni-card>
                    <view class="detail" style="display: none;">
                        <text>条码ID:</text>{{barCodeInfo['HItemID'] || '0'}}
                    </view>
                    <view class="detail">
                        <text>条码编号:</text>{{barCodeInfo['条码编号'] || ''}}
                    </view>
                    <view class="detail">
                        <text>条码原数量:</text>{{barCodeInfo['数量'] || '0'}}
                    </view>
                    <view class="detail">
                        <text>剩余数量:</text>{{barCodeInfo['剩余数量'] || '0'}}
                    </view>
                    <view class="dWetail">
                        <text>物料编码:</text>{{barCodeInfo['物料代码'] || ''}}
                    </view>
                    <view class="detail">
                        <text>物料名称:</text>{{barCodeInfo['物料名称'] || ''}}
                    </view>
                    <view class="detail">
                        <text>规格型号:</text>{{barCodeInfo['规格型号'] || ''}}
                    </view>
                    <view class="detail">
                        <text>计量单位:</text>{{barCodeInfo['计量单位'] || ''}}
                    </view>
                </uni-card>
            </view>
            <view class="divide"></view>
            <view class="barcode-split" v-show="barCodeSplitInfo.length>0">
                <view class="title">条码拆码</view>
                <view class="barcode-split-list" v-for="(item,index) in barCodeSplitInfo" :key="index">
                    <uni-card @tap="ModityHQty(item)">
                        <view class="detail">
                            <text>条码编号:</text>{{item['HBarCode'] || ''}}
                        </view>
                        <view class="detail split-num">
                            <text>拆分数量:</text>{{item['HSplitNum'] || '0'}}
                        </view>
                        <view class="detail">
                            <text>物料代码:</text>{{item['HNumber'] || ''}}
                        </view>
                        <view class="detail">
                            <text>物料名称:</text>{{item['HName'] || ''}}
                        </view>
                        <view class="detail">
                            <text>规格型号:</text>{{item['HModel'] || ''}}
                        </view>
                        <view class="detail">
                            <text>计量单位:</text>{{barCodeInfo['计量单位'] || ''}}
                        </view>
                    </uni-card>
                </view>
            </view>
        </view>
        <view class="over" v-if="barCodeSplitInfo.length == 0">暂无数据</view>
        <view class="over" v-if="barCodeSplitInfo.length != 0">已到底</view>
        <view>
            <!-- 输入框示例 -->
            <uni-popup ref="inputDialog" type="dialog">
                <uni-popup-dialog ref="inputClose" mode="input" title="请输入拆码数量" :value="dialogVal" placeholder="请输入拆码数量"
                    @confirm="dialogInputConfirm"></uni-popup-dialog>
            </uni-popup>
        </view>
        <labelPrinterComponentVue ref="labelPrinter" :printInfo="printInfo" :printMode="'cpcl'">
        </labelPrinterComponentVue>
    </view>
    <view class="container">
        <view class="header">
            <view class="item">
                <view class="left">条码编号:</view>
                <view class="right">
                    <input name="HBarCode" v-model="barCodeInfoMeta.barCodeNo" placeholder="请扫描条码"
                        @blur="searchbarCodeInfo" />
                </view>
                <view>
                    <uni-icons type="scan"
                        style="background-color: #3A78FF;padding: 6rpx;color: #fff;border-radius: 100%;font-weight: 500;"
                        size="20" @click="toScanCode"></uni-icons>
                </view>
            </view>
            <view class="item">
                <view class="left">拆码数量:</view>
                <view class="right">
                    <input type="number" name="HSplitNum" v-model="barCodeInfoMeta.splitNum" placeholder="请输入拆码数量" />
                </view>
            </view>
            <view class="item">
                <view class="left">制单人:</view>
                <view class="right">
                    <input type="text" disabled name="HMaker" v-model="barCodeInfoMeta.billMaker"
                        placeholder="请输入制单人" />
                </view>
            </view>
            <view class="operation-zone">
                <button class="btn-c" @click="searchbarCodeInfoMeta">拆码</button>
                <button type="default" :class="cantGenerate?'':'btn-c'" @click="SaveBarCodeCreate"
                    :disabled="cantGenerate = false">生成</button>
                <button type="default" :class="cantPrint?'':'btn-c'" @click="PrintHBarCode"
                    :disabled="cantPrint = false">打印</button>
            </view>
        </view>
        <view class="divide"></view>
        <view class="content">
            <view class="barcode-detail" v-show="CommonUtils.isEmpty(Object.assign(barCodeInfo, {})) === false">
                <view class="title">条码信息</view>
                <uni-card>
                    <view class="detail" style="display: none;">
                        <text>条码ID:</text>{{barCodeInfo['HItemID'] || '0'}}
                    </view>
                    <view class="detail">
                        <text>条码编号:</text>{{barCodeInfo['条码编号'] || ''}}
                    </view>
                    <view class="detail">
                        <text>条码原数量:</text>{{barCodeInfo['数量'] || '0'}}
                    </view>
                    <view class="detail">
                        <text>剩余数量:</text>{{barCodeInfo['剩余数量'] || '0'}}
                    </view>
                    <view class="dWetail">
                        <text>物料编码:</text>{{barCodeInfo['物料代码'] || ''}}
                    </view>
                    <view class="detail">
                        <text>物料名称:</text>{{barCodeInfo['物料名称'] || ''}}
                    </view>
                    <view class="detail">
                        <text>规格型号:</text>{{barCodeInfo['规格型号'] || ''}}
                    </view>
                    <view class="detail">
                        <text>计量单位:</text>{{barCodeInfo['计量单位'] || ''}}
                    </view>
                </uni-card>
            </view>
            <view class="divide"></view>
            <view class="barcode-split" v-show="barCodeSplitInfo.length>0">
                <view class="title">条码拆码</view>
                <view class="barcode-split-list" v-for="(item,index) in barCodeSplitInfo" :key="index">
                    <uni-card @tap="ModityHQty(item)">
                        <view class="detail">
                            <text>条码编号:</text>{{item['HBarCode'] || ''}}
                        </view>
                        <view class="detail split-num">
                            <text>拆分数量:</text>{{item['HSplitNum'] || '0'}}
                        </view>
                        <view class="detail">
                            <text>物料代码:</text>{{item['HNumber'] || ''}}
                        </view>
                        <view class="detail">
                            <text>物料名称:</text>{{item['HName'] || ''}}
                        </view>
                        <view class="detail">
                            <text>规格型号:</text>{{item['HModel'] || ''}}
                        </view>
                        <view class="detail">
                            <text>计量单位:</text>{{barCodeInfo['计量单位'] || ''}}
                        </view>
                    </uni-card>
                </view>
            </view>
        </view>
        <view class="over" v-if="barCodeSplitInfo.length == 0">暂无数据</view>
        <view class="over" v-if="barCodeSplitInfo.length != 0">已到底</view>
        <view>
            <!-- 输入框示例 -->
            <uni-popup ref="inputDialog" type="dialog">
                <uni-popup-dialog ref="inputClose" mode="input" title="请输入拆码数量" :value="dialogVal" placeholder="请输入拆码数量"
                    @confirm="dialogInputConfirm"></uni-popup-dialog>
            </uni-popup>
        </view>
        <labelPrinterComponentVue ref="labelPrinter" :printInfo="printInfo" :printMode="'cpcl'">
        </labelPrinterComponentVue>
    </view>
</template>
<script>
    import labelPrinterComponentVue from '../../components/labelPrinterComponent/labelPrinterComponent.vue';
    import {
    import labelPrinterComponentVue from '../../components/labelPrinterComponent/labelPrinterComponent.vue';
    import {
        CBar,
        CBox,
        CForm,
@@ -128,370 +129,424 @@
        CStatus,
        CPCL,
    } from "@psdk/cpcl";
    import {
        getUserInfo
    } from "@/utils/auth.js";
    import {
        CommonUtils
    } from "@/utils/common.js"
    export default {
        data() {
            return {
                CommonUtils,
                userInfo: getUserInfo(),
                serverUrl: 'http://192.168.2.227:8082/API',
                barCodeInfoMeta: {
                    barCodeNo: "",
                    splitNum: "",
                    billMaker: getUserInfo().HEmpName,
                    billMakerID: getUserInfo().HEmpID
                },
                barCodeInfo: {
    import {
        getUserInfo
    } from "@/utils/auth.js";
    import {
        CommonUtils
    } from "@/utils/common.js"
    export default {
        data() {
            return {
                CommonUtils,
                userInfo: getUserInfo(),
                serverUrl: 'http://192.168.2.227:8082/API',
                // serverUrl: 'http://47.96.97.237/API/',
                barCodeInfoMeta: {
                    barCodeNo: "",
                    splitNum: "",
                    billMaker: getUserInfo().HEmpName,
                    billMakerID: getUserInfo().HEmpID
                },
                barCodeInfo: {
                },
                barCodeSplitInfo: [],
                dialogVal: 0,
                itemCache: {},
                cantGenerate: true,
                cantPrint:true,
                 printInfo: ""//打印
            };
        },
        components: {
            labelPrinterComponentVue
        },
        methods: {
            doRequest(url, data, resFunction, errFunction, method) {
                uni.showLoading({
                    title: '加载中...'
                })
                uni.request({
                    method: method || "GET",
                    url: this.serverUrl + url,
                    data: data || "",
                    success: (res) => {
                        if (typeof resFunction === 'function') {
                            resFunction.call(this, res)
                        } else if (typeof errFunction === 'undefined') {
                            return
                        } else {
                            throw new TypeError("访问成功回调函数类型异常!")
                        }
                    },
                    fail: (err) => {
                        uni.showToast({
                            icon: "error",
                            title: "接口访问异常!",
                            duration: 2000
                        })
                        if (typeof errFunction === 'function') {
                            errFunction.call(this, err)
                        } else if (typeof errFunction === 'undefined') {
                            return
                        } else {
                            throw new TypeError("访问失败回调函数类型异常!")
                        }
                    }
                })
                uni.hideLoading()
            },
            //摄像头调用
            async searchbarCodeInfo() {
                await this.$nextTick()
                let urlEncode =
                    `/Gy_BarCodeBillList/page?sWhere= and 条码编号=\'\'${this.barCodeInfoMeta.barCodeNo}\'\'&user=${this.userInfo.HEmpName}&page=1&size=1`
                    .toString()
                if (CommonUtils.isEmpty(this.barCodeInfoMeta.barCodeNo) == true) {
                    return uni.showToast({
                        icon: "fail",
                        title: "条码编号不能为空!"
                    })
                }
                this.doRequest(
                    urlEncode,
                    null,
                    function(res) {
                        console.log(res)
                        let res1 = res.data
                        let {data,count} = res1
                        if (count > 0) {
                            this.barCodeInfo = data[0]
                            this.barCodeSplitInfo= []
                        }
                    },
                    function(err) {
                        console.err(err)
                    }
                )
            },
            //拆码按钮调用
            async searchbarCodeInfoMeta() {
                this.cantGenerate = true
                this.cantPrint=true
                if (CommonUtils.isEmpty(this.barCodeInfoMeta.barCodeNo) === true) {
                    return uni.showToast({
                        icon: 'none',
                        title: '条码编号不得为空!'
                    });
                }
                if (CommonUtils.isEmpty(this.barCodeInfoMeta.splitNum, true) === true) {
                    return uni.showToast({
                        icon: 'none',
                        title: '拆分数量不得为空!'
                    });
                }
                if (CommonUtils.isEmpty(this.barCodeInfoMeta.splitNum, true) === true) {
                    return uni.showToast({
                        icon: 'none',
                        title: '拆分数量不得为空!'
                    });
                }
                if (parseFloat(this.barCodeInfoMeta.splitNum) > parseFloat(this.barCodeInfo['数量'])) {
                    return uni.showToast({
                        icon: 'none',
                        title: '拆分数量不能大于条码原数量!'
                    });
                }
                this.doRequest(
                    "/Sc_BarCode/SplitBarCode_Sub", {
                        HBarCodeNo: this.barCodeInfoMeta.barCodeNo
                    },
                    function(res) {
                        console.log(res)
                        this.barCodeSplitInfo = []
                        if (res.data.count > 0) {
                            if (res.data.data.length < 1) {
                                return uni.showToast({
                                    icon: 'none',
                                    title: Message
                                });
                            }
                            //拆分条码:数量为 splitNum
                            let barCodeItem1 = JSON.parse(JSON.stringify(res.data.data.SubBarCodes[0]));
                            barCodeItem1.HSplitNum = this.barCodeInfoMeta.splitNum;
                            barCodeItem1.HBarCode = res.data.data.NextBarCode;
                            this.barCodeSplitInfo.push(barCodeItem1);
                            //更新原先条码数量
                            this.barCodeInfo['剩余数量'] = this.barCodeInfo['数量'] - this.barCodeInfoMeta.splitNum;
                            this.cantGenerate = false;
                        } else {
                            uni.showToast({
                                icon: 'none',
                                title: '没有找到对应的单据'
                            });
                        }
                    },
                    function(err) {
                        console.error(err)
                    }
                )
            },
            //保存方法
            SaveBarCodeCreate() {
                // 校验拆码数量
                let sum = this.barCodeSplitInfo.reduce((acc, obj) => {
                    return acc + obj["HSplitNum"]
                }, 0)
                },
                barCodeSplitInfo: [],
                dialogVal: 0,
                itemCache: {},
                cantGenerate: true,
                cantPrint: true,
                printInfo: "" //打印
            };
        },
        components: {
            labelPrinterComponentVue
        },
        methods: {
            doRequest(url, data, resFunction, errFunction, method) {
                uni.showLoading({
                    title: '加载中...'
                })
                uni.request({
                    method: method || "GET",
                    url: this.serverUrl + url,
                    data: data || "",
                    success: (res) => {
                        if (typeof resFunction === 'function') {
                            resFunction.call(this, res)
                        } else if (typeof errFunction === 'undefined') {
                            return
                        } else {
                            throw new TypeError("访问成功回调函数类型异常!")
                        }
                    },
                    fail: (err) => {
                        uni.showToast({
                            icon: "error",
                            title: "接口访问异常!",
                            duration: 2000
                        })
                        if (typeof errFunction === 'function') {
                            errFunction.call(this, err)
                        } else if (typeof errFunction === 'undefined') {
                            return
                        } else {
                            throw new TypeError("访问失败回调函数类型异常!")
                        }
                    }
                })
                uni.hideLoading()
            },
            //摄像头调用
            async searchbarCodeInfo() {
                await this.$nextTick()
                let urlEncode =
                    `/Gy_BarCodeBillList/page?sWhere= and 条码编号=\'\'${this.barCodeInfoMeta.barCodeNo}\'\'&user=${this.userInfo.HEmpName}&page=1&size=1`
                    .toString()
                if (CommonUtils.isEmpty(this.barCodeInfoMeta.barCodeNo) == true) {
                    return uni.showToast({
                        icon: "fail",
                        title: "条码编号不能为空!"
                    })
                }
                this.doRequest(
                    urlEncode, {},
                    (res) => {
                        console.log(res)
                        let res1 = res.data
                        let {
                            data,
                            count
                        } = res1
                        if (count > 0) {
                            this.barCodeInfo = data[0]
                            this.barCodeSplitInfo = []
                        }
                    },
                    (err) => {
                        console.err(err)
                    }
                )
            },
            dialogInputConfirm(val) {
                this.itemCache["HSplitNum"] = val
                if (sum > this.barCodeInfo["HQty"]) {
                    return uni.showToast({
                        icon: 'none',
                        title: '拆码数量和不得大于条码数量'
                    });
                }
                let msg =
                    `${this.barCodeInfoMeta["barCodeNo"]};${this.barCodeInfoMeta["splitNum"]};${JSON.stringify(this.barCodeSplitInfo)};${this.userInfo["HEmpName"]}`
                this.doRequest(
                    "/Sc_BarCode/SplitBarCode_Save", {
                        msg: msg
                    },
                    function(res) {
                        if (res.data.code == 1) {
                            this.cantGenerate = true
                            this.cantPrint=false
                            uni.showToast({
                                title: '生成成功!'
                            });
                        }else{
                            this.cantGenerate = false
                            uni.showToast({
                                title: res.data.Message
                            });
                        }
                    },
                    function(err) {
                        console.err(err)
                    },
                    "POST"
                )
                // 关闭窗口后,恢复默认内容
                this.$refs.inputDialog.close()
            },
            //打印按钮
            async PrintHBarCode() {
                if (this.$printer.isConnected() === false) {
                    this.$refs.labelPrinter.openPopup()
                }
                else
                {
                let HBarCodeNoStr =`${this.barCodeSplitInfo[0]['HBarCode']}`
                this.printInfo = `! 0 200 200 400 1
                    PAGE-WIDTH 608
                    SETQRVER 3
                    B QR 475 15 Q 0 U 3
                    LA,${HBarCodeNoStr}
                    ENDQR
                    T 24 0 0 30 供应商: ${this.lailiaoInfo.HSupName}
                    T 55 0 0 55 (Supplier)
                    T 24 0 0 75 供应商料号:  ${this.lailiaoInfo.HMaterNumber}
                    T 55 0 0 100 (Supplier Sku No.)
                    T 24 0 0 120 物料名称: ${this.lailiaoInfo.HMaterName}
                    T 55 0 0 145 (Material Code)
                    T 24 0 0 165 款号: ${this.lailiaoInfo.HCoilNO}
                    T 55 0 0 190 (Style No.)
                    T 24 0 300 165 客户编号: ${this.lailiaoInfo.HFactory}
                    T 55 0 300 190 (Consumer No.)
                    T 24 0 0 210 分组: ${this.lailiaoInfo.HFurnaceNO || ''}
                    T 55 0 0 235 (Group)
                    T 24 0 300 210 规格: ${this.lailiaoInfo.HMaterModel}
                    T 55 0 300 235 (SKU NO.)
                    T 24 0 0 255 数量:  ${ parseFloat(this.lailiaoInfo.HQty || 0).toFixed(0) } ${pcsInfo}
                    T 55 0 0 280 (Quantity)
                    T 24 0 300 255 日期: ${this.lailiaoInfo.HDate || ''}
                    T 55 0 300 280 (Date)
                    T 24 0 0 300 检验员:
                    T 55 0 0 325 (QC)
                    T 24 0 300 300 采购单号: ${this.lailiaoInfo.HBillNo || ''}
                    T 55 0 300 325 (Purchase Order No.)
                    T 24 0 0 345 检验结果:
                    T 55 0 0 370 (Inspection status)
                    BOX 240 345 260 365 4
                    T 24 0 270 345 合格
                    T 55 0 250 370 (Pass)
                    BOX 340 345 360 365 4
                    T 24 0 370 345 不合格
                    T 55 0 370 370 (Fail)
                    BOX 460 345 480 365 4
                    T 24 0 490 345 特采
                    T 55 0 440 370 (Spec. accepted)
                    FORM
                    PRINT`
                    await this.$nextTick(() => {
                    this.$refs.labelPrinter.execPrint()
                    })
                }
            },
            toScanCode() {
                var mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module")
                mpaasScanModule.mpaasScan({
                    'hideAlbum': true,
                    'timeoutInterval':'10', //超时时间
                    'timeoutText':'未识别到二维码' //超时提醒
                },(ret) => {
                    console.log(ret.resp_result)
                    if (this.CommonUtils.isEmpty(ret.resp_result) === false) {
                        console.log('条码内容:' + ret.resp_result);
                        this.barCodeInfoMeta.barCodeNo = ret.resp_result
                        this.searchbarCodeInfo()
                    }
                })
            }
        },
        onLoad() {
        }
    }
            },
            //拆码按钮调用
            async searchbarCodeInfoMeta() {
                this.cantGenerate = true
                this.cantPrint = true
                if (CommonUtils.isEmpty(this.barCodeInfoMeta.barCodeNo) === true) {
                    return uni.showToast({
                        icon: 'none',
                        title: '条码编号不得为空!'
                    });
                }
                if (CommonUtils.isEmpty(this.barCodeInfoMeta.splitNum, true) === true) {
                    return uni.showToast({
                        icon: 'none',
                        title: '拆分数量不得为空!'
                    });
                }
                if (CommonUtils.isEmpty(this.barCodeInfoMeta.splitNum, true) === true) {
                    return uni.showToast({
                        icon: 'none',
                        title: '拆分数量不得为空!'
                    });
                }
                if (parseFloat(this.barCodeInfoMeta.splitNum) > parseFloat(this.barCodeInfo['数量'])) {
                    return uni.showToast({
                        icon: 'none',
                        title: '拆分数量不能大于条码原数量!'
                    });
                }
                uni.request({
                    url: this.serverUrl + '/Sc_BarCode/SplitBarCode_Sub',
                    data: {
                        HBarCodeNo: this.barCodeInfoMeta.barCodeNo,
                    },
                    success: (res) => {
                        this.barCodeSplitInfo = []
                        if (res.data.count > 0) {
                            if (res.data.data.length < 1) {
                                return uni.showToast({
                                    icon: 'none',
                                    title: Message
                                });
                            }
                            //拆分条码:数量为 splitNum
                            // let barCodeItem1 = JSON.parse(JSON.stringify(res.data.data.SubBarCodes[0]));
                            let HSplitNum = this.barCodeInfoMeta.splitNum;
                            let HBarCode = res.data.data.NextBarCode;
                            console.log('HBarCode: ',HBarCode);
                            this.barCodeSplitInfo.push({
                                HSplitNum: this.barCodeInfoMeta.splitNum,
                                HBarCode: res.data.data.NextBarCode
                            });
                            //更新原先条码数量
                            this.barCodeInfo['剩余数量'] = this.barCodeInfo['数量'] - this.barCodeInfoMeta.splitNum;
                            this.cantGenerate = false;
                        } else {
                            uni.showToast({
                                icon: 'none',
                                title: '没有找到对应的单据'
                            });
                        }
                    },
                    fail: (err) => {
                        console.error(err)
                    }
                })
                // this.doRequest(
                //     "/Sc_BarCode/SplitBarCode_Sub",
                //     {
                //         HBarCodeNo: this.barCodeInfoMeta.barCodeNo,
                //     },
                //     (res) => {
                //         this.barCodeSplitInfo = []
                //         if (res.data.count > 0) {
                //             if (res.data.data.length < 1) {
                //                 return uni.showToast({
                //                     icon: 'none',
                //                     title: Message
                //                 });
                //             }
                //             //拆分条码:数量为 splitNum
                //             let barCodeItem1 = JSON.parse(JSON.stringify(res.data.data.SubBarCodes[0]));
                //             HSplitNum = this.barCodeInfoMeta.splitNum;
                //             HBarCode = res.data.NextBarCode;
                //             this.barCodeSplitInfo.push({
                //                 HSplitNum: this.barCodeInfoMeta.splitNum,
                //                 HBarCode: res.data.NextBarCode
                //             });
                //             //更新原先条码数量
                //             this.barCodeInfo['剩余数量'] = this.barCodeInfo['数量'] - this.barCodeInfoMeta.splitNum;
                //             this.cantGenerate = false;
                //         } else {
                //             uni.showToast({
                //                 icon: 'none',
                //                 title: '没有找到对应的单据'
                //             });
                //         }
                //     },
                //     (err) => {
                //         console.error(err)
                //     }
                // )
            },
            //保存方法
            SaveBarCodeCreate() {
                // 校验拆码数量
                let sum = this.barCodeSplitInfo.reduce((acc, obj) => {
                    return acc + obj["HSplitNum"]
                }, 0)
                if (sum > this.barCodeInfo["HQty"]) {
                    return uni.showToast({
                        icon: 'none',
                        title: '拆码数量和不得大于条码数量'
                    });
                }
                let msg =
                    `${this.barCodeInfoMeta["barCodeNo"]};${this.barCodeInfoMeta["splitNum"]};${JSON.stringify(this.barCodeSplitInfo)};${this.userInfo["HEmpName"]}`
                this.doRequest(
                    "/Sc_BarCode/SplitBarCode_Save", {
                        msg: msg
                    },
                    (res) => {
                        if (res.data.code == 1) {
                            this.cantGenerate = true
                            this.cantPrint = false
                            uni.showToast({
                                title: '生成成功!'
                            });
                        } else {
                            this.cantGenerate = false
                            uni.showToast({
                                title: res.data.Message
                            });
                        }
                    },
                    (err) => {
                        console.err(err)
                    },
                    "POST"
                )
            },
            //打印按钮
            async PrintHBarCode() {
                if (this.$printer.isConnected() === false) {
                    this.$refs.labelPrinter.openPopup()
                } else {
                    let HBarCodeNoStr = `${this.barCodeSplitInfo[0]['HBarCode']}`
                    this.printInfo = `! 0 200 200 400 1
    PAGE-WIDTH 608
    SETQRVER 3
    B QR 475 15 Q 0 U 3
    LA,${HBarCodeNoStr}
    ENDQR
    T 24 0 0 30 供应商:
    T 55 0 0 55 (Supplier)
    T 24 0 0 75 供应商料号:
    T 55 0 0 100 (Supplier Sku No.)
    T 24 0 0 120 物料名称:
    T 55 0 0 145 (Material Code)
    T 24 0 0 165 款号:
    T 55 0 0 190 (Style No.)
    T 24 0 300 165 客户编号:
    T 55 0 300 190 (Consumer No.)
    T 24 0 0 210 分组:
    T 55 0 0 235 (Group)
    T 24 0 300 210 规格:
    T 55 0 300 235 (SKU NO.)
    T 24 0 0 255 数量:
    T 55 0 0 280 (Quantity)
    T 24 0 300 255 日期:
    T 55 0 300 280 (Date)
    T 24 0 0 300 检验员:
    T 55 0 0 325 (QC)
    T 24 0 300 300 采购单号:
    T 55 0 300 325 (Purchase Order No.)
    T 24 0 0 345 检验结果:
    T 55 0 0 370 (Inspection status)
    BOX 240 345 260 365 4
    T 24 0 270 345 合格
    T 55 0 250 370 (Pass)
    BOX 340 345 360 365 4
    T 24 0 370 345 不合格
    T 55 0 370 370 (Fail)
    BOX 460 345 480 365 4
    T 24 0 490 345 特采
    T 55 0 440 370 (Spec. accepted)
    FORM
    PRINT`
                console.log('printInfo: ',this.printInfo);
                    await this.$nextTick(() => {
                        this.$refs.labelPrinter.execPrint()
                    })
                }
            },
            toScanCode() {
                var mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module")
                mpaasScanModule.mpaasScan({
                    'hideAlbum': true,
                    'timeoutInterval': '10', //超时时间
                    'timeoutText': '未识别到二维码' //超时提醒
                }, (ret) => {
                    console.log(ret.resp_result)
                    if (this.CommonUtils.isEmpty(ret.resp_result) === false) {
                        console.log('条码内容:' + ret.resp_result);
                        this.barCodeInfoMeta.barCodeNo = ret.resp_result
                        this.searchbarCodeInfo()
                    }
                })
            }
        },
        onLoad() {}
    }
</script>
<style lang="scss">
    * {
        box-sizing: border-box;
    }
    * {
        box-sizing: border-box;
    }
    input {
        padding: 8rpx 20rpx;
        font-size: 30rpx;
        line-height: 30rpx;
    }
    button {
        padding: 0;
        width: 150rpx;
        font-size: 25rpx;
    }
    input {
        padding: 8rpx 20rpx;
        font-size: 30rpx;
        line-height: 30rpx;
    }
    .uni-card {
        margin: 0 !important;
    }
    button {
        padding: 0;
        width: 150rpx;
        font-size: 25rpx;
    }
    .container {
        .header {
            padding: 20rpx 10rpx;
            display: flex;
            flex-direction: column;
            gap: 20rpx;
    .uni-card {
        margin: 0 !important;
    }
            .item {
                display: flex;
                flex-direction: row;
                padding: 0 10rpx;
                gap: 20rpx;
                font-size: 30rpx;
                // height: 1.5rem;
                // justify-content: center;
                align-items: center;
    .container {
        .header {
            padding: 20rpx 10rpx;
            display: flex;
            flex-direction: column;
            gap: 20rpx;
                .left {
                    text-align: right;
                    width: 5rem;
                }
            .item {
                display: flex;
                flex-direction: row;
                padding: 0 10rpx;
                gap: 20rpx;
                font-size: 30rpx;
                // height: 1.5rem;
                // justify-content: center;
                align-items: center;
                .right {
                    flex: 1;
                    height: 100%;
                    padding: 6rpx 0;
                    border-radius: 22rpx;
                    border: 1px solid #e4e4e4;
                    background-color: #e4e4e4;
                .left {
                    text-align: right;
                    width: 5rem;
                }
                    >input {
                        height: auto;
                    }
                }
            }
                .right {
                    flex: 1;
                    height: 100%;
                    padding: 6rpx 0;
                    border-radius: 22rpx;
                    border: 1px solid #e4e4e4;
                    background-color: #e4e4e4;
            .operation-zone {
                display: flex;
                flex-direction: row;
                justify-content: space-evenly;
                    >input {
                        height: auto;
                    }
                }
            }
                .btn-c {
                    background-color: #3a78ff;
                    color: #fff;
                }
            }
        }
            .operation-zone {
                display: flex;
                flex-direction: row;
                justify-content: space-evenly;
        .divide {
            width: 100%;
            height: 16rpx;
            background-color: #e5e5e5;
        }
                .btn-c {
                    background-color: #3a78ff;
                    color: #fff;
                }
            }
        }
        .content {
            flex: 1;
        .divide {
            width: 100%;
            height: 16rpx;
            background-color: #e5e5e5;
        }
            .barcode-detail,
            .barcode-split {
                padding: 30rpx;
                display: flex;
                flex-direction: column;
                gap: 30rpx;
            }
        }
    }
        .content {
            flex: 1;
            .barcode-detail,
            .barcode-split {
                padding: 30rpx;
                display: flex;
                flex-direction: column;
                gap: 30rpx;
            }
        }
    }
</style>
pages/xiaoshouchuku/form.vue
@@ -518,9 +518,9 @@
                if (this.$refs.uniComboxSourceBill) {
                    inputVal = this.$refs.uniComboxSourceBill.inputVal || this.hform.HBillNo
                } else {
                    inputVal = this.hform.HBillNo
                    inputVal = this.hform.HSourceBillNo
                }
                if (inputVal == '') {
                    CommonUtils.playSound(0)
                    return uni.showToast({
@@ -1443,7 +1443,7 @@
                                uni.hideLoading()
                                if (res.data.count == 1) {
                                    let sMain = JSON.stringify(this.materMeta) + ';' + this.hform
                                        .HBillType + ';' + this.hform.HBillNo
                                        .HBillType + ';' + this.hform.HSourceBillNo
                                    try {
                                        await this.Set_BarCodeBill(sMain)
                                        uni.showModal({