schangxiang@126.com
2024-11-29 ac795c61f3d0b21626cc3487743c39286950fea1
Merge branch 'master' of http://222.71.245.114:9086/r/LA24030-LuLI_PackageLine
已添加2个文件
已修改9个文件
991 ■■■■ 文件已修改
LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsStockQuan.ts 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/api/main/WmsOrder/wmsOrderPurchase.ts 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/kittingList/component/openAllprop.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/manualFeed/index.vue 244 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/manualFeedKitting/index.vue 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/component/openAllprop.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/index.vue 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/scanCodeKitting/component/editDialog.vue 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/scanCodeKitting/index.vue 315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsOperationTaskService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsStockQuan.ts
@@ -17,6 +17,12 @@
  //PageStockQuanForXjd= '/api/WmsOrderMovement/GetKcMaterialGroup',
  PageStockQuanForXjd= '/api/v_wms_stock_quan_group/Page',
  PageWmsLocationViewDetail = '/api/WmsPlaceContainerInfo/Detail',
  ValdateQiTao = '/api/WmsOperationTask/ValdateQiTao',
  ValdateLabel = '/api/WmsOperationTask/ValdateLabel',
}
// å¢žåŠ å®žæ—¶åº“å­˜
@@ -151,3 +157,24 @@
        method: 'get',
        data: params
    });
    ///判断齐套
export const ValdateQiTao = (params?: any) =>
    request({
            url: Api.ValdateQiTao,
            method: 'post',
            data: params
        });
export const ValdateLabel = (params?: any) =>
    request({
            url: Api.ValdateLabel,
            method: 'post',
            data: params
        });
LA24030_LuLiPackageLine_Web/src/api/main/WmsOrder/wmsOrderPurchase.ts
@@ -1,6 +1,9 @@
import request from '/@/utils/request';
enum Api {
  AddWmsOrderPurchase = '/api/wmsOrderPurchase/add',
  ForceOutbound = '/api/WmsOperationTask/ForceOutbound',
  DeleteWmsOrderPurchase = '/api/wmsOrderPurchase/delete',
  UpdateWmsOrderPurchase = '/api/wmsOrderPurchase/update',
  KittingList = '/api/WmsStockQuan/KittingList', ///api/wmsOrderPurchase/page
@@ -107,3 +110,13 @@
        data: params,
        responseType: 'blob'
    });
    export const ForceOutbound = (params?: any) =>
        request({
            url: Api.ForceOutbound,
            method: 'post',
            data: params,
        });
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/kittingList/component/openAllprop.vue
@@ -281,9 +281,7 @@
                                <el-form-item label-width="20px">
                                    <el-button type="primary" icon="el-icon-search" @click="getDetail">查询</el-button>
                                    <!-- <el-button type="primary" icon="ele-Printer" @click="getPrint">打印</el-button> -->
                                    <el-button type="primary" style="margin-left: 5px" icon="ele-Printer" @click="handleHtmlPrint"> æ‰“印 </el-button>
                                    <!-- <el-button type="primary" style="margin-left: 5px" icon="ele-Printer" @click="handleHtmlPrint"> æ‰“印 </el-button> -->
                                </el-form-item>
                            </el-col>
                        </el-row>
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/manualFeed/index.vue
@@ -11,7 +11,6 @@
                                ref="materialCodeInput"
                                clearable=""
                                placeholder="请扫部件条码"
                                @input="handleChange"
                                @keyup.enter.prevent="handleEnter"
                                @confirm.enter.prevent="handleEnter"
                            />
@@ -33,7 +32,29 @@
                </el-row>
            </el-form>
            <br />
            <div class="detailBox">
            <div class="detailBox" style="height: calc(65vh)">
                <div class="titleTip">
                    <div class="" v-show="isSuccess == '成功'">
                        <svg t="1732788314050" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11359" width="100" height="100">
                            <path
                                d="M874.119618 149.859922A510.816461 510.816461 0 0 0 511.997 0.00208a509.910462 509.910462 0 0 0-362.119618 149.857842c-199.817789 199.679789-199.817789 524.581447 0 724.260236a509.969462 509.969462 0 0 0 362.119618 149.857842A508.872463 508.872463 0 0 0 874.119618 874.120158c199.836789-199.679789 199.836789-524.581447 0-724.260236zM814.94268 378.210681L470.999043 744.132295a15.359984 15.359984 0 0 1-5.887994 4.095996c-1.751998 1.180999-2.913997 2.362998-5.276994 2.913997a34.499964 34.499964 0 0 1-13.469986 2.914997 45.547952 45.547952 0 0 1-12.897986-2.303998l-4.095996-2.363997a45.291952 45.291952 0 0 1-7.009992-4.095996l-196.902793-193.789796a34.126964 34.126964 0 0 1-10.555989-25.186973c0-9.37399 3.583996-18.74698 9.98399-25.186974a36.429962 36.429962 0 0 1 50.372947 0l169.98382 167.423824L763.389735 330.220732a37.059961 37.059961 0 0 1 50.371947-1.732998 33.647965 33.647965 0 0 1 11.165988 25.186973 35.544963 35.544963 0 0 1-9.98399 24.575974v-0.04z m0 0"
                                fill="#52C41A"
                                p-id="11360"
                            ></path>
                        </svg>
                        <p class="okText">获取标签信息成功!</p>
                    </div>
                    <div class="" v-show="isSuccess && isSuccess != '成功'">
                        <svg t="1732842594517" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4303" width="100" height="100">
                            <path
                                d="M549.044706 512l166.189176-166.249412a26.383059 26.383059 0 0 0 0-36.98447 26.383059 26.383059 0 0 0-37.044706 0L512 475.015529l-166.249412-166.249411a26.383059 26.383059 0 0 0-36.98447 0 26.383059 26.383059 0 0 0 0 37.044706L475.015529 512l-166.249411 166.249412a26.383059 26.383059 0 0 0 0 36.98447 26.383059 26.383059 0 0 0 37.044706 0L512 548.984471l166.249412 166.249411a26.383059 26.383059 0 0 0 36.98447 0 26.383059 26.383059 0 0 0 0-37.044706L548.984471 512zM512 1024a512 512 0 1 1 0-1024 512 512 0 0 1 0 1024z"
                                fill="#E84335"
                                p-id="4304"
                            ></path>
                        </svg>
                        <p class="okText">{{ isSuccess }}</p>
                    </div>
                </div>
                <ul>
                    <!-- <li>
                        <span class="text_left">是否齐包:</span>
