diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml
index c01313fc..5321a160 100644
--- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml
+++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml
@@ -181,6 +181,40 @@
+
+
+ 分页查
+
+
+
+
+
+ 单查
+
+
+
+
+
+ 增
+
+
+
+
+
+
+ 更
+
+
+
+
+
+
+
+ 删
+
+
+
+
分页查
@@ -215,6 +249,74 @@
+
+
+ 分页查
+
+
+
+
+
+ 单查
+
+
+
+
+
+ 增
+
+
+
+
+
+
+ 更
+
+
+
+
+
+
+
+ 删
+
+
+
+
+
+
+ 分页查
+
+
+
+
+
+ 单查
+
+
+
+
+
+ 增
+
+
+
+
+
+
+ 更
+
+
+
+
+
+
+
+ 删
+
+
+
+
增
diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/MaterialController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/MaterialController.cs
new file mode 100644
index 00000000..c1ca9d68
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/MaterialController.cs
@@ -0,0 +1,81 @@
+using Microsoft.AspNetCore.Mvc;
+using Yi.Framework.Common.Models;
+using Yi.Framework.DtoModel.ERP.Material;
+using Yi.Framework.Interface.ERP;
+
+namespace Yi.Framework.ApiMicroservice.Controllers.ERP
+{
+ [ApiController]
+ [Route("api/[controller]/[action]")]
+ public class MaterialController : ControllerBase
+ {
+ private readonly ILogger _logger;
+ private readonly IMaterialService _materialService;
+ public MaterialController(ILogger logger, IMaterialService materialService)
+ {
+ _logger = logger;
+ _materialService = materialService;
+ }
+
+ ///
+ /// 分页查
+ ///
+ ///
+ [HttpGet]
+ public async Task PageList([FromQuery] MaterialCreateUpdateInput input, [FromQuery] PageParModel page)
+ {
+ var result = await _materialService.PageListAsync(input, page);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 单查
+ ///
+ ///
+ [HttpGet]
+ [Route("{id}")]
+ public async Task GetById(long id)
+ {
+ var result = await _materialService.GetByIdAsync(id);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 增
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task Create(MaterialCreateUpdateInput input)
+ {
+ var result = await _materialService.CreateAsync(input);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 更
+ ///
+ ///
+ ///
+ ///
+ [HttpPut]
+ [Route("{id}")]
+ public async Task Update(long id, MaterialCreateUpdateInput input)
+ {
+ var result = await _materialService.UpdateAsync(id, input);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 删
+ ///
+ ///
+ ///
+ [HttpDelete]
+ public async Task Del(List ids)
+ {
+ await _materialService.DeleteAsync(ids);
+ return Result.Success();
+ }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/UnitController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/UnitController.cs
new file mode 100644
index 00000000..ae3fccb5
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/UnitController.cs
@@ -0,0 +1,81 @@
+using Microsoft.AspNetCore.Mvc;
+using Yi.Framework.Common.Models;
+using Yi.Framework.DtoModel.ERP.Unit;
+using Yi.Framework.Interface.ERP;
+
+namespace Yi.Framework.ApiMicroservice.Controllers.ERP
+{
+ [ApiController]
+ [Route("api/[controller]/[action]")]
+ public class UnitController : ControllerBase
+ {
+ private readonly ILogger _logger;
+ private readonly IUnitService _unitService;
+ public UnitController(ILogger logger, IUnitService unitService)
+ {
+ _logger = logger;
+ _unitService = unitService;
+ }
+
+ ///
+ /// 分页查
+ ///
+ ///
+ [HttpGet]
+ public async Task PageList([FromQuery] UnitCreateUpdateInput input, [FromQuery] PageParModel page)
+ {
+ var result = await _unitService.PageListAsync(input, page);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 单查
+ ///
+ ///
+ [HttpGet]
+ [Route("{id}")]
+ public async Task GetById(long id)
+ {
+ var result = await _unitService.GetByIdAsync(id);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 增
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task Create(UnitCreateUpdateInput input)
+ {
+ var result = await _unitService.CreateAsync(input);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 更
+ ///
+ ///
+ ///
+ ///
+ [HttpPut]
+ [Route("{id}")]
+ public async Task Update(long id, UnitCreateUpdateInput input)
+ {
+ var result = await _unitService.UpdateAsync(id, input);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 删
+ ///
+ ///
+ ///
+ [HttpDelete]
+ public async Task Del(List ids)
+ {
+ await _unitService.DeleteAsync(ids);
+ return Result.Success();
+ }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/WarehouseController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/WarehouseController.cs
new file mode 100644
index 00000000..56cd4964
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/WarehouseController.cs
@@ -0,0 +1,81 @@
+using Microsoft.AspNetCore.Mvc;
+using Yi.Framework.Common.Models;
+using Yi.Framework.DtoModel.ERP.Warehouse;
+using Yi.Framework.Interface.ERP;
+
+namespace Yi.Framework.ApiMicroservice.Controllers.ERP
+{
+ [ApiController]
+ [Route("api/[controller]/[action]")]
+ public class WarehouseController : ControllerBase
+ {
+ private readonly ILogger _logger;
+ private readonly IWarehouseService _warehouseService;
+ public WarehouseController(ILogger logger, IWarehouseService warehouseService)
+ {
+ _logger = logger;
+ _warehouseService = warehouseService;
+ }
+
+ ///
+ /// 分页查
+ ///
+ ///
+ [HttpGet]
+ public async Task PageList([FromQuery] WarehouseCreateUpdateInput input, [FromQuery] PageParModel page)
+ {
+ var result = await _warehouseService.PageListAsync(input, page);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 单查
+ ///
+ ///
+ [HttpGet]
+ [Route("{id}")]
+ public async Task GetById(long id)
+ {
+ var result = await _warehouseService.GetByIdAsync(id);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 增
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task Create(WarehouseCreateUpdateInput input)
+ {
+ var result = await _warehouseService.CreateAsync(input);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 更
+ ///
+ ///
+ ///
+ ///
+ [HttpPut]
+ [Route("{id}")]
+ public async Task Update(long id, WarehouseCreateUpdateInput input)
+ {
+ var result = await _warehouseService.UpdateAsync(id, input);
+ return Result.Success().SetData(result);
+ }
+
+ ///
+ /// 删
+ ///
+ ///
+ ///
+ [HttpDelete]
+ public async Task Del(List ids)
+ {
+ await _warehouseService.DeleteAsync(ids);
+ return Result.Success();
+ }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db
index 41e9f4b6..340aacc0 100644
Binary files a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db and b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db differ
diff --git a/Yi.Framework.Net6/Yi.Framework.Common/Enum/StateEnum.cs b/Yi.Framework.Net6/Yi.Framework.Common/Enum/StateEnum.cs
new file mode 100644
index 00000000..3ef63873
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.Common/Enum/StateEnum.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Yi.Framework.Common.Enum
+{
+ public enum StateEnum
+ {
+ Normal=0,
+ Disable=1
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/ConstConfig/MaterialConst.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/ConstConfig/MaterialConst.cs
new file mode 100644
index 00000000..2abffb7e
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/ConstConfig/MaterialConst.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Yi.Framework.DtoModel.ERP.Material.ConstConfig
+{
+ public class MaterialConst
+ {
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/MapperConfig/MaterialProfile.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/MapperConfig/MaterialProfile.cs
new file mode 100644
index 00000000..d4dd3b97
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/MapperConfig/MaterialProfile.cs
@@ -0,0 +1,20 @@
+using AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Model.ERP.Entitys;
+
+namespace Yi.Framework.DtoModel.ERP.Material.MapperConfig
+{
+ public class SuppliERProfile:Profile
+ {
+ public SuppliERProfile()
+ {
+ CreateMap();
+ CreateMap();
+
+ }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/MaterialCreateUpdateInput.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/MaterialCreateUpdateInput.cs
new file mode 100644
index 00000000..372447b1
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/MaterialCreateUpdateInput.cs
@@ -0,0 +1,18 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Model.Base;
+
+namespace Yi.Framework.DtoModel.ERP.Material
+{
+ public class MaterialCreateUpdateInput : EntityDto
+ {
+ public string Code { get; set; }
+ public string Name { get; set; }
+ public string UnitName { get; set; }
+ public string Remarks { get; set; }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/MaterialGetListOutput.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/MaterialGetListOutput.cs
new file mode 100644
index 00000000..71f5c573
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Material/MaterialGetListOutput.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Model.Base;
+
+namespace Yi.Framework.DtoModel.ERP.Material
+{
+ public class MaterialGetListOutput: EntityDto
+ {
+ public string Code { get; set; }
+ public string Name { get; set; }
+ public string UnitName { get; set; }
+ public string Remarks { get; set; }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/ConstConfig/UnitConst.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/ConstConfig/UnitConst.cs
new file mode 100644
index 00000000..f322d640
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/ConstConfig/UnitConst.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Yi.Framework.DtoModel.ERP.Unit.ConstConfig
+{
+ public class UnitConst
+ {
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/MapperConfig/UnitProfile.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/MapperConfig/UnitProfile.cs
new file mode 100644
index 00000000..d4c74ff8
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/MapperConfig/UnitProfile.cs
@@ -0,0 +1,20 @@
+using AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Model.ERP.Entitys;
+
+namespace Yi.Framework.DtoModel.ERP.Unit.MapperConfig
+{
+ public class SuppliERProfile:Profile
+ {
+ public SuppliERProfile()
+ {
+ CreateMap();
+ CreateMap();
+
+ }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/UnitCreateUpdateInput.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/UnitCreateUpdateInput.cs
new file mode 100644
index 00000000..c6f3452f
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/UnitCreateUpdateInput.cs
@@ -0,0 +1,17 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Model.Base;
+
+namespace Yi.Framework.DtoModel.ERP.Unit
+{
+ public class UnitCreateUpdateInput : EntityDto
+ {
+ public string Code { get; set; }
+ public string Name { get; set; }
+ public string Remarks { get; set; }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/UnitGetListOutput.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/UnitGetListOutput.cs
new file mode 100644
index 00000000..ceef9916
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Unit/UnitGetListOutput.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Model.Base;
+
+namespace Yi.Framework.DtoModel.ERP.Unit
+{
+ public class UnitGetListOutput: EntityDto
+ {
+ public string Code { get; set; }
+ public string Name { get; set; }
+ public string Remarks { get; set; }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/ConstConfig/WarehouseConst.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/ConstConfig/WarehouseConst.cs
new file mode 100644
index 00000000..de97cf03
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/ConstConfig/WarehouseConst.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Yi.Framework.DtoModel.ERP.Warehouse.ConstConfig
+{
+ public class WarehouseConst
+ {
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/MapperConfig/WarehouseProfile.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/MapperConfig/WarehouseProfile.cs
new file mode 100644
index 00000000..c282a68e
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/MapperConfig/WarehouseProfile.cs
@@ -0,0 +1,20 @@
+using AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Model.ERP.Entitys;
+
+namespace Yi.Framework.DtoModel.ERP.Warehouse.MapperConfig
+{
+ public class SuppliERProfile:Profile
+ {
+ public SuppliERProfile()
+ {
+ CreateMap();
+ CreateMap();
+
+ }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/WarehouseCreateUpdateInput.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/WarehouseCreateUpdateInput.cs
new file mode 100644
index 00000000..05bd02ea
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/WarehouseCreateUpdateInput.cs
@@ -0,0 +1,19 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Common.Enum;
+using Yi.Framework.Model.Base;
+
+namespace Yi.Framework.DtoModel.ERP.Warehouse
+{
+ public class WarehouseCreateUpdateInput : EntityDto
+ {
+ public string Code { get; set; }
+ public string Name { get; set; }
+ public string Remarks { get; set; }
+ public StateEnum State { get; set; }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/WarehouseGetListOutput.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/WarehouseGetListOutput.cs
new file mode 100644
index 00000000..57c2d626
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Warehouse/WarehouseGetListOutput.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Common.Enum;
+using Yi.Framework.Model.Base;
+
+namespace Yi.Framework.DtoModel.ERP.Warehouse
+{
+ public class WarehouseGetListOutput: EntityDto
+ {
+ public string Code { get; set; }
+ public string Name { get; set; }
+ public string Remarks { get; set; }
+ public StateEnum State { get; set; }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IMaterialService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IMaterialService.cs
new file mode 100644
index 00000000..db55544e
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IMaterialService.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Common.Models;
+using Yi.Framework.DtoModel.ERP.Material;
+using Yi.Framework.Interface.Base.Crud;
+
+namespace Yi.Framework.Interface.ERP
+{
+ public interface IMaterialService : ICrudAppService
+ {
+ Task>> PageListAsync(MaterialCreateUpdateInput input, PageParModel page);
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IUnitService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IUnitService.cs
new file mode 100644
index 00000000..5293cef4
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IUnitService.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Common.Models;
+using Yi.Framework.DtoModel.ERP.Unit;
+using Yi.Framework.Interface.Base.Crud;
+
+namespace Yi.Framework.Interface.ERP
+{
+ public interface IUnitService : ICrudAppService
+ {
+ Task>> PageListAsync(UnitCreateUpdateInput input, PageParModel page);
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IWarehouseService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IWarehouseService.cs
new file mode 100644
index 00000000..95365e6b
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IWarehouseService.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Common.Models;
+using Yi.Framework.DtoModel.ERP.Warehouse;
+using Yi.Framework.Interface.Base.Crud;
+
+namespace Yi.Framework.Interface.ERP
+{
+ public interface IWarehouseService : ICrudAppService
+ {
+ Task>> PageListAsync(WarehouseCreateUpdateInput input, PageParModel page);
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/MaterialEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/MaterialEntity.cs
new file mode 100644
index 00000000..17c8bb78
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/MaterialEntity.cs
@@ -0,0 +1,50 @@
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Model.Base;
+
+namespace Yi.Framework.Model.ERP.Entitys
+{
+ ///
+ /// 物料定义
+ ///
+ [SugarTable("Material")]
+ public class MaterialEntity : IEntity, IMultiTenant
+ {
+ ///
+ /// 主键
+ ///
+ [JsonConverter(typeof(ValueToStringConverter))]
+ [SugarColumn(IsPrimaryKey = true)]
+ public long Id { get; set; }
+
+ ///
+ /// 租户id
+ ///
+ public Guid? TenantId { get; set; }
+
+ ///
+ /// 物料编码
+ ///
+ public string Code { get; set; }
+
+ ///
+ /// 物料名称
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// 物料单位
+ ///
+ public string UnitName { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public string Remarks { get; set; }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/PurchaseDetailsEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/PurchaseDetailsEntity.cs
index 7be7da5d..fa3ab6ac 100644
--- a/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/PurchaseDetailsEntity.cs
+++ b/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/PurchaseDetailsEntity.cs
@@ -10,7 +10,7 @@ using Yi.Framework.Model.Base;
namespace Yi.Framework.Model.ERP.Entitys
{
///
- /// 采购订单字表
+ /// 采购订单子表
///
[SugarTable("PurchaseDetail")]
public class PurchaseDetailsEntity : IEntity, IMultiTenant
diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/UnitEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/UnitEntity.cs
new file mode 100644
index 00000000..3d9e65c7
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/UnitEntity.cs
@@ -0,0 +1,45 @@
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Model.Base;
+
+namespace Yi.Framework.Model.ERP.Entitys
+{
+ ///
+ /// 单位定义
+ ///
+ [SugarTable("Unit")]
+ public class UnitEntity : IEntity, IMultiTenant
+ {
+ ///
+ /// 主键
+ ///
+ [JsonConverter(typeof(ValueToStringConverter))]
+ [SugarColumn(IsPrimaryKey = true)]
+ public long Id { get; set; }
+
+ ///
+ /// 租户id
+ ///
+ public Guid? TenantId { get; set; }
+
+ ///
+ /// 单位编码
+ ///
+ public string Code { get; set; }
+
+ ///
+ /// 单位名称
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public string Remarks { get; set; }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/WarehouseEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/WarehouseEntity.cs
new file mode 100644
index 00000000..52abcf65
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/WarehouseEntity.cs
@@ -0,0 +1,51 @@
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Common.Enum;
+using Yi.Framework.Model.Base;
+
+namespace Yi.Framework.Model.ERP.Entitys
+{
+ ///
+ /// 仓库定义
+ ///
+ [SugarTable("Warehouse")]
+ public class WarehouseEntity : IEntity, IMultiTenant
+ {
+ ///
+ /// 主键
+ ///
+ [JsonConverter(typeof(ValueToStringConverter))]
+ [SugarColumn(IsPrimaryKey = true)]
+ public long Id { get; set; }
+
+ ///
+ /// 租户id
+ ///
+ public Guid? TenantId { get; set; }
+
+ ///
+ /// 仓库编码
+ ///
+ public string Code { get; set; }
+
+ ///
+ /// 仓库名称
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public string Remarks { get; set; }
+
+ ///
+ /// 状态
+ ///
+ public StateEnum State { get; set; }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.Service/ERP/MaterialService.cs b/Yi.Framework.Net6/Yi.Framework.Service/ERP/MaterialService.cs
new file mode 100644
index 00000000..a677be40
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.Service/ERP/MaterialService.cs
@@ -0,0 +1,32 @@
+using AutoMapper;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Common.Models;
+using Yi.Framework.DtoModel.ERP.Material;
+using Yi.Framework.Interface.ERP;
+using Yi.Framework.Model.ERP.Entitys;
+using Yi.Framework.Repository;
+using Yi.Framework.Service.Base.Crud;
+
+namespace Yi.Framework.Service.ERP
+{
+ public class MaterialService : CrudAppService, IMaterialService
+ {
+ public MaterialService(IRepository repository, IMapper mapper) : base(repository, mapper)
+ {
+ }
+ public async Task>> PageListAsync(MaterialCreateUpdateInput input, PageParModel page)
+ {
+ RefAsync totalNumber = 0;
+ var data = await Repository._DbQueryable
+ .WhereIF(input.Code is not null,u=>u.Code.Contains(input.Code))
+ .WhereIF(input.Name is not null, u => u.Name.Contains(input.Name))
+ .ToPageListAsync(page.PageNum, page.PageSize, totalNumber);
+ return new PageModel> { Total = totalNumber.Value, Data = await MapToGetListOutputDtosAsync(data) };
+ }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.Service/ERP/UnitService.cs b/Yi.Framework.Net6/Yi.Framework.Service/ERP/UnitService.cs
new file mode 100644
index 00000000..bb850287
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.Service/ERP/UnitService.cs
@@ -0,0 +1,32 @@
+using AutoMapper;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Common.Models;
+using Yi.Framework.DtoModel.ERP.Unit;
+using Yi.Framework.Interface.ERP;
+using Yi.Framework.Model.ERP.Entitys;
+using Yi.Framework.Repository;
+using Yi.Framework.Service.Base.Crud;
+
+namespace Yi.Framework.Service.ERP
+{
+ public class UnitService : CrudAppService, IUnitService
+ {
+ public UnitService(IRepository repository, IMapper mapper) : base(repository, mapper)
+ {
+ }
+ public async Task>> PageListAsync(UnitCreateUpdateInput input, PageParModel page)
+ {
+ RefAsync totalNumber = 0;
+ var data = await Repository._DbQueryable
+ .WhereIF(input.Code is not null,u=>u.Code.Contains(input.Code))
+ .WhereIF(input.Name is not null, u => u.Name.Contains(input.Name))
+ .ToPageListAsync(page.PageNum, page.PageSize, totalNumber);
+ return new PageModel> { Total = totalNumber.Value, Data = await MapToGetListOutputDtosAsync(data) };
+ }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.Service/ERP/WarehouseService.cs b/Yi.Framework.Net6/Yi.Framework.Service/ERP/WarehouseService.cs
new file mode 100644
index 00000000..7159a201
--- /dev/null
+++ b/Yi.Framework.Net6/Yi.Framework.Service/ERP/WarehouseService.cs
@@ -0,0 +1,32 @@
+using AutoMapper;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Common.Models;
+using Yi.Framework.DtoModel.ERP.Warehouse;
+using Yi.Framework.Interface.ERP;
+using Yi.Framework.Model.ERP.Entitys;
+using Yi.Framework.Repository;
+using Yi.Framework.Service.Base.Crud;
+
+namespace Yi.Framework.Service.ERP
+{
+ public class WarehouseService : CrudAppService, IWarehouseService
+ {
+ public WarehouseService(IRepository repository, IMapper mapper) : base(repository, mapper)
+ {
+ }
+ public async Task>> PageListAsync(WarehouseCreateUpdateInput input, PageParModel page)
+ {
+ RefAsync totalNumber = 0;
+ var data = await Repository._DbQueryable
+ .WhereIF(input.Code is not null,u=>u.Code.Contains(input.Code))
+ .WhereIF(input.Name is not null, u => u.Name.Contains(input.Name))
+ .ToPageListAsync(page.PageNum, page.PageSize, totalNumber);
+ return new PageModel> { Total = totalNumber.Value, Data = await MapToGetListOutputDtosAsync(data) };
+ }
+ }
+}
diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Program.cs b/Yi.Framework.Net6/Yi.Framework.Template/Program.cs
index 0961099d..f4580ffc 100644
--- a/Yi.Framework.Net6/Yi.Framework.Template/Program.cs
+++ b/Yi.Framework.Net6/Yi.Framework.Template/Program.cs
@@ -7,7 +7,7 @@ TemplateFactory templateFactory = new();
//选择需要生成的模板提供者
string modelName = "ERP";
-List entityNames =new (){ "Supplier", "Purchase", "PurchaseDetails" };
+List entityNames =new (){ "_" };
foreach (var entityName in entityNames)
{
diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ConstTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ConstTemplateProvider.cs
index 8cbed5bd..93a8a74e 100644
--- a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ConstTemplateProvider.cs
+++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ConstTemplateProvider.cs
@@ -12,7 +12,7 @@ namespace Yi.Framework.Template.Provider.Server
{
public ConstTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
{
- BuildPath = $@"..\..\..\Code_Server\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\ConstConfig\{TemplateConst.EntityName}Const.cs";
+ BuildPath = $@"..\..\..\..\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\ConstConfig\{TemplateConst.EntityName}Const.cs";
TemplatePath = $@"..\..\..\Template\Server\ConstTemplate.txt";
}
}
diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ControllerTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ControllerTemplateProvider.cs
index 1ed12e25..60612b5d 100644
--- a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ControllerTemplateProvider.cs
+++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ControllerTemplateProvider.cs
@@ -12,7 +12,7 @@ namespace Yi.Framework.Template.Provider.Server
{
public ControllerTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
{
- BuildPath = $@"..\..\..\Code_Server\Yi.Framework.ApiMicroservice\Controllers\{TemplateConst.ModelName}\{TemplateConst.EntityName}Controller.cs";
+ BuildPath = $@"..\..\..\..\Yi.Framework.ApiMicroservice\Controllers\{TemplateConst.ModelName}\{TemplateConst.EntityName}Controller.cs";
TemplatePath = $@"..\..\..\Template\Server\ControllerTemplate.txt";
}
}
diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/CreateUpdateInputTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/CreateUpdateInputTemplateProvider.cs
index b808d7ef..a79165fa 100644
--- a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/CreateUpdateInputTemplateProvider.cs
+++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/CreateUpdateInputTemplateProvider.cs
@@ -12,7 +12,7 @@ namespace Yi.Framework.Template.Provider.Server
{
public CreateUpdateInputTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
{
- BuildPath = $@"..\..\..\Code_Server\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\{TemplateConst.EntityName}CreateUpdateInput.cs";
+ BuildPath = $@"..\..\..\..\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\{TemplateConst.EntityName}CreateUpdateInput.cs";
TemplatePath = $@"..\..\..\Template\Server\CreateUpdateInputTemplate.txt";
EntityPath = $@"..\..\..\..\Yi.Framework.Model\{TemplateConst.ModelName}\Entitys\{TemplateConst.EntityName}Entity.cs";
}
diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/GetListOutputTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/GetListOutputTemplateProvider.cs
index fa6df140..3ad40150 100644
--- a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/GetListOutputTemplateProvider.cs
+++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/GetListOutputTemplateProvider.cs
@@ -12,7 +12,7 @@ namespace Yi.Framework.Template.Provider.Server
{
public GetListOutputTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
{
- BuildPath = $@"..\..\..\Code_Server\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\{TemplateConst.EntityName}GetListOutput.cs";
+ BuildPath = $@"..\..\..\..\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\{TemplateConst.EntityName}GetListOutput.cs";
TemplatePath = $@"..\..\..\Template\Server\GetListOutputTemplate.txt";
EntityPath = $@"..\..\..\..\Yi.Framework.Model\{TemplateConst.ModelName}\Entitys\{TemplateConst.EntityName}Entity.cs";
}
diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/IServceTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/IServceTemplateProvider.cs
index fa53c8c6..8aad323a 100644
--- a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/IServceTemplateProvider.cs
+++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/IServceTemplateProvider.cs
@@ -12,7 +12,7 @@ namespace Yi.Framework.Template.Provider.Server
{
public IServceTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
{
- BuildPath = $@"..\..\..\Code_Server\Yi.Framework.Interface\{TemplateConst.ModelName}\I{TemplateConst.EntityName}Service.cs";
+ BuildPath = $@"..\..\..\..\Yi.Framework.Interface\{TemplateConst.ModelName}\I{TemplateConst.EntityName}Service.cs";
TemplatePath = $@"..\..\..\Template\Server\IServiceTemplate.txt";
}
}
diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ProfileTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ProfileTemplateProvider.cs
index 5211c537..d72f3ba4 100644
--- a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ProfileTemplateProvider.cs
+++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ProfileTemplateProvider.cs
@@ -12,7 +12,7 @@ namespace Yi.Framework.Template.Provider.Server
{
public ProfileTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
{
- BuildPath = $@"..\..\..\Code_Server\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\MapperConfig\{TemplateConst.EntityName}Profile.cs";
+ BuildPath = $@"..\..\..\..\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\MapperConfig\{TemplateConst.EntityName}Profile.cs";
TemplatePath = $@"..\..\..\Template\Server\ProfileTemplate.txt";
}
}
diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ServceTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ServceTemplateProvider.cs
index 79a0695b..9322e2b2 100644
--- a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ServceTemplateProvider.cs
+++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ServceTemplateProvider.cs
@@ -12,7 +12,7 @@ namespace Yi.Framework.Template.Provider.Server
{
public ServceTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
{
- BuildPath = $@"..\..\..\Code_Server\Yi.Framework.Service\{TemplateConst.ModelName}\{TemplateConst.EntityName}Service.cs";
+ BuildPath = $@"..\..\..\..\Yi.Framework.Service\{TemplateConst.ModelName}\{TemplateConst.EntityName}Service.cs";
TemplatePath = $@"..\..\..\Template\Server\ServiceTemplate.txt";
}
}
diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Site/ApiTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Site/ApiTemplateProvider.cs
index 8f3afb2e..0d02135a 100644
--- a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Site/ApiTemplateProvider.cs
+++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Site/ApiTemplateProvider.cs
@@ -12,7 +12,7 @@ namespace Yi.Framework.Template.Provider.Site
{
public ApiTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
{
- BuildPath = $@"..\..\..\Code_Site\src\api\{TemplateConst.ModelName}\{TemplateConst.LowerEntityName}Api.js";
+ BuildPath = $@"..\..\..\Code_Site\src\api\{TemplateConst.LowerModelName}\{TemplateConst.LowerEntityName}Api.js";
TemplatePath = $@"..\..\..\Template\Site\ApiTemplate.txt";
}
}
diff --git a/Yi.Vue3.x.RuoYi/src/api/erp/materialApi.js b/Yi.Vue3.x.RuoYi/src/api/erp/materialApi.js
new file mode 100644
index 00000000..80f472e1
--- /dev/null
+++ b/Yi.Vue3.x.RuoYi/src/api/erp/materialApi.js
@@ -0,0 +1,45 @@
+import request from '@/utils/request'
+
+// 分页查询
+export function listData(query) {
+ return request({
+ url: '/material/pageList',
+ method: 'get',
+ params: query
+ })
+}
+
+// id查询
+export function getData(code) {
+ return request({
+ url: '/material/getById/' + code,
+ method: 'get'
+ })
+}
+
+// 新增
+export function addData(data) {
+ return request({
+ url: '/material/create',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改
+export function updateData(id,data) {
+ return request({
+ url: `/material/update/${id}`,
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除
+export function delData(code) {
+ return request({
+ url: '/material/del',
+ method: 'delete',
+ data:"string"==typeof(code)?[code]:code
+ })
+}
diff --git a/Yi.Vue3.x.RuoYi/src/api/erp/unitApi.js b/Yi.Vue3.x.RuoYi/src/api/erp/unitApi.js
new file mode 100644
index 00000000..f0d14c0f
--- /dev/null
+++ b/Yi.Vue3.x.RuoYi/src/api/erp/unitApi.js
@@ -0,0 +1,45 @@
+import request from '@/utils/request'
+
+// 分页查询
+export function listData(query) {
+ return request({
+ url: '/unit/pageList',
+ method: 'get',
+ params: query
+ })
+}
+
+// id查询
+export function getData(code) {
+ return request({
+ url: '/unit/getById/' + code,
+ method: 'get'
+ })
+}
+
+// 新增
+export function addData(data) {
+ return request({
+ url: '/unit/create',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改
+export function updateData(id,data) {
+ return request({
+ url: `/unit/update/${id}`,
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除
+export function delData(code) {
+ return request({
+ url: '/unit/del',
+ method: 'delete',
+ data:"string"==typeof(code)?[code]:code
+ })
+}
diff --git a/Yi.Vue3.x.RuoYi/src/api/erp/warehouseApi.js b/Yi.Vue3.x.RuoYi/src/api/erp/warehouseApi.js
new file mode 100644
index 00000000..e9f91df4
--- /dev/null
+++ b/Yi.Vue3.x.RuoYi/src/api/erp/warehouseApi.js
@@ -0,0 +1,45 @@
+import request from '@/utils/request'
+
+// 分页查询
+export function listData(query) {
+ return request({
+ url: '/warehouse/pageList',
+ method: 'get',
+ params: query
+ })
+}
+
+// id查询
+export function getData(code) {
+ return request({
+ url: '/warehouse/getById/' + code,
+ method: 'get'
+ })
+}
+
+// 新增
+export function addData(data) {
+ return request({
+ url: '/warehouse/create',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改
+export function updateData(id,data) {
+ return request({
+ url: `/warehouse/update/${id}`,
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除
+export function delData(code) {
+ return request({
+ url: '/warehouse/del',
+ method: 'delete',
+ data:"string"==typeof(code)?[code]:code
+ })
+}
diff --git a/Yi.Vue3.x.RuoYi/src/views/ERP/material/index.vue b/Yi.Vue3.x.RuoYi/src/views/ERP/material/index.vue
new file mode 100644
index 00000000..dc2d6c31
--- /dev/null
+++ b/Yi.Vue3.x.RuoYi/src/views/ERP/material/index.vue
@@ -0,0 +1,377 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 新增
+
+
+ 修改
+
+
+ 删除
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Yi.Vue3.x.RuoYi/src/views/ERP/supplier/index.vue b/Yi.Vue3.x.RuoYi/src/views/ERP/supplier/index.vue
index 853ced64..af45af98 100644
--- a/Yi.Vue3.x.RuoYi/src/views/ERP/supplier/index.vue
+++ b/Yi.Vue3.x.RuoYi/src/views/ERP/supplier/index.vue
@@ -8,7 +8,7 @@
v-show="showSearch"
label-width="100px"
>
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 新增
+
+
+ 修改
+
+
+ 删除
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Yi.Vue3.x.RuoYi/src/views/ERP/warehouse/index.vue b/Yi.Vue3.x.RuoYi/src/views/ERP/warehouse/index.vue
new file mode 100644
index 00000000..90d2d062
--- /dev/null
+++ b/Yi.Vue3.x.RuoYi/src/views/ERP/warehouse/index.vue
@@ -0,0 +1,368 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 新增
+
+
+ 修改
+
+
+ 删除
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file