liuying
2024-12-01 478fa37ec863b2f7eb20ce19ad5cce96072bd4f9
标记ng页面
已添加2个文件
已修改1个文件
444 ■■■■■ 文件已修改
LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsStockQuan.ts 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/manualFeedKittingNg/component/editDialog.vue 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/manualFeedKittingNg/index.vue 314 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/api/main/ReportCenter/wmsStockQuan.ts
@@ -20,8 +20,7 @@
  ValdateQiTao = '/api/WmsOperationTask/ValdateQiTao',
  ValdateLabel = '/api/WmsOperationTask/ValdateLabel',
  ConfirmNg = '/api/WmsOperationTask/ConfirmNg',
  
}
@@ -177,4 +176,9 @@
            data: params
        });
export const ConfirmNgF = (params?: any) =>
    request({
            url: Api.ConfirmNg,
            method: 'post',
            data: params
        });
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/manualFeedKittingNg/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/manualFeedKittingNg/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,314 @@
<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="10" :xl="4" class="mb10">
                        <el-form-item label="包装号" size="large">
                            <el-input
                                size="large"
                                v-model="queryParams.packageCode"
                                ref="materialCodeInput"
                                clearable=""
                                placeholder="请扫包装号"
                            @keyup.enter.prevent="handleEnter"
                                @confirm.enter.prevent="handleEnter"
                            />
                        </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 size="large" type="primary" icon="ele-Search" @click="handleQuery"> æŸ¥è¯¢ </el-button>
                                <el-button size="large" icon="ele-Finished" @click="ConfirmNg"> æ ‡è®°Ng </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.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.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>
            <!-- ç”Ÿæˆform é½å¥— é½åŒ… è®¾ç½®ng包 -->
            <!-- ç”Ÿæˆform é½å¥— é½åŒ… è®¾ç½®ng包 -->
            <!-- <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-form-item label="齐套" prop="completeSet">
          <el-select v-model="ruleForm.completeSet" placeholder="请选择齐套">
            <el-option label="选项1" value="option1"></el-option>
            <el-option label="选项2" value="option2"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="齐包" prop="packageSetup">
          <el-input v-model="ruleForm.packageSetup" placeholder="请输入齐包设置"></el-input>
        </el-form-item>
        <el-form-item label="ng包" prop="ngPackage">
          <el-input v-model="ruleForm.ngPackage" placeholder="请输入ng包"></el-input>
        </el-form-item>
      </el-row>
    </el-form> -->
        </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 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, ValdateQiTao ,ConfirmNgF} from '/@/api/main/ReportCenter/wmsStockQuan';
const showAdvanceQueryUI = ref(false);
const printDialogRef = ref();
const editDialogRef = ref();
const loading = ref(false);
const tableData = ref<any>([]);
const queryParams = ref<any>({
    packageCode: '',
});
const tableParams = ref({
    page: 1,
    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秒未操作则自动聚焦
};
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.packageCode) {
        return;
    }
    console.log('查询');
    loading.value = true;
    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;
    }
}
const handleEnter = (event: Event) => {
    event.preventDefault(); // é˜»æ­¢é»˜è®¤äº‹ä»¶
    handleQuery();
};
const ConfirmNg = () => {
  ElMessageBox.confirm("是否确认标记Ng?", "提示", {
    confirmButtonText: "确认",
    cancelButtonText: "取消",
    type: "warning"
  })
    .then(() => {
        ConfirmNgF({
            ...tableData.value,
        })
        .then((res) => {
          if (res.code == 200) {
            ElMessage.success("标记成功");
            tableData.value ={}
          } else {
            ElMessage.error(`失败${res.code}:${JSON.stringify(res.message)}`);
          }
        });
    })
};
</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>