@@ -62,11 +83,51 @@
                        <span class="text_left">订单号:</span>
                        <span class="text_rt">{{ tableData.orderId }}</span>
                    </li>
                    <br />    <br />    <br />    <br />    <br />    <br />
                        <br />    <br />    <br />    <br />    <br />
                    <br />    <br />    <br />    <br />    <br />    <br />
                    <li>
                        <span class="text_left">纸箱长:</span>
                        <span class="text_rt">{{ tableData.info1 }}</span>
                    </li>
                    <li>
                        <span class="text_left">纸箱宽:</span>
                        <span class="text_rt">{{ tableData.info2 }}</span>
                    </li>
                    <li>
                        <span class="text_left">info3:</span>
                        <span class="text_rt">{{ tableData.info3 }}</span>
                    </li>
                    <li>
                        <span class="text_left">销售合同单号:</span>
                        <span class="text_rt">{{ tableData.info4 }}</span>
                    </li>
                    <li>
                        <span class="text_left">第几包:</span>
                        <span class="text_rt">{{ tableData.info6 }}</span>
                    </li>
                    <li>
                        <span class="text_left">经销店名称:</span>
                        <span class="text_rt">{{ tableData.info7 }}</span>
                    </li>
                    <li>
                        <span class="text_left">产品名称:</span>
                        <span class="text_rt">{{ tableData.info8 }}</span>
                    </li>
                    <li>
                        <span class="text_left">客户名称:</span>
                        <span class="text_rt">{{ tableData.info10 }}</span>
                    </li>
                    <li>
                        <span class="text_left">自提或发货:</span>
                        <span class="text_rt">{{ tableData.info11 }}</span>
                    </li>
                    <li>
                        <span class="text_left">包装部件总数量:</span>
                        <span class="text_rt">{{ tableData.info12 }}</span>
                    </li>
                    <li>
                        <span class="text_left">包装面积:</span>
                        <span class="text_rt">{{ tableData.info13 }}</span>
                    </li>
                    <!-- <li>
                        <span class="text_left">客户名称:</span>
                        <span class="text_rt">{{ tableData.Info10 }}</span>
@@ -128,22 +189,16 @@
</template>
<script lang="ts" setup="" name="wmsSubstituteGood">
import { onMounted, ref } from 'vue';
import { onBeforeUnmount, onMounted, ref } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus';
import { auth } from '/@/utils/authFunction';
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
import { formatDate } from '/@/utils/formatTime';
import { listMes_BatchOrderUPI_New, deleteMes_BatchOrderUPI_New, importExcelMes_BatchOrderUPI_New, downloadExcelTemplateMes_BatchOrderUPI_New } from '/@/api/main/WmsOrder/mes_BatchOrderUPI_New';
import printDialog from '/@/views/system/print/component/hiprint/preview.vue';
import editDialog from '/@/views/main/WmsBase/wmsSubstituteGood/component/editDialog.vue';
import { pageWmsSubstituteGood, deleteWmsSubstituteGood } from '/@/api/main/WmsBase/wmsSubstituteGood';
import { ShortageList } from '/@/api/main/ReportCenter/wmsStockQuan';
const showAdvanceQueryUI = ref(false);
const printDialogRef = ref();
const editDialogRef = ref();
const loading = ref(false);
const tableData = ref<any>([]);
const tableData = ref<any>({});
const queryParams = ref<any>({
    upi: '',
});
@@ -152,129 +207,68 @@
    pageSize: 10,
    total: 0,
});
const getIsDisabledData = [
    {
        value: true,
        text: '是',
    },
    {
        value: false,
        text: '否',
    },
];
const printWmsSubstituteGoodTitle = ref('');
const editWmsSubstituteGoodTitle = ref('');
// æ”¹å˜é«˜çº§æŸ¥è¯¢çš„æŽ§ä»¶æ˜¾ç¤ºçŠ¶æ€
const changeAdvanceQueryUI = () => {
    showAdvanceQueryUI.value = !showAdvanceQueryUI.value;
//=======================鼠标定位 ç”¨äºŽå¼•用输入框=====================
let materialCodeInput = ref(null);
let inactivityTimer = null;
// å¤„理用户活动的函数
const handleUserActivity = () => {
    if (inactivityTimer) {
        clearTimeout(inactivityTimer);
    }
    inactivityTimer = setTimeout(() => {
        // æ¸…空输入框的值
        materialCodeInput.value.$el.querySelector('input').value = '';
        materialCodeInput.value.$el.querySelector('input').focus();
    }, 2000); // è®¾å®š2秒未操作则自动聚焦
};
// ç”¨äºŽå¼•用输入框
const materialCodeInput = ref(null);
onMounted(() => {
    // åœ¨ç»„件挂载后进行聚焦
    materialCodeInput.value.$el.querySelector('input').focus();
    document.addEventListener('mousemove', handleUserActivity);
    document.addEventListener('keydown', handleUserActivity);
});
onBeforeUnmount(() => {
    clearTimeout(inactivityTimer);
    document.removeEventListener('mousemove', handleUserActivity);
    document.removeEventListener('keydown', handleUserActivity);
});
//=======================end鼠标定位 ç”¨äºŽå¼•用输入框=====================
const isSuccess = ref('');
// æŸ¥è¯¢æ“ä½œ 888888888
const handleQuery = async () => {
    console.log('8888888进入方法', queryParams.value);
    if (!queryParams.value.upi) {
        return;
    }
    console.log('查询');
    loading.value = true;
    var res = await ShortageList(Object.assign(queryParams.value, tableParams.value));
    if (res.data.result.length != 1) {
        ElMessage.warning('此条码不存在或不在缺料清单中!');
        tableData.value = [];
    queryParams.value.upi = '';
    handleResponse(res);
};
function handleResponse(res: any) {
    tableData.value = res.data.result ?? {};
    materialCodeInput.value.$el.querySelector('input').value = '';
    materialCodeInput.value.$el.querySelector('input').focus();
    if (res.data.code == 200) {
        isSuccess.value = res.data.result ? '成功' : res.data.message || '未查询到数据';
    } else if (res.data.code == 400) {
        loading.value = false;
        isSuccess.value = res.data.message || '未查询到数据';
        return;
    } else {
        loading.value = false;
        isSuccess.value = '';
        ElMessage.warning('网络异常 è¯·æ±‚失败');
        return;
    }
    tableData.value = res.data.result[0] ?? [];
    loading.value = false;
};
// åˆ—排序
const sortChange = async (column: any) => {
    queryParams.value.field = column.prop;
    queryParams.value.order = column.order;
    await handleQuery();
};
// æ‰“开新增页面
const openAddWmsSubstituteGood = () => {
    editWmsSubstituteGoodTitle.value = '添加替代品管理';
    editDialogRef.value.openDialog({});
};
// æ‰“开打印页面
const openPrintWmsSubstituteGood = async (row: any) => {
    printWmsSubstituteGoodTitle.value = '打印替代品管理';
};
// æ‰“开编辑页面
const openEditWmsSubstituteGood = (row: any) => {
    editWmsSubstituteGoodTitle.value = '编辑替代品管理';
    editDialogRef.value.openDialog(row);
};
// åˆ é™¤
const delWmsSubstituteGood = (row: any) => {
    ElMessageBox.confirm(`确定要删除吗?`, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
    })
        .then(async () => {
            var ret = await deleteWmsSubstituteGood(row);
            if (ret.data.type == 'success') {
                handleQuery();
                ElMessage.success('删除成功');
            }
        })
        .catch(() => {});
};
// æ”¹å˜é¡µé¢å®¹é‡
const handleSizeChange = (val: number) => {
    tableParams.value.pageSize = val;
    handleQuery();
};
// æ”¹å˜é¡µç åºå·
const handleCurrentChange = (val: number) => {
    tableParams.value.page = val;
    handleQuery();
};
// handleQuery();
const rules = {
    // è¿™é‡Œå®šä¹‰è¡¨å•验证规则
    completeSet: [{ required: true, message: '请选择齐套', trigger: 'change' }],
    packageSetup: [{ required: true, message: '请输入齐包设置', trigger: 'blur' }],
    ngPackage: [{ required: true, message: '请输入ng包', trigger: 'blur' }],
};
const ruleForm = ref({
    id: '',
    completeSet: '',
    packageSetup: '',
    ngPackage: '',
});
const sourceEnum: any = ref([
    {
        value: 'id',
        text: 'ID',
    },
]);
const handleChange = (event: Event) => {
    console.log('77777777777');
    handleQuery();
};
const handleEnter = (event: Event) => {
    event.preventDefault(); // é˜»æ­¢é»˜è®¤äº‹ä»¶
@@ -301,7 +295,8 @@
            line-height: 30px;
            text-align: left;
            list-style-type: none;
            width: 25%;
            width: 48%;
            display: inline-block;
            word-wrap: break-word;
        }
    }
