出入库已库位为主要操作单位

besure_bit
ck-chenkang 3 weeks ago
parent ff0b41820e
commit 8a7bcd1f31

@ -2,9 +2,9 @@ import request from '@/config/axios'
export interface BitWmsInboundReqVO {
productId: number
warehouseId: number
warehouseId?: number
areaId?: number
locationId?: number
locationId: number
count: number
unitId: number
supplierId?: number
@ -13,8 +13,9 @@ export interface BitWmsInboundReqVO {
export interface BitWmsOutboundReqVO {
productId: number
warehouseId: number
warehouseId?: number
areaId?: number
locationId: number
count: number
outReason: string
remark?: string
@ -22,9 +23,11 @@ export interface BitWmsOutboundReqVO {
export interface BitWmsMoveReqVO {
productId: number
fromWarehouseId: number
fromLocationId: number
toLocationId: number
fromWarehouseId?: number
fromAreaId?: number
toWarehouseId: number
toWarehouseId?: number
toAreaId?: number
count: number
remark?: string
@ -43,6 +46,15 @@ export const BitWmsApi = {
getSampleSimpleList: async (params?: any) => {
return await request.get({ url: '/erp/product/sample-simple-list', params })
},
getLocationStockPage: async (params: any) => {
return await request.get({ url: '/erp/bit-wms/location-stock/page', params })
},
getLocationStockCount: async (productId: number, locationId: number) => {
return await request.get({ url: '/erp/bit-wms/location-stock/count', params: { productId, locationId } })
},
getLocationStockRecordPage: async (params: any) => {
return await request.get({ url: '/erp/bit-wms/location-stock-record/page', params })
},
inbound: async (data: BitWmsInboundReqVO) => {
return await request.post({ url: '/erp/bit-wms/inbound', data })
},

@ -1,39 +1,68 @@
<template>
<ContentWrap>
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="120px" class="bit-wms-form">
<el-form-item label="样品" prop="productId">
<el-select v-model="formData.productId" placeholder="请选择样品" filterable clearable class="!w-full">
<el-option v-for="item in sampleList" :key="item.id" :label="formatSampleLabel(item)" :value="item.id" />
</el-select>
</el-form-item>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="来源仓库" prop="fromWarehouseId">
<el-select v-model="formData.fromWarehouseId" placeholder="请选择来源仓库" filterable class="!w-full" @change="handleFromWarehouseChange">
<el-option v-for="item in warehouseList" :key="item.id" :label="item.name" :value="item.id" />
<el-form-item label="样品" prop="productId">
<el-select
v-model="formData.productId"
placeholder="请选择样品"
filterable
clearable
class="!w-full"
@change="loadCurrentStock"
>
<el-option
v-for="item in sampleList"
:key="item.id"
:label="formatSampleLabel(item)"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="来源库区" prop="fromAreaId">
<el-select v-model="formData.fromAreaId" placeholder="请选择来源库区" filterable clearable class="!w-full">
<el-option v-for="item in fromAreaList" :key="item.id" :label="item.areaName" :value="item.id" />
</el-select>
<el-form-item label="来源库存">
<el-input :model-value="currentStockText" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="目标仓库" prop="toWarehouseId">
<el-select v-model="formData.toWarehouseId" placeholder="请选择目标仓库" filterable class="!w-full" @change="handleToWarehouseChange">
<el-option v-for="item in warehouseList" :key="item.id" :label="item.name" :value="item.id" />
<el-form-item label="来源库位" prop="fromLocationId">
<el-select
v-model="formData.fromLocationId"
placeholder="请选择来源库位"
filterable
clearable
class="!w-full"
@change="handleFromLocationChange"
>
<el-option
v-for="item in filteredLocationList"
:key="item.id"
:label="formatLocationLabel(item)"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标库区" prop="toAreaId">
<el-select v-model="formData.toAreaId" placeholder="请选择目标库区" filterable clearable class="!w-full">
<el-option v-for="item in toAreaList" :key="item.id" :label="item.areaName" :value="item.id" />
<el-form-item label="目标库位" prop="toLocationId">
<el-select
v-model="formData.toLocationId"
placeholder="请选择目标库位"
filterable
clearable
class="!w-full"
@change="handleToLocationChange"
>
<el-option
v-for="item in filteredLocationList"
:key="item.id"
:label="formatLocationLabel(item)"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
@ -58,19 +87,27 @@
import { BitWmsApi } from '@/api/erp/bitwms'
import { WarehouseApi } from '@/api/erp/stock/warehouse'
import { WarehouseAreaApi } from '@/api/erp/stock/warehousearea'
import { WarehouseLocationApi } from '@/api/erp/stock/warehouselocation'
defineOptions({ name: 'ErpBitWmsMove' })
const DEFAULT_WAREHOUSE_NAME = '样品仓'
const DEFAULT_AREA_NAME = '必硕三楼'
const message = useMessage()
const formRef = ref()
const submitLoading = ref(false)
const stockLoading = ref(false)
const currentStock = ref<number | undefined>(undefined)
const sampleList = ref<any[]>([])
const warehouseList = ref<any[]>([])
const areaList = ref<any[]>([])
const locationList = ref<any[]>([])
const formData = reactive<any>({
productId: undefined,
fromLocationId: undefined,
fromWarehouseId: undefined,
fromAreaId: undefined,
toLocationId: undefined,
toWarehouseId: undefined,
toAreaId: undefined,
count: 1,
@ -78,50 +115,102 @@ const formData = reactive<any>({
})
const formRules = reactive({
productId: [{ required: true, message: '请选择样品', trigger: 'change' }],
fromWarehouseId: [{ required: true, message: '请选择来源库', trigger: 'change' }],
toWarehouseId: [{ required: true, message: '请选择目标库', trigger: 'change' }],
fromLocationId: [{ required: true, message: '请选择来源', trigger: 'change' }],
toLocationId: [{ required: true, message: '请选择目标', trigger: 'change' }],
count: [{ required: true, message: '请输入数量', trigger: 'blur' }]
})
const fromAreaList = computed(() => {
if (!formData.fromWarehouseId) return areaList.value
return areaList.value.filter((item) => item.warehouseId === formData.fromWarehouseId)
const defaultWarehouseId = computed(
() => warehouseList.value.find((item) => item.name === DEFAULT_WAREHOUSE_NAME)?.id
)
const defaultAreaId = computed(() => {
if (!defaultWarehouseId.value) return undefined
return areaList.value.find(
(item) => item.warehouseId === defaultWarehouseId.value && item.areaName === DEFAULT_AREA_NAME
)?.id
})
const toAreaList = computed(() => {
if (!formData.toWarehouseId) return areaList.value
return areaList.value.filter((item) => item.warehouseId === formData.toWarehouseId)
const filteredLocationList = computed(() =>
locationList.value.filter((item) => {
if (defaultWarehouseId.value && item.warehouseId !== defaultWarehouseId.value) return false
if (defaultAreaId.value && item.areaId !== defaultAreaId.value) return false
return true
})
)
const currentStockText = computed(() => {
if (stockLoading.value) return '查询中...'
return currentStock.value === undefined ? '-' : `${currentStock.value}`
})
const formatSampleLabel = (item: any) => `${item.barCode || item.code || '-'} / ${item.name || '-'}`
const handleFromWarehouseChange = () => {
formData.fromAreaId = undefined
const formatLocationLabel = (item: any) => `${item.code || '-'} / ${item.name || '-'}`
const fillLocationFields = (prefix: 'from' | 'to', locationId?: number) => {
const location = locationList.value.find((item) => item.id === locationId)
formData[`${prefix}WarehouseId`] = location?.warehouseId
formData[`${prefix}AreaId`] = location?.areaId
}
const handleFromLocationChange = (locationId?: number) => {
fillLocationFields('from', locationId)
loadCurrentStock()
}
const handleToLocationChange = (locationId?: number) => {
fillLocationFields('to', locationId)
}
const loadCurrentStock = async () => {
if (!formData.productId || !formData.fromLocationId) {
currentStock.value = undefined
return
}
stockLoading.value = true
try {
currentStock.value = await BitWmsApi.getLocationStockCount(
formData.productId,
formData.fromLocationId
)
} finally {
stockLoading.value = false
}
}
const handleToWarehouseChange = () => {
const resetInnerFormData = () => {
formData.productId = undefined
formData.fromLocationId = undefined
formData.fromWarehouseId = undefined
formData.fromAreaId = undefined
formData.toLocationId = undefined
formData.toWarehouseId = undefined
formData.toAreaId = undefined
formData.count = 1
formData.remark = undefined
currentStock.value = undefined
}
const resetForm = () => {
formRef.value?.resetFields()
formData.count = 1
resetInnerFormData()
}
const submitForm = async () => {
await formRef.value.validate()
if (formData.fromLocationId === formData.toLocationId) {
message.warning('来源库位和目标库位不能相同')
return
}
submitLoading.value = true
try {
await BitWmsApi.move(formData)
message.success('移库成功')
resetForm()
await loadCurrentStock()
} finally {
submitLoading.value = false
}
}
onMounted(async () => {
const [samples, warehouses, areas] = await Promise.all([
const [samples, warehouses, areas, locations] = await Promise.all([
BitWmsApi.getSampleSimpleList(),
WarehouseApi.getWarehouseSimpleList(),
WarehouseAreaApi.getWarehouseAreaPage({ pageNo: 1, pageSize: 100 })
WarehouseAreaApi.getWarehouseAreaPage({ pageNo: 1, pageSize: 100 }),
WarehouseLocationApi.getWarehouseLocationPage({ pageNo: 1, pageSize: 100 })
])
sampleList.value = samples || []
warehouseList.value = warehouses || []
areaList.value = areas.list || []
locationList.value = locations.list || []
})
</script>

@ -16,21 +16,26 @@
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="仓库" prop="warehouseId">
<el-select v-model="formData.warehouseId" placeholder="请选择仓库" filterable class="!w-full" @change="handleWarehouseChange">
<el-option v-for="item in warehouseList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="库区" prop="areaId">
<el-select v-model="formData.areaId" placeholder="请选择库区" filterable clearable class="!w-full" @change="loadCurrentStock">
<el-option v-for="item in filteredAreaList" :key="item.id" :label="item.areaName" :value="item.id" />
<el-col :span="12">
<el-form-item label="库位" prop="locationId">
<el-select
v-model="formData.locationId"
placeholder="请选择库位"
filterable
clearable
class="!w-full"
@change="handleLocationChange"
>
<el-option
v-for="item in filteredLocationList"
:key="item.id"
:label="formatLocationLabel(item)"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="12">
<el-form-item label="数量" prop="count">
<el-input-number v-model="formData.count" :min="1" :precision="0" class="!w-full" />
</el-form-item>
@ -59,10 +64,12 @@ import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { BitWmsApi } from '@/api/erp/bitwms'
import { WarehouseApi } from '@/api/erp/stock/warehouse'
import { WarehouseAreaApi } from '@/api/erp/stock/warehousearea'
import { StockApi } from '@/api/erp/stock/stock'
import { WarehouseLocationApi } from '@/api/erp/stock/warehouselocation'
defineOptions({ name: 'ErpBitWmsOut' })
const DEFAULT_WAREHOUSE_NAME = '样品仓'
const DEFAULT_AREA_NAME = '必硕三楼'
const message = useMessage()
const formRef = ref()
const submitLoading = ref(false)
@ -71,23 +78,25 @@ const currentStock = ref<number | undefined>(undefined)
const sampleList = ref<any[]>([])
const warehouseList = ref<any[]>([])
const areaList = ref<any[]>([])
const locationList = ref<any[]>([])
const formData = reactive<any>({
productId: undefined,
warehouseId: undefined,
areaId: undefined,
locationId: undefined,
count: 1,
outReason: undefined,
remark: undefined
})
const formRules = reactive({
productId: [{ required: true, message: '请选择样品', trigger: 'change' }],
warehouseId: [{ required: true, message: '请选择库', trigger: 'change' }],
locationId: [{ required: true, message: '请选择', trigger: 'change' }],
count: [{ required: true, message: '请输入数量', trigger: 'blur' }],
outReason: [{ required: true, message: '请选择出库原因', trigger: 'change' }]
})
const filteredAreaList = computed(() => {
if (!formData.warehouseId) return areaList.value
return areaList.value.filter((item) => item.warehouseId === formData.warehouseId)
const filteredLocationList = computed(() => {
if (!formData.warehouseId || !formData.areaId) return []
return locationList.value.filter((item) => item.warehouseId === formData.warehouseId && item.areaId === formData.areaId)
})
const currentStockText = computed(() => {
if (stockLoading.value) return '查询中...'
@ -95,27 +104,57 @@ const currentStockText = computed(() => {
})
const formatSampleLabel = (item: any) => `${item.barCode || item.code || '-'} / ${item.name || '-'}`
const handleWarehouseChange = () => {
formData.areaId = undefined
const formatLocationLabel = (item: any) => `${item.code || '-'} / ${item.name || '-'}`
const applyDefaultWarehouseArea = () => {
const warehouse = warehouseList.value.find((item) => item.name === DEFAULT_WAREHOUSE_NAME)
if (!warehouse) {
formData.warehouseId = undefined
formData.areaId = undefined
return
}
formData.warehouseId = warehouse.id
const area = areaList.value.find(
(item) => item.warehouseId === warehouse.id && item.areaName === DEFAULT_AREA_NAME
)
formData.areaId = area?.id
}
const handleLocationChange = (locationId?: number) => {
const location = locationList.value.find((item) => item.id === locationId)
if (!location) {
currentStock.value = undefined
return
}
formData.warehouseId = location.warehouseId
formData.areaId = location.areaId
loadCurrentStock()
}
const loadCurrentStock = async () => {
if (!formData.productId || !formData.warehouseId) {
if (!formData.productId || !formData.locationId) {
currentStock.value = undefined
return
}
stockLoading.value = true
try {
const data = await StockApi.getStock2(formData.productId, formData.warehouseId, formData.areaId)
currentStock.value = data?.count || 0
currentStock.value = await BitWmsApi.getLocationStockCount(
formData.productId,
formData.locationId
)
} finally {
stockLoading.value = false
}
}
const resetForm = () => {
formRef.value?.resetFields()
const resetInnerFormData = () => {
formData.productId = undefined
formData.locationId = undefined
formData.count = 1
formData.outReason = undefined
formData.remark = undefined
currentStock.value = undefined
applyDefaultWarehouseArea()
}
const resetForm = () => {
formRef.value?.resetFields()
resetInnerFormData()
}
const submitForm = async () => {
await formRef.value.validate()
@ -130,13 +169,16 @@ const submitForm = async () => {
}
onMounted(async () => {
const [samples, warehouses, areas] = await Promise.all([
const [samples, warehouses, areas, locations] = await Promise.all([
BitWmsApi.getSampleSimpleList(),
WarehouseApi.getWarehouseSimpleList(),
WarehouseAreaApi.getWarehouseAreaPage({ pageNo: 1, pageSize: 100 })
WarehouseAreaApi.getWarehouseAreaPage({ pageNo: 1, pageSize: 100 }),
WarehouseLocationApi.getWarehouseLocationPage({ pageNo: 1, pageSize: 100 })
])
sampleList.value = samples || []
warehouseList.value = warehouses || []
areaList.value = areas.list || []
locationList.value = locations.list || []
resetInnerFormData()
})
</script>

@ -47,6 +47,7 @@
clearable
filterable
class="!w-220px"
@change="handleAreaChange"
>
<el-option
v-for="item in filteredAreaList"
@ -56,6 +57,22 @@
/>
</el-select>
</el-form-item>
<el-form-item label="库位" prop="locationId">
<el-select
v-model="queryParams.locationId"
placeholder="请选择库位"
clearable
filterable
class="!w-240px"
>
<el-option
v-for="item in filteredLocationList"
:key="item.id"
:label="formatLocationLabel(item)"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="业务单号" prop="bizNo">
<el-input
v-model="queryParams.bizNo"
@ -93,6 +110,8 @@
<!-- <el-table-column label="分类" align="center" prop="categoryName" min-width="120" /> -->
<el-table-column label="仓库" align="center" prop="warehouseName" min-width="140" />
<el-table-column label="库区" align="center" prop="areaName" min-width="120" />
<el-table-column label="库位编码" align="center" prop="locationCode" min-width="130" />
<el-table-column label="库位名称" align="center" prop="locationName" min-width="140" />
<el-table-column label="变动数量" align="center" prop="count" min-width="120">
<template #default="{ row }">
<span :class="getDirectionClass(row.bizDirection)">{{
@ -124,9 +143,9 @@
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import { BitWmsApi } from '@/api/erp/bitwms'
import { StockRecordApi } from '@/api/erp/stock/record'
import { WarehouseApi } from '@/api/erp/stock/warehouse'
import { WarehouseAreaApi } from '@/api/erp/stock/warehousearea'
import { WarehouseLocationApi } from '@/api/erp/stock/warehouselocation'
defineOptions({ name: 'ErpBitWmsRecord' })
@ -137,23 +156,30 @@ const queryFormRef = ref()
const sampleList = ref<any[]>([])
const warehouseList = ref<any[]>([])
const areaList = ref<any[]>([])
const locationList = ref<any[]>([])
const queryParams = reactive<any>({
pageNo: 1,
pageSize: 10,
productId: undefined,
warehouseId: undefined,
areaId: undefined,
bizNo: undefined,
isSample: true,
bizUnit: 'BIT',
bitWmsOnly: true
locationId: undefined,
bizNo: undefined
})
const filteredAreaList = computed(() => {
if (!queryParams.warehouseId) return areaList.value
return areaList.value.filter((item) => item.warehouseId === queryParams.warehouseId)
})
const filteredLocationList = computed(() =>
locationList.value.filter((item) => {
if (queryParams.warehouseId && item.warehouseId !== queryParams.warehouseId) return false
if (queryParams.areaId && item.areaId !== queryParams.areaId) return false
return true
})
)
const formatSampleLabel = (item: any) => `${item.barCode || item.code || '-'} / ${item.name || '-'}`
const formatLocationLabel = (item: any) => `${item.code || '-'} / ${item.name || '-'}`
const isStockIn = (direction?: string) => direction === '入库'
const isStockOut = (direction?: string) => direction === '出库'
const getDirectionTagType = (direction?: string) => {
@ -195,7 +221,7 @@ const buildQueryParams = () =>
const getList = async () => {
loading.value = true
try {
const data = await StockRecordApi.getStockRecordPage(buildQueryParams())
const data = await BitWmsApi.getLocationStockRecordPage(buildQueryParams())
list.value = data.list || []
total.value = data.total || 0
} finally {
@ -204,6 +230,10 @@ const getList = async () => {
}
const handleWarehouseChange = () => {
queryParams.areaId = undefined
queryParams.locationId = undefined
}
const handleAreaChange = () => {
queryParams.locationId = undefined
}
const handleQuery = () => {
queryParams.pageNo = 1
@ -211,21 +241,20 @@ const handleQuery = () => {
}
const resetQuery = () => {
queryFormRef.value.resetFields()
queryParams.isSample = true
queryParams.bizUnit = 'BIT'
queryParams.bitWmsOnly = true
handleQuery()
}
onMounted(async () => {
const [samples, warehouses, areas] = await Promise.all([
const [samples, warehouses, areas, locations] = await Promise.all([
BitWmsApi.getSampleSimpleList(),
WarehouseApi.getWarehouseSimpleList(),
WarehouseAreaApi.getWarehouseAreaPage({ pageNo: 1, pageSize: 100 })
WarehouseAreaApi.getWarehouseAreaPage({ pageNo: 1, pageSize: 100 }),
WarehouseLocationApi.getWarehouseLocationPage({ pageNo: 1, pageSize: 100 })
])
sampleList.value = samples || []
warehouseList.value = warehouses || []
areaList.value = areas.list || []
locationList.value = locations.list || []
await getList()
})
</script>

@ -47,6 +47,7 @@
clearable
filterable
class="!w-220px"
@change="handleAreaChange"
>
<el-option
v-for="item in filteredAreaList"
@ -56,6 +57,22 @@
/>
</el-select>
</el-form-item>
<el-form-item label="库位" prop="locationId">
<el-select
v-model="queryParams.locationId"
placeholder="请选择库位"
clearable
filterable
class="!w-240px"
>
<el-option
v-for="item in filteredLocationList"
:key="item.id"
:label="formatLocationLabel(item)"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" />查询</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" />重置</el-button>
@ -78,6 +95,8 @@
<!-- <el-table-column label="样品分类" align="center" prop="categoryName" min-width="130" /> -->
<el-table-column label="仓库" align="center" prop="warehouseName" min-width="140" />
<el-table-column label="库区" align="center" prop="areaName" min-width="120" />
<el-table-column label="库位编码" align="center" prop="locationCode" min-width="130" />
<el-table-column label="库位名称" align="center" prop="locationName" min-width="140" />
<el-table-column label="库存" align="center" prop="count" min-width="120">
<template #default="{ row }">{{ formatCount(row.count) }}</template>
</el-table-column>
@ -97,9 +116,9 @@
<script setup lang="ts">
import { BitWmsApi } from '@/api/erp/bitwms'
import { StockApi } from '@/api/erp/stock/stock'
import { WarehouseApi } from '@/api/erp/stock/warehouse'
import { WarehouseAreaApi } from '@/api/erp/stock/warehousearea'
import { WarehouseLocationApi } from '@/api/erp/stock/warehouselocation'
defineOptions({ name: 'ErpBitWmsStock' })
@ -110,21 +129,29 @@ const queryFormRef = ref()
const sampleList = ref<any[]>([])
const warehouseList = ref<any[]>([])
const areaList = ref<any[]>([])
const locationList = ref<any[]>([])
const queryParams = reactive<any>({
pageNo: 1,
pageSize: 10,
productId: undefined,
warehouseId: undefined,
areaId: undefined,
isSample: true,
bizUnit: 'BIT'
locationId: undefined
})
const filteredAreaList = computed(() => {
if (!queryParams.warehouseId) return areaList.value
return areaList.value.filter((item) => item.warehouseId === queryParams.warehouseId)
})
const filteredLocationList = computed(() =>
locationList.value.filter((item) => {
if (queryParams.warehouseId && item.warehouseId !== queryParams.warehouseId) return false
if (queryParams.areaId && item.areaId !== queryParams.areaId) return false
return true
})
)
const formatSampleLabel = (item: any) => `${item.barCode || item.code || '-'} / ${item.name || '-'}`
const formatLocationLabel = (item: any) => `${item.code || '-'} / ${item.name || '-'}`
const formatCount = (value: number | string | undefined) => {
if (value === undefined || value === null || value === '') return '-'
const num = Number(value)
@ -139,7 +166,7 @@ const buildQueryParams = () =>
const getList = async () => {
loading.value = true
try {
const data = await StockApi.getStockPage(buildQueryParams())
const data = await BitWmsApi.getLocationStockPage(buildQueryParams())
list.value = data.list || []
total.value = data.total || 0
} finally {
@ -148,6 +175,10 @@ const getList = async () => {
}
const handleWarehouseChange = () => {
queryParams.areaId = undefined
queryParams.locationId = undefined
}
const handleAreaChange = () => {
queryParams.locationId = undefined
}
const handleQuery = () => {
queryParams.pageNo = 1
@ -155,20 +186,20 @@ const handleQuery = () => {
}
const resetQuery = () => {
queryFormRef.value.resetFields()
queryParams.isSample = true
queryParams.bizUnit = 'BIT'
handleQuery()
}
onMounted(async () => {
const [samples, warehouses, areas] = await Promise.all([
const [samples, warehouses, areas, locations] = await Promise.all([
BitWmsApi.getSampleSimpleList(),
WarehouseApi.getWarehouseSimpleList(),
WarehouseAreaApi.getWarehouseAreaPage({ pageNo: 1, pageSize: 100 })
WarehouseAreaApi.getWarehouseAreaPage({ pageNo: 1, pageSize: 100 }),
WarehouseLocationApi.getWarehouseLocationPage({ pageNo: 1, pageSize: 100 })
])
sampleList.value = samples || []
warehouseList.value = warehouses || []
areaList.value = areas.list || []
locationList.value = locations.list || []
await getList()
})
</script>

Loading…
Cancel
Save