diff --git a/src/api/erp/stock/warehousearea/index.ts b/src/api/erp/stock/warehousearea/index.ts
new file mode 100644
index 00000000..5d0b9296
--- /dev/null
+++ b/src/api/erp/stock/warehousearea/index.ts
@@ -0,0 +1,34 @@
+import request from '@/config/axios'
+
+export interface WarehouseAreaVO {
+ id: number
+ warehouseId: number
+ areaCode: string
+ areaName: string
+ areaSize: number
+ description: string
+ status: number
+ createTime: string
+}
+
+export const WarehouseAreaApi = {
+ getWarehouseAreaPage: async (params: any) => {
+ return await request.get({ url: `/erp/warehouse-area/page`, params })
+ },
+
+ getWarehouseArea: async (id: number) => {
+ return await request.get({ url: `/erp/warehouse-area/get?id=` + id })
+ },
+
+ createWarehouseArea: async (data: WarehouseAreaVO) => {
+ return await request.post({ url: `/erp/warehouse-area/create`, data })
+ },
+
+ updateWarehouseArea: async (data: WarehouseAreaVO) => {
+ return await request.put({ url: `/erp/warehouse-area/update`, data })
+ },
+
+ deleteWarehouseArea: async (id: number) => {
+ return await request.delete({ url: `/erp/warehouse-area/delete?id=` + id })
+ }
+}
diff --git a/src/api/erp/stock/warehouselocation/index.ts b/src/api/erp/stock/warehouselocation/index.ts
new file mode 100644
index 00000000..5bb7a0a1
--- /dev/null
+++ b/src/api/erp/stock/warehouselocation/index.ts
@@ -0,0 +1,40 @@
+import request from '@/config/axios'
+
+export interface WarehouseLocationVO {
+ id: number
+ warehouseId: number
+ areaId: number
+ code: string
+ name: string
+ areaSize: number
+ maxLoadWeight: number
+ positionX: number
+ positionY: number
+ positionZ: number
+ allowProductMix: boolean
+ allowBatchMix: boolean
+ status: number
+ createTime: string
+}
+
+export const WarehouseLocationApi = {
+ getWarehouseLocationPage: async (params: any) => {
+ return await request.get({ url: `/erp/warehouse-location/page`, params })
+ },
+
+ getWarehouseLocation: async (id: number) => {
+ return await request.get({ url: `/erp/warehouse-location/get?id=` + id })
+ },
+
+ createWarehouseLocation: async (data: WarehouseLocationVO) => {
+ return await request.post({ url: `/erp/warehouse-location/create`, data })
+ },
+
+ updateWarehouseLocation: async (data: WarehouseLocationVO) => {
+ return await request.put({ url: `/erp/warehouse-location/update`, data })
+ },
+
+ deleteWarehouseLocation: async (id: number) => {
+ return await request.delete({ url: `/erp/warehouse-location/delete?id=` + id })
+ }
+}
diff --git a/src/locales/en.ts b/src/locales/en.ts
index 5c7a1810..59c1851d 100644
--- a/src/locales/en.ts
+++ b/src/locales/en.ts
@@ -59,6 +59,8 @@ export default {
copy: 'Copy',
copySuccess: 'Copy Success',
copyError: 'Copy Error',
+ yes: 'Yes',
+ no: 'No',
code:'Auto-generate on Save'
},
ReportDashboard: {
@@ -287,6 +289,58 @@ export default {
cancel: 'cancel',
exportName: 'Warehouse.xls'
},
+ WarehouseArea: {
+ warehouseId: 'Warehouse',
+ areaCode: 'Area Code',
+ areaName: 'Area Name',
+ areaSize: 'Area Size (㎡)',
+ description: 'Description',
+ status: 'Status',
+ createTime: 'Create Time',
+ placeholderWarehouseId: 'Please select warehouse',
+ placeholderAreaCode: 'Please enter area code',
+ placeholderAreaName: 'Please enter area name',
+ placeholderAreaSize: 'Please enter area size',
+ placeholderDescription: 'Please enter description',
+ placeholderStatus: 'Please select status',
+ validatorWarehouseIdRequired: 'Warehouse is required',
+ validatorAreaCodeRequired: 'Area code is required',
+ validatorAreaNameRequired: 'Area name is required',
+ validatorStatusRequired: 'Status is required'
+ },
+ WarehouseLocation: {
+ warehouseId: 'Warehouse',
+ areaId: 'Area',
+ code: 'Location Code',
+ name: 'Location Name',
+ areaSize: 'Area Size (㎡)',
+ maxLoadWeight: 'Max Load Weight',
+ position: 'Position (X,Y,Z)',
+ positionX: 'Position X',
+ positionY: 'Position Y',
+ positionZ: 'Position Z',
+ allowProductMix: 'Allow Product Mix',
+ allowBatchMix: 'Allow Batch Mix',
+ status: 'Status',
+ createTime: 'Create Time',
+ placeholderWarehouseId: 'Please select warehouse',
+ placeholderAreaId: 'Please select area',
+ placeholderCode: 'Please enter location code',
+ placeholderName: 'Please enter location name',
+ placeholderAreaSize: 'Please enter area size',
+ placeholderMaxLoadWeight: 'Please enter max load weight',
+ placeholderPositionX: 'Please enter position X',
+ placeholderPositionY: 'Please enter position Y',
+ placeholderPositionZ: 'Please enter position Z',
+ placeholderStatus: 'Please select status',
+ validatorWarehouseIdRequired: 'Warehouse is required',
+ validatorAreaIdRequired: 'Area is required',
+ validatorCodeRequired: 'Location code is required',
+ validatorNameRequired: 'Location name is required',
+ validatorAllowProductMixRequired: 'Allow product mix is required',
+ validatorAllowBatchMixRequired: 'Allow batch mix is required',
+ validatorStatusRequired: 'Status is required'
+ },
Stock: {
product: 'Product',
warehouse: 'Warehouse',
diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts
index 8b896efa..d52c723e 100644
--- a/src/locales/zh-CN.ts
+++ b/src/locales/zh-CN.ts
@@ -59,6 +59,8 @@ export default {
copy: '复制',
copySuccess: '复制成功',
copyError: '复制失败',
+ yes: '是',
+ no: '否',
code: '编码保存后自动生成'
},
ReportDashboard: {
@@ -287,6 +289,58 @@ export default {
cancel: '取消',
exportName: '仓库.xls'
},
+ WarehouseArea: {
+ warehouseId: '所属仓库',
+ areaCode: '库区编码',
+ areaName: '库区名称',
+ areaSize: '面积(㎡)',
+ description: '库区描述',
+ status: '开启状态',
+ createTime: '创建时间',
+ placeholderWarehouseId: '请选择所属仓库',
+ placeholderAreaCode: '请输入库区编码',
+ placeholderAreaName: '请输入库区名称',
+ placeholderAreaSize: '请输入面积',
+ placeholderDescription: '请输入库区描述',
+ placeholderStatus: '请选择开启状态',
+ validatorWarehouseIdRequired: '所属仓库不能为空',
+ validatorAreaCodeRequired: '库区编码不能为空',
+ validatorAreaNameRequired: '库区名称不能为空',
+ validatorStatusRequired: '开启状态不能为空'
+ },
+ WarehouseLocation: {
+ warehouseId: '所属仓库',
+ areaId: '所属库区',
+ code: '库位编码',
+ name: '库位名称',
+ areaSize: '面积(㎡)',
+ maxLoadWeight: '最大载重量',
+ position: '库位位置(X,Y,Z)',
+ positionX: '位置X',
+ positionY: '位置Y',
+ positionZ: '位置Z',
+ allowProductMix: '允许产品混放',
+ allowBatchMix: '允许批次混放',
+ status: '开启状态',
+ createTime: '创建时间',
+ placeholderWarehouseId: '请选择所属仓库',
+ placeholderAreaId: '请选择所属库区',
+ placeholderCode: '请输入库位编码',
+ placeholderName: '请输入库位名称',
+ placeholderAreaSize: '请输入面积',
+ placeholderMaxLoadWeight: '请输入最大载重量',
+ placeholderPositionX: '请输入位置X',
+ placeholderPositionY: '请输入位置Y',
+ placeholderPositionZ: '请输入位置Z',
+ placeholderStatus: '请选择开启状态',
+ validatorWarehouseIdRequired: '所属仓库不能为空',
+ validatorAreaIdRequired: '所属库区不能为空',
+ validatorCodeRequired: '库位编码不能为空',
+ validatorNameRequired: '库位名称不能为空',
+ validatorAllowProductMixRequired: '是否允许产品混放不能为空',
+ validatorAllowBatchMixRequired: '是否允许批次混放不能为空',
+ validatorStatusRequired: '开启状态不能为空'
+ },
Stock: {
product: '产品',
warehouse: '仓库',
diff --git a/src/views/erp/warehousearea/WarehouseAreaForm.vue b/src/views/erp/warehousearea/WarehouseAreaForm.vue
new file mode 100644
index 00000000..83e87a00
--- /dev/null
+++ b/src/views/erp/warehousearea/WarehouseAreaForm.vue
@@ -0,0 +1,148 @@
+
+
+
+
+
diff --git a/src/views/erp/warehousearea/index.vue b/src/views/erp/warehousearea/index.vue
new file mode 100644
index 00000000..1feed687
--- /dev/null
+++ b/src/views/erp/warehousearea/index.vue
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('common.query') }}
+ {{ t('common.reset') }}
+
+ {{ t('action.add') }}
+
+
+
+
+
+
+
+
+
+ {{ getWarehouseName(scope.row.warehouseId) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('action.edit') }}
+
+
+ {{ t('action.del') }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/erp/warehouselocation/WarehouseLocationForm.vue b/src/views/erp/warehouselocation/WarehouseLocationForm.vue
new file mode 100644
index 00000000..f2fe9a1d
--- /dev/null
+++ b/src/views/erp/warehouselocation/WarehouseLocationForm.vue
@@ -0,0 +1,227 @@
+
+
+
+
+
diff --git a/src/views/erp/warehouselocation/index.vue b/src/views/erp/warehouselocation/index.vue
new file mode 100644
index 00000000..9d92f67c
--- /dev/null
+++ b/src/views/erp/warehouselocation/index.vue
@@ -0,0 +1,263 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('common.query') }}
+ {{ t('common.reset') }}
+
+ {{ t('action.add') }}
+
+
+
+
+
+
+
+
+
+ {{ getWarehouseName(scope.row.warehouseId) }}
+
+
+
+
+ {{ getAreaName(scope.row.areaId) }}
+
+
+
+
+
+
+
+
+ {{ scope.row.positionX ?? '-' }}, {{ scope.row.positionY ?? '-' }}, {{ scope.row.positionZ ?? '-' }}
+
+
+
+
+
+ {{ scope.row.allowProductMix ? t('common.yes') : t('common.no') }}
+
+
+
+
+
+
+ {{ scope.row.allowBatchMix ? t('common.yes') : t('common.no') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('action.edit') }}
+
+
+ {{ t('action.del') }}
+
+
+
+
+
+
+
+
+
+
+