@@ -309,4 +304,15 @@
.text_left {
    font-weight: 700;
}
.my-icon {
    font-size: 36px; /* è°ƒæ•´å­—体大小 */
    color: #00ff11; /* è®¾ç½®å›¾æ ‡é¢œè‰² */
}
.titleTip {
    text-align: center;
    font-size: 36px; /* è°ƒæ•´å­—体大小 */
    .okText {
        margin-bottom: 20px;
    }
}
</style>
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/manualFeedKitting/index.vue
@@ -4,13 +4,13 @@
            <el-form :model="queryParams" @submit.native.prevent ref="queryForm" labelWidth="100">
                <el-row>
                    <el-col :xs="24" :sm="12" :md="12" :lg="10" :xl="4" class="mb10">
                        <el-form-item label="部件条码" size="large">
                        <el-form-item label="包装号" size="large">
                            <el-input
                                size="large"
                                v-model="queryParams.upi"
                                v-model="queryParams.packageCode"
                                ref="materialCodeInput"
                                clearable=""
                                placeholder="请扫部件条码"
                                placeholder="请扫包装号"
                                @input="handleChange"
                                @keyup.enter.prevent="handleEnter"
                                @confirm.enter.prevent="handleEnter"
@@ -33,17 +33,30 @@
                </el-row>
            </el-form>
            <br />
            <div class="detailBox">
            <div class="detailBox" style="height: calc(65vh)">
                <div class="titleTip">
                    <div class="" v-show="isSuccess == '成功'">
                        <svg t="1732788314050" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11359" width="100" height="100">
                            <path
                                d="M874.119618 149.859922A510.816461 510.816461 0 0 0 511.997 0.00208a509.910462 509.910462 0 0 0-362.119618 149.857842c-199.817789 199.679789-199.817789 524.581447 0 724.260236a509.969462 509.969462 0 0 0 362.119618 149.857842A508.872463 508.872463 0 0 0 874.119618 874.120158c199.836789-199.679789 199.836789-524.581447 0-724.260236zM814.94268 378.210681L470.999043 744.132295a15.359984 15.359984 0 0 1-5.887994 4.095996c-1.751998 1.180999-2.913997 2.362998-5.276994 2.913997a34.499964 34.499964 0 0 1-13.469986 2.914997 45.547952 45.547952 0 0 1-12.897986-2.303998l-4.095996-2.363997a45.291952 45.291952 0 0 1-7.009992-4.095996l-196.902793-193.789796a34.126964 34.126964 0 0 1-10.555989-25.186973c0-9.37399 3.583996-18.74698 9.98399-25.186974a36.429962 36.429962 0 0 1 50.372947 0l169.98382 167.423824L763.389735 330.220732a37.059961 37.059961 0 0 1 50.371947-1.732998 33.647965 33.647965 0 0 1 11.165988 25.186973 35.544963 35.544963 0 0 1-9.98399 24.575974v-0.04z m0 0"
                                fill="#52C41A"
                                p-id="11360"
                            ></path>
                        </svg>
                        <p class="okText">获取标签信息成功!</p>
                    </div>
                    <div class="" v-show="isSuccess && isSuccess != '成功'">
                        <svg t="1732842594517" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4303" width="100" height="100">
                            <path
                                d="M549.044706 512l166.189176-166.249412a26.383059 26.383059 0 0 0 0-36.98447 26.383059 26.383059 0 0 0-37.044706 0L512 475.015529l-166.249412-166.249411a26.383059 26.383059 0 0 0-36.98447 0 26.383059 26.383059 0 0 0 0 37.044706L475.015529 512l-166.249411 166.249412a26.383059 26.383059 0 0 0 0 36.98447 26.383059 26.383059 0 0 0 37.044706 0L512 548.984471l166.249412 166.249411a26.383059 26.383059 0 0 0 36.98447 0 26.383059 26.383059 0 0 0 0-37.044706L548.984471 512zM512 1024a512 512 0 1 1 0-1024 512 512 0 0 1 0 1024z"
                                fill="#E84335"
                                p-id="4304"
                            ></path>
                        </svg>
                        <p class="okText">{{ isSuccess }}</p>
                    </div>
                </div>
                <ul>
                    <!-- <li>
                        <span class="text_left">是否齐包:</span>
                        <span class="text_rt"></span>
                    </li>
                    <li>
                        <span class="text_left">是否齐套:</span>
                        <span class="text_rt"></span>
                    </li> -->
                    <li>
                        <span class="text_left">部件条码:</span>
                        <span class="text_rt">{{ tableData.upi }}</span>
