<template>
|
<!-- 添加、编辑 -->
|
<el-dialog v-model="dialogVisible" width="95%" @close="closeDialog" :close-on-click-modal="false">
|
<template #header>
|
<div style="color: #fff">
|
<span>{{ dialogType == 'add' ? '添加' : '编辑' }}</span>
|
</div>
|
</template>
|
<el-form :model="addForm" ref="dialogRef" labelWidth="100" :rules="formRules">
|
<el-row>
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="业务类型" prop="businessType">
|
<el-select clearable v-model="addForm.businessType" placeholder="请选择业务类型">
|
<el-option v-for="(item,index) in getBusinessTypeData_Index" :key="index" :value="item.value" :label="`${item.describe}`" />
|
</el-select>
|
</el-form-item>
|
</el-col>
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="客户" prop="custCode">
|
<el-select v-model="addForm.custCode" filterable remote reserve-keyword remote-show-suffix
|
:remote-method="remoteMethod" :loading="loading" placeholder="请选择客户" clearable
|
style="width: 100%" @change="changeXmbh(addForm.custCode)">
|
<el-option v-for="(item, index) in arrTdp" :key="index" :value="item.custCode"
|
:label="`[${item.custCode}]${item.custChinaName}`"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="目标库区" prop="toAreaCode">
|
<el-select
|
v-model="addForm.toAreaCode"
|
filterable
|
remote
|
reserve-keyword
|
remote-show-suffix
|
:remote-method="remoteMethodArea"
|
:loading="loading"
|
placeholder="请选择目标库区"
|
clearable
|
style="width: 100%"
|
@change="changeXmbhArea(addForm.toAreaCode)"
|
>
|
<el-option
|
v-for="(item, index) in arrTdpArea"
|
:key="index"
|
:value="item.areaCode"
|
:label="`[${item.areaCode}]${item.areaName}`"
|
></el-option>
|
</el-select>
|
|
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="目标库位" prop="toPlaceCode">
|
<el-select
|
v-model="addForm.toPlaceCode"
|
filterable
|
remote
|
reserve-keyword
|
remote-show-suffix
|
:remote-method="remoteMethodPlace"
|
:loading="loading"
|
placeholder="请选择目标库位"
|
clearable
|
style="width: 100%"
|
@change="changeXmbhPlace(addForm.toPlaceCode)"
|
>
|
<el-option
|
v-for="(item, index) in arrTdpPlace"
|
:key="index"
|
:value="item.placeCode"
|
:label="`[${item.placeCode}]${item.placeName}`"
|
></el-option>
|
</el-select>
|
|
|
</el-form-item>
|
</el-col>
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="计划日期" prop="plannedDate">
|
<el-date-picker v-model="addForm.plannedDate" type="date" placeholder="计划日期" />
|
</el-form-item>
|
</el-col>
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="ERP单号" prop="erpOrderNo">
|
<el-input v-model="addForm.erpOrderNo" placeholder="请输入ERP单号" maxlength="255" show-word-limit clearable />
|
</el-form-item>
|
</el-col>
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="成本中心" prop="costCenter">
|
<el-input v-model="addForm.costCenter" placeholder="请输入成本中心" maxlength="255" show-word-limit
|
clearable />
|
</el-form-item>
|
</el-col>
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="单据原因" prop="orderReason">
|
<el-input v-model="addForm.orderReason" placeholder="请输入单据原因" maxlength="255" show-word-limit
|
clearable />
|
</el-form-item>
|
</el-col>
|
|
<!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="客户发往地" prop="deliveryAddress">
|
<el-input v-model="addForm.deliveryAddress" placeholder="请输入客户发往地" maxlength="255" show-word-limit
|
clearable />
|
</el-form-item>
|
</el-col> -->
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="财务类型" prop="financialType">
|
<el-select clearable v-model="addForm.financialType" placeholder="请选择财务类型">
|
<el-option v-for="(item, index) in getEnumFinancialTypeData" :key="index" :value="item.value"
|
:label="`${item.describe}`"></el-option>
|
</el-select>
|
</el-form-item>
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="备注" prop="remarks">
|
<el-input v-model="addForm.remarks" placeholder="请输入备注" maxlength="255" show-word-limit clearable />
|
</el-form-item>
|
</el-col>
|
|
|
<!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="源仓库编号" prop="sourceWarehouseCode">
|
<el-input v-model="addForm.sourceWarehouseCode" placeholder="请输入源仓库编号" maxlength="50"
|
show-word-limit clearable />
|
</el-form-item>
|
</el-col> -->
|
|
<!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="目标仓库编号" prop="toWarehouseCode">
|
<el-input v-model="addForm.toWarehouseCode" placeholder="请输入目标仓库编号" maxlength="50" show-word-limit
|
clearable />
|
|
</el-form-item>
|
</el-col> -->
|
|
<!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="源库区编号" prop="sourceAreaCode">
|
<el-input v-model="addForm.sourceAreaCode" placeholder="请输入源库区编号" maxlength="50" show-word-limit
|
clearable />
|
</el-form-item>
|
</el-col>
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="源库位编号" prop="sourceAreaCode">
|
<el-input v-model="addForm.sourcePlaceCode" placeholder="请输入源库位编号" maxlength="50" show-word-limit
|
clearable />
|
</el-form-item>
|
</el-col>
|
|
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="优先级" prop="priority">
|
<el-input-number v-model="addForm.priority" placeholder="请输入优先级" clearable />
|
</el-form-item>
|
</el-col> -->
|
|
<!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="备注" prop="remarks">
|
<el-input v-model="addForm.remarks" placeholder="请输入备注" maxlength="255" show-word-limit clearable />
|
</el-form-item>
|
</el-col>
|
-->
|
|
|
<!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
|
<el-form-item label="自动生成条码">
|
<el-switch v-model="addForm.hasTMCode" active-text="是" inactive-text="否" />
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-show="addForm.hasTMCode">
|
<el-form-item label="条码类型">
|
<el-switch v-model="addForm.typeTMCode" active-text="一维" inactive-text="二维" />
|
</el-form-item>
|
</el-col> -->
|
|
</el-row>
|
</el-form>
|
<div class="msi-content" style="margin-top: 10px">
|
<div class="header" style="margin-bottom: 10px">
|
<div>
|
<el-button v-show="isMaterialBox == true" type="primary" icon="el-icon-plus"
|
@click="addMaterialDialog">新增物料</el-button>
|
<!-- <el-button v-show="isPoBox == true" type="primary" icon="el-icon-plus"
|
@click="addMaterialDialog('po')">关联DO单</el-button> -->
|
|
<el-button icon="el-icon-delete" plain :disabled="checkedDetails.length == 0"
|
@click="delCheckedDetails">删除选中行</el-button>
|
</div>
|
</div>
|
<el-table :data="warehousOrderDetails" border style="width: 100%" row-key="setRowKey" ref="detailRef"
|
@selection-change="detailsCheckChange" max-height="480">
|
<el-table-column align="center" width="60" type="selection" />
|
<el-table-column fixed="left" label="序号" align="center" width="60" type="index" />
|
<el-table-column fixed="left" label="物料编号" min-width="140" prop="materialCode" align="center"
|
show-overflow-tooltip />
|
<el-table-column label="物料名称" min-width="100" prop="materialName" align="center" show-overflow-tooltip />
|
<el-table-column v-if="isPoBox == 1" label="PO单号" min-width="130" prop="poNo" align="center"
|
show-overflow-tooltip />
|
|
<!-- <el-table-column v-if="isPoBox == 1" label="PO行号" prop="poLineNumber" align="center" min-width="120">
|
<template #default="scope">
|
{{ scope.row.lineNumber }}
|
</template>
|
</el-table-column> -->
|
|
<!-- v-if="dialogType != 'add'" -->
|
<el-table-column label="行号" prop="lineNumber" align="center" min-width="120" >
|
<template #default="scope">
|
<el-input v-model.trim="scope.row.lineNumber" clearable min-width="150" placeholder="请输入ASN行号" />
|
</template>
|
</el-table-column>
|
<!-- :disabled="!!scope.row.boM_NO" -->
|
<el-table-column label="数量" align="center" min-width="150">
|
<template #default="scope">
|
<el-input-number :precision="3" min="0" v-model="scope.row.quantity" size="small" />
|
</template>
|
</el-table-column>
|
|
<!-- <el-table-column label="计划开始时间" align="center" min-width="180">
|
<template #default="scope">
|
<el-date-picker v-model="scope.row.plannedStartTime" type="datetime" :disabled-date="disabledDate"
|
value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" placeholder="请选择计划开始时间"
|
style="width: 100%" />
|
</template>
|
</el-table-column>
|
<el-table-column label="计划结束时间" align="center" min-width="180">
|
<template #default="scope">
|
<el-date-picker v-model="scope.row.plannedEndTime" type="datetime" :disabled-date="disabledDate"
|
value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" placeholder="请选择计划结束时间"
|
style="width: 100%" />
|
</template>
|
</el-table-column> -->
|
|
<el-table-column label="供应商" align="center" min-width="180">
|
<template #default="scope">
|
<el-select v-model="scope.row.supplierCode" filterable remote reserve-keyword remote-show-suffix
|
:remote-method="remoteMethod" :loading="loading" placeholder="请选择供应商" clearable
|
style="width: 100%" @change="changeXmbh(scope.row.supplierCode)">
|
<el-option v-for="(item, index) in arrTdp" :key="index" :value="item.custCode"
|
:label="`[${item.custCode}]${item.custChinaName}`"></el-option>
|
</el-select>
|
</template>
|
</el-table-column>
|
|
|
|
</el-table>
|
</div>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @click="dialogVisible = false">取消</el-button>
|
<el-button type="primary" :disabled="warehousOrderDetails.length == 0" @click="confirm">确认</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
<!-- 添加物料 -->
|
<el-dialog v-model="addMaterialVisible" width="70%" @close="closeMaterialDialog">
|
<template #header>
|
<div style="color: #fff">
|
<span>添加物料详情</span>
|
<!-- <span v-if="isMaterialBox == 1">添加物料详情</span>
|
<span v-if="isPoBox == 1">关联PO单物料</span> -->
|
</div>
|
</template>
|
|
<div class="msi-form" style="padding-top: 0px">
|
<el-form :model="materialForm">
|
<el-row>
|
<el-col :span="8">
|
<el-form-item label="物料编号">
|
<el-input v-model="materialForm.Code" placeholder="请输入物料编号" clearable></el-input>
|
</el-form-item>
|
</el-col>
|
<!--
|
<el-col :span="8" v-if="isPoBox == 1">
|
<el-form-item label="关联PO单号:">
|
<el-input v-model="materialForm.poNo" placeholder="请输入关联PO单号" clearable></el-input>
|
</el-form-item>
|
</el-col> -->
|
|
<el-col :span="8">
|
<el-form-item label-width="20px">
|
<el-button type="primary" icon="el-icon-search" @click="getMaterialList">查询</el-button>
|
<!-- <el-button icon="el-icon-refresh-right" @click="resetMaterialForm">重置</el-button> -->
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
<div class="msi-content" style="padding-top: 0; margin-top: 10px">
|
<el-table :data="materialList" border style="width: 100%" row-key="id" ref="materialRef"
|
@selection-change="materialSelectionChange" :max-height="480" v-if="isMaterialBox == 1">
|
<el-table-column align="center" width="60" type="selection" />
|
<el-table-column label="序号" align="center" width="60" type="index" />
|
<el-table-column label="物料编号" prop="materialCode" align="center" min-width="140" show-overflow-tooltip />
|
<el-table-column label="物料名称" prop="materialName" align="center" min-width="140" show-overflow-tooltip />
|
<el-table-column label="采购单位" prop="poUnit" align="center" min-width="140" show-overflow-tooltip />
|
</el-table>
|
<!-- PO单 -->
|
<el-table :data="materialList" border style="width: 100%" row-key="id" ref="materialRef"
|
@selection-change="materialSelectionChange" :max-height="480" v-if="isPoBox == 1">
|
<el-table-column align="center" width="60" type="selection" />
|
<el-table-column label="序号" align="center" width="60" type="index" />
|
<el-table-column prop="poNo" label="PO单号" show-overflow-tooltip="" />
|
<el-table-column prop="poLineNumber" label="PO行号" show-overflow-tooltip="" />
|
<!-- <el-table-column prop="erpOrderNo" label="ERP单号" show-overflow-tooltip="" /> -->
|
<!-- <el-table-column prop="erpCode" label="ERP库存地" show-overflow-tooltip="" /> -->
|
<el-table-column prop="materialCode" label="物料编号" show-overflow-tooltip="" />
|
<el-table-column prop="materialName" label="物料名称" show-overflow-tooltip="" />
|
<el-table-column prop="quantity" label="数量" show-overflow-tooltip="" />
|
<el-table-column prop="goodsQuantity" label="已收数量" show-overflow-tooltip="" />
|
|
<!-- <el-table-column prop="createASNQuantity" label="已创建ASN数量" min-width="110px" show-overflow-tooltip="" /> -->
|
|
<el-table-column prop="supplierCode" label="供应商编号" show-overflow-tooltip="" />
|
<el-table-column prop="supplierName" label="供应商名称" show-overflow-tooltip="" />
|
<el-table-column prop="plannedStartTime" label="计划开始时间" show-overflow-tooltip="" />
|
<el-table-column prop="plannedEndTime" label="计划结束时间" show-overflow-tooltip="" />
|
|
<!-- <el-table-column prop="createTime" label="创建时间" width="130" :formatter="formatDate_T_Time" show-overflow-tooltip="" />
|
<el-table-column prop="updateTime" label="修改时间" width="130" :formatter="formatDate_T_Time" show-overflow-tooltip="" />
|
<el-table-column prop="createUserName" label="创建人" show-overflow-tooltip="" />
|
<el-table-column prop="updateUserName" label="修改人" show-overflow-tooltip="" /> -->
|
</el-table>
|
|
<Pagination :total="materialTotal" v-model:page="materialForm.Page" v-model:limit="materialForm.PageSize"
|
@pagination="getMaterialList" style="margin-top: 20px; text-align: center"></Pagination>
|
</div>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @click="addMaterialVisible = false">取消</el-button>
|
<el-button type="primary" @click="confirmAddMaterial">确认</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
<!-- 单详情 -->
|
<el-drawer v-model="drawerVisible" :title="`${detailForm.moveNo}单据详情`" direction="rtl" size="80%"
|
@close="handleDrawerClose">
|
<template #title>
|
<div class="slot_title">
|
<div class="title_orderNo">{{ title }}</div>
|
<div>单据详情</div>
|
</div>
|
</template>
|
|
<div class="detailBoxWrap">
|
<!-- 详情组件 -->
|
<open-details ref="propDetailRef"></open-details>
|
<div class="msi-form">
|
<el-form :model="detailForm">
|
<el-row>
|
<el-col :span="4">
|
<el-form-item label="物料编号">
|
<el-input v-model="detailForm.materialCode" clearable placeholder="请输入物料编号" />
|
</el-form-item>
|
</el-col>
|
<el-col :span="1">
|
|
</el-col>
|
<!-- <el-col :span="4">
|
<el-form-item label="跟踪码:">
|
<el-input v-model="detailForm.snCode" clearable placeholder="请输入跟踪码" />
|
</el-form-item>
|
</el-col> -->
|
<el-col :span="2">
|
<el-form-item label-width="20px">
|
<el-button type="primary" icon="el-icon-search" @click="getDetail">查询</el-button>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
<div class="msi-content">
|
<el-table :data="drawerList" border striped :max-height="480">
|
<el-table-column fixed="left" label="序号" align="center" width="60" type="index" />
|
<el-table-column fixed="left" prop="materialCode" label="物料编号" show-overflow-tooltip="" />
|
<el-table-column prop="materialName" label="物料名称" show-overflow-tooltip="" />
|
<el-table-column prop="lineNumber" label="行号" show-overflow-tooltip="" />
|
<el-table-column prop="orderStatus" min-width="80px" label="状态" show-overflow-tooltip="">
|
<template #default="scope">
|
<el-tag :type="getTypeStatus(1, scope.row.orderStatusName)"> {{ scope.row.orderStatusName }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="containerCode" label="容器编号" show-overflow-tooltip="" />
|
<el-table-column prop="snCode" min-width="160px" label="跟踪码" show-overflow-tooltip="" />
|
|
<el-table-column prop="quantity" label="数量" show-overflow-tooltip="" />
|
<el-table-column prop="batch" min-width="130px" label="批次" show-overflow-tooltip="" />
|
|
<el-table-column prop="unit" label="库存单位" show-overflow-tooltip="" />
|
<el-table-column prop="erpOrderNo" label="ERP单号" show-overflow-tooltip="" />
|
<el-table-column prop="erpCode" label="ERP库存地" show-overflow-tooltip="" />
|
<el-table-column prop="supplierBatch" label="供应商批次" show-overflow-tooltip="" />
|
|
|
<el-table-column prop="sourceWarehouseCode" label="源仓库编号" show-overflow-tooltip="" />
|
|
<el-table-column prop="sourceAreaCode" label="源库区编号" show-overflow-tooltip="" />
|
<el-table-column prop="toAreaCode" label="目标库区编号" width="100" show-overflow-tooltip="" />
|
|
<el-table-column prop="sourcePlaceCode" label="源库位编号" show-overflow-tooltip="" />
|
<el-table-column prop="toPlaceCode" label="目标库位编号" width="100" show-overflow-tooltip="" />
|
<!--
|
|
<el-table-column prop="relationNo" label="关联单号" show-overflow-tooltip="" />
|
<el-table-column prop="relationNoLineNumber" label="关联单行号" show-overflow-tooltip="" /> -->
|
|
<el-table-column prop="supplierCode" label="供应商编号" show-overflow-tooltip="" />
|
<!-- <el-table-column prop="supplierName" label="供应商名称" show-overflow-tooltip="" /> -->
|
|
<!-- <el-table-column prop="batchRule" label="批次规则" show-overflow-tooltip="" /> -->
|
<!-- <el-table-column prop="actionRemark" label="操作备注" show-overflow-tooltip="" />
|
|
<el-table-column prop="actionTime" label="操作时间" width="80" :formatter="formatDate_T_Date"
|
show-overflow-tooltip="" /> -->
|
<el-table-column prop="createTime" label="创建时间" width="130" :formatter="formatDate_T_Time"
|
show-overflow-tooltip="" />
|
<el-table-column prop="updateTime" label="修改时间" width="130" :formatter="formatDate_T_Time"
|
show-overflow-tooltip="" />
|
<el-table-column prop="createUserName" label="创建人" show-overflow-tooltip="" />
|
<el-table-column prop="updateUserName" label="修改人" show-overflow-tooltip="" />
|
|
<!-- <el-table-column prop="custType" min-width="120px" label="往来企业类型" show-overflow-tooltip="">
|
<template #default="scope">
|
<el-tag>{{ getEnumDesc(scope.row.custType, getEnumCustTypeData_Index) }}</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="custCode" min-width="100px" label="往来企业编号" show-overflow-tooltip="" /> -->
|
<!-- <el-table-column prop="custChinaName" min-width="120px" label="往来企业中文名称" show-overflow-tooltip="" />
|
<el-table-column prop="custEnglishName" min-width="120px" label="往来企业英文名称" show-overflow-tooltip="" /> -->
|
</el-table>
|
<Pagination :total="detailCount" v-model:page="detailForm.PageNo" v-model:limit="detailForm.PageSize"
|
@pagination="getDetail" style="margin-top: 20px; text-align: center"></Pagination>
|
|
<div></div>
|
</div>
|
</div>
|
</el-drawer>
|
|
<el-dialog v-model="outVisible2" title="SPA获取" width="20%" @close="closeOutDialog2">
|
<el-form :model="outerForm2" label-width="120px">
|
<el-row style="font-size: 16px">
|
<el-col :span="23">
|
<el-form-item label="单号:" required>
|
<el-input v-model="outerForm2.purchaseNo" clearable placeholder="请输入单号" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @click="outVisible2 = false">取消</el-button>
|
<el-button type="primary" @click="getSapOrderPO">确认</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
</template>
|
<script lang="ts" setup>
|
import Pagination from '/@/components/Pagination/index.vue';
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
import { ref, nextTick, computed, getCurrentInstance, watch, defineExpose, defineProps, onMounted } from 'vue';
|
|
import { formatDecimalData } from '/@/utils/formate';
|
|
import cache from '/@/utils/cache';
|
import { pageWmsMaterial } from '/@/api/main/WmsBase/wmsMaterial';
|
import {
|
getTypeStatus
|
} from "/@/utils/formate";
|
import { getAPI } from '/@/utils/axios-utils';
|
import { SysEnumApi } from '/@/api-services/api';
|
import { formatDate, formatDate_T_Date, formatDate_T_Time, defaultTimeRange } from '/@/utils/formatTime';
|
import { pageWmsOrderMovementDetails, deleteWmsOrderMovementDetails, importExcelWmsOrderMovementDetails, downloadExcelTemplateWmsOrderMovementDetails } from '/@/api/main/WmsOrder/wmsOrderMovementDetails';
|
import { addWmsOrderMovementOff, updateWmsOrderMovement, detailWmsOrderMovement } from "/@/api/main/WmsOrder/wmsOrderMovement";
|
import OpenDetails from '/@/components/openDetails/openDetails.vue';
|
import { pageBaseCustomer } from '/@/api/main/WmsBase/baseCustomer';
|
import commonFunction from '/@/utils/commonFunction';
|
import { handleSlectDataWmsArea, handleSlectDataWmsBusinessType } from "/@/utils/selectData";
|
import { pageWmsStockQuan } from '/@/api/main/ReportCenter/wmsStockQuan_new';
|
import { pageWmsPlace } from '/@/api/main/WmsBase/wmsPlace';
|
import { listWmsBusinessType } from '/@/api/main/WmsBase/wmsBusinessType';
|
const moveType = 30;//移动类型 移库
|
const { proxy }: any = getCurrentInstance(); // 访问实例上下文 proxy同时支持开发 线上环境
|
const getBusinessTypeData_Index = ref<any>([]);//业务类型 create by liuwq 2024-05-23
|
const getEnumOrderTypeData = ref<any>([]);
|
const getEnumBusinessTypeData = ref<any>([]);
|
const getEnumPoStatusData = ref<any>([]);
|
const getEnumFinancialTypeData = ref<any>([]);
|
|
const { getEnumDesc } = commonFunction();
|
const emits = defineEmits(['getTabelData']);
|
const getEnumOrderStatusData_Index = ref<any>([]);
|
const getEnumCustTypeData_Index = ref<any>([]);
|
const getEnumOrderTypeData_Index = ref<any>([]);
|
const getEnumDockData = ref<any>([]);
|
const props = defineProps({
|
titleAuthor: {
|
type: Number,
|
required: true,
|
},
|
hexiao: {
|
type: Number,
|
default: 1,
|
required: true,
|
},
|
});
|
//控制订单类型 - 下拉菜单
|
const titleAuthor = computed(() => props.titleAuthor);
|
// 是否显示核销按钮
|
const hexiao = computed(() => props.hexiao);
|
const loading = ref(false);
|
|
// 登录用户id
|
// const LoginUserID = computed(() => store.state.login.userInfo.id || localCache.getCache("LoginUserID"))
|
|
// const EnumWriteOffState = computed(
|
// () => store.state.login.enums.enumWriteOffState
|
// );
|
|
let itemBtnArr = ['批量删除', '编辑', '新增'];
|
const boolEnum = ref([
|
{
|
title: '是',
|
value: true,
|
},
|
{
|
title: '否',
|
value: false,
|
},
|
]);
|
|
// form表单展开
|
|
const orderType = ref('');
|
const orderDoRuType = ref(); // 用于导入的变量
|
const itemBtn = ref(1);
|
// 控制bom物料权限
|
const isShowBomBtn = ref(0);
|
|
// 禁止之前的日期
|
const disabledDate = (time: Date) => {
|
return time.getTime() + 3600 * 1000 * 24 < Date.now();
|
};
|
// 上传窗口
|
const uploadVisible = ref(false);
|
//打开导入窗口
|
const openUploadDialog = (param: any) => {
|
orderDoRuType.value = param;
|
uploadVisible.value = true;
|
};
|
//关闭窗口
|
const closeUploadDialog = () => {
|
getTabelData();
|
};
|
//sap获取
|
const getSapOrder = () => {
|
ElMessageBox.confirm('是否确认获取更新?', '提示', {
|
confirmButtonText: '确认',
|
cancelButtonText: '取消',
|
type: 'warning',
|
}).then(() => {
|
// getSapRkPurchase().then((res) => {
|
// if (res.code == 200) {
|
// ElMessage.success("已开始重新获取,请稍后查看结果!");
|
// } else {
|
// ElMessage.error(
|
// `sap获取失败${res.code}:${JSON.stringify(res.message)}`
|
// );
|
// }
|
// })
|
});
|
};
|
|
//------------sap获取PO单
|
const outVisible2 = ref(false);
|
const outerForm2 = ref({
|
purchaseNo: '',
|
});
|
const getSapOrderPO = (param?: number) => {
|
if (param && param == 1) {
|
outVisible2.value = true;
|
return;
|
}
|
if (outerForm2.value.purchaseNo == '') {
|
ElMessage.warning('请输入单号');
|
return;
|
}
|
// getSapPurchasePO({
|
// purchaseNo: outerForm2.value.purchaseNo
|
// })
|
// .then((res) => {
|
// if (res.code == 200) {
|
// ElMessage.success("SAP获取成功");
|
// outVisible2.value = false;
|
// } else {
|
// ElMessage.error(
|
// `sap获取失败${res.code}:${JSON.stringify(res.message)}`
|
// );
|
// }
|
// })
|
// .catch((err) => ElMessage.error(err));
|
};
|
//关闭出库窗口的回调
|
const closeOutDialog2 = () => {
|
outerForm2.value.purchaseNo = '';
|
};
|
|
//------------sap获取PO单
|
|
// --------------------PO单列表-----------------------------------
|
//查询
|
const formModel = ref({
|
WareMaterialCode: '',
|
WareMaterialName: '',
|
PurchaseNo: '',
|
CreatedUserName: '',
|
CreatedTimeBegin: '',
|
CreatedTimeEnd: '',
|
CreateDate: [],
|
IssueTimeBegin: '',
|
IssueTimeEnd: '',
|
IssueDate: [],
|
MaterialTypeStaus: '',
|
SourceBy: '',
|
WriteOffState: '',
|
signStatus: '',
|
status: '',
|
freeOrderType: '',
|
IsQueryAll: false, //是否显示全部数据
|
// LoginUserID: LoginUserID, //用户id
|
OrderMenuType: '', //判断是哪个菜单入库
|
Page: 1,
|
PageSize: 10,
|
poApprovalStatus: '',
|
keyCode: '',
|
IsDisable: '', //是否作废
|
});
|
|
//入库单列表数据
|
let tableData = ref([]);
|
const tableRef = ref();
|
|
//列表的数据条数
|
const totalItems = ref<number>(0);
|
|
//缓存枚举
|
const enumList: any = cache.getCache('enumList');
|
console.log(enumList.inEnumOrderType);
|
|
// .inEnumOrderType
|
|
//获取PO单列表
|
const getTabelData = () => {
|
//判断创建时间是否有选择
|
if (formModel.value.CreateDate && formModel.value.CreateDate.length > 0) {
|
formModel.value.CreatedTimeBegin = formModel.value.CreateDate[0];
|
formModel.value.CreatedTimeEnd = ''; //addDate(formModel.value.CreateDate[1], 1); //日期查询 结束时间 需要加一天
|
} else {
|
// 日历清空 再查询bug
|
if (formModel.value.CreatedTimeBegin || formModel.value.CreatedTimeEnd) {
|
formModel.value.CreatedTimeBegin = '';
|
formModel.value.CreatedTimeEnd = '';
|
}
|
}
|
//判断下发时间是否有选择
|
if (formModel.value.IssueDate && formModel.value.IssueDate.length > 0) {
|
formModel.value.IssueTimeBegin = formModel.value.IssueDate[0];
|
formModel.value.IssueTimeEnd = formModel.value.IssueDate[1];
|
} else {
|
// 日历清空 再查询bug
|
if (formModel.value.IssueTimeBegin || formModel.value.IssueTimeEnd) {
|
formModel.value.IssueTimeBegin = '';
|
formModel.value.IssueTimeEnd = '';
|
}
|
}
|
|
//其它入库入口
|
// if (titleAuthor.value == 1) { //免费入库单管理
|
// }
|
|
// if (titleAuthor.value == 2) { //订单入库管理
|
// }
|
|
// getPurchasePageForAllData(formModel.value)
|
// .then((res) => {
|
// if (res.code == 200) {
|
// const { data } = res;
|
// const result = data;
|
// result.rows.map(
|
// (item: { hasChildren: boolean }) => (item.hasChildren = true)
|
// );
|
// tableData.value = result.rows;
|
// totalItems.value = result.totalRows;
|
// orderType.value = formModel.value.MaterialTypeStaus;
|
// // 清除选中
|
// nextTick(() => {
|
// if (tableRef.value && typeof tableRef.value.clearSelection === 'function') {
|
// checkRows.value = [];
|
// tableRef.value.clearSelection();
|
// }
|
// })
|
// } else {
|
// ;
|
// }
|
// })
|
// .catch((err) => {
|
// console.log(err);
|
// ElMessage.error(JSON.stringify(err));
|
// });
|
};
|
getTabelData();
|
|
//重置搜索
|
const resetForm = () => {
|
formModel.value = {
|
WareMaterialCode: '',
|
WareMaterialName: '',
|
PurchaseNo: '',
|
CreatedUserName: '',
|
CreatedTimeBegin: '',
|
CreatedTimeEnd: '',
|
CreateDate: [],
|
IssueTimeBegin: '',
|
IssueTimeEnd: '',
|
IssueDate: [],
|
MaterialTypeStaus: '',
|
SourceBy: '',
|
WriteOffState: '',
|
signStatus: '',
|
status: '',
|
freeOrderType: '',
|
IsQueryAll: false, //是否显示全部数据
|
// LoginUserID: LoginUserID, //用户id
|
OrderMenuType: '', //判断是哪个菜单入库
|
Page: 1,
|
PageSize: 10,
|
poApprovalStatus: '',
|
keyCode: '',
|
IsDisable: '', //是否作废
|
};
|
getTabelData();
|
};
|
// -----------------删除、导出操作--------------------------
|
//选中的行
|
const checkRows = ref<{ id: number }[]>([]);
|
// 选择
|
const handleSelectionChange = (val: any) => {
|
checkRows.value = val;
|
};
|
//导出PO单详情
|
const handExport = () => {
|
// rkExport(formModel.value)
|
// .then((res) => {
|
// const link = document.createElement("a"); //创建a标签
|
// let blob = new Blob([res], { type: "application/vnd.ms-excel" }); // response就是接口返回的文件流
|
// let objectUrl = URL.createObjectURL(blob);
|
// link.href = objectUrl;
|
// link.download = `入库管理导出${formatUtcToData(
|
// new Date().toString(),
|
// "YYYY-MM-DD hh:mm:ss"
|
// )}`; // 自定义文件名
|
// link.click(); // 下载文件
|
// URL.revokeObjectURL(objectUrl); // 释放内存
|
// }).catch((err) => ElMessage.error(JSON.stringify(err)));
|
//导出调用接口
|
// let entozh = entozhExcell
|
// const { PageNo, PageSize, ...rest } = formModel.value
|
// getPurchasePage({ Page: 1, PageSize: 1000000, ...rest }).then(res => {
|
// if(res.code==200){
|
// res.data.rows.forEach((item)=>{
|
// item.writeOffState = EnumWriteOffState.value.filter((v: any) => v.value == item.writeOffState)[0].title;
|
// item.sourceBy = sourceEnum.value.filter((v: any) => v.value == item.sourceBy)[0].title;
|
// })
|
// exportExcel(res.data.rows, entozh, "xlsx", `入库管理表${formatUtcToData(new Date().toString(), 'YYYY-MM-DD hh:mm:ss')}`);
|
// }
|
// })
|
// 后端导出-字段不全
|
// if (checkRows.value.length <= 0) {
|
// ElMessage.warning("请选择一个订单!");
|
// return
|
// }
|
// const arr = checkRows.value.reduce((curr, item) => {
|
// curr.push(item.purchaseNo);
|
// return curr;
|
// }, []);
|
// puchaseExport({ PurchaseNo: arr })
|
// .then((res) => {
|
// const link = document.createElement("a"); //创建a标签
|
// let blob = new Blob([res], { type: "application/vnd.ms-excel" }); // response就是接口返回的文件流
|
// let objectUrl = URL.createObjectURL(blob);
|
// link.href = objectUrl;
|
// link.download = `入库管理导出${formatUtcToData(
|
// new Date().toString(),
|
// "YYYY-MM-DD hh:mm:ss"
|
// )}`; // 自定义文件名
|
// link.click(); // 下载文件
|
// URL.revokeObjectURL(objectUrl); // 释放内存
|
// })
|
// .catch((err) => ElMessage.error(JSON.stringify(err)));
|
};
|
|
// -------------------获取PO单下物料详情-----------------------------------
|
//入库单下物料详情请求
|
const detailForm = ref({
|
materialCode: '',
|
snCode: '',//跟踪码
|
moveNo: '',//单号
|
movementId: '',//移动单ID
|
Page: 1,
|
PageSize: 10,
|
});
|
|
// 物料详情抽屉
|
const drawerVisible = ref(false);
|
const drawerType = ref('drawerAll');
|
// const
|
//单号
|
const purchaseNo = ref('');
|
const detailCount2 = ref(0);
|
const detailForm2 = ref({
|
Page: 1,
|
PageSize: 10,
|
movementId: '',
|
});
|
const getEnummoveDetailStatusData_Index = ref<any>([]);
|
const getEnumBusinessTypeData_Index = ref<any>([]);
|
const getEnumOrderSocureData_Index = ref<any>([]);
|
const drawerList2 = ref<DetailType[]>([]);
|
//------------------获取物料列表物料明细
|
const getDetail = async () => {
|
loading.value = true;
|
var res = await pageWmsOrderMovementDetails(Object.assign(detailForm.value));
|
drawerList.value = res.data.result?.items ?? [];
|
detailCount.value = res.data.result?.total;
|
loading.value = false;
|
// getEnummoveDetailStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('OrderStatusEnum')).data.result ?? [];
|
// getEnumOrderStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('OrderStatusEnum')).data.result ?? [];
|
// getEnumCustTypeData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('BaseCustomerTypeEnum')).data.result ?? [];
|
// getEnumOrderSocureData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('BaseCustomerTypeEnum')).data.result ?? [];
|
};
|
|
//----------------物料明细
|
//打开抽屉
|
const openDrawer = async (type: number, scope: any = {}, entozhExcell?: any) => {
|
detailForm.value.PageNo = 1;
|
detailForm.value.PageSize = 10;
|
if (scope.orderNo) {
|
title.value = `${scope.orderNo}`;
|
}
|
drawerType.value = 'drawerAll';
|
drawerVisible.value = true;
|
//当前移动单ID
|
// detailForm.value.moveNo = scope.orderNo;
|
detailForm.value.movementId = scope.id;
|
//入库单
|
purchaseNo.value = scope.purchaseNo;
|
detailForm2.value.movementId = scope.id;
|
//获取物料列表
|
if (detailForm2.value.movementId == '') {
|
drawerList2.value = [];
|
detailCount2.value = 0;
|
return;
|
}
|
// 获取物料列表物料明细
|
getDetail();
|
|
|
debugger
|
|
getEnumOrderSocureData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('SourceByEnum')).data.result ?? [];
|
|
|
// 根据状态转中文 保留3位小数
|
let scopetrans = JSON.parse(JSON.stringify(scope));
|
scopetrans.orderSocure = getEnumDesc(scopetrans.orderSocure, getEnumOrderSocureData_Index.value)
|
nextTick(() => {
|
proxy.$refs['propDetailRef'].openADialog(scopetrans, entozhExcell);
|
});
|
|
};
|
|
//关闭抽屉
|
const handleDrawerClose = () => {
|
detailForm.value = {
|
snCode: '',//跟踪码
|
materialCode: '',
|
moveNo: '',//单号
|
movementId: '',//移动单ID
|
Page: 1,
|
PageSize: 10,
|
};
|
deltailList.value = [];
|
detailCount.value = 0;
|
drawerList.value = [];
|
drawerList2.value = [];
|
detailCount2.value = 0;
|
drawerList2.value = [];
|
};
|
|
//物料详情类型
|
interface DetailType {
|
id: number;
|
barCode: string;
|
wareMaterialCode: string;
|
name: string;
|
signStatus: string;
|
category: string;
|
materialTypeName: string;
|
specificationModel: string;
|
long: number;
|
width: number;
|
high: number;
|
weight: number;
|
unit: string;
|
createdTime: string;
|
purchaseNo: string;
|
quantity: number;
|
goodsquantity: number;
|
surplusquantity: number;
|
poLineNumber: string;
|
}
|
|
//入库单详情列表
|
const deltailList = ref<DetailType[]>([]);
|
//弹出层数据
|
const drawerList = ref<DetailType[]>([]);
|
|
//入库单详情列表数据条数
|
const detailCount = ref(0);
|
|
//弹出层标题
|
let title = ref('');
|
|
// ----------------新增、编辑-------------------------------
|
//窗口类型
|
const dialogType = ref('add');
|
|
const dialogVisible = ref(false);
|
|
//添加编辑表单ref
|
const dialogRef = ref();
|
|
//添加/编辑参数
|
let addForm = ref({
|
businessType: '',
|
hasTMCode: false,
|
typeTMCode: false,//false二维码 true 1维码
|
asnType: '',
|
dock: '',
|
projectNo: '',
|
OrderDetails: [] as any[],
|
});
|
|
// 特殊字符的验证
|
// 包含特殊字符返回true,不包含特殊字符返回false
|
const checkEspcial = (rule: any, value: any, callback: any) => {
|
if (!value) {
|
callback();
|
} else {
|
const reg = /[@$%*^:;:;~+=!!#^{}><.,,。]/g;
|
if (!reg.test(value.trim())) {
|
callback();
|
} else {
|
return callback(new Error('不能存在特殊符号'));
|
}
|
}
|
};
|
|
// 验证角色编号
|
var validatorCode = (rule: any, value: any, callback: any) => {
|
if (!value) {
|
callback();
|
} else {
|
const reg = /[\u4E00-\u9FA5]/g;
|
if (!reg.test(value)) {
|
callback();
|
} else {
|
return callback(new Error('单号不能存在汉字'));
|
}
|
}
|
};
|
|
//rules
|
const formRules = {
|
asnType: [{ required: true, message: '请选择订单类型!', trigger: 'change' }],
|
orderTypeName: [{ required: true, message: '请输入订单类型名称!', trigger: 'blur' }],
|
businessType: [{ required: true, message: '请选择业务类型!', trigger: 'change' }],
|
businessTypeName: [{ required: true, message: '请输入业务类型名称!', trigger: 'blur' }],
|
orderSocure: [{ required: true, message: '请输入单据来源!', trigger: 'blur' }],
|
poStatus: [{ required: true, message: '请选择单据状态!', trigger: 'change' }],
|
poStatusName: [{ required: true, message: '请输入单据状态名称!', trigger: 'blur' }],
|
supplierCode: [{ required: true, message: '请输入供应商编号!', trigger: 'blur' }],
|
supplierName: [{ required: true, message: '请输入供应商名称!', trigger: 'blur' }],
|
|
|
};
|
//打开新增、编辑窗口
|
const openDialog = async (type: number, scope: any = {}) => {
|
handleQueryTdp();
|
|
//业务类型
|
var res = await listWmsBusinessType();
|
res = res.data;
|
if(res && res.code == 200){
|
getBusinessTypeData_Index.value = res?.result ?? [];
|
}
|
|
|
getEnumFinancialTypeData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('FinancialTypeEnum')).data.result ?? [];
|
|
|
if (type == 1) {
|
isPoBox.value = 1;
|
isMaterialBox.value = 1;
|
detailForm2.value.PageSize = 10;
|
dialogType.value = 'add';
|
} else {
|
dialogType.value = 'edit';
|
detailForm2.value.PageSize = 100000;
|
addForm.value = { ...scope };
|
|
console.log(addForm.value);
|
detailForm2.value.movementId = scope.id;
|
|
//------------------获取物料列表物料明细
|
loading.value = true;
|
var res = await pageWmsOrderAsnDetails(Object.assign(detailForm2.value));
|
|
warehousOrderDetails.value = res.data.result?.items ?? [];
|
loading.value = false;
|
if (warehousOrderDetails.value.length > 0 && warehousOrderDetails.value[0].poNo) {
|
isPoBox.value = 1;
|
isMaterialBox.value = 0;
|
|
} else {
|
isPoBox.value = 0;
|
isMaterialBox.value = 1;
|
}
|
addForm.value.hasTMCode = false;
|
addForm.value.typeTMCode = false
|
if (warehousOrderDetails.value.length > 0 && warehousOrderDetails.value[0].sN_1d) {
|
addForm.value.hasTMCode = true;
|
addForm.value.typeTMCode = true
|
}
|
if (warehousOrderDetails.value.length > 0 && warehousOrderDetails.value[0].sN_2d) {
|
addForm.value.hasTMCode = true;
|
addForm.value.typeTMCode = false
|
}
|
//----------------物料明细
|
}
|
dialogVisible.value = true;
|
|
//清除选中项
|
nextTick(() => {
|
dialogRef.value.clearValidate();
|
});
|
};
|
|
//物料详情的table ref
|
const detailRef = ref();
|
const setRowKey = (row: any) => {
|
return row.id + row.lineNumber;
|
};
|
//关闭窗口
|
const closeDialog = () => {
|
addForm.value = {
|
businessType: '',
|
hasTMCode: false,
|
typeTMCode: false,//false二维码 true 1维码
|
asnType: '',
|
dock: '',
|
projectNo: '',
|
OrderDetails: [] as any[],
|
};
|
warehousOrderDetails.value = [];
|
checkedDetails.value = [];
|
deltailList.value = [];
|
detailCount.value = 0;
|
detailRef.value.clearSelection();
|
};
|
|
//添加编辑窗口物料列表
|
const warehousOrderDetails = ref<any[]>([]);
|
|
//物料详情列表选中的物料
|
const checkedDetails = ref<any[]>([]);
|
|
//物料详情列表中勾选事件
|
const detailsCheckChange = (val: any) => {
|
checkedDetails.value = val;
|
};
|
|
//删除选中的物料详情
|
const delCheckedDetails = () => {
|
ElMessageBox.confirm('是否确认删除?', '提示', {
|
confirmButtonText: '确认',
|
cancelButtonText: '取消',
|
type: 'warning',
|
})
|
.then(() => {
|
let arr = [];
|
if (checkedDetails.value[0].diRelationID) {
|
checkedDetails.value.forEach((item) => {
|
console.log(item);
|
let index = warehousOrderDetails.value.findIndex((detail) => detail.materialCode== item.materialCode && detail.diRelationID == item.diRelationID);
|
if (index > -1) {
|
warehousOrderDetails.value.splice(index, 1);
|
}
|
});
|
} else {
|
checkedDetails.value.forEach((item) => {
|
let index = warehousOrderDetails.value.findIndex((detail) => detail.materialCode== item.materialCode && detail.lineNumber == item.lineNumber);
|
warehousOrderDetails.value.splice(index, 1);
|
});
|
}
|
arr = warehousOrderDetails.value;
|
warehousOrderDetails.value = [];
|
//bug 相同物料 不同Bom
|
nextTick(() => {
|
warehousOrderDetails.value = arr;
|
checkedDetails.value = [];
|
detailRef.value.clearSelection();
|
});
|
})
|
.catch(() => ElMessage.info('已取消删除'));
|
};
|
//编辑、添加提交
|
const confirm = () => {
|
dialogRef.value.validate(async (vali: any) => {
|
if (vali) {
|
console.log('确认');
|
let idx = warehousOrderDetails.value.findIndex((v) => v.lineNumber == '' || v.lineNumber == undefined);
|
if (idx > -1) {
|
ElMessage.warning('请输入行号');
|
return;
|
}
|
let isNext = '';
|
warehousOrderDetails.value.forEach((item) => {
|
const arr: any = warehousOrderDetails.value.filter((detail) => detail.lineNumber == item.lineNumber);
|
if (arr.length > 1) {
|
isNext = `行号:${arr[0].lineNumber}不能相同`;
|
return;
|
}
|
});
|
if (isNext != '') {
|
ElMessage.warning(isNext);
|
return;
|
}
|
|
let idx2 = warehousOrderDetails.value.findIndex((v) => v.quantity == '' || v.quantity == undefined || v.quantity <= 0);
|
if (idx2 > -1) {
|
ElMessage.warning('数量不合规范!');
|
return;
|
}
|
addForm.value.OrderDetails = [];
|
warehousOrderDetails.value.forEach((item) => {
|
var { sourceWarehouseCode, sourceAreaCode
|
, sourcePlaceCode, toPlaceCode, toAreaCode, ...rest } = item
|
const obj = {
|
...rest,
|
sourceWarehouseCode: addForm.value.sourceWarehouseCode,
|
sourceAreaCode: addForm.value.sourceAreaCode,
|
sourcePlaceCode: addForm.value.sourcePlaceCode,
|
toPlaceCode: addForm.value.toPlaceCode,
|
toAreaCode: addForm.value.toAreaCode
|
};
|
addForm.value.OrderDetails.push(obj);
|
});
|
//添加
|
if (dialogType.value == 'add') {
|
let res = await addWmsOrderMovementOff(addForm.value);
|
if (res.data && res.data.code == 200) {
|
ElMessage.success('添加成功');
|
dialogVisible.value = false;
|
emits('getTabelData');
|
}
|
} else {
|
// let res = await updateWmsOrderAsn(addForm.value);
|
// if (res.data && res.data.code == 200) {
|
// ElMessage.success('编辑成功');
|
// dialogVisible.value = false;
|
// emits('getTabelData');
|
// }
|
}
|
} else {
|
ElMessage.warning('表单验证失败');
|
}
|
});
|
};
|
// -----------------添加物料操作-------------------------
|
//物料基础数据窗口
|
const addMaterialVisible = ref(false);
|
|
//物料基础数据列表
|
const materialList = ref([]);
|
|
//物料基础数据条数
|
const materialTotal = ref(0);
|
|
//物料基础数据form
|
const materialForm = ref({
|
moveNo: '',
|
Code: '',
|
Page: 1,
|
PageSize: 10,
|
});
|
|
//获取物料基础列表
|
const getMaterialList = async () => {
|
if (isPoBox.value == 1) {
|
if (materialForm.value.moveNo) {
|
loading.value = true;
|
var res = await pageWmsOrderMovementDetails(Object.assign(materialForm.value));
|
materialList.value = res.data.result?.items ?? [];
|
materialTotal.value = res.data.result?.total;
|
loading.value = false;
|
}
|
}
|
if (isMaterialBox.value == 1) {
|
loading.value = true;
|
var res = await pageWmsMaterial(Object.assign(materialForm.value));
|
// var res = await pageWmsStockQuan(Object.assign(materialForm.value));
|
materialList.value = res.data.result?.items ?? [];
|
materialTotal.value = res.data.result?.total;
|
loading.value = false;
|
}
|
};
|
|
//重置物料
|
const resetMaterialForm = () => {
|
materialForm.value = {
|
moveNo: '',
|
Code: '',
|
Page: 1,
|
PageSize: 10,
|
};
|
getMaterialList();
|
};
|
|
//选中的基础物料数据
|
const checkedMaterial = ref<any[]>([]);
|
|
//物料基础数据勾选
|
const materialSelectionChange = (val: any) => {
|
checkedMaterial.value = val;
|
};
|
const isMaterialBox: any = ref(true);
|
const isPoBox: any = ref(true);
|
//打开新增物料窗口
|
const addMaterialDialog = (param?: any) => {
|
if (param && param == 'po') {
|
isPoBox.value = 1;
|
isMaterialBox.value = 0;
|
} else {
|
isPoBox.value = 0;
|
isMaterialBox.value = 1;
|
}
|
getMaterialList();
|
|
// if ( addForm.value.freeOrderType && isShowBomBtn.value ) {
|
// ElMessage.warning("免费件类型是PR2,只能新增DI维护的物料!");
|
// return;
|
// }
|
addMaterialVisible.value = true;
|
};
|
|
//基础物料table的ref对象
|
const materialRef = ref();
|
|
//确认添加材料
|
const confirmAddMaterial = () => {
|
//物料列表没数据,直接添加
|
if (warehousOrderDetails.value.length == 0) {
|
// 自动给行号复值
|
checkedMaterial.value.forEach((item, index) => {
|
item.unit = item.poUnit || item.unit;
|
item.lineNumber = index + 1;
|
if (!item.lineNumber) {
|
item.lineNumber = index + 1 + warehousOrderDetails.value.length;
|
}
|
});
|
|
warehousOrderDetails.value.push(...checkedMaterial.value);
|
} else {
|
for (let i = 0; i < checkedMaterial.value.length; i++) {
|
let idx = warehousOrderDetails.value.findIndex(
|
(item: { poLineNumber: any; code: any }) => item.code == checkedMaterial.value[i].materialCode && item.lineNumber == checkedMaterial.value[i].lineNumber
|
);
|
if (idx > -1) {
|
return ElMessage.warning(`物料编号${checkedMaterial.value[i].materialCode},ASN行号:${checkedMaterial.value[i].lineNumber || ''}在物料列表中已存在,请去除勾选`);
|
}
|
}
|
|
// 自动给行号复值
|
checkedMaterial.value.forEach((item, index) => {
|
item.unit = item.poUnit || item.unit;
|
if (!item.lineNumber) {
|
item.lineNumber = index + 1 + warehousOrderDetails.value.length;
|
}
|
});
|
warehousOrderDetails.value.push(...checkedMaterial.value);
|
}
|
|
addMaterialVisible.value = false;
|
};
|
|
//关闭新增物料窗口
|
const closeMaterialDialog = () => {
|
materialForm.value = {
|
moveNo: '',
|
Code: '',
|
Page: 1,
|
PageSize: 10,
|
};
|
materialList.value = [];
|
checkedMaterial.value = [];
|
materialRef.value.clearSelection();
|
};
|
|
// 页面加载时
|
onMounted(async () => {
|
|
|
|
});
|
|
//================
|
const arrTdp = ref<any[]>([]);
|
const queryParamsW = ref<any>({});
|
const tableParamsW = ref({
|
page: 1,
|
pageSize: 200,
|
total: 0,
|
custType: '供应商',
|
});
|
|
//-----------------远程搜索----------------
|
const handleQueryTdp = async () => {
|
var res = await pageBaseCustomer(Object.assign(queryParamsW.value, tableParamsW.value));
|
arrTdp.value = res.data.result?.items ?? [];
|
};
|
const changeXmbh = async (query?: any) => {
|
loading.value = true;
|
var res = await pageBaseCustomer({
|
page: 1,
|
pageSize: 200,
|
custCode: query,
|
custType: '供应商',
|
});
|
loading.value = false;
|
arrTdp.value = res.data.result?.items ?? [];
|
};
|
// 远程搜索 输入关键字以从远程服务器中查找数据。
|
const remoteMethod = async (query: string) => {
|
loading.value = true;
|
var res = await pageBaseCustomer({
|
page: 1,
|
pageSize: 200,
|
custCode: query,
|
custType: '供应商',
|
});
|
loading.value = false;
|
arrTdp.value = res.data.result?.items ?? [];
|
};
|
//-----------------远程搜索----------------
|
|
|
|
|
|
//-----------------远程搜索 库区编号----------------
|
const arrTdpArea = ref<any[]>([]);
|
const queryParamsWArea = ref<any>({});
|
const tableParamsWArea = ref({
|
page: 1,
|
pageSize: 200,
|
total: 0,
|
areaCode: '',
|
});
|
|
const handleQueryTdpArea = async () => {
|
var res = await handleSlectDataWmsArea(Object.assign(queryParamsWArea.value, tableParamsWArea.value));
|
arrTdpArea.value = res ?? [];
|
};
|
const changeXmbhArea = async (query?: any) => {
|
loading.value = true;
|
var res = await handleSlectDataWmsArea({
|
page: 1,
|
pageSize: 200,
|
areaCode: query,
|
});
|
loading.value = false;
|
arrTdpArea.value = res?? [];
|
};
|
// 远程搜索 输入关键字以从远程服务器中查找数据。
|
const remoteMethodArea = async (query: string) => {
|
loading.value = true;
|
var res = await handleSlectDataWmsArea({
|
page: 1,
|
pageSize: 200,
|
areaCode: query,
|
});
|
loading.value = false;
|
arrTdpArea.value = res ?? [];
|
};
|
//-----------------远程搜索----------------
|
|
|
|
|
//-----------------远程搜索 库位编号----------------
|
const arrTdpPlace = ref<any[]>([]);
|
const queryParamsWPlace = ref<any>({});
|
const tableParamsWPlace = ref({
|
page: 1,
|
pageSize: 200,
|
total: 0,
|
PlaceCode: '',
|
});
|
|
const handleQueryTdpPlace = async () => {
|
var res = await pageWmsPlace(Object.assign(queryParamsWPlace.value, tableParamsWPlace.value));
|
arrTdpPlace.value =res.data.result?.items ?? [];
|
};
|
const changeXmbhPlace = async (query?: any) => {
|
loading.value = true;
|
var res = await pageWmsPlace({
|
page: 1,
|
pageSize: 200,
|
PlaceCode: query,
|
});
|
loading.value = false;
|
arrTdpPlace.value = res.data.result?.items ?? [];
|
};
|
// 远程搜索 输入关键字以从远程服务器中查找数据。
|
const remoteMethodPlace = async (query: string) => {
|
loading.value = true;
|
var res = await pageWmsPlace({
|
page: 1,
|
pageSize: 200,
|
PlaceCode: query,
|
});
|
loading.value = false;
|
arrTdpPlace.value = res.data.result?.items ?? [];
|
};
|
//-----------------远程搜索----------------
|
|
|
|
|
|
|
// 暴露方法
|
defineExpose({ openDialog, openDrawer });
|
</script>
|
<style lang="less" scoped>
|
.detailBoxWrap {
|
margin: 10px;
|
}
|
|
.msi-form {
|
margin-top: 10px;
|
}
|
|
.msi-form {
|
margin-bottom: 10px;
|
}
|
|
.slot_title {
|
display: flex;
|
align-items: center;
|
|
// margin-left: 20px;
|
.title_orderNo {
|
font-size: 18px;
|
color: #F18201;
|
font-weight: bold;
|
margin-right: 5px;
|
}
|
}
|
|
</style>
|