@@ -62,40 +75,52 @@
                        <span class="text_left">订单号:</span>
                        <span class="text_rt">{{ tableData.orderId }}</span>
                    </li>
                    <br />    <br />    <br />    <br />    <br />    <br />
                        <br />    <br />    <br />    <br />    <br />
                    <br />    <br />    <br />    <br />    <br />    <br />
                    <li>
                        <span class="text_left">纸箱长:</span>
                        <span class="text_rt">{{ tableData.info1 }}</span>
                    </li>
                    <li>
                        <span class="text_left">纸箱宽:</span>
                        <span class="text_rt">{{ tableData.info2 }}</span>
                    </li>
                    <li>
                        <span class="text_left">纸箱高:</span>
                        <span class="text_rt">{{ tableData.info3 }}</span>
                    </li>
                    <!-- <li>
                    <li>
                        <span class="text_left">销售合同单号:</span>
                        <span class="text_rt">{{ tableData.info4 }}</span>
                    </li>
                    <li>
                        <span class="text_left">第几包:</span>
                        <span class="text_rt">{{ tableData.info6 }}</span>
                    </li>
                    <li>
                        <span class="text_left">经销店名称:</span>
                        <span class="text_rt">{{ tableData.info7 }}</span>
                    </li>
                    <li>
                        <span class="text_left">产品名称:</span>
                        <span class="text_rt">{{ tableData.info8 }}</span>
                    </li>
                    <li>
                        <span class="text_left">客户名称:</span>
                        <span class="text_rt">{{ tableData.Info10 }}</span>
                    </li> -->
                        <span class="text_rt">{{ tableData.info10 }}</span>
                    </li>
                    <li>
                        <span class="text_left">自提或发货:</span>
                        <span class="text_rt">{{ tableData.info11 }}</span>
                    </li>
                    <li>
                        <span class="text_left">包装部件总数量:</span>
                        <span class="text_rt">{{ tableData.info12 }}</span>
                    </li>
                    <li>
                        <span class="text_left">包装面积:</span>
                        <span class="text_rt">{{ tableData.info13 }}</span>
                    </li>
                    <!-- <li>
                        <span class="text_left">长:</span>
                        <span class="text_rt">{{ tableData.length }}</span>
                    </li>
                    <li>
                        <span class="text_left">宽:</span>
                        <span class="text_rt">{{ tableData.width }}</span>
                    </li>
                    <li>
                        <span class="text_left">厚:</span>
                        <span class="text_rt">{{ tableData.thk }}</span>
                    </li>
                    <li>
                        <span class="text_left">部件纹理:</span>
                        <span class="text_rt">{{ tableData.matgrid }}</span>
                    </li>
                    <li>
                        <span class="text_left">是否封边:</span>
                        <span class="text_rt">{{ tableData.isEB }}</span>
                    </li>
                    <li>
                        <span class="text_left">打孔设备编号:</span>
                        <span class="text_rt">{{ tableData.dRNum }}</span>
                    </li> -->
                </ul>
            </div>
            <!-- ç”Ÿæˆform é½å¥— é½åŒ… è®¾ç½®ng包 -->
@@ -128,7 +153,7 @@
</template>
<script lang="ts" setup="" name="wmsSubstituteGood">
import { onMounted, ref } from 'vue';
import { onBeforeUnmount, onMounted, ref } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus';
import { auth } from '/@/utils/authFunction';
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
@@ -137,7 +162,7 @@
import printDialog from '/@/views/system/print/component/hiprint/preview.vue';
import editDialog from '/@/views/main/WmsBase/wmsSubstituteGood/component/editDialog.vue';
import { pageWmsSubstituteGood, deleteWmsSubstituteGood } from '/@/api/main/WmsBase/wmsSubstituteGood';
import { ShortageList } from '/@/api/main/ReportCenter/wmsStockQuan';
import { ShortageList, ValdateQiTao } from '/@/api/main/ReportCenter/wmsStockQuan';
const showAdvanceQueryUI = ref(false);
const printDialogRef = ref();
@@ -145,7 +170,7 @@
const loading = ref(false);
const tableData = ref<any>([]);
const queryParams = ref<any>({
    upi: '',
    packageCode: '',
});
const tableParams = ref({
    page: 1,
@@ -169,31 +194,68 @@
const changeAdvanceQueryUI = () => {
    showAdvanceQueryUI.value = !showAdvanceQueryUI.value;
};
// ç”¨äºŽå¼•用输入框
const materialCodeInput = ref(null);
//=======================鼠标定位 ç”¨äºŽå¼•用输入框=====================
let materialCodeInput = ref(null);
let inactivityTimer = null;
// å¤„理用户活动的函数
const handleUserActivity = () => {
    if (inactivityTimer) {
        clearTimeout(inactivityTimer);
    }
    inactivityTimer = setTimeout(() => {
        // æ¸…空输入框的值
        materialCodeInput.value.$el.querySelector('input').value = '';
        materialCodeInput.value.$el.querySelector('input').focus();
    }, 2000); // è®¾å®š2秒未操作则自动聚焦
};
onMounted(() => {
    // åœ¨ç»„件挂载后进行聚焦
    materialCodeInput.value.$el.querySelector('input').focus();
    document.addEventListener('mousemove', handleUserActivity);
    document.addEventListener('keydown', handleUserActivity);
});
onBeforeUnmount(() => {
    clearTimeout(inactivityTimer);
    document.removeEventListener('mousemove', handleUserActivity);
    document.removeEventListener('keydown', handleUserActivity);
});
//=======================end鼠标定位 ç”¨äºŽå¼•用输入框=====================
const isSuccess = ref('');
// æŸ¥è¯¢æ“ä½œ 888888888
const handleQuery = async () => {
    console.log('8888888进入方法', queryParams.value);
    if (!queryParams.value.upi) {
    if (!queryParams.value.packageCode) {
        return;
    }
    console.log('查询');
    loading.value = true;
    var res = await ShortageList(Object.assign(queryParams.value, tableParams.value));
    if (res.data.result.length != 1) {
        ElMessage.warning('此条码不存在或不在缺料清单中!');
        tableData.value = [];
    var res = await ValdateQiTao(Object.assign(queryParams.value, tableParams.value));
    queryParams.value.packageCode = '';
    handleResponse(res);
};
function handleResponse(res: any) {
    tableData.value = res.data.result ?? {};
    materialCodeInput.value.$el.querySelector('input').value = '';
    materialCodeInput.value.$el.querySelector('input').focus();
    if (res.data.code == 200) {
        isSuccess.value = res.data.result ? '成功' : res.data.message || '未查询到数据';
    } else if (res.data.code == 400) {
        loading.value = false;
        isSuccess.value = res.data.message || '未查询到数据';
        return;
    } else {
        loading.value = false;
        isSuccess.value = '';
        ElMessage.warning('网络异常 è¯·æ±‚失败');
        return;
    }
    tableData.value = res.data.result[0] ?? [];
    loading.value = false;
};
}
// åˆ—排序
const sortChange = async (column: any) => {
@@ -301,7 +363,8 @@
            line-height: 30px;
            text-align: left;
            list-style-type: none;
            width: 25%;
            width: 48%;
            display: inline-block;
            word-wrap: break-word;
        }
    }
@@ -309,4 +372,15 @@
.text_left {
    font-weight: 700;
}
.my-icon {
    font-size: 36px; /* è°ƒæ•´å­—体大小 */
    color: #00ff11; /* è®¾ç½®å›¾æ ‡é¢œè‰² */
}
.titleTip {
    text-align: center;
    font-size: 36px; /* è°ƒæ•´å­—体大小 */
    .okText {
        margin-bottom: 20px;
    }
}
</style>
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/component/openAllprop.vue
@@ -280,7 +280,7 @@
                            <el-col :span="4">
                                <el-form-item label-width="20px">
                                    <el-button type="primary" icon="el-icon-search" @click="getDetail">查询</el-button>
                                    <el-button type="primary" style="margin-left: 5px" icon="ele-Printer" @click="handleHtmlPrint"> æ‰“印 </el-button>
                                    <!-- <el-button type="primary" style="margin-left: 5px" icon="ele-Printer" @click="handleHtmlPrint"> æ‰“印 </el-button> -->
                                </el-form-item>
                            </el-col>
                        </el-row>
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/packList/index.vue
@@ -81,15 +81,16 @@
                        </el-form-item>
                    </el-col> -->
        
                    <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb10">
                        <el-form-item>
                            <el-button-group style="display: flex; align-items: center">
                                <el-button type="primary" icon="ele-Search" @click="handleQuery"> æŸ¥è¯¢ </el-button>
                                <el-button icon="ele-Refresh" @click="() => (queryParams = {})"> é‡ç½® </el-button>
                                <el-button icon="ele-Finished" @click="clickOut"> å¼ºåˆ¶å‡ºåº“ </el-button>
                                <!-- <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUI" v-if="!showAdvanceQueryUI" style="margin-left: 5px"> é«˜çº§æŸ¥è¯¢ </el-button>
                                <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUI" v-if="showAdvanceQueryUI" style="margin-left: 5px"> éšè— </el-button> -->
                            </el-button-group>
                        </el-form-item>
                    </el-col>
@@ -140,8 +141,11 @@
                        row-key="newId"
                        @sort-change="newSortChange"
                        :summary-method="getNewExportTitle"
                        @selection-change="handleSelectionChange"
                        border=""
                    >
                        <el-table-column align="center" width="60" type="selection" />
                        <el-table-column type="index" label="序号" width="55" align="center" />
                        <!-- <el-table-column prop="packageCode" label="包装号" show-overflow-tooltip="" /> -->
                        <el-table-column label="包装号" prop="packageCode" width="150" align="left" show-overflow-tooltip>
@@ -169,8 +173,6 @@
                </div>
            </div>
        </el-card>
        <editDialogWmsOrderDeliver ref="editDialogRefWmsOrderDeliver" :title="editWmsOrderDeliverTitle" @reloadTable="handleQuery" />
        <importExcelDialog
@@ -202,6 +204,7 @@
    downloadExcelTemplateWmsOrderPurchase,
    downloadExcelTemplateWmsOrderPurchaseAll,
    packList,
    ForceOutbound,
} from '/@/api/main/WmsOrder/wmsOrderPurchase';
import { handleSlectDataWmsBusinessType } from '/@/utils/selectData';
import { getAPI } from '/@/utils/axios-utils';
@@ -294,23 +297,22 @@
// 88888888查询操作
const handleQuery = async () => {
    loading.value = true;
    var res = await packList(Object.assign(queryParams.value, {
    var res = await packList(
        Object.assign(queryParams.value, {
        ...tableParams.value,
        IsPack:true
    }));
            IsPack: true,
        })
    );
    tableData.value = res.data.result ?? [];
    var res2 = await packList(Object.assign(queryParams.value, {
    var res2 = await packList(
        Object.assign(queryParams.value, {
        ...tableParams.value,
        IsPack:false
    }));
            IsPack: false,
        })
    );
    newTableData.value = res2.data.result ?? [];
    // tableParams.value.total = res.data.result?.total;
    loading.value = false;
    // getEnumOrderTypeData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('OrderTypeEnum')).data.result ?? [];
    // getEnumPoStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('OrderStatusEnum')).data.result ?? [];
};
// åˆ—排序
@@ -462,6 +464,39 @@
        }
    });
};
//选中的行
const checkRows = ref<{ id: number }[]>([]);
// é€‰æ‹©
const handleSelectionChange = (val: any) => {
    checkRows.value = val;
};
const clickOut = () => {
    var PackageCodeList = checkRows.value.map((x: any) => x.packageCode);
    if (PackageCodeList.length == 0) {
        ElMessage.error('请选择需要出库的订单!');
        return;
    }
    ElMessageBox.confirm('是否确认强制出库?', '提示', {
        confirmButtonText: '确认',
        cancelButtonText: '取消',
        type: 'warning',
    })
        .then(async () => {
            loading.value = true;
            var res = await ForceOutbound(
                {
                    "PackageCodeList": PackageCodeList
                }
            );
            handleQuery();
            ElMessage.success('强制出库成功');
            loading.value = false;
        })
        .catch(() => ElMessage.info('已取消'));
};
</script>
<style scoped>
:deep(.el-input),
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/scanCodeKitting/component/editDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
<template>
    <div class="wmsSubstituteGood-container">
        <el-dialog v-model="isShowDialog" :width="800" draggable="" :close-on-click-modal="false">
            <template #header>
                <div style="color: #fff">
                    <!--<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>-->
                    <span>{{ props.title }}</span>
                </div>
            </template>
            <el-form :model="ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules">
                <el-row :gutter="35">
                    <el-form-item v-show="false">
                        <el-input v-model="ruleForm.id" />
                    </el-form-item>
                </el-row>
            </el-form>
            <template #footer>
                <span class="dialog-footer">
                    <el-button @click="cancel">取 æ¶ˆ</el-button>
                    <el-button type="primary" @click="submit">ç¡® å®š</el-button>
                </span>
            </template>
        </el-dialog>
    </div>
</template>
<style scoped>
:deep(.el-select),
:deep(.el-input-number) {
    width: 100%;
}
</style>
<script lang="ts" setup>
    import { ref,onMounted } from "vue";
    import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
    import { ElMessage } from "element-plus";
    import type { FormRules } from "element-plus";
    import { addWmsSubstituteGood, updateWmsSubstituteGood, detailWmsSubstituteGood } from "/@/api/main/WmsBase/wmsSubstituteGood";
    //父级传递来的参数
    var props = defineProps({
        title: {
        type: String,
        default: "",
    },
    });
    //父级传递来的函数,用于回调
    const emit = defineEmits(["reloadTable"]);
    const ruleFormRef = ref();
    const isShowDialog = ref(false);
    const ruleForm = ref<any>({});
    //自行添加其他规则
    const rules = ref<FormRules>({
        substituteCode: [{required: true, message: '请输入替代编号!', trigger: 'blur',},],
        materialCode: [{required: true, message: '请选择物料编号!', trigger: 'change',},],
        materialName: [{required: true, message: '请输入物料名称!', trigger: 'blur',},],
        substituteMaterialCode: [{required: true, message: '请输入替代品物料编号!', trigger: 'blur',},],
        substituteMaterialName: [{required: true, message: '请输入替代品物料名称!', trigger: 'blur',},],
        substituteIndex: [{required: true, message: '请输入替代次序!', trigger: 'blur',},],
    });
    // æ‰“开弹窗
    const openDialog = async (row: any) => {
        // ruleForm.value = JSON.parse(JSON.stringify(row));
        // æ”¹ç”¨detail获取最新数据来编辑
        let rowData = JSON.parse(JSON.stringify(row));
        if (rowData.id)
            ruleForm.value = (await detailWmsSubstituteGood(rowData.id)).data.result;
        else
            ruleForm.value = rowData;
        isShowDialog.value = true;
    };
    // å…³é—­å¼¹çª—
    const closeDialog = () => {
        emit("reloadTable");
        isShowDialog.value = false;
    };
    // å–消
    const cancel = () => {
        isShowDialog.value = false;
    };
    // æäº¤
    const submit = async () => {
        ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
            if (isValid) {
                let values = ruleForm.value;
                if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) {
                    await addWmsSubstituteGood(values);
                } else {
                    await updateWmsSubstituteGood(values);
                }
                closeDialog();
            } else {
                ElMessage({
                    message: `表单有${Object.keys(fields).length}处验证失败,请修改后再提交`,
                    type: "error",
                });
            }
        });
    };
    // é¡µé¢åŠ è½½æ—¶
    onMounted(async () => {
    });
    //将属性或者函数暴露给父组件
    defineExpose({ openDialog });
</script>
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/scanCodeKitting/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,315 @@
<template>
    <div class="wmsSubstituteGood-container">
        <el-card class="full-table" shadow="hover" style="margin-top: 5px">
            <el-form :model="queryParams" @submit.native.prevent ref="queryForm" labelWidth="100">
                <el-row>
                    <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
                        <el-form-item label="包装号" size="large">
                            <el-input size="large" v-model="queryParams.packageCode" ref="materialCodeInput" clearable="" placeholder="请扫包装号" />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
                        <el-form-item label="部件条码" size="large">
                            <el-input
                                size="large"
                                v-model="queryParams.upi"
                                ref="materialCodeInputupi"
                                clearable=""
                                placeholder="请扫部件条码"
                                @keyup.enter.prevent="handleEnterUip"
                                @confirm.enter.prevent="handleEnterUip"
                            />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="3" :xl="3" class="mb10">
                        <el-form-item>
                            <el-button-group style="display: flex; align-items: center">
                                <el-button size="large" type="primary" icon="ele-Search" @click="handleQuery"> æŸ¥è¯¢ </el-button>
                                <el-button size="large" icon="ele-Refresh" @click="() => (queryParams = {})"> é‡ç½® </el-button>
                                <!--
                        <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUI" v-if="!showAdvanceQueryUI" style="margin-left:5px;"> é«˜çº§æŸ¥è¯¢ </el-button>
                        <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUI" v-if="showAdvanceQueryUI" style="margin-left:5px;"> éšè— </el-button> -->
                                <!-- <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddWmsSubstituteGood" v-auth="'wmsSubstituteGood:add'"> æ–°å¢ž </el-button> -->
                            </el-button-group>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <br />
            <div class="detailBox"  style="height: calc(65vh);">
                <div class="titleTip">
                    <div class="" v-show="isSuccess == '成功'">
                        <svg t="1732788314050" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11359" width="100" height="100">
                            <path
                                d="M874.119618 149.859922A510.816461 510.816461 0 0 0 511.997 0.00208a509.910462 509.910462 0 0 0-362.119618 149.857842c-199.817789 199.679789-199.817789 524.581447 0 724.260236a509.969462 509.969462 0 0 0 362.119618 149.857842A508.872463 508.872463 0 0 0 874.119618 874.120158c199.836789-199.679789 199.836789-524.581447 0-724.260236zM814.94268 378.210681L470.999043 744.132295a15.359984 15.359984 0 0 1-5.887994 4.095996c-1.751998 1.180999-2.913997 2.362998-5.276994 2.913997a34.499964 34.499964 0 0 1-13.469986 2.914997 45.547952 45.547952 0 0 1-12.897986-2.303998l-4.095996-2.363997a45.291952 45.291952 0 0 1-7.009992-4.095996l-196.902793-193.789796a34.126964 34.126964 0 0 1-10.555989-25.186973c0-9.37399 3.583996-18.74698 9.98399-25.186974a36.429962 36.429962 0 0 1 50.372947 0l169.98382 167.423824L763.389735 330.220732a37.059961 37.059961 0 0 1 50.371947-1.732998 33.647965 33.647965 0 0 1 11.165988 25.186973 35.544963 35.544963 0 0 1-9.98399 24.575974v-0.04z m0 0"
                                fill="#52C41A"
                                p-id="11360"
                            ></path>
                        </svg>
                        <p class="okText">核对标签成功!</p>
                    </div>
                    <div class="" v-show="isSuccess && isSuccess != '成功'">
                        <svg t="1732842594517" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4303" width="100" height="100">
                            <path
                                d="M549.044706 512l166.189176-166.249412a26.383059 26.383059 0 0 0 0-36.98447 26.383059 26.383059 0 0 0-37.044706 0L512 475.015529l-166.249412-166.249411a26.383059 26.383059 0 0 0-36.98447 0 26.383059 26.383059 0 0 0 0 37.044706L475.015529 512l-166.249411 166.249412a26.383059 26.383059 0 0 0 0 36.98447 26.383059 26.383059 0 0 0 37.044706 0L512 548.984471l166.249412 166.249411a26.383059 26.383059 0 0 0 36.98447 0 26.383059 26.383059 0 0 0 0-37.044706L548.984471 512zM512 1024a512 512 0 1 1 0-1024 512 512 0 0 1 0 1024z"
                                fill="#E84335"
                                p-id="4304"
                            ></path>
                        </svg>
                        <p class="okText">{{ isSuccess }}</p>
                    </div>
                </div>
                <ul>
                    <li>
                        <span class="text_left">批次:</span>
                        <span class="text_rt">{{ tableData.planNo }}</span>
                    </li>
                    <li>
                        <span class="text_left">订单号:</span>
                        <span class="text_rt">{{ tableData.orderId }}</span>
                    </li>
                    <li>
                        <span class="text_left">生产单号:</span>
                        <span class="text_rt">{{ tableData.info5 }}</span>
                    </li>
                    <li>
                        <span class="text_left">包装号:</span>
                        <span class="text_rt">{{ tableData.packageCode }}</span>
                    </li>
                    <!-- <li>
                        <span class="text_left">区域代码:</span>
                        <span class="text_rt">{{ tableData.areaCode }}</span>
                    </li> -->
                    <li>
                        <span class="text_left">纸箱长:</span>
                        <span class="text_rt">{{ tableData.info1 }}</span>
                    </li>
                    <li>
                        <span class="text_left">纸箱宽:</span>
                        <span class="text_rt">{{ tableData.info2 }}</span>
                    </li>
                    <li>
                        <span class="text_left">纸箱高:</span>
                        <span class="text_rt">{{ tableData.info3 }}</span>
                    </li>
                    <li>
                        <span class="text_left">销售合同单号:</span>
                        <span class="text_rt">{{ tableData.info4 }}</span>
                    </li>
                    <li>
                        <span class="text_left">第几包:</span>
                        <span class="text_rt">{{ tableData.info6 }}</span>
                    </li>
                    <li>
                        <span class="text_left">经销店名称:</span>
                        <span class="text_rt">{{ tableData.info7 }}</span>
                    </li>
                    <li>
                        <span class="text_left">产品名称:</span>
                        <span class="text_rt">{{ tableData.info8 }}</span>
                    </li>
                    <li>
                        <span class="text_left">客户名称:</span>
                        <span class="text_rt">{{ tableData.info10 }}</span>
                    </li>
                    <li>
                        <span class="text_left">自提或发货:</span>
                        <span class="text_rt">{{ tableData.info11 }}</span>
                    </li>
                    <li>
                        <span class="text_left">包装部件总数量:</span>
                        <span class="text_rt">{{ tableData.info12 }}</span>
                    </li>
                    <li>
                        <span class="text_left">包装面积:</span>
                        <span class="text_rt">{{ tableData.info13 }}</span>
                    </li>
                </ul>
            </div>
        </el-card>
    </div>
</template>
<script lang="ts" setup="" name="wmsSubstituteGood">
import { onBeforeUnmount, onMounted, ref } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus';
import { auth } from '/@/utils/authFunction';
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
import { formatDate } from '/@/utils/formatTime';
import { listMes_BatchOrderUPI_New, deleteMes_BatchOrderUPI_New, importExcelMes_BatchOrderUPI_New, downloadExcelTemplateMes_BatchOrderUPI_New } from '/@/api/main/WmsOrder/mes_BatchOrderUPI_New';
import { ShortageList, ValdateLabel } from '/@/api/main/ReportCenter/wmsStockQuan';
const loading = ref(false);
const tableData = ref<any>({});
const queryParams = ref<any>({
    upi: '',
    packageCode: '',
});
// å®šä¹‰åˆ—的接口
interface Column {
    ColumnName: string;
    ColumnDescription: string;
}
// åˆ—表数据
const arrList = ref<Column[]>([
    { ColumnName: 'info1', ColumnDescription: '纸箱长' },
    { ColumnName: 'info2', ColumnDescription: '纸箱宽' },
    { ColumnName: 'info3', ColumnDescription: '纸箱高' },
    { ColumnName: 'info4', ColumnDescription: '销售合同单号' },
    { ColumnName: 'info5', ColumnDescription: '生产单号' },
    { ColumnName: 'info6', ColumnDescription: '第几包' },
    { ColumnName: 'info7', ColumnDescription: '经销店名称' },
    { ColumnName: 'info8', ColumnDescription: '产品名称' },
    { ColumnName: 'info9', ColumnDescription: '包装编码' },
    { ColumnName: 'info10', ColumnDescription: '客户名称' },
    { ColumnName: 'info11', ColumnDescription: '自提or发货' },
    { ColumnName: 'info12', ColumnDescription: '包装部件总数量' },
    { ColumnName: 'info13', ColumnDescription: '包装面积' },
    { ColumnName: 'info14', ColumnDescription: '部件名称' },
    { ColumnName: 'info15', ColumnDescription: '部件数量' },
    { ColumnName: 'info16', ColumnDescription: '部件尺寸' },
    { ColumnName: 'info17', ColumnDescription: '机械臂是否旋转' },
]);
//=======================鼠标定位 ç”¨äºŽå¼•用输入框=====================
let materialCodeInput = ref(null);
let materialCodeInputupi = ref(null);
let inactivityTimer = null;
// å¤„理用户活动的函数
const handleUserActivity = () => {
    if (inactivityTimer) {
        clearTimeout(inactivityTimer);
    }
    inactivityTimer = setTimeout(() => {
        //1没值就聚焦
        if (!materialCodeInput.value.$el.querySelector('input').value) {
            materialCodeInput.value.$el.querySelector('input').focus();
            return;
        }
//都有值就返回 ä¸ºäº†æ–¹ä¾¿è¯·æ±‚接口
        if (materialCodeInput.value.$el.querySelector('input').value && materialCodeInputupi.value.$el.querySelector('input').value) {
            return;
        }
        // æ¸…空输入框的值
        if (materialCodeInput.value.$el.querySelector('input').value) {
            console.log('有值');
            materialCodeInputupi.value.$el.querySelector('input').value = '';
            materialCodeInputupi.value.$el.querySelector('input').focus();
            isSuccess.value = '';
            tableData.value =  {};
        } else {
            materialCodeInput.value.$el.querySelector('input').value = '';
            materialCodeInputupi.value.$el.querySelector('input').value = '';
            materialCodeInput.value.$el.querySelector('input').focus();
        }
    }, 1000); // è®¾å®š2秒未操作则自动聚焦
};
onMounted(() => {
    // åœ¨ç»„件挂载后进行聚焦
    materialCodeInput.value.$el.querySelector('input').focus();
    document.addEventListener('mousemove', handleUserActivity);
    document.addEventListener('keydown', handleUserActivity);
});
onBeforeUnmount(() => {
    clearTimeout(inactivityTimer);
    document.removeEventListener('mousemove', handleUserActivity);
    document.removeEventListener('keydown', handleUserActivity);
});
//=======================end鼠标定位 ç”¨äºŽå¼•用输入框=====================
const isSuccess = ref('');
// æŸ¥è¯¢æ“ä½œ 888888888
const handleQuery = async () => {
    console.log('8888888进入方法', queryParams.value);
    if (!queryParams.value.upi && !queryParams.value.packageCode) {
        return;
    }
    loading.value = true;
    var res = await ValdateLabel({
        PackageCode: queryParams.value.packageCode,
        Upi: queryParams.value.upi,
    });
    handleResponse(res);
};
function handleResponse(res:any) {
    tableData.value = res.data.result ?? {};
    materialCodeInput.value.$el.querySelector('input').value = '';
    materialCodeInputupi.value.$el.querySelector('input').value = '';
    materialCodeInput.value.$el.querySelector('input').focus();
    if (res.data.code == 200) {
        isSuccess.value = res.data.result.packageCode ? '成功' : res.data.message || '未查询到数据';
    } else if (res.data.code == 400) {
        loading.value = false;
        isSuccess.value = res.data.message || '未查询到数据';
        return;
    } else {
        loading.value = false;
        isSuccess.value = '';
        ElMessage.warning('网络异常 è¯·æ±‚失败');
        return;
    }
}
const handleEnterUip = (event: Event) => {
    event.preventDefault(); // é˜»æ­¢é»˜è®¤äº‹ä»¶
    handleQuery();
};
</script>
<style scoped>
:deep(.el-input),
:deep(.el-select),
:deep(.el-input-number) {
    width: 100%;
}
.detailBox {
    width: 90%;
    margin: 0 auto;
    display: block;
    padding-bottom: 10px;
    ul {
        margin: 0;
        padding: 0;
        li {
            display: block;
            line-height: 30px;
            text-align: left;
            list-style-type: none;
            width: 48%;
            display: inline-block;
            word-wrap: break-word;
        }
    }
}
.text_left {
    font-weight: 700;
}
.my-icon {
    font-size: 36px; /* è°ƒæ•´å­—体大小 */
    color: #00ff11; /* è®¾ç½®å›¾æ ‡é¢œè‰² */
}
.titleTip {
    text-align: center;
    font-size: 36px; /* è°ƒæ•´å­—体大小 */
    .okText {
        margin-bottom: 20px;
    }
}
</style>
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs
@@ -329,16 +329,17 @@
    ///  [HttpGet]
    [ApiDescriptionSettings(Name = "ShortageList")]
    [Description("WmsStockQuan/ShortageList")]
    public async Task<List<WmsShortageListOutput>> ShortageList(KittingListInput input)
    public async Task<WmsShortageListOutput> ShortageList(KittingListInput input)
    {
        var listRes = await GetShortageListCore(input);
        var resJson = new WmsShortageListOutput();
        if (!string.IsNullOrWhiteSpace(input.UPI))
        {
            listRes = listRes.Where(u => u.UPI == input.UPI).ToList();
            resJson = listRes.FirstOrDefault(u => u.UPI == input.UPI);
            //var filteredResult = listRes.FirstOrDefault(u => u.UPI == input.UPI);
        }
        return listRes;
        return resJson;
    }
    /// <summary>
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsOperationTaskService.cs
@@ -119,7 +119,7 @@
        {
            throw Oops.Oh($"没有配置 åˆ¤æ–­é½å¥— å€¼");
        }
        if (!string.IsNullOrEmpty(sysConfig.Value))
        if (!string.IsNullOrEmpty(sysConfig.Value) && sysConfig.Value!="无")
        {
            throw Oops.Oh($"判断齐套值已经存在值{sysConfig.Value},不允许操作");